This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 26 Aug 2015 23:32, Alan Modra wrote: > A number of targets emit multiple relocs at a given r_offset, and > depend on those relocs staying in their original order. qsort doesn't > satisfy this requirement, although it appears from my non-rigorous > testing that glibc's msort.c implementation may in fact be stable. > > I made the mistake of backporting my PR 17666 fix to 2.25.1, thinking > the code had enough time to settle on mainline, but for anyone with a > system libc that provides an unstable qsort this will mean 2.25.1 > ld -r may be broken on some targets. > > PR 18867 > * elflink.c (cmp_ext32l_r_offset, cmp_ext32b_r_offset): Delete. > (cmp_ext64l_r_offset, cmp_ext64b_r_offset): Delete. > (ext32l_r_offset, ext32b_r_offset, ext64l_r_offset, ext64b_r_offset): > New functions. > (elf_link_adjust_relocs): Use an insertion sort to sort relocs. were you planning on making another change ? i tested master (1dc7a6235090327d7b5586f85e6115c3cd13ed83) and it still crashes on alpha. this hack makes things work: --- a/bfd/elflink.c +++ b/bfd/elflink.c ... - sort = bed->sort_relocs_p == NULL || (*bed->sort_relocs_p) (o); + sort = 0; //bed->sort_relocs_p == NULL || (*bed->sort_relocs_p) (o); ... -mike
Attachment:
signature.asc
Description: Digital signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |