From 6caf711179d96da75860b79434bc792c92c0fa4c Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 19 Mar 2014 14:46:15 +0000 Subject: Improve .rsrc section merging again. This time with an algorithm that should work for all types of input .rsrc section. * peXXigen.c (rsrc_process_section): Add code to scan input sections and record their lengths. Use these lengths to find the start of each merged .rsrc section. * scripttempl/pe.sc (R_RSRC): Fix default-manifest exclusion. (.rsrc): Add SUBALIGN(4). Remove SORT. * scripttempl/pep.sc: Likewise. --- ld/scripttempl/pe.sc | 9 ++++++--- ld/scripttempl/pep.sc | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'ld/scripttempl') diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc index 4a1951c..e9e5f64 100644 --- a/ld/scripttempl/pe.sc +++ b/ld/scripttempl/pe.sc @@ -47,15 +47,18 @@ if test "${RELOCATING}"; then if test -z "$DEFAULT_MANIFEST"; then R_RSRC=' *(.rsrc) - *(SORT(.rsrc$*))' + *(.rsrc$*)' else R_RSRC=" /* The default manifest contains information necessary for binaries to run under Windows 8 (or later). It is included as the last resource file so that if the application has provided - its own manifest then that one will take precedence. */ + its own manifest then that one will take precedence. + + Note - the .rsrc section merging code relies upon the fact + that the input .rsrc sections are *not* sorted. */ *(EXCLUDE_FILE (*$DEFAULT_MANIFEST) .rsrc) - *(SORT(.rsrc*)) + *(.rsrc*) KEEP ($DEFAULT_MANIFEST(.rsrc))" fi else diff --git a/ld/scripttempl/pep.sc b/ld/scripttempl/pep.sc index 592489a..5f97d31 100644 --- a/ld/scripttempl/pep.sc +++ b/ld/scripttempl/pep.sc @@ -47,15 +47,18 @@ if test "${RELOCATING}"; then if test -z "$DEFAULT_MANIFEST"; then R_RSRC=' *(.rsrc) - *(SORT(.rsrc$*))' + *(.rsrc$*)' else R_RSRC=" /* The default manifest contains information necessary for binaries to run under Windows 8 (or later). It is included as the last resource file so that if the application has provided - its own manifest then that one will take precedence. */ + its own manifest then that one will take precedence. + + Note - the .rsrc section merging code relies upon the fact + that the input .rsrc sections are *not* sorted. */ *(EXCLUDE_FILE (*$DEFAULT_MANIFEST) .rsrc) - *(SORT(.rsrc*)) + *(.rsrc*) KEEP ($DEFAULT_MANIFEST(.rsrc))" fi else -- cgit v1.1