Scan table pe_dll->exports, which is sorted alphabetically, instead of
exported_symbols, which is sorted by ordinal.
This commit is contained in:
parent
f4dbdb5468
commit
03a1c9a708
|
@ -1,3 +1,9 @@
|
||||||
|
2003-06-02 Fabrizio Gennari <fabrizio.ge@tiscalinet.it>
|
||||||
|
|
||||||
|
* pe-dll.c (fill_edata): Scan table pe_dll->exports, which is
|
||||||
|
sorted alphabetically, instead of exported_symbols, which is
|
||||||
|
sorted by ordinal.
|
||||||
|
|
||||||
2003-05-30 Ulrich Drepper <drepper@redhat.com>
|
2003-05-30 Ulrich Drepper <drepper@redhat.com>
|
||||||
Jakub Jelinek <jakub@redhat.com>
|
Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
|
16
ld/pe-dll.c
16
ld/pe-dll.c
|
@ -959,7 +959,7 @@ fill_edata (abfd, info)
|
||||||
bfd *abfd;
|
bfd *abfd;
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
int i, hint;
|
int s, hint;
|
||||||
unsigned char *edirectory;
|
unsigned char *edirectory;
|
||||||
unsigned long *eaddresses;
|
unsigned long *eaddresses;
|
||||||
unsigned long *enameptrs;
|
unsigned long *enameptrs;
|
||||||
|
@ -1000,13 +1000,16 @@ fill_edata (abfd, info)
|
||||||
|
|
||||||
fill_exported_offsets (abfd, info);
|
fill_exported_offsets (abfd, info);
|
||||||
|
|
||||||
/* Ok, now for the filling in part. */
|
/* Ok, now for the filling in part.
|
||||||
|
Scan alphabetically - ie the ordering in the exports[] table,
|
||||||
|
rather than by ordinal - the ordering in the exported_symbol[]
|
||||||
|
table. See dlltool.c and:
|
||||||
|
http://sources.redhat.com/ml/binutils/2003-04/msg00379.html
|
||||||
|
for more information. */
|
||||||
hint = 0;
|
hint = 0;
|
||||||
for (i = 0; i < export_table_size; i++)
|
for (s = 0; s < NE; s++)
|
||||||
{
|
{
|
||||||
int s = exported_symbols[i];
|
if (pe_def_file->exports[s].ordinal != -1)
|
||||||
|
|
||||||
if (s != -1)
|
|
||||||
{
|
{
|
||||||
struct sec *ssec = exported_symbol_sections[s];
|
struct sec *ssec = exported_symbol_sections[s];
|
||||||
unsigned long srva = (exported_symbol_offsets[s]
|
unsigned long srva = (exported_symbol_offsets[s]
|
||||||
|
@ -1020,6 +1023,7 @@ fill_edata (abfd, info)
|
||||||
if (!pe_def_file->exports[s].flag_noname)
|
if (!pe_def_file->exports[s].flag_noname)
|
||||||
{
|
{
|
||||||
char *ename = pe_def_file->exports[s].name;
|
char *ename = pe_def_file->exports[s].name;
|
||||||
|
|
||||||
bfd_put_32 (abfd, ERVA (enamestr), (void *) enameptrs);
|
bfd_put_32 (abfd, ERVA (enamestr), (void *) enameptrs);
|
||||||
enameptrs++;
|
enameptrs++;
|
||||||
strcpy (enamestr, ename);
|
strcpy (enamestr, ename);
|
||||||
|
|
Loading…
Reference in New Issue