* deffilep.y: properly handle relocs with multiple def_files,

cache import module names
This commit is contained in:
DJ Delorie 1998-11-10 03:54:00 +00:00
parent 91c7ad9a6a
commit a3606134a2
3 changed files with 19 additions and 3 deletions

View file

@ -1,3 +1,8 @@
Mon Nov 9 22:52:50 1998 DJ Delorie <dj@indy.delorie.com>
* deffilep.y: properly handle relocs with multiple def_files,
cache import module names
Mon Nov 9 22:44:58 1998 DJ Delorie <dj@cygnus.com>
* pe-dll.c (process_def_file): don't assume exports won't move

View file

@ -41,10 +41,18 @@ typedef struct def_file_export
}
def_file_export;
typedef struct def_file_module
{
struct def_file_module *next;
void *user_data;
char name[1]; /* extended via malloc */
}
def_file_module;
typedef struct def_file_import
{
char *internal_name; /* always set */
char *module; /* always set */
def_file_module *module; /* always set */
char *name; /* may be NULL; either this or ordinal will be set */
int ordinal; /* may be -1 */
}
@ -73,6 +81,9 @@ typedef struct def_file
int num_exports;
def_file_export *exports;
/* used by imports for module names */
def_file_module *modules;
/* from the IMPORTS commands */
int num_imports;
def_file_import *imports;

View file

@ -268,7 +268,7 @@ process_def_file (abfd, info)
}
}
e = pe_def_file->exports; /* convenience */
e = pe_def_file->exports; /* convenience, but watch out for it changing */
exported_symbol_offsets = (bfd_vma *) xmalloc (NE * sizeof (bfd_vma));
exported_symbol_sections = (struct sec **) xmalloc (NE * sizeof (struct sec *));
@ -859,7 +859,7 @@ pe_dll_generate_def_file (pe_out_def_filename)
quoteput (im->internal_name, out, 0);
fprintf (out, " = ");
}
quoteput (im->module, out, 0);
quoteput (im->module->name, out, 0);
fprintf (out, ".");
if (im->name)
quoteput (im->name, out, 0);