Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
* elf-bfd.h (eh_cie_fde): Replace u.cie.merged with a union of
a merged field and a sec field.
(eh_frame_hdr_info): Remove offsets_adjusted.
* elf-eh-frame.c (_bfd_elf_parse_eh_frame): Update accesses to
the CIE merged field.
(_bfd_elf_gc_mark_fdes): Likewise.
(_bfd_elf_discard_section_eh_frame): Likewise. Set u.cie.u.sec
when clearing the removed flag.
(_bfd_elf_eh_frame_section_offset): Remove offsets_adjusted handling.
(_bfd_elf_write_section_eh_frame): Likewise. Apply output_offsets
where appropriate.
|
|
* elf-bfd.h (eh_cie_fde): Move add_fde_encoding and
per_encoding_relative to u.cie. Add commentary.
* elf-eh-frame.c (cie): Remove make_relative.
(extra_augmentation_string_bytes): Update use of add_fde_encoding.
(extra_augmentation_data_bytes): Likewise. Use an FDE's own
add_augmentation_size field, rather than referring to the CIE.
(_bfd_elf_parse_eh_frame): Don't set the struct cie
make_relative field; set the eh_cie_fde field directly.
Update setting of add_fde_encoding and per_encoding_relative.
Copy make_relative and add_augmentation_size from the CIE
to the FDE.
(_bfd_elf_discard_section_eh_frame): Use the FDE's own
make_relative field.
(_bfd_elf_eh_frame_section_offset): Likewise.
(_bfd_elf_write_section_eh_frame): Update accesses to
add_fde_encoding and per_encoding_relative. Use the FDE's
own make_relative and add_augmentation_size fields.
|
|
* elf-bfd.h (eh_cie_fde): Remove need_lsda_relative.
Move make_lsda_relative to u.cie.
* elf-eh-frame.c (cie): Rename make_lsda_relative to
can_make_lsda_relative.
(_bfd_elf_parse_eh_frame): Don't set the old eh_cie_fde
make_lsda_relative field. Update after cie renaming.
Set u.cie.make_lsda_relative if can_make_lsda_relative
and if we find a relocation against the LSDA.
(_bfd_elf_discard_section_eh_frame): Copy make_lsda_relative when
changing a CIE's group representative.
(_bfd_elf_eh_frame_section_offset): Don't set need_ldsa_relative here.
(_bfd_elf_write_section_eh_frame): Check u.cie.make_lsda_relative
rather than need_lsda_relative.
|
|
* elf-bfd.h (eh_cie_fde): Add u.fde.next_for_section and
u.cie.gc_mark.
(bfd_elf_section_data): Add fde_list.
(elf_fde_list): New macro.
(elf_obj_tdata): Add eh_frame_section.
(elf_eh_frame_section): New macro.
(_bfd_elf_gc_mark_reloc): Remove last parameter.
(_bfd_elf_gc_mark_fdes): Declare.
* elf-eh-frame.c (_bfd_elf_get_eh_frame_sec_info): Chain the FDEs
for each input section.
(mark_entry, _bfd_elf_gc_mark_fdes): New functions.
* elflink.c (_bfd_elf_gc_mark_reloc): Remove is_eh parameter.
(_bfd_elf_gc_mark): Update call accordingly. Mark the relocations
againts the section's FDEs. Don't mark the bfd's elf_eh_frame_section.
(bfd_elf_gc_sections): Parse each input bfd's .eh_frame before
marking any input sections. Remove the current EH handling.
* section.c (bfd_section): Remove gc_mark_from_eh.
* ecoff.c (bfd_debug_section): Update initializer accordingly.
|
|
* elf-bfd.h (eh_cie_fde): Add u.cie. Document how u.fde.cie_inf
changes when removed == 0.
(eh_frame_hdr_info): Add parsed_eh_frames.
(_bfd_elf_begin_eh_frame_parsing): Declare.
(_bfd_elf_parse_eh_frame): Declare.
(_bfd_elf_end_eh_frame_parsing): Declare.
* elf-eh-frame.c (_bfd_elf_begin_eh_frame_parsing): New function.
(_bfd_elf_parse_eh_frame): New function, split out from
_bfd_elf_discard_section_eh_frame. Make a first pass through the
buffer to calculate the number of entries and CIEs. Allocate memory
for them before the main loop. Replace current extended cie
representation with a pair of pointers, one to the local eh_cie_fde
and one to the full struct cie. Allocate a separate array of struct
cies if not merging. Merge CIEs during the main loop and set up each
u.cie.merged field. Point an FDE's cie_inf field directly at the
local CIE. Initially assume that all entries should be removed.
(_bfd_elf_end_eh_frame_parsing): New function.
(_bfd_elf_discard_section_eh_frame): Assume that the section has
already been parsed. Use a separate pass to mark entries that
need to be kept. Use the u.cie.merged field to track a CIE's
group representative.
* elflink.c (bfd_elf_discard_info): Call _bfd_elf_parse_eh_frame
before _bfd_elf_discard_section_eh_frame. Wrap loop with calls to
_bfd_elf_begin_eh_frame_parsing and _bfd_elf_end_eh_frame_parsing.
|
|
* elf-bfd.h (eh_cie_fde): Put cie_inf in a union. Add a reloc_index
field. Use bitfields for fde_encoding, lsda_encoding and lsda_offset.
* elf-eh-frame.c (extra_augmentation_data_bytes): Adjust cie_inf
accesses after the above change.
(_bfd_elf_eh_frame_section_offset): Likewise.
(_bfd_elf_write_section_eh_frame): Likewise.
(_bfd_elf_discard_section_eh_frame): Likewise. Set up reloc_index.
|
|
* elf-bfd.h (_bfd_elf_gc_mark_rsec, _bfd_elf_gc_mark_reloc): Declare.
(_bfd_elf_gc_mark): Use elf_gc_mark_hook_fn.
* elflink.c (init_reloc_cookie, fini_reloc_cookie)
(init_reloc_cookie_rels, fini_reloc_cookie_rels): New functions,
split out from...
(bfd_elf_discard_info): ...here.
(init_reloc_cookie_for_section): New function.
(fini_reloc_cookie_for_section): Likewise.
(_bfd_elf_gc_mark_rsec, _bfd_elf_gc_mark_reloc): New functions,
split out from...
(_bfd_elf_gc_mark): ...here. Use init_reloc_cookie_for_section
and fini_reloc_cookie_for_section.
|
|
|
|
|
|
|
|
address.
(print_action_list): Fix name for ta_convert_longcall.
|
|
|
|
the symbol's section is the undefined section.
* gas/testsuite/gas/elf/symtab.s: New test.
gas/testsuite/gas/elf/symtab.d: New expected output.
gas/testsuite/gas/elf/elf.exp: Run the new symbtab test.
|
|
|
|
|
|
|
|
|
|
|
|
include/elf/
* xtensa.h (R_XTENSA_32_PCREL): New.
bfd/
* elf32-xtensa.c (elf_howto_table): Add R_XTENSA_32_PCREL.
(elf_xtensa_reloc_type_lookup): Handle BFD_RELOC_32_PCREL.
(elf_xtensa_check_relocs): Use default case for all relocations that
need nothing done here.
(elf_xtensa_do_reloc): Compute self_address for all relocation types.
Handle R_XTENSA_32_PCREL.
(elf_xtensa_relocate_section): Check for R_XTENSA_32_PCREL for dynamic
symbols.
(check_section_ebb_pcrels_fit): Ignore R_XTENSA_32_PCREL relocations.
gas/
* config/tc-xtensa.c (O_pcrel): Define.
(suffix_relocs): Add pcrel suffix.
(md_pseudo_table): Add 4byte and 2byte directives.
(xtensa_elf_cons): Pass correct pcrel argument to fix_new_exp.
(xg_assemble_literal): Likewise. Check for O_pcrel.
(expression_maybe_register): Reorganize. Handle BFD_RELOC_32_PCREL.
(xg_valid_literal_expression): Allow O_pcrel.
(md_pcrel_from, md_apply_fix): Handle BFD_RELOC_32_PCREL.
(tc_gen_reloc): Fix punctuation in error message.
gas/testsuite/
* gas/xtensa/all.exp: Run new pcrel test.
* gas/xtensa/err-pcrel.s: New.
* gas/xtensa/pcrel.d: New.
* gas/xtensa/pcrel.s: New.
* gas/xtensa/xtensa-err.exp: New.
|
|
|
|
|
|
non-function symbols for overlay stubs.
|
|
|
|
entry for all dynamic objects.
|
|
|
|
|
|
|
|
|
|
|
|
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Use the
ELF header to choose between 32-bit and 64-bit relocation structures.
|
|
|
|
* archures.c (bfd_mach_mips_loongson_2e): New.
(bfd_mach_mips_loongson_2f): New.
* bfd-in2.h (bfd_mach_mips_loongson_2e): New.
(bfd_mach_mips_loongson_2f): New.
* cpu-mips.c: Add I_loongson_2e and I_loongson_2f to
anonymous enum.
(arch_info_struct): Add Loongson-2E and Loongson-2F entries.
* elfxx-mips.c (_bfd_elf_mips_mach): Handle Loongson-2E
and Loongson-2F flags.
(mips_set_isa_flags): Likewise.
(mips_mach_extensions): Add Loongson-2E and Loongson-2F
entries.
binutils/
* readelf.c (get_machine_flags): Handle Loongson-2E and -2F
flags.
gas/
* config/tc-mips.c (mips_cpu_info_table): Add loongson2e
and loongson2f entries.
* doc/c-mips.texi: Document -march=loongson{2e,2f} options.
gas/testsuite/
* gas/mips/mips.exp: Add loongson-2e and -2f tests.
* gas/mips/loongson-2e.d: New.
* gas/mips/loongson-2e.s: New.
* gas/mips/loongson-2f.d: New.
* gas/mips/loongson-2f.s: New.
include/elf/
* mips.h (E_MIPS_MACH_LS2E): New.
(E_MIPS_MACH_LS2F): New.
include/opcode/
* mips.h (INSN_LOONGSON_2E): New.
(INSN_LOONGSON_2F): New.
(CPU_LOONGSON_2E): New.
(CPU_LOONGSON_2F): New.
(OPCODE_IS_MEMBER): Update for Loongson-2E and -2F flags.
opcodes/
* mips-dis.c (mips_arch_choices): Add Loongson-2E and -2F
entries.
* mips-opc.c (IL2E): New.
(IL2F): New.
(mips_builtin_opcodes): Add Loongson-2E and -2F instructions.
Allow movz and movn for Loongson-2E and -2F. Add movnz entry.
Move coprocessor encodings to the end of the table. Allow
certain MIPS V .ps instructions on the Loongson-2E and -2F.
|
|
* elf32-arm.c (bfd_elf32_arm_process_before_allocation): Do not complain if
there is no glue bfd, just return.
|
|
|
|
forward jumps.
* ld-mn10300/i135409-5.s: New test case. Check for relaxation to a 16-bit backward jump instruction.
* ld-mn10300/i135409-5.t: Linker script for the new test.
* ld-mn10300/i135409-5.d: Expected disassembly of new test.
* ld-mn10300/mn10300.exp: Run the new test.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
computing whether instructions can be relaxed.
* ld-mn10300/i135409-4.s: New test case. Check for relaxation to a 16-bit
jump instruction.
* ld-mn10300/i135409-4.t: Linker script for the new test.
* ld-mn10300/i135409-4.d: Expected disassembly of new test.
* ld-mn10300/mn10300.exp: Run the new test.
|
|
|
|
set, there may be no TLS segment.
* lib/ld-lib.exp (check_gc_sections_available): New proc, based on the version in gcc/testsuite/lib/target-supports.exp.
* ld-elf/eld.exp: Use check_gc_sections_available.
|
|
|
|
* elflink.c (bfd_elf_perform_complex_relocation): Return status.
Don't print reloc overflow message.
* elf32-mep.c (mep_elf_relocate_section): Handle status from
bfd_elf_perform_complex_relocation.
|