Control: severity -1 important lowering the severity, please use the BFD linker if possible, CCing to the mips porters.
On 9/9/20 9:50 AM, Vasyl Gello wrote: > Package: binutils > Version: 2.35-2 > Severity: serious > Justification: Policy 2.35-2 > X-Debbugs-Cc: [email protected], [email protected] > > Dear colleagues, > > I encountered the following 'weird' segmentation fault in kodi-test on > mipsel/mips64el: > > https://buildd.debian.org/status/fetch.php?pkg=kodi&arch=mips64el&ver=2%3A18.8%2Bdfsg1-2&stamp=1599185930&raw=0 > https://buildd.debian.org/status/fetch.php?pkg=kodi&arch=mipsel&ver=2%3A18.8%2Bdfsg1-2&stamp=1599180572&raw=0 > > and found out that the issue is the ld.gold usage. > > I created a minimal reproducer with only one failing test group and ran it > against gdb. > > The reproducer code is attached as a git-am style patch over clean git repo. > Also the binaries linked with bfd and gold are attached and the DWARF2 dumps > made > with 'llvm-dwarfdump-10 --all'. The gdb script and its output are also > attached to this > message. > > The root cause if an issue is that language-specific data (LSDA) pointer (the > structure > pointing to exception handler) is incorrectly encoded as an absolute pointer > if ld.gold > is used, and correctly encoded if linking is done with ld.bfd (see gdb script > and gdb > trace files) > > In 'llvm-dwarfdump-10' output, the correctly-linked binary has CIE structure > with > 'zPLR' augmentation followed by augmentation data encoded with type 0x1B: > > 0000014c 00000018 ffffffff CIE > Version: 1 > Augmentation: "zPLR" > Code alignment factor: 1 > Data alignment factor: -4 > Return address column: 31 > Personality Address: 000000000001d281 > Augmentation data: 9B 81 D2 01 00 ->1B<- 1B > > DW_CFA_def_cfa_register: reg29 > DW_CFA_nop: > > 00000168 0000002c 00000020 FDE cie=00000020 pc=fffa05b4...fffa06e0 > LSDA Address: 00000000000190c3 > DW_CFA_advance_loc: 16 > DW_CFA_def_cfa_offset: +40 > DW_CFA_advance_loc: 16 > DW_CFA_offset: reg31 -4 > DW_CFA_offset: reg30 -8 > DW_CFA_offset: reg17 -12 > DW_CFA_offset: reg16 -16 > DW_CFA_advance_loc: 4 > > The ld.gold, however, encodes the CIE as absolute pointer: > > 00004fcc 00000018 ffffffff CIE > Version: 1 > Augmentation: "zPLR" > Code alignment factor: 1 > Data alignment factor: -4 > Return address column: 31 > Personality Address: 00000000000a0014 > Augmentation data: 80 14 00 0A 00 ->00<- 0B > > DW_CFA_def_cfa_register: reg29 > DW_CFA_nop: > > 00004fe8 0000002c 00000020 FDE cie=00000020 pc=000218d8...00021a04 > LSDA Address: 00000000000a0034 > DW_CFA_advance_loc: 16 > DW_CFA_def_cfa_offset: +40 > DW_CFA_advance_loc: 16 > DW_CFA_offset: reg31 -4 > DW_CFA_offset: reg30 -8 > DW_CFA_offset: reg17 -12 > DW_CFA_offset: reg16 -16 > DW_CFA_advance_loc: 4 > > Rebuilding with 'gcc -fuse-ld=bfd' fixes the particular issue but overall > it is not a solution because linking Kodi fails on memory exhausted. > > Vasyl >

