oops - omitted from previous delta
authorNick Clifton <nickc@redhat.com>
Mon, 24 Sep 2001 18:21:24 +0000 (18:21 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 24 Sep 2001 18:21:24 +0000 (18:21 +0000)
ld/emultempl/pe.em
ld/pe-dll.c

index a863526..8b3919c 100644 (file)
@@ -153,7 +153,6 @@ static char *pe_out_def_filename = NULL;
 static char *pe_implib_filename = NULL;
 static int pe_enable_auto_image_base = 0;
 static char *pe_dll_search_prefix = NULL;
-static char *pe_data_import_dll = NULL;
 #endif
 
 extern const char *output_filename;
@@ -756,23 +755,12 @@ gld_${EMULATION_NAME}_after_parse ()
     ldlang_add_undef (entry_symbol);
 }
 
-/* Previously, pe-dll.c directly accessed pe_data_import_dll,
-   which was only defined if DLL_SUPPORT.  This cause a build
-   failure on certain targets. At least this function will
-   exist regardless of whether DLL_SUPPORT is defined or not.
-  
-   However, it's still a kludge.  pe-dll.c shouldn't directly
-   call any functions other than the gld_${EMULATION_NAME}_*.  */
-
-char *
-pe_get_data_import_dll_name ()
-{
-#ifdef DLL_SUPPORT
-  return pe_data_import_dll;
-#else
-  return "unknown";
-#endif
-}
+/* pe-dll.c directly accesses pe_data_import_dll,
+   so it must be defined outside of #ifdef DLL_SUPPORT.
+   Note - this variable is deliberately not initialised.
+   This allows it to be treated as a common varaible, and only
+   exist in one incarnation in a multiple target enabled linker.  */
+char * pe_data_import_dll;
 
 #ifdef DLL_SUPPORT
 static struct bfd_link_hash_entry *pe_undef_found_sym;
index f62835d..7c6dddb 100644 (file)
@@ -2069,8 +2069,10 @@ pe_create_import_fixup (rel)
     }
 
   {
-    bfd *b = make_import_fixup_entry (name, fixup_name,
-                                     pe_get_data_import_dll_name (),
+    extern char * pe_data_import_dll;
+    char * dll_symname = pe_data_import_dll ? "unknown" : pe_data_import_dll;
+
+    bfd *b = make_import_fixup_entry (name, fixup_name, dll_symname,
                                      output_bfd);
     add_bfd_to_link (b, b->filename, &link_info);
   }