* deffilep.y: properly handle relocs with multiple def_files,
cache import module names
This commit is contained in:
parent
91c7ad9a6a
commit
a3606134a2
3 changed files with 19 additions and 3 deletions
|
@ -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
|
||||
|
|
13
ld/deffile.h
13
ld/deffile.h
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue