The special case for .init and .fini in update_wild_statements is
ineffective for .init or .fini wildcards inside other output sections.
The special case needs to be on the wildcard, not the output section.
This patch is belt and braces, both fixing update_wild_statements and
the scripts.
* scripttempl/alpha.sc, * scripttempl/armbpabi.sc,
* scripttempl/crisaout.sc, * scripttempl/elf32cr16.sc,
* scripttempl/elf32crx.sc, * scripttempl/elf32xc16x.sc,
* scripttempl/elf32xc16xl.sc, * scripttempl/elf32xc16xs.sc,
* scripttempl/elf64hppa.sc, * scripttempl/elf_chaos.sc,
* scripttempl/elfarc.sc, * scripttempl/elfarcv2.sc,
* scripttempl/elfd30v.sc, * scripttempl/elfm68hc11.sc,
* scripttempl/elfm68hc12.sc, * scripttempl/elfm9s12z.sc,
* scripttempl/elfmicroblaze.sc, * scripttempl/elfxgate.sc,
* scripttempl/elfxtensa.sc, * scripttempl/epiphany_4x4.sc,
* scripttempl/ft32.sc, * scripttempl/i386beos.sc,
* scripttempl/iq2000.sc, * scripttempl/mcorepe.sc,
* scripttempl/mep.sc, * scripttempl/mips.sc, * scripttempl/moxie.sc,
* scripttempl/pe.sc, * scripttempl/pep.sc, * scripttempl/ppcpe.sc,
* scripttempl/tic4xcoff.sc, * scripttempl/tic80coff.sc,
* scripttempl/v850.sc, * scripttempl/v850_rh850.sc,
* scripttempl/visium.sc, * scripttempl/xstormy16.sc: Add KEEP and
SORT_NONE to .init and .fini wildcards.
* scripttempl/elf32xc16x.sc,
* scripttempl/elf32xc16xl.sc,
* scripttempl/elf32xc16xs.sc: Add .fini wildcard.
* scripttempl/elf_chaos.sc: Add .init output section.
* scripttempl/elfd30v.sc: Remove duplicate .init.
* scripttempl/elfm68hc11.sc, * scripttempl/elfm68hc12.sc,
* scripttempl/elfm9s12z.sc, * scripttempl/elfxgate.sc: Remove
duplicate .init, and add .fini wildcard.
* scripttempl/ppcpe.sc (INIT, FINI): Delete.
* ldlang.c (update_wild_statements): Special case .init and
.fini in the wildcard, not the output section.
PR 22762
* scripttempl/pe.sc: Remove PROVIDE()s from __CTOR_LIST__ and
__DTOR_LIST__ symbols. Add a comment explaining why this is
necessary.
* scripttemp/pep.sc: Likewise.
* ld.texinfo (PROVIDE): Add a note about the effect of common
symbols.
* scripttempl/pep.sc: Enclose __CTOR_LIST__, ___CTOR_LIST__,
__DTOR_LIST__ and ___DTOR_LIST__ in PROVIDE statements so that
they can be overrridden by crt input files.
* scripttempl/pe.sc: Likewise.
the Cygwin and MinGW targets. The manifest is now going to be handled by gcc.
* scripttempl/pe.sc (R_RSRC): Remove default manifest.
* scripttempl/pep.sc (R_RSRC): Remove default manifest.
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.
The manifest is necessary in order for the linked binaries to be executed in a Windows 8 environment.
The manifest is added using a linker script so that this feature will be compiler-neutral. The resource
merging code in the linker means that if an application provides its own manifest then the default
manifest will be ignored.
* configure.in (all_emul_extra_binaries): New variable. Populated
by invoking configure.tgt.
(EMUL_EXTRA_BINARIES): New substitution.
* configure: Regenerate.
* configure.tgt (target_extra_binaries): New variable. Set to
default-manifest.o for Cygwin and MinGW targets.
* Makefile.am (EMUL_EXTRA_BINARIES): New variable. Initialised
by the configure script.
(ALL_EMUL_EXTRA_BINARIES): New variable.
(default-manifest.o): New rule to build the default manifest.
(ld_new_DEPENDENCIES): Add EMUL_EXTRA_BINARIES.
(install-data-local): Add EMUL_EXTRA_BINARIES.
* Makefile.in: Regenerate.
* ld.texinfo: Document default manifest support.
* emulparams/i386pe.sh (DEFAULT_MANIFEST): Define.
* emulparams/i386pep.sh (DEFAULT_MANIFEST): Define.
* emultempl/default-manifest.rc: New file.
* scripttempl/pe.sc (R_RSRC): Include DEFAULT_MANIFEST, if defined.
* scripttempl/pep.sc (R_RSRC): Likewise.
* ld-pe/longsecn-1.d: Allow for extra sections.
* ld-pe/longsecn-2.d: Likewise.
* ld-pe/longsecn.d: Likewise.
* ld-pe/secrel.d: Likewise.
2012-10-18 Kai Tietz <ktietz@redhat.com>
PR binutils/14067
* coff-i386.c (bfd_target): Add section flag SEC_EXCLUDE.
Allow BFD_COMPRESS and BFD_DECOMPRESS flags.
* coff-x86_64.c: Likewise.
* coffcode.h (DOT_ZDEBUG): New define.
(sec_to_styp_flags): Check for .zdebug.
(styp_to_sec_flags): Likewise.
* coffgen.c (make_a_section): Handle .debug_* section
compression/decompression flags.
* cofflink.c (mark_relocs): Ignore relocations
for a section, which isn't marked as used.
(_bfd_coff_link_input_bfd): Add support of compressed
debug sections.
* compress.c (decompress_contents): Loop as long
as there is input available and there is room for
output.
* bfd/pe-arm.c: Add .zdebug_ partial match entry.
* pe-i386.c: Likewise.
* pe-x86_64.c: Likewise.
* peXXigen.c (_bfd_XXi_swap_aouthdr_out): Don't clear all
data-directories as this might destroy content.
* coff-i386.c (_bfd_generic_find_nearest_line_discriminator):
define as coff_find_nearest_line_discriminator.
* libcoff-in.h (coff_find_nearest_line_discriminator): New
* libcoff.h: Regenerated.
* coff-x86_64.c: Likewise.
* coffgen.c (coff_find_nearest_line_discriminator): New function.
prototype.
ChangeLog binutils
2012-10-18 Kai Tietz <ktietz@redhat.com>
* objdump.c (dump_bfd): Call dump headers after
call of slurp_symtab.
ChangeLog ld
2012-10-18 Kai Tietz <ktietz@redhat.com>
PR binutils/14067
* NEWS: Menition new feature.
* scripttempl/pep.sc: Add zdebug sections.
* scripttempl/pe.sc: L
PR ld/12365
* cofflink.c (bfd_coff_link_input_bfd): Check for and warn about
references to symbols defined in discarded sections.
ld/ChangeLog:
PR ld/12365
* scripttempl/pe.sc (__rt_psrelocs_start): New symbol definition.
(__rt_psrelocs_end): Likewise.
(__rt_psrelocs_size): Likewise difference between the above.
(__RUNTIME_PSEUDO_RELOC_LIST_END__): Move outside .rdata section
immediately after end of pseudo-reloc data.
(___RUNTIME_PSEUDO_RELOC_LIST_END___): Likewise.
(__RUNTIME_PSEUDO_RELOC_LIST__): Move outside .rdata section and
calculate backward from list end.
(___RUNTIME_PSEUDO_RELOC_LIST___): Likewise.
* scripttempl/pep.sc: Likewise.
ld/testsuite/ChangeLog:
PR ld/12365
* ld-plugin/plugin-7.d: Allow underscore in error message.
* ld-plugin/plugin-8.d: Likewise.
(dwcfi_hash): New static hash variable.
(get_debugseg_name): New.
(alloc_debugseg_item): New.
(make_debug_seg): New.
(dwcfi_hash_insert): New.
(dwcfi_hash_find): New.
(dwcfi_hash_find_or_make): New.
(cfi_insn_data): New member cur_seg.
(cie_entry): Likewise.
(fde_entry): New cseg and handled members.
(alloc_fde_entry): Initialize cseg member.
(alloc_cfi_insn_data): Initialize cur_seg member.
(dot_cfi_sections): Compare for beginning of
section names via strncmp.
(get_cfi_seg): New.
(cfi_finish): Treat link-once sections.
(is_now_linkonce_segment): New local helper.
(output_cie): Ignore cie entries not member of current
segment.
(output_fde): Likewise.
(select_cie_for_fde): Likewise.
(cfi_change_reg_numbers): Add new argument for current segment
and ignore insn elements, if not part of current segment.
* ehopt.c (get_cie_info): Use strncmp for
section name matching.
(heck_eh_frame): Likewise.
* coffcode.h (sec_to_styp_flags): Allow linkonce for
debugging sections.
* scripttempl/pe.sc: Handle .eh_frame($|.)* sections.
* scripttempl/pep.sc: Likewise.
* ld-pe/pe.exp: Add cfi/cfi32 tests.
* ld-pe/cfi.d: New.
* ld-pe/cfi32.d: New.
* ld-pe/cfia.s: New.
* ld-pe/cfib.s: New.
* scripttempl/pe.sc: (.note.GNU-stack): Mark as discardable.
(.gnu.lto_*): Likewise.
* scripttempl/pep.sc: (.note.GNU-stack): Mark as discardable.
(.gnu.lto_*): Likewise.
* genscript.sh: Add support for generating a .xa script for use with the --auto-import option.
* ld.texinfo: Document the new behaviour of the --auto-import option.
* ldint.texinfo: Document new script generation.
* emulparams/i386pe.sh (GENERATE_AUTO_IMPORT): Define.
* emulparams/i386pe_posix.sh (GENERATE_AUTO_IMPORT): Define.
* emulparams/i386pep.sh (GENERATE_AUTO_IMPORT): Define.
* emultemp/pe.em (..._get_script): Support the use of the auto import script.
* scripttempl/pe.sc: Put the .rdata input sections into the .data output section when creating an auto import script.
* scripttempl/pep.sc: Likewise.
emulparams/i386pe_posix.sh, emulparams/mcorepe.sh, emulparams/mipspe.sh,
emulparams/ppcpe.sh, scripttempl/pe.sc: Define TARGET_PAGE_SIZE.
* scripttempl/pe.sc: Make the virtual address and file offset synced if the
alignment is lower than the target page size.