From 2b817be1364754beb86513fe48f77e6604da2d4b Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 2 Apr 2003 17:39:24 +0000 Subject: [PATCH] pe-dll.c (pe_detail_list): arm-pe targets use underscores. (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 | 25 +++++++++++++++++++++++++ ld/emultempl/pe.em | 10 +++++++++- ld/pe-dll.c | 14 ++++++++++++-- 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 918fae7970c..4f68300599b 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,28 @@ +2003-04-02 Nick Clifton + + * pe-dll.c (pe_detail_list): arm-pe targets use underscores. + +2003-04-01 Danny Smith + + * 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 + + * 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 * emulparams/xtensa-config.sh: Remove comment indicating that this is diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em index 1bcd0e6e5d5..10522d75759 100644 --- a/ld/emultempl/pe.em +++ b/ld/emultempl/pe.em @@ -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) diff --git a/ld/pe-dll.c b/ld/pe-dll.c index 95cdd7e36c1..1430754842a 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -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; -- 2.30.2