* linker.c (bfd_section_already_linked_table_insert): Change
return type from void to boolean. Return FALSE on failure.
(_bfd_generic_section_already_linked): Test return value of
bfd_section_already_linked_table_insert, call fatal on error.
* elflink.c (_bfd_elf_section_already_linked): Test return value
of bfd_section_already_linked_table_insert, call fatal on error.
* libbfd-in.h (bfd_section_already_linked_table_insert): Update
return type to bfd_boolean.
* libbfd.h: Regenerate.
count zero. Check that offset and count are within section.
* libbfd.c (_bfd_generic_get_section_contents): Check that
offset + count does not overflow.
* dwarf2.c (struct dwarf2_debug): Add new fields to support function and variable info hash tables. Add last_comp_unit, info_hash_count, funcinfo_hash_table, varinfo_hash_table, hash_units_head.
(struct comp_unit): Add prev_unit, cached.
(struct info_list_node, struct info_hash_entry, struct info_hash_table): New.
(info_hash_table_newfunc, create_info_hash_table, insert_info_hash_table, lookup_info_hash_table): New functions implementing function and variable info hash tables.
(scan_unit_for_symbols): Add checks to make sure hash tables are consistent with compilation units.
(comp_unit_maybe_decode_line_info): New function.
(comp_unit_find_line): Use comp_unit_maybe_decode_line_info.
(reverse_funcinfo_list, reverse_varinfo_list, comp_unit_hash_info, info_hash_lookup_funcinfo, info_hash_lookup_varinfo, stash_maybe_update_info_hash_table, stash_verify_info_hash_table, stash_maybe_enable_info_hash_tables, stash_find_line_fast): New functions. Make use of info hash tables to speed up bfd_dwarf2_find_line.
(find_line): Use hash table for faster lookup if it is turned on.
Also add code to maintain bi-directional link in comp units.
* elflink.c (_bfd_elf_fix_symbol_flags): Only assert the type
of weakdef->root.type if weakdef has no regular definition.
ld/testsuite/
* ld-elf/weak-dyn-1a.s, ld-elf/weak-dyn-1b.s, ld-elf/weak-dyn-1.ld,
* ld-elf/weak-dyn-1.rd: New test.
* ld-elf/elf.exp: Run it.
* elflink.c (bfd_elf_record_link_assignment): Handle indirect
symbol.
(_bfd_elf_merge_symbol): Properly update normal symbol when
overriding the versioned symbol from a dynamic library.
* elf32-arm.c (elf32_arm_merge_eabi_attributes): Copy type from
input attributes if value has been copied.
ld/testsuite:
* ld-arm/attr-merge-2a.s, ld-arm/attr-merge-2b.s,
ld-arm/attr-merge-2.attr: New.
* ld-arm/arm-elf.exp (armelftests): Add new test.
bfd/
* elf32-arm.c (bfd_elf32_arm_process_before_allocation): Suppress
call veneers for call relocations against undefined symbols.
(elf32_arm_final_link_relocate): Turn call to undefined symbol
into a jump to the next instruction.
ld/testuite/
* ld-arm/arm-elf.exp (armelftests): Add callweak.
* ld-arm/callweak.d: New test.
* ld-arm/callweak.s: New test.
* elfxx-mips.c (mips_elf_calculate_relocation): Allow local stubs
to be used for calls from MIPS16 code.
gas/
* config/tc-mips.h (TC_SYMFIELD_TYPE): New.
* config/tc-mips.c (append_insn): Record which symbols have
R_MIPS16_26 relocations against them.
(mips_fix_adjustable): Don't reduce relocations against such symbols.
ld/testsuite/
* ld-mips-elf/mips16-local-stubs-1.s,
* ld-mips-elf/mips16-local-stubs-1.d: New tests.
* ld-mips-elf/mips-elf.exp: Run them.
(struct dwarf2_debug): Add bfd field to record the bfd containing the debug info.
(parse_comp_unit): Remove ABFD parameter. Instead use the bfd field in the dwarf2_debug structure.
(_bfd_dwarf2_find_nearest_line): If a debug info section could not be found in the current bfd call bfd_follow_gnu_debuglink to see if another file contains the debug information. If it does, open it and continue.
(bfd_dwarf2_find_line): Likewise.
* libpei.h (_bfd_XXi_final_link_postscript): Remove
duplication.
(bfd_target_pei_p): New.
(bfd_target_pei_arch): New
(bfd_target_efi_p): Likewise.
(bfd_target_efi_arch): New
(bfd_pe_executable_p): Use bfd_target_pei_p and
bfd_target_efi_p.
* peicode.h (arch_type): New enum.
(pe_arch): New function.
(pe_bfd_object_p): Don't match PE/EFI target with EFI/PE file
if there is an EFI/PE target.
* elf32-xtensa.c (extend_ebb_bounds_forward): Use renamed
XTENSA_PROP_NO_TRANSFORM flag instead of XTENSA_PROP_INSN_NO_TRANSFORM.
(extend_ebb_bounds_backward, compute_text_actions): Likewise.
(compute_ebb_proposed_actions, coalesce_shared_literal): Likewise.
(xtensa_get_property_predef_flags): Likewise.
(compute_removed_literals): Pass new arguments to is_removable_literal.
(is_removable_literal): Add sec, prop_table and ptblsize arguments.
Do not remove literal if the NO_TRANSFORM property flag is set.
gas/
* config/tc-xtensa.c (XTENSA_PROP_INSN_NO_TRANSFORM): Renamed to...
(XTENSA_PROP_NO_TRANSFORM): ...this.
(frag_flags_struct): Move is_no_transform out of the insn sub-struct.
(xtensa_mark_frags_for_org): New.
(xtensa_handle_align): Set RELAX_ORG frag subtype for rs_org.
(xtensa_post_relax_hook): Call xtensa_mark_frags_for_org.
(get_frag_property_flags): Adjust reference to is_no_transform flag.
(xtensa_frag_flags_combinable): Likewise.
(frag_flags_to_number): Likewise. Use XTENSA_PROP_NO_TRANSFORM.
* config/tc-xtensa.h (xtensa_relax_statesE): Add RELAX_ORG.
include/elf/
* xtensa.h (XTENSA_PROP_INSN_NO_TRANSFORM): Renamed to...
(XTENSA_PROP_NO_TRANSFORM): ...this.
ld/
* emultempl/xtensaelf.em (replace_insn_sec_with_prop_sec): Use renamed
XTENSA_PROP_NO_TRANSFORM flag instead of XTENSA_PROP_INSN_NO_TRANSFORM.
* elfxx-mips.c (mips_elf_initialize_tls_index): When processing a
type (3) single-GOT entry, read tls_type from the hash table entry
rather than the GOT entry.
* elf.c (elf_fake_sections): Adjust test for SHT_NOBITS sections
created by objcopy --only-keep-debug.
(_bfd_elf_init_private_section_data): Only change elf_section_type
if it is SHT_NULL.
binutils/
* objcopy.c (copy_object): Revert 2007-05-11 change. Don't
avoid calling bfd_copy_private_bfd_data for ELF STRIP_NONDEBUG.
(setup_section): Don't modify flags, and don't avoid calling
bfd_copy_private_section_data for ELF STRIP_NONDEBUG.
* readelf.c (process_program_headers): Ignore .dynamic of type
SHT_NOBITS.
to SHT_NOBITS earlier. Base actions in rest of function on sh_type
and sh_flags instead of bfd section flags. Delete voff and code
keeping nobits segments aligned.
* elfxx-mips.c (mips_elf_create_local_got_entry): Remove
input_section argument. Create .rela.dyn relocations against
symbol 0 rather than the section symbol.
(mips_elf_local_got_index): Remove input_section argument.
Update call to mips_elf_create_local_got_entry.
(mips_elf_got_page, mips_elf_got16_entry): Likewise.
(mips_elf_calculate_relocation): Update calls to
mips_elf_local_got_index, mips_elf_got16_entry and mips_elf_got_page.
ld/testsuite/
* ld-mips-elf/vxworks1-lib.rd: Expect the GOT relocation to be
against symbol 0.
* elf.c (elf_fake_sections): Don't allow backend to change
SHT_NOBITS if called for strip/objcopy --only-keep-debug.
* elfxx-mips.c (_bfd_mips_elf_fake_sections): Remove similar
fix from here.
* elf-eh-frame.c (struct cie): Add "local_personality". Make
"personality" a union.
(cie_eq): Compare local_personality too. Adjust personality
comparison.
(_bfd_elf_discard_section_eh_frame): Check binding on personality
reloc sym to allow for bad symtab. Use stashed local syms rather
than reading personality local sym. Handle discarded sections.
* spu.h (R_SPU_PPU32, R_SPU_PPU64): Define.
bfd/
* reloc.c (BFD_RELOC_SPU_PPU32, BFD_RELOC_SPU_PPU64): Define.
* elf-bfd.h (struct elf_backend_data): Change return type of
elf_backend_relocate_section to int.
* elf32-spu.c (elf_howto_table): Add howtos for R_SPU_PPU32 and
R_SPU_PPU64.
(spu_elf_bfd_to_reloc_type): Convert new relocs.
(spu_elf_count_relocs): New function.
(elf_backend_count_relocs): Define.
(spu_elf_relocate_section): Arrange to emit R_SPU_PPU32 and
R_SPU_PPU64 relocs.
* elflink.c (elf_link_input_bfd): Emit relocs if relocate_section
returns 2.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
gas/
* config/tc-spu.c (md_pseudo_table): Add int, long, quad. Call
spu_cons for word.
(md_assemble): Tidy use of insn.flag.
(get_imm): Likewise. Handle uppercase input too.
(spu_cons): New function.
* config/tc-spu.h (tc_fix_adjustable): Don't adjust SPU_PPU relocs.
(TC_FORCE_RELOCATION): Don't resolve them either.
binutils/
* embedspu.sh (find_prog): Prefer prog in same dir as embedspu
over one found on the users path.
(main): Generate .reloc for each R_SPU_PPU* reloc.
* elf32-arm.c (elf32_arm_check_relocs): Don't create PLT entries
for R_ARM_ABS12 relocs.
(elf32_arm_finish_dynamic_symbol): Fix the loop that creates
non-shared VxWorks PLT entries.
ld/testsuite/
* ld-arm/vxworks1-lib.dd: Expect "push" instead of stmdb and
"pop" instead of ldmia. Don't require specific symbolic addresses
for in-text addresses. Expect data to be rendered as .words rather
than disassembled.
* ld-arm/vxworks1.dd: Likewise.
* elf.c (assign_file_positions_for_load_sections): Use p_memsz
rather than p_filesz to calculate the LMA of the end of a segment.
ld/testsuite/
* ld-elf/multibss1.d, ld-elf/multibss1.s: New test.
* elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Don't
attempt to scan if the bfd doesn't correspond to an ELF image.
(bfd_elf32_arm_vfp11_fix_veneer_locations): Likewise.
are present examine the indirect sections in an attempt to compute the
correct relocation size. If there is any ambiguity, produce an error and
refuse to sort.
* gas/config/tc-m68k.c (relaxable_symbol): Do not relax weak symbols.
(tc_gen_reloc): Adjust the addend of relocs against weak symbols.
(md_apply_fix): Put zero values into the frags referencing weak symbols.
* bfd/aoutx.h (swap_std_reloc_out): Treat relocs against weak symbols in the same way as relocs against external symbols.
* internal.h (ELF_IS_SECTION_IN_SEGMENT): Check both file offset
and vma for appropriate sections.
bfd/
* elf.c (assign_file_positions_for_load_sections): Set sh_offset
here. Set sh_type to SHT_NOBITS if we won't be allocating
file space. Don't bump p_memsz for non-alloc sections. Adjust
section-in-segment check.
(assign_file_positions_for_non_load_sections): Don't set sh_offset
here for sections that have already been handled above.
* Makefile.am (libbfd_la_LDFLAGS): Use bfd soversion.
(bfdver.h): Use the date in non-release builds for the soversion.
* Makefile.in: Regenerate.
2007-04-18 Matthias Klose <doko@ubuntu.com>
* Makefile.am (libopcodes_la_LDFLAGS): Use bfd soversion.
* Makefile.in: Regenerate.
* elfxx-mips.c (mips_elf_calculate_relocation): Set DT_TEXTREL
when creating a __GOTT_BASE__ or __GOTT_INDEX__ relocation
in a read-only section.
(_bfd_mips_elf_check_relocs): Likewise.
ld/testsuite/
* ld-mips-elf/vxworks1-lib.td: New test.
* ld-mips-elf/mips-elf.exp: Run it.
(xtensa_is_proptable_section): New.
(elf_xtensa_discard_info_for_section): Handle "full" .xt.prop property
tables with 12-byte entries, as well as tables with 8-byte entries.
Sort the relocations before examining them.
(relax_property_section): Use xtensa_is_proptable_section and
xtensa_is_littable_section. Rewrite code for combining table entries
to be more robust in case of unexpected relocations. Do not set offset
of unused relocations to less than zero.
(xtensa_is_property_section): Use other functions instead of
duplicating section name comparisons.
(xtensa_is_littable_section): Use CONST_STRNEQ for ".gnu.linkonce.p.".
(xtensa_get_property_predef_flags): Use xtensa_is_insntable_section.
* elf32-vax.c (elf_vax_relocate_section): Do not emit a PCREL reloc
in a shared object if it is not in a CODE section or if it is against
a section symbol. This allows DWARF2 to use pcrel format.
* bfd.c (bfd_fprintf_vma): Do not print addresses of 32-bit
targets as 64-bit values, even if running on a 64-bit host.
* coffgen.c (coff_print_symbol): Likewise.
* nm.c (value_format): Replace with value_format_32bit and
value_format_64bit.
(set_radix): Update setting of value_format.
(set_print_width): New function. Compute the address size of a
given bfd and set the print_width global appropriately.
(display_archive): Use set_print_width.
(display_file): Likewise,
(print_object_filename_sysv): Update use of print_width.
(print_archive_member_sysv): Likewise.
(print_symbol_filename_posix): Likewise.
(print_sumbol_info_bfd, print_symbol_info_sysv): Likewise.
* elf.c (IS_VALID_GROUP_SECTION_HEADER): New macro.
(setup_group): Use it. Report corrupt group section headers.
(bfd_section_from_shdr): Use new macro. Replace constant 4 with
GRP_ENTRY_SIZE. Cope with NULLs in the group section table.
(elf_fake_section): Replace constant 4 with GRP_ENTRY_SIZE.
* elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Remove append_rela.
* elfxx-sparc.c (sparc_elf_append_rela_64, sparc_elf_append_rela_32):
Merge into...
(sparc_elf_append_rela): ...this new function.
(SPARC_ELF_APPEND_RELA): Delete.
(_bfd_sparc_elf_link_hash_table_create): Don't initialize
the deleted append_rela field.
(_bfd_sparc_elf_relocate_section): Use sparc_elf_append_rela
instead of SPARC_ELF_APPEND_RELA.
(_bfd_sparc_elf_finish_dynamic_symbol): Likewise. Use the
elf_size_info structure to find the size of a RELA entry and
the associated swap-out function.
(sparc64_finish_dyn, sparc64_finish_dyn): Merge into...
(sparc_finish_dyn): ...this new function.
(_bfd_sparc_elf_finish_dynamic_sections): Update calls accordingly.
200x-xx-xx Richard Sandiford <richard@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
* doc/bfd.texinfo: Put the contents after the title page rather
than at the end of the document.
binutils/
200x-xx-xx Richard Sandiford <richard@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
* doc/binutils.texi: Put the contents after the title page rather
than at the end of the document.
gas/
200x-xx-xx Richard Sandiford <richard@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
* doc/as.texinfo: Put the contents after the title page rather
than at the end of the document.
gprof/
200x-xx-xx Richard Sandiford <richard@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
* gprof.texi: Put the contents after the title page rather
than at the end of the document.
ld/
200x-xx-xx Richard Sandiford <richard@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
* ld.texinfo: Put the contents after the title page rather
than at the end of the document.
* Makefile.am (bfdver.h): Only set VERSION_PACKAGE in bfdver.texi
if nonempty.
* configure.in (REPORT_BUGS_TO): Do not use "URL:" prefix.
* Makefile.in, configure, doc/Makefile.in: Regenerate.
binutils:
* doc/binutils.texi: Include VERSION_PACKAGE when reporting
version.
gas:
* doc/as.texinfo: Include VERSION_PACKAGE when reporting version.
gprof:
* Makefile.am (TEXI2POD): Include $(AM_MAKEINFOFLAGS).
(AM_MAKEINFOFLAGS, TEXI2DVI): Define with -I ../bfd/doc.
* Makefile.in: Regenerate.
* gprof.texi: Include bfdver.texi. Report both VERSION_PACKAGE
and VERSION.
ld:
* ld.texinfo: Include VERSION_PACKAGE when reporting version.
2003-03-22 H.J. Lu <hongjiu.lu@intel.com>
PR ld/4210
* peXXigen.c (_bfd_XXi_swap_aouthdr_out): Use the virtual
address and virtual size of the last section for the image
size.
ld/testsuite/
2003-03-22 H.J. Lu <hongjiu.lu@intel.com>
PR ld/4210
* ld-pe/image_size.d: New file.
* ld-pe/image_size.s: Likewise.
* ld-pe/image_size.t: Likewise.
* ld-pe/pe.exp: Run image_size.
PR binutils/3826
* elf-bfd.h (elf_backend_data): Add elf_osabi.
(_bfd_elf_set_osabi): New.
* elf.c (_bfd_elf_set_osabi): New.
* elf32-hppa.c (elf32_hppa_post_process_headers): Removed.
(elf_backend_post_process_headers): Defined with
_bfd_elf_set_osabi.
(ELF_OSABI): Properly defined for each target.
* elf32-i370.c (i370_elf_post_process_headers): Removed.
(ELF_OSABI): Defined.
(elf_backend_post_process_headers): Defined with
_bfd_elf_set_osabi.
* elf32-i386.c (ELF_OSABI): Defined to ELFOSABI_FREEBSD for
freebsd.
(elf_i386_post_process_headers): Set EI_OSABI with elf_osabi.
* elf32-msp430.c (elf32_msp430_post_process_headers): Removed.
(ELF_OSABI): Defined.
(elf_backend_post_process_headers): Defined with
_bfd_elf_set_osabi.
* elf64-alpha.c (ELF_OSABI): Defined to ELFOSABI_FREEBSD for
freebsd.
(elf64_alpha_fbsd_post_process_headers): Set EI_OSABI with
elf_osabi.
* elf64-hppa.c (elf64_hppa_post_process_headers): Set EI_OSABI
with elf_osabi.
(ELF_OSABI): Properly defined for each target.
(elf_backend_post_process_headers): Defined with
_bfd_elf_set_osabi for Linux.
* elf64-sparc.c (elf64_sparc_fbsd_post_process_headers): Removed.
(ELF_OSABI): Defined to ELFOSABI_FREEBSD for freebsd.
(elf_backend_post_process_headers): Defined with
_bfd_elf_set_osabi.
* elf64-x86-64.c (elf64_x86_64_fbsd_post_process_headers): Removed.
(ELF_OSABI): Defined to ELFOSABI_FREEBSD for freebsd.
(elf_backend_post_process_headers): Defined with
_bfd_elf_set_osabi.
* elfcode.h (elf_object_p): Match the ELFOSABI_NONE ELF target
with any ELF target of the compatible machine for which we do not
have a specific backend.
* elfxx-ia64.c (elfNN_hpux_post_process_headers): Set EI_OSABI
with elf_osabi.
* elfxx-target.h (ELF_OSABI): Default to ELFOSABI_NONE.
(elfNN_bed): Initialize elf_osabi with ELF_OSABI.
* elf.c (assign_file_positions_for_load_sections): Don't
adjust p_memsz for !SEC_LOAD section vma modulo page size.
Instead, use the same lma based adjustment for SEC_LOAD
sections.
(find_relaxable_sections): Do not increment src_count for unknown
opcodes. Decode only once instead of calling is_l32r_relocation.
(compute_text_actions): Remove unused no_insn_move flag. Assert that
src_next matches src_count in relax_info.
(elf_xtensa_hide_symbol, elf_backend_hide_symbol): Delete.
(elf_xtensa_fix_refcounts, elf_xtensa_allocate_plt_size)
(elf_xtensa_allocate_got_size): Replace these with...
(elf_xtensa_allocate_dynrelocs): ...this new function.
(elf_xtensa_size_dynamic_sections): Use it.
<R_XTENSA_JMP_SLOT, R_XTENSA_RELATIVE, R_XTENSA_PLT, R_XTENSA_DIFF32>:
Set src_mask to zero.
<R_XTENSA_DIFF8, R_XTENSA_DIFF16>: Likewise. Also fix dst_mask.
<R_XTENSA_ASM_EXPAND>: Set pcrel_offset to TRUE.
(struct elf_xtensa_link_hash_table): New.
(elf_xtensa_hash_table): New.
(elf_xtensa_link_hash_table_create): New.
(elf_xtensa_check_relocs): Update plt_reloc_count references.
Update arguments to add_extra_plt_sections.
(elf_xtensa_create_dynamic_sections): Record new sections in the hash
table. Update for plt_reloc_count and add_extra_plt_sections.
(add_extra_plt_sections, elf_xtensa_create_plt_entry): Replace dynobj
argument with link info. Update calls to elf_xtensa_get_plt_section
and elf_xtensa_get_gotplt_section.
(elf_xtensa_allocate_local_got_size, elf_xtensa_size_dynamic_sections)
(elf_xtensa_relocate_section, elf_xtensa_finish_dynamic_sections)
(elf_xtensa_discard_info_for_section, shrink_dynamic_reloc_sections)
(relax_property_section): Get sections from the hash table and update
function calls.
(elf_xtensa_get_plt_section, elf_xtensa_get_gotplt_section): Replace
dynobj argument with link info. Get sections for first plt chunk from
the hash table.
(bfd_elf32_bfd_link_hash_table_create): Define.
* elf.c (struct elf_symbuf_symbol, struct elf_symbuf_head): New types.
(struct elf_symbol): Change first member into union.
(elf_sort_elf_symbol): Compare pointers to internal syms rather than
internal syms. Only compare st_shndx fields.
(elf_create_symbuf): New function.
(bfd_elf_match_symbols_in_sections): Use it. If symbufs are available
for bfds, use a binary search, otherwise don't qsort symbols
unnecessarily only to select which symbols are for the particular
shndx.
* elfxx-target.h (elf_backend_write_core_note): Define and use.
* elf.c (elfcore_write_prpsinfo): Call the above. Add support for
32-bit core note on 64-bit target.
(elfcore_write_prstatus): Likewise.
(elfcore_write_lwpstatus): Make note_name const.
(elfcore_write_prfpreg): Likewise.
(elfcore_write_pstatus): Add support for 32-bit core note on 64-bit
target.
* elf32-ppc.c (ppc_elf_write_core_note): New function.
(elf_backend_write_core_note): Define.
* elf64-ppc.c (ppc64_elf_write_core_note): New function.
(elf_backend_write_core_note): Define.
* bfd-in.h (bfd_arm_vfp11_fix): New enum. Specify how VFP11
instruction scanning should be done.
(bfd_elf32_arm_init_maps, bfd_elf32_arm_vfp11_erratum_scan)
(bfd_elf32_arm_vfp11_fix_veneer_locations): Add prototypes.
(bfd_elf32_arm_set_target_relocs): Add vfp11 fix type argument to
prototype.
* elf-bfd.h (elf_backend_write_section): Add struct bfd_link_info
argument.
* elf32-arm.c (VFP11_ERRATUM_VENEER_SECTION_NAME)
(VFP11_ERRATUM_VENEER_ENTRY_NAME): Define macros.
(elf32_vfp11_erratum_type): New enum.
(elf32_vfp11_erratum_list): New struct. List of veneers or jumps to
veneers.
(_arm_elf_section_data): Add mapsize, erratumcount, erratumlist.
(elf32_arm_link_hash_table): Add vfp11_erratum_glue_size,
vfp11_fix and num_vfp11_fixes fields.
(elf32_arm_link_hash_table_create): Initialise vfp11_fix,
vfp11_erratum_glue_size, num_vfp11_fixes fields.
(VFP11_ERRATUM_VENEER_SIZE): Define. Size of an (ARM) veneer.
(bfd_elf32_arm_allocate_interworking_sections): Initialise erratum
glue section.
(elf32_arm_section_map_add): Add an code/data mapping symbol entry
to a section's map.
(record_vfp11_erratum_veneer): Create a single veneer, and its
associated symbols.
(bfd_elf32_arm_add_glue_sections_to_bfd): Add vfp11 erratum glue.
(bfd_elf32_arm_init_maps): Initialise mapping symbol table for input
BFDs.
(bfd_elf32_arm_set_vfp11_fix): Set the type of erratum workaround
required.
(bfd_arm_vfp11_pipe): Define VFP11 instruction pipes.
(bfd_arm_vfp11_regno): Recode a register number from a VFP11 insn.
(bfd_arm_vfp11_write_mask): Update write mask according to coded
register number.
(bfd_arm_vfp11_antidependency): New function.
(bfd_arm_vfp11_insn_decode): Decode a VFP11 insn.
(elf32_arm_compare_mapping): Declare.
(bfd_elf32_arm_vfp11_erratum_scan): Scan the sections of an input
BFD for potential erratum-triggering insns. Record results.
(bfd_elf32_arm_vfp11_fix_veneer_locations): Find out where veneers
and branches to veneers have been placed in virtual memory after
layout.
(bfd_elf32_arm_set_target_relocs): Set vfp11_fix field in global
hash table.
(elf32_arm_output_symbol_hook): Remove.
(elf32_arm_write_section): Output veneers, and branches to veneers.
Use maps from input sections, not output sections, for code
byte-swapping.
* elf32-ppc.c (ppc_elf_write_section): Add dummy link_info argument.
* elf32-score.c (_bfd_score_elf_write_section): Likewise.
* elfxx-mips.c (_bfd_mips_elf_write_section): Likewise.
* elfxx-mips.h (_bfd_mips_elf_write_section): Likewise.
* elf32-avr.c (avr_link_hash_table): Check to make sure that the hash table was created by elf32_avr_link_hash_table_create before using it.
(elf32_avr_link_hash_newfunc): New function. Just pass the call through to _bfd_elf_link_hash_newfunc.
(elf32_avr_link_hash_table_create): Use elf32_avr_link_hash_newfunc instead of _bfd_elf_link_hash_newfunc.
(elf32_avr_relocate_section): Check for the hash table pointer being NULL.
(elf32_avr_relax_section, avr_build_one_stub, elf32_avr_setup_params, get_local_syms, elf32_avr_size_stubs, elf32_avr_build_stubs): Likewise.
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831
* elf-bfd.h (bfd_elf_link_mark_dynamic_symbol): Add an
argument, Elf_Internal_Sym *.
* elflink.c (bfd_elf_link_mark_dynamic_symbol): Mark a data
symbol dynamic if info->dynamic_data is TRUE.
(bfd_elf_record_link_assignment): Updated call to
bfd_elf_record_link_assignment.
(_bfd_elf_merge_symbol): Likewise. Always call
bfd_elf_link_mark_dynamic_symbol.
include/
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831
* bfdlink.h (bfd_link_info): Rename dynamic to dynamic_list.
Add dynamic and dynamic_data.
ld/
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831
* NEWS: Mention -Bsymbolic-functions, --dynamic-list-data and
--dynamic-list-cpp-new.
* ld.texinfo: Document -Bsymbolic-functions, --dynamic-list-data
and --dynamic-list-cpp-new.
* ldlang.c (lang_append_dynamic_list_cpp_new): New.
(lang_process): Change link_info.dynamic to
link_info.dynamic_list.
(lang_append_dynamic_list): Likewise.
* ldmain.c (main): Likewise. Initialize link_info.dynamic and
link_info.dynamic_data to FALSE.
* ldlang.h (lang_append_dynamic_list_cpp_new): New.
* lexsup.c (option_values): Add OPTION_DYNAMIC_LIST_DATA and
OPTION_DYNAMIC_LIST_CPP_NEW.
(ld_options): Add entries for -Bsymbolic-functions,
--dynamic-list-data and --dynamic-list-cpp-new. Make
-Bsymbolic-functions an alias of --dynamic-list-data.
(parse_args): Change link_info.dynamic to link_info.dynamic_list.
Set link_info.dynamic to TRUE for --dynamic-list and
--dynamic-list-cpp-typeinfo. Handle --dynamic-list-data and
--dynamic-list-cpp-new.
ld/testsuite/
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831
* ld-elf/del.cc: New.
* ld-elf/dl5.cc: Likewise.
* ld-elf/dl5.out: Likewise.
* ld-elf/new.cc: Likewise.
* ld-elf/shared.exp: Add tests for --dynamic-list-data and
--dynamic-list-cpp-new.
* elf.c (assign_file_positions_for_load_sections): We can
require fewer phdrs than expected.
ld/
* emultempl/elf-generic.em (gdl_map_segments): Only allow header
shrinkage for the first few iterations.
ld/testsuite/
* ld-elf/header.d: New.
* ld-elf/header.t: New.
* ld-elf/header.s: New.
* archures.c (bfd_mach_cpu32_fido): Rename to bfd_mach_fido.
* bfd-in2.h: Regenerate.
* cpu-m68k.c (arch_info_struct): Use bfd_mach_fido instead of
bfd_mach_cpu32_fido.
(m68k_arch_features): Use fido_a instead of cpu32.
(bfd_m68k_compatible): Reject the combination of Fido and
ColdFire. Accept the combination of CPU32 and Fido with a
warning.
* elf32-m68k.c (elf32_m68k_object_p,
elf32_m68k_merge_private_bfd_data,
elf32_m68k_print_private_bfd_data): Treat Fido as an
architecture by itself.
binutils/
* readelf.c (get_machine_flags): Treat Fido as an architecture
by itself.
gas/
* config/tc-m68k.c (m68k_archs, m68k_cpus): Treat Fido as an
architecture by itself.
(m68k_ip): Don't issue a warning for tbl instructions on fido.
(m68k_elf_final_processing): Treat Fido as an architecture by
itself.
include/elf/
* m68k.h (EF_M68K_FIDO): New.
(EF_M68K_ARCH_MASK): OR EF_M68K_FIDO.
(EF_M68K_CPU32_FIDO_A, EF_M68K_CPU32_MASK): Remove.
include/opcode/
* m68k.h (m68010up): OR fido_a.
opcodes/
* m68k-opc.c (m68k_opcodes): Replace cpu32 with
cpu32 | fido_a except on tbl instructions.
2006-12-29 H.J. Lu <hongjiu.lu@intel.com>
* elflink.c (elf_link_add_object_symbols): Remember the symbol
size only if it is defined.
ld/testsuite/
2006-12-29 H.J. Lu <hongjiu.lu@intel.com>
* ld-elf/wrap.exp: New file.
* ld-elf/wrap1.c: Likewise.
* ld-elf/wrap1.out: Likewise.
* ld-elf/wrap1a.c: Likewise.
* ld-elf/wrap1b.c: Likewise.
unsigned to signed.
(score_elf_final_link_relocate): Fix bugs of handling relocation type R_SCORE_GOT15,
R_SCORE_GOT_LO16, and R_SCORE_REL32.
(_bfd_score_elf_relocate_section): Handle R_SCORE_GOT_LO16 specially.
* elf.c (assign_file_positions_for_load_sections): Adjust p_vaddr
by p_vaddr_offset. Copy alignment & use if it is valid.
(rewrite_elf_program_headers): Cope with leading padding in a
segment that does not contain file or program headers.
(copy_elf_program_header): Likewise.
include/elf/
* internal.h (struct elf_segment_map): Add p_vaddr_offset field.
PR binutils/3609
* elf.c (rewrite_elf_program_header): Preserve segment physical
address in the output segment if the first section in the
corresponding input segment is null.
bfd/
* elf32-arm.c (elf32_arm_to_thumb_export_stub): Assert that output
section is present.
(allocate_dynrelocs): Only add export stub for symbols defined in
this object.
Julian Brown <julian@codesourcery.com>
bfd/
* elf32-arm.c (copy_eabi_attributes): Correct starting offset.
(elf32_arm_merge_eabi_attributes): Mark output as initialized.
Only set Tag_CPU_name and Tag_ABI_PCS_R9_use if input attribute
is present.
* elf32-xtensa.c (elf_xtensa_special_sections): Add .xtensa.info.
gas/
* config/tc-xtensa.c (XSHAL_ABI): Add default definition.
(directive_state): Disable scheduling by default.
(xtensa_add_config_info): New.
(xtensa_end): Call xtensa_add_config_info.
gas/testsuite/
* gas/elf/section2.e-xtensa: New file.
* gas/elf/elf.exp: Use it.
include/
* xtensa-config.h (XSHAL_ABI): New.
(XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): New.
ld/
* emultempl/xtensaelf.em (XSHAL_ABI): Add default definition.
(replace_insn_sec_with_prop_sec): Use bfd_make_section_with_flags.
Delete redundant code to set sections flags and alignment.
(xt_config_info_unpack_and_check, check_xtensa_info): New.
(elf_xtensa_after_open): Iterate over input statements instead of
link_info.input_bfds.
(elf_xtensa_before_allocation): Likewise. Call check_xtensa_info for
each input, and write a new .xtensa.info section in the output.
* elf.c (IS_SECTION_IN_INPUT_SEGMENT): New.
(INCLUDE_SECTION_IN_SEGMENT): Use IS_SECTION_IN_INPUT_SEGMENT.
(rewrite_elf_program_header): Don't preserve segment physical
address in the output segment if the first section in the
corresponding input segment is removed.
(cie_compare): Removed.
(cie_eq, cie_hash, cie_compute_hash): New functions.
(_bfd_elf_discard_section_eh_frame): Rewrite not to rely on FDEs
pointing only to last CIE and allow merging of any duplicate CIEs,
not just duplicate consecutive CIEs.
(_bfd_elf_discard_section_eh_frame_hdr): Delete cies hash table.
* elf-bfd.h (struct cie_header, struct cie): Removed.
(struct eh_frame_sec_info): Remove alloced field.
(struct eh_frame_hdr_info): Remove last_cie, last_cie_sec
and last_cie_inf fields. Add cies field.
* ld-elf/eh5.d: New test.
* ld-elf/eh5.s: New file.
* ld-elf/eh5a.s: New file.
* ld-elf/eh5b.s: New file.
section. Save result of checks in kept_section.
(_bfd_elf_section_already_linked): Tidy. Correct comments.
Ignore all group member sections. Handle special matching of
single-member groups against linkonce sections via their group
section. When such a match is found, set kept_section to the
group member section rather than to the group.
* pei-arm-wince.c (LOCAL_LABEL_PREFIX): Likewise.
* coff-arm.c (LOCAL_LABEL_PREFIX): Only define if not defined before.
* gas/arm/undefined.d: Run test on Windows CE.
* gas/arm/undefined_coff.d: Don't run test on Windows CE.
on error.
(find_arm_glue): Likewise.
(elf32_thumb_to_arm_stub, elf32_arm_create_thumb_stub)
(elf32_arm_to_thumb_stub, elf32_arm_final_link_relocate): Add
ERROR_MESSAGE argument and pass it through.
(elf32_arm_to_thumb_export_stub): Update.
(elf32_arm_relocate_section): Use ERROR_MESSAGE and reloc_dangerous.
(struct _ppc64_elf_section_data): Move "t_symndx" into opd union,
and rename fields. Add sec_type and has_14bit_branch.
(struct ppc_link_hash_table): Remove has_14bit_branch.
(get_opd_info, get_tls_mask, ppc64_elf_edit_opd): Adjust.
(ppc64_elf_relocate_section): Likewise.
(ppc64_elf_check_relocs): Likewise. Set per-section has_14bit_branch.
(ppc64_elf_size_stubs): Don't set default group size here.
(group_sections): Instead do so here, and group sections using
their individual requirements.
and union.
(struct ppc_link_hash_entry): Add "next_dot_sym".
(struct ppc_link_hash_table): Add "dot_syms".
(link_hash_newfunc): Make list of syms starting with a dot.
(ppc_get_stub_entry, adjust_opd_syms): Adjust.
(ppc64_elf_add_symbol_hook): Don't set has_dotsym.
(struct add_symbol_adjust_data): Delete.
(add_symbol_adjust): Simplify params and return.
(ppc64_elf_check_directives): Just process the "dot_syms" lists,
not all syms.
* elf-bfd.h (local_call_stubs): New member.
* elfxx-mips.c (FN_STUB_P, CALL_STUB_P, CALL_FP_STUB_P): New macros.
(mips_elf_calculate_relocation): Handle local mips16 call stubs.
(mips16_stub_section_p): Rename from mips_elf_stub_section_p, use
the new stub macros.
(_bfd_mips_elf_check_relocs): Handle call stubs for code which
mixes mips16 and mips32 functions. Use mips16_stub_section_p. Mark
used stubs with SEC_KEEP. Use the new stub macros.
[ gas/testsuite/ChangeLog ]
* gas/mips/mips16-intermix.d, gas/mips/mips16-intermix.s: New
testcase.
* gas/mips/mips.exp: Run new testcase.
[ ld/testsuite/ChangeLog ]
* ld-mips-elf/mips16-intermix-1.s, ld-mips-elf/mips16-intermix-2.s,
ld-mips-elf/mips16-intermix.d: New testcase.
* ld-mips-elf/mips-elf.exp (mips16_intermix_test): Run new testcases.
* elf.c (_bfd_elf_init_private_section_data): Assert output
section ELF type instead of check if it is SHT_NULL. Copy
OS/PROC specific flags from input section to output section.
* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections): Make the
size of .rel.dyn reflect the value of DT_RELSZ.
ld/testsuite/
* ld-mips-elf/multi-got-1.d: Remove trailing R_MIPS_NONE entries.
* ld-mips-elf/tls-multi-got-1.got: Likewise.
* ld-mips-elf/tls-multi-got-1.r: Likewise.
* elfxx-mips.c (_bfd_mips_elf_additional_program_headers): Allocate
a PT_NULL header for dynamic objects.
(_bfd_mips_elf_modify_segment_map): Add it.
ld/testsuite/
* ld-mips-elf/multi-got-1.d: Do not expect a particular address
for DT_HASH.
* ld-mips-elf/rel32-o32.d: Bump addresses by 0x20 to account for
the extra program header.
* ld-mips-elf/rel32-n32.d: Likewise.
* ld-mips-elf/tlslib-o32.got: Likewise.
* ld-mips-elf/tlslib-o32-hidden.got: Likewise.
* ld-mips-elf/tlslib-o32-ver.got: Likewise.
* ld-mips-elf/tls-multi-got-1.got: Likewise.
* ld-mips-elf/tls-multi-got-1.r: Likewise.
* ld-mips-elf/rel64.d: Bump addresses by 0x30 to account for the
extra program header.
* ld-mips-elf/tlsdyn-o32.d: Reduce the GOT offset by 32 to account
for the extra program header, and thus the shorter gap between the
text and data segments.
* ld-mips-elf/tlsdyn-o32-1.d: Likewise.
* ld-mips-elf/tlsdyn-o32-2.d: Likewise.
* ld-mips-elf/tlsdyn-o32-3.d: Likewise.
* ld-mips-elf/tlsdyn-o32.got: Bump GOT text addresses by 0x20
to account for the extra program header.
* ld-mips-elf/tlsdyn-o32-1.got: Likewise.
* ld-mips-elf/tlsdyn-o32-2.got: Likewise.
* ld-mips-elf/tlsdyn-o32-3.got: Likewise.
* elfxx-mips.c (sort_dynamic_relocs): Sort relocations against the
same symbol by increasing r_offset.
(sort_dynamic_relocs_64): Likewise. Fix comparisons between very
large and very small symbol indexes.
ld/testsuite/
* ld-mips-elf/tlslib-o32-hidden.got: Sort relocations against the
same symbol in order of increasing r_offset.
* ld-mips-elf/tls-multi-got-1.got: Likewise.
* ld-mips-elf/tls-hidden3.r: Likewise.
* ld-mips-elf/tls-hidden4.r: Likewise.
* elfxx-mips.c (_bfd_mips_elf_size_dynamic_sections): Add DT_DEBUG
and DT_MIPS_RLD_MAP tags for position-independent executables.
Do not add DT_DEBUG to shared libraries for any MIPS target.
ld/testsuite/
* ld-mips-elf/multi-got-1.d: Remove DT_DEBUG tag. Do not require
a specific file offset for .dynamic. Reduce DT_HASH by 8 to account
for removed tag.
* ld-mips-elf/tls-multi-got-1.r: Likewise. Also reduce DT_REL by 8.
Reduce PLTGOT and symbol values by 16 to account for the removed tag.
* ld-mips-elf/textrel-1.d: Remove DT_DEBUG tag.
* ld-mips-elf/rel32-n32.d: Reduce addresses by 16 to account for
removed DT_DEBUG tag.
* ld-mips-elf/rel64.d: Likewise.
* ld-mips-elf/tls-multi-got-1.got: Likewise.
* ld-mips-elf/tlslib-o32-hidden.got: Likewise.
* bfd/elf64-sparc.c: Add FreeBSD support.
(elf64_sparc_fbsd_post_process_headers): New function.
* bfd/targets.c (_bfd_target_vector): Add bfd_elf64_sparc_freebsd_vec.
* bfd/config.bfd (sparc64-*-freebsd*): Set targ_defvec to bfd_elf64_sparc_freebsd_vec.
* bfd/configure.in: Add entry for bfd_elf64_sparc_freebsd_vec.
* bfd/configure: Regenerate.
* gas/config/tc-sparc.c (md_parse_option): Treat any target starting with elf32-sparc
as a viable target for the -32 switch and any target starting with elf64-sparc as a
viable target for the -64 switch.
(sparc_target_format): For 64-bit ELF flavoured output use ELF_TARGET_FORMAT64
while for 32-bit ELF flavoured output use ELF_TARGET_FORMAT.
* gas/config/tc-sparc.h (ELF_TARGET_FORMAT, ELF_TARGET_FORMAT64): Define.
* ld/emulparams/elf64_sparc_fbsd.sh (OUTPUT_FORMAT): Define as elf64-sparc-freebsd.
* elf-eh-frame.c (skip_cfa_op): Fix handling of DW_CFA_advance_loc.
Handle DW_CFA_{remember,restore}_state, DW_CFA_GNU_window_save,
DW_CFA_val_{offset{,_sf},expression}.
(skip_non_nops): Record number of DW_CFA_set_loc ops.
(_bfd_elf_discard_section_eh_frame): Require skip_non_nops recognizes
all ops. If there are any DW_CFA_set_loc ops and they are pcrel
or going to be pcrel, compute set_loc array.
(_bfd_elf_eh_frame_section_offset): If make_relative, kill relocations
against DW_CFA_set_loc operands.
(_bfd_elf_write_section_eh_frame): Handle DW_CFA_set_loc adjusting.
* ld-elf/eh4.d: New test.
* ld-elf/eh4.s: New file.
* ld-elf/eh4a.s: New file.
* pei-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Enable 16 byte
alignment for .data$, .rdata$ and .text$ sections so that sse
and sse2 code will work for linkonce sections too.
* pe-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise.
2006-09-26 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
Ian Lance Taylor <ian@wasabisystems.com>
Ben Elliston <bje@wasabisystems.com>
* archures.c: Add definition for bfd_mach_arm_iWMMXt2.
* cpu-arm.c (processors): Add bfd_mach_arm_iWMMXt2.
(arch_info_struct, bfd_arm_update_notes): Likewise.
(architectures): Likewise.
(bfd_arm_merge_machines): Check for iWMMXt2.
* bfd-in2.h: Rebuild.
gas/
2006-09-26 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
Ian Lance Taylor <ian@wasabisystems.com>
Ben Elliston <bje@wasabisystems.com>
* config/tc-arm.c (arm_cext_iwmmxt2): New.
(enum operand_parse_code): New code OP_RIWR_I32z.
(parse_operands): Handle OP_RIWR_I32z.
(do_iwmmxt_wmerge): New function.
(do_iwmmxt_wldstd): Handle iwmmxt2 case where second operand is
a register.
(do_iwmmxt_wrwrwr_or_imm5): New function.
(insns): Mark instructions as RIWR_I32z as appropriate.
Also add torvsc<b,h,w>, wabs<b,h,w>, wabsdiff<b,h,w>,
waddbhus<l,m>, waddhc, waddwc, waddsubhx, wavg4{r}, wmaddu{x,n},
wmadds{x,n}, wmerge, wmiaxy{n}, wmiawxy{n}, wmul<sm,um>{r},
wmulw<um,sm,l>{r}, wqmiaxy{n}, wqmulm{r}, wqmulwm{r}, wsubaddhx.
(md_begin): Handle IWMMXT2.
(arm_cpus): Add iwmmxt2.
(arm_extensions): Likewise.
(arm_archs): Likewise.
gas/testsuite/
2006-09-26 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
Ian Lance Taylor <ian@wasabisystems.com>
Ben Elliston <bje@wasabisystems.com>
* gas/arm/iwmmxt2.s: New file.
* gas/arm/iwmmxt2.d: New file.
include/opcode/
2006-09-26 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
Ian Lance Taylor <ian@wasabisystems.com>
Ben Elliston <bje@wasabisystems.com>
* arm.h (ARM_CEXT_IWMMXT2, ARM_ARCH_IWMMXT2): Define.
opcodes/
2006-09-26 Mark Shinwell <shinwell@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
Ian Lance Taylor <ian@wasabisystems.com>
Ben Elliston <bje@wasabisystems.com>
* arm-dis.c (coprocessor_opcodes): The X-qualifier to WMADD may
only be used with the default multiply-add operation, so if N is
set, don't bother printing X. Add new iwmmxt instructions.
(IWMMXT_INSN_COUNT): Update.
(iwmmxt_wwssnames): Qualify "wwss" names at index 2, 6, 10 and 14
with a 'c' suffix.
(print_insn_coprocessor): Check for iWMMXt2. Handle format
specifiers 'r', 'i'.
argument and emits the string followed by a comma and then the length of
the string.
(CONST_STRNEQ): New macro. Checks to see if a variable string has a constant
string as its initial characters.
(CONST_STRNCPY): New macro. Copies a constant string to the start of a
variable string.
* bfd-in2.h: Regenerate.
* <remainign files>: Make use of the new macros.
* elf.c (_bfd_elf_copy_private_header_data): Fix group members
that have had their SHT_GROUP section removed.
* objcopy.c (group_signature): New function, split out from..
(setup_section): ..here.
(is_strip_section): Return true for SHT_GROUP sections that are
going to lose their group signature symbol.
2006-09-12 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3197
* elflink.c (elf_link_output_extsym): Compute bucket only if
needed.
ld/testsuite/
2006-09-12 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3197
* ld-elf/hash.d: New test.
* elf32-arm.c (elf32_arm_swap_symbol_out): Remove
unconditional setting of low bit for Thumb symbol
mistakenly left behind after check for external
symbols was added. Fix comment typo.
* elf32-xtensa.c (xtensa_get_property_section_name): Delete.
(xtensa_get_property_section): New.
(xtensa_read_table_entries): Use xtensa_get_property_section.
(relax_property_section, xtensa_get_property_predef_flags): Handle
group name suffixes in property section names.
(match_section_group): New.
gas/
* config/tc-xtensa.c (FINI_LITERAL_SECTION_NAME): Delete.
(INIT_LITERAL_SECTION_NAME): Delete.
(lit_state struct): Remove segment names, init_lit_seg, and
fini_lit_seg. Add lit_prefix and current_text_seg.
(init_literal_head_h, init_literal_head): Delete.
(fini_literal_head_h, fini_literal_head): Delete.
(xtensa_begin_directive): Move argument parsing to
xtensa_literal_prefix function.
(xtensa_end_directive): Deallocate lit_prefix field of lit_state.
(xtensa_literal_prefix): Parse the directive argument here and
record it in the lit_prefix field. Remove code to derive literal
section names.
(linkonce_len): New.
(get_is_linkonce_section): Use linkonce_len. Check for any
".gnu.linkonce.*" section, not just text sections.
(md_begin): Remove initialization of deleted lit_state fields.
(xtensa_reorder_segments, xtensa_post_relax_hook): Remove references
to init_literal_head and fini_literal_head.
(xtensa_move_literals): Likewise. Skip literals for .init and .fini
when traversing literal_head list.
(match_section_group): New.
(cache_literal_section): Rewrite to determine the literal section
name on the fly, create the section and return it.
(xtensa_switch_to_literal_fragment): Adjust for cache_literal_section.
(xtensa_switch_to_non_abs_literal_fragment): Likewise.
(xtensa_create_property_segments, xtensa_create_xproperty_segments):
Use xtensa_get_property_section from bfd.
(retrieve_xtensa_section): Delete.
* doc/c-xtensa.texi (Xtensa Options): Fix --text-section-literals
description to refer to plural literal sections and add xref to
the Literal Directive section.
(Literal Directive): Describe new rules for deriving literal section
names. Add footnote for special case of .init/.fini with
--text-section-literals.
(Literal Prefix Directive): Replace old naming rules with xref to the
Literal Directive section.
ld/
* emulparams/elf32xtensa.sh (.xt.prop): Add .xt.prop.*.
* scripttempl/elfxtensa.sc (.text): Add .literal.*.
* Makefile.am: Add rules to build pe-arm-wince.lo and pei-arm-wince.lo objects.
* Makefile.in: Regenerate.
* pe-arm-wince.c: New file.
* pei-arm-wince.c: New file.
* pei-arm.c: Remove ARM_WINCE block.
* pe-arm.c: Remove ARM_WINCE block. Rename
bfd_arm_pe_allocate_interworking_sections,
bfd_arm_pe_get_bfd_for_interworking, and
bfd_arm_pe_process_before_allocation to
bfd_armpe_allocate_interworking_sections,
bfd_armpe_get_bfd_for_interworking, and
bfd_armpe_process_before_allocation. Move them before including bfd.h.
* bfd.c: ARM wince bfd format names were renamed. Adjust.
* coff-arm.c [ARM_WINCE]: Adjust so Windows CE doesn't end up with unexpected/conflicting relocs.
* targets.c: The arm-wince-pe target got its own new vector. Adjust.
* config.bfd: Likewise.
* configure.in: Likewise.
* configure: Regenerate.
binutils
* configure.in: Split arm-pe and arm-wince-pe. Build dlltool with -DDLLTOOL_ARM_WINCE for Windows CE case.
* configure: Regenerate.
* dlltool.c: Add support for arm-wince.
gas
* Makefile.am (TARG_ENV_HFILES): Add te-wince-pe.h.
* Makefile.in: Regenerate.
* config/tc-arm.h [TARGET_FORMAT]: ARM wince bfd names were renamed. Adjust.
ld
* Makefile.am: Split arm-wince into its own emulation.
* Makefile.in: Regenerate.
* configure.tgt: Set targ_emul to arm_wince_pe for ARM Windows CE targets.
* pe-dll.c : Define PE_ARCH_arm_wince.
(pe_detail_list): Add PE_ARCH_arm_wince case.
(make_one): Handle PE_ARCH_arm_epoc and PE_ARCH_arm_wince cases.
* emulparams/arm_wince_pe.sh: New file.
* emultempl/pe.em: Handle new TARGET_IS_arm_wince_pe define.
Remap bfd_arm_allocate_interworking_sections, bfd_arm_get_bfd_for_interworking and
bfd_arm_process_before_allocation for arm-pe and arm-wince-pe targets too.
(gld_${EMULATION_NAME}_recognized_file): Handle arm-wince and arm-epoc bfd format names.
2006-08-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3015
* elf.c (get_program_header_size): Add a PT_GNU_RELRO segment
only if there is a PT_DYNAMIC segment.
(_bfd_elf_map_sections_to_segments): Likewise.
(assign_file_positions_for_load_sections): Set PT_GNU_RELRO
segment alignment to 1.
ld/testsuite/
2006-08-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3015
* ld-elf/binutils.exp: Add tests for "-z relro".
(elf32_mn10300_count_hash_table_entries): New.
(elf32_mn10300_list_hash_table_entries): New.
(sort_by_value): New.
(mn10300_elf_relax_section): Don't skip data sections; restrict
code-specific tests to code-specific areas so that potential
indirect calls can be detected. Check for multiple local symbols
at the same address and merge their flags.
(elf32_mn10300_link_hash_newfunc): Initialize value.