qsort: pe-dll.c reloc sorting
* pe-dll.c (reloc_data_type): Add idx field. (reloc_sort): Perform final sort by idx. (generate_reloc): Set idx.
This commit is contained in:
parent
6ce9ba7afc
commit
08dec09d8a
@ -1,3 +1,9 @@
|
|||||||
|
2019-10-14 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* pe-dll.c (reloc_data_type): Add idx field.
|
||||||
|
(reloc_sort): Perform final sort by idx.
|
||||||
|
(generate_reloc): Set idx.
|
||||||
|
|
||||||
2019-10-13 Nick Clifton <nickc@redhat.com>
|
2019-10-13 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* NEWS: Delete superflous "Changes in 2.33" comment.
|
* NEWS: Delete superflous "Changes in 2.33" comment.
|
||||||
|
16
ld/pe-dll.c
16
ld/pe-dll.c
@ -445,16 +445,25 @@ typedef struct
|
|||||||
bfd_vma vma;
|
bfd_vma vma;
|
||||||
char type;
|
char type;
|
||||||
short extra;
|
short extra;
|
||||||
|
int idx;
|
||||||
}
|
}
|
||||||
reloc_data_type;
|
reloc_data_type;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
reloc_sort (const void *va, const void *vb)
|
reloc_sort (const void *va, const void *vb)
|
||||||
{
|
{
|
||||||
bfd_vma a = ((const reloc_data_type *) va)->vma;
|
const reloc_data_type *a = (const reloc_data_type *) va;
|
||||||
bfd_vma b = ((const reloc_data_type *) vb)->vma;
|
const reloc_data_type *b = (const reloc_data_type *) vb;
|
||||||
|
|
||||||
return (a > b) ? 1 : ((a < b) ? -1 : 0);
|
if (a->vma > b->vma)
|
||||||
|
return 1;
|
||||||
|
if (a->vma < b->vma)
|
||||||
|
return -1;
|
||||||
|
if (a->idx > b->idx)
|
||||||
|
return 1;
|
||||||
|
if (a->idx < b->idx)
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1596,6 +1605,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
reloc_data[total_relocs].vma = sec_vma + relocs[i]->address;
|
reloc_data[total_relocs].vma = sec_vma + relocs[i]->address;
|
||||||
|
reloc_data[total_relocs].idx = total_relocs;
|
||||||
|
|
||||||
#define BITS_AND_SHIFT(bits, shift) (bits * 1000 | shift)
|
#define BITS_AND_SHIFT(bits, shift) (bits * 1000 | shift)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user