(link_action): Change COMMON_ROW\indr from MDEF to CREF. Change
INDR_ROW\common from MDEF to CIND.
(_bfd_generic_link_add_one_symbol): In CREF case, handle an
existing symbol which is indirect rather than defined. Add new
CIND case.
file.
* srec.c (srec_data_list_struct): Move field next from last place
to first. Change type of data to bfd_byte *.
(struct srec_symbol): Define.
(tdata_type): Remove done_symbol_read, count, strings, symbol_idx,
string_size, string_idx. Change type of symbols to struct
srec_symbol *. Add symtail and csymbols.
(low, high): Remove.
(size_symbols, fillup_symbols, size_srec, fillup): Remove.
(white, skipwhite, pass_over, object_p): Remove.
(srec_mkobject): Call srec_init. Adjust tdata initialization for
field changes.
(srec_get_byte, srec_bad_byte): New static functions.
(srec_new_symbol, srec_scan): New static functions.
(srec_object_p): Change type of b to bfd_byte. Explicitly set
wrong_format error. Call srec_mkobject and srec_scan instead of
object_p.
(symbolsrec_object_p): Likewise. Also, change b to be only two
bytes.
(srec_read_section): New static function.
(srec_get_section_contents): Call srec_read_section rather than
pass_over. Handle zero length section correctly.
(set_set_arch_mach): Change from function to macro.
(srec_set_section_contents): Change data to bfd_byte *.
(srec_write_record): Change data, end and src to bfd_byte *.
(srec_write_header): Change buffer and dst to bfd_byte *.
(srec_write_section): Change location to bfd_byte *.
(srec_write_terminator): Change buffer to bfd_byte *.
(srec_get_symtab_upper_bound): Don't call
srec_get_section_contents.
(srec_get_symtab): Rewrite.
* i386netbsd.c, ns32knetbsd.c, sparcnetbsd.c: removed RCS Id's.
changed how PAGE_SIZE and SEGMENT_SIZE are defined so they are
consistant with each other.
* netbsd.h (N_HEADER_IN_TEXT, TEXT_START_ADDR): NetBSD fits its
header into the start of its text segment.
_construct_extended_name_table.
(bfd_target): Add _bfd_construct_extended_name_table.
* archive.c (_bfd_archive_bsd_construct_extended_name_table): New
function.
(_bfd_archive_coff_construct_extended_name_table): New function.
(_bfd_construct_extended_name_table): Renamed by adding a leading
underscore, and made externally visible. Added trailing_slash
argument, and used it instead of elf_style. Changed type of
tablen to bfd_size_type *.
(_bfd_write_archive_contents): Use BFD_SEND to call
construct_extended_name_table. Use the returned name.
* libbfd-in.h (_bfd_construct_extended_name_table): Declare.
(_bfd_noarchive_construct_extended_name_table): Define.
(_bfd_archive_bsd_construct_extended_name_table): Declare.
(_bfd_archive_coff_construct_extended_name_table): Declare.
* bfd-in2.h: Rebuild.
* libbfd.h: Rebuild.
* som.c (som_construct_extended_name_table): New static function.
* aout-target.h (MY_construct_extended_name_table): Define.
* coff-rs6000.c (rs6000coff_construct_extended_name_table):
Define.
* ieee.c (ieee_construct_extended_name_table): Define.
* libecoff.h (_bfd_ecoff_construct_extended_name_table): Define.
* oasys.c (oasys_construct_extended_name_table): Define.
objects were seen, even when linking PIC code.
* libelf.h (ELF_LINK_HASH_NEEDS_PLT): Define.
(struct elf_link_hash_table): Add field dynamic_sections_created.
* elfcode.h (elf_link_record_dynamic_symbol): Create dynstr if it
doesn't already exist.
(elf_link_add_object_symbols): Create dynamic sections based on
dynamic_sections_created field, not dynobj field. Don't bother to
set dynobj.
(elf_link_create_dynamic_sections): If dynamic sections were
already created, don't do anything. If dynobj is already set, use
it; otherwise, set it to the bfd argument. Don't initialize
dynsymcount. Only create dynstr if it does not exist. Set
dynamic_sections_created to true.
(NAME(bfd_elf,size_dynamic_sections)): Skip most of this function
if no dynamic objects were seen.
(elf_adjust_dynamic_symbol): If a symbol has the
ELF_LINK_HASH_NEEDS_PLT flag set, let the backend adjust it.
(elf_bfd_final_link): Change most decisions based on dynobj to
check dynamic_sections_created instead.
(elf_link_output_extsym): Only handle dynamic symbols if a dynamic
object was seen.
* elf.c (_bfd_elf_link_hash_table_init): Initialize new field
dynamic_sections_created. Set dynsymcount to 1, not 0.
* elf32-i386.c (elf_i386_create_dynamic_sections): Call
elf_i386_create_got_section rather than creating the .got and
.got.plt sections.
(elf_i386_create_got_section): New static function.
(elf_i386_check_relocs): Just call elf_i386_create_got_section if
a GOT table is needed, not bfd_elf32_link_create_dynamic_sections.
Only create the .rel.got section, and only make space for a reloc,
for a global symbol or when generating a shared object. For a
R_386_PLT32 reloc, just set the ELF_LINK_HASH_NEEDS_PLT flag.
(elf_i386_adjust_dynamic_symbol): Rework initial assertion to
permit ELF_LINK_HASH_NEEDS_PLT non dynamic symbols. Create a
procedure linkage table entry for such symbols. But, if no
dynamic objects were seen, never create a PLT entry.
(elf_i386_size_dynamic_sections): If no dynamic objects were seen,
skip most of this function, and force the size of the .rel.got
section to zero.
(elf_i386_relocate_section): For a R_386_GOT32 reloc against a global
symbol when no dynamic object was seen, initialize the contents of
the .got section. For a R_386_GOT32 against a local symbol, only
create a R_386_RELATIVE reloc when generating a shared object.
Treat a R_386_PLT32 reloc against a symbol for which we did not
create a PLT entry as a R_386_PC32 reloc.
(elf_i386_finish_dynamic_sections): Only fiddle with the dynamic
entries and the PLT if we saw a dynamic object.
* elf32-sparc.c (elf_sparc_howto_table): Fix R_SPARC_PC22 by
setting rightshift to 10. Fix R_SPARC_WPLT20 by setting
rightshift to 2, size to 2, bitsize to 30, and dst_mask to
0x3fffffff.
(elf32_sparc_create_dynamic_sections): Don't set the size of the
.plt section. Call elf32_sparc_create_got_section rather than
creating the .got section.
(elf32_sparc_check_relocs): Call elf32_sparc_create_got_section if
a GOT table is needed, not bfd_elf32_link_create_dynamic_sections.
Only create the .rela.got section, and only make space for a
reloc, for a global symbol or when generating a shared object.
Set the alignment of the .rela.got section to 2. For a
R_SPARC_WPLT30 reloc, just set the ELF_LINK_HASH_NEEDS_PLT flag.
(elf32_sparc_adjust_dynamic_symbol): Rework initial assertion to
permit ELF_LINK_HASH_NEDS_PLT non dynamic symbols. Create a
procedure linkage table for such symbols. But, if no dynamic
objects were seen, never create a PLT entry. Initialize the size
of the .plt section.
(elf32_sparc_size_dynamic_sections): If no dynamic objects were
seen, skip most of this function, and force the size of the
.rela.got section to zero. Strip empty reloc sections, and strip
an empty .plt section.
(elf32_sparc_relocate_section): For a GOT reloc against a global
symbol when no dynamic object was seen, initialize the contents of
the .got section. For a GOT reloc against a local symbol, only
create a R_SPARC_RELATIVE reloc when generating a shared object.
Treat a R_SPARC_WPLT30 reloc against a symbol for which we did not
create a PLT entry as a R_SPARC_WDISP30 reloc.
(elf32_sparc_finish_dynamic_sections): Only fiddle with the
dynamic entries and the PLT if we saw a dynamic object.
in a section not owned by any BFD.
(elf_section_from_bfd_section): Separate out loop which calls
backend routine. Check bfd_section and call the backend routine
even for a section not owned by any BFD.
* elf32-mips.c (mips_elf_section_from_bfd_section): Handle
.acommon section.
storage class slightly more verbose. It's not clear how many
characters I can justify using up, but before this change they
both were abbreviated "sc" which is (IMHO) clearly unacceptable.
rather than messing with Elf_Sym_Extra. Store the symbol index in
the udata.i field.
(swap_out_syms): Use outbound_syms as a pointer rather than as an
array. Don't worry about elf_sym_num.
(elf_symbol_from_bfd_symbol): Use udata.i rather than just udata.
* libelf.h (struct elf_sym_extra): Don't define.
(Elf_Sym_Extra): Don't define.
(struct elf_obj_tdata): Remove sym_extra field.
(elf_sym_extra): Don't define.
* elf32-hppa.c (elf32_hppa_backend_final_write_processing): Use
udata.i rather than elf_sym_extra array.
(elf32_hppa_backend_symbol_table_processing): Don't set
symextn_hdr->size; just use sh_size.
* elfcode.h (elf_stringtab_init): New static function.
(bfd_new_strtab, bfd_add_to_strtab, bfd_add_2_to_strtab): Remove.
Change all callers to use elf_stringtab_init or
_bfd_stringtab_add, and get stringtab lengths using
_bfd_stringtab_size.
(elf_fake_sections): Change ignored argument to pointer to
boolean, and set the boolean to true if an error occurs. If an
error has already occurred, don't do anything.
(assign_section_numbers): Just set sh_size, not contents.
(elf_compute_section_file_positions): Pass the address of a
boolean to elf_fake_sections. Pass the address of a
bfd_strtab_hash to swap_out_syms. Write out the .strtab section.
(prep_headers): Change shstrtab to bfd_strtab_hash.
(swap_out_syms): Take a pointer to a bfd_strtab_hash as an
argument. Set it to the symbol names.
(NAME(bfd_elf,write_object_contents)): Write out the section
header names using _bfd_stringtab_emit.
(elf_debug_section): Remove first argument; get the section name
via the bfd_section pointer. Change caller.
(elf_bfd_final_link): Write out the symbol names using
_bfd_stringtab_emit. Likewise for the .dynstr section contents.
Free the symbol names at the end of the function.
(elf_link_input_bfd): Remove the last argument, output_names,
from relocate_section. Save the old symbol contents before
calling elf_link_output_sym, and restore them afterward.
* libelf.h (struct elf_link_hash_table): Change dynstr field to
struct bfd_strtab_hash.
(struct elf_backend_data): Remove last argument, output_names,
from elf_backend_relocate_section field.
(struct strtab): Don't define.
(struct elf_obj_tdata): Change strtab_ptr field to struct
bfd_strtab_hash.
* elf32-hppa.c (elf32_hppa_relocate_section): Remove last
argument, output_names.
* elf32-i386.c (elf_i386_relocate_section): Likewise.
* elf32-mips.c (mips_elf_relocate_section): Likewise.
* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
Clear contents field.
(bfd_section_from_shdr): In SHT_STRTAB case, check bfd_section,
not rawdata. Don't set rawdata if e_shstrndx. Use bfd_section
rather than rawdata in commented out code. In SHT_REL[A] case,
don't bother to check elf_section_data of section returned by
section_from_elf_index.
(elf_fake_sections): Set bfd_section, not rawdata. Don't set
size.
(elf_map_symbols): Don't set elf_num_section_syms. Don't create
section symbols that already exist.
(assign_file_position_for_section): Use bfd_section, not rawdata.
(section_from_elf_index): Just check bfd_section field.
(elf_section_from_bfd_section): Likewise.
(elf_debug_section): Don't print rawdata, contents, or size.
(elf_link_add_object_symbols): Don't error out if
section_from_elf_index returns NULL.
(elf_bfd_final_link): Check return value from
section_from_elf_index against NULL, not bfd_is_abs_section.
(elf_link_input_bfd): Don't check section_from_elf_index return
value.
* libelf.h (struct elf_obj_tdata): Remove num_section_syms field.
(elf_num_section_syms): Don't define.
* elf.c (elf_get_str_section): Store section contents in contents
field rather than rawdata field.
(elf_string_from_elf_section): Likewise.
(_bfd_elf_make_section_from_shdr): Store BFD section pointer in
bfd_section field rather than rawdata field.
* elf32-hppa.c (elf32_hppa_read_symext_info): Use bfd_section
rather than rawdata.
(elf32_hppa_size_stubs): Likewise.
* elf32-mips.c (mips_elf_final_write_processing): Use bfd_section
rathern than rawdata.
(mips_elf_section_from_shdr): Likewise.
(mips_elf_section_processing): Likewise.
(mips_elf_section_from_bfd_section): Remove rawdata check.
* elf32-i386.c (elf_i386_check_relocs): Make sure that a symbol
with a global offset table entry or a procedure linkage table
entry is added to the dynamic symbol table.
* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
* elf32-i386.c (elf_i386_adjust_dynamic_symbol): If a symbol has
already gotten a procedure linkage table entry, change the
definition to the PLT entry.
* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise.
type.
(coff_read_string_table): Cast argument to bfd_h_get_32 to correct type.
* elfcode.h (elf_link_output_extsym): Cast argument to bfd_elf_hash to correct
type.
use COFF_DEFAULT_SECTION_ALIGNMENT_POWER instead. Force the .stab
and .stabstr sections to be aligned to no more than 2. Remove
COFF_SPARC special cases.
* coff-a29k.c: Define COFF_DEFAULT_SECTION_ALIGNMENT_POWER.
* coff-apollo.c, coff-go32.c, coff-h8300.c: Likewise.
* coff-h8500.c, coff-i386.c, coff-i960.c, coff-m68k.c: Likewise.
* coff-m88k.c, coff-rs6000.c, coff-sh.c, coff-sparc.c: Likewise.
* coff-we32k.c, coff-z8k.c: Likewise.
PR 5706.