=================================================================== RCS file: /cvs/src/src/ld/deffile.h,v retrieving revision 1.6 diff -u -3 -p -B -u -p -r1.6 deffile.h --- deffile.h 16 Dec 2002 18:02:14 -0000 1.6 +++ deffile.h 25 Jan 2003 21:54:24 -0000 @@ -100,6 +100,11 @@ extern def_file_import * def_file_add_im PARAMS ((def_file *, const char *, const char *, int, const char *)); extern void def_file_add_directive PARAMS ((def_file *, const char *, int)); + +/* return def module pointer or zero if not available */ +extern def_file_module *def_get_module + PARAMS ((def_file *, const char *)); + #ifdef DEF_FILE_PRINT extern void def_file_print PARAMS ((FILE *, def_file *)); Index: deffilep.y =================================================================== RCS file: /cvs/src/src/ld/deffilep.y,v retrieving revision 1.10 diff -u -3 -p -B -u -p -r1.10 deffilep.y --- deffilep.y 6 Nov 2002 19:36:20 -0000 1.10 +++ deffilep.y 25 Jan 2003 21:54:26 -0000 @@ -493,6 +493,18 @@ def_file_add_export (def, external_name, return e; } +def_file_module * +def_get_module (def, name) + def_file *def; + const char *name; +{ + def_file_module *s; + for (s=def->modules; s; s=s->next) + if (strcmp (s->name, name) == 0) + return s; + return (def_file_module *)0; +} + static def_file_module * def_stash_module (def, name) def_file *def; Index: pe-dll.c =================================================================== RCS file: /cvs/src/src/ld/pe-dll.c,v retrieving revision 1.53 diff -u -3 -p -B -u -p -r1.53 pe-dll.c --- pe-dll.c 5 Jan 2003 03:04:10 -0000 1.53 +++ pe-dll.c 25 Jan 2003 21:54:32 -0000 @@ -2609,6 +2609,16 @@ pe_implied_import_dll (filename) to enable symbolic dll linking. */ dll_name = pe_as32 (expdata + 12) + erva; + /* check if module is already added to the definition + list and if so return without error to avoid + multiple symbol definitions */ + if (def_get_module(pe_def_file,dll_name)) + { + if (pe_dll_extra_pe_debug) + printf ("%s is already loaded\n", dll_name); + return TRUE; + } + /* Iterate through the list of symbols. */ for (i = 0; i < nexp; i++) {