1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * This header exists to force full rebuild when the compiler is upgraded.
4 *
5 * When fixdep scans this, it will find this string "CONFIG_CC_VERSION_TEXT"
6 * and add dependency on include/config/CC_VERSION_TEXT, which is touched
7 * by Kconfig when the version string from the compiler changes.
8 */
9/* SPDX-License-Identifier: GPL-2.0 */
10/*
11 * Automatically generated file; DO NOT EDIT.
12 * Linux/arm64 5.16.0 Kernel Configuration
13 */
14/*
15 * The use of "&&" / "||" is limited in certain expressions.
16 * The following enable to calculate "and" / "or" with macro expansion only.
17 */
18/*
19 * Helper macros to use CONFIG_ options in C/CPP expressions. Note that
20 * these only work with boolean and tristate options.
21 */
22/*
23 * Getting something that works in C and CPP for an arg that may or may
24 * not be defined is tricky.  Here, if we have "#define CONFIG_BOOGER 1"
25 * we match on the placeholder define, insert the "0," for arg1 and generate
26 * the triplet (0, 1, 0).  Then the last step cherry picks the 2nd arg (a one).
27 * When CONFIG_BOOGER is not defined, we generate a (... 1, 0) pair, and when
28 * the last step cherry picks the 2nd arg, we get a zero.
29 */
30/*
31 * IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
32 * otherwise. For boolean options, this is equivalent to
33 * IS_ENABLED(CONFIG_FOO).
34 */
35/*
36 * IS_MODULE(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'm', 0
37 * otherwise.  CONFIG_FOO=m results in "#define CONFIG_FOO_MODULE 1" in
38 * autoconf.h.
39 */
40/*
41 * IS_REACHABLE(CONFIG_FOO) evaluates to 1 if the currently compiled
42 * code can call a function defined in code compiled based on CONFIG_FOO.
43 * This is similar to IS_ENABLED(), but returns false when invoked from
44 * built-in code when CONFIG_FOO is set to 'm'.
45 */
46/*
47 * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
48 * 0 otherwise.  Note that CONFIG_FOO=y results in "#define CONFIG_FOO 1" in
49 * autoconf.h, while CONFIG_FOO=m results in "#define CONFIG_FOO_MODULE 1".
50 */
51/* SPDX-License-Identifier: GPL-2.0-only */
52/*
53 * GNU linker script for the VDSO library.
54*
55 * Copyright (C) 2012 ARM Limited
56 *
57 * Author: Will Deacon <will.deacon@arm.com>
58 * Heavily based on the vDSO linker scripts for other archs.
59 */
60/* SPDX-License-Identifier: GPL-2.0 */
61/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
62/* const.h: Macros for dealing with constants.  */
63/* Some constant macros are used in both assembler and
64 * C code.  Therefore we cannot annotate them always with
65 * 'UL' and other type specifiers unilaterally.  We
66 * use the following macros to deal with this.
67 *
68 * Similarly, _AT() will cast an expression with a type in C, but
69 * leave it unchanged in asm.
70 */
71/*
72 * This returns a constant expression while determining if an argument is
73 * a constant expression, most importantly without evaluating the argument.
74 * Glory to Martin Uecker <Martin.Uecker@med.uni-goettingen.de>
75 */
76/* SPDX-License-Identifier: GPL-2.0-only */
77/*
78 * Based on arch/arm/include/asm/page.h
79 *
80 * Copyright (C) 1995-2003 Russell King
81 * Copyright (C) 2012 ARM Ltd.
82 */
83/* SPDX-License-Identifier: GPL-2.0-only */
84/*
85 * Based on arch/arm/include/asm/page.h
86 *
87 * Copyright (C) 1995-2003 Russell King
88 * Copyright (C) 2017 ARM Ltd.
89 */
90/* PAGE_SHIFT determines the page size */
91/* SPDX-License-Identifier: GPL-2.0 */
92/* SPDX-License-Identifier: GPL-2.0-only */
93/*
94 * Copyright (C) 2012 ARM Limited
95 */
96/*
97 * Default link address for the vDSO.
98 * Since we randomise the VDSO mapping, there's little point in trying
99 * to prelink this.
100 */
101OUTPUT_FORMAT("elf64-littleaarch64", "elf64-bigaarch64", "elf64-littleaarch64")
102OUTPUT_ARCH(aarch64)
103SECTIONS
104{
105 PROVIDE(_vdso_data = . - 2 * (1 << 12));
106 PROVIDE(_timens_data = _vdso_data + (1 << 12));
107 . = 0x0 + SIZEOF_HEADERS;
108 .hash : { *(.hash) } :text
109 .gnu.hash : { *(.gnu.hash) }
110 .dynsym : { *(.dynsym) }
111 .dynstr : { *(.dynstr) }
112 .gnu.version : { *(.gnu.version) }
113 .gnu.version_d : { *(.gnu.version_d) }
114 .gnu.version_r : { *(.gnu.version_r) }
115 /*
116	 * Discard .note.gnu.property sections which are unused and have
117	 * different alignment requirement from vDSO note sections.
118	 */
119 /DISCARD/ : {
120  *(.note.GNU-stack .note.gnu.property)
121 }
122 .note : { *(.note.*) } :text :note
123 . = ALIGN(16);
124 .text : { *(.text*) } :text =0xd503201f
125 PROVIDE (__etext = .);
126 PROVIDE (_etext = .);
127 PROVIDE (etext = .);
128 .dynamic : { *(.dynamic) } :text :dynamic
129 .rodata : { *(.rodata*) } :text
130 _end = .;
131 PROVIDE(end = .);
132 /DISCARD/ : {
133  *(.data .data.* .gnu.linkonce.d.* .sdata*)
134  *(.bss .sbss .dynbss .dynsbss)
135  *(.eh_frame .eh_frame_hdr)
136 }
137}
138/*
139 * We must supply the ELF program headers explicitly to get just one
140 * PT_LOAD segment, and set the flags explicitly to make segments read-only.
141 */
142PHDRS
143{
144 text PT_LOAD FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */
145 dynamic PT_DYNAMIC FLAGS(4); /* PF_R */
146 note PT_NOTE FLAGS(4); /* PF_R */
147}
148/*
149 * This controls what symbols we export from the DSO.
150 */
151VERSION
152{
153 LINUX_2.6.39 {
154 global:
155  __kernel_rt_sigreturn;
156  __kernel_gettimeofday;
157  __kernel_clock_gettime;
158  __kernel_clock_getres;
159 local: *;
160 };
161}
162/*
163 * Make the sigreturn code visible to the kernel.
164 */
165VDSO_sigtramp = __kernel_rt_sigreturn;
166