[PATCH] Change export behavior for PE files

Filip Navara xnavara@volny.cz
Tue Jun 7 17:28:00 GMT 2005


Christopher Faylor wrote:

>On Fri, Mar 11, 2005 at 03:30:29PM +0100, Filip Navara wrote:
>  
>
>>I guess this one will not get accepted and you'll tell me that it's not
>>bug, but feature.  Anyway I decided to at least try to push this patch
>>since I need to generate export-less DLLs and I don't see any other way
>>to do it when "-shared" is used.
>>    
>>
>
>Hi.
>
>Is there any progress with getting the assignment in place so that this
>patch can be applied?
>
>  
>
I sent the assignment papers back few weeks ago and haven't got any 
reply yet. It's request #231082 if it matter...

Filip

>cgf
>
>  
>
>>2005-03-11  Filip Navara  <navaraf@reactos.com>
>>
>>	* ld/pe-dll.c (process_def_file, pe_dll_build_sections,
>>	pe_dll_fill_sections): Don't export all symbols for shared
>>	libraries when --export-all-symbols is not specified and
>>	no .def file is specified.
>>
>>--- ld/pe-dll.c	Sun Oct 24 03:00:12 2004
>>+++ ld/pe-dll.c	Fri Mar 11 14:36:31 2005
>>@@ -526,8 +542,7 @@
>>
>>  /* 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->executable)
>>+  if (!pe_dll_export_everything && pe_def_file->num_exports == 0)
>>    return;
>>
>>  /* Now, maybe export everything else the default way.  */
>>@@ -2630,8 +2701,13 @@
>>  if (pe_def_file->num_exports == 0 && !info->shared)
>>    return;
>>
>>-  generate_edata (abfd, info);
>>-  build_filler_bfd (1);
>>+  if (pe_def_file->num_exports > 0)
>>+    {
>>+      generate_edata (abfd, info);
>>+      build_filler_bfd (1);
>>+    }
>>+  else
>>+    build_filler_bfd (0);
>>}
>>
>>void
>>@@ -2663,13 +2739,16 @@
>>      lang_do_assignments (stat_ptr->head, abs_output_section, NULL, 0);
>>    }
>>
>>-  fill_edata (abfd, info);
>>-
>>  if (info->shared && !info->pie)
>>    pe_data (abfd)->dll = 1;
>>
>>-  edata_s->contents = edata_d;
>>  reloc_s->contents = reloc_d;
>>+
>>+  if (pe_def_file->num_exports > 0)
>>+    {
>>+      fill_edata (abfd, info);
>>+      edata_s->contents = edata_d;
>>+    }
>>}
>>
>>void
>>    
>>
>
>
>
>  
>




More information about the Binutils mailing list