pe-dll.c (pe_detail_list): arm-pe targets use underscores.
authorNick Clifton <nickc@redhat.com>
Wed, 2 Apr 2003 17:39:24 +0000 (17:39 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 2 Apr 2003 17:39:24 +0000 (17:39 +0000)
(process_def_file): Don't create an export section if there are no exports and
  we're building an exe.
(pe_dll_build_sections): Ditto
(pe_dll_fill_sections): Conditionalize setting abfd->dll true on info->shared

emultempl/pe.em (gld_${EMULATION_NAME}_after_open): If i386pe or armpe, call
  pe_dll_build_section() for both exe's and dll's, not just dll's.  Don't call
  pe_dll_build_section() if link_info.relocateable.
(gld_${EMULATION_NAME}_finish): For all targets except shpe and mipspe, call
  pe_dll_fill_sections() for both exe's and dll's, not just dll's.  Don't call
  pe_dll_fill_sections() if link_info.relocateable.

ld/ChangeLog
ld/emultempl/pe.em
ld/pe-dll.c

index 918fae7970c9f2e71fabef3655d6c982efb8f17b..4f68300599bbb69977881753d0241b0e3a3f7bf4 100644 (file)
@@ -1,3 +1,28 @@
+2003-04-02  Nick Clifton  <nickc@redhat.com>
+
+       * pe-dll.c (pe_detail_list): arm-pe targets use underscores.
+
+2003-04-01  Danny Smith <dannysmith@users.sourceforge.net>
+
+       * emultempl/pe.em (gld_${EMULATION_NAME}_after_open):
+       Don't call pe_dll_build_section() if link_info.relocateable.
+       (gld_${EMULATION_NAME}_finish): Don't call pe_dll_fill_sections()
+       if link_info.relocateable.
+
+2003-04-01  Fabrizio Gennari  <fabrizio.ge@tiscalinet.it>
+
+       * pe-dll.c (process_def_file): Don't create an export
+       section if there are no exports and we're building an exe
+       (pe_dll_build_sections): Ditto
+       (pe_dll_fill_sections): Conditionalize setting
+       abfd->dll true on info->shared
+       * emultempl/pe.em (gld_${EMULATION_NAME}_after_open):
+       If i386pe or armpe, call pe_dll_build_section()
+       for both exe's and dll's, not just dll's.
+       (gld_${EMULATION_NAME}_finish): For all targets except
+       shpe and mipspe, call pe_dll_fill_sections() for both
+       exe's and dll's, not just dll's.
+
 2003-04-02  Bob Wilson  <bob.wilson@acm.org>
 
        * emulparams/xtensa-config.sh: Remove comment indicating that this is
index 1bcd0e6e5d507d0079d6c3511b0420fd577bffdd..10522d75759444ceff581bf6396e698f9409bb90 100644 (file)
@@ -1019,7 +1019,11 @@ gld_${EMULATION_NAME}_after_open ()
 
   pe_find_data_imports ();
 
+#if ! (defined (TARGET_IS_i386pe) || defined (TARGET_IS_armpe))
   if (link_info.shared)
+#else
+  if (!link_info.relocateable)
+#endif
     pe_dll_build_sections (output_bfd, &link_info);
 
 #ifndef TARGET_IS_i386pe
@@ -1456,7 +1460,11 @@ gld_${EMULATION_NAME}_finish ()
 #endif /* defined(TARGET_IS_armpe) || defined(TARGET_IS_arm_epoc_pe) */
 
 #ifdef DLL_SUPPORT
-  if (link_info.shared)
+  if (link_info.shared
+#if !defined(TARGET_IS_shpe) && !defined(TARGET_IS_mipspe)
+    || (!link_info.relocateable && pe_def_file->num_exports != 0)
+#endif
+    )
     {
       pe_dll_fill_sections (output_bfd, &link_info);
       if (pe_implib_filename)
index 95cdd7e36c16f9a1b03183f0b7587a4b7b9845df..1430754842a6515abd282b4a17e9503fa539cd5e 100644 (file)
@@ -199,7 +199,7 @@ static pe_details_type pe_detail_list[] =
     11 /* ARM_RVA32 */,
     PE_ARCH_arm,
     bfd_arch_arm,
-    0
+    1
   },
   {
     "epoc-pei-arm-little",
@@ -564,6 +564,12 @@ process_def_file (abfd, info)
        }
     }
 
+  /* If we are not building a DLL, when there are no exports
+     we do not build an export table at all.  */
+  if (!pe_dll_export_everything && pe_def_file->num_exports == 0
+      && !(info->shared))
+    return;
+
   /* Now, maybe export everything else the default way.  */
   if (pe_dll_export_everything || pe_def_file->num_exports == 0)
     {
@@ -2666,6 +2672,9 @@ pe_dll_build_sections (abfd, info)
   pe_dll_id_target (bfd_get_target (abfd));
   process_def_file (abfd, info);
 
+  if (pe_def_file->num_exports == 0 && !(info->shared))
+    return;
+
   generate_edata (abfd, info);
   build_filler_bfd (1);
 }
@@ -2707,7 +2716,8 @@ pe_dll_fill_sections (abfd, info)
 
   fill_edata (abfd, info);
 
-  pe_data (abfd)->dll = 1;
+  if (info->shared)
+    pe_data (abfd)->dll = 1;
 
   edata_s->contents = edata_d;
   reloc_s->contents = reloc_d;