This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Commit: Add support for merging PE/COFF .rsrc sections
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Nick Clifton <nickc at redhat dot com>
- Cc: Binutils <binutils at sourceware dot org>
- Date: Tue, 17 Dec 2013 10:05:49 -0800
- Subject: Re: Commit: Add support for merging PE/COFF .rsrc sections
- Authentication-results: sourceware.org; auth=none
- References: <87wqj3sd0l dot fsf at redhat dot com>
On Tue, Dec 17, 2013 at 7:39 AM, Nick Clifton <nickc@redhat.com> wrote:
> Hi Guys,
>
> I am applying the patch below to add support for merging the contents
> of .rsrc sections to PE/COFF targets. Unfortunately the specification
> for the contents of a .rsrc section means that multiple sections
> cannot just be concatenated when linking - they have to be manipulated
> and merged together properly.
>
> Tested with x86_64-pc-cygwin and i686-pc-cygwin toolchains.
>
> Cheers
> Nick
>
> bfd/ChangeLog
> 2013-12-17 Nick Clifton <nickc@redhat.com>
>
> * peXXigen.c: Include wchar.h if available.
> Include safe-ctype.h.
> (HighBitSet, SetHighBit, WithoutHighBit): New macros.
> (pe_print_resource_entries): Rename to
> rsrc_print_resource_entries. Handle names that are not RVAs.
> (pe_print_resource_directory): Rename to
> rsrc_print_resource_directory.
> (pe_print_rsrc): Rename to rsrc_print_section. Corrupt
> computation of RVA bias.
> (rsrc_count_entries): New function.
> (rsrc_count_directory): New function.
> (rsrc_parse_entry): New function.
> (rsrc_parse_entries): New function.
> (rsrc_parse_directory): New function.
> (rsrc_write_string): New function.
> (rsrc_compute_rva): New function.
> (rsrc_write_leaf): New function.
> (rsrc_write_entry): New function.
> (rsrc_write_directory): New function.
> (u16_mbtouc): New function.
> (rsrc_cmp): New function.
> (rsrc_print_name): New function.
> (rsrc_resource_name): New function.
> (rsrc_merge_string_entries): New function.
> (rsrc_sort_entries): New function.
> (rsrc_attach_chain): New function.
> (rsrc_merge): New function.
> (rsrc_process_section): New function - merges the contents of a
> .rsrc section.
> (_bfd_XXi_final_link_postscript): Call rsrc_process_section.
> * configure.in (AC_CHECK_HEADERS): Add wchar.h
> * config.in: Regenerate.
> * configure: Regenerate.
>
With GCC 4.2, I got
peigen.c: In function ‘rsrc_process_section’:
peigen.c:3522: warning: declaration of ‘index’ shadows a global declaration
/usr/include/string.h:304: warning: shadowed declaration is here
make[6]: *** [peigen.lo] Error 1
make[6]: *** Waiting for unfinished jobs....
mv -f .deps/pei-i386.Tpo .deps/pei-i386.Plo
mv -f .deps/elflink.Tpo .deps/elflink.Plo
mv -f .deps/aout32.Tpo .deps/aout32.Plo
--
H.J.