On 2024-12-07, Gioele Barabucci wrote: > On 07/12/24 06:01, Vagrant Cascadian wrote: >> On 2024-12-07, Gioele Barabucci wrote: >>> the libraries and executables of many cmake-based packages gain extra >>> zero bytes in their .dynstr ELF section when rebuilt. (This accounts for >>> about 15% of the failed rebuilds.) >>> >>> From <https://reproduce.debian.net/api/v0/builds/105657/diffoscope>: >>> >>> ``` >>> ─ readelf --wide --decompress --hex-dump=.dynstr {} >>> @@ -1275,9 +1275,10 @@ >>> 0x00009388 00474c49 42435858 5f332e34 2e323100 .GLIBCXX_3.4.21. >>> 0x00009398 43585841 42495f31 2e330047 4c494243 CXXABI_1.3.GLIBC >>> 0x000093a8 58585f33 2e342e32 3000474c 49424358 XX_3.4.20.GLIBCX >>> 0x000093b8 585f332e 34000000 00000000 00000000 X_3.4........... >>> 0x000093c8 00000000 00000000 00000000 00000000 ................ >>> 0x000093d8 00000000 00000000 00000000 00000000 ................ >>> 0x000093e8 00000000 00000000 00000000 00000000 ................ >>> - 0x000093f8 00000000 0000 ...... >>> + 0x000093f8 00000000 00000000 00000000 00000000 ................ >>> + 0x00009408 00000000 000000 ....... >>> ``` >>> >>> Oddly, sometimes the number of zero bytes added is odd. >> >> My hunch is that this might be a side-effect of building in the wrong >> build path, as mentioned in: >> >> https://bugs.debian.org/1089087 > > That could indeed be the case. > > The build paths for 105657 are > > /build/reproducible-path/simbody-3.7+dfs > > and > > /build/reproducible-path/simbody-3.7+dfs/simbody-3.7+dfs > > The second path is 16+1 characters longer and the .dynstr section > contains indeed 17 extra zeros.
That does seem like commpelling evidence! :) > Does GCC blank out (replace with zeroes) the build path? I do not know the specifics of the implementation at that level, but most debian builds are done with -ffile-prefix-map=BUILDPATH=. by dpkg-buildflags setting it in various *FLAGS variables, and I have observed behavior much like this in the past, back when we used to intentionally vary build paths on tests.reproducible-builds.org for unstable and experimental. The workaround, of course, is to use an identical build path. live well, vagrant
signature.asc
Description: PGP signature