Scan table pe_dll->exports, which is sorted alphabetically, instead of

exported_symbols, which is sorted by ordinal.
This commit is contained in:
Nick Clifton 2003-06-02 08:43:37 +00:00
parent f4dbdb5468
commit 03a1c9a708
2 changed files with 16 additions and 6 deletions

View File

@ -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>
Jakub Jelinek <jakub@redhat.com>

View File

@ -959,7 +959,7 @@ fill_edata (abfd, info)
bfd *abfd;
struct bfd_link_info *info ATTRIBUTE_UNUSED;
{
int i, hint;
int s, hint;
unsigned char *edirectory;
unsigned long *eaddresses;
unsigned long *enameptrs;
@ -1000,13 +1000,16 @@ fill_edata (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;
for (i = 0; i < export_table_size; i++)
for (s = 0; s < NE; s++)
{
int s = exported_symbols[i];
if (s != -1)
if (pe_def_file->exports[s].ordinal != -1)
{
struct sec *ssec = exported_symbol_sections[s];
unsigned long srva = (exported_symbol_offsets[s]
@ -1020,6 +1023,7 @@ fill_edata (abfd, info)
if (!pe_def_file->exports[s].flag_noname)
{
char *ename = pe_def_file->exports[s].name;
bfd_put_32 (abfd, ERVA (enamestr), (void *) enameptrs);
enameptrs++;
strcpy (enamestr, ename);