diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-10-03 12:20:04 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-10-04 14:21:41 +0100 |
commit | cd158dd197a3a41a91679107a94c6f213476921c (patch) | |
tree | a943fa0a0705df61bdf71474a4ff09788705d395 /meta/recipes-core | |
parent | 6a924ca5a509c518493343409d28e92f9e5bdb46 (diff) | |
download | poky-cd158dd197a3a41a91679107a94c6f213476921c.tar.gz |
glibc: Fix glibc reproducibility issues
Currently for non-IA platforms, glibc is not reproducible as host system
paths are being injected into target binaries. These spread through
all target binaries on the system which link to the libc.
Add a patch which injects .file directives into the assembly pieces
and works around this issue until a better solution can be found.
(From OE-Core rev: 4d6fd8178da75f9a1870db290bbe24de5af752c9)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core')
-rw-r--r-- | meta/recipes-core/glibc/glibc/0034-inject-file-assembly-directives.patch | 259 | ||||
-rw-r--r-- | meta/recipes-core/glibc/glibc_2.28.bb | 1 |
2 files changed, 260 insertions, 0 deletions
diff --git a/meta/recipes-core/glibc/glibc/0034-inject-file-assembly-directives.patch b/meta/recipes-core/glibc/glibc/0034-inject-file-assembly-directives.patch new file mode 100644 index 0000000000..3f9f8cf189 --- /dev/null +++ b/meta/recipes-core/glibc/glibc/0034-inject-file-assembly-directives.patch | |||
@@ -0,0 +1,259 @@ | |||
1 | Currently, non-IA builds are not reproducibile since build paths are | ||
2 | being injected into the debug symbols. These are coming from the use of | ||
3 | .S assembler files during the glibc build. No STT_FILE section is added | ||
4 | during the assembly but when linking, ld decides to add one to aid | ||
5 | debugging and ensure references between the different object files its | ||
6 | linking remain clear. | ||
7 | |||
8 | We can avoid this by injecting a file header into the assembler files | ||
9 | ahead of time, choosing a filename which does not contain build system | ||
10 | paths. | ||
11 | |||
12 | This is a bit of a workaround/hack but does significantly reduce the | ||
13 | build system references in target binaries for the non-IA architectures | ||
14 | which use .S files. | ||
15 | |||
16 | RP | ||
17 | 2018/10/3 | ||
18 | |||
19 | Upstream-Status: Pending | ||
20 | |||
21 | diff --git a/csu/abi-note.S b/csu/abi-note.S | ||
22 | index 5d0ca7803d..8ce41581b1 100644 | ||
23 | --- a/csu/abi-note.S | ||
24 | +++ b/csu/abi-note.S | ||
25 | @@ -56,6 +56,8 @@ offset length contents | ||
26 | #include <config.h> | ||
27 | #include <abi-tag.h> /* OS-specific ABI tag value */ | ||
28 | |||
29 | + .file "abi-note.S" | ||
30 | + | ||
31 | /* The linker (GNU ld 2.8 and later) recognizes an allocated section whose | ||
32 | name begins with `.note' and creates a PT_NOTE program header entry | ||
33 | pointing at it. */ | ||
34 | diff --git a/sysdeps/aarch64/crti.S b/sysdeps/aarch64/crti.S | ||
35 | index 2b213758b2..736f33e314 100644 | ||
36 | --- a/sysdeps/aarch64/crti.S | ||
37 | +++ b/sysdeps/aarch64/crti.S | ||
38 | @@ -50,6 +50,8 @@ | ||
39 | # define PREINIT_FUNCTION_WEAK 1 | ||
40 | #endif | ||
41 | |||
42 | + .file "crti.S" | ||
43 | + | ||
44 | #if PREINIT_FUNCTION_WEAK | ||
45 | weak_extern (PREINIT_FUNCTION) | ||
46 | #else | ||
47 | diff --git a/sysdeps/aarch64/crtn.S b/sysdeps/aarch64/crtn.S | ||
48 | index d72300af80..cb249bf3ca 100644 | ||
49 | --- a/sysdeps/aarch64/crtn.S | ||
50 | +++ b/sysdeps/aarch64/crtn.S | ||
51 | @@ -37,6 +37,8 @@ | ||
52 | /* crtn.S puts function epilogues in the .init and .fini sections | ||
53 | corresponding to the prologues in crti.S. */ | ||
54 | |||
55 | + .file "crtn.S" | ||
56 | + | ||
57 | .section .init,"ax",%progbits | ||
58 | ldp x29, x30, [sp], 16 | ||
59 | RET | ||
60 | diff --git a/sysdeps/aarch64/start.S b/sysdeps/aarch64/start.S | ||
61 | index bad000f555..5957c028cd 100644 | ||
62 | --- a/sysdeps/aarch64/start.S | ||
63 | +++ b/sysdeps/aarch64/start.S | ||
64 | @@ -18,6 +18,8 @@ | ||
65 | |||
66 | #include <sysdep.h> | ||
67 | |||
68 | + .file "start.S" | ||
69 | + | ||
70 | /* This is the canonical entry point, usually the first thing in the text | ||
71 | segment. | ||
72 | |||
73 | diff --git a/sysdeps/unix/sysv/linux/aarch64/__read_tp.S b/sysdeps/unix/sysv/linux/aarch64/__read_tp.S | ||
74 | index 92fc0191a5..715bfcb9e4 100644 | ||
75 | --- a/sysdeps/unix/sysv/linux/aarch64/__read_tp.S | ||
76 | +++ b/sysdeps/unix/sysv/linux/aarch64/__read_tp.S | ||
77 | @@ -18,6 +18,8 @@ | ||
78 | |||
79 | #include <sysdep.h> | ||
80 | |||
81 | + .file "__read_tp.S" | ||
82 | + | ||
83 | .hidden __read_tp | ||
84 | ENTRY (__read_tp) | ||
85 | mrs x0, tpidr_el0 | ||
86 | diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S | ||
87 | index 43a62ef307..42f85cdde9 100644 | ||
88 | --- a/sysdeps/aarch64/dl-tlsdesc.S | ||
89 | +++ b/sysdeps/aarch64/dl-tlsdesc.S | ||
90 | @@ -22,6 +22,8 @@ | ||
91 | #include <tls.h> | ||
92 | #include "tlsdesc.h" | ||
93 | |||
94 | + .file "dl-tlsdesc.S" | ||
95 | + | ||
96 | #define NSAVEDQREGPAIRS 16 | ||
97 | #define SAVE_Q_REGISTERS \ | ||
98 | stp q0, q1, [sp, #-32*NSAVEDQREGPAIRS]!; \ | ||
99 | diff --git a/sysdeps/aarch64/dl-trampoline.S b/sysdeps/aarch64/dl-trampoline.S | ||
100 | index a86d0722d4..92edab1d01 100644 | ||
101 | --- a/sysdeps/aarch64/dl-trampoline.S | ||
102 | +++ b/sysdeps/aarch64/dl-trampoline.S | ||
103 | @@ -21,6 +21,8 @@ | ||
104 | |||
105 | #include "dl-link.h" | ||
106 | |||
107 | + .file "dl-trampoline.S" | ||
108 | + | ||
109 | #define ip0 x16 | ||
110 | #define ip0l PTR_REG (16) | ||
111 | #define ip1 x17 | ||
112 | diff --git a/sysdeps/arm/abi-note.S b/sysdeps/arm/abi-note.S | ||
113 | index 07bd4c4619..7213b16f27 100644 | ||
114 | --- a/sysdeps/arm/abi-note.S | ||
115 | +++ b/sysdeps/arm/abi-note.S | ||
116 | @@ -1,3 +1,5 @@ | ||
117 | + .file "abi-note.S" | ||
118 | + | ||
119 | /* Tag_ABI_align8_preserved: This code preserves 8-byte | ||
120 | alignment in any callee. */ | ||
121 | .eabi_attribute 25, 1 | ||
122 | diff --git a/sysdeps/arm/crti.S b/sysdeps/arm/crti.S | ||
123 | index a1424d0333..bca1dab256 100644 | ||
124 | --- a/sysdeps/arm/crti.S | ||
125 | +++ b/sysdeps/arm/crti.S | ||
126 | @@ -57,6 +57,8 @@ | ||
127 | .hidden PREINIT_FUNCTION | ||
128 | #endif | ||
129 | |||
130 | + .file "crti.S" | ||
131 | + | ||
132 | #if PREINIT_FUNCTION_WEAK | ||
133 | .p2align 2 | ||
134 | .type call_weak_fn, %function | ||
135 | diff --git a/sysdeps/arm/crtn.S b/sysdeps/arm/crtn.S | ||
136 | index 26027693ce..65a0502826 100644 | ||
137 | --- a/sysdeps/arm/crtn.S | ||
138 | +++ b/sysdeps/arm/crtn.S | ||
139 | @@ -37,6 +37,8 @@ | ||
140 | #define NO_THUMB | ||
141 | #include <sysdep.h> | ||
142 | |||
143 | + .file "crtn.S" | ||
144 | + | ||
145 | /* crtn.S puts function epilogues in the .init and .fini sections | ||
146 | corresponding to the prologues in crti.S. */ | ||
147 | |||
148 | diff --git a/sysdeps/arm/dl-tlsdesc.S b/sysdeps/arm/dl-tlsdesc.S | ||
149 | index 056e17d52d..a98c68dfb9 100644 | ||
150 | --- a/sysdeps/arm/dl-tlsdesc.S | ||
151 | +++ b/sysdeps/arm/dl-tlsdesc.S | ||
152 | @@ -21,6 +21,8 @@ | ||
153 | #include <tls.h> | ||
154 | #include "tlsdesc.h" | ||
155 | |||
156 | + .file "dl-tlsdesc.S" | ||
157 | + | ||
158 | .text | ||
159 | @ emit debug information with cfi | ||
160 | @ use arm-specific pseudos for unwinding itself | ||
161 | diff --git a/sysdeps/arm/dl-trampoline.S b/sysdeps/arm/dl-trampoline.S | ||
162 | index c731b01286..4b37b25344 100644 | ||
163 | --- a/sysdeps/arm/dl-trampoline.S | ||
164 | +++ b/sysdeps/arm/dl-trampoline.S | ||
165 | @@ -21,6 +21,8 @@ | ||
166 | #include <sysdep.h> | ||
167 | #include <libc-symbols.h> | ||
168 | |||
169 | + .file "dl-trampoline.S" | ||
170 | + | ||
171 | .text | ||
172 | .globl _dl_runtime_resolve | ||
173 | .type _dl_runtime_resolve, #function | ||
174 | diff --git a/sysdeps/arm/start.S b/sysdeps/arm/start.S | ||
175 | index adef090717..d22e4128e0 100644 | ||
176 | --- a/sysdeps/arm/start.S | ||
177 | +++ b/sysdeps/arm/start.S | ||
178 | @@ -57,6 +57,8 @@ | ||
179 | NULL | ||
180 | */ | ||
181 | |||
182 | + .file "start.S" | ||
183 | + | ||
184 | /* Tag_ABI_align8_preserved: This code preserves 8-byte | ||
185 | alignment in any callee. */ | ||
186 | .eabi_attribute 25, 1 | ||
187 | diff --git a/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S b/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S | ||
188 | index 871702317a..20a942dbac 100644 | ||
189 | --- a/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S | ||
190 | +++ b/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S | ||
191 | @@ -39,6 +39,8 @@ | ||
192 | a normal function call) in a high page of memory; tail call to the | ||
193 | helper. */ | ||
194 | |||
195 | + .file "aeabi_read_tp.S" | ||
196 | + | ||
197 | .hidden __aeabi_read_tp | ||
198 | ENTRY (__aeabi_read_tp) | ||
199 | #ifdef ARCH_HAS_HARD_TP | ||
200 | diff --git a/sysdeps/mips/start.S b/sysdeps/mips/start.S | ||
201 | index a4c4ef0fae..d00fff31a8 100644 | ||
202 | --- a/sysdeps/mips/start.S | ||
203 | +++ b/sysdeps/mips/start.S | ||
204 | @@ -38,6 +38,8 @@ | ||
205 | #include <sgidefs.h> | ||
206 | #include <sys/asm.h> | ||
207 | |||
208 | + .file "start.S" | ||
209 | + | ||
210 | #ifndef ENTRY_POINT | ||
211 | #error ENTRY_POINT needs to be defined for start.S on MIPS/ELF. | ||
212 | #endif | ||
213 | diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-brk.S b/sysdeps/unix/sysv/linux/powerpc/dl-brk.S | ||
214 | index eeb96544e3..da182b28f8 100644 | ||
215 | --- a/sysdeps/unix/sysv/linux/powerpc/dl-brk.S | ||
216 | +++ b/sysdeps/unix/sysv/linux/powerpc/dl-brk.S | ||
217 | @@ -1 +1,3 @@ | ||
218 | + .file "dl-brk.S" | ||
219 | + | ||
220 | #include <brk.S> | ||
221 | diff --git a/sysdeps/powerpc/powerpc32/start.S b/sysdeps/powerpc/powerpc32/start.S | ||
222 | index 5c10a22f8a..2b52627f27 100644 | ||
223 | --- a/sysdeps/powerpc/powerpc32/start.S | ||
224 | +++ b/sysdeps/powerpc/powerpc32/start.S | ||
225 | @@ -35,6 +35,8 @@ | ||
226 | |||
227 | #include <sysdep.h> | ||
228 | |||
229 | + .file "start.S" | ||
230 | + | ||
231 | /* We do not want .eh_frame info for crt1.o since crt1.o is linked | ||
232 | before crtbegin.o, the file defining __EH_FRAME_BEGIN__. */ | ||
233 | #undef cfi_startproc | ||
234 | diff --git a/sysdeps/powerpc/powerpc64/start.S b/sysdeps/powerpc/powerpc64/start.S | ||
235 | index bd7189310c..2e22b8472d 100644 | ||
236 | --- a/sysdeps/powerpc/powerpc64/start.S | ||
237 | +++ b/sysdeps/powerpc/powerpc64/start.S | ||
238 | @@ -35,6 +35,8 @@ | ||
239 | |||
240 | #include <sysdep.h> | ||
241 | |||
242 | + .file "start.S" | ||
243 | + | ||
244 | /* We do not want .eh_frame info for crt1.o since crt1.o is linked | ||
245 | before crtbegin.o, the file defining __EH_FRAME_BEGIN__. */ | ||
246 | #undef cfi_startproc | ||
247 | diff --git a/sysdeps/powerpc/powerpc32/dl-start.S b/sysdeps/powerpc/powerpc32/dl-start.S | ||
248 | index 244d87fb6d..14d3e2ce14 100644 | ||
249 | --- a/sysdeps/powerpc/powerpc32/dl-start.S | ||
250 | +++ b/sysdeps/powerpc/powerpc32/dl-start.S | ||
251 | @@ -18,6 +18,8 @@ | ||
252 | |||
253 | #include <sysdep.h> | ||
254 | |||
255 | + .file "dl-start.S" | ||
256 | + | ||
257 | /* Initial entry point code for the dynamic linker. | ||
258 | The C function `_dl_start' is the real entry point; | ||
259 | its return value is the user program's entry point. */ | ||
diff --git a/meta/recipes-core/glibc/glibc_2.28.bb b/meta/recipes-core/glibc/glibc_2.28.bb index bd8b51e1d6..d072939254 100644 --- a/meta/recipes-core/glibc/glibc_2.28.bb +++ b/meta/recipes-core/glibc/glibc_2.28.bb | |||
@@ -48,6 +48,7 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \ | |||
48 | file://0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors-w.patch \ | 48 | file://0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors-w.patch \ |
49 | file://0032-sysdeps-ieee754-soft-fp-ignore-maybe-uninitialized-w.patch \ | 49 | file://0032-sysdeps-ieee754-soft-fp-ignore-maybe-uninitialized-w.patch \ |
50 | file://0033-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch \ | 50 | file://0033-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch \ |
51 | file://0034-inject-file-assembly-directives.patch \ | ||
51 | " | 52 | " |
52 | 53 | ||
53 | NATIVESDKFIXES ?= "" | 54 | NATIVESDKFIXES ?= "" |