for a section even if it is not loaded.
Otherwise compiling this
static char bar; char *foo() { return &bar; }
without -fpic and then doing ld -shared OBJECT dumps core.
section VMA.
(_bfd_coff_link_input_bfd): Separate section VMA handling for
input and output files.
(_bfd_coff_generic_relocate_section): Check whether input file,
not output file, is a PE file.
global_to_static member for support of task linking.
(_bfd_coff_write_task_globals): Add prototype.
* libcoff.h: Regenerate.
* coffcode.h (coff_write_object_contents): Use #ifdef to
check RS6000COFF_C, to be consistent with all other uses
in this file.
* cofflink.c (_bfd_coff_final_link): If doing task linking,
call _bfd_coff_write_task_globals.
(_bfd_coff_link_input_bfd): If doing task linking, convert
global functions to static.
(_bfd_coff_write_global_sym): If doing task linking, convert
global variables to static.
(_bfd_coff_write_task_globals): New function.
* coff-tic80.c (TIC80COFF): Define this instead of just TIC80.
(C_AUTOARG): #undef since it clashes with C_UEXT.
(C_LASTENT): #undef since it clashes with C_STATLAB.
* coffcode.h (coff_write_object_contents): Use TIC80COFF
rather than TIC80.
(coff_slurp_symbol_table): Use C_SYSTEM. Hide C_AUTOARG use
when TIC80COFF defined (clashes with C_UEXT). Explicitly
recognize C_UEXT, C_STATLAB, and C_EXTLAB as unsupported.
PR 12236
name of R_RELLONG to "RELLONG". Set rightshift and complain for
M_PPCR.
(ppbase_reloc, glob15_reloc): New static functions.
(glob16_reloc, local16_reloc): New static functions.
(rtype2howto): Handle all relocation types.
(coff_tic80_relocate_section): New static function.
(coff_relocate_section): Define to coff_tic80_relocate_section.
* Makefile.in (coff-tic80.o): Depends upon include/coff/tic80.h.
COFF_IMAGE_WITH_PE, don't subtract the section VMA from the symbol
value.
* coffgen.c (fixup_symbol_value): Add abfd parameter. Change all
callers. If PE file, don't add section VMA.
(coff_write_alien_symbol): If PE file, don't add section VMA.
* cofflink.c (_bfd_coff_link_input_bfd): Likewise.
(_bfd_coff_write_global_sym): Likewise.
(_bfd_coff_generic_relocate_section): Likewise.
the symbols associated with each BFD.
(mn10300_elf_relax_delete_bytes): Don't adjust the same symbol
more than once.
* elf-m10200.c: Likewise.
* elf32-m32r.c: Likewise.
* elf32-sh.c: Likewise.
alignment of a common symbol. If two symbols that look like
common symbols are found in two shared libraries, and the size is
different, use the larger size, and warn if --warn-common. If a
common symbol overrides a definition in a shared library, set the
size to the larger size, and warn if --warn-common.
architecture variant in the BFD and COFF structures. This goes towards
fixing PRs 11709 and 11326 and will integrate with future updates to LD and
GCC.
* elf32-m68k.c: Follow the last changes in elf32-i386.c:
(struct elf_m68k_pcrel_relocs_copied, struct
elf_m68k_link_hash_entry, struct elf_m68k_link_hash_table,
elf_m68k_link_hash_traverse, elf_m68k_hash_table,
elf_m68k_link_hash_newfunc, elf_m68k_link_hash_table_create,
elf_m68k_discard_copies, bfd_elf32_bfd_link_hash_table_create):
New definitions.
(elf_m68k_check_relocs): If linking with -Bsymbolic, don't copy
PC relative relocs for a global symbol defined in a regular
object, and count the number of PC relative relocs copied for any
global symbol.
(elf_m68k_size_dynamic_sections): If linking with -Bsymbolic,
traverse with elf_m68k_discard_copies.
but with an added LITERALSLEAZY entry.
(alpha_adjust_reloc_in): Add handling of LITERALSLEAZY relocs. Use
info on the howto_table gotten from the ecoff_backend data.
(alpha_ecoff_get_relocated_section_contents): Ditto.
(alpha_bfd_reloc_type_lookup): Ditto.
(alpha_relocate_section): Ditto. Also remove an assertion
causing failures on *BSD/alpha systems.
(alpha_ecoff_backend_data): Addition of fields to handle different
howto tables as well as a has_literalseazy flag.
(bsd_alpha_ecoff_backend_data): New backend data structure for *BSD.
(bsd_ecoffalpha_little_vec): Define.
* coff-mips.c (MIPS_HOWTO_COUNT): Removed, it's unused.
(mips_adjust_reloc_in): Use new ecoff_backend data to get at the howto
table.
(mips_bfd_reloc_type_lookup): Ditto.
(mips_relocate_section): Ditto.
(mips_ecoff_backend_data): Addition of fields to handle different
howto tables as well as a has_literalseazy flag.
* config.bfd: (alpha-*-openbsd*): New target.
* configure.in (alpha*-*-openbsd*): New target.
(bsd_ecoffalpha_little_vec): New vector for *BSD/Alpha ECOFF.
* ecoff.c (_bfd_ecoff_set_arch_mach_hook): Handle new magic.
(ecoff_get_magic): Ditto.
* libecoff.h (ecoff_backend_data): Addition of fields to handle
different howto tables as well as a has_literalseazy flag.
* reloc.c: BFD_RELOC_ALPHA_LITERALSLEAZY): New reloc.
* targets.c (bsd_ecoffalpha_little_vec): Declare.
(bfd_target_vector): Include the bsd_ecoffalpha_little_vec target.
* configure, bfd-in2.h, libbfd.h: Rebuild.
(struct elf_i386_link_hash_entry): Define.
(struct elf_i386_link_hash_table): Define.
(elf_i386_link_hash_traverse): Define.
(elf_i386_hash_table): Define.
(elf_i386_link_hash_newfunc): New static function.
(elf_i386_link_hash_table_create): New static function.
(elf_i386_check_relocs): If linking with -Bsymbolic, don't copy
PC relative relocs for a global symbol defined in a regular
object, and count the number of PC relative relocs copied for any
global symbol.
(elf_i386_size_dynamic_sections): If linking with -Bsymbolic,
traverse with elf_i386_discard_copies.
(elf_i386_discard_copies): New static function.
(bfd_elf32_bfd_link_hash_table_create): Define.
<gwr@mc.com>.
* libaout.h (struct aout_backend_data): Add entry_is_text_address
field.
* aout-target.h (SEGMENT_SIZE): Define to TARGET_PAGE_SIZE at the
start of the file. Remove uses later on which switch using
ifdef.
(MY(callback)): Handle entry_is_text_address.
(MY_entry_is_text_address): Define if not defined.
(MY(backend_data)): Initialize new field.
* aoutf1.h (sunos4_aout_backend): Likewise.
* i386aout.c (MY(backend_data)): Likewise.
* i386mach3.c (MY(backend_data)): Likewise.
* mipsbsd.c (MY(backend_data)): Likewise.
* sparclynx.c (sparclynx_aout_backend): Likewise.
* netbsd.h (SEGMENT_SIZE): Define if not defined.
(MY_entry_is_text_address): Define.
* m68knetbsd.c (SEGMENT_SIZE): Define as 0x20000
* stabs.c (struct stab_section_info): New field
`cumulative_skips'.
(_bfd_link_section_stabs): Fill the above array.
(_bfd_stab_section_offset): Use `cumulative_skips' to
speed up offset calculation.
reloc even if the symbol is in the .bss section.
* elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Likewise.
* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Likewise.
* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Likewise.
_bfd_coff_default_section_alignment_power.
(bfd_coff_default_section_alignment_power): Define.
(bfd_coff_std_swap_table): Initialize new field.
* libcoff.h: Rebuild.
* cofflink.c (coff_link_add_symbols): Limit alignment of a common
symbol to the default section alignment.
symbol. Check for memory allocation failure of *psinfo.
(_bfd_write_section_stabs): Add psinfo parameter. Change all
callers. Set the value of the header symbol.
* libbfd-in.h (_bfd_write_section_stabs): Update declaration.
* libbfd.h: Rebuild.
the string constant.
* targets.c (UNSUPPORTED_TARGET): Don't define.
(find_target): Don't check for UNSUPPORTED_TARGET.
(bfd_set_default_target): Don't try to optimize by checking for
default.
count section symbols for sections that were created by the
linker, or are not allocatable or not loadable.
(elf32_sparc_finish_dynamic_sections): Output output section
symbols for section for which we made space for them.
* coff-svm68k.c: New file. Just defines some macros and includes
coff-m68k.c.
* coff-m68k.c: Add functions to handle common addends, moved in
from cf-m68klynx.c. Control them using COFF_COMMON_ADDEND macro.
Control whether relocs are visible using STATIC_RELOCS.
* cf-m68klynx.c: Simplify greatly: just define macros to control
coff-m68k.c.
* coff-aux.c: Likewise. Just leave add_one_symbol routine.
* targets. (m68ksysvcoff_vec): Declare.
(bfd_target_vector): Add m68ksysvcoff_vec.
* config.bfd (m68*-motorola-sysv*): New target.
* configure.in (m68ksysvcoff_vec): New vector.
* configure: Rebuild.
* Makefile.in: Rebuild dependencies.
(BFD32_BACKENDS): Add coff-svm68k.o.
(BFD32_BACKENDS_CFILES): Add coff-svm68k.c.
(struct bfd_hash_table): Change memory field to PTR.
* bfd.c (struct _bfd): Change memory field to PTR.
* bfd-in2.h: Rebuild.
* libbfd-in.h (bfd_release): Declare as function, don't define as
macro.
* libbfd.h: Rebuild.
* opncls.c: Include "objalloc.h" rather than "obstack.h". Use
objalloc routines rather than obstack routines.
(obstack_chunk_alloc, obstack_chunk_free): Don't define.
(getpagesize): Don't define.
(_bfd_new_bfd): Don't set _bfd_chunksize.
(bfd_openr): Free new bfd and objalloc on failure.
(bfd_fdopenr, bfd_openstreamr, bfd_openw): Likewise.
(bfd_alloc_size): Remove.
(bfd_release): New function.
* hash.c: Include "objalloc.h" rather than "obstack.h". Use
objalloc routines rather than obstack routines.
(obstack_chunk_alloc, obstack_chunk_free): Don't define.
* ecofflink.c: Include "objalloc.h" rather than "obstack.h". Use
objalloc routines rather than obstack routines.
(obstack_chunk_alloc, obstack_chunk_free): Don't define.
(struct accumulate): Change memory to struct objalloc *.
* liboasys.h (oasys_data_type): Remove oasys_obstack field.
* dep-in.sed: Don't remove obstack.h from dependency list.
* Makefile.in: Rebuild dependencies.
(BFD_H_DEPS): Remove obstack.h.
(install): Don't install obstack.h.
* Many files: Don't include "obstack.h".
* VERSION: Bump.
old version of bfd_alloc.
* libbfd-in.h (bfd_alloc_by_size_t): Don't declare.
* libbfd.h: Rebuild.
* Several files: Call bfd_alloc rather than bfd_alloc_by_size_t.
* configure.in (powerpc-*-beos*): Add case that explicitly
does not set COREFILE for now. A future BeOS version is
expected to support core files.
* configure: Regenerate with autoconf.
setting ever. Sanity check the version number. Sort out copying
flags and other information when adding an indirect symbol.
(NAME(bfd_elf,size_dynamic_sections)): Preserve any dynamic
symbols added by the backend. Clear the entire contents of the
versym section.
(elf_export_symbol): Ignore indirect symbols.
(elf_link_output_extsym): Accept a section without an owner in an
assert.
* elfcode.h (elf_slurp_symbol_table): Add a sanity check on the
version count. Correct the allocation of x_versymp.
the magic sections used for SHN_MIPS_TEXT and SHN_MIPS_DATA.
Don't return bfd_und_section_ptr when info->shared.
(mips_elf_final_link): Set the alignment of .rtproc to 4, not 12.
(mips_elf_create_dynamic_sections): Correct type: ^= for &=.
(mips_elf_check_relocs): Resolve an indirect symbol in
sym_hashes.
(mips_elf_finish_dynamic_symbol): Don't change SHN_ABS into
SHN_MIPS_TEXT or SHN_MIPS_DATA.
* elf-bfd.h (ELF_LINK_FORCED_LOCAL): Define.
* elf.c (bfd_elf_print_symbol): Correct errors in last change.
* elflink.h (elf_link_add_object_symbols): Handle cases in which a
versioned symbol appears in both a regular and a shared object.
(elf_link_assign_sym_version): Set ELF_LINK_FORCED_LOCAL when
appropriate. Improve error message.
(struct elf_outext_info): Rename from elf_finfo_failed. Change
all uses. Add localsyms field.
(elf_bfd_final_link): When generating a shared library, call
elf_link_output_extsym to output all local symbols.
(elf_link_output_extsym): Handle symbols which were forced to
become local.
* elf-bfd.h (elf_symbol_type): Add version field.
* elfcode.h (elf_slurp_symbol_table): Set version field.
* elflink.h (elf_link_add_object_symbols): When creating an
indirect symbol for a default version symbol, set DEF_DYNAMIC if
appropriate. Set up an indirection from the nondefault version of
the symbol as well.
(NAME(bfd_elf,size_dynamic_sections)): Call
elf_link_assign_sym_version before checking whether there are any
versions. Always record the version name as a dynamic symbol.
Initialize counters.
(elf_link_assign_sym_version): After finding a version, see if a
symbol should be forced to local scope. Create a new version
definition if appropriate.
(elf_link_output_extsym): Correct indirect symbol handling.
* elf.c (bfd_elf_print_symbol): Print version information.
(bfd_section_from_shdr): Turn version sections into BFD sections.
(elf_fake_sections): Only copy cverdefs and cverrefs into sh_info
if sh_info is not already set.
(_bfd_elf_copy_private_section_data): Copy sh_info for version
sections.
* elflink.c (_bfd_elf_link_record_dynamic_symbol): Tell
_bfd_stringtab_add to copy the name into permanent memory if
appropriate.
_bfd_coff_compute_section_file_positions to return a boolean
value. Change all callers.
(coff_compute_section_file_positions): Change return type to
boolean. If the size of the last section changed, then output a
zero byte at the end of the file.
* libcoff.h: Rebuild.
PR 11806.
for at least 6 output symbols.
(xcoff_write_global_symbol): When emitting TOC entry relocs, also
emit a TC csect to represent the space they take up. For an XO
symbol, just emit a reference, not a csect.
PR 11793.
relocs. Replace them with generic PCREL_{8,16,32} relocs.
(elf32_mn10300_howto_table): Likewise.
(elf32_mn10300_reloc_map): Likewise.
(bfd_elf32_mn10300_reloc): Delete unused function.
Simplify the mn10300 port. Stuff I noticed while working on the mn10200.
* coff-tic80.c (rtype2howto): If passed a relocation type we don't
understand, just set the howto field to NULL, and the caller will
print an appropriate error message.
end-sanitize-tic80
* coffcode.h (coff_slurp_reloc_table): Pull duplicate declarations and
code fragment out of both legs of #ifdef RELOC_PROCESSING ... #endif
block. Use NULL for initializations of "ptr" rather than bare 0.
* coff-h8300.c: Fix typo in comment.
* coff-h8500.c: Ditto.
* coff-w65.c: Ditto
* coff-z8k.c: Ditto.
(find_target): New static function, broken out of
bfd_find_target.
(bfd_set_default_target): New function.
(bfd_find_target): Call find_target. When defaulting, use
bfd_default_vector[0] if it is not NULL.
* libbfd-in.h (bfd_default_vector): Adjust declaration.
* bfd-in2.h, libbfd.h: Rebuild.
_bfd_elf_is_local_label_name if not already defined.
* elf.c (_bfd_elf_is_local_label_name): New function.
* elf-bfd.h (_bfd_elf_is_local_label_name): Declare.
to _bfd_is_local_label_name.
(bfd_target): Likewise.
* syms.c (bfd_is_local_label): Define as function, not macro.
(bfd_is_local_name): Define.
* libbfd.c (bfd_generic_is_local_label_name): Rename from
bfd_generic_is_local_label, and take a string rather than a
symbol.
* libbfd-in.h (_bfd_nosymbols_bfd_is_local_label): Don't define.
(_bfd_nosymbols_bfd_is_local_label_name): Define.
(bfd_generic_is_local_label): Don't declare.
(bfd_generic_is_local_label_name): Declare.
* bfd-in2.h, libbfd.h: Rebuild.
* All backends: Change local_label to local_label_name.
(mips_elf_relocate_got_local): Change return type to boolean.
Don't assume that the first zero entry is unassigned; instead, use
assigned_gotno.
(mips_elf_relocate_section): Check return value of
mips_elf_relocate_got_local.
(mips_elf_create_got_section): Initialize assigned_gotno field.
name begins with ".note".
(map_sections_to_segments): Add a PT_NOTE segment for any loadable
section whose name begins with ".note".
(get_program_header_size): Corresponding change.
* elflink.h (elf_link_add_archive_symbols): If a default symbol is
not found, try looking it up again without the version name.
(elf_link_add_object_symbols): Always link against the dynamic
symbol table of a dynamic object. When linking against a dynamic
object, include version strings in symbol names, and set up
version information. Add indirect symbols for default versions.
(elf_link_create_dynamic_sections): Add special version sections.
(struct elf_assign_sym_version_info): Define.
(struct elf_find_verdep_info): Define.
(NAME(bfd_elf,size_dynamic_sections)): Add verdefs parameter. Set
up version sections.
(elf_adjust_dynamic_symbol): Ignore indirect symbols.
(elf_link_find_version_dependencies): New static function.
(elf_link_assign_sym_version): New static function.
(elf_link_renumber_dynsyms): New static function.
(struct elf_final_link_info): Add symver_sec field.
(elf_bfd_final_link): Initialize finfo.symver_sec. Don't count
local symbols of a dynamic object. Handle DT_VER* constants.
(elf_link_output_extsym): Simplify BFD_ASSERT checking for a
dynamic object. Skip indirect symbols from ELF objects. Remove
the version name before choosing a hash bucket. Write out the
version information if appropriate.
(elf_link_input_bfd): Check for DYNAMIC, not ET_DYN.
* bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration.
(bfd_elf64_size_dynamic_sections): Likewise.
* bfd-in2.h: Rebuild.
* elf-bfd.h (struct elf_link_hash_entry): Add verinfo field.
Change elf_link_hash_flags to unsigned short.
(ELF_LINK_HIDDEN): Define.
(struct elf_obj_tdata): Add fields dynversym_hdr, dynverref_hdr,
dynverdef_hdr, dynversym_section, dynverdef_section,
dynverref_section, cverdefs, cverrefs, verdef, verref.
(elf_dynversym, elf_dynverdef, elf_dynverref): Define.
(_bfd_elf_swap_verdef_in, _bfd_elf_swap_verdef_out): Declare.
(_bfd_elf_swap_verdaux_in, _bfd_elf_swap_verdaux_out): Declare.
(_bfd_elf_swap_verneed_in, _bfd_elf_swap_verneed_out): Declare.
(_bfd_elf_swap_vernaux_in, _bfd_elf_swap_vernaux_out): Declare.
(_bfd_elf_swap_versym_in, _bfd_elf_swap_versym_out): Declare.
(_bfd_elf_slurp_version_tables): Declare.
* elf.c (_bfd_elf_swap_verdef_in): New function.
(_bfd_elf_swap_verdef_out): Likewise.
(_bfd_elf_swap_verdaux_in, _bfd_elf_swap_verdaux_out): Likewise.
(_bfd_elf_swap_verneed_in, _bfd_elf_swap_verneed_out): Likewise.
(_bfd_elf_swap_vernaux_in, _bfd_elf_swap_vernaux_out): Likewise.
(_bfd_elf_swap_versym_in, _bfd_elf_swap_versym_out): Likewise.
(_bfd_elf_print_private_bfd_data): Add DT_VER* constants. Print
version information if there is any.
(_bfd_elf_link_hash_newfunc): Initialize verinfo field.
(bfd_section_from_shdr): Handle SHT_GNU_ver* section types.
(elf_fake_sections): Handle .gnu.version* section names.
(assign_section_numbers): Handle SHT_GNU_ver* section types.
(_bfd_elf_slurp_version_tables): New function.
* elflink.c (_bfd_elf_link_record_dynamic_symbol): Don't include
version name in string entered in dynamic hash table.
* elfcode.h: Include fnmatch.h.
* elf32-i386.c (elf_i386_relocate_section): Handle a dynamic
symbol which was forced to become local.
* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
* elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise.
somewhat.
(mn10200_elf_relax_section): Correctly compute a symbol's value
when the symbol is local, but not in the same section as we are
relaxing. Implement abs24 -> abs16, imm24 -> imm16 and d24 -> d16
relaxing.
Another 1.3% size reduction for hello world. Only relaxing left todo is
imm16 -> imm8 and d16 -> d8 where applicable.
Store lower 16 bits of addend in R_M32R_HI16_[SU]LO insns.
Add small data area support (R_M32R_SDA16).
* reloc.c: Document BFD_RELOC_M32R_SDA16.
* bfd-in2.h,libbfd.h: Regenerated.
* reloc.c (BFD_RELOC_ALPHA_CODEADDR): New relocation for
openVMS/Alpha.
* evax.h (ALPHA_R_CODEADDR): New relocation.
* evax-alpha.c (ALPHA_R_CODEADDR): 64 bit procedure relocation for
openVMS/Alpha.
* evax-etir.c (ALPHA_R_CODEADDR): Output object code for this
relocation.
* bfd-in2.h, libbfd.h: Rebuild.
Restrict symbol length to 64 bytes, case preserving:
* evax-emh.c (_bfd_evax_write_emh): Remove case hacking.
* evax-misc.c (_bfd_evax_case_hack_symbol): Remove.
(_bfd_evax_length_hash_symbol): Added.
* evax-etir.c (_bfd_evax_write_etir): Call
_bfd_evax_length_hash_symbol before output of symbol.
* evax-egsd.c (_bfd_evax_write_egsd): Likewise.
* evax.h (flag_hash_long_names, flag_show_after_trunc): Remove.
* evax-emh.c: Output filename to object file without path.
* evax-egsd.c: New sections for local and global commons.
* evax-alpha.c, evax-emh.c, evax-egsd.c, evax-etir.c,
evax-misc.c, evax.h: Remove 8 bit characters from copyright
notices. Replace AXP with Alpha.
(struct mips_elf_link_hash_entry): Add new fields fn_stub,
need_fn_sub, call_stub, and call_fp_stub.
(struct mips_elf_link_hash_table): Add field mips16_stubs_seen.
(mips_elf_link_hash_newfunc): Initialize new fields.
(mips_elf_link_hash_table_create): Likewise.
(mips_elf_relocate_section): Redirect relocations to use mips16
stubs when appropriate.
(mips_elf_check_relocs): Attach stub sections to the appropriate
symbol. Set need_fn_stub when appropriate.
(mips_elf_always_size_sections): New static function.
(mips_elf_check_mips16_stubs): New static function.
(elf_backend_always_size_sections): Define.
* elf-bfd.h (struct elf_obj_tdata): Add local_stubs field.
relocateable link, just skip pc_relative pcrel_offset relocs.
* coff-arm.c (coff_arm_rtype_to_howto): Return a different howto
structure for an ARM26 reloc which can be resolved.
(coff_arm_adjust_symndx): Only convert ARM26 to ARM26D if the
reloc can be resolved.
PR 11599.
relocations against the text segment, look up the output name of
the reloc section.
* elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
* elf32-mips.c (mips_elf_size_dynamic_sections): Likewise.
* elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
* elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise.
Use bfd_elf_generic_reloc as special function for all relocs.
(bfd_elf32_mn10200_reloc): Remove unnecessary function.
Working on relocs for the mn10200.