+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
}
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 */
}
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;
}
}
- 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 *));
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);