aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf-eh-frame.c
AgeCommit message (Collapse)AuthorFilesLines
2002-09-23 * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Zero relocsAlan Modra1-1/+1
for discarded FDEs. Remove redundant assignment. * elflink.h (elf_bfd_discard_info): Save edited relocs.
2002-08-23Undo previous delta. Add comment explaining why.Nick Clifton1-1/+6
2002-08-22Use a simple byte read when reading the return address register column.Nick Clifton1-1/+1
2002-08-20 * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Add PARAMS toAlan Modra1-1/+1
argument declaration.
2002-05-15Fix ld --just-symbolsAlan Modra1-2/+2
* aix5ppc-core.c: Warning fixes. * aout-adobe.c (aout_32_bfd_link_just_syms): Define. * aout-target.h (MY_bfd_link_just_syms): Define. * aout-tic30.c (MY_bfd_link_just_syms): Define. * bfd.c (bfd_link_just_syms): Define. * binary.c (binary_bfd_link_just_syms): Define. * bout.c (b_out_bfd_link_just_syms): Define. * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Update initializer. * coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Likewise. * coffcode.h (coff_bfd_link_just_syms): Define. * elf-bfd.h (enum elf_link_info_type): Add ELF_INFO_TYPE_JUST_SYMS. (elf_discarded_section): Check for ELF_INFO_TYPE_JUST_SYMS. (_bfd_elf_link_just_syms): Declare. * elf.c (_bfd_elf_link_just_syms): New function. * elf-eh-frame.c (_bfd_elf_maybe_strip_eh_frame_hdr): Check that sections haven't already been discarded by the linker. * elflink.h (elf_link_add_object_symbols): Likewise for stab sections and SEC_MERGE sections. (elf_bfd_discard_info): Similarly here. * elfxx-target.h (bfd_elfNN_bfd_link_just_syms): Define. * i386msdos.c (msdos_bfd_link_just_syms): Define. * i386os9k.c (os9k_bfd_link_just_syms): Define. * ieee.c (ieee_bfd_link_just_syms): Define. * ihex.c (ihex_bfd_link_just_syms): Define. * libbfd-in.h (_bfd_nolink_bfd_link_just_syms): Define. (_bfd_generic_link_just_syms): Declare. * libecoff.h (_bfd_ecoff_bfd_link_just_syms): Define. * linker.c (_bfd_generic_link_just_syms): New function. * mmo.c (mmo_bfd_link_just_syms): Define. * nlm-target.h (nlm_bfd_link_just_syms): Define. * oasys.c (oasys_bfd_link_just_syms): Define. * ppcboot.c (ppcboot_bfd_link_just_syms): Define. * som.c (som_bfd_link_just_syms): Define. * srec.c (srec_bfd_link_just_syms): Define. * targets.c (struct bfd_target): Add _bfd_link_just_syms. (BFD_JUMP_TABLE_LINK): And here. * tekhex.c (tekhex_bfd_link_just_syms): Define. * versados.c (versados_bfd_link_just_syms): Define. * vms.c (vms_bfd_link_just_syms): Define. * libbfd.h: Regenerate. * bfd-in2.h: Regenerate.
2002-04-22 * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't buildJakub Jelinek1-3/+7
search table if some FDE is DW_EH_PE_aligned encoded either. (_bfd_elf_write_section_eh_frame): Handle terminating FDE specially.
2002-04-22 * elf-eh-frame.c (struct eh_cie_fde): Add per_encoding_relative.Jakub Jelinek1-2/+20
(_bfd_elf_discard_section_eh_frame): Set it for CIEs with pcrel encoded personality. (_bfd_elf_write_section_eh_frame): Adjust pcrel encoded personality for CIE/FDE removal.
2002-02-19 * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): EnableJakub Jelinek1-9/+15
absptr -> pcrel optimization for shared libs. Only create minimal .eh_frame_hdr if absptr FDE encoding in shared library cannot be converted to pcrel. (_bfd_elf_eh_frame_section_offset): Return -2 if making absptr relative. * elf32-i386.c (elf_i386_relocate_section): If _bfd_elf_section_offset returned -2, skip, but make sure the relocation is installed. * elf32-arm.h (elf32_arm_final_link_relocate): Likewise. * elf32-cris.c (cris_elf_relocate_section): Likewise. * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. * elf32-i370.c (i370_elf_relocate_section): Likewise. * elf32-m68k.c (elf_m68k_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-sparc.c (elf32_sparc_relocate_section): Likewise. * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. * elf64-s390.c (elf_s390_relocate_section): Likewise. * elf64-sh64.c (sh_elf64_relocate_section): Likewise. * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. * elf64-alpha.c (elf64_alpha_relocate_section): Handle _bfd_elf_section_offset returning -2 the same way as -1. * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Likewise. * elf32-mips.c (mips_elf_create_dynamic_relocation): Add FIXME and BFD_ASSERT. * elf64-mips.c (mips_elf64_create_dynamic_relocation): Likewise.
2002-01-25 * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): AvoidAlan Modra1-3/+3
unsigned overflow when new_offset < old_offset.
2002-01-04 * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Don't crash ifJakub Jelinek1-5/+14
CIE at .eh_frame start is removed due to no FDEs referencing it.
2001-12-31 * elflink.h (elf_bfd_final_link): Check if dynobj is not NULLJakub Jelinek1-0/+3
before looking for .eh_frame_hdr section. * elf-eh-frame.c (_bfd_elf_write_section_eh_frame_hdr): If .eh_frame_hdr section is being stripped from output, don't do anything.
2001-12-19 * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): If new_sizeJakub Jelinek1-1/+17
is 0, temporarily grow it to minimal CIE size. (_bfd_elf_write_section_eh_frame): If input .eh_frame section would end up empty, build a fake minimal CIE.
2001-12-18 * elf-eh-frame.c (struct cie): Add make_lsda_relative.Jakub Jelinek1-46/+156
(struct eh_cie_fde): Add lsda_encoding, lsda_offset, make_lsda_relative. (read_value, write_value): New. (_bfd_elf_discard_section_eh_frame): Inicialize lsda_encoding, lsda_offset and make_lsda_relative. (_bfd_elf_eh_frame_section_offset): If make_lsda_relative, request no dynamic reloc for LSDA field of FDE. (_bfd_elf_write_section_eh_frame): Handle make_lsda_relative. If a non-DW_EH_PE_absptr value is 0, don't adjust it by base or pcrel. Fix address computation for DW_EH_PE_pcrel relocs. Update LSDA field if LSDA encoding is DW_EH_PE_pcrel, because . might have changed due to deleted FDE or CIEs.
2001-12-15 * elf-bfd.h (_bfd_elf_maybe_strip_eh_frame_hdr): New prototype.Jakub Jelinek1-30/+65
* elf-eh-frame.c (struct eh_frame_hdr_info): Add strip. (_bfd_elf_discard_section_eh_frame): Don't create .eh_frame_hdr sec_info here. Free ehbuf. (_bfd_elf_discard_section_eh_frame_hdr): Don't size the section if hdr_info->strip. (_bfd_elf_maybe_strip_eh_frame_hdr): New. * elflink.h (size_dynamic_sections): Call it.
2001-12-13 * elf-bfd.h (enum elf_link_info_type): New.Jakub Jelinek1-0/+1039
(struct bfd_elf_section_data): Remove stab_info and merge_info fields, add sec_info and sec_info_type. (struct elf_obj_tdata): Add eh_frame_hdr field. (_bfd_elf_discard_section_eh_frame): New prototype. (_bfd_elf_discard_section_eh_frame_hdr): Likewise. (_bfd_elf_eh_frame_section_offset): Likewise. (_bfd_elf_write_section_eh_frame): Likewise. (_bfd_elf_write_section_eh_frame_hdr): Likewise. * Makefile.am (BFD32_BACKENDS): Add elf-eh-frame.lo. (BFD32_BACKENDS_CFILES): Add elf-eh-frame.c. (elf-eh-frame.lo): New. * Makefile.in: Rebuilt. * configure.in (elf): Add elf-eh-frame.lo. * configure: Rebuilt. * elf.c (_bfd_elf_print_private_bfd_data): Support PT_GNU_EH_FRAME. (map_sections_to_segments): Create PT_GNU_EH_FRAME if requested. (get_program_header_size): Take into account PT_GNU_EH_FRAME segment. (_bfd_elf_rela_local_sym): Use sec_info_type and sec_info. (_bfd_elf_rel_local_sym): Likewise. (_bfd_elf_section_offset): Likewise. Call _bfd_elf_eh_frame_section_offset too. * elfxx-ia64.c (elfNN_ia64_relocate_section): Use sec_info_type and sec_info. * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. * elf-eh-frame.c: New file. * elflink.h (elf_link_add_object_symbols): Don't optimize SHF_MERGE .stab sections. Set sec_info_type, use sec_info instead of merge_info and stab_info. (elf_link_create_dynamic_sections): Create .eh_frame_hdr section if --eh-frame-hdr. (elf_bfd_final_link): Write .eh_frame_hdr section. (elf_link_sec_merge_syms): Use sec_info_type and sec_info. (elf_link_input_bfd): Likewise. Call _bfd_elf_write_section_eh_frame to write .eh_frame sections. (elf_bfd_discard_info): Add output_bfd argument. Call _bfd_elf_discard_section_eh_frame and _bfd_elf_discard_section_eh_frame_hdr. (elf_section_ignore_discarded_relocs): Use sec_info_type, not section names. * bfd-in.h (bfd_elf32_discard_info, bfd_elf64_discard_info): Adjust prototypes. * bfd-in2.h (bfd_elf32_discard_info, bfd_elf64_discard_info): Likewise. * elf/common.h (PT_GNU_EH_FRAME): Define. * bfdlink.h (struct bfd_link_info): Add eh_frame_hdr field. * emultempl/elf32.em (finish): Supply output_bfd to bfd_elf*_discard_info. (OPTION_EH_FRAME_HDR): Define. (longopts): Add --eh-frame-hdr. (parse_args): Handle it. (list_options): Add --eh-frame-hdr to help. * emultempl/hppaelf.em (finish): Supply output_bfd to bfd_elf*_discard_info. * scripttempl/elf.sc (.eh_frame_hdr): Add. * readelf.c (get_segment_type): Support PT_GNU_EH_FRAME.