aboutsummaryrefslogtreecommitdiff
path: root/bfd/elflink.h
AgeCommit message (Collapse)AuthorFilesLines
1996-06-25Comment out code to make GOT pointers negative of the GOT symbol for nowMichael Meissner1-1/+3
1996-06-24Add debug msgMichael Meissner1-1/+9
1996-06-24 * elf.c (elf_fake_sections): Don't set sh_addr of a non SEC_ALLOCIan Lance Taylor1-1/+2
section to 0 if user_set_vma is set. * elflink.h (elf_bfd_final_link): Likewise.
1996-04-22 Optimize linking of stabs in sections as used in ELF and COFF.Ian Lance Taylor1-7/+54
* stabs.c: New file. * libbfd-in.h (_bfd_link_section_stabs): Declare. (_bfd_write_section_stabs): Declare. (_bfd_write_stab_strings): Declare. * libbfd.h: Rebuild. * libcoff-in.h (struct coff_section_tdata): Add stab_info field. (struct coff_link_hash_table): Add stab_info field. * libcoff.h: Rebuild. * cofflink.c (_bfd_coff_link_hash_table_init): Initialize stab_info field. (coff_link_add_symbols): Call _bfd_link_section_stabs if appropriate. (_bfd_coff_final_link): Write out stab strings hash table. (_bfd_coff_link_input_bfd): Handle optimized stabs sections. * coff-ppc.c (ppc_bfd_coff_final_link): Write out stab strings hash table. * elf-bfd.h (struct elf_link_hash_table): Add stab_info field. (struct bfd_elf_section_data): Add stab_info field. * elf.c (_bfd_elf_link_hash_table_init): Initialize stab_info field. * elflink.h (elf_link_add_object_symbols): If appropriate, call _bfd_link_section_stabs. (elf_bfd_final_link): Write out stab strings hash table. (elf_link_input_bfd): Handle optimized stabs sections. * reloc.c (_bfd_final_link_relocate): Check address against _raw_size rather than _cooked_size. * Makefile.in: Rebuild dependencies. (BFD_LIBS): Add stabs.o (BFD_LIBS_CFILES): Add stabs.c.
1996-04-01 * elflink.h (elf_adjust_dynamic_symbol): If a common symbol gotIan Lance Taylor1-0/+12
defined in a regular file, set ELF_LINK_HASH_DEF_REGULAR.
1996-03-27Remove SEC_LINKER_MARK, and add a linker_mark bitfield to the asectionIan Lance Taylor1-2/+2
structure instead.
1996-03-27 * section.c (SEC_LINKER_MARK): Define.Ian Lance Taylor1-0/+12
* bfd-in2.h: Rebuild. * aoutx.h (NAME(aout,final_link)): Mark sections included in the link. (aout_link_input_bfd): Don't link unmarked sections. * cofflink.c (_bfd_coff_final_link): Mark sections included in the link. (_bfd_coff_link_input_bfd): Don't link unmarked sections. * coff-ppc.c (ppc_bfd_coff_final_link): Mark sections included in the link. * elflink.h (elf_bfd_final_link): Mark sections included in the link. (elf_link_input_bfd): Don't link unmarked sections. * xcofflink.c (_bfd_xcoff_bfd_final_link): Mark sections included in the link. (xcoff_link_input_bfd): Don't link unmarked sections.
1996-03-12 * linker.c (bfd_wrapped_link_hash_lookup): New function.Ian Lance Taylor1-5/+11
(_bfd_generic_link_add_one_symbol): Remove BFD_ASSERT on hash table string. Use bfd_wrapped_link_hash_lookup. (_bfd_generic_link_write_global_symbol): Remove BFD_ASSERT on hash table string. * aoutx.h (aout_link_write_symbols): Use the name from the hash table, if any, when writing out symbols. (aout_link_input_section_std): Use the name from the hash table, if any, when reporting undefined symbols. (aout_link_input_section_ext): Likewise. (aout_link_reloc_link_order): Use bfd_wrapped_link_hash_lookup. * bout.c (get_value): Likewise. * cofflink.c (_bfd_coff_reloc_link_order): Likewise. * ecoff.c (ecoff_reloc_link_order): Likewise. * elflink.h (elf_link_add_object_symbols): Likewise. (elf_reloc_link_order): Likewise. * linker.c (_bfd_generic_link_output_symbols): Likewise. (_bfd_generic_reloc_link_order): Likewise. (default_indirect_link_order): Likewise. * reloc16.c (bfd_coff_reloc16_get_value): Likewise. * sunos.c (sunos_add_one_symbol): Likewise. * xcofflink.c (xcoff_link_add_symbols): Likewise. (bfd_xcoff_link_count_reloc): Likewise. (xcoff_reloc_link_order): Likewise.
1996-02-19 * elf-bfd.h (struct elf_obj_tdata): Rename dt_needed_name toIan Lance Taylor1-7/+13
dt_name. (elf_dt_name): Rename from elf_dt_needed_name. * elf.c (bfd_elf_set_dt_needed_name): Use elf_dt_name, not elf_dt_needed_name. (bfd_elf_get_dt_soname): New function. * elflink.h (elf_link_add_object_symbols): Use elf_dt_name, not elf_dt_needed_name. Save the SONAME back in elf_dt_name. * bfd-in.h (bfd_elf_get_dt_soname): Declare. * bfd-in2.h: Rebuild.
1996-02-05 * elflink.h (elf_adjust_dynamic_symbol): Don't try to get theIan Lance Taylor1-2/+3
flavour of a section with no owner.
1996-02-01 * elf-bfd.h (ELF_LINK_NON_ELF): Define.Ian Lance Taylor1-0/+35
* elf.c (_bfd_elf_link_hash_newfunc): Set elf_link_hash_flags to ELF_LINK_NON_ELF. * elflink.h (elf_link_add_object_symbols): Reset ELF_LINK_NON_ELF flag for a newly defined symbol. (NAME(bfd_elf,record_link_assignment)): Likewise. (elf_adjust_dynamic_symbol): If ELF_LINK_NON_ELF is set, try to set the DEF or REF_REGULAR flags correctly.
1996-01-31 * elflink.h (elf_bfd_final_link): Don't output initial dummyIan Lance Taylor1-33/+45
symbol or section symbols if stripping all symbols and this is not a relocateable link. Don't output the symbol string table if there are no symbols. (elf_link_flush_output_syms): Don't do anything if there are no symbols to flush.
1996-01-29 * elflink.h (elf_link_add_object_symbols): Only set weakdef to aIan Lance Taylor1-2/+1
real defined symbol, not to a weak defined symbol.
1996-01-25Add more eabi relocationsMichael Meissner1-2/+2
1996-01-22Make 64k .sdata and .sdata2 sections work; fix typosMichael Meissner1-5/+1
1996-01-22 * elflink.h (elf_finish_pointer_linker_section): Fix typo.David Edelsohn1-1/+1
1996-01-22snapshot of eabi relocation support.Michael Meissner1-0/+235
1996-01-15update copyrightsIan Lance Taylor1-1/+1
1996-01-15 * elf32-mips.c: Numerous changes to dynamic linking code, mostlyIan Lance Taylor1-5/+2
from Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>. * elflink.h (elf_link_output_extsym): Remove special check for _rld_new_interface.
1996-01-11 * elf32-mips.c: Extensive changes for a start at dynamic linkingIan Lance Taylor1-50/+71
support, from Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>. * elf-bfd.h (struct elf_backend_data): Add type_change_ok field. (struct elf_backend_data): Remove elf_backend_create_program_headers field. Add elf_backend_additional_program_headers and elf_backend_modify_segment_map fields. * elfxx-target.h (elf_backend_type_change_ok): Define if not defined. (elf_backend_additional_program_headers): Likewise. (elf_backend_modify_segment_map): Likewise. (elf_backend_create_program_headers): Don't define. (elfNN_bed): Change to account for field changes. * elf.c (assign_file_positions_for_segments): Call new modify_segment_map backend function. Don't call old create_program_headers backend function. (get_program_header_size): Call additional_program_headers rather than create_program_headers. * elflink.h (elf_link_add_object_symbols): Initialize type_change_ok from new backend field. (elf_link_output_extsym): Don't warn if _rld_new_interface is defined. (elf_reloc_link_order): Treat a reloc against a defined symbol as a reloc against the appropriate section.
1995-12-08 * elflink.h (elf_link_add_object_symbols): Set section_count to 0Ian Lance Taylor1-0/+1
when setting sections to NULL. PR 8600.
1995-12-04 * elflink.h (elf_link_output_extsym): Just ignore warning andIan Lance Taylor1-0/+6
indirect references to symbols which don't really exist.
1995-12-01 * libbfd.c (bfd_malloc, bfd_realloc): New functions.Ian Lance Taylor1-57/+31
(bfd_zmalloc): Return PTR, not char *. Take size_t, not bfd_size_type. * libbfd-in.h (bfd_malloc, bfd_realloc): Declare. (bfd_zmalloc): Change declaration. * libbfd.h: Rebuild. * Many files: Use bfd_malloc and bfd_realloc rather than malloc and realloc. Don't set bfd_error_no_memory if they fail.
1995-11-29 * opncls.c (bfd_alloc_by_size_t): Set bfd_error_no_memory ifIan Lance Taylor1-24/+6
obstack_alloc fails. (bfd_alloc_finish): Set bfd_error_no_memory if obstack_finish fails. * libbfd.c (bfd_zmalloc): Set bfd_error_no_memory if malloc fails. * Many files: don't set bfd_error_no_memory if one of the above routines fails.
1995-11-17 * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Only createIan Lance Taylor1-4/+11
DT_INIT and DT_FINI entries if the _init or _fini symbol is defined or mentioned in a regular file. PR 8462.
1995-11-15comment fixIan Lance Taylor1-2/+1
1995-10-16 * bfd-in.h (struct bfd_link_needed_list): Rename fromIan Lance Taylor1-4/+3
bfd_elf_link_needed_list. * bfd-in2.h: Rebuild. * elf.c, elflink.h, libelf.h: Corresponding changes.
1995-10-11 * elflink.h (elf_link_add_object_symbols): Correct conditionsIan Lance Taylor1-7/+18
under which type and size change warnings are issued.
1995-10-10 * elflink.h (elf_link_add_object_symbols): Don't warn aboutIan Lance Taylor1-2/+9
changing the size or type if the old definition was weak.
1995-10-02 * elflink.h (elf_link_add_object_symbols): Don't let a weakIan Lance Taylor1-8/+24
dynamic symbol override a common symbol. Don't change the size or type if they have been set and the new symbol is not a definition. Warn if the size or type changes.
1995-09-12 Extensive minor changes to avoid various gcc warnings. Also:Ian Lance Taylor1-1/+1
* Makefile.in (BFD32_BACKENDS): Remove coff-arm.o. * archures.c (bfd_arch_info_type): Change mach field from long to unsigned long. (bfd_lookup_arch): Change machine parameter from long to unsigned long.
1995-09-01Fri Sep 1 15:18:50 1995 Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>Ian Lance Taylor1-7/+10
* elflink.h (elf_bfd_final_link): Don't change a DT_INIT or DT_FINI entry if the appropriate symbol is not in the hash table. * libelf.h (struct elf_backend_data): Add create_program_headers and want_hdr_in_seg fields. * elfxx-target.h (elf_backend_want_hdr_in_seg): Define if not defined. (elf_backend_create_program_headers): Likewise. (elfNN_bed): Initialize create_program_headers and want_hdr_in_seg. * elf.c (get_program_header_size): Call create_program_headers backend routine. (map_program_segments): Check want_hdr_in_seg backend field. Call create_program_headers backend routine. * elf.c (assign_file_positions_except_relocs): Align non allocated sections when creating an executable. * elfcode.h (elf_swap_phdr_in): Make non static. (elf_swap_phdr_out): Make non static. * libelf.h (bfd_elf32_swap_phdr_in): Declare. (bfd_elf32_swap_phdr_out): Declare. (bfd_elf64_swap_phdr_in): Declare. (bfd_elf64_swap_phdr_out): Declare.
1995-09-01 * elflink.h (elf_link_add_object_symbols): Handle indirect andIan Lance Taylor1-8/+64
warning symbols. If any section is named .gnu.warning.XXX, treat the contents as a warning to be issued if the symbol XXX is referenced. (elf_link_output_extsym): For an indirect or warning symbol, just output the symbol it points to.
1995-08-21 * linker.c (link_action): If an undefined reference follows anIan Lance Taylor1-1/+2
undefined weak reference, change the type to undefined. * elflink.h (elf_link_add_archive_symbols): Don't record an undefined weak reference as defined, in case it turns into a real undefined reference later in the same archive.
1995-08-14 * elflink.h (elf_link_add_object_symbols): If a symbol is a weakIan Lance Taylor1-5/+23
definition, add it to the dynamic symbol table if any dynamic object mentions it. If we do add it, make sure we add the corresponding real symbol. (elf_adjust_dynamic_symbol): Adjust a weak defined symbol which we put in the dynamic symbol table, even if no regular object refers to it. * elf32-i386.c (elf_i386_check_relocs): When creating a shared library, don't allocate space for a PC relative reloc against a local symbol. * elf32-m68k.c (elf_m68k_check_relocs): Likewise. * elf32-sparc.c (elf32_sparc_check_relocs): Likewise. * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Change assertion to accept symbol with weakdef set. * elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Likewise. * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise. * elf32-m68k.c (elf_m68k_relocate_section): When creating a shared libary, don't copy over a PC relative reloc against a local symbol. * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. PR 7711.
1995-07-13 * aoutx.h (NAME(aout,slurp_reloc_table)): Cast argument to size_tIan Lance Taylor1-3/+3
for malloc. * coff-mips.c (mips_relocate_section): Likewise, for memmove. (mips_relax_section): Likewise, for malloc. * cofflink.c (process_embedded_commands): Likewise. (_bfd_coff_final_link): Likewise. * ecoff.c (_bfd_ecoff_write_object_contents): Likewise. (ecoff_final_link_debug_accumulate): Likewise. (ecoff_indirect_link_order): Likewise, for memcpy and malloc. (ecoff_reloc_link_order): Likewise, for malloc. * ecofflink.c (ecoff_align_debug): Likewise, for memset. (ecoff_write_symhdr): Likewise, for malloc. * elf32-hppa.c (elf32_hppa_read_symext_info): Likewise. * elf.c (assign_file_positions_except_relocs): Likewise, for qsort. * elf32-mips.c (mips_elf_read_ecoff_info): Likewise, for malloc. * elfcode.h (elf_slurp_reloc_table): Likewise. * elfcore.h (elf_corefile_note): Likewise. * elflink.h (elf_link_add_object_symbols): Likewise. (elf_link_read_relocs): Likewise. (NAME(bfd_elf,size_dynamic_sections)): Likewise, for memset. * i386linux.c (bfd_linux_size_dynamic_sections): Likewise. * ieee.c (do_with_relocs): Likewise. * linker.c (default_indirect_link_order): Likewise, for malloc. * nlmcode.h (nlm_object_p): Likewise. (nlm_write_object_contents): Likewise. * oasys.c (oasys_set_section_contents): Likewise, for memcpy. * reloc.c (bfd_generic_get_relocated_section_contents): Likewise, for malloc. * section.c (bfd_get_section_contents): Likewise, for memcpy. * srec.c (srec_get_section_contents): Likewise. (srec_set_section_contents): Likewise. * sunos.c (bfd_sunos_size_dynamic_sections): Likewise, for realloc and memset. (sunos_scan_relocs): Likewise, for malloc. (sunos_scan_dynamic_symbol): Likewise, for realloc. * syms.c (_bfd_generic_read_minisymbols): Likewise, for malloc. * versados.c (versados_get_section_contents): Likewise, for memcpy.
1995-07-12fix some compilation warnings from sun ccKen Raeburn1-2/+3
1995-07-11 * aoutx.h (NAME(aout,link_add_symbols)): Don't bother to checkIan Lance Taylor1-18/+0
that archives hold a.out objects. * cf-i386lynx.c (coff_bfd_link_add_symbols): Don't define. (lynx_link_add_symbols): Remove. * cf-m68klynx.c (coff_bfd_link_add_symbols): Don't define. (lynx_link_add_symbols): Remove. * elflink.h (elf_bfd_link_add_symbols): Don't bother to check that archives hold ELF objects.
1995-07-11 * libelf.h (struct elf_size_info): Change type of last argument toIan Lance Taylor1-4/+5
swap_symbol_out from char * to PTR. (bfd_elf32_swap_symbol_out): Update declaration. (bfd_elf64_swap_symbol_out): Likewise. * elfcode.h (elf_swap_symbol_out): Change type of cdst from char * to PTR. * elf.c (swap_out_syms): Cast to PTR, not char *, when calling swap_symbol_out routine. * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Likewise. (elf_link_output_sym): Likewise. (elf_link_output_extsym): Likewise. * elf32-sparc.c (elf32_sparc_finish_dynamic_sections): Likewise.
1995-07-10 Based on patches from Eric Youngdale <eric@aib.com>:Ian Lance Taylor1-0/+16
* elflink.h (NAME(bfd_elf,size_dynamic_sections)): If -Bsymbolic, output a DT_SYMBOLIC dynamic entry. (elf_adjust_dynamic_symbol): If -Bsymbolic, don't require a PLT entry for a locally defined symbol. * elf32-i386.c (elf_i386_relocate_section): If -Bsymbolic, do warn about undefined symbols, and fill in the GOT entry for a symbol defined in a regular object file. (elf_i386_finish_dynamic_symbol): If -Bsymbolic, output a RELATIVE reloc rather than a GLOB_DAT reloc for a symbol defined in a regular object file. * elf32-m68k.c (elf_m68k_relocate_section): If -Bsymbolic, do warn about undefined symbols, and fill in the GOT entry for a symbol defined in a regular object file. (elf_m68k_finish_dynamic_symbol): If -Bsymbolic, output a RELATIVE reloc rather than a GLOB_DAT reloc for a symbol defined in a regular object file. * elf32-sparc.c (elf32_sparc_relocate_section): If -Bsymbolic, do warn about undefined symbols, and fill in the GOT entry for a symbol defined in a regular object file. (elf32_sparc_finish_dynamic_symbol): If -Bsymbolic, output a RELATIVE reloc rather than a GLOB_DAT reloc for a symbol defined in a regular object file.
1995-07-07fsf address update, but not in COPYING filesKen Raeburn1-1/+1
1995-07-06copyright noticesKen Raeburn1-0/+18
1995-07-06Added new files elflink.c, elflink.h, elfcore.h.Ken Raeburn1-0/+3018
Moved some mostly size-independent stuff from elfcode.h to elf.c, adding a data structure to elfcode.h with some misc data and callback functions. Added a pointer to that structure to the target back end data. More work can be done here. Renamed generic elf routines (not cpu-specific stuff) to start with bfd_elf or _bfd_elf. Updated most call sites, sometimes defined some macros. Moved some dynamic linking support code from m68k, sparc, i386 to common files, using target back end flags to control behavior. More work can probably be done here too. Moved core- and linker-support code out of elfcode.h to elf.c, elfcore.h, elflink.h, or elflink.c. Now elfcode.h contains only .o and executable support, plus #includes of elfcore.h and elflink.h. Much of the contents of these other header files can probably still be moved from the .h files to the .c files, to get compiled only once. Cleaned up some "gcc -Wall" warnings regarding unused or uninitialized variables, in generic and cpu-specific code.