Age | Commit message (Collapse) | Author | Files | Lines |
|
* elf/sparc.h (R_SPARC_JMP_IREL, R_SPARC_IRELATIVE): Define.
bfd/
* reloc.c (BFD_RELOC_SPARC_JMP_IREL): New.
(BFD_RELOC_SPARC_IRELATIVE): Likewise.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Add loc_hash_table
and loc_hash_memory.
(_bfd_sparc_elf_link_hash_table_free): Declare.
* elf32-sparc.c (elf32_sparc_add_symbol_hook): New.
(elf_backend_add_symbol_hook, elf_backend_post_process_headers,
bfd_elf32_bfd_link_hash_table_free): Define.
* elf64-sparc.c (elf64_sparc_add_symbol_hook): Set
has_ifunc_symbols if STT_GNU_IFUNC.
(bfd_elf64_bfd_link_hash_table_free): Define.
(elf_backend_post_process_headers): Define always.
* elfxx-sparc.c (sparc_jmp_irel_howto, sparc_irelative_howto): New.
(sparc_reloc_map): Add entries for new IFUNC relocs.
(_bfd_sparc_elf_reloc_type_lookup): Handle new IFUNC relocs.
(_bfd_sparc_elf_info_to_howto_ptr): Likewise.
(elf_sparc_local_htab_hash, elf_sparc_local_htab_eq,
elf_sparc_get_local_sym_hash): New.
(_bfd_sparc_elf_create_dynamic_sections): Move PLT ops initialization
from here...
(_bfd_sparc_elf_link_hash_table_create): ... to here. Allocate
local hash table.
(_bfd_sparc_elf_link_hash_table_free): New.
(create_ifunc_sections): New.
(_bfd_sparc_elf_check_relocs): Unconditionally assign htab->elf.dynobj
and call create_ifunc_sections(). For local STT_GNU_IFUNC symbols
cons up a fake local hash table entry for it. Unconditionally add
a PLT refcount for STT_GNU_IFUNC symbols when h->def_regular. Count
dyn relocs for ifunc.
(_bfd_sparc_elf_adjust_dynamic_symbol): Handle ifunc.
(allocate_dynrelocs): Unconditionally emit a PLT entry when STT_GNU_IFUNC
and h->def_regular. Count GOT dyn relocs for ifunc.
(allocate_local_dynrelocs): New function.
(_bfd_sparc_elf_size_dynamic_sections): Invoke it over the local hash table.
Emit dynamic relocs to irelplt when not shared. Treat iplt like splt.
(_bfd_sparc_elf_relocate_section): Handle ifunc relocations by hand.
(_bfd_sparc_elf_finish_dynamic_symbol): Adjust for non-dynamic ifunc plt
in iplt/irelplt.
ld/testsuite/
* ld-ifunc/ifunc.exp: Run for sparc.
|
|
* targets.c (BFD_JUMP_TABLE_ARCHIVE): Add initializer for write_ar_hdr.
(bfd_target): Add _bfd_write_ar_hdr_fn field.
* archive.c (is_bsd44_extended_name): New macro.
(_bfd_generic_read_ar_hdr_mag): Use it. Add extra_size.
(bfd_slurp_armap): Also check for "__.SYMDEF" as a BSD4.4 extended
name.
(_bfd_archive_bsd44_construct_extended_name_table): New function.
(_bfd_generic_write_ar_hdr): Ditto.
(_bfd_bsd44_write_ar_hdr): Ditto.
(_bfd_write_archive_contents): Call _bfd_write_ar_hdr.
(bsd_write_armap): Adjust firstreal computation.
* libbfd-in.h (struct areltdata): Add extra_size field.
(_bfd_generic_write_ar_hdr): Add prototype.
(_bfd_bsd44_write_ar_hdr): Ditto.
(_bfd_write_ar_hdr): Define.
(_bfd_noarchive_write_ar_hdr): Ditto.
(_bfd_archive_bsd_write_ar_hdr): Ditto.
(_bfd_archive_coff_write_ar_hdr): Ditto.
(_bfd_archive_bsd44_slurp_armap): Ditto.
(_bfd_archive_bsd44_slurp_extended_name_table): Ditto.
(_bfd_archive_bsd44_construct_extended_name_table): New prototype.
(_bfd_archive_bsd44_truncate_arname): Ditto.
(_bfd_archive_bsd44_write_armap): Ditto.
(_bfd_archive_bsd44_read_ar_hdr): Ditto.
(_bfd_archive_bsd44_write_ar_hdr): Ditto.
(_bfd_archive_bsd44_openr_next_archived_file): Ditto.
(_bfd_archive_bsd44_get_elt_at_index): Ditto.
(_bfd_archive_bsd44_generic_stat_arch_elt): Ditto.
(_bfd_archive_bsd44_update_armap_timestamp): Ditto.
* libbfd.h: Regenerate.
* oasys.c (oasys_write_ar_hdr): Define.
* libecoff.h (_bfd_ecoff_write_ar_hdr): Define.
* ieee.c (ieee_write_ar_hdr): Define.
* elf64-mips.c (bfd_elf64_archive_write_ar_hdr): Define.
* coff-rs6000.c (rs6000coff_vec): Adjust for write_ar_hdr field.
(bfd_pmac_xcoff_backend_data): Ditto.
* coff64-rs6000.c (rs6000coff64_vec): Ditto.
(bfd_xcoff_aix5_backend_data): Ditto.
* coff-alpha.c (alpha_ecoff_write_ar_hdr): Define.
* aout-target.h (MY_write_ar_hdr): Define it if not defined.
* aout-tic30.c (MY_write_ar_hdr): Ditto.
* mach-o-target.c (TARGET_NAME): Use _bfd_archive_bsd44 archive.
(bfd_mach_o_mkarchive, bfd_mach_o_read_ar_hdr)
(bfd_mach_o_slurp_armap, bfd_mach_o_slurp_extended_name_table)
(bfd_mach_o_construct_extended_name_table)
(bfd_mach_o_truncate_arname, bfd_mach_o_write_armap)
(bfd_mach_o_get_elt_at_index, bfd_mach_o_generic_stat_arch_elt)
(bfd_mach_o_update_armap_timestamp): Moved to mach-o.c
* mach-o.c (bfd_mach_o_mkarchive, bfd_mach_o_read_ar_hdr)
(bfd_mach_o_slurp_armap, bfd_mach_o_slurp_extended_name_table)
(bfd_mach_o_construct_extended_name_table)
(bfd_mach_o_truncate_arname, bfd_mach_o_write_armap)
(bfd_mach_o_get_elt_at_index, bfd_mach_o_generic_stat_arch_elt)
(bfd_mach_o_update_armap_timestamp): Moved from mach-o-target.c
* bfd-in2.h: Regenerate.
|
|
* reloc.c: Add MACH_O_X86_64 relocations.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
|
|
ld/
* ldexp.c: Copy symbol type for simple assignments.
bfd/
* libbfd-in.h (_bfd_generic_copy_link_hash_symbol_type): Add
prototype.
* elf-bfd.h (_bfd_elf_copy_link_hash_symbol_type): Add prototype.
* linker.c (_bfd_generic_copy_link_hash_symbol_type): New function.
* elflink.c (_bfd_elf_copy_link_hash_symbol_type): New function.
* targets.c (BFD_JUMP_TABLE_LINK, struct bfd_target): Add
_copy_link_hash_symbol_type.
* bfd/coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Add
_bfd_generic_copy_link_hash_symbol_type.
* bfd/coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Add
_bfd_generic_copy_link_hash_symbol_type.
* aout-adobe.c (aout_32_bfd_copy_link_hash_symbol_type): Define.
* aout-target.h (MY_bfd_copy_link_hash_symbol_type): Define.
* aout-tic30.c (MY_bfd_copy_link_hash_symbol_type): Define.
* binary.c (binary_bfd_copy_link_hash_symbol_type): Define.
* bout.c (b_out_bfd_copy_link_hash_symbol_type): Define.
* coffcode.h (coff_bfd_copy_link_hash_symbol_type): Define.
* elfxx-target.h (bfd_elfNN_bfd_copy_link_hash_symbol_type): Define.
* i386msdos.c (msdos_bfd_copy_link_hash_symbol_type): Define.
* i386os9k.c (os9k_bfd_copy_link_hash_symbol_type): Define.
* ieee.c (ieee_bfd_copy_link_hash_symbol_type): Define.
* ihex.c (ihex_bfd_copy_link_hash_symbol_type): Define.
* libecoff.h (_bfd_ecoff_bfd_copy_link_hash_symbol_type): Define.
* mach-o.c (bfd_mach_o_bfd_copy_link_hash_symbol_type): Define.
* mmo.c (mmo_bfd_copy_link_hash_symbol_type): Define.
* nlm-target.h (nlm_bfd_copy_link_hash_symbol_type): Define.
* oasys.c (oasys_bfd_copy_link_hash_symbol_type): Define.
* pef.c (bfd_pef_bfd_copy_link_hash_symbol_type): Define.
* ppcboot.c (ppcboot_bfd_copy_link_hash_symbol_type): Define.
* som.c (som_bfd_copy_link_hash_symbol_type): Define.
* srec.c (srec_bfd_copy_link_hash_symbol_type): Define.
* tekhex.c (tekhex_bfd_copy_link_hash_symbol_type): Define.
* versados.c (versados_bfd_copy_link_hash_symbol_type): Define.
* vms.c (vms_bfd_copy_link_hash_symbol_type): Define.
* xsym.c (bfd_sym_bfd_copy_link_hash_symbol_type): Define.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
ld/testsuite
* ld-arm/script-type.sym: New test.
* ld-arm/script-type.s: New test.
* ld-arm/script-type.s: New test.
|
|
* Makefile.am (ALL_MACHINES): Add cpu-rx.lo.
(ALL_MACHINES_CFILES): Add cpu-rx.c.
(BFD32_BACKENDS): Add elf32-rx.lo.
(BFD32_BACKENDS_CFILES): Add elf32-rx.c.
* archures.c (bfd_architecture): Add bfd_arch_rx and bfd_mach_rx.
Export bfd_rx_arch.
(bfd_archures_list): Add bfd_rx_arch.
* config.bfd: Add entry for rx-*-elf.
* configure.in: Add entries for bfd_elf32_rx_le_vec and
bfd_elf32_rx_be_vec.
* reloc.c: Add RX relocations.
* targets.c: Add RX target vectors.
* Makefile.in: Regenerate.
* bfd-in2.h: Regenerate.
* configure: Regenerate.
* libbfd.h: Regenerate.
* cpu-rx.c: New file.
* elf32-rx.c: New file.
binutils
* readelf.c: Add support for RX target.
* MAINTAINERS: Add DJ and NickC as maintainers for RX.
gas
* Makefile.am: Add RX target.
* configure.in: Likewise.
* configure.tgt: Likewise.
* read.c (do_repeat_with_expander): New function.
* read.h: Provide a prototype for do_repeat_with_expander.
* doc/Makefile.am: Add RX target documentation.
* doc/all.texi: Likewise.
* doc/as.texinfo: Likewise.
* Makefile.in: Regenerate.
* NEWS: Mention support for RX architecture.
* configure: Regenerate.
* doc/Makefile.in: Regenerate.
* config/rx-defs.h: New file.
* config/rx-parse.y: New file.
* config/tc-rx.h: New file.
* config/tc-rx.c: New file.
* doc/c-rx.texi: New file.
gas/testsuite
* gas/rx: New directory.
* gas/rx/*: New set of test cases.
* gas/elf/section2.e-rx: New expected output file.
* gas/all/gas.exp: Add support for RX target.
* gas/elf/elf.exp: Likewise.
* gas/lns/lns.exp: Likewise.
* gas/macros/macros.exp: Likewise.
include
* dis-asm.h: Add prototype for print_insn_rx.
include/elf
* rx.h: New file.
include/opcode
* rx.h: New file.
ld
* Makefile.am: Add rules to build RX emulation.
* configure.tgt: Likewise.
* NEWS: Mention support for RX architecture.
* Makefile.in: Regenerate.
* emulparams/elf32rx.sh: New file.
* emultempl/rxelf.em: New file.
opcodes
* Makefile.am: Add RX files.
* configure.in: Add support for RX target.
* disassemble.c: Likewise.
* Makefile.in: Regenerate.
* configure: Regenerate.
* opc2c.c: New file.
* rx-decode.c: New file.
* rx-decode.opc: New file.
* rx-dis.c: New file.
|
|
|
|
* bfd/Makefile.am: Add cpu-microblaze.{lo,c}, elf32-microblaze.{lo,c}.
* bfd/Makefile.in: Same.
* bfd/archures.c: Add bfd_arch_microblaze.
* bfd/bfd-in2.h: Regenerate.
* bfd/config.bfd: Add microblaze target.
* bfd/configure: Add bfd_elf32_microblaze_vec target.
* bfd/configure.in: Same.
* bfd/cpu-microblaze.c: New.
* bfd/elf32-microblaze.c: New.
* bfd/libbfd-in.h: Add prototype _bfd_dwarf2_fixup_section_debug_loc().
* bfd/libbfd.h: Regenerate.
* bfd/reloc.c: Add MICROBLAZE relocations.
* bfd/section.c: Add struct relax_table and relax_count to section.
* bfd/targets.c: Add bfd_elf32_microblaze_vec.
* binutils/MAINTAINERS: Add self as maintainer.
* binutils/readelf.c: Include elf/microblaze.h, add EM_MICROBLAZE &
EM_MICROBLAZE_OLD to guess_is_rela(), dump_relocations(),
get_machine_name().
* config.sub: Add microblaze target.
* configure: Same.
* configure.ac: Same.
* gas/Makefile.am: add microblaze to CPU_TYPES, config/tc-microblaze.c to
TARGET_CPU_CFILES, config/tc-microblaze.h to TARGET_CPU_HFILES, add
DEP_microblaze_elf target.
* gas/Makefile.in: Same.
* gas/config/tc-microblaze.c: Add MicroBlaze assembler.
* gas/config/tc-microblaze.h: Add header for tc-microblaze.c.
* gas/configure: Add microblaze target.
* gas/configure.in: Same.
* gas/configure.tgt: Same.
* gas/doc/Makefile.am: Add c-microblaze.texi to CPU_DOCS.
* gas/doc/Makefile.in: Same.
* gas/doc/all.texi: Set MICROBLAZE.
* gas/doc/as.texinfo: Add MicroBlaze doc links.
* gas/doc/c-microblaze.texi: New MicroBlaze docs.
* include/dis-asm.h: Decl print_insn_microblaze().
* include/elf/common.h: Define EM_MICROBLAZE & EM_MICROBLAZE_OLD.
* include/elf/microblaze.h: New reloc definitions.
* ld/Makefile.am: Add eelf32mb_linux.o, eelf32microblaze.o to
ALL_EMULATIONS, targets.
* ld/Makefile.in: Same.
* ld/configure.tgt: Add microblaze*-linux*, microblaze* targets.
* ld/emulparams/elf32mb_linux.sh: New.
* ld/emulparams/elf32microblaze.sh. New.
* ld/scripttempl/elfmicroblaze.sc: New.
* opcodes/Makefile.am: Add microblaze-opc.h to HFILES, microblaze-dis.c to
CFILES, microblaze-dis.lo to ALL_MACHINES, targets.
* opcodes/Makefile.in: Same.
* opcodes/configure: Add bfd_microblaze_arch target.
* opcodes/configure.in: Same.
* opcodes/disassemble.c: Define ARCH_microblaze, return
print_insn_microblaze().
* opcodes/microblaze-dis.c: New MicroBlaze disassembler.
* opcodes/microblaze-opc.h: New MicroBlaze opcode definitions.
* opcodes/microblaze-opcm.h: New MicroBlaze opcode types.
|
|
* spu.h (R_SPU_ADD_PIC): New.
bfd/
* reloc.c (BFD_RELOC_SPU_ADD_PIC): Define.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* elf32-spu.c (elf_howto_table): Add entries SPU_ADD_PIC.
(spu_elf_bfd_to_reloc_type): Handle SPU_ADD_PIC.
(spu_elf_relocate_section): Patch instructions marked by SPU_ADD_PIC.
gas/
* config/tc-spu.c (md_apply_fix): Handle SPU_ADD_PIC.
* config/tc-spu.h (tc_fix_adjustable): Don't adjust for SPU_ADD_PIC.
(TC_FORCE_RELOCATION): Emit relocs for SPU_ADD_PIC.
ld/testsuite/
* ld-spu/pic.d: New.
* ld-spu/pic.s: New.
* ld-spu/picdef.s: New.
|
|
* reloc.c: Add BFD_RELOC_MACH_O_SECTDIFF and BFD_RELOC_MACH_O_PAIR.
* bfd-in2.h: Regenerated.
* libbfd.h: Regenerated.
* mach-o.c (FILE_ALIGN): New macro.
(bfd_mach_o_canonicalize_symtab): Adjust for bfd_mach_o_asymbol.
(bfd_mach_o_print_symbol): Ditto.
(bfd_mach_o_scan_write_thread): Adjust type of variable offset.
(bfd_mach_o_get_reloc_upper_bound): New function.
(bfd_mach_o_canonicalize_reloc): Ditto.
(bfd_mach_o_scan_write_relocs): Ditto.
(bfd_mach_o_scan_write_section_32): Remove offset argument.
(bfd_mach_o_scan_write_section_64): Ditto.
(bfd_mach_o_scan_write_segment_32): Write relocs. Fix size of data
written for load command. Do not compute section file offset.
(bfd_mach_o_scan_write_segment_64): Ditto.
(bfd_mach_o_scan_write_symtab): Compute file offset first.
Adjust for bfd_mach_o_asymbol. Move code to convert from BFD to
Mach-O to ...
(bfd_mach_o_mangle_symbols): ... this new function.
(bfd_mach_o_write_contents): Be sure to habe load commands built.
Call bfd_mach_o_mangle_symbols.
(bfd_mach_o_build_commands): Adjust for filelen field.
Use FILE_ALIGN macro. Clear section file offset if section is empty.
Do not set symtab file offset anymore here.
(bfd_mach_o_make_empty_symbol): Allocate a bfd_mach_o_asymbol.
(bfd_mach_o_make_bfd_section): Set SEC_RELOC if has reloc.
Set reloc_count and rel_filepos section fields.
(bfd_mach_o_scan_read_section_32): Type of argument offset is now
unsigned int.
(bfd_mach_o_scan_read_section_64): Ditto.
(bfd_mach_o_scan_read_section): Ditto.
(bfd_mach_o_scan_read_symtab_symbol): Typr of argument s is now
bfd_mach_o_asymbol. Use unsigned int for file offset type.
(bfd_mach_o_scan_read_symtab_symbol): Adjust for bfd_mach_o_asymbol.
Handle weak-ref symbols.
(bfd_mach_o_scan_read_symtab_symbols): Adjust for bfd_mach_o_asymbol.
(bfd_mach_o_scan_read_dysymtab_symbol): Ditto.
(bfd_mach_o_scan): Remove assignment to removed field.
(bfd_mach_o_mkobject_init): Ditto.
(bfd_mach_o_bfd_print_private_bfd_data): Adjust printf formatter.
(bfd_mach_o_bfd_reloc_type_lookup): New macro.
(bfd_mach_o_bfd_reloc_name_lookup): Ditto.
(bfd_mach_o_swap_reloc_in): Ditto.
(bfd_mach_o_swap_reloc_out): Ditto.
* mach-o.h (BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_NON_LAZY)
(BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_LAZY)
(BFD_MACH_O_REFERENCE_FLAG_DEFINED)
(BFD_MACH_O_REFERENCE_FLAG_PRIVATE_DEFINED)
(BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY)
(BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY)
(BFD_MACH_O_REFERENCED_DYNAMICALLY, BFD_MACH_O_N_DESC_DISCARDED)
(BFD_MACH_O_N_NO_DEAD_STRIP, BFD_MACH_O_N_WEAK_REF)
(BFD_MACH_O_N_WEAK_DEF): New macros.
Add comments.
(bfd_mach_o_section_type): Add new enumeration values.
(BFD_MACH_O_S_SELF_MODIFYING_CODE)
(BFD_MACH_O_S_ATTR_LIVE_SUPPORT)
(BFD_MACH_O_S_ATTR_NO_DEAD_STRIP)
(BFD_MACH_O_S_ATTR_STRIP_STATIC_SYMS, BFD_MACH_O_S_ATTR_NO_TOC): New
macros.
(BFD_MACH_O_GENERIC_RELOC_VANILLA)
(BFD_MACH_O_GENERIC_RELOC_PAIR)
(BFD_MACH_O_GENERIC_RELOC_SECTDIFF)
(BFD_MACH_O_GENERIC_RELOC_PB_LA_PTR)
(BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF): Ditto.
(BFD_MACH_O_RELENT_SIZE): Ditto.
(BFD_MACH_O_R_PCREL, BFD_MACH_O_GET_R_LENGTH)
(BFD_MACH_O_R_EXTERN, BFD_MACH_O_GET_R_TYPE)
(BFD_MACH_O_GET_R_SYMBOLNUM, BFD_MACH_O_SET_R_LENGTH)
(BFD_MACH_O_SET_R_TYPE, BFD_MACH_O_SET_R_SYMBOLNUM): Ditto.
(BFD_MACH_O_SR_SCATTERED, BFD_MACH_O_SR_PCREL)
(BFD_MACH_O_GET_SR_LENGTH, BFD_MACH_O_GET_SR_TYPE)
(BFD_MACH_O_GET_SR_ADDRESS, BFD_MACH_O_SET_SR_LENGTH)
(BFD_MACH_O_SET_SR_TYPE, BFD_MACH_O_SET_SR_ADDRESS): Ditto.
(bfd_mach_o_reloc_info): New struct.
(bfd_mach_o_asymbol): New struct.
(bfd_mach_o_symtab_command): The symbols field is now of type
bfd_mach_o_asymbol.
(bfd_mach_o_load_command): The offset and len fields are now of type
unsigned int.
(mach_o_data_struct): Remove symbols, nsymbols and ibfd fields.
Add a filelen field. Add comments.
(bfd_mach_o_backend_data): New struct.
(bfd_mach_o_get_backend_data): New macro.
(bfd_mach_o_scan_read_symtab_symbol): Parameter symbol now of type
bfd_mach_o_asymbol.
(bfd_mach_o_scan_read_dysymtab_symbol): Ditto.
(bfd_mach_o_get_reloc_upper_bound): New prototype.
(bfd_mach_o_canonicalize_reloc): Ditto.
* mach-o-target.c (bfd_mach_o_bfd_is_local_label_name): Remove
duplicated macro. Now defined to _bfd_generic_is_local_label.
(TARGET_NAME_BACKEND): New macro...
(TARGET_NAME_BACKEND): ... used to name a new variable.
(TARGET_NAME): Define relocs table using bfd_mach_o, reference
Mach-O backend data.
* mach-o-i386.c (i386_howto_table): New variable.
(bfd_mach_o_i386_swap_reloc_in): New function.
(bfd_mach_o_i386_swap_reloc_out): Ditto.
(bfd_mach_o_i386_bfd_reloc_type_lookup): Ditto.
(bfd_mach_o_i386_bfd_reloc_name_lookup): Ditto.
(bfd_mach_o_swap_reloc_in, bfd_mach_o_swap_reloc_out): New macros.
(bfd_mach_o_bfd_reloc_type_lookup)
(bfd_mach_o_bfd_reloc_name_lookup): Ditto.
|
|
|
|
* bfd-in2.h: bfd_mmap prototype
* bfdio.c (bfd_mmap): New function.
* libbfd.h (bfd_iovec): Add bmmap.
* cache.c (cache_bmap): New function.
(cache_iovec): Initialize bmmap member.
* opencls.c (opncls_bmmap): New function.
(opncls_iovec): Initialize bmmap member.
|
|
2009-06-01 H.J. Lu <hongjiu.lu@intel.com>
PR ld/10205
* elf32-i386.c (elf_howto_table): Add R_386_IRELATIVE.
(elf_i386_reloc_type_lookup): Likewise.
(R_386_tls): Removed.
(R_386_irelative): New.
(R_386_vt_offset): Updated.
(elf_i386_rtype_to_howto): Likewise.
(elf_i386_link_hash_table): Add igotplt, iplt and irelplt.
(elf_i386_link_hash_table_create): Initialize igotplt,
iplt and irelplt.
(elf_i386_check_relocs): Handle STT_GNU_IFUNC symbol first.
(elf_i386_adjust_dynamic_symbol): Likewise.
(elf_i386_allocate_dynrelocs): Likewise.
(elf_i386_relocate_section): Likewise.
(elf_i386_size_dynamic_sections): Set up .iplt and .igot.plt
sections.
(elf_i386_finish_dynamic_symbol): When building a static
executable, use .iplt, .igot.plt and .rel.iplt sections for
STT_GNU_IFUNC symbols. Generate R_386_IRELATIVE relocation for
locally defined STT_GNU_IFUNC symbol.
* elf64-x86-64.c (x86_64_elf_howto): Add R_X86_64_IRELATIVE.
(x86_64_reloc_map): Likewise.
(R_X86_64_standard): Updated.
(elf64_x86_64_link_hash_table): Add igotplt, iplt and irelplt.
(elf64_x86_64_link_hash_table_create): Initialize igotplt,
iplt and irelplt.
(elf64_x86_64_check_relocs): Handle STT_GNU_IFUNC symbol first.
(elf64_x86_64_adjust_dynamic_symbol): Likewise.
(elf64_x86_64_allocate_dynrelocs): Likewise.
(elf64_x86_64_relocate_section): Likewise.
(elf64_x86_64_size_dynamic_sections): Set up .iplt and .igot.plt
sections.
(elf64_x86_64_finish_dynamic_symbol): When building a static
executable, use .iplt, .igot.plt and .rela.iplt sections for
STT_GNU_IFUNC symbols. Generate R_X86_64_IRELATIVE relocation
for locally defined STT_GNU_IFUNC symbol.
* reloc.c (BFD_RELOC_386_IRELATIVE): New.
(BFD_RELOC_X86_64_IRELATIVE): Likewise.
* bfd-in2.h: Regenerated.
* libbfd.h: Likewise.
include/elf/
2009-06-01 H.J. Lu <hongjiu.lu@intel.com>
PR ld/10205
* i386.h (R_386_IRELATIVE): New.
* x86-64.h (R_X86_64_IRELATIVE): Likewise.
ld/testsuite/
2009-06-01 H.J. Lu <hongjiu.lu@intel.com>
PR ld/10205
* ld-ifunc/ifunc.exp (contains_irelative_reloc): New.
Use it on executable and shared library.
Run *.d.
* ld-ifunc/lib.c: Add a hidden alias, __GI_library_func2, for
library_func2.
(library_func): New.
* ld-ifunc/ifunc-1-x86.d: New.
* ld-ifunc/ifunc-1-x86.s: Likewise.
* ld-ifunc/ifunc-2-i386.d: Likewise.
* ld-ifunc/ifunc-2-i386.s: Likewise.
* ld-ifunc/ifunc-2-x86-64.d: Likewise.
* ld-ifunc/ifunc-2-x86-64.s: Likewise.
* ld-ifunc/ifunc-3a-x86.d: Likewise.
* ld-ifunc/ifunc-3b-x86.d: Likewise.
* ld-ifunc/ifunc-3-x86.s: Likewise.
* ld-ifunc/ifunc-4-x86.d: Likewise.
* ld-ifunc/ifunc-4-x86.s: Likewise.
* ld-ifunc/ifunc-5-i386.d: Likewise.
* ld-ifunc/ifunc-5-i386.s: Likewise.
* ld-ifunc/ifunc-5-x86-64.d: Likewise.
* ld-ifunc/ifunc-5-x86-64.s: Likewise.
|
|
* aout-adobe.c (aout_32_bfd_define_common_symbol): Define.
* aout-target.h (MY_bfd_define_common_symbol): Likewise.
* aout-tic30.c (MY_bfd_define_common_symbol): Likewise.
* binary.c (binary_bfd_define_common_symbol): Likewise.
* bout.c (b_out_bfd_define_common_symbol): Likewise.
* coff-alpha.c (_bfd_ecoff_bfd_define_common_symbol): Likewise.
* coff-mips.c (_bfd_ecoff_bfd_define_common_symbol): Likewise.
* coffcode.h (coff_bfd_define_common_symbol): Likewise.
* elfxx-target.h (bfd_elfNN_bfd_define_common_symbol): Likewise.
* i386msdos.c (msdos_bfd_define_common_symbol): Likewise.
* i386os9k.c (os9k_bfd_define_common_symbol): Likewise.
* ieee.c (ieee_bfd_define_common_symbol): Likewise.
* ihex.c (ihex_bfd_define_common_symbol): Likewise.
* libbfd-in.h (_bfd_nolink_bfd_define_common_symbol): Likewise.
* mach-o.c (bfd_mach_o_bfd_define_common_symbol): Likewise.
* mmo.c (mmo_bfd_define_common_symbol): Likewise.
* nlm-target.h (nlm_bfd_define_common_symbol): Likewise.
* oasys.c (oasys_bfd_define_common_symbol): Likewise.
* pef.c (bfd_pef_bfd_define_common_symbol): Likewise.
* ppcboot.c (ppcboot_bfd_define_common_symbol): Likewise.
* som.c (som_bfd_define_common_symbol): Likewise.
* srec.c (srec_bfd_define_common_symbol): Likewise.
* tekhex.c (tekhex_bfd_define_common_symbol): Likewise.
* versados.c (versados_bfd_define_common_symbol): Likewise.
* vms.c (vms_bfd_define_common_symbol): Likewise.
* xcoff-target.h (_bfd_xcoff_bfd_define_common_symbol): Likewise.
* xsym.c (bfd_sym_bfd_define_common_symbol): Likewise.
* coff-rs6000.c (rs6000coff_vec): Add _bfd_xcoff_define_common_symbol.
(pmac_xcoff_vec): Likewise.
* coff64-rs6000.c (rs6000coff64_vec): Likewise.
(aix5coff64_vec): Likewise.
* linker.c (bfd_generic_define_common_symbol): New function.
* targets.c (BFD_JUMP_TABLE_LINK): Add NAME##_bfd_define_common_symbol.
(_bfd_define_common_symbol): New field.
* libcoff-in.h (_bfd_xcoff_define_common_symbol): Declare.
* xcofflink.c (_bfd_xcoff_define_common_symbol): New function.
(xcoff_build_ldsyms): Don't set XCOFF_DEF_REGULAR for common
symbols here.
* bfd-in2.h: Regenerate.
* libbfd.h: Likewise.
* libcoff.h: Likewise.
ld/
* ldlang.c (lang_one_common): Use bfd_define_common_symbol.
ld/testsuite/
* ld-powerpc/aix-export-2.s, ld-powerpc/aix-export-2.nd: New test.
* ld-powerpc/aix52.exp: Run it.
|
|
* ppc.h (R_PPC_TLSGD, R_PPC_TLSLD): Add new relocs.
* ppc64.h (R_PPC64_TLSGD, R_PPC64_TLSLD): Add new relocs.
bfd/
* reloc.c (BFD_RELOC_PPC_TLSGD, BFD_RELOC_PPC_TLSLD): New.
* section.c (struct bfd_section): Add has_tls_get_addr_call.
(BFD_FAKE_SECTION): Init new flag.
* ecoff.c (bfd_debug_section): Likewise.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* elf32-ppc.c (ppc_elf_howto_raw): Add R_PPC_TLSGD and R_PPC_TLSLD.
(ppc_elf_reloc_type_lookup): Handle new relocs.
(ppc_elf_check_relocs): Set has_tls_get_addr_call on finding such
without marker relocs.
(ppc_elf_tls_optimize): Allow out-of-order __tls_get_addr relocs
if section has no old-style calls.
(ppc_elf_relocate_section): Set tls_mask for non-tls relocs too.
Don't try to optimize new-style __tls_get_addr call when handling
arg setup relocs. Instead do so for R_PPC_TLSGD and R_PPC_TLSLD
relocs.
* elf64-ppc.c (ppc64_elf_howto_raw): Add R_PPC64_TLSGD, R_PPC64_TLSLD.
(ppc64_elf_reloc_type_lookup): Handle new relocs.
(ppc64_elf_check_relocs): Set has_tls_get_addr_call on finding such
without marker relocs.
(ppc64_elf_tls_optimize): Allow out-of-order __tls_get_addr relocs
if section has no old-style calls. Set toc_ref for new relocs as
appropriate.
(ppc64_elf_relocate_section): Set tls_mask for non-tls relocs too.
Don't try to optimize new-style __tls_get_addr call when handling
arg setup relocs. Instead do so for R_PPC_TLSGD and R_PPC_TLSLD
relocs.
gas/
* config/tc-ppc.c (ppc_elf_suffix): Error if ppc32 tls got relocs
have non-zero addend.
(md_assemble): Parse args of __tls_get_addr calls.
(md_apply_fix): Handle BFD_RELOC_PPC_TLSGD and BFD_RELOC_PPC_TLSLD.
ld/testsuite/
* ld-powerpc/tlsmark.s, * ld-powerpc/tlsmark.d: New test.
* ld-powerpc/tlsmark32.s, * ld-powerpc/tlsmark32.d: New test.
* ld-powerpc/powerpc.exp: Run them.
|
|
|
|
* vms.h: Update copyright year, fix comments, reorder declarations.
(_bfd_save_vms_section): Remove the prototype.
(EGPS_S_V_NO_SHIFT): New constant.
(bfd_vms_set_section_flags): New prototype.
(EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New
constants.
(EGSY_S_W_FLAGS): Ditto.
(EGSY_S_V_QUAD_VAL): Ditto.
(ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto.
(EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX,
EGST_S_B_NAMLNG): Ditto.
(ESRF_S_B_NAMLNG): Ditto.
(ETIR_S_C_HEADER_SIZE): Ditto.
(EGPS_S_V_ALLOC_64BIT): Ditto.
(DST_S_C_EPILOG): Ditto.
(DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto.
(DST_S_C_SRC_INCRLNUM_B): Ditto.
(DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto.
(DST_S_L_PCLINE_UNSLONG): Ditto.
(DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto
(DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto
(DST_S_C_SOURCE_HEADER_SIZE): Ditto.
(DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto.
(DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto.
(DST_S_B_SRC_UNSBYTE): Ditto.
(DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto.
Add prototypes.
(vms_section, vms_reloc): Remove types.
(hdr_struc): Replaced by ...
(hdr_struct): ... new type.
(EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants.
(EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto.
(EMH_DATE_LENGTH): Ditto.
(eom_struc): Replaced by ...
(eom_struct): ... new type.
(EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants.
(EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto.
(EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto.
(EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto.
(EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto.
(EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto.
(EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto.
(EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto.
(EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto.
(EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto.
(EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto.
(EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto.
(EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto.
(EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto.
(EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto.
(DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto.
(DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto.
(DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH)
(DBG_S_C_DMT_PSECT_SIZE): Ditto.
(enum file_type_enum): New type.
(struct location_struct): Removed.
(struct fileinfo, struct srecinfo, struct lineinfo): New types.
(struct funcinfo, struct module): Ditto.
(struct vms_private_data_struct): Update fields.
(struct vms_section_data_struct): New type.
* vms.c: Update copyright year, fix comments,
Fix includes for DECC, add prototypes.
(vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove
some initializers.
Use flavour to set is_vax, location_stack is removed.
(struct pair): Declare.
(fill_section_ptr): Initialize variables at declaration.
Add guard to set SECTION_SYM flag, handlde und section.
(vms_fixup_sections): Use struct pair for fill_section_ptr argument.
(_bfd_vms_slurp_object_records): New function, replaces previous
vms_object_p.
(vms_slurp_module): New function.
(vms_slurp_image): Ditto.
(vms_object_p): Complete rewrite.
(vms_mkobject): Use is_vax field to slect architecture.
(free_reloc_stream): New function.
(vms_convert_to_var): Ditto.
(vms_convert_to_var_1): Ditto.
(vms_convert_to_var_unix_filename): Ditto.
(vms_close_and_cleanup): Call free_reloc_stream, convert file to
VAR format on VMS.
(vms_new_section_hook): Set alignment to 0, allocate private data.
(vms_get_section_contents): Load content.
(vms_get_symbol_info): Handle undefined section.
(vms_find_nearest_line): Handle.
(alloc_reloc_stream): New function.
(vms_slurp_reloc_table): Ditto.
(vms_get_reloc_upper_bound): Make it real.
(vms_canonicalize_reloc): Do the real work.
(alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA,
ALPHA_R_BOH.
(vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH.
(vms_set_arch_mach): Check arch.
(vms_set_section_contents): Copy the content after allocation.
(vms_alpha_vec): Update object flags.
* vms-tir.c: Update copyright year, fix comments,
add prototypes for new functions.
(dst_define_location): New function.
(dst_restore_location): New function.
(dst_retrieve_location): New function.
(dst_check_allocation): New function.
(image_dump): Call dst_check_allocation.
(image_write_b): Ditto.
(image_write_w): Ditto.
(image_write_l): Ditto.
(image_write_q): Ditto.
(cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW,
STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC,
CTL_STKDL.
Call error handler instead of abort if name is not known.
(etir_sta): Add quarter_relocs argument and set it.
Fix cast.
(etir_sto): Ditto.
(etir_opr): Ditto, return FALSE in case of error.
(etir_ctl): Add quarter_relocs argument and set it, fix cast.
Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL.
(etir_stc): Add quarter_relocs argument and set it, fix cast.
Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA.
Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL.
Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS.
Return FALSE in case of error.
(tir_sta): Change sign of psect.
(tir_ctl): Ditto.
(tir_cmd): Fix cast. Makes tir_table static const.
(etir_cmd): Add quarter_relocs argument, makes etir_table const,
add argument to explain.
(analyze_etir): Initialize maxptr, add quarter_relocs
declaration, move some declarations into inner scopes.
Handle quarter_relocs and STO_IMM.
(_bfd_vms_slurp_tir): Use constant instead of hard-coded values.
(_bfd_vms_slurp_relocs): New function.
(_bfd_vms_decode_relocs): New function.
(sto_imm): Rewritten.
(start_first_etbt_record): New function.
(start_another_etbt_record): Ditto.
(etir_output_check): Ditto.
(defer_reloc_p): Ditto.
(_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to
a for-loop. Correctly deals with contents, deals with .vmsdebug,
rewritte relocations handling.
(_bfd_vms_write_tbt): Removed.
(_bfd_vms_write_dbg): Ditto.
* vms-misc.c: Update copyright year, Fix comments.
(_bfd_vms_get_header_values): Use 'size' instead of 'length'.
(maybe_adjust_record_pointer_for_object): New function.
(_bfd_vms_get_first_record): New function, replaces ...
(_bfd_vms_get_record): .. removed.
(_bfd_vms_get_object_record): New function.
(_bfd_vms_get_object_record): New function.
(vms_get_remaining_object_record): New function, replaces ...
(_bfd_vms_get_next_record): ... removed.
(add_new_contents): Removed.
(_bfd_save_vms_section): Removed.
(_bfd_get_vms_section): Removed.
(_bfd_vms_output_flush): Write in VAR format.
(new_symbol): Don't make UND section.
* vms-hdr.c: Update copyright year, update list of record handled.
(_bfd_vms_slurp_hdr): rec_length renamed to rec_size.
(_bfd_vms_write_hdr): Strip vms and unix patches,
add comments, truncate module name at 31 characters,
use constants instead of hard-coded value,
write BFD version instead of a fixed string.
(_bfd_vms_slurp_ihd): New function.
(_bfd_vms_slurp_isd): Ditto.
(_bfd_vms_slurp_ihs): Ditto.
(new_module): Ditto.
(parse_module): Ditto
(build_module_list): Ditto.
(module_find_nearest_line): Ditto.
(_bfd_vms_find_nearest_dst_line): Ditto.
(vms_slurp_debug): Ditto.
(_bfd_vms_slurp_dbg): Ditto.
(_bfd_vms_slurp_tbt): Ditto.
(_bfd_vms_write_dbg): Ditto.
(_bfd_vms_write_tbt): Ditto.
* vms-gsd.c: Update copyright year, update list of records handled.
(EVAX_LITERALS_NAME): New macro.
(evax_section_flags): Add an entry for EVAX_LITERALS_NAME.
(gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd.
(register_universal_symbol): New function and prototype.
(_bfd_vms_slurp_gsd): Fix indentations and casts,
improve debug messages,
use constants instead of hard-coded value,
fix missing endianness conversion,
handle global symbol (SYMG).
(bfd_vms_set_section_flags): New function.
(_bfd_vms_write_gsd): Don't write .vmsdebug section,
handle section literals,
fix indentation,
handle section bfd and vms flags,
don't output LIB$INITIALIZE symbol,
fix handling of weak symbols,
fix evax vs vax procedure descriptor,
handle absolute symbols.
* reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR,
BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations.
* makefile.vms (DEFS): Fix flags for VMS.
* bfdio.c (real_fopen): Handle multiple VMS fopen attributes.
* bfd-in2.h: Regenerated.
* libbfd.h: Regenerated.
|
|
ld/testsuite/
* ld-m68k/got-multigot-12-13-14-34-35-ok.d: Update.
* ld-m68k/got-multigot-14-ok.d: Update.
* ld-m68k/m68k-got.exp: Update.
* ld-m68k/got-negative-12-13-14-34-ok.d: Update.
* ld-m68k/got-negative-14-ok.d: Update.
* ld-m68k/tls-gd-1.d, ld-m68k/tls-gd-2.d: New tests.
* ld-m68k/tls-gd-ie-1.d, ld-m68k/tls-ie-1.d: New tests.
* ld-m68k/tls-ld-1.d, ld-m68k/tls-ld-2.d: New tests.
* ld-m68k/tls-ld-1.s, ld-m68k/tls-ld-2.s, ld-m68k/tls-le-1.s:
New test sources.
* ld-m68k/tls-no-1.s, ld-m68k/tls-gd-ie-1.s, ld-m68k/tls-gd-1.s:
New test sources.
* ld-m68k/tls-gd-2.s, ld-m68k/tls-ie-1.s: New test sources.
* ld-m68k/m68k.exp: Run new tests.
(merge isa-a isa-a:nodiv): Fix.
gas/testsuite/
* gas/m68k/tls-gd-3.d, gas/m68k/tls-gd-3.s: New test.
* gas/m68k/all.exp: Run it.
gas/
* config/m68k-parse.h (enum pic_relocation): Add values for TLS
relocations.
* config/m68k-parse.y (yylex): Parse TLS relocations.
* config/tc-m68k.c (m68k_elf_cons): New static function.
(md_pseudo_table): Use it.
(get_reloc_code, tc_m68k_fix_adjustable, tc_gen_reloc): Handle TLS
relocations.
(md_apply_fix): Fix to set thread local flag.
(m68k_elf_suffix): New static function; helper for m68k_elf_cons.
include/elf/
* m68k.h: Map TLS relocations to numbers.
bfd/
* bfd-in2.h: Regenerate.
* elf32-m68k.c: Handle 2-slot GOT entries. Rename variables and
fields from n_entries to n_slots where appropriate, update comments.
(HOWTO): Add TLS relocations.
(reloc_map): Map BFD_RELOC_68K_TLS_* to R_68K_TLS_*.
(enum elf_m68k_got_offset_size): New enum.
(struct elf_m68k_got_entry.type): Move field to ...
(struct elf_m68k_got_entry_key): ... here. Update all uses.
(elf_m68k_reloc_got_type, elf_m68k_reloc_got_offset_size): New static
functions.
(elf_m68k_reloc_got_n_entries, elf_m68k_reloc_tls_p): New static
functions.
(struct elf_m68k_got): merge rel_8o_n_entries and rel_8o_16o_n_entries
fields into n_entries array. Update comments.
(elf_m68k_init_got): Simplify, update all uses.
(elf_m68k_init_got_entry_key): Handle R_68K_TLS_LDM32 reloc, update.
(ELF_M68K_REL_8O_MAX_N_ENTRIES_IN_GOT): Adjust to handle 2-slot
GOT entries; update name, update all uses.
(ELF_M68K_REL_8O_16O_MAX_N_ENTRIES_IN_GOT): Ditto.
(elf_m68k_get_got_entry): Update.
(elf_m68k_update_got_entry_type): Rewrite to handle TLS GOT entries,
simplify.
(elf_m68k_remove_got_entry_type): Simplify.
(elf_m68k_add_entry_to_got, elf_m68k_can_merge_gots_1): Update.
(elf_m68k_can_merge_gots): Update.
(elf_m68k_merge_gots_1, elf_m68k_merge_gots): Update.
(struct elf_m68k_finalize_got_offsets_arg): Rewrite to handle 2-slot
GOT entries, simplify.
(elf_m68k_finalize_got_offsets_1, elf_m68k_finalize_got_offsets): Same.
(struct elf_m68k_partition_multi_got_arg): Add slots_relas_diff
field, remove obsoleted local_n_entries field.
(elf_m68k_partition_multi_got_2): New static function.
(elf_m68k_partition_multi_got_1, elf_m68k_partition_multi_got): Use it;
update.
(elf_m68k_remove_got_entry_type): Update.
(elf_m68k_install_rela, dtpoff_base, tpoff): New static functions.
(elf_m68k_check_relocs): Handle TLS relocations. Remove unnecessary
update of sgot->size and srelgot->size.
(elf_m68k_gc_sweep_hook): Update.
(elf_m68k_install_rela, dtpoff_base, tpoff): New static functions.
(elf_m68k_relocate_section, elf_m68k_finish_dynamic_symbol): Handle
TLS relocations.
* reloc.c (BFD_RELOC_68K_TLS_*): Declare TLS relocations.
* libbfd.h (bfd_reloc_code_real_names): Add BFD_RELOC_68K_TLS_*.
|
|
(bfd_elf_find_section, _sh_elf_set_mach_from_flags): Likewise.
* elf.c (bfd_elf_get_str_section): Make static.
(bfd_elf_find_section): Delete.
* libbfd.h: Regenerate.
|
|
|
|
(cris_reloc_map): Similarly.
(cris_elf_relocate_section, cris_elf_gc_sweep_hook)
(cris_elf_check_relocs): Handle R_CRIS_32_IE.
* reloc.c (bfd_reloc_code_type): Add entry for R_CRIS_32_IE.
* bfd-in2.h, libbfd.h: Regenerate.
|
|
* elf32-cr16.c (R_CR16_GOT_REGREL20, R_CR16_GOTC_REGREL20 and
R_CR16_GLOB_DAT): New macros
(cr16_elf_howto_table): Add entries for for R_CR16_GOT_REGREL20,
R_CR16_GOTC_REGREL20 and R_CR16_GLOB_DAT.
(cr16_reloc_map): Ditto
(_bfd_cr16_elf_create_got_section): New function to create GOT section.
(_bfd_cr16_elf_create_dynamic_sections): New function to create dynamic
section.
(_bfd_cr16_elf_adjust_dynamic_symbol): New function to adjust symbol
defined by dynamic object.
(_bfd_cr16_elf_size_dynamic_sections): New function to find the size
of dynamic section.
(_bfd_cr16_elf_finish_dynamic_symbol): New function to handle dynamic
symbols.
(_bfd_cr16_elf_finish_dynamic_symbol): New function to handle dynamic
sections.
(bfd_cr16_elf32_create_embedded_relocs): New function to create
embedded relocs in .emreloc section in memory for .data.rel section.
(_bfd_cr16_elf_reloc_type_class): New function for classify reloc types.
(cr16_elf_check_relocs): New function for checking reloc types in
first phase.
(cr16_elf_final_link_relocate): Update for handling the new reloc
types R_CR16_GOT_REGREL20 and R_CR16_GOTC_REGREL20.
(elf32_cr16_relax_section): Update relax implementation.
* reloc.c (bfd_reloc_code_type): Add entries for R_CR16_GOT_REGREL20,
R_CR16_GOTC_REGREL20 and R_CR16_GLOB_DAT.
* bfd-in.h (bfd_boolean bfd_cr16_elf32_create_embedded_relocs): Declared
* libbfd.h, bfd-in2.h: Regenerate.
|
|
(cris_elf_howto_table): Add entries for R_CRIS_32_GOT_GD,
R_CRIS_16_GOT_GD, R_CRIS_32_GD, R_CRIS_DTP, R_CRIS_32_DTPREL,
R_CRIS_16_DTPREL, R_CRIS_DTPMOD, R_CRIS_32_GOT_TPREL,
R_CRIS_16_GOT_TPREL, R_CRIS_32_TPREL, R_CRIS_16_TPREL.
(cris_reloc_map): Similarly.
* reloc.c (bfd_reloc_code_type): Add entries for
BFD_RELOC_CRIS_32_GOT_GD, BFD_RELOC_CRIS_16_GOT_GD,
BFD_RELOC_CRIS_32_GD, BFD_RELOC_CRIS_DTP,
BFD_RELOC_CRIS_32_DTPREL, BFD_RELOC_CRIS_16_DTPREL,
BFD_RELOC_CRIS_DTPMOD, BFD_RELOC_CRIS_32_GOT_TPREL,
BFD_RELOC_CRIS_16_GOT_TPREL, BFD_RELOC_CRIS_32_TPREL,
BFD_RELOC_CRIS_16_TPREL.
* libbfd.h, bfd-in2.h: Regenerate.
|
|
bfd/
* elf-bfd.h (elf_object_id): Add XTENSA_ELF_TDATA.
* elf32-xtensa.c (elf_howto_table): Add TLS relocations.
(elf_xtensa_reloc_type_lookup): Likewise.
(TCB_SIZE): Define.
(elf_xtensa_link_hash_entry): New.
(GOT_UNKNOWN, GOT_NORMAL, GOT_TLS_GD, GOT_TLS_IE, GOT_TLS_ANY): Define.
(elf_xtensa_hash_entry): Define.
(elf_xtensa_obj_tdata): New.
(elf_xtensa_tdata): Define.
(elf_xtensa_local_got_tls_type): Define.
(elf_xtensa_local_tlsfunc_refcounts): Define.
(is_xtensa_elf): Define.
(elf_xtensa_mkobject): New.
(elf_xtensa_link_hash_table): Add tlsbase field.
(elf_xtensa_link_hash_newfunc): New.
(elf_xtensa_link_hash_table_create): Use elf_xtensa_link_hash_newfunc.
Create an entry for "_TLS_MODULE_BASE_" and save it in tlsbase field.
(elf_xtensa_copy_indirect_symbol): New.
(elf_xtensa_check_relocs): Rewrite to handle TLS relocations.
(elf_xtensa_gc_sweep_hook): Likewise.
(elf_xtensa_allocate_dynrelocs): Optimize away GOT entries for
TLSDESC_FN relocations when an IE reference is seen.
(elf_xtensa_allocate_local_got_size): Likewise.
(elf_xtensa_always_size_sections): New.
(dtpoff_base, tpoff): New.
(elf_xtensa_do_reloc): Handle TLS relocations.
(replace_tls_insn): New.
(IS_XTENSA_TLS_RELOC): Define.
(elf_xtensa_relocate_section): Handle TLS relocations.
(get_indirect_call_dest_reg): New.
(bfd_elf32_mkobject): Define.
(elf_backend_always_size_sections): New.
(elf_backend_copy_indirect_symbol): New.
* reloc.c (BFD_RELOC_XTENSA_TLSDESC_FN, BFD_RELOC_XTENSA_TLSDESC_ARG)
(BFD_RELOC_XTENSA_TLS_DTPOFF, BFD_RELOC_XTENSA_TLS_TPOFF)
(BFD_RELOC_XTENSA_TLS_FUNC, BFD_RELOC_XTENSA_TLS_ARG)
(BFD_RELOC_XTENSA_TLS_CALL): New.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
gas/
* config/tc-xtensa.c (O_tlsfunc, O_tlsarg, O_tlscall): Define.
(O_tpoff, O_dtpoff): Define.
(suffix_relocs): Add entries for TLS suffixes.
(xtensa_elf_cons): Check for invalid use of TLS relocations.
(map_operator_to_reloc): Add is_literal parameter and use it to
control translating TLS instruction relocations to the corresponding
literal relocations.
(xg_valid_literal_expression): Allow TLS operators.
(xg_build_to_insn): Copy TLS operators from pseudo-instruction
operands to generated literals.
(xg_assemble_literal): Handle TLS operators. Update call to
map_operator_to_reloc.
(md_assemble): Handle CALLXn.TLS pseudo-instruction.
(md_apply_fix): Handle TLS relocations.
(emit_single_op): Handle TLS operators.
(convert_frag_immed): Update call to map_operator_to_reloc.
(vinsn_to_insnbuf): Emit relocations for TLS-related instructions.
* config/xtensa-istack.h (tinsn_struct): Add tls_reloc field.
* config/xtensa-relax.c (append_literal_op): Add src_op parameter
to initialize the op_data field of the BuildOp.
(build_transition): Use it here to record the source operand
corresponding to a generated literal.
* config/xtensa-relax.h (build_op): Comment op_data use for literals.
include/elf/
* xtensa.h (R_XTENSA_TLSDESC_FN, R_XTENSA_TLSDESC_ARG)
(R_XTENSA_TLS_DTPOFF, R_XTENSA_TLS_TPOFF, R_XTENSA_TLS_FUNC)
(R_XTENSA_TLS_ARG, R_XTENSA_TLS_CALL): New.
ld/testsuite/
* ld-xtensa/tlsbin.dd, ld-xtensa/tlsbin.rd, ld-xtensa/tlsbin.s,
ld-xtensa/tlsbin.sd, ld-xtensa/tlsbin.td, ld-xtensa/tlslib.s,
ld-xtensa/tlspic.dd, ld-xtensa/tlspic.rd, ld-xtensa/tlspic.sd,
ld-xtensa/tlspic.td, ld-xtensa/tlspic1.s, ld-xtensa/tlspic2.s: New.
* ld-xtensa/xtensa.exp: Run them.
|
|
* reloc.c (BFD_RELOC_MIPS16_GOT16, BFD_RELOC_MIPS16_CALL16): Declare.
* libbfd.h, bfd-in2.h: Regenerate.
* elf32-mips.c (elf_mips16_howto_table_rel): Fill in reserved
R_MIPS16_GOT16 and R_MIPS16_CALL16 entries.
(mips16_reloc_map): Add mappings.
* elf64-mips.c (mips16_elf64_howto_table_rel): Fill in reserved
R_MIPS16_GOT16 and R_MIPS16_CALL16 entries.
(mips16_elf64_howto_table_rela): Likewise.
(mips16_reloc_map): Add mappings.
* elfn32-mips.c (elf_mips16_howto_table_rel): Fill in reserved
R_MIPS16_GOT16 and R_MIPS16_CALL16 entries.
(elf_mips16_howto_table_rela): Likewise.
(mips16_reloc_map): Add mappings.
* elfxx-mips.c (mips_elf_create_shadow_symbol): New function.
(section_allows_mips16_refs_p): Likewise.
(mips16_stub_symndx): Likewise.
(mips_elf_check_mips16_stubs): Treat the data argument as a
bfd_link_info. Mark every dynamic symbol as needing MIPS16 stubs
and create a "shadow" symbol for the original MIPS16 definition.
(mips16_reloc_p, got16_reloc_p, call16_reloc_p, hi16_reloc_p)
(lo16_reloc_p, mips16_call_reloc_p): New functions.
(_bfd_mips16_elf_reloc_unshuffle): Use mips16_reloc_p to generalize
relocation checks.
(_bfd_mips16_elf_reloc_shuffle): Likewise.
(_bfd_mips_elf_lo16_reloc): Handle R_MIPS16_GOT16.
(mips_elf_got16_entry): Add comment.
(mips_elf_calculate_relocation): Use hi16_reloc_p,
lo16_reloc_p, mips16_call_reloc_p, call16_reloc_p and got16_reloc_p
to generalize relocation checks. Use section_allows_mips16_refs_p
instead of mips16_stub_section_p. Handle R_MIPS16_CALL16 and
R_MIPS16_GOT16, allowing the former to refer directly to a
MIPS16 function if its stub is not needed.
(mips16_stub_section_p): Delete.
(_bfd_mips_elf_symbol_processing): Convert odd-valued function
symbols into even MIPS16 symbols.
(mips_elf_add_lo16_rel_addend): Use mips16_reloc_p to generalize
a relocation check.
(_bfd_mips_elf_check_relocs): Calculate "bed" and "rel_end"
earlier in the function. Use mips16_stub_symndx to identify
the target function. Avoid out-of-bounds accesses when the
stub has no relocations; report an error instead. Use
section_allows_mips16_refs_p instead of mips16_stub_section_p.
Use mips16_call_reloc_p and got16_reloc_p to generalize relocation
checks. Handle R_MIPS16_CALL16 and R_MIPS16_GOT16. Don't create
dynamic relocations for absolute references to __gnu_local_gp.
(_bfd_mips_elf_always_size_sections): Pass a bfd_link_info as
the argument to mips_elf_check_mips16_stubs. Generalize comment.
(_bfd_mips_elf_relocate_section): Use hi16_reloc_p and got16_reloc_p
to generalize relocation checks.
(_bfd_mips_elf_finish_dynamic_symbol): If a dynamic MIPS16 function
symbol has a non-MIPS16 stub, redirect the symbol to the stub.
Fix an overly long line. Don't give dynamic symbols type STO_MIPS16.
(_bfd_mips_elf_gc_sweep_hook): Handle R_MIPS16_CALL16 and
R_MIPS16_GOT16.
gas/
* config/tc-mips.c (mips16_reloc_p, got16_reloc_p, hi16_reloc_p)
(lo16_reloc_p): New functions.
(reloc_needs_lo_p): Use hi16_reloc_p and got16_reloc_p to
generalize relocation checks.
(matching_lo_reloc): New function.
(fixup_has_matching_lo_p): Use it.
(mips16_mark_labels): Don't clobber a symbol's visibility.
(append_insn): Use hi16_reloc_p and lo16_reloc_p.
(mips16_ip): Handle BFD_RELOC_MIPS16_GOT16 and BFD_RELOC_MIPS16_CALL16.
(md_apply_fix): Likewise.
(mips16_percent_op): Add %got and %call16.
(mips_frob_file): Use got16_reloc_p to generalize relocation checks.
Use matching_lo_reloc.
(mips_force_relocation): Use hi16_reloc_p and lo16_reloc_p to
generalize relocation checks.
(mips_fix_adjustable): Use lo16_reloc_p to generalize relocation
checks.
gas/testsuite/
* gas/mips/elf-rel8-mips16.d, gas/mips/elf-rel8-mips16.s,
* gas/mips/elf-rel9-mips16.d, gas/mips/elf-rel9-mips16.s,
* gas/mips/elf-rel13-mips16.d, gas/mips/elf-rel13-mips16.s: New tests.
* gas/mips/mips.exp: Run them.
ld/testsuite/
* ld-mips-elf/mips16-local-stubs-1.d: Remove stub_for_h3,
which was only referenced by the .pdr section, and was not
actually needed by code.
* ld-mips-elf/mips16-intermix.d: Remove unused static function stubs.
* ld-mips-elf/mips16-pic-1a.s,
ld-mips-elf/mips16-pic-1b.s,
ld-mips-elf/mips16-pic-1-dummy.s,
ld-mips-elf/mips16-pic-1.dd,
ld-mips-elf/mips16-pic-1.gd,
ld-mips-elf/mips16-pic-1.inc,
ld-mips-elf/mips16-pic-1.ld,
ld-mips-elf/mips16-pic-2a.s,
ld-mips-elf/mips16-pic-2b.s,
ld-mips-elf/mips16-pic-2.ad,
ld-mips-elf/mips16-pic-2.dd,
ld-mips-elf/mips16-pic-2.gd,
ld-mips-elf/mips16-pic-2.nd,
ld-mips-elf/mips16-pic-2.rd: New tests.
* ld-mips-elf/mips-elf.exp: Run them.
|
|
* reloc.c (BFD_RELOC_SPARC_GOTDATA_HIX22,
BFD_RELOC_SPARC_GOTDATA_LOX10, BFD_RELOC_SPARC_GOTDATA_OP_HIX22,
BFD_RELOC_SPARC_GOTDATA_OP_LOX10, BFD_RELOC_SPARC_GOTDATA_OP): New.
* libbfd.h: Regnerate.
* bfd-in2.h: Regenerate.
* elfxx-sparc.c (_bfd_sparc_elf_howto_table): Add entries for
GOTDATA relocations.
(sparc_reloc_map): Likewise.
(_bfd_sparc_elf_check_relocs): Handle R_SPARC_GOTDATA_* like
R_SPARC_GOT*.
(_bfd_sparc_elf_gc_sweep_hook): Likewise.
(_bfd_sparc_elf_relocate_section): Transform R_SPARC_GOTDATA_HIX22,
R_SPARC_GOTDATA_LOX10, R_SPARC_GOTDATA_OP_HIX22, and
R_SPARC_GOTDATA_OP_LOX10 into the equivalent R_SPARC_GOT* reloc.
Simply ignore R_SPARC_GOTDATA_OP relocations.
gas/
* config/tc-sparc.c (sparc_ip): Add support for gotdata mnemonics
and relocation generation.
(tc_gen_reloc): Likewise.
gas/testsuite/
* gas/sparc/gotops32.d: New.
* gas/sparc/gotops32.s: Likewise.
* gas/sparc/gotops64.d: Likewise.
* gas/sparc/gotops64.s: Likewise.
* gas/sparc/sparc.exp: Run new gotdata tests.
ld/testsuite/
* ld-sparc/gotop32.dd: New.
* ld-sparc/gotop32.rd: Likewise.
* ld-sparc/gotop32.s: Likewise.
* ld-sparc/gotop32.sd: Likewise.
* ld-sparc/gotop32.td: Likewise.
* ld-sparc/gotop64.dd: Likewise.
* ld-sparc/gotop64.rd: Likewise.
* ld-sparc/gotop64.s: Likewise.
* ld-sparc/gotop64.sd: Likewise.
* ld-sparc/gotop64.td: Likewise.
* ld-sparc/sparc.exp: Run new gotdata tests.
|
|
* bfd/archive.c (_bfd_find_nested_archive): New function.
(get_extended_arelt_filename): Add origin parameter.
(_bfd_generic_read_ar_hdr_mag): Deal with extended name
combined with a file offset.
(append_relative_path): New function.
(_bfd_get_elt_at_filepos): Deal with external members and
nested archives.
(bfd_generic_openr_next_archived_file): Thin archives.
(bfd_generic_archive_p): Recognize new magic string.
(adjust_relative_path): New function.
(_bfd_construct_extended_name_table): Construct extended
names for thin archive members.
(_bfd_write_archive_contents): Emit new magic string, skip
copying files for thin archives.
* bfd/bfd-in.h (bfd_is_thin_archive): New macro.
* bfd/bfd.c (struct bfd): New fields for thin archives.
* bfd/libbfd-in.h (struct areltdata): New field for thin archives.
* bfd/opncls.c (bfd_close): Delete BFDs for nested archives.
* binutils/ar.c (make_thin_archive): New global flag.
(map_over_members): Deal with full pathnames in thin archives.
(usage, main): Add 'T' option for building thin archives.
(replace_members): Pass thin archive flag to ar_emul_append.
* binutils/arsup.c (ar_open): Initialize new flag.
* binutils/binemul.c (ar_emul_append): Add new parameter for
flattening nested archives.
(do_ar_emul_default_append): New function.
(ar_emul_default_append): Factored out recursive code.
* binutils/binemul.h (ar_emul_default_append): Add new parameter.
(struct bin_emulation_xfer_struct): New parameter for ar_append.
* binutils/dlltool.c (gen_lib_file): Initialize thin archive flag.
* binutils/emul_aix.c (ar_emul_aix_internal): Add new flatten
parameter, currently unimplemented.
All callers changed.
* binutils/objcopy.c (copy_archive): Preserve thin archive flag.
* binutils/doc/binutils.texi: Update ar documentation.
* binutils/testsuite/binutils-all/ar.exp: Add thin archive tests.
* include/aout/ar.h (ARMAGT): New magic string for thin archives.
|
|
* libbfd.c (bfd_realloc_or_free): New function. Performs like
bfd_realloc, but if the (re)allocation fails, the pointer is
freed.
* libbfd-in.h: Prototype.
* libbfd.h: Regenerate.
* bfdio.c (bfd_bwrite): Use the new function.
(bfd_seek): Likewise.
* bfdwin.c:(bfd_get_file_window): Likewise.
* elf-strtab.c (_bfd_elf_strtab_add): Likewise.
* elf32-ppc.c (ppc_elf_relax_section): Likewise.
* elf32-xtensa.c (vsprintf_msg): Likewise.
* mach-o.c (bfd_mach_o_core_fetch_environment): Likewise.
* stabs.c (_bfd_link_seciton_stabs): Likewise.
* vms-misc.c (_bfd_vms_get_record): Likewise.
* vms-tir.c (check_section): Likewise.
* vms.c (vms_new_section_hook): Likewise.
* elf32-arm.c (elf32_arm_section_map_add): Check that the
allocation of sec_data->map succeeded before using it.
* elflink.c (elf_link_output_sym): Do not overwrite finfo->
symshndxbuf until it is known that the reallocation succeeded.
|
|
ld/
* emultempl/armelf.em (OPTION_FIX_V4BX_INTERWORKING): Define.
(PARSE_AND_LIST_LONGOPTS): Add fix-v4bx-interworking.
(PARSE_AND_LIST_OPTIONS): Ditto.
(PARSE_AND_LIST_ARGS_CASES): Handle OPTION_FIX_V4BX_INTERWORKING.
* emulparams/armelf.sh (OTHER_TEXT_SECTIONS): Add .v4_bx.
* emulparams/armelf_linux.sh (OTHER_TEXT_SECTIONS): Ditto.
* emulparams/armnto.sh (OTHER_TEXT_SECTIONS): Ditto.
* ld.texinfo: Document --fix-v4bx-interworking.
ld/testsuite/
* ld-arm/armv4-bx.d: New test.
* ld-arm/armv4-bx.s: New test.
* ld-arm/arm.ld: Add .v4bx.
* ld-arm/arm-elf.exp: Add armv4-bx.
gas/testsuite/
* gas/arm/thumb.d: Exclude EABI targets.
* gas/arm/arch4t.d: Exclude EABI targts.
* gas/arm/v4bx.d: New test.
* gas/arm/v4bx.s: New test.
* gas/arm/thumb-eabi.d: New test.
* gas/arm/arch4t-eabi.d: New test.
gas/
* config/tc-arm.c (fix_v4bx): New variable.
(do_bx): Generate V4BX relocations.
(md_assemble): Allow bx on v4 codes when fix_v4bx.
(md_apply_fix): Handle BFD_RELOC_ARM_V4BX.
(tc_gen_reloc): Ditto.
(OPTION_FIX_V4BX): Define.
(md_longopts): Add fix-v4bx.
(md_parse_option): Handle OPTION_FIX_V4BX.
(md_show_usage): Document --fix-v4bx.
* doc/c-arm.texi: Document --fix-v4bx.
bfd/
* reloc.c: Add BFD_RELOC_ARM_V4BX.
* elf32-arm.c (elf32_arm_reloc_map): Add BFD_RELOC_ARM_V4BX.
(ARM_BX_GLUE_SECTION_NAME, ARM_BX_GLUE_SECTION_NAME): Define.
(elf32_arm_link_hash_table): Add bx_glue_size and bx_glue_offset.
Update comment for fix_v4bx.
(elf32_arm_link_hash_table_create): Zero bx_glue_size and
bx_glue_offset.
(ARM_BX_VENEER_SIZE, armbx1_tst_insn, armbx2_moveq_insn,
armbx3_bx_insn): New.
(bfd_elf32_arm_allocate_interworking_sections): Allocate BX veneer
section.
(bfd_elf32_arm_add_glue_sections_to_bfd): Ditto.
(bfd_elf32_arm_process_before_allocation): Record BX veneers.
(record_arm_bx_glue, elf32_arm_bx_glue): New functions.
(elf32_arm_final_link_relocate): Handle BX veneers.
(elf32_arm_output_arch_local_syms): Output mapping symbol for .v4_bx.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
|
|
* reloc.c (BFD_RELOC_MN10300_ALIGN): Add.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* elf-m10300.h: Handle R_MN10300_ALIGN relocs.
* mn10300_elf_relax_delete_bytes): Honour R_MN10300_ALIGN relocs.
Re-fix off by one error in comparisons.
* config/tc-mn10300.c (tc_gen_reloc): Fix test that decides when
sym_diff relocs should be generated.
(md_apply_fix): Skip R_MN10300_ALIGN relocs.
(mn10300_fix_adjustable): Do not adjust R_MN10300_ALIGN relocs.
(mn10300_handle_align): New function. Generate R_MN10300_ALIGN
relocs to record alignment requests.
* config/tc-mn10300.h (TC_FORCE_RELOCATION_SUB_SAME): Also force
R_MN10300_ALIGN relocs.
(HANDLE_ALIGN): Define. Call mn10300_handle_align.
* gas/all/gas.exp: Do not run diff1.s test for mn10300.
* ld-mn10300/mn10300.exp: Run new tests. Skip i126256 test if
a compiler is not available.
* ld-mn10300/i112045-3.s: New test.
* ld-mn10300/i112045-3.d: Expected disassembly.
* ld-mn10300/i135409.s: Rename to i135409-1.s.
* ld-mn10300/i135409.d: Rename to i135409-1.d
* ld-mn10300/i135409-2.s: New test.
* ld-mn10300/i135409-2.d: Expected symbol table.
* ld-mn10300/i36434.d: Adjust expected disassembly.
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
* 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.
|
|
* aout-arm.c (MY_bfd_reloc_name_lookup): Define.
(MY (bfd_reloc_name_lookup)): New function.
* aout-ns32k.c (MY (bfd_reloc_name_lookup)): New function.
* aout-target.h (NAME (aout, reloc_name_lookup)): Declare.
(MY_bfd_reloc_name_lookup): Define.
* aout-tic30.c (tic30_aout_reloc_name_lookup): New function.
(MY_bfd_reloc_name_lookup): Define.
* aoutx.h (NAME (aout, reloc_type_lookup)): Don't declare.
(NAME (aout, reloc_name_lookup)): New function.
* bout.c (b_out_bfd_reloc_name_lookup): New function.
* coff-alpha.c (alpha_bfd_reloc_name_lookup): New function.
(_bfd_ecoff_bfd_reloc_name_lookup): Define.
* coff-arm.c (coff_arm_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff-i386.c (coff_bfd_reloc_name_lookup): Define.
(coff_i386_reloc_name_lookup): New function.
* coff-i860.c (coff_i860_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff-i960.c (coff_i960_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff-m68k.c (m68k_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff-maxq.c (maxq_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff-mcore.c (mcore_coff_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff-mips.c (mips_bfd_reloc_name_lookup): New function.
(_bfd_ecoff_bfd_reloc_name_lookup): Define.
* coff-ppc.c (ppc_coff_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff-rs6000.c (coff_bfd_reloc_name_lookup): Define.
(_bfd_xcoff_reloc_name_lookup): New function.
(rs6000coff_vec, pmac_xcoff_vec): Init new field.
* coff-sh.c (coff_bfd_reloc_name_lookup): Define.
(sh_coff_reloc_name_lookup): New function.
* coff-sparc.c (coff_sparc_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff-tic30.c (coff_bfd_reloc_name_lookup): Define.
(tic30_coff_reloc_name_lookup): New function.
* coff-tic4x.c (coff_bfd_reloc_name_lookup): Define.
(tic4x_coff_reloc_name_lookup): New function.
* coff-tic54x.c (coff_bfd_reloc_name_lookup): Define.
(tic54x_coff_reloc_name_lookup): New function.
* coff-x86_64.c (coff_bfd_reloc_name_lookup): Define.
(coff_amd64_reloc_name_lookup): New function.
* coff-z80.c (coff_z80_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff-z8k.c (coff_z8k_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* coff64-rs6000.c (coff_bfd_reloc_name_lookup): Define.
(xcoff64_reloc_name_lookup): New function.
(rs6000coff64_vec, aix5coff64_vec): Init new field.
* coffcode.h (coff_bfd_reloc_name_lookup): Define.
* elf-hppa.h (elf_hppa_reloc_name_lookup): New function.
* elf-m10200.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf-m10300.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-arc.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-arm.c (elf32_arm_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-avr.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-bfin.c (bfin_bfd_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-cr16c.c (elf_cr16c_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-cris.c (cris_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-crx.c (elf_crx_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-d10v.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-d30v.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-dlx.c (elf32_dlx_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-fr30.c (fr30_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-frv.c (frv_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-gen.c (bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-h8300.c (elf32_h8_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-hppa.c (bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-i370.c (i370_elf_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-i386.c (elf_i386_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-i860.c (elf32_i860_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-i960.c (elf32_i960_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-ip2k.c (ip2k_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-iq2000.c (iq2000_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-m32c.c (m32c_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-m32r.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-m68hc11.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-m68hc12.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-m68k.c (reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-m88k.c (bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-mcore.c (mcore_elf_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-mep.c (mep_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-mips.c (bfd_elf32_bfd_reloc_name_lookup): New function.
(mips_vxworks_bfd_reloc_name_lookup): Likewise.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-msp430.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-mt.c (mt_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-openrisc.c (openrisc_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-or32.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elf32-pj.c (pj_elf_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-ppc.c (ppc_elf_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-s390.c (elf_s390_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-score.c (elf32_score_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-sh.c (sh_elf_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-sparc.c (bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-spu.c (spu_elf_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-v850.c (v850_elf_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-vax.c (reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-xc16x.c (xc16x_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-xstormy16.c (xstormy16_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf32-xtensa.c (elf_xtensa_reloc_name_lookup): New function.
(bfd_elf32_bfd_reloc_name_lookup): Define.
* elf64-alpha.c (elf64_alpha_bfd_reloc_name_lookup): New function.
(bfd_elf64_bfd_reloc_name_lookup): Define.
* elf64-gen.c (bfd_elf64_bfd_reloc_name_lookup): Define.
* elf64-hppa.c (bfd_elf64_bfd_reloc_name_lookup): Define.
* elf64-mips.c (bfd_elf64_bfd_reloc_name_lookup): New function.
* elf64-mmix.c (bfd_elf64_bfd_reloc_name_lookup): New function.
* elf64-ppc.c (ppc64_elf_reloc_name_lookup): New function.
(bfd_elf64_bfd_reloc_name_lookup): Define.
* elf64-s390.c (elf_s390_reloc_name_lookup): New function.
(bfd_elf64_bfd_reloc_name_lookup): Define.
* elf64-sh64.c (sh_elf64_reloc_name_lookup): New function.
(bfd_elf64_bfd_reloc_name_lookup): Define.
* elf64-sparc.c (bfd_elf64_bfd_reloc_name_lookup): Define.
* elf64-x86-64.c (elf64_x86_64_reloc_name_lookup): New function.
(bfd_elf64_bfd_reloc_name_lookup): Define.
* elfn32-mips.c (bfd_elf32_bfd_reloc_name_lookup): New function.
* elfxx-ia64.c (elfNN_ia64_reloc_name_lookup): New function.
(bfd_elfNN_bfd_reloc_name_lookup): Define.
* elfxx-sparc.c (_bfd_sparc_elf_reloc_name_lookup): New function.
* elfxx-sparc.h (_bfd_sparc_elf_reloc_name_lookup): Declare.
* i386msdos.c (msdos_bfd_reloc_name_lookup): Define.
* i386os9k.c (aout_32_bfd_reloc_name_lookup): Define.
* ieee.c (ieee_bfd_reloc_name_lookup): Define.
* libaout.h (NAME (aout, reloc_name_lookup)): Declare.
* libbfd-in.h (_bfd_norelocs_bfd_reloc_name_lookup): Declare.
* mipsbsd.c (MY_bfd_reloc_name_lookup): Define.
(MY(reloc_type_lookup)): Rename from MY(reloc_howto_type_lookup).
(MY(reloc_name_lookup)): New function.
* nlm-target.h (nlm_bfd_reloc_name_lookup): Define.
* oasys.c (oasys_bfd_reloc_name_lookup): Define.
* pdp11.c (NAME (aout, reloc_name_lookup)): New function.
* pe-mips.c (coff_mips_reloc_name_lookup): New function.
(coff_bfd_reloc_name_lookup): Define.
* reloc.c (bfd_reloc_name_lookup): New function.
* riscix.c (riscix_reloc_name_lookup): New function.
(MY_bfd_reloc_name_lookup): Define.
* som.c (som_bfd_reloc_name_lookup): New function.
* targets.c (struct bfd_target): Add reloc_name_lookup.
(BFD_JUMP_TABLE_RELOCS): Add NAME##_bfd_reloc_name_lookup.
* versados.c (versados_bfd_reloc_name_lookup): Define.
* vms.c (vms_bfd_reloc_name_lookup): New function.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
|
|
declare.
(_bfd_norelocs_canonicalize_reloc): Likewise.
* libbfd.h: Regenerate.
* libbfd.c (_bfd_norelocs_get_reloc_upper_bound): New function.
(_bfd_norelocs_canonicalize_reloc): Likewise.
* binary.c (binary_bfd_reloc_type_lookup): Don't define.
(binary_get_reloc_upper_bound, binary_canonicalize_reloc): Likewise.
(binary_vec): Use _bfd_norelocs in BFD_JUMP_TABLE_RELOCS.
* ihex.c: Similarly.
* mach-o-target.c: Similarly.
* mach-o.c: Similarly.
* mmo.c: Similarly.
* pef.c: Similarly.
* ppcboot.c: Similarly.
* srec.c: Similarly.
* xsym.c: Similarly.
|
|
|
|
* libbfd-in.h (_bfd_clear_contents): New prototype.
* reloc.c (_bfd_clear_contents): New.
* libbfd.h: Regenerated.
* elf32-arm.c (elf32_arm_final_link_relocate): Use
_bfd_clear_contents.
* elf32-d10v.c (elf32_d10v_relocate_section): Likewise.
* elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
* elf32-i386.c (elf_i386_relocate_section): Likewise.
* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
* elf32-s390.c (elf_s390_relocate_section): Likewise.
* elf32-sh.c (sh_elf_relocate_section): Likewise.
* elf32-xtensa.c (elf_xtensa_relocate_section): Likewise.
* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
* elf64-s390.c (elf_s390_relocate_section): Likewise.
* elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Likewise.
* elfxx-ia64.c (elfNN_ia64_relocate_section): Set value to
zero for discarded symbols.
* elfxx-mips.c (mips_elf_calculate_relocation): Likewise.
ld/testsuite/
* ld-discard/zero-rel.d, ld-discard/zero-rel.s: New files.
|
|
2006-10-30 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3111
* elf-bfd.h (elf_obj_tdata): Add symbuf.
(_bfd_elf_section_already_linked): Add struct bfd_link_info *.
(_bfd_elf_check_kept_section): Likewise.
(bfd_elf_match_symbols_in_sections): Likewise.
* elf.c (assign_section_numbers): Updated to add
struct bfd_link_info *.
(bfd_elf_match_symbols_in_sections): Updated. Cache symbol
buffer if info->reduce_memory_overheads is false.
* elflink.c (match_group_member): Updated to add
struct bfd_link_info *.
(_bfd_elf_check_kept_section): Likewise.
(elf_link_input_bfd): Likewise.
(_bfd_elf_section_already_linked): Likewise.
(bfd_elf_final_link): Free symbol buffer if
info->reduce_memory_overheads is false.
* libbfd-in.h (_bfd_nolink_section_already_linked): Add
struct bfd_link_info *.
(_bfd_generic_section_already_linked): Likewise.
* libbfd.h: Regenerated.
* linker.c (bfd_section_already_linked): Add
struct bfd_link_info *.
(_bfd_generic_section_already_linked): Likewise.
* targets.c (bfd_target): Add struct bfd_link_info * to
_section_already_linked.
* bfd-in2.h: Regenerated.
include/
2006-10-30 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3111
* bfdlink.h (bfd_link_info): Add reduce_memory_overheads.
ld/
2006-10-30 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3111
* ld.h (args_type): Remove reduce_memory_overheads.
* ldlang.c (lang_map): Updated.
(section_already_linked): Likewise.
(print_input_section): Likewise.
* ldmain.c (main): Likewise.
* lexsup.c (parse_args): Likewise.
|
|
|
|
|
|
bfd/
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* reloc.c: Add BFD_RELOC_ARM_T32_ADD_IMM.
gas/
* tc-arm.c (do_t_add_sub): Use addw/subw when source is PC.
(md_convert_frag): Use correct reloc for add_pc. Use
BFD_RELOC_ARM_T32_ADD_IMM for normal add/sum.
(md_apply_fix): Handle BFD_RELOC_ARM_T32_ADD_IMM.
(arm_force_relocation): Handle BFD_RELOC_ARM_T32_ADD_IMM.
gas/testsuite/
* gas/arm/thumb2_add.d: New test.
* gas/arm/thumb2_add.s: New test.
|
|
* elf-bfd.h (struct elf_backend_data): Add bfd_link_info pointer
parameter.
(_bfd_elf_sizeof_headers): Replace bfd_boolean param with
bfd_link_info pointer.
* targets.c (struct bfd_target <_bfd_sizeof_headers>): Likewise.
* bfd.c (bfd_sizeof_headers): Tweak param name.
* aout-adobe.c (aout_adobe_sizeof_headers): Adjust.
* aoutx.h (NAME (aout, sizeof_headers)): Adjust.
* binary.c (binary_sizeof_headers): Adjust.
* bout.c (b_out_sizeof_headers): Adjust.
* coff-rs6000.c (_bfd_xcoff_sizeof_headers): Adjust.
* coff64-rs6000.c (xcoff64_sizeof_headers): Adjust.
* coffgen.c (coff_sizeof_headers): Adjust.
* ecoff.c (_bfd_ecoff_sizeof_headers): Adjust.
(ecoff_compute_section_file_positions): Adjust.
(_bfd_ecoff_write_object_contents): Adjust.
* elf.c (get_program_header_size, _bfd_elf_sizeof_headers): Adjust.
* elf32-arm.c (elf32_arm_additional_program_headers): Adjust.
* elf32-i370.c (elf_backend_additional_program_headers): Adjust.
* elf32-ppc.c (ppc_elf_additional_program_headers): Adjust.
* elf64-hppa.c (elf64_hppa_additional_program_headers): Adjust.
* elf64-x86-64.c (elf64_x86_64_additional_program_headers): Adjust.
* elfxx-ia64.c (elfNN_ia64_additional_program_headers): Adjust.
* elfxx-mips.c (_bfd_mips_elf_additional_program_headers): Adjust.
* elfxx-mips.h (_bfd_mips_elf_additional_program_headers): Adjust.
* i386msdos.c: Convert to ISO C.
(msdos_sizeof_headers): Adjust.
* i386os9k.c: Convert to ISO C.
(os9k_sizeof_headers): Adjust.
* ieee.c (ieee_sizeof_headers): Adjust.
* ihex.c (ihex_sizeof_headers): Adjust.
* libaout.h (NAME (aout, sizeof_headers)): Adjust.
* libbfd-in.h (_bfd_nolink_sizeof_headers): Adjust.
* libcoff-in.h (coff_sizeof_headers): Adjust.
* libecoff.h (_bfd_ecoff_sizeof_headers): Adjust.
* mach-o.c (bfd_mach_o_sizeof_headers): Adjust.
* mmo.c (mmo_sizeof_headers): Adjust.
* oasys.c (oasys_sizeof_headers): Adjust.
* pdp11.c (NAME (aout, sizeof_headers)): Adjust.
* pef.c (bfd_pef_sizeof_headers): Adjust.
* ppcboot.c (ppcboot_sizeof_headers): Adjust.
* som.c (som_sizeof_headers): Adjust.
* srec.c (srec_sizeof_headers): Adjust.
* tekhex.c (tekhex_sizeof_headers): Adjust.
* versados.c (versados_sizeof_headers): Adjust.
* vms.c (vms_sizeof_headers): Adjust.
* xcoff-target.h (_bfd_xcoff_sizeof_headers): Adjust.
* xsym.c (bfd_sym_sizeof_headers): Adjust.
* xsym.h (bfd_sym_sizeof_headers): Adjust.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* libcoff.h: Regenerate.
ld/
* ldexp.c (fold_name): Adjust bfd_sizeof_headers call.
|
|
to R_ARM_LDC_SB_G{0,1,2} respectively.
bfd/
* bfd-in2.h: Regenerate.
* elf32-arm.c (R_ARM_ALU_PC_G0_NC, R_ARM_ALU_PC_G0,
R_ARM_ALU_PC_G1_NC, R_ARM_ALU_PC_G1, R_ARM_ALU_PC_G2,
R_ARM_LDR_PC_G1, R_ARM_LDR_PC_G2, R_ARM_LDRS_PC_G0,
R_ARM_LDRS_PC_G1, R_ARM_LDRS_PC_G2, R_ARM_LDC_PC_G0,
R_ARM_LDC_PC_G1, R_ARM_LDC_PC_G2, R_ARM_ALU_SB_G0_NC,
R_ARM_ALU_SB_G0, R_ARM_ALU_SB_G1_NC, R_ARM_ALU_SB_G1,
R_ARM_ALU_SB_G2, R_ARM_LDR_SB_G0, R_ARM_LDR_SB_G1,
R_ARM_LDR_SB_G2, R_ARM_LDRS_SB_G0, R_ARM_LDRS_SB_G1,
R_ARM_LDRS_SB_G2, R_ARM_LDC_SB_G0, R_ARM_LDC_SB_G1,
R_ARM_LDC_SB_G2): New relocation types.
(R_ARM_PC13): Rename to AAELF name R_ARM_LDR_PC_G0 and
adjust HOWTO entry to be consistent with R_ARM_LDR_PC_G1
and friends.
(elf32_arm_howto_table_3): Delete; contents merged into
elf32_arm_howto_table_2.
(elf32_arm_howto_from_type): Adjust correspondingly.
(elf32_arm_reloc_map): Extend with the above relocations.
(calculate_group_reloc_mask): New function.
(identify_add_or_sub): New function.
(elf32_arm_final_link_relocate): Support for the above
relocations.
* reloc.c: Add enumeration entries for BFD_RELOC_ARM_...
codes to correspond to the above relocations.
gas/
* config/tc-arm.c (enum parse_operand_result): New.
(struct group_reloc_table_entry): New.
(enum group_reloc_type): New.
(group_reloc_table): New array.
(find_group_reloc_table_entry): New function.
(parse_shifter_operand_group_reloc): New function.
(parse_address_main): New function, incorporating code
from the old parse_address function. To be used via...
(parse_address): wrapper for parse_address_main; and
(parse_address_group_reloc): new function, likewise.
(enum operand_parse_code): New codes OP_SHG, OP_ADDRGLDR,
OP_ADDRGLDRS, OP_ADDRGLDC.
(parse_operands): Support for these new operand codes.
New macro po_misc_or_fail_no_backtrack.
(encode_arm_cp_address): Preserve group relocations.
(insns): Modify to use the above operand codes where group
relocations are permitted.
(md_apply_fix): Handle the group relocations
ALU_PC_G0_NC through LDC_SB_G2.
(tc_gen_reloc): Likewise.
(arm_force_relocation): Leave group relocations for the linker.
(arm_fix_adjustable): Likewise.
gas/testsuite/
* gas/arm/group-reloc-alu.d: New test.
* gas/arm/group-reloc-alu-encoding-bad.d: New test.
* gas/arm/group-reloc-alu-encoding-bad.l: New test.
* gas/arm/group-reloc-alu-encoding-bad.s: New test.
* gas/arm/group-reloc-alu-parsing-bad.d: New test.
* gas/arm/group-reloc-alu-parsing-bad.l: New test.
* gas/arm/group-reloc-alu-parsing-bad.s: New test.
* gas/arm/group-reloc-alu.s: New test.
* gas/arm/group-reloc-ldc.d: New test.
* gas/arm/group-reloc-ldc-encoding-bad.d: New test.
* gas/arm/group-reloc-ldc-encoding-bad.l: New test.
* gas/arm/group-reloc-ldc-encoding-bad.s: New test.
* gas/arm/group-reloc-ldc-parsing-bad.d: New test.
* gas/arm/group-reloc-ldc-parsing-bad.l: New test.
* gas/arm/group-reloc-ldc-parsing-bad.s: New test.
* gas/arm/group-reloc-ldc.s: New test.
* gas/arm/group-reloc-ldr.d: New test.
* gas/arm/group-reloc-ldr-encoding-bad.d: New test.
* gas/arm/group-reloc-ldr-encoding-bad.l: New test.
* gas/arm/group-reloc-ldr-encoding-bad.s: New test.
* gas/arm/group-reloc-ldr-parsing-bad.d: New test.
* gas/arm/group-reloc-ldr-parsing-bad.l: New test.
* gas/arm/group-reloc-ldr-parsing-bad.s: New test.
* gas/arm/group-reloc-ldr.s: New test.
* gas/arm/group-reloc-ldrs.d: New test.
* gas/arm/group-reloc-ldrs-encoding-bad.d: New test.
* gas/arm/group-reloc-ldrs-encoding-bad.l: New test.
* gas/arm/group-reloc-ldrs-encoding-bad.s: New test.
* gas/arm/group-reloc-ldrs-parsing-bad.d: New test.
* gas/arm/group-reloc-ldrs-parsing-bad.l: New test.
* gas/arm/group-reloc-ldrs-parsing-bad.s: New test.
* gas/arm/group-reloc-ldrs.s: New test.
ld/testsuite/
* ld-arm/group-relocs-alu-bad.d: New test.
* ld-arm/group-relocs-alu-bad.s: New test.
* ld-arm/group-relocs.d: New test.
* ld-arm/group-relocs-ldc-bad.d: New test.
* ld-arm/group-relocs-ldc-bad.s: New test.
* ld-arm/group-relocs-ldr-bad.d: New test.
* ld-arm/group-relocs-ldr-bad.s: New test.
* ld-arm/group-relocs-ldrs-bad.d: New test.
* ld-arm/group-relocs-ldrs-bad.s: New test.
* ld-arm/group-relocs.s: New test.
* ld-arm/arm-elf.exp: Wire in new tests.
|
|
|
|
bfd/
* elf32-arm.c (elf32_arm_reloc_map): Add MOVW and MOVT relocs.
(elf32_arm_final_link_relocate): Handle MOVW and MOVT relocs.
(elf32_arm_gc_sweep_hook, elf32_arm_check_relocs): Ditto.
* reloc.c: Ditto.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* libcoff.h: Regenerate.
gas/
* config/tc-arm.c (parse_half): New function.
(operand_parse_code): Remove OP_Iffff. Add OP_HALF.
(parse_operands): Ditto.
(do_mov16): Reject invalid relocations.
(do_t_mov16): Ditto. Use Thumb reloc numbers.
(insns): Replace Iffff with HALF.
(md_apply_fix): Add MOVW and MOVT relocs.
(tc_gen_reloc): Ditto.
* doc/c-arm.texi: Document relocation operators
ld/testsuite/
* ld-arm/arm-elf.exp: Add arm-movwt.
* ld-arm/arm-movwt.d: New test.
* ld-arm/arm-movwt.s: New test.
* ld-arm/arm.ld: Add .far.
|
|
* libbfd-in.h (_bfd_generic_new_section_hook): Declare.
* section.c (bfd_abs_symbol, bfd_com_symbol): Delete.
(bfd_und_symbol, bfd_ind_symbol): Delete.
(BFD_FAKE_SECTION): Remove SYM_PTR param, set symbol_ptr_ptr to
&SEC.symbol.
(STD_SECTION): Adjust.
(_bfd_generic_new_section_hook): New function, extracted from..
(bfd_section_init): ..here.
(bfd_make_section_old_way): Call new_section_hook for abs, com,
und and ind sections.
* elf.c (_bfd_elf_large_com_section): Adjust.
* aoutx.h (new_section_hook): Call _bfd_generic_new_section_hook.
* pdp11.c (new_section_hook): Likewise.
* coffcode.h (coff_new_section_hook): Likewise.
* ecoff.c (_bfd_ecoff_new_section_hook): Likewise.
* elf.c (_bfd_elf_new_section_hook): Likewise.
* vms.c (vms_new_section_hook): Likwise.
* elf32-arm.c (elf32_arm_new_section_hook): Check used_by_bfd isn't
already set.
* elf32-sh64.c (sh64_elf_new_section_hook): Likewise.
* elf32-xtensa.c (elf_xtensa_new_section_hook): Likewise.
* elf64-mmix.c (mmix_elf_new_section_hook): Likewise.
* elf64-ppc.c (ppc64_elf_new_section_hook): Likewise.
* elfxx-mips.c (_bfd_mips_elf_new_section_hook): Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_new_section_hook): Likewise.
* ieee.c (ieee_new_section_hook): Likewise. Call
_bfd_generic_new_section_hook too.
* mmo.c (mmo_new_section_hook): Likewise.
* oasys.c (oasys_new_section_hook): Likewise.
* som.c (som_new_section_hook): Likewise.
* coff-w65.c (reloc_processing): Don't use bfd_abs_symbol.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
gas/
* subsegs.c (subseg_get): Don't call obj_sec_set_private_data.
* config/obj-elf.h (obj_sec_set_private_data): Delete.
* config/tc-hppa.c (tc_gen_reloc): Don't use bfd_abs_symbol.
* config/tc-mn10300.c (tc_gen_reloc): Likewise.
|
|
|
|
* configure.in: Likewise.
* configure: Regenerate.
* elf32-bfin.c: Include "elf/dwarf2.h" and "hashtab.h".
(BFIN_RELOC_MAX): Now 0x21.
(bfin_howto_table, bfin_reloc_map): Add FD-PIC relocs.
(bfd_elf32_bfinfdpic_vec): Declare.
(IS_FDPIC): New macro.
(struct bfinfdpic_elf_link_hash_table): New struct.
(bfinfdpic_hash_table, bfinfdpic_got_section,
bfinfdpic_gotrel_section, bfinfdpic_gotfixup_section,
bfinfdpic_plt_setion, bfinfdpic_pltrel_section,
bfinfdpic_relocs_info, bfinfdpic_got_initial_offset,
bfinfdpic_plt_initial_offset): Accessor macros for it.
(BFINFDPIC_SYM_LOCAL, BFINFDPIC_FUNCDESC_LOCAL): New macros.
(struct bfinfdpic_relocs_info): New struct.
(LZPLT_RESOLVER_EXTRA, LZPLT_NORMAL_SIZE, LZPLT_ENTRIES,
BFINFDPIC_LZPLT_BLOCK_SIZE, BFINFDPIC_LZPLT_RESOLV_LOC,
DEFAULT_STACK_SIZE): New macros.
(bfinfdpic_elf_link_hash_table_create, bfinfdpic_relocs_info_hash,
bfinfdpic_relocs_info_eq, bfinfdpics_relocs_info_find,
bfinfdpic_relocs_info_for_global, bfinfdpic_relocs_info_for_local,
bfinfdpic_pic_merge_early_relocs_info, _bfinfdpic_add_dyn_reloc,
_bfinfdpic_add_rofixup, _bfinfdpic_osec_to_segment,
_bfinfdpic_osec_readonly_p, bfinfdpic_relocate_section,
bfinfdpic_check_relocs, bfinfdpic_gc_sweep_hook,
_bfinfdpic_link_omit_section_dynsym, _bfin_create_got_section,
elf32_bfinfdpic_create_dynamic_sections, _bfinfdpic_get_fd_entry,
_bfinfdpic_compute_got_alloc_data, _bfinfdpic_get_got_entry,
_bfinfdpic_assign_got_entries, _bfinfdpic_assign_plt_entries,
_bfinfdpic_resolve_final_relocs_info,
elf32_bfinfdpic_size_dynamic_sections,
elf32_bfinfdpic_always_size_sections,
elf32_bfinfdpic_modify_segment_map,
_bfinfdpic_count_got_plt_entries,
elf32_bfinfdpic_finish_dynamic_sections,
elf32_bfinfdpic_adjust_dynamic_symbol,
elf32_bfinfdpic_finish_dynamic_symbol,
elf32_bfinfdpic_elf_use_relative_eh_frame,
elf32_bfinfdpic_elf_encode_eh_address,
elf32_bfin_object_p, bfin_elf_copy_private_bfd_data,
elf32_bfinfdpic_copy_private_bfd_data,
(struct _bfinfdpic_dynamic_got_info,
struct _bfinfdpic_dynamic_got_plt_info): New structs.
(elf32_bfin_print_private_bfd_data): Print PIC flags.
(elf32_bfin_merge_private_bfd_data): Extend to support FD-PIC.
(TARGET_LITTLE_SYM, TARGET_LITTLE_NAME, elf32_bed,
elf_backend_got_header_size, bfd_elf32_bfd_link_hash_table_create,
elf_backend_always_size_sectinos, elf_backend_modify_segment_map,
bfd_elf32_bfd_copy_private_bfd_data,
elf_backend_create_dynamic_sections, elf_backend_adjust_dynamic_symbol,
elf_backend_size_dynamic_sections, elf_backend_finish_dynamic_symbol,
elf_backend_finish_dynamic_sections, elf_backend_relocate_section,
elf_backend_can_make_relative_eh_frame, elf_backend_check_relocs,
elf_backend_can_make_ldsa_relative_eh_frame, elf_backend_may_use_rel_p,
elf_backend_may_use_rela_p, elf_backend_default_use_rela_p,
elf_backend_omit_section_dynsym): Redefine these macros and include
"elf32-target.h" again to create the elf32-bfinfdpic target.
* reloc.c (BFD_RELOC_BFIN_GOT17M4, BFD_RELOC_BFIN_GOTHI,
BFD_RELOC_BFIN_GOTLO, BFD_RELOC_BFIN_FUNCDESC,
BFD_RELOC_BFIN_FUNCDESC_GOT17M4, BFD_RELOC_BFIN_FUNCDESC_GOTHI,
BFD_RELOC_BFIN_FUNCDESC_GOTLO, BFD_RELOC_BFIN_FUNCDESC_VALUE,
BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4, BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO, BFD_RELOC_BFIN_GOTOFFHI,
BFD_RELOC_BFIN_GOTOFFLO): New.
* targets.c (bfd_elf32_bfinfdpic_vec): New bfd_target.
(_bfd_target_vector): Add it.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
|