source: mainline/meson/arch/arm64/meson.build

Last change on this file was c89ae25, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 21 months ago

Fix and enable —gc-sections in /kernel and /boot

  • Property mode set to 100644
File size: 2.8 KB
Line 
1#
2# Copyright (c) 2021 Jiri Svoboda
3# Copyright (c) 2015 Petr Pavlu
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9#
10# - Redistributions of source code must retain the above copyright
11# notice, this list of conditions and the following disclaimer.
12# - Redistributions in binary form must reproduce the above copyright
13# notice, this list of conditions and the following disclaimer in the
14# documentation and/or other materials provided with the distribution.
15# - The name of the author may not be used to endorse or promote products
16# derived from this software without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28#
29
30arch_uspace_c_args = [
31 '-D__LE__',
32 '-fno-omit-frame-pointer',
33 cc.get_supported_arguments(['-mno-outline-atomics']),
34]
35arch_kernel_c_args = arch_uspace_c_args + [ '-march=armv8-a+nofp+nosimd', '-mgeneral-regs-only' ]
36arch_kernel_link_args = [ '-nostdlib' ]
37arch_uspace_link_args = [ '-nostdlib', '-lgcc' ]
38
39# UEFI binaries should be relocatable, the EFI boot service LoadImage() will
40# rebase the boot file using the .reloc information in the image if it cannot
41# load the binary at its preferred address. The ARM64 port does not provide this
42# information in its PE file (that would require manually creating it) but
43# instead the boot code is compiled with the -fpic option and the bootloader
44# relocates itself at runtime.
45#
46# N.B. The UEFI guarantees for AArch64 that during boot time the primary
47# processor is in the execution mode that has unaligned access enabled. The
48# -mstrict-align option is therefore not needed.
49arch_boot_c_args = arch_uspace_c_args + [ '-fpic', '-fvisibility=hidden' ]
50arch_boot_link_args = [ '-Wl,-shared' ] + ldflags_ignore_rwx_segments
51
52if MACHINE == 'virt'
53 rd_essential_drv += [
54 'drv/char/pl011',
55 'drv/intctl/gicv2',
56 'drv/platform/arm64virt',
57 ]
58endif
59
60if MACHINE == 'hikey960'
61 rd_essential_drv += [
62 'drv/char/pl011',
63 'drv/intctl/gicv2',
64 'drv/platform/hikey960',
65 ]
66endif
67
68rd_drv += rd_essential_drv
Note: See TracBrowser for help on using the repository browser.