[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