Import of Binutils from the FSF 2.12 branch (just post-.1 release).

These bits are taken from the FSF anoncvs repo on 22-June-2002 23:28:00 EDT.
This commit is contained in:
David E. O'Brien 2002-07-05 20:16:34 +00:00
parent 0aecce1e34
commit c7549e32a4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/vendor/binutils/dist/; revision=99461
105 changed files with 13481 additions and 3252 deletions

View File

@ -1,3 +1,311 @@
2002-05-14 Daniel Jacobowitz <drow@mvista.com>
* configure.in: Set is_release=y for 2.12.1 release.
* configure: Likewise.
2002-05-13 David Edelsohn <edelsohn@gnu.org>
* configure.in: Auto-configure HAVE_ST_C_IMPL.
* configure: Regenerate.
* config.in: Regenerate.
* rs6000-core.c (CNEW_IMPL): Guard use of c_impl with HAVE_ST_C_IMPL
or AIX_5_CORE.
2002-05-11 Daniel Jacobowitz <drow@mvista.com>
Merge from mainline (to elf32-mips.c):
2002-05-03 H.J. Lu (hjl@gnu.org)
* elfxx-mips.c (mips_elf_link_hash_entry): Add forced_local.
(mips_elf_link_hash_newfunc): Initialize forced_local to false.
(mips_elf_record_global_got_symbol): Call _bfd_mips_elf_hide_symbol
to hide a global symbol.
(_bfd_mips_elf_hide_symbol): Return if forced_local is true. Set
forced_local to true.
2002-05-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
Daniel Jacobowitz <drow@mvista.com>
* coff-sh.c (sh_reloc_map): Map to R_SH_IMM32 for non-PE. Don't
map BFD_RELOC_RVA.
2002-05-09 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c (RA_REGISTER_MASK, RA_REGISTER_SHIFT): Delete.
Merge from mainline
2002-05-08 Alan Modra <amodra@bigpond.net.au>
* elf32-ppc.c (ppc_elf_create_got): New function.
(ppc_elf_create_dynamic_sections): Call ppc_elf_create_got before
_bfd_elf_create_dynamic_sections. Correct .plt flags.
(ppc_elf_check_relocs): Use ppc_elf_create_got in place of
_bfd_elf_create_got_section.
2002-05-07 Alan Modra <amodra@bigpond.net.au>
* elf-bfd.h (struct elf_backend_data): Add rela_normal.
* elfxx-target.h (elf_backend_rela_normal): Define.
(elfNN_bed): Init rela_normal.
* elflink.h (elf_link_input_bfd <emit_relocs>): Handle adjustment
for section symbols here if rela_normal. Simplify abs section test.
* elf-m10200.c (mn10200_elf_relocate_section): If relocatable,
return immediately. Remove code handling relocatable linking.
* elf-m10300.c (mn10300_elf_relocate_section): Likewise.
* elf32-fr30.c (fr30_elf_relocate_section): Likewise.
* elf32-i370.c (i370_elf_relocate_section): Likewise.
* elf32-i860.c (elf32_i860_relocate_section): Likewise.
* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
* elf32-mcore.c (mcore_elf_relocate_section): Likewise.
* elf32-openrisc.c (openrisc_elf_relocate_section): Likewise.
* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
* elf32-s390.c (elf_s390_relocate_section): Likewise.
* elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise.
* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
* elf64-s390.c (elf_s390_relocate_section): Likewise.
* elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
* elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
* elf32-arm.h (elf32_arm_relocate_section): Likewise #ifndef USE_REL.
* elf32-m32r.c (m32r_elf_relocate_section): Likewise.
* elf-m10200.c (elf_backend_rela_normal): Define.
* elf-m10300.c (elf_backend_rela_normal): Define.
* elf32-fr30.c (elf_backend_rela_normal): Define.
* elf32-i370.c (elf_backend_rela_normal): Define.
* elf32-i860.c (elf_backend_rela_normal): Define.
* elf32-m68k.c (elf_backend_rela_normal): Define.
* elf32-mcore.c (elf_backend_rela_normal): Define.
* elf32-openrisc.c (elf_backend_rela_normal): Define.
* elf32-ppc.c (elf_backend_rela_normal): Define.
* elf32-s390.c (elf_backend_rela_normal): Define.
* elf32-xstormy16.c (elf_backend_rela_normal): Define.
* elf64-ppc.c (elf_backend_rela_normal): Define.
* elf64-s390.c (elf_backend_rela_normal): Define.
* elf64-x86-64.c (elf_backend_rela_normal): Define.
* elfxx-ia64.c (elf_backend_rela_normal): Define.
* elf32-arm.h (elf_backend_rela_normal): Define #ifndef USE_REL.
* elf32-m32r.c (elf_backend_rela_normal): Likewise.
2002-05-06 Alan Modra <amodra@bigpond.net.au>
* elflink.h (elf_link_input_bfd <emit_relocs>): Adjust r_offset
when not relocatable. Fix reloc_emitter call for K&R.
2002-05-04 Alan Modra <amodra@bigpond.net.au>
* dwarf2.c (struct line_head): Make prologue_length a bfd_vma.
(read_abbrevs): Change "offset" param to bfd_vma.
(parse_comp_unit): Change "version" and addr_size to unsigned ints.
Change "abbrev_offset" to bfd_vma.
(read_indirect_string): Use correct conversion chars in error
message format string, cast bfd_vma's to unsigned long.
(read_abbrevs): Likewise.
(read_attribute_value): Likewise.
(decode_line_info): Likewise.
(scan_unit_for_functions): Likewise.
(parse_comp_unit): Likewise.
2002-05-04 Bob Byrnes <byrnes@curl.com>
* opncls.c (_bfd_new_bfd_contained_in): Check return value of
_bfd_new_bfd.
2002-05-02 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c (ppc64_elf_howto_raw <R_PPC64_SECTOFF>): Change to a
16 bit reloc.
<R_PPC64_SECTOFF_DS>: Likewise.
(ppc64_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to
SECTOFF reloc.
* elf32-ppc.c (ppc_elf_howto_raw <R_PPC_SECTOFF>): Correct.
(ppc_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to
SECTOFF reloc.
* elf64-ppc.c (ppc64_elf_addr16_ha_reloc): Delete.
(ppc64_elf_ha_reloc): New function.
(ppc64_elf_brtaken_reloc): New function.
(ppc64_elf_sectoff_reloc): New function.
(ppc64_elf_sectoff_ha_reloc): New function.
(ppc64_elf_toc_reloc): New function.
(ppc64_elf_toc_ha_reloc): New function.
(ppc64_elf_toc64_reloc): New function.
(ppc64_elf_unhandled_reloc): New function.
(ppc64_elf_howto_raw): Use the above.
<R_PPC64_RELATIVE>: Mark pc_relative, pcrel_offset.
<R_PPC64_SECTOFF>: Not pc_relative or pcrel_offset. Fix dst_mask.
<R_PPC64_SECTOFF_DS>: Likewise.
(IS_ABSOLUTE_RELOC): Update.
(struct ppc_link_hash_table): Add have_undefweak.
(ppc64_elf_link_hash_table_create): Init.
(func_desc_adjust): Set have_undefweak.
(ppc64_elf_func_desc_adjust): Call func_desc_adjust earlier. Only
add the .sfpr blr when have_undefweak.
(ppc64_elf_set_toc): Rename to ppc64_elf_toc, remove info param
and relocatable test. Return TOCstart and don't set elf_gp.
(ppc64_elf_relocate_section): Correct BRTAKEN/BRNTAKEN branch
offset calculation. Add assert on weak sym branch tweaks.
* elf64-ppc.h (ppc64_elf_set_toc): Delete.
(ppc64_elf_toc): Declare.
2002-05-01 Alan Modra <amodra@bigpond.net.au>
* syms.c (_bfd_stab_section_find_nearest_line): Don't bomb on NULL
file_name.
2002-05-01 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c (CROR_151515, CROR_313131): Define.
(ppc64_elf_relocate_section): Use them. Don't look for plt calls
on R_PPC64_ADDR24 relocs. Require a nop or no link reg on plt
call branches. Correct undefined weak destination.
(ppc64_elf_func_desc_adjust): Always create at least one blr in
.sfpr, and correct case where either only savef* or restf* is
needed.
2002-04-09 DJ Delorie <dj@redhat.com>
* elfarm-nabi.c (elf32_arm_howto_table): Fix ABS16 masks.
2002-05-06 Nick Clifton <nickc@cambridge.redhat.com>
* elf32-arm.h (elf32_arm_final_link_relocate): Convert
'reloc_signed_max' and 'reloc_signed_min' into half-word offsets.
2002-05-02 Richard Henderson <rth@redhat.com>
* elf64-alpha.c (elf64_alpha_relocate_section): Force relative relocs
vs SHN_UNDEF to zero.
2002-04-27 Alan Modra <amodra@bigpond.net.au>
Merge from mainline
2002-04-12 Alan Modra <amodra@bigpond.net.au>
* elf.c (prep_headers): Don't zero EI_OSABI, EI_ABIVERSION or
header pad.
2002-02-21 Andreas Jaeger <aj@suse.de>
* elf64-x86-64.c: Major rework that introduces all recent changes
to the x86-64 backend. Get a closer match to elf32-i386.
(struct elf64_x86_64_dyn_relocs): Rename from
elf64_x86_64_pcrel_relocs_copied, add additional fields. Change
all users.
(struct elf64_x86_64_link_hash_table): Add short cuts to some
sections.
(link_hash_newfunc): Rename from elf64_x86_64_link_hash_newfunc,
remove casts, initialize new hash members.
(create_got_section): New.
(elf64_x86_64_create_dynamic_sections): New.
(elf64_x86_64_copy_indirect_symbol): New.
(elf64_x86_64_check_relocs): Don't allocate space for dynamic
relocs, .got or .relgot here but do it in allocate_dynrelocs.
Reference count possible .plt and .got entries. Don't test input
section SEC_READONLY here to try to avoid copy relocs, and keep
dyn_relocs regardless of ELF_LINK_NON_GOT_REF. Don't set
DF_TEXTREL here. Delay setting of variables until needed. Cache
pointer to "sreloc" section in elf_section_data. Tweak condition
under which .got created. Report files with bad relocation
section names.
(elf64_x86_64_gc_sweep_hook): Sweep dyn_relocs and local_dynrel.
Reference count possible .plt entries. Don't deallocate .got and
.relgot space here.
(elf64_x86_64_adjust_dynamic_symbol): Handle nocopyreloc. Don't
do copy reloc processing for weakdefs. Remove redundant casts and
aborts. Delay setting of vars until needed. Move creation of
dynamic symbols and allocation of .plt and .rela.plt to
allocate_dynrelocs. Replace BFD_ASSERT with abort.
(WILL_CALL_FINISH_DYNAMIC_SYMBOL): New.
(allocate_dynrelocs): New.
(readonly_dynrelocs): New.
(elf64_x86_64_size_dynamic_sections): Call readonly_dynrelocs.
Allocate space for dyn relocs. Replace BFD_ASSERT with abort.
Zero out the dynamic allocated content space.
(elf64_x86_64_discard_copies): Removed.
(elf64_x86_64_relocate_section): Make use of dynamic section
short-cuts. Localise vars, and delay setting. Better error
reporting, replace BFD_ASSERT with abort. Check
ELF_LINK_HASH_DEF_DYNAMIC to see if a symbol is not defined in the
regular object file and tread the weak definition as the normal
one. Don't discard relocs for undefweak or undefined symbols and
check !DEF_REGULAR as well as DEF_DYNAMIC in test for avoided copy
relocs.
(elf64_x86_64_finish_dynamic_symbol): Don't copy relocs for
symbols that have been forced local. Use same test to decide if
we can use a relative reloc for got as relocate_section. Expand
SHN_UNDEF comment. Move expressions out of function calls.
Replace BFD_ASSERT with abort.
(bfd_elf64_bfd_final_link): Removed.
(elf_backend_copy_indirect_symbol): Define.
* reloc.c: Move sh relocs to where they belong.
* libbfd.h, bfd-in2.h: Regenerate.
Merge from mainline
2002-04-26 Alan Modra <amodra@bigpond.net.au>
* opncls.c (bfd_make_readable): Call bfd_section_list_clear.
* xcofflink.c (xcoff_link_add_dynamic_symbols): Likewise.
* elflink.h (elf_bfd_final_link): Ensure input bfd class is the
same as the output before calling elf_link_input_bfd.
* coffcode.h (coff_compute_section_file_positions): Set
section_tail after shuffling section list.
2002-04-23 Alan Modra <amodra@bigpond.net.au>
* elf32-hppa.c (hppa_type_of_stub): Correct and simplify condition
under which a plt call stub is used.
(final_link_relocate): Similarly.
(allocate_plt_static): Clear h-plabel except when plt entry is
exclusively used for a plabel.
(allocate_dynrelocs): Use the above to simplify plt sizing.
(struct elf32_hppa_link_hash_table): Add has_22bit_branch.
(elf32_hppa_link_hash_table_create): Init.
(BL22_RP): Define.
(hppa_build_one_stub): Use BL22_RP if has_22bit_branch.
(elf32_hppa_check_relocs): Set has_22bit_branch.
* elf32-hppa.c (elf32_hppa_check_relocs): Remove debug message.
(final_link_relocate): Likewise.
2002-04-20 Alan Modra <amodra@bigpond.net.au>
* archures.c (bfd_arch_info): Add comment on list order.
(bfd_default_set_arch_mach): Use bfd_lookup_arch.
* cpu-powerpc.c (bfd_powerpc_archs): Re-order so that the default
is always at head of list.
* bfd-in2.h: Regenerate.
2002-04-16 Alan Modra <amodra@bigpond.net.au>
* elf32-m32r.c (m32r_elf_add_symbol_hook): Check the hash table
type rather than just assuming entries are ELF.
* elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise.
* elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise.
* elf64-sparc.c (sparc64_elf_add_symbol_hook): Likewise.
* elf64-mmix.c (mmix_elf_add_symbol_hook): Use bfd_link_hash_entry
rather than elf_link_hash_entry.
2002-04-15 Alan Modra <amodra@bigpond.net.au>
* elf32-ppc.c (ppc_elf_add_symbol_hook): Check the hash table type.
2002-04-08 Randolph Chung <tausq@debian.org>
* elf32-hppa.c (hppa_unwind_entry_compare): Move to elf-hppa.h.
(elf32_hppa_final_link): Split out sorting logic to..
* elf-hppa.h (elf_hppa_sort_unwind): ..here.
(elf_hppa_final_link): Call elf_hppa_sort_unwind.
2002-04-26 Richard Smith <richard@ex-parrot.com>
Jakub Jelinek <jakub@redhat.com>
* elf-eh-frame.c (struct eh_cie_fde): Add per_encoding_relative.
(_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-04-26 Jakub Jelinek <jakub@redhat.com>
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't build
search table if some FDE is DW_EH_PE_aligned encoded either.
(_bfd_elf_write_section_eh_frame): Handle terminating FDE specially.
2002-04-18 Nick Clifton <nickc@cambridge.redhat.com>
* coff-arm.c (coff_thumb_pcrel_12, coff_thumb_pcrel_9,
insert_thumb_branch, record_thumb_to_arm_glue): Suppress
definition of these functions for ARM_WINCE builds as they are
not used.
(SWAP_IN_RELOC_OFFSET, SWAP_OUT_RELOC_OFFSET): Do not define
for ARM_WINCE builds.
2002-04-16 Nick Clifton <nickc@cambridge.redhat.com>
* ihex.c (ihex_write_object_contents): Fix check for records
crossing 64K boundaries.
2002-04-06 Hans-Peter Nilsson <hp@axis.com>
* elf32-cris.c (cris_elf_howto_table) <R_CRIS_16_PCREL,

View File

@ -6887,7 +6887,7 @@ Tue May 24 16:17:18 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* libelf.h (struct elf_obj_tdata): Add new field bad_symtab.
(elf_bad_symtab): Define new accessor macro.
(_bfd_elf_link_hash_newfunc): Declare.
(_bew_elf_link_hash_table_init): Declare.
(_bfd_elf_link_hash_table_init): Declare.
* elfcode.h (elf_object_p): Call backend object_p hook after
swapping in all the section headers.
(map_program_segments): Correct typo: Internal for External.

View File

@ -288,7 +288,9 @@ DESCRIPTION
. const char *arch_name;
. const char *printable_name;
. unsigned int section_align_power;
. {* True if this is the default machine for the architecture. *}
. {* True if this is the default machine for the architecture.
. The default arch should be the first entry for an arch so that
. all the entries for that arch can be accessed via <<next>>. *}
. boolean the_default;
. const struct bfd_arch_info * (*compatible)
. PARAMS ((const struct bfd_arch_info *a,
@ -604,21 +606,9 @@ bfd_default_set_arch_mach (abfd, arch, mach)
enum bfd_architecture arch;
unsigned long mach;
{
const bfd_arch_info_type * const *app, *ap;
for (app = bfd_archures_list; *app != NULL; app++)
{
for (ap = *app; ap != NULL; ap = ap->next)
{
if (ap->arch == arch
&& (ap->mach == mach
|| (mach == 0 && ap->the_default)))
{
abfd->arch_info = ap;
return true;
}
}
}
abfd->arch_info = bfd_lookup_arch (arch, mach);
if (abfd->arch_info != NULL)
return true;
abfd->arch_info = &bfd_default_arch_struct;
bfd_set_error (bfd_error_bad_value);

View File

@ -1657,7 +1657,9 @@ typedef struct bfd_arch_info
const char *arch_name;
const char *printable_name;
unsigned int section_align_power;
/* True if this is the default machine for the architecture. */
/* True if this is the default machine for the architecture.
The default arch should be the first entry for an arch so that
all the entries for that arch can be accessed via <<next>>. */
boolean the_default;
const struct bfd_arch_info * (*compatible)
PARAMS ((const struct bfd_arch_info *a,
@ -2194,55 +2196,6 @@ to compensate for the borrow when the low bits are added. */
BFD_RELOC_MIPS_REL16,
BFD_RELOC_MIPS_RELGOT,
BFD_RELOC_MIPS_JALR,
BFD_RELOC_SH_GOT_LOW16,
BFD_RELOC_SH_GOT_MEDLOW16,
BFD_RELOC_SH_GOT_MEDHI16,
BFD_RELOC_SH_GOT_HI16,
BFD_RELOC_SH_GOTPLT_LOW16,
BFD_RELOC_SH_GOTPLT_MEDLOW16,
BFD_RELOC_SH_GOTPLT_MEDHI16,
BFD_RELOC_SH_GOTPLT_HI16,
BFD_RELOC_SH_PLT_LOW16,
BFD_RELOC_SH_PLT_MEDLOW16,
BFD_RELOC_SH_PLT_MEDHI16,
BFD_RELOC_SH_PLT_HI16,
BFD_RELOC_SH_GOTOFF_LOW16,
BFD_RELOC_SH_GOTOFF_MEDLOW16,
BFD_RELOC_SH_GOTOFF_MEDHI16,
BFD_RELOC_SH_GOTOFF_HI16,
BFD_RELOC_SH_GOTPC_LOW16,
BFD_RELOC_SH_GOTPC_MEDLOW16,
BFD_RELOC_SH_GOTPC_MEDHI16,
BFD_RELOC_SH_GOTPC_HI16,
BFD_RELOC_SH_COPY64,
BFD_RELOC_SH_GLOB_DAT64,
BFD_RELOC_SH_JMP_SLOT64,
BFD_RELOC_SH_RELATIVE64,
BFD_RELOC_SH_GOT10BY4,
BFD_RELOC_SH_GOT10BY8,
BFD_RELOC_SH_GOTPLT10BY4,
BFD_RELOC_SH_GOTPLT10BY8,
BFD_RELOC_SH_GOTPLT32,
BFD_RELOC_SH_SHMEDIA_CODE,
BFD_RELOC_SH_IMMU5,
BFD_RELOC_SH_IMMS6,
BFD_RELOC_SH_IMMS6BY32,
BFD_RELOC_SH_IMMU6,
BFD_RELOC_SH_IMMS10,
BFD_RELOC_SH_IMMS10BY2,
BFD_RELOC_SH_IMMS10BY4,
BFD_RELOC_SH_IMMS10BY8,
BFD_RELOC_SH_IMMS16,
BFD_RELOC_SH_IMMU16,
BFD_RELOC_SH_IMM_LOW16,
BFD_RELOC_SH_IMM_LOW16_PCREL,
BFD_RELOC_SH_IMM_MEDLOW16,
BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
BFD_RELOC_SH_IMM_MEDHI16,
BFD_RELOC_SH_IMM_MEDHI16_PCREL,
BFD_RELOC_SH_IMM_HI16,
BFD_RELOC_SH_IMM_HI16_PCREL,
BFD_RELOC_SH_PT_16,
/* i386/elf relocations */
@ -2423,6 +2376,55 @@ field in the instruction. */
BFD_RELOC_SH_JMP_SLOT,
BFD_RELOC_SH_RELATIVE,
BFD_RELOC_SH_GOTPC,
BFD_RELOC_SH_GOT_LOW16,
BFD_RELOC_SH_GOT_MEDLOW16,
BFD_RELOC_SH_GOT_MEDHI16,
BFD_RELOC_SH_GOT_HI16,
BFD_RELOC_SH_GOTPLT_LOW16,
BFD_RELOC_SH_GOTPLT_MEDLOW16,
BFD_RELOC_SH_GOTPLT_MEDHI16,
BFD_RELOC_SH_GOTPLT_HI16,
BFD_RELOC_SH_PLT_LOW16,
BFD_RELOC_SH_PLT_MEDLOW16,
BFD_RELOC_SH_PLT_MEDHI16,
BFD_RELOC_SH_PLT_HI16,
BFD_RELOC_SH_GOTOFF_LOW16,
BFD_RELOC_SH_GOTOFF_MEDLOW16,
BFD_RELOC_SH_GOTOFF_MEDHI16,
BFD_RELOC_SH_GOTOFF_HI16,
BFD_RELOC_SH_GOTPC_LOW16,
BFD_RELOC_SH_GOTPC_MEDLOW16,
BFD_RELOC_SH_GOTPC_MEDHI16,
BFD_RELOC_SH_GOTPC_HI16,
BFD_RELOC_SH_COPY64,
BFD_RELOC_SH_GLOB_DAT64,
BFD_RELOC_SH_JMP_SLOT64,
BFD_RELOC_SH_RELATIVE64,
BFD_RELOC_SH_GOT10BY4,
BFD_RELOC_SH_GOT10BY8,
BFD_RELOC_SH_GOTPLT10BY4,
BFD_RELOC_SH_GOTPLT10BY8,
BFD_RELOC_SH_GOTPLT32,
BFD_RELOC_SH_SHMEDIA_CODE,
BFD_RELOC_SH_IMMU5,
BFD_RELOC_SH_IMMS6,
BFD_RELOC_SH_IMMS6BY32,
BFD_RELOC_SH_IMMU6,
BFD_RELOC_SH_IMMS10,
BFD_RELOC_SH_IMMS10BY2,
BFD_RELOC_SH_IMMS10BY4,
BFD_RELOC_SH_IMMS10BY8,
BFD_RELOC_SH_IMMS16,
BFD_RELOC_SH_IMMU16,
BFD_RELOC_SH_IMM_LOW16,
BFD_RELOC_SH_IMM_LOW16_PCREL,
BFD_RELOC_SH_IMM_MEDLOW16,
BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
BFD_RELOC_SH_IMM_MEDHI16,
BFD_RELOC_SH_IMM_MEDHI16_PCREL,
BFD_RELOC_SH_IMM_HI16,
BFD_RELOC_SH_IMM_HI16_PCREL,
BFD_RELOC_SH_PT_16,
/* Thumb 23-, 12- and 9-bit pc-relative branches. The lowest bit must
be zero and is not stored in the instruction. */

View File

@ -87,12 +87,16 @@ static bfd_reloc_status_type aoutarm_fix_pcrel_26_done
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static bfd_reloc_status_type aoutarm_fix_pcrel_26
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
#ifndef ARM_WINCE
static bfd_reloc_status_type coff_thumb_pcrel_23
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static bfd_reloc_status_type coff_thumb_pcrel_12
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static bfd_reloc_status_type coff_thumb_pcrel_9
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static insn32 insert_thumb_branch
PARAMS ((insn32, int));
#endif
static bfd_reloc_status_type coff_thumb_pcrel_12
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static bfd_reloc_status_type coff_arm_reloc
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static boolean coff_arm_adjust_symndx
@ -109,8 +113,6 @@ static const struct reloc_howto_struct * coff_arm_reloc_type_lookup
PARAMS ((bfd *, bfd_reloc_code_real_type));
static struct bfd_link_hash_table * coff_arm_link_hash_table_create
PARAMS ((bfd *));
static insn32 insert_thumb_branch
PARAMS ((insn32, int));
static struct coff_link_hash_entry * find_thumb_glue
PARAMS ((struct bfd_link_info *, const char *, bfd *));
static struct coff_link_hash_entry * find_arm_glue
@ -118,9 +120,11 @@ static struct coff_link_hash_entry * find_arm_glue
#ifndef COFF_IMAGE_WITH_PE
static void record_arm_to_thumb_glue
PARAMS ((struct bfd_link_info *, struct coff_link_hash_entry *));
#ifndef ARM_WINCE
static void record_thumb_to_arm_glue
PARAMS ((struct bfd_link_info *, struct coff_link_hash_entry *));
#endif
#endif
static boolean coff_arm_merge_private_bfd_data
PARAMS ((bfd *, bfd *));
static boolean coff_arm_print_private_bfd_data
@ -801,6 +805,7 @@ coff_thumb_pcrel_common (abfd, reloc_entry, symbol, data, input_section,
return flag;
}
#ifndef ARM_WINCE
static bfd_reloc_status_type
coff_thumb_pcrel_23 (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
@ -817,22 +822,6 @@ coff_thumb_pcrel_23 (abfd, reloc_entry, symbol, data, input_section,
b23);
}
static bfd_reloc_status_type
coff_thumb_pcrel_12 (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
return coff_thumb_pcrel_common (abfd, reloc_entry, symbol, data,
input_section, output_bfd, error_message,
b12);
}
static bfd_reloc_status_type
coff_thumb_pcrel_9 (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
@ -848,6 +837,23 @@ coff_thumb_pcrel_9 (abfd, reloc_entry, symbol, data, input_section,
input_section, output_bfd, error_message,
b9);
}
#endif /* not ARM_WINCE */
static bfd_reloc_status_type
coff_thumb_pcrel_12 (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
return coff_thumb_pcrel_common (abfd, reloc_entry, symbol, data,
input_section, output_bfd, error_message,
b12);
}
static const struct reloc_howto_struct *
coff_arm_reloc_type_lookup (abfd, code)
@ -900,10 +906,12 @@ coff_arm_reloc_type_lookup (abfd, code)
#define BADMAG(x) ARMBADMAG(x)
#define ARM 1 /* Customize coffcode.h */
#ifndef ARM_WINCE
/* Make sure that the 'r_offset' field is copied properly
so that identical binaries will compare the same. */
#define SWAP_IN_RELOC_OFFSET H_GET_32
#define SWAP_OUT_RELOC_OFFSET H_PUT_32
#endif
/* Extend the coff_link_hash_table structure with a few ARM specific fields.
This allows us to store global data here without actually creating any
@ -975,6 +983,7 @@ arm_emit_base_file_entry (info, output_bfd, input_section, reloc_offset)
}
#ifndef ARM_WINCE
/* The thumb form of a long branch is a bit finicky, because the offset
encoding is split over two fields, each in it's own instruction. They
can occur in any order. So given a thumb form of long branch, and an
@ -1031,6 +1040,7 @@ insert_thumb_branch (br_insn, rel_off)
return br_insn;
}
static struct coff_link_hash_entry *
find_thumb_glue (info, name, input_bfd)
@ -1060,6 +1070,7 @@ find_thumb_glue (info, name, input_bfd)
return myh;
}
#endif /* not ARM_WINCE */
static struct coff_link_hash_entry *
find_arm_glue (info, name, input_bfd)
@ -1914,6 +1925,7 @@ record_arm_to_thumb_glue (info, h)
return;
}
#ifndef ARM_WINCE
static void
record_thumb_to_arm_glue (info, h)
struct bfd_link_info * info;
@ -1987,6 +1999,7 @@ record_thumb_to_arm_glue (info, h)
return;
}
#endif /* not ARM_WINCE */
/* Select a BFD to be used to hold the sections used by the glue code.
This function is called from the linker scripts in ld/emultempl/

View File

@ -3014,6 +3014,7 @@ coff_compute_section_file_positions (abfd)
else
current->target_index = target_index++;
}
abfd->section_tail = &current->next;
free (section_list);
}

View File

@ -214,6 +214,9 @@
/* Define if getenv is not declared in system header files. */
#undef NEED_DECLARATION_GETENV
/* Define if struct core_dumpx has member c_impl */
#undef HAVE_ST_C_IMPL
/* Define if <sys/procfs.h> has prstatus_t. */
#undef HAVE_PRSTATUS_T

View File

@ -1199,7 +1199,7 @@ fi
# Uncomment the next line to remove the date from the reported bfd version
#is_release=y
is_release=y
bfd_version=`echo "${VERSION}" | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$/\1\2\3\4\5/'`
@ -5173,6 +5173,32 @@ if test "${target}" = "${host}"; then
rs6000-*-aix4.[3-9]* | powerpc-*-aix4.[3-9]*)
COREFILE=rs6000-core.lo
COREFLAG="$COREFLAG -DAIX_CORE_DUMPX_CORE"
# Not all versions of AIX with -DAIX_CORE_DUMPX_CORE
# have c_impl as a member of struct core_dumpx
echo $ac_n "checking for c_impl in struct core_dumpx""... $ac_c" 1>&6
echo "configure:5180: checking for c_impl in struct core_dumpx" >&5
cat > conftest.$ac_ext <<EOF
#line 5182 "configure"
#include "confdefs.h"
#include <core.h>
int main() {
struct core_dumpx c; c.c_impl = 0;
; return 0; }
EOF
if { (eval echo configure:5189: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_ST_C_IMPL 1
EOF
echo "$ac_t""yes" 1>&6
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
echo "$ac_t""no" 1>&6
fi
rm -f conftest*
;;
rs6000-*-aix4*) COREFILE=rs6000-core.lo ;;
rs6000-*-*) COREFILE=rs6000-core.lo ;;
@ -5226,17 +5252,17 @@ if test "${target}" = "${host}"; then
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:5230: checking for $ac_hdr" >&5
echo "configure:5256: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5235 "configure"
#line 5261 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:5240: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:5266: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -5264,12 +5290,12 @@ done
if test "$ac_cv_header_sys_procfs_h" = yes; then
echo $ac_n "checking for prstatus_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5268: checking for prstatus_t in sys/procfs.h" >&5
echo "configure:5294: checking for prstatus_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prstatus_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5273 "configure"
#line 5299 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5278,7 +5304,7 @@ int main() {
prstatus_t avar
; return 0; }
EOF
if { (eval echo configure:5282: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5308: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prstatus_t=yes
else
@ -5300,12 +5326,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prstatus_t" 1>&6
echo $ac_n "checking for prstatus32_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5304: checking for prstatus32_t in sys/procfs.h" >&5
echo "configure:5330: checking for prstatus32_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prstatus32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5309 "configure"
#line 5335 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5314,7 +5340,7 @@ int main() {
prstatus32_t avar
; return 0; }
EOF
if { (eval echo configure:5318: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prstatus32_t=yes
else
@ -5336,12 +5362,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prstatus32_t" 1>&6
echo $ac_n "checking for prstatus_t.pr_who in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5340: checking for prstatus_t.pr_who in sys/procfs.h" >&5
echo "configure:5366: checking for prstatus_t.pr_who in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5345 "configure"
#line 5371 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5350,7 +5376,7 @@ int main() {
prstatus_t avar; void* aref = (void*) &avar.pr_who
; return 0; }
EOF
if { (eval echo configure:5354: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=yes
else
@ -5372,12 +5398,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" 1>&6
echo $ac_n "checking for prstatus32_t.pr_who in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5376: checking for prstatus32_t.pr_who in sys/procfs.h" >&5
echo "configure:5402: checking for prstatus32_t.pr_who in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5381 "configure"
#line 5407 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5386,7 +5412,7 @@ int main() {
prstatus32_t avar; void* aref = (void*) &avar.pr_who
; return 0; }
EOF
if { (eval echo configure:5390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=yes
else
@ -5408,12 +5434,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" 1>&6
echo $ac_n "checking for pstatus_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5412: checking for pstatus_t in sys/procfs.h" >&5
echo "configure:5438: checking for pstatus_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5417 "configure"
#line 5443 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5422,7 +5448,7 @@ int main() {
pstatus_t avar
; return 0; }
EOF
if { (eval echo configure:5426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_pstatus_t=yes
else
@ -5444,12 +5470,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus_t" 1>&6
echo $ac_n "checking for pxstatus_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5448: checking for pxstatus_t in sys/procfs.h" >&5
echo "configure:5474: checking for pxstatus_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pxstatus_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5453 "configure"
#line 5479 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5458,7 +5484,7 @@ int main() {
pxstatus_t avar
; return 0; }
EOF
if { (eval echo configure:5462: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_pxstatus_t=yes
else
@ -5480,12 +5506,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_pxstatus_t" 1>&6
echo $ac_n "checking for pstatus32_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5484: checking for pstatus32_t in sys/procfs.h" >&5
echo "configure:5510: checking for pstatus32_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5489 "configure"
#line 5515 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5494,7 +5520,7 @@ int main() {
pstatus32_t avar
; return 0; }
EOF
if { (eval echo configure:5498: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_pstatus32_t=yes
else
@ -5516,12 +5542,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus32_t" 1>&6
echo $ac_n "checking for prpsinfo_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5520: checking for prpsinfo_t in sys/procfs.h" >&5
echo "configure:5546: checking for prpsinfo_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prpsinfo_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5525 "configure"
#line 5551 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5530,7 +5556,7 @@ int main() {
prpsinfo_t avar
; return 0; }
EOF
if { (eval echo configure:5534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5560: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prpsinfo_t=yes
else
@ -5552,12 +5578,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prpsinfo_t" 1>&6
echo $ac_n "checking for prpsinfo32_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5556: checking for prpsinfo32_t in sys/procfs.h" >&5
echo "configure:5582: checking for prpsinfo32_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prpsinfo32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5561 "configure"
#line 5587 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5566,7 +5592,7 @@ int main() {
prpsinfo32_t avar
; return 0; }
EOF
if { (eval echo configure:5570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5596: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prpsinfo32_t=yes
else
@ -5588,12 +5614,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prpsinfo32_t" 1>&6
echo $ac_n "checking for psinfo_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5592: checking for psinfo_t in sys/procfs.h" >&5
echo "configure:5618: checking for psinfo_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psinfo_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5597 "configure"
#line 5623 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5602,7 +5628,7 @@ int main() {
psinfo_t avar
; return 0; }
EOF
if { (eval echo configure:5606: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5632: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_psinfo_t=yes
else
@ -5624,12 +5650,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_psinfo_t" 1>&6
echo $ac_n "checking for psinfo32_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5628: checking for psinfo32_t in sys/procfs.h" >&5
echo "configure:5654: checking for psinfo32_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psinfo32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5633 "configure"
#line 5659 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5638,7 +5664,7 @@ int main() {
psinfo32_t avar
; return 0; }
EOF
if { (eval echo configure:5642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_psinfo32_t=yes
else
@ -5660,12 +5686,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_psinfo32_t" 1>&6
echo $ac_n "checking for lwpstatus_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5664: checking for lwpstatus_t in sys/procfs.h" >&5
echo "configure:5690: checking for lwpstatus_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpstatus_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5669 "configure"
#line 5695 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5674,7 +5700,7 @@ int main() {
lwpstatus_t avar
; return 0; }
EOF
if { (eval echo configure:5678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5704: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_lwpstatus_t=yes
else
@ -5696,12 +5722,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpstatus_t" 1>&6
echo $ac_n "checking for lwpxstatus_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5700: checking for lwpxstatus_t in sys/procfs.h" >&5
echo "configure:5726: checking for lwpxstatus_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpxstatus_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5705 "configure"
#line 5731 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5710,7 +5736,7 @@ int main() {
lwpxstatus_t avar
; return 0; }
EOF
if { (eval echo configure:5714: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_lwpxstatus_t=yes
else
@ -5732,12 +5758,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpxstatus_t" 1>&6
echo $ac_n "checking for lwpstatus_t.pr_context in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5736: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5
echo "configure:5762: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5741 "configure"
#line 5767 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5746,7 +5772,7 @@ int main() {
lwpstatus_t avar; void* aref = (void*) &avar.pr_context
; return 0; }
EOF
if { (eval echo configure:5750: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=yes
else
@ -5768,12 +5794,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" 1>&6
echo $ac_n "checking for lwpstatus_t.pr_reg in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5772: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5
echo "configure:5798: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5777 "configure"
#line 5803 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5782,7 +5808,7 @@ int main() {
lwpstatus_t avar; void* aref = (void*) &avar.pr_reg
; return 0; }
EOF
if { (eval echo configure:5786: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5812: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=yes
else
@ -5804,12 +5830,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" 1>&6
echo $ac_n "checking for win32_pstatus_t in sys/procfs.h""... $ac_c" 1>&6
echo "configure:5808: checking for win32_pstatus_t in sys/procfs.h" >&5
echo "configure:5834: checking for win32_pstatus_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_win32_pstatus_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5813 "configure"
#line 5839 "configure"
#include "confdefs.h"
#define _SYSCALL32
@ -5818,7 +5844,7 @@ int main() {
win32_pstatus_t avar
; return 0; }
EOF
if { (eval echo configure:5822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:5848: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes
else
@ -6235,10 +6261,10 @@ case ${host64}-${target64}-${want64} in
if test -n "$GCC" ; then
bad_64bit_gcc=no;
echo $ac_n "checking for gcc version with buggy 64-bit support""... $ac_c" 1>&6
echo "configure:6239: checking for gcc version with buggy 64-bit support" >&5
echo "configure:6265: checking for gcc version with buggy 64-bit support" >&5
# Add more tests for gcc versions with non-working 64-bit support here.
cat > conftest.$ac_ext <<EOF
#line 6242 "configure"
#line 6268 "configure"
#include "confdefs.h"
:__GNUC__:__GNUC_MINOR__:__i386__:
EOF
@ -6283,17 +6309,17 @@ for ac_hdr in stdlib.h unistd.h sys/stat.h sys/types.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:6287: checking for $ac_hdr" >&5
echo "configure:6313: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 6292 "configure"
#line 6318 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:6297: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:6323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -6322,12 +6348,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:6326: checking for $ac_func" >&5
echo "configure:6352: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 6331 "configure"
#line 6357 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -6350,7 +6376,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:6354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:6380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -6375,7 +6401,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
echo "configure:6379: checking for working mmap" >&5
echo "configure:6405: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -6383,7 +6409,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
#line 6387 "configure"
#line 6413 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@ -6536,7 +6562,7 @@ main()
}
EOF
if { (eval echo configure:6540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:6566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@ -6561,12 +6587,12 @@ fi
for ac_func in madvise mprotect
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:6565: checking for $ac_func" >&5
echo "configure:6591: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 6570 "configure"
#line 6596 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -6589,7 +6615,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:6593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:6619: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else

View File

@ -9,7 +9,7 @@ AC_ISC_POSIX
AM_INIT_AUTOMAKE(bfd, 2.12.1)
# Uncomment the next line to remove the date from the reported bfd version
#is_release=y
is_release=y
changequote(,)dnl
bfd_version=`echo "${VERSION}" | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$/\1\2\3\4\5/'`
@ -327,6 +327,14 @@ changequote(,)dnl
changequote([,])dnl
COREFILE=rs6000-core.lo
COREFLAG="$COREFLAG -DAIX_CORE_DUMPX_CORE"
# Not all versions of AIX with -DAIX_CORE_DUMPX_CORE
# have c_impl as a member of struct core_dumpx
AC_MSG_CHECKING([for c_impl in struct core_dumpx])
AC_TRY_COMPILE([#include <core.h>],
[struct core_dumpx c; c.c_impl = 0;],
[AC_DEFINE(HAVE_ST_C_IMPL, 1,
[Define if struct core_dumpx has member c_impl])
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
;;
rs6000-*-aix4*) COREFILE=rs6000-core.lo ;;
rs6000-*-*) COREFILE=rs6000-core.lo ;;

View File

@ -50,6 +50,65 @@ powerpc_compatible (a,b)
const bfd_arch_info_type bfd_powerpc_archs[] =
{
#if BFD_DEFAULT_TARGET_SIZE == 64 /* default arch must come first. */
{
64, /* 64 bits in a word */
64, /* 64 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
bfd_mach_ppc64,
"powerpc",
"powerpc:common64",
3,
true, /* default for 64 bit target */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[1]
},
{
32, /* 32 bits in a word */
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
"powerpc",
"powerpc:common",
3,
false,
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[2],
},
#else
{
32, /* 32 bits in a word */
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
"powerpc",
"powerpc:common",
3,
true, /* default for 32 bit target */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[1],
},
{
64, /* 64 bits in a word */
64, /* 64 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
bfd_mach_ppc64,
"powerpc",
"powerpc:common64",
3,
false,
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[2]
},
#endif
{
32, /* 32 bits in a word */
32, /* 32 bits in an address */
@ -62,7 +121,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[1]
&bfd_powerpc_archs[3]
},
{
32, /* 32 bits in a word */
@ -76,7 +135,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[2]
&bfd_powerpc_archs[4]
},
{
32, /* 32 bits in a word */
@ -90,7 +149,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[3]
&bfd_powerpc_archs[5]
},
{
32, /* 32 bits in a word */
@ -104,7 +163,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[4]
&bfd_powerpc_archs[6]
},
{
32, /* 32 bits in a word */
@ -118,7 +177,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[5]
&bfd_powerpc_archs[7]
},
{
64, /* 64 bits in a word */
@ -132,7 +191,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[6]
&bfd_powerpc_archs[8]
},
{
64, /* 64 bits in a word */
@ -146,7 +205,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[7]
&bfd_powerpc_archs[9]
},
{
64, /* 64 bits in a word */
@ -160,7 +219,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[8]
&bfd_powerpc_archs[10]
},
{
64, /* 64 bits in a word */
@ -174,7 +233,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[9]
&bfd_powerpc_archs[11]
},
{
64, /* 64 bits in a word */
@ -188,7 +247,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[10]
&bfd_powerpc_archs[12]
},
{
32, /* 32 bits in a word */
@ -202,7 +261,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[11]
&bfd_powerpc_archs[13]
},
{
32, /* 32 bits in a word */
@ -216,34 +275,6 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[12]
},
{
64, /* 64 bits in a word */
64, /* 64 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
bfd_mach_ppc64,
"powerpc",
"powerpc:common64",
3,
BFD_DEFAULT_TARGET_SIZE == 64, /* default for 64 bit target */
powerpc_compatible,
bfd_default_scan,
&bfd_powerpc_archs[13]
},
{
32, /* 32 bits in a word */
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
"powerpc",
"powerpc:common",
3,
BFD_DEFAULT_TARGET_SIZE != 64, /* default for 32 bit target */
powerpc_compatible,
bfd_default_scan,
0
}
};

View File

@ -0,0 +1,56 @@
/* BFD support for the s390 processor.
Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
Contributed by Carl B. Pedersen and Martin Schwidefsky.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
const bfd_arch_info_type bfd_s390_64_arch =
{
64, /* bits in a word */
64, /* bits in an address */
8, /* bits in a byte */
bfd_arch_s390,
bfd_mach_s390_64,
"s390",
"s390:64-bit",
3, /* section alignment power */
true, /* the default */
bfd_default_compatible,
bfd_default_scan,
NULL
};
const bfd_arch_info_type bfd_s390_arch =
{
32, /* bits in a word */
32, /* bits in an address */
8, /* bits in a byte */
bfd_arch_s390,
bfd_mach_s390_31,
"s390",
"s390:31-bit",
3, /* section alignment power */
true, /* the default */
bfd_default_compatible,
bfd_default_scan,
&bfd_s390_64_arch
};

View File

@ -225,8 +225,8 @@ enum bfd_architecture
#define bfd_mach_avr5 5
bfd_arch_cris, /* Axis CRIS */
bfd_arch_s390, /* IBM s390 */
#define bfd_mach_s390_esa 0
#define bfd_mach_s390_esame 1
#define bfd_mach_s390_31 0
#define bfd_mach_s390_64 1
bfd_arch_openrisc, /* OpenRISC */
bfd_arch_mmix, /* Donald Knuth's educational processor. */
bfd_arch_xstormy16,
@ -253,7 +253,9 @@ typedef struct bfd_arch_info
const char *arch_name;
const char *printable_name;
unsigned int section_align_power;
/* True if this is the default machine for the architecture. */
/* True if this is the default machine for the architecture.
The default arch should be the first entry for an arch so that
all the entries for that arch can be accessed via @code{next}. */
boolean the_default;
const struct bfd_arch_info * (*compatible)
PARAMS ((const struct bfd_arch_info *a,

View File

@ -10,7 +10,7 @@ completeness.
@subsubsection @code{bfd_write_bigendian_4byte_int}
@strong{Synopsis}
@example
void bfd_write_bigendian_4byte_int (bfd *, unsigned int);
boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
@end example
@strong{Description}@*
Write a 4 byte integer @var{i} to the output BFD @var{abfd}, in big

View File

@ -768,55 +768,6 @@ Relocation against a MIPS literal section.
@deffnx {} BFD_RELOC_MIPS_REL16
@deffnx {} BFD_RELOC_MIPS_RELGOT
@deffnx {} BFD_RELOC_MIPS_JALR
@deffnx {} BFD_RELOC_SH_GOT_LOW16
@deffnx {} BFD_RELOC_SH_GOT_MEDLOW16
@deffnx {} BFD_RELOC_SH_GOT_MEDHI16
@deffnx {} BFD_RELOC_SH_GOT_HI16
@deffnx {} BFD_RELOC_SH_GOTPLT_LOW16
@deffnx {} BFD_RELOC_SH_GOTPLT_MEDLOW16
@deffnx {} BFD_RELOC_SH_GOTPLT_MEDHI16
@deffnx {} BFD_RELOC_SH_GOTPLT_HI16
@deffnx {} BFD_RELOC_SH_PLT_LOW16
@deffnx {} BFD_RELOC_SH_PLT_MEDLOW16
@deffnx {} BFD_RELOC_SH_PLT_MEDHI16
@deffnx {} BFD_RELOC_SH_PLT_HI16
@deffnx {} BFD_RELOC_SH_GOTOFF_LOW16
@deffnx {} BFD_RELOC_SH_GOTOFF_MEDLOW16
@deffnx {} BFD_RELOC_SH_GOTOFF_MEDHI16
@deffnx {} BFD_RELOC_SH_GOTOFF_HI16
@deffnx {} BFD_RELOC_SH_GOTPC_LOW16
@deffnx {} BFD_RELOC_SH_GOTPC_MEDLOW16
@deffnx {} BFD_RELOC_SH_GOTPC_MEDHI16
@deffnx {} BFD_RELOC_SH_GOTPC_HI16
@deffnx {} BFD_RELOC_SH_COPY64
@deffnx {} BFD_RELOC_SH_GLOB_DAT64
@deffnx {} BFD_RELOC_SH_JMP_SLOT64
@deffnx {} BFD_RELOC_SH_RELATIVE64
@deffnx {} BFD_RELOC_SH_GOT10BY4
@deffnx {} BFD_RELOC_SH_GOT10BY8
@deffnx {} BFD_RELOC_SH_GOTPLT10BY4
@deffnx {} BFD_RELOC_SH_GOTPLT10BY8
@deffnx {} BFD_RELOC_SH_GOTPLT32
@deffnx {} BFD_RELOC_SH_SHMEDIA_CODE
@deffnx {} BFD_RELOC_SH_IMMU5
@deffnx {} BFD_RELOC_SH_IMMS6
@deffnx {} BFD_RELOC_SH_IMMS6BY32
@deffnx {} BFD_RELOC_SH_IMMU6
@deffnx {} BFD_RELOC_SH_IMMS10
@deffnx {} BFD_RELOC_SH_IMMS10BY2
@deffnx {} BFD_RELOC_SH_IMMS10BY4
@deffnx {} BFD_RELOC_SH_IMMS10BY8
@deffnx {} BFD_RELOC_SH_IMMS16
@deffnx {} BFD_RELOC_SH_IMMU16
@deffnx {} BFD_RELOC_SH_IMM_LOW16
@deffnx {} BFD_RELOC_SH_IMM_LOW16_PCREL
@deffnx {} BFD_RELOC_SH_IMM_MEDLOW16
@deffnx {} BFD_RELOC_SH_IMM_MEDLOW16_PCREL
@deffnx {} BFD_RELOC_SH_IMM_MEDHI16
@deffnx {} BFD_RELOC_SH_IMM_MEDHI16_PCREL
@deffnx {} BFD_RELOC_SH_IMM_HI16
@deffnx {} BFD_RELOC_SH_IMM_HI16_PCREL
@deffnx {} BFD_RELOC_SH_PT_16
MIPS ELF relocations.
@end deffn
@deffn {} BFD_RELOC_386_GOT32
@ -996,6 +947,55 @@ These relocs are only used within the ARM assembler. They are not
@deffnx {} BFD_RELOC_SH_JMP_SLOT
@deffnx {} BFD_RELOC_SH_RELATIVE
@deffnx {} BFD_RELOC_SH_GOTPC
@deffnx {} BFD_RELOC_SH_GOT_LOW16
@deffnx {} BFD_RELOC_SH_GOT_MEDLOW16
@deffnx {} BFD_RELOC_SH_GOT_MEDHI16
@deffnx {} BFD_RELOC_SH_GOT_HI16
@deffnx {} BFD_RELOC_SH_GOTPLT_LOW16
@deffnx {} BFD_RELOC_SH_GOTPLT_MEDLOW16
@deffnx {} BFD_RELOC_SH_GOTPLT_MEDHI16
@deffnx {} BFD_RELOC_SH_GOTPLT_HI16
@deffnx {} BFD_RELOC_SH_PLT_LOW16
@deffnx {} BFD_RELOC_SH_PLT_MEDLOW16
@deffnx {} BFD_RELOC_SH_PLT_MEDHI16
@deffnx {} BFD_RELOC_SH_PLT_HI16
@deffnx {} BFD_RELOC_SH_GOTOFF_LOW16
@deffnx {} BFD_RELOC_SH_GOTOFF_MEDLOW16
@deffnx {} BFD_RELOC_SH_GOTOFF_MEDHI16
@deffnx {} BFD_RELOC_SH_GOTOFF_HI16
@deffnx {} BFD_RELOC_SH_GOTPC_LOW16
@deffnx {} BFD_RELOC_SH_GOTPC_MEDLOW16
@deffnx {} BFD_RELOC_SH_GOTPC_MEDHI16
@deffnx {} BFD_RELOC_SH_GOTPC_HI16
@deffnx {} BFD_RELOC_SH_COPY64
@deffnx {} BFD_RELOC_SH_GLOB_DAT64
@deffnx {} BFD_RELOC_SH_JMP_SLOT64
@deffnx {} BFD_RELOC_SH_RELATIVE64
@deffnx {} BFD_RELOC_SH_GOT10BY4
@deffnx {} BFD_RELOC_SH_GOT10BY8
@deffnx {} BFD_RELOC_SH_GOTPLT10BY4
@deffnx {} BFD_RELOC_SH_GOTPLT10BY8
@deffnx {} BFD_RELOC_SH_GOTPLT32
@deffnx {} BFD_RELOC_SH_SHMEDIA_CODE
@deffnx {} BFD_RELOC_SH_IMMU5
@deffnx {} BFD_RELOC_SH_IMMS6
@deffnx {} BFD_RELOC_SH_IMMS6BY32
@deffnx {} BFD_RELOC_SH_IMMU6
@deffnx {} BFD_RELOC_SH_IMMS10
@deffnx {} BFD_RELOC_SH_IMMS10BY2
@deffnx {} BFD_RELOC_SH_IMMS10BY4
@deffnx {} BFD_RELOC_SH_IMMS10BY8
@deffnx {} BFD_RELOC_SH_IMMS16
@deffnx {} BFD_RELOC_SH_IMMU16
@deffnx {} BFD_RELOC_SH_IMM_LOW16
@deffnx {} BFD_RELOC_SH_IMM_LOW16_PCREL
@deffnx {} BFD_RELOC_SH_IMM_MEDLOW16
@deffnx {} BFD_RELOC_SH_IMM_MEDLOW16_PCREL
@deffnx {} BFD_RELOC_SH_IMM_MEDHI16
@deffnx {} BFD_RELOC_SH_IMM_MEDHI16_PCREL
@deffnx {} BFD_RELOC_SH_IMM_HI16
@deffnx {} BFD_RELOC_SH_IMM_HI16_PCREL
@deffnx {} BFD_RELOC_SH_PT_16
Hitachi SH relocs. Not all of these appear in object files.
@end deffn
@deffn {} BFD_RELOC_THUMB_PCREL_BRANCH9

View File

@ -42,7 +42,7 @@ struct line_head
{
bfd_vma total_length;
unsigned short version;
unsigned int prologue_length;
bfd_vma prologue_length;
unsigned char minimum_instruction_length;
unsigned char default_is_stmt;
int line_base;
@ -225,7 +225,7 @@ static bfd_vma read_address PARAMS ((struct comp_unit *, char *));
static struct abbrev_info *lookup_abbrev
PARAMS ((unsigned int, struct abbrev_info **));
static struct abbrev_info **read_abbrevs
PARAMS ((bfd *, unsigned int, struct dwarf2_debug *));
PARAMS ((bfd *, bfd_vma, struct dwarf2_debug *));
static char *read_attribute
PARAMS ((struct attribute *, struct attr_abbrev *,
struct comp_unit *, char *));
@ -396,8 +396,8 @@ read_indirect_string (unit, buf, bytes_read_ptr)
if (offset >= stash->dwarf_str_size)
{
(*_bfd_error_handler) (_("Dwarf Error: DW_FORM_strp offset (%u) greater than or equal to .debug_str size (%u)."),
offset, stash->dwarf_str_size);
(*_bfd_error_handler) (_("Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)."),
(unsigned long) offset, stash->dwarf_str_size);
bfd_set_error (bfd_error_bad_value);
return NULL;
}
@ -523,7 +523,7 @@ lookup_abbrev (number,abbrevs)
static struct abbrev_info**
read_abbrevs (abfd, offset, stash)
bfd * abfd;
unsigned int offset;
bfd_vma offset;
struct dwarf2_debug *stash;
{
struct abbrev_info **abbrevs;
@ -557,8 +557,8 @@ read_abbrevs (abfd, offset, stash)
if (offset >= stash->dwarf_abbrev_size)
{
(*_bfd_error_handler) (_("Dwarf Error: Abbrev offset (%u) greater than or equal to .debug_abbrev size (%u)."),
offset, stash->dwarf_abbrev_size);
(*_bfd_error_handler) (_("Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)."),
(unsigned long) offset, stash->dwarf_abbrev_size);
bfd_set_error (bfd_error_bad_value);
return 0;
}
@ -754,7 +754,7 @@ read_attribute_value (attr, form, unit, info_ptr)
info_ptr = read_attribute_value (attr, form, unit, info_ptr);
break;
default:
(*_bfd_error_handler) (_("Dwarf Error: Invalid or unhandled FORM value: %d."),
(*_bfd_error_handler) (_("Dwarf Error: Invalid or unhandled FORM value: %u."),
form);
bfd_set_error (bfd_error_bad_value);
}
@ -958,7 +958,7 @@ decode_line_info (unit, stash)
below. */
if (unit->line_offset >= stash->dwarf_line_size)
{
(*_bfd_error_handler) (_("Dwarf Error: Line offset (%u) greater than or equal to .debug_line size (%u)."),
(*_bfd_error_handler) (_("Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)."),
unit->line_offset, stash->dwarf_line_size);
bfd_set_error (bfd_error_bad_value);
return 0;
@ -1345,7 +1345,7 @@ scan_unit_for_functions (unit)
abbrev = lookup_abbrev (abbrev_number,unit->abbrevs);
if (! abbrev)
{
(*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %d."),
(*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %u."),
abbrev_number);
bfd_set_error (bfd_error_bad_value);
return false;
@ -1486,9 +1486,9 @@ parse_comp_unit (abfd, stash, unit_length, offset_size)
unsigned int offset_size;
{
struct comp_unit* unit;
unsigned short version;
unsigned int abbrev_offset = 0;
unsigned char addr_size;
unsigned int version;
bfd_vma abbrev_offset = 0;
unsigned int addr_size;
struct abbrev_info** abbrevs;
unsigned int abbrev_number, bytes_read, i;
struct abbrev_info *abbrev;
@ -1517,7 +1517,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size)
if (version != 2)
{
(*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%hu', this reader only handles version 2 information."), version);
(*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%u', this reader only handles version 2 information."), version);
bfd_set_error (bfd_error_bad_value);
return 0;
}
@ -1526,7 +1526,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size)
{
(*_bfd_error_handler) (_("Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'."),
addr_size,
sizeof (bfd_vma));
(unsigned int) sizeof (bfd_vma));
bfd_set_error (bfd_error_bad_value);
return 0;
}
@ -1547,7 +1547,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size)
info_ptr += bytes_read;
if (! abbrev_number)
{
(*_bfd_error_handler) (_("Dwarf Error: Bad abbrev number: %d."),
(*_bfd_error_handler) (_("Dwarf Error: Bad abbrev number: %u."),
abbrev_number);
bfd_set_error (bfd_error_bad_value);
return 0;
@ -1556,7 +1556,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size)
abbrev = lookup_abbrev (abbrev_number, abbrevs);
if (! abbrev)
{
(*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %d."),
(*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %u."),
abbrev_number);
bfd_set_error (bfd_error_bad_value);
return 0;

View File

@ -788,6 +788,11 @@ struct elf_backend_data
section. */
unsigned default_use_rela_p : 1;
/* Set if RELA relocations for a relocatable link can be handled by
generic code. Backends that set this flag need do nothing in the
backend relocate_section routine for relocatable linking. */
unsigned rela_normal : 1;
/* True if addresses "naturally" sign extend. This is used when
swapping in from Elf32 when BFD64. */
unsigned sign_extend_vma : 1;

View File

@ -64,6 +64,7 @@ struct eh_cie_fde
unsigned char removed : 1;
unsigned char make_relative : 1;
unsigned char make_lsda_relative : 1;
unsigned char per_encoding_relative : 1;
};
struct eh_frame_sec_info
@ -469,6 +470,8 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
= cie.make_relative;
sec_info->entry[last_cie_ndx].make_lsda_relative
= cie.make_lsda_relative;
sec_info->entry[last_cie_ndx].per_encoding_relative
= (cie.per_encoding & 0x70) == DW_EH_PE_pcrel;
}
}
@ -633,8 +636,9 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
else
{
if (info->shared
&& (cie.fde_encoding & 0xf0) == DW_EH_PE_absptr
&& cie.make_relative == 0)
&& (((cie.fde_encoding & 0xf0) == DW_EH_PE_absptr
&& cie.make_relative == 0)
|| (cie.fde_encoding & 0xf0) == DW_EH_PE_aligned))
{
/* If shared library uses absolute pointers
which we cannot turn into PC relative,
@ -689,6 +693,7 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
{
sec_info->entry[i].make_relative = make_relative;
sec_info->entry[i].make_lsda_relative = make_lsda_relative;
sec_info->entry[i].per_encoding_relative = 0;
}
}
else if (sec_info->entry[i].cie && sec_info->entry[i].sec == sec)
@ -947,7 +952,8 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
/* CIE */
cie_offset = sec_info->entry[i].new_offset;
if (sec_info->entry[i].make_relative
|| sec_info->entry[i].make_lsda_relative)
|| sec_info->entry[i].make_lsda_relative
|| sec_info->entry[i].per_encoding_relative)
{
unsigned char *aug;
unsigned int action;
@ -956,7 +962,8 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
/* Need to find 'R' or 'L' augmentation's argument and modify
DW_EH_PE_* value. */
action = (sec_info->entry[i].make_relative ? 1 : 0)
| (sec_info->entry[i].make_lsda_relative ? 2 : 0);
| (sec_info->entry[i].make_lsda_relative ? 2 : 0)
| (sec_info->entry[i].per_encoding_relative ? 4 : 0);
buf = contents + sec_info->entry[i].offset;
/* Skip length, id and version. */
buf += 9;
@ -988,10 +995,22 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
per_width = get_DW_EH_PE_width (per_encoding,
ptr_size);
BFD_ASSERT (per_width != 0);
BFD_ASSERT (((per_encoding & 0x70) == DW_EH_PE_pcrel)
== sec_info->entry[i].per_encoding_relative);
if ((per_encoding & 0xf0) == DW_EH_PE_aligned)
buf = (contents
+ ((buf - contents + per_width - 1)
& ~((bfd_size_type) per_width - 1)));
if (action & 4)
{
bfd_vma value;
value = read_value (abfd, buf, per_width);
value += (sec_info->entry[i].offset
- sec_info->entry[i].new_offset);
write_value (abfd, buf, value, per_width);
action &= ~4;
}
buf += per_width;
break;
case 'R':
@ -1008,7 +1027,7 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
}
}
}
else
else if (sec_info->entry[i].size > 4)
{
/* FDE */
bfd_vma value = 0, address;
@ -1081,6 +1100,9 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
}
}
}
else
/* Terminating FDE must be at the end of .eh_frame section only. */
BFD_ASSERT (i == sec_info->count - 1);
BFD_ASSERT (p == contents + sec_info->entry[i].new_offset);
memmove (p, contents + sec_info->entry[i].offset,

View File

@ -3881,7 +3881,6 @@ prep_headers (abfd)
Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form */
Elf_Internal_Phdr *i_phdrp = 0; /* Program header table, internal form */
Elf_Internal_Shdr **i_shdrp; /* Section header table, internal form */
int count;
struct elf_strtab_hash *shstrtab;
struct elf_backend_data *bed = get_elf_backend_data (abfd);
@ -3904,12 +3903,6 @@ prep_headers (abfd)
bfd_big_endian (abfd) ? ELFDATA2MSB : ELFDATA2LSB;
i_ehdrp->e_ident[EI_VERSION] = bed->s->ev_current;
i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_NONE;
i_ehdrp->e_ident[EI_ABIVERSION] = 0;
for (count = EI_PAD; count < EI_NIDENT; count++)
i_ehdrp->e_ident[count] = 0;
if ((abfd->flags & DYNAMIC) != 0)
i_ehdrp->e_type = ET_DYN;
else if ((abfd->flags & EXEC_P) != 0)

View File

@ -1390,7 +1390,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
boolean overflow = false;
bfd_vma upper_insn = bfd_get_16 (input_bfd, hit_data);
bfd_vma lower_insn = bfd_get_16 (input_bfd, hit_data + 2);
bfd_signed_vma reloc_signed_max = (1 << (howto->bitsize - 1)) - 1;
bfd_signed_vma reloc_signed_max = ((1 << (howto->bitsize - 1)) - 1) >> howto->rightshift;
bfd_signed_vma reloc_signed_min = ~ reloc_signed_max;
bfd_vma check;
bfd_signed_vma signed_check;
@ -1830,6 +1830,11 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
Elf_Internal_Rela * relend;
const char * name;
#ifndef USE_REL
if (info->relocateable)
return true;
#endif
symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (input_bfd);
@ -1862,6 +1867,7 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
#endif
howto = bfd_reloc.howto;
#ifdef USE_REL
if (info->relocateable)
{
/* This is a relocateable link. We don't have to change
@ -1874,19 +1880,16 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
{
sec = local_sections[r_symndx];
#ifdef USE_REL
arm_add_to_rel (input_bfd, contents + rel->r_offset,
howto,
(bfd_signed_vma) (sec->output_offset
+ sym->st_value));
#else
rel->r_addend += (sec->output_offset + sym->st_value);
#endif
}
}
continue;
}
#endif
/* This is a final link. */
h = NULL;
@ -3637,6 +3640,9 @@ elf32_arm_reloc_type_class (rela)
#define elf_backend_plt_readonly 1
#define elf_backend_want_got_plt 1
#define elf_backend_want_plt_sym 0
#ifndef USE_REL
#define elf_backend_rela_normal 1
#endif
#define elf_backend_got_header_size 12
#define elf_backend_plt_header_size PLT_ENTRY_SIZE

View File

@ -105,6 +105,9 @@ struct mips_elf_link_hash_entry
/* This is like the call_stub field, but it is used if the function
being called returns a floating point value. */
asection *call_fp_stub;
/* Are we forced local? .*/
boolean forced_local;
};
static bfd_reloc_status_type mips32_64bit_reloc
@ -4528,6 +4531,7 @@ mips_elf_link_hash_newfunc (entry, table, string)
ret->need_fn_stub = false;
ret->call_stub = NULL;
ret->call_fp_stub = NULL;
ret->forced_local = false;
}
return (struct bfd_hash_entry *) ret;
@ -4543,7 +4547,12 @@ _bfd_mips_elf_hide_symbol (info, entry, force_local)
asection *got;
struct mips_got_info *g;
struct mips_elf_link_hash_entry *h;
h = (struct mips_elf_link_hash_entry *) entry;
if (h->forced_local)
return;
h->forced_local = true;
dynobj = elf_hash_table (info)->dynobj;
got = bfd_get_section_by_name (dynobj, ".got");
g = (struct mips_got_info *) elf_section_data (got)->tdata;
@ -6047,9 +6056,18 @@ mips_elf_record_global_got_symbol (h, info, g)
{
/* A global symbol in the GOT must also be in the dynamic symbol
table. */
if (h->dynindx == -1
&& !bfd_elf32_link_record_dynamic_symbol (info, h))
return false;
if (h->dynindx == -1)
{
switch (ELF_ST_VISIBILITY (h->other))
{
case STV_INTERNAL:
case STV_HIDDEN:
_bfd_mips_elf_hide_symbol (info, h, true);
break;
}
if (!bfd_elf32_link_record_dynamic_symbol (info, h))
return false;
}
/* If we've already marked this entry as needing GOT space, we don't
need to do it again. */

View File

@ -1,5 +1,5 @@
/* PowerPC-specific support for 32-bit ELF
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
@ -49,6 +49,8 @@ static boolean ppc_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *));
static int ppc_elf_additional_program_headers PARAMS ((bfd *));
static boolean ppc_elf_modify_segment_map PARAMS ((bfd *));
static asection *ppc_elf_create_got
PARAMS ((bfd *, struct bfd_link_info *));
static boolean ppc_elf_create_dynamic_sections
PARAMS ((bfd *, struct bfd_link_info *));
@ -679,20 +681,20 @@ static reloc_howto_type ppc_elf_howto_raw[] = {
0xffff, /* dst_mask */
false), /* pcrel_offset */
/* 32-bit section relative relocation. */
/* 16-bit section relative relocation. */
HOWTO (R_PPC_SECTOFF, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
true, /* pc_relative */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_PPC_SECTOFF", /* name */
false, /* partial_inplace */
0, /* src_mask */
0, /* dst_mask */
true), /* pcrel_offset */
0xffff, /* dst_mask */
false), /* pcrel_offset */
/* 16-bit lower half section relative relocation. */
HOWTO (R_PPC_SECTOFF_LO, /* type */
@ -1295,7 +1297,7 @@ ppc_elf_reloc_type_lookup (abfd, code)
case BFD_RELOC_HI16_PLTOFF: ppc_reloc = R_PPC_PLT16_HI; break;
case BFD_RELOC_HI16_S_PLTOFF: ppc_reloc = R_PPC_PLT16_HA; break;
case BFD_RELOC_GPREL16: ppc_reloc = R_PPC_SDAREL16; break;
case BFD_RELOC_32_BASEREL: ppc_reloc = R_PPC_SECTOFF; break;
case BFD_RELOC_16_BASEREL: ppc_reloc = R_PPC_SECTOFF; break;
case BFD_RELOC_LO16_BASEREL: ppc_reloc = R_PPC_SECTOFF_LO; break;
case BFD_RELOC_HI16_BASEREL: ppc_reloc = R_PPC_SECTOFF_HI; break;
case BFD_RELOC_HI16_S_BASEREL: ppc_reloc = R_PPC_SECTOFF_HA; break;
@ -1632,6 +1634,30 @@ ppc_elf_modify_segment_map (abfd)
return true;
}
/* The powerpc .got has a blrl instruction in it. Mark it executable. */
static asection *
ppc_elf_create_got (abfd, info)
bfd *abfd;
struct bfd_link_info *info;
{
register asection *s;
flagword flags;
if (!_bfd_elf_create_got_section (abfd, info))
return NULL;
s = bfd_get_section_by_name (abfd, ".got");
if (s == NULL)
abort ();
flags = (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS | SEC_IN_MEMORY
| SEC_LINKER_CREATED);
if (!bfd_set_section_flags (abfd, s, flags))
return NULL;
return s;
}
/* We have to create .dynsbss and .rela.sbss here so that they get mapped
to output sections (just like _bfd_elf_create_dynamic_sections has
to create .dynbss and .rela.bss). */
@ -1644,6 +1670,9 @@ ppc_elf_create_dynamic_sections (abfd, info)
register asection *s;
flagword flags;
if (!ppc_elf_create_got (abfd, info))
return false;
if (!_bfd_elf_create_dynamic_sections (abfd, info))
return false;
@ -1663,7 +1692,13 @@ ppc_elf_create_dynamic_sections (abfd, info)
|| ! bfd_set_section_alignment (abfd, s, 2))
return false;
}
return true;
s = bfd_get_section_by_name (abfd, ".plt");
if (s == NULL)
abort ();
flags = SEC_ALLOC | SEC_CODE | SEC_IN_MEMORY | SEC_LINKER_CREATED;
return bfd_set_section_flags (abfd, s, flags);
}
/* Adjust a symbol defined by a dynamic object and referenced by a
@ -2119,10 +2154,9 @@ ppc_elf_check_relocs (abfd, info, sec, relocs)
{
if (dynobj == NULL)
elf_hash_table (info)->dynobj = dynobj = abfd;
if (! _bfd_elf_create_got_section (dynobj, info))
sgot = ppc_elf_create_got (dynobj, info);
if (sgot == NULL)
return false;
sgot = bfd_get_section_by_name (dynobj, ".got");
BFD_ASSERT (sgot != NULL);
}
}
@ -2139,10 +2173,9 @@ ppc_elf_check_relocs (abfd, info, sec, relocs)
{
if (dynobj == NULL)
elf_hash_table (info)->dynobj = dynobj = abfd;
if (! _bfd_elf_create_got_section (dynobj, info))
sgot = ppc_elf_create_got (dynobj, info);
if (sgot == NULL)
return false;
sgot = bfd_get_section_by_name (dynobj, ".got");
BFD_ASSERT (sgot != NULL);
}
if (srelgot == NULL
@ -2542,7 +2575,8 @@ ppc_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
{
if (sym->st_shndx == SHN_COMMON
&& !info->relocateable
&& sym->st_size <= elf_gp_size (abfd))
&& sym->st_size <= elf_gp_size (abfd)
&& info->hash->creator->flavour == bfd_target_elf_flavour)
{
/* Common symbols less than or equal to -G nn bytes are automatically
put into .sdata. */
@ -2895,6 +2929,9 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
(info->relocateable) ? " (relocatable)" : "");
#endif
if (info->relocateable)
return true;
if (!ppc_elf_howto_table[R_PPC_ADDR32])
/* Initialize howto table if needed. */
ppc_elf_howto_init ();
@ -2939,34 +2976,6 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
howto = ppc_elf_howto_table[(int) r_type];
r_symndx = ELF32_R_SYM (rel->r_info);
if (info->relocateable)
{
/* This is a relocateable link. We don't have to change
anything, unless the reloc is against a section symbol,
in which case we have to adjust according to where the
section symbol winds up in the output section. */
if (r_symndx < symtab_hdr->sh_info)
{
sym = local_syms + r_symndx;
if ((unsigned) ELF_ST_TYPE (sym->st_info) == STT_SECTION)
{
sec = local_sections[r_symndx];
addend = rel->r_addend += sec->output_offset + sym->st_value;
}
}
#ifdef DEBUG
fprintf (stderr, "\ttype = %s (%d), symbol index = %ld, offset = %ld, addend = %ld\n",
howto->name,
(int) r_type,
r_symndx,
(long) offset,
(long) addend);
#endif
continue;
}
/* This is a final link. */
if (r_symndx < symtab_hdr->sh_info)
{
sym = local_syms + r_symndx;
@ -3780,6 +3789,7 @@ ppc_elf_grok_psinfo (abfd, note)
#define elf_backend_can_refcount 1
#define elf_backend_got_header_size 12
#define elf_backend_plt_header_size PLT_INITIAL_ENTRY_SIZE
#define elf_backend_rela_normal 1
#define bfd_elf32_bfd_merge_private_bfd_data ppc_elf_merge_private_bfd_data
#define bfd_elf32_bfd_relax_section ppc_elf_relax_section

File diff suppressed because it is too large Load Diff

View File

@ -3695,6 +3695,16 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
}
goto default_reloc;
case R_ALPHA_SREL32:
case R_ALPHA_SREL64:
/* ??? .eh_frame references to discarded sections will be smashed
to relocations against SHN_UNDEF. The .eh_frame format allows
NULL to be encoded as 0 in any format, so this works here. */
if (r_symndx == 0)
howto = (elf64_alpha_howto_table
+ (r_type - R_ALPHA_SREL32 + R_ALPHA_REFLONG));
goto default_reloc;
default:
default_reloc:
r = _bfd_final_link_relocate (howto, input_bfd, input_section,

File diff suppressed because it is too large Load Diff

View File

@ -17,6 +17,6 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
boolean ppc64_elf_set_toc PARAMS ((bfd *, struct bfd_link_info *));
bfd_vma ppc64_elf_toc PARAMS ((bfd *));
boolean ppc64_elf_size_stubs PARAMS ((bfd *, struct bfd_link_info *, int *));
boolean ppc64_elf_build_stubs PARAMS ((bfd *, struct bfd_link_info *));

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/* SPARC-specific support for 64-bit ELF
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@ -1385,9 +1385,8 @@ sparc64_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
*namep = NULL;
return true;
}
else if (! *namep || ! **namep)
return true;
else
else if (*namep && **namep
&& info->hash->creator->flavour == bfd_target_elf_flavour)
{
int i;
struct sparc64_elf_app_reg *p;

File diff suppressed because it is too large Load Diff

View File

@ -138,8 +138,8 @@ static reloc_howto_type elf32_arm_howto_table[] =
bfd_elf_generic_reloc, /* special_function */
"R_ARM_ABS16", /* name */
false, /* partial_inplace */
0, /* src_mask */
0, /* dst_mask */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
false), /* pcrel_offset */
/* 12 bit absolute */

View File

@ -5347,21 +5347,11 @@ elf_bfd_final_link (abfd, info)
{
for (p = o->link_order_head; p != NULL; p = p->next)
{
Elf_Internal_Shdr *rhdr;
if (p->type == bfd_indirect_link_order
&& (bfd_get_flavour (p->u.indirect.section->owner)
&& (bfd_get_flavour ((sub = p->u.indirect.section->owner))
== bfd_target_elf_flavour)
&& (((rhdr = &elf_section_data (p->u.indirect.section)->rel_hdr)
->sh_entsize == 0)
|| rhdr->sh_entsize == sizeof (Elf_External_Rel)
|| rhdr->sh_entsize == sizeof (Elf_External_Rela))
&& (((rhdr = elf_section_data (p->u.indirect.section)->rel_hdr2)
== NULL)
|| rhdr->sh_entsize == sizeof (Elf_External_Rel)
|| rhdr->sh_entsize == sizeof (Elf_External_Rela)))
&& elf_elfheader (sub)->e_ident[EI_CLASS] == bed->s->elfclass)
{
sub = p->u.indirect.section->owner;
if (! sub->output_has_begun)
{
if (! elf_link_input_bfd (&finfo, sub))
@ -6764,6 +6754,12 @@ elf_link_input_bfd (finfo, input_bfd)
void (*reloc_emitter) PARAMS ((bfd *, asection *,
Elf_Internal_Shdr *,
Elf_Internal_Rela *));
boolean rela_normal;
input_rel_hdr = &elf_section_data (o)->rel_hdr;
rela_normal = (bed->rela_normal
&& (input_rel_hdr->sh_entsize
== sizeof (Elf_External_Rela)));
/* Adjust the reloc addresses and symbol indices. */
@ -6786,7 +6782,7 @@ elf_link_input_bfd (finfo, input_bfd)
irela->r_offset += o->output_offset;
/* Relocs in an executable have to be virtual addresses. */
if (finfo->info->emitrelocations)
if (!finfo->info->relocateable)
irela->r_offset += o->output_section->vma;
r_symndx = ELF_R_SYM (irela->r_info);
@ -6837,10 +6833,9 @@ elf_link_input_bfd (finfo, input_bfd)
processor specific section. If we have
discarded a section, the output_section will
be the absolute section. */
if (sec != NULL
&& (bfd_is_abs_section (sec)
|| (sec->output_section != NULL
&& bfd_is_abs_section (sec->output_section))))
if (bfd_is_abs_section (sec)
|| (sec != NULL
&& bfd_is_abs_section (sec->output_section)))
r_symndx = 0;
else if (sec == NULL || sec->owner == NULL)
{
@ -6852,6 +6847,11 @@ elf_link_input_bfd (finfo, input_bfd)
r_symndx = sec->output_section->target_index;
BFD_ASSERT (r_symndx != 0);
}
/* Adjust the addend according to where the
section winds up in the output section. */
if (rela_normal)
irela->r_addend += sec->output_offset;
}
else
{
@ -6910,7 +6910,6 @@ elf_link_input_bfd (finfo, input_bfd)
else
reloc_emitter = elf_link_output_relocs;
input_rel_hdr = &elf_section_data (o)->rel_hdr;
(*reloc_emitter) (output_bfd, o, input_rel_hdr, internal_relocs);
input_rel_hdr = elf_section_data (o)->rel_hdr2;
@ -6918,7 +6917,8 @@ elf_link_input_bfd (finfo, input_bfd)
{
internal_relocs += (NUM_SHDR_ENTRIES (input_rel_hdr)
* bed->s->int_rels_per_ext_rel);
reloc_emitter (output_bfd, o, input_rel_hdr, internal_relocs);
(*reloc_emitter) (output_bfd, o, input_rel_hdr,
internal_relocs);
}
}

View File

@ -3502,6 +3502,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
elf_section_data(input_section->output_section)
->this_hdr.sh_flags |= flags;
return true;
}
gp_val = _bfd_get_gp_value (output_bfd);
@ -3534,29 +3535,9 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
ret_val = false;
continue;
}
howto = lookup_howto (r_type);
r_symndx = ELFNN_R_SYM (rel->r_info);
if (info->relocateable)
{
/* This is a relocateable link. We don't have to change
anything, unless the reloc is against a section symbol,
in which case we have to adjust according to where the
section symbol winds up in the output section. */
if (r_symndx < symtab_hdr->sh_info)
{
sym = local_syms + r_symndx;
if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
{
sym_sec = local_sections[r_symndx];
rel->r_addend += sym_sec->output_offset;
}
}
continue;
}
/* This is a final link. */
h = NULL;
sym = NULL;
sym_sec = NULL;
@ -4561,6 +4542,7 @@ elfNN_hpux_backend_section_from_bfd_section (abfd, sec, retval)
#define elf_backend_copy_indirect_symbol elfNN_ia64_hash_copy_indirect
#define elf_backend_hide_symbol elfNN_ia64_hash_hide_symbol
#define elf_backend_reloc_type_class elfNN_ia64_reloc_type_class
#define elf_backend_rela_normal 1
#include "elfNN-target.h"

View File

@ -390,6 +390,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define elf_backend_default_use_rela_p !USE_REL
#endif
#ifndef elf_backend_rela_normal
#define elf_backend_rela_normal 0
#endif
#ifndef ELF_MACHINE_ALT1
#define ELF_MACHINE_ALT1 0
#endif
@ -470,6 +474,7 @@ static const struct elf_backend_data elfNN_bed =
elf_backend_may_use_rel_p,
elf_backend_may_use_rela_p,
elf_backend_default_use_rela_p,
elf_backend_rela_normal,
elf_backend_sign_extend_vma,
elf_backend_want_got_plt,
elf_backend_plt_readonly,

View File

@ -875,8 +875,8 @@ ihex_write_object_contents (abfd)
rec_addr = where - (extbase + segbase);
/* Output records shouldn't cross 64K boundaries. */
if (rec_addr + now > 0xfffff)
now = 0xffff - rec_addr;
if (rec_addr + now > 0xffff)
now = 0x10000 - rec_addr;
if (! ihex_write_record (abfd, now, rec_addr, 0, p))
return false;

View File

@ -752,55 +752,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_MIPS_REL16",
"BFD_RELOC_MIPS_RELGOT",
"BFD_RELOC_MIPS_JALR",
"BFD_RELOC_SH_GOT_LOW16",
"BFD_RELOC_SH_GOT_MEDLOW16",
"BFD_RELOC_SH_GOT_MEDHI16",
"BFD_RELOC_SH_GOT_HI16",
"BFD_RELOC_SH_GOTPLT_LOW16",
"BFD_RELOC_SH_GOTPLT_MEDLOW16",
"BFD_RELOC_SH_GOTPLT_MEDHI16",
"BFD_RELOC_SH_GOTPLT_HI16",
"BFD_RELOC_SH_PLT_LOW16",
"BFD_RELOC_SH_PLT_MEDLOW16",
"BFD_RELOC_SH_PLT_MEDHI16",
"BFD_RELOC_SH_PLT_HI16",
"BFD_RELOC_SH_GOTOFF_LOW16",
"BFD_RELOC_SH_GOTOFF_MEDLOW16",
"BFD_RELOC_SH_GOTOFF_MEDHI16",
"BFD_RELOC_SH_GOTOFF_HI16",
"BFD_RELOC_SH_GOTPC_LOW16",
"BFD_RELOC_SH_GOTPC_MEDLOW16",
"BFD_RELOC_SH_GOTPC_MEDHI16",
"BFD_RELOC_SH_GOTPC_HI16",
"BFD_RELOC_SH_COPY64",
"BFD_RELOC_SH_GLOB_DAT64",
"BFD_RELOC_SH_JMP_SLOT64",
"BFD_RELOC_SH_RELATIVE64",
"BFD_RELOC_SH_GOT10BY4",
"BFD_RELOC_SH_GOT10BY8",
"BFD_RELOC_SH_GOTPLT10BY4",
"BFD_RELOC_SH_GOTPLT10BY8",
"BFD_RELOC_SH_GOTPLT32",
"BFD_RELOC_SH_SHMEDIA_CODE",
"BFD_RELOC_SH_IMMU5",
"BFD_RELOC_SH_IMMS6",
"BFD_RELOC_SH_IMMS6BY32",
"BFD_RELOC_SH_IMMU6",
"BFD_RELOC_SH_IMMS10",
"BFD_RELOC_SH_IMMS10BY2",
"BFD_RELOC_SH_IMMS10BY4",
"BFD_RELOC_SH_IMMS10BY8",
"BFD_RELOC_SH_IMMS16",
"BFD_RELOC_SH_IMMU16",
"BFD_RELOC_SH_IMM_LOW16",
"BFD_RELOC_SH_IMM_LOW16_PCREL",
"BFD_RELOC_SH_IMM_MEDLOW16",
"BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
"BFD_RELOC_SH_IMM_MEDHI16",
"BFD_RELOC_SH_IMM_MEDHI16_PCREL",
"BFD_RELOC_SH_IMM_HI16",
"BFD_RELOC_SH_IMM_HI16_PCREL",
"BFD_RELOC_SH_PT_16",
"BFD_RELOC_386_GOT32",
"BFD_RELOC_386_PLT32",
@ -947,6 +898,55 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_SH_JMP_SLOT",
"BFD_RELOC_SH_RELATIVE",
"BFD_RELOC_SH_GOTPC",
"BFD_RELOC_SH_GOT_LOW16",
"BFD_RELOC_SH_GOT_MEDLOW16",
"BFD_RELOC_SH_GOT_MEDHI16",
"BFD_RELOC_SH_GOT_HI16",
"BFD_RELOC_SH_GOTPLT_LOW16",
"BFD_RELOC_SH_GOTPLT_MEDLOW16",
"BFD_RELOC_SH_GOTPLT_MEDHI16",
"BFD_RELOC_SH_GOTPLT_HI16",
"BFD_RELOC_SH_PLT_LOW16",
"BFD_RELOC_SH_PLT_MEDLOW16",
"BFD_RELOC_SH_PLT_MEDHI16",
"BFD_RELOC_SH_PLT_HI16",
"BFD_RELOC_SH_GOTOFF_LOW16",
"BFD_RELOC_SH_GOTOFF_MEDLOW16",
"BFD_RELOC_SH_GOTOFF_MEDHI16",
"BFD_RELOC_SH_GOTOFF_HI16",
"BFD_RELOC_SH_GOTPC_LOW16",
"BFD_RELOC_SH_GOTPC_MEDLOW16",
"BFD_RELOC_SH_GOTPC_MEDHI16",
"BFD_RELOC_SH_GOTPC_HI16",
"BFD_RELOC_SH_COPY64",
"BFD_RELOC_SH_GLOB_DAT64",
"BFD_RELOC_SH_JMP_SLOT64",
"BFD_RELOC_SH_RELATIVE64",
"BFD_RELOC_SH_GOT10BY4",
"BFD_RELOC_SH_GOT10BY8",
"BFD_RELOC_SH_GOTPLT10BY4",
"BFD_RELOC_SH_GOTPLT10BY8",
"BFD_RELOC_SH_GOTPLT32",
"BFD_RELOC_SH_SHMEDIA_CODE",
"BFD_RELOC_SH_IMMU5",
"BFD_RELOC_SH_IMMS6",
"BFD_RELOC_SH_IMMS6BY32",
"BFD_RELOC_SH_IMMU6",
"BFD_RELOC_SH_IMMS10",
"BFD_RELOC_SH_IMMS10BY2",
"BFD_RELOC_SH_IMMS10BY4",
"BFD_RELOC_SH_IMMS10BY8",
"BFD_RELOC_SH_IMMS16",
"BFD_RELOC_SH_IMMU16",
"BFD_RELOC_SH_IMM_LOW16",
"BFD_RELOC_SH_IMM_LOW16_PCREL",
"BFD_RELOC_SH_IMM_MEDLOW16",
"BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
"BFD_RELOC_SH_IMM_MEDHI16",
"BFD_RELOC_SH_IMM_MEDHI16_PCREL",
"BFD_RELOC_SH_IMM_HI16",
"BFD_RELOC_SH_IMM_HI16_PCREL",
"BFD_RELOC_SH_PT_16",
"BFD_RELOC_THUMB_PCREL_BRANCH9",
"BFD_RELOC_THUMB_PCREL_BRANCH12",
"BFD_RELOC_THUMB_PCREL_BRANCH23",

View File

@ -1,6 +1,6 @@
/* opncls.c -- open and close a BFD.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
2001
2001, 2002
Free Software Foundation, Inc.
Written by Cygnus Support.
@ -96,6 +96,8 @@ _bfd_new_bfd_contained_in (obfd)
bfd *nbfd;
nbfd = _bfd_new_bfd ();
if (nbfd == NULL)
return NULL;
nbfd->xvec = obfd->xvec;
nbfd->my_archive = obfd;
nbfd->direction = read_direction;
@ -618,7 +620,6 @@ bfd_make_readable(abfd)
abfd->arch_info = &bfd_default_arch_struct;
abfd->where = 0;
abfd->sections = (asection *) NULL;
abfd->format = bfd_unknown;
abfd->my_archive = (bfd *) NULL;
abfd->origin = 0;
@ -637,6 +638,7 @@ bfd_make_readable(abfd)
abfd->outsymbols = 0;
abfd->tdata.any = 0;
bfd_section_list_clear (abfd);
bfd_check_format(abfd, bfd_object);
return true;

View File

@ -2051,106 +2051,6 @@ ENUMX
BFD_RELOC_MIPS_JALR
COMMENT
COMMENT
ENUMX
BFD_RELOC_SH_GOT_LOW16
ENUMX
BFD_RELOC_SH_GOT_MEDLOW16
ENUMX
BFD_RELOC_SH_GOT_MEDHI16
ENUMX
BFD_RELOC_SH_GOT_HI16
ENUMX
BFD_RELOC_SH_GOTPLT_LOW16
ENUMX
BFD_RELOC_SH_GOTPLT_MEDLOW16
ENUMX
BFD_RELOC_SH_GOTPLT_MEDHI16
ENUMX
BFD_RELOC_SH_GOTPLT_HI16
ENUMX
BFD_RELOC_SH_PLT_LOW16
ENUMX
BFD_RELOC_SH_PLT_MEDLOW16
ENUMX
BFD_RELOC_SH_PLT_MEDHI16
ENUMX
BFD_RELOC_SH_PLT_HI16
ENUMX
BFD_RELOC_SH_GOTOFF_LOW16
ENUMX
BFD_RELOC_SH_GOTOFF_MEDLOW16
ENUMX
BFD_RELOC_SH_GOTOFF_MEDHI16
ENUMX
BFD_RELOC_SH_GOTOFF_HI16
ENUMX
BFD_RELOC_SH_GOTPC_LOW16
ENUMX
BFD_RELOC_SH_GOTPC_MEDLOW16
ENUMX
BFD_RELOC_SH_GOTPC_MEDHI16
ENUMX
BFD_RELOC_SH_GOTPC_HI16
ENUMX
BFD_RELOC_SH_COPY64
ENUMX
BFD_RELOC_SH_GLOB_DAT64
ENUMX
BFD_RELOC_SH_JMP_SLOT64
ENUMX
BFD_RELOC_SH_RELATIVE64
ENUMX
BFD_RELOC_SH_GOT10BY4
ENUMX
BFD_RELOC_SH_GOT10BY8
ENUMX
BFD_RELOC_SH_GOTPLT10BY4
ENUMX
BFD_RELOC_SH_GOTPLT10BY8
ENUMX
BFD_RELOC_SH_GOTPLT32
COMMENT
ENUMX
BFD_RELOC_SH_SHMEDIA_CODE
ENUMX
BFD_RELOC_SH_IMMU5
ENUMX
BFD_RELOC_SH_IMMS6
ENUMX
BFD_RELOC_SH_IMMS6BY32
ENUMX
BFD_RELOC_SH_IMMU6
ENUMX
BFD_RELOC_SH_IMMS10
ENUMX
BFD_RELOC_SH_IMMS10BY2
ENUMX
BFD_RELOC_SH_IMMS10BY4
ENUMX
BFD_RELOC_SH_IMMS10BY8
ENUMX
BFD_RELOC_SH_IMMS16
ENUMX
BFD_RELOC_SH_IMMU16
ENUMX
BFD_RELOC_SH_IMM_LOW16
ENUMX
BFD_RELOC_SH_IMM_LOW16_PCREL
ENUMX
BFD_RELOC_SH_IMM_MEDLOW16
ENUMX
BFD_RELOC_SH_IMM_MEDLOW16_PCREL
ENUMX
BFD_RELOC_SH_IMM_MEDHI16
ENUMX
BFD_RELOC_SH_IMM_MEDHI16_PCREL
ENUMX
BFD_RELOC_SH_IMM_HI16
ENUMX
BFD_RELOC_SH_IMM_HI16_PCREL
ENUMX
BFD_RELOC_SH_PT_16
COMMENT
ENUMDOC
MIPS ELF relocations.
@ -2487,6 +2387,104 @@ ENUMX
BFD_RELOC_SH_RELATIVE
ENUMX
BFD_RELOC_SH_GOTPC
ENUMX
BFD_RELOC_SH_GOT_LOW16
ENUMX
BFD_RELOC_SH_GOT_MEDLOW16
ENUMX
BFD_RELOC_SH_GOT_MEDHI16
ENUMX
BFD_RELOC_SH_GOT_HI16
ENUMX
BFD_RELOC_SH_GOTPLT_LOW16
ENUMX
BFD_RELOC_SH_GOTPLT_MEDLOW16
ENUMX
BFD_RELOC_SH_GOTPLT_MEDHI16
ENUMX
BFD_RELOC_SH_GOTPLT_HI16
ENUMX
BFD_RELOC_SH_PLT_LOW16
ENUMX
BFD_RELOC_SH_PLT_MEDLOW16
ENUMX
BFD_RELOC_SH_PLT_MEDHI16
ENUMX
BFD_RELOC_SH_PLT_HI16
ENUMX
BFD_RELOC_SH_GOTOFF_LOW16
ENUMX
BFD_RELOC_SH_GOTOFF_MEDLOW16
ENUMX
BFD_RELOC_SH_GOTOFF_MEDHI16
ENUMX
BFD_RELOC_SH_GOTOFF_HI16
ENUMX
BFD_RELOC_SH_GOTPC_LOW16
ENUMX
BFD_RELOC_SH_GOTPC_MEDLOW16
ENUMX
BFD_RELOC_SH_GOTPC_MEDHI16
ENUMX
BFD_RELOC_SH_GOTPC_HI16
ENUMX
BFD_RELOC_SH_COPY64
ENUMX
BFD_RELOC_SH_GLOB_DAT64
ENUMX
BFD_RELOC_SH_JMP_SLOT64
ENUMX
BFD_RELOC_SH_RELATIVE64
ENUMX
BFD_RELOC_SH_GOT10BY4
ENUMX
BFD_RELOC_SH_GOT10BY8
ENUMX
BFD_RELOC_SH_GOTPLT10BY4
ENUMX
BFD_RELOC_SH_GOTPLT10BY8
ENUMX
BFD_RELOC_SH_GOTPLT32
ENUMX
BFD_RELOC_SH_SHMEDIA_CODE
ENUMX
BFD_RELOC_SH_IMMU5
ENUMX
BFD_RELOC_SH_IMMS6
ENUMX
BFD_RELOC_SH_IMMS6BY32
ENUMX
BFD_RELOC_SH_IMMU6
ENUMX
BFD_RELOC_SH_IMMS10
ENUMX
BFD_RELOC_SH_IMMS10BY2
ENUMX
BFD_RELOC_SH_IMMS10BY4
ENUMX
BFD_RELOC_SH_IMMS10BY8
ENUMX
BFD_RELOC_SH_IMMS16
ENUMX
BFD_RELOC_SH_IMMU16
ENUMX
BFD_RELOC_SH_IMM_LOW16
ENUMX
BFD_RELOC_SH_IMM_LOW16_PCREL
ENUMX
BFD_RELOC_SH_IMM_MEDLOW16
ENUMX
BFD_RELOC_SH_IMM_MEDLOW16_PCREL
ENUMX
BFD_RELOC_SH_IMM_MEDHI16
ENUMX
BFD_RELOC_SH_IMM_MEDHI16_PCREL
ENUMX
BFD_RELOC_SH_IMM_HI16
ENUMX
BFD_RELOC_SH_IMM_HI16_PCREL
ENUMX
BFD_RELOC_SH_PT_16
ENUMDOC
Hitachi SH relocs. Not all of these appear in object files.

View File

@ -182,7 +182,7 @@ typedef union {
/* Return the c_impl field from struct core_dumpx C. */
#ifdef AIX_CORE_DUMPX_CORE
#if defined (HAVE_ST_C_IMPL) || defined (AIX_5_CORE)
# define CNEW_IMPL(c) (c).c_impl
#else
# define CNEW_IMPL(c) 0

View File

@ -1297,7 +1297,8 @@ _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset, pfound,
*pfound = true;
if (IS_ABSOLUTE_PATH(file_name) || directory_name == NULL)
if (file_name == NULL || IS_ABSOLUTE_PATH (file_name)
|| directory_name == NULL)
*pfilename = file_name;
else
{

View File

@ -1 +1 @@
#define BFD_VERSION_DATE 20020412
#define BFD_VERSION_DATE 20020622

View File

@ -2114,7 +2114,7 @@ xcoff_link_add_dynamic_symbols (abfd, info)
/* Remove the sections from this object, so that they do not get
included in the link. */
abfd->sections = NULL;
bfd_section_list_clear (abfd);
bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr);

View File

@ -1,3 +1,131 @@
2002-05-09 Alan Modra <amodra@bigpond.net.au>
* configure.in: Replace `*pe' with `pe' throughout.
* configure: Regenerate.
Merge from mainline
2002-05-06 Alan Modra <amodra@bigpond.net.au>
* dlltool.c (process_def_file): Add missing prototype.
(new_directive, assemble_file, main): Likewise.
(process_def_file, new_directive): Make static.
(inform): Rewrite using VA_FIXEDARG.
* dllwrap.c (mybasename): Add missing prototype.
(strhash, main): Likewise.
(inform): Rewrite using VA_FIXEDARG.
(warn): Likewise.
(cleanup_and_exit): Use old style function definition.
(strhash): Likewise.
* windres.c (define_resource): Use one memset to clear all of
struct res_resource.
* rcparse.y: Remove newcmd rule. Move rcparse_discard_strings
call to rules that need no lookahead. Check for no lookahead.
2002-05-06 Borut Razem <borut.razem@siol.net>
* rclex.l (get_string): Correct "strings" list handling.
* resrc.c (read_rc_file): Discard strings.
2002-05-04 Bob Byrnes <byrnes@curl.com>
* size.c (display_archive): Add last_arfile and code to close archives.
2002-05-01 Alan Modra <amodra@bigpond.net.au>
* nm.c (print_symbol): Check returned filename from
bfd_find_nearest_line is non-NULL.
2002-04-17 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
* arparse.y: Fix syntax warning.
2002-04-16 Nick Clifton <nickc@cambridge.redhat.com>
* rcparse.y: Set MEMFLAG_DISCARDABLE by default.
2002-04-15 Nick Clifton <nickc@cambridge.redhat.com>
* resrc.c (write_rc_dialog): If charset is non-default value
display all of the DIALOGEX parameters.
2002-04-15 Eric Kohl <ekohl@rz-online.de>
* rcparse.y: Allow two to five parameter in FONT statement of
DIALOGEX resources.
* resbin.c (bin_to_res_dialog): Fixed read/write code for dialogex
resource data.
(res_to_bin_dialog): Likewise.
* windres.h: Added misssing charset variable to dialog_ex
structure.
2002-04-10 Nick Clifton <nickc@cambridge.redhat.com>
* rcparse.y: Set MEMFLAG_PURE by default.
2002-04-09 Bernd Herd <info@herdsoft.com>
* rcparse.y: CLASS definitions in DIALOG resources
are quoted.
Fix typo in BEDIT warning.
Don't add default dialog style when explicit style specified.
Add WS_CAPTION dialog style if CAPTION is specified.
* rclex.l (handle_quotes): "\xhex" encoding in strings corrected.
(handle_quotes) "\a" escape (used for right justified key
definitions in menus) is encodes as binary 8.
* resrc.c (write_rc_dialog): Print style even if it is 0.
(write_rc_directory): Fix overlooked sublang shift bug.
(bin_to_res_dialog): Don't print empty dialog caption.
* resbin.c (bin_to_res_dialog): Use signature to identify
DIALOGEX.
* windres.c (main): Set default LANGUAGE to english/us.
2002-04-09 Gunnar Degnbol <degnbol@danbbs.dk>
* resrc.c: print CLASS names in quotes
2002-04-27 Alan Modra <amodra@bigpond.net.au>
Merge from mainline
2002-04-25 Elena Zannoni <ezannoni@redhat.com>
* readelf.c (get_AT_name): Handle DW_AT_GNU_vector.
2002-04-16 Nick Clifton <nickc@cambridge.redhat.com>
* readelf.c (fetch_location_list): Remove unused function.
* readelf.c (process_corefile_note_segment): Catch corrupt notes
and display a warning message, then exit the loop.
2002-04-24 Christian Groessler <chris@groessler.org>
* MAINTAINERS: Changed my email address.
2002-04-09 J"orn Rennecke <joern.rennecke@superh.com>
* MAINTAINERS: Update my email address.
2002-03-27 Peter Targett <peter.targett@arc.com>
* MAINTAINERS: Update my email address.
2002-03-20 Daniel Berlin <dan@dberlin.org>
* readelf.c: Add support for displaying dwarf2 location lists.
(do_debug_loc, debug_loc_section, debug_loc_size): New.
(parse_args): Use 'O' as shorthand for displaying location list
section.
(process_section_headers): Handle debug_loc as well.
(load_debug_loc): New.
(free_debug_loc): New.
(fetch_location_list): New.
(display_debug_loc): New.
(display_debug_info): Call load_debug_loc and free_debug_loc.
(debug_displays): We can display .debug_loc now, too.
(usage): Update usage string.
(read_and_display_attr_value): Note location lists, but don't
display them inline.
2002-03-01 Dmitry Timoshkov <dmitry@baikal.ru>
* dlltool.c (gen_exp_file): Take into account --kill-at (-k) while
generating .exp file.
2002-02-21 Nick Clifton <nickc@cambridge.redhat.com>
* readelf.c (dump_relocations): Fix typo.
2002-02-18 Timothy Daly <remote_bob@yahoo.com>
* readelf.c (dump_relocations): Display 2nd and 3rd reloc
types for 64-bit MIPS. Narrow some fields for 80-char
output.
(dump_relocations): Change spelling from 'unrecognised'
to 'unrecognized'.
(decode_ARM_machine_flags): Likewise.
(parse_args): Likewise.
(read_and_display_attr_value): Likewise.
(display_debug_section): Likewise.
2002-04-04 Alan Modra <amodra@bigpond.net.au>
* dep-in.sed: Cope with absolute paths.

View File

@ -50,7 +50,7 @@ maintainers for a given domain then responsibility falls to the first
maintainer. The first maintainer is free to devolve that
responsibility among the other maintainers.
ARC Peter Targett <peter.targett@arccores.com>
ARC Peter Targett <peter.targett@arc.com>
ARM Nick Clifton <nickc@redhat.com>
ARM Richard Earnshaw <rearnsha@arm.com>
AVR Denis Chertykov <denisc@overta.ru>
@ -74,12 +74,13 @@ responsibility among the other maintainers.
PPC Geoff Keating <geoffk@redhat.com>
PPC XCOFF Tom Rix <trix@redhat.com>
s390, s390x Martin Schwidefsky <schwidefsky@de.ibm.com>
SH J<>örn Rennecke <amylaar@onetel.net.uk>
SH J<>örn Rennecke <joern.rennecke@superh.com>
SH Hans-Peter Nilsson <hp@bitrange.com>
SH Alexandre Oliva <aoliva@redhat.com>
SPARC Jakub Jelinek <jakub@redhat.com>
TIC54X Timothy Wall <twall@alum.mit.edu>
z8k Christian Groessler <cpg@aladdin.de>
z8k Christian Groessler <chris@groessler.org>
--------- CGEN Maintainers -------------

View File

@ -74,6 +74,7 @@ session:
command_line:
command NEWLINE { prompt(); }
;
command:
open_command

View File

@ -28,6 +28,9 @@
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
/* Define if you need to in order for stat and other things to work. */
#undef _POSIX_SOURCE
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t

View File

@ -5495,12 +5495,12 @@ do
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
arm-*pe* | arm-*-wince)
arm-pe* | arm-*-wince)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
thumb-*pe*)
thumb-pe*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
@ -5508,7 +5508,7 @@ do
arm*-* | xscale-* | strongarm-* | d10v-*)
OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS"
;;
i[3-6]86-*pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32*)
i[3-6]86-pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
@ -5518,22 +5518,22 @@ do
BUILD_DLLTOOL='$(DLLTOOL_PROG)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
;;
powerpc*-*-*pe* | powerpc*-*-cygwin*)
powerpc*-*-pe* | powerpc*-*-cygwin*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
sh*-*-*pe)
sh*-*-pe)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
mips*-*-*pe)
mips*-*-pe)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
mcore-*pe)
mcore-pe)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'

View File

@ -235,12 +235,12 @@ changequote([,])dnl
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
arm-*pe* | arm-*-wince)
arm-pe* | arm-*-wince)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
thumb-*pe*)
thumb-pe*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
@ -249,7 +249,7 @@ changequote([,])dnl
OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS"
;;
changequote(,)dnl
i[3-6]86-*pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32*)
i[3-6]86-pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32*)
changequote([,])dnl
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
@ -260,22 +260,22 @@ changequote([,])dnl
BUILD_DLLTOOL='$(DLLTOOL_PROG)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
;;
powerpc*-*-*pe* | powerpc*-*-cygwin*)
powerpc*-*-pe* | powerpc*-*-cygwin*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
sh*-*-*pe)
sh*-*-pe)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
mips*-*-*pe)
mips*-*-pe)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
mcore-*pe)
mcore-pe)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'

View File

@ -1,5 +1,5 @@
/* dlltool.c -- tool to generate stuff for PE style DLLs
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
This file is part of GNU Binutils.
@ -658,6 +658,8 @@ static struct string_list *excludes;
static const char *rvaafter PARAMS ((int));
static const char *rvabefore PARAMS ((int));
static const char *asm_prefix PARAMS ((int));
static void process_def_file PARAMS ((const char *));
static void new_directive PARAMS ((char *));
static void append_import PARAMS ((const char *, const char *, int));
static void run PARAMS ((const char *, char *));
static void scan_drectve_symbols PARAMS ((bfd *));
@ -674,6 +676,7 @@ static int sfunc PARAMS ((const void *, const void *));
static void flush_page PARAMS ((FILE *, long *, int, int));
static void gen_def_file PARAMS ((void));
static void generate_idata_ofile PARAMS ((FILE *));
static void assemble_file PARAMS ((const char *, const char *));
static void gen_exp_file PARAMS ((void));
static const char *xlate PARAMS ((const char *));
#if 0
@ -697,28 +700,17 @@ static void inform PARAMS ((const char *, ...));
static void
#ifdef __STDC__
inform (const char * message, ...)
#else
inform (message, va_alist)
const char * message;
va_dcl
#endif
inform VPARAMS ((const char *message, ...))
{
va_list args;
VA_OPEN (args, message);
VA_FIXEDARG (args, const char *, message);
if (!verbose)
return;
#ifdef __STDC__
va_start (args, message);
#else
va_start (args);
#endif
report (message, args);
va_end (args);
VA_CLOSE (args);
}
static const char *
@ -820,7 +812,7 @@ asm_prefix (machine)
static char **oav;
void
static void
process_def_file (name)
const char *name;
{
@ -943,7 +935,7 @@ def_description (desc)
d_list = d;
}
void
static void
new_directive (dir)
char *dir;
{
@ -1865,7 +1857,7 @@ gen_exp_file ()
if (!exp->noname || show_allnames)
{
fprintf (f, "n%d: %s \"%s\"\n",
exp->ordinal, ASM_TEXT, exp->name);
exp->ordinal, ASM_TEXT, xlate (exp->name));
if (exp->forward != 0)
fprintf (f, "f%d: %s \"%s\"\n",
exp->forward, ASM_TEXT, exp->internal_name);
@ -3206,6 +3198,8 @@ static const struct option long_options[] =
{NULL,0,NULL,0}
};
int main PARAMS ((int, char **));
int
main (ac, av)
int ac;

View File

@ -115,14 +115,16 @@ static int delete_exp_file = 1;
static int delete_def_file = 1;
static int run PARAMS ((const char *, char *));
static char *mybasename PARAMS ((const char *));
static int strhash PARAMS ((const char *));
static void usage PARAMS ((FILE *, int));
static void display PARAMS ((const char *, va_list));
static void inform PARAMS ((const char *, ...));
static void warn PARAMS ((const char *format, ...));
static void warn PARAMS ((const char *, ...));
static char *look_for_prog PARAMS ((const char *, const char *, int));
static char *deduce_name PARAMS ((const char *));
static void delete_temp_files PARAMS ((void));
static void cleanup_and_exit PARAMS ((int status));
static void cleanup_and_exit PARAMS ((int));
/**********************************************************************/
@ -147,58 +149,30 @@ display (message, args)
}
#ifdef __STDC__
static void
inform (const char * message, ...)
inform VPARAMS ((const char *message, ...))
{
va_list args;
VA_OPEN (args, message);
VA_FIXEDARG (args, const char *, message);
if (!verbose)
return;
va_start (args, message);
display (message, args);
va_end (args);
VA_CLOSE (args);
}
static void
warn (const char *format, ...)
warn VPARAMS ((const char *format, ...))
{
va_list args;
VA_OPEN (args, format);
VA_FIXEDARG (args, const char *, format);
va_start (args, format);
display (format, args);
va_end (args);
VA_CLOSE (args);
}
#else
static void
inform (message, va_alist)
const char * message;
va_dcl
{
va_list args;
if (!verbose)
return;
va_start (args);
display (message, args);
va_end (args);
}
static void
warn (format, va_alist)
const char *format;
va_dcl
{
va_list args;
va_start (args);
display (format, args);
va_end (args);
}
#endif
/* Look for the program formed by concatenating PROG_NAME and the
string running from PREFIX to END_PREFIX. If the concatenated
@ -375,7 +349,8 @@ delete_temp_files ()
}
static void
cleanup_and_exit (int status)
cleanup_and_exit (status)
int status;
{
delete_temp_files ();
exit (status);
@ -487,7 +462,8 @@ mybasename (name)
}
static int
strhash (const char *str)
strhash (str)
const char *str;
{
const unsigned char *s;
unsigned long hash;
@ -635,6 +611,8 @@ static const struct option long_options[] =
{0, 0, 0, 0}
};
int main PARAMS ((int, char **));
int
main (argc, argv)
int argc;

View File

@ -175,7 +175,7 @@ DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = gtar
TAR = tar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "ADDR2LINE 1"
.TH ADDR2LINE 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH ADDR2LINE 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
addr2line \- convert addresses into file names and line numbers.

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "AR 1"
.TH AR 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH AR 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
ar \- create, modify, and extract from archives

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "C++FILT 1"
.TH C++FILT 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH C++FILT 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
cxxfilt \- Demangle \*(C+ and Java symbols.

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "DLLTOOL 1"
.TH DLLTOOL 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH DLLTOOL 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
dlltool \- Create files needed to build and use DLLs.

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "NM 1"
.TH NM 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH NM 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
nm \- list symbols from object files

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "OBJCOPY 1"
.TH OBJCOPY 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH OBJCOPY 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
objcopy \- copy and translate object files

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "OBJDUMP 1"
.TH OBJDUMP 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH OBJDUMP 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
objdump \- display information from object files.

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "RANLIB 1"
.TH RANLIB 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH RANLIB 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
ranlib \- generate index to archive.

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "READELF 1"
.TH READELF 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH READELF 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
readelf \- Displays information about \s-1ELF\s0 files.

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "SIZE 1"
.TH SIZE 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH SIZE 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
size \- list section sizes and total size.

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "STRINGS 1"
.TH STRINGS 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH STRINGS 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
strings \- print the strings of printable characters in files.

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "STRIP 1"
.TH STRIP 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH STRIP 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
strip \- Discard symbols from object files.

View File

@ -1291,7 +1291,8 @@ print_symbol (abfd, sym, archive_bfd)
bfd_asymbol_name (*r->sym_ptr_ptr)) == 0
&& bfd_find_nearest_line (abfd, secs[i], syms,
r->address, &filename,
&functionname, &lineno))
&functionname, &lineno)
&& filename != NULL)
{
/* We only print the first one we find. */
printf ("\t%s:%u", filename, lineno);

View File

@ -1,7 +1,7 @@
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
* $Header: /cvs/src/src/binutils/Attic/rclex.c,v 1.1.6.1 2002/03/08 17:01:00 drow Exp $
* $Header: /cvs/src/src/binutils/Attic/rclex.c,v 1.1.6.2 2002/05/11 20:00:49 drow Exp $
*/
#define FLEX_SCANNER
@ -22,7 +22,7 @@
#ifdef __cplusplus
#include <stdlib.h>
#ifndef _Win32
#ifndef _WIN32
#include <unistd.h>
#else
#ifndef YY_ALWAYS_INTERACTIVE
@ -643,7 +643,7 @@ char *yytext;
#line 1 "rclex.l"
#define INITIAL 0
#line 2 "rclex.l"
/* Copyright 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
/* Copyright 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
This file is part of GNU Binutils.
@ -2022,7 +2022,7 @@ YY_BUFFER_STATE b;
}
#ifndef _Win32
#ifndef _WIN32
#include <unistd.h>
#else
#ifndef YY_ALWAYS_INTERACTIVE
@ -2400,11 +2400,11 @@ cpp_line (s)
if (!initial_fn)
{
initial_fn = xmalloc (strlen (fn) + 1);
strcpy(initial_fn, fn);
strcpy (initial_fn, fn);
}
/* Allow the initial file, regardless of name. Suppress all other
files if they end in ".h" (this allows included "*.rc") */
files if they end in ".h" (this allows included "*.rc"). */
if (strcmp (initial_fn, fn) == 0
|| strcmp (fn + strlen (fn) - 2, ".h") != 0)
suppress_cpp_data = 0;
@ -2447,7 +2447,7 @@ handle_quotes (input, len)
break;
case 'a':
*s++ = ESCAPE_A;
*s++ = ESCAPE_B; /* Strange, but true... */
++t;
break;
@ -2510,9 +2510,9 @@ handle_quotes (input, len)
if (*t >= '0' && *t <= '9')
ch = (ch << 4) | (*t - '0');
else if (*t >= 'a' && *t <= 'f')
ch = (ch << 4) | (*t - 'a');
ch = (ch << 4) | (*t - 'a' + 10);
else if (*t >= 'A' && *t <= 'F')
ch = (ch << 4) | (*t - 'A');
ch = (ch << 4) | (*t - 'A' + 10);
else
break;
++t;
@ -2568,7 +2568,7 @@ get_string (len)
as->s = xmalloc (len);
as->next = strings;
strings = as->next;
strings = as;
return as->s;
}

View File

@ -1,5 +1,5 @@
%{ /* rclex.l -- lexer for Windows rc files parser */
/* Copyright 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
/* Copyright 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
This file is part of GNU Binutils.
@ -284,11 +284,11 @@ cpp_line (s)
if (!initial_fn)
{
initial_fn = xmalloc (strlen (fn) + 1);
strcpy(initial_fn, fn);
strcpy (initial_fn, fn);
}
/* Allow the initial file, regardless of name. Suppress all other
files if they end in ".h" (this allows included "*.rc") */
files if they end in ".h" (this allows included "*.rc"). */
if (strcmp (initial_fn, fn) == 0
|| strcmp (fn + strlen (fn) - 2, ".h") != 0)
suppress_cpp_data = 0;
@ -331,7 +331,7 @@ handle_quotes (input, len)
break;
case 'a':
*s++ = ESCAPE_A;
*s++ = ESCAPE_B; /* Strange, but true... */
++t;
break;
@ -394,9 +394,9 @@ handle_quotes (input, len)
if (*t >= '0' && *t <= '9')
ch = (ch << 4) | (*t - '0');
else if (*t >= 'a' && *t <= 'f')
ch = (ch << 4) | (*t - 'a');
ch = (ch << 4) | (*t - 'a' + 10);
else if (*t >= 'A' && *t <= 'F')
ch = (ch << 4) | (*t - 'A');
ch = (ch << 4) | (*t - 'A' + 10);
else
break;
++t;
@ -452,7 +452,7 @@ get_string (len)
as->s = xmalloc (len);
as->next = strings;
strings = as->next;
strings = as;
return as->s;
}

File diff suppressed because it is too large Load Diff

View File

@ -42,6 +42,7 @@ typedef union
} ss;
} yystype;
# define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1
#endif
# define BEG 257
# define END 258

View File

@ -1,5 +1,5 @@
%{ /* rcparse.y -- parser for Windows rc files
Copyright 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
This file is part of GNU Binutils.
@ -153,28 +153,21 @@ static unsigned long class;
input:
/* empty */
| input newcmd accelerator
| input newcmd bitmap
| input newcmd cursor
| input newcmd dialog
| input newcmd font
| input newcmd icon
| input newcmd language
| input newcmd menu
| input newcmd menuex
| input newcmd messagetable
| input newcmd rcdata
| input newcmd stringtable
| input newcmd user
| input newcmd versioninfo
| input newcmd IGNORED_TOKEN
;
newcmd:
/* empty */
{
rcparse_discard_strings ();
}
| input accelerator
| input bitmap
| input cursor
| input dialog
| input font
| input icon
| input language
| input menu
| input menuex
| input messagetable
| input rcdata
| input stringtable
| input user
| input versioninfo
| input IGNORED_TOKEN
;
/* Accelerator resources. */
@ -183,6 +176,9 @@ accelerator:
id ACCELERATORS suboptions BEG acc_entries END
{
define_accelerator ($1, &$3, $5);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -309,6 +305,9 @@ bitmap:
id BITMAP memflags_move file_name
{
define_bitmap ($1, &$3, $4);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -318,6 +317,9 @@ cursor:
id CURSOR memflags_move_discard file_name
{
define_cursor ($1, &$3, $4);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -340,10 +342,14 @@ dialog:
dialog.ex = NULL;
dialog.controls = NULL;
sub_res_info = $3;
style = 0;
}
styles BEG controls END
{
define_dialog ($1, &sub_res_info, &dialog);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
| id DIALOGEX memflags_move exstyle posnumexpr cnumexpr cnumexpr
cnumexpr
@ -363,10 +369,14 @@ dialog:
memset (dialog.ex, 0, sizeof (struct dialog_ex));
dialog.controls = NULL;
sub_res_info = $3;
style = 0;
}
styles BEG controls END
{
define_dialog ($1, &sub_res_info, &dialog);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
| id DIALOGEX memflags_move exstyle posnumexpr cnumexpr cnumexpr
cnumexpr cnumexpr
@ -387,10 +397,14 @@ dialog:
dialog.ex->help = $9;
dialog.controls = NULL;
sub_res_info = $3;
style = 0;
}
styles BEG controls END
{
define_dialog ($1, &sub_res_info, &dialog);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -409,6 +423,8 @@ styles:
/* empty */
| styles CAPTION QUOTEDSTRING
{
dialog.style |= WS_CAPTION;
style |= WS_CAPTION;
unicode_from_ascii ((int *) NULL, &dialog.caption, $3);
}
| styles CLASS id
@ -416,7 +432,6 @@ styles:
dialog.class = $3;
}
| styles STYLE
{ style = dialog.style; }
styleexpr
{
dialog.style = style;
@ -425,15 +440,42 @@ styles:
{
dialog.exstyle = $3;
}
| styles CLASS QUOTEDSTRING
{
res_string_to_id (& dialog.class, $3);
}
| styles FONT numexpr ',' QUOTEDSTRING
{
dialog.style |= DS_SETFONT;
style |= DS_SETFONT;
dialog.pointsize = $3;
unicode_from_ascii ((int *) NULL, &dialog.font, $5);
if (dialog.ex != NULL)
{
dialog.ex->weight = 0;
dialog.ex->italic = 0;
dialog.ex->charset = 1;
}
}
| styles FONT numexpr ',' QUOTEDSTRING cnumexpr
{
dialog.style |= DS_SETFONT;
style |= DS_SETFONT;
dialog.pointsize = $3;
unicode_from_ascii ((int *) NULL, &dialog.font, $5);
if (dialog.ex == NULL)
rcparse_warning (_("extended FONT requires DIALOGEX"));
else
{
dialog.ex->weight = $6;
dialog.ex->italic = 0;
dialog.ex->charset = 1;
}
}
| styles FONT numexpr ',' QUOTEDSTRING cnumexpr cnumexpr
{
dialog.style |= DS_SETFONT;
style |= DS_SETFONT;
dialog.pointsize = $3;
unicode_from_ascii ((int *) NULL, &dialog.font, $5);
if (dialog.ex == NULL)
@ -442,6 +484,22 @@ styles:
{
dialog.ex->weight = $6;
dialog.ex->italic = $7;
dialog.ex->charset = 1;
}
}
| styles FONT numexpr ',' QUOTEDSTRING cnumexpr cnumexpr cnumexpr
{
dialog.style |= DS_SETFONT;
style |= DS_SETFONT;
dialog.pointsize = $3;
unicode_from_ascii ((int *) NULL, &dialog.font, $5);
if (dialog.ex == NULL)
rcparse_warning (_("extended FONT requires DIALOGEX"));
else
{
dialog.ex->weight = $6;
dialog.ex->italic = $7;
dialog.ex->charset = $8;
}
}
| styles MENU id
@ -515,7 +573,7 @@ control:
{
$$ = $3;
if (dialog.ex == NULL)
rcparse_warning (_("IEDIT requires DIALOGEX"));
rcparse_warning (_("BEDIT requires DIALOGEX"));
res_string_to_id (&$$->class, "BEDIT");
}
| CHECKBOX
@ -569,7 +627,7 @@ control:
$$->data = $12;
}
$$->class.named = 1;
unicode_from_ascii(&$$->class.u.n.length, &$$->class.u.n.name, $5);
unicode_from_ascii (&$$->class.u.n.length, &$$->class.u.n.name, $5);
}
| CONTROL optstringc numexpr ',' QUOTEDSTRING control_styleexpr
cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data
@ -580,7 +638,7 @@ control:
$$->help = $12;
$$->data = $13;
$$->class.named = 1;
unicode_from_ascii(&$$->class.u.n.length, &$$->class.u.n.name, $5);
unicode_from_ascii (&$$->class.u.n.length, &$$->class.u.n.name, $5);
}
| CTEXT
{
@ -855,6 +913,9 @@ font:
id FONT memflags_move_discard file_name
{
define_font ($1, &$3, $4);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -864,6 +925,9 @@ icon:
id ICON memflags_move_discard file_name
{
define_icon ($1, &$3, $4);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -883,6 +947,9 @@ menu:
id MENU suboptions BEG menuitems END
{
define_menu ($1, &$3, $5);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -970,6 +1037,9 @@ menuex:
id MENUEX suboptions BEG menuexitems END
{
define_menu ($1, &$3, $5);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -1036,6 +1106,9 @@ messagetable:
id MESSAGETABLE memflags_move file_name
{
define_messagetable ($1, &$3, $4);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -1045,6 +1118,9 @@ rcdata:
id RCDATA suboptions BEG optrcdata_data END
{
define_rcdata ($1, &$3, $5.first);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -1124,10 +1200,16 @@ string_data:
| string_data numexpr QUOTEDSTRING
{
define_stringtable (&sub_res_info, $2, $3);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
| string_data numexpr ',' QUOTEDSTRING
{
define_stringtable (&sub_res_info, $2, $4);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -1138,10 +1220,16 @@ user:
id id suboptions BEG optrcdata_data END
{
define_user_data ($1, $2, &$3, $5.first);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
| id id suboptions file_name
{
define_user_file ($1, $2, &$3, $4);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -1151,6 +1239,9 @@ versioninfo:
id VERSIONINFO fixedverinfo BEG verblocks END
{
define_versioninfo ($1, language, $3, $5);
if (yychar != YYEMPTY)
YYERROR;
rcparse_discard_strings ();
}
;
@ -1310,7 +1401,7 @@ suboptions:
memset (&$$, 0, sizeof (struct res_res_info));
$$.language = language;
/* FIXME: Is this the right default? */
$$.memflags = MEMFLAG_MOVEABLE;
$$.memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
}
| suboptions memflag
{
@ -1359,7 +1450,7 @@ memflags_move:
{
memset (&$$, 0, sizeof (struct res_res_info));
$$.language = language;
$$.memflags = MEMFLAG_MOVEABLE;
$$.memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
}
| memflags_move memflag
{

View File

@ -127,6 +127,7 @@ int do_debug_frames;
int do_debug_frames_interp;
int do_debug_macinfo;
int do_debug_str;
int do_debug_loc;
int do_arch;
int do_notes;
int is_32bit_elf;
@ -227,10 +228,13 @@ static int display_debug_aranges PARAMS ((Elf32_Internal_Sh
static int display_debug_frames PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
static int display_debug_macinfo PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
static int display_debug_str PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
static int display_debug_loc PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
static unsigned char * process_abbrev_section PARAMS ((unsigned char *, unsigned char *));
static void load_debug_str PARAMS ((FILE *));
static void free_debug_str PARAMS ((void));
static const char * fetch_indirect_string PARAMS ((unsigned long));
static void load_debug_loc PARAMS ((FILE *));
static void free_debug_loc PARAMS ((void));
static unsigned long read_leb128 PARAMS ((unsigned char *, int *, int));
static int process_extended_line_op PARAMS ((unsigned char *, int, int));
static void reset_state_machine PARAMS ((int));
@ -845,29 +849,49 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
if (is_32bit_elf)
{
if (is_rela)
printf
(_(" Offset Info Type Symbol's Value Symbol's Name Addend\n"));
{
if (do_wide)
printf (_(" Offset Info Type Sym. Value Symbol's Name + Addend\n"));
else
printf (_(" Offset Info Type Sym.Value Sym. Name + Addend\n"));
}
else
printf
(_(" Offset Info Type Symbol's Value Symbol's Name\n"));
{
if (do_wide)
printf (_(" Offset Info Type Sym. Value Symbol's Name\n"));
else
printf (_(" Offset Info Type Sym.Value Sym. Name\n"));
}
}
else
{
if (is_rela)
printf
(_(" Offset Info Type Symbol's Value Symbol's Name Addend\n"));
{
if (do_wide)
printf (_(" Offset Info Type Symbol's Value Symbol's Name + Addend\n"));
else
printf (_(" Offset Info Type Sym. Value Sym. Name + Addend\n"));
}
else
printf
(_(" Offset Info Type Symbol's Value Symbol's Name\n"));
{
if (do_wide)
printf (_(" Offset Info Type Symbol's Value Symbol's Name\n"));
else
printf (_(" Offset Info Type Sym. Value Sym. Name\n"));
}
}
for (i = 0; i < rel_size; i++)
{
const char * rtype;
const char * rtype2 = NULL;
const char * rtype3 = NULL;
bfd_vma offset;
bfd_vma info;
bfd_vma symtab_index;
bfd_vma type;
bfd_vma type2 = (bfd_vma) NULL;
bfd_vma type3 = (bfd_vma) NULL;
if (is_rela)
{
@ -887,10 +911,16 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
}
else
{
if (elf_header.e_machine == EM_SPARCV9)
type = ELF64_R_TYPE_ID (info);
if (elf_header.e_machine == EM_MIPS)
{
type = ELF64_MIPS_R_TYPE (info);
type2 = ELF64_MIPS_R_TYPE2 (info);
type3 = ELF64_MIPS_R_TYPE3 (info);
}
else if (elf_header.e_machine == EM_SPARCV9)
type = ELF64_R_TYPE_ID (info);
else
type = ELF64_R_TYPE (info);
type = ELF64_R_TYPE (info);
/* The #ifdef BFD64 below is to prevent a compile time warning.
We know that if we do not have a 64 bit data type that we
will never execute this code anyway. */
@ -910,13 +940,18 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
else
{
#ifdef _bfd_int64_low
printf ("%8.8lx%8.8lx %8.8lx%8.8lx ",
printf (do_wide
? "%8.8lx%8.8lx %8.8lx%8.8lx "
: "%4.4lx%8.8lx %4.4lx%8.8lx ",
_bfd_int64_high (offset),
_bfd_int64_low (offset),
_bfd_int64_high (info),
_bfd_int64_low (info));
#else
printf ("%16.16lx %16.16lx ", offset, info);
printf (do_wide
? "%16.16lx %16.16lx "
: "%12.12lx %12.12lx ",
offset, info);
#endif
}
@ -1006,6 +1041,11 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
case EM_MIPS:
case EM_MIPS_RS3_LE:
rtype = elf_mips_reloc_type (type);
if (!is_32bit_elf)
{
rtype2 = elf_mips_reloc_type (type2);
rtype3 = elf_mips_reloc_type (type3);
}
break;
case EM_ALPHA:
@ -1067,12 +1107,12 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
if (rtype == NULL)
#ifdef _bfd_int64_low
printf (_("unrecognised: %-7lx"), _bfd_int64_low (type));
printf (_("unrecognized: %-7lx"), _bfd_int64_low (type));
#else
printf (_("unrecognised: %-7lx"), type);
printf (_("unrecognized: %-7lx"), type);
#endif
else
printf ("%-21.21s", rtype);
printf (do_wide ? "%-21.21s" : "%-17.17s", rtype);
if (symtab_index)
{
@ -1086,14 +1126,14 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
printf (" ");
print_vma (psym->st_value, LONG_HEX);
printf (" ");
printf (is_32bit_elf ? " " : " ");
if (psym->st_name == 0)
print_symbol (-25, SECTION_NAME (section_headers + psym->st_shndx));
print_symbol (22, SECTION_NAME (section_headers + psym->st_shndx));
else if (strtab == NULL)
printf (_("<string table index %3ld>"), psym->st_name);
else
print_symbol (-25, strtab + psym->st_name);
print_symbol (22, strtab + psym->st_name);
if (is_rela)
printf (" + %lx", (unsigned long) relas [i].r_addend);
@ -1101,7 +1141,7 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
}
else if (is_rela)
{
printf ("%*c", is_32bit_elf ? 34 : 26, ' ');
printf ("%*c", is_32bit_elf ? (do_wide ? 34 : 28) : (do_wide ? 26 : 20), ' ');
print_vma (relas[i].r_addend, LONG_HEX);
}
@ -1110,6 +1150,33 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
printf (" + %lx", (unsigned long) ELF64_R_TYPE_DATA (info));
putchar ('\n');
if (! is_32bit_elf && elf_header.e_machine == EM_MIPS)
{
printf (" Type2: ");
if (rtype2 == NULL)
#ifdef _bfd_int64_low
printf (_("unrecognized: %-7lx"), _bfd_int64_low (type2));
#else
printf (_("unrecognized: %-7lx"), type2);
#endif
else
printf ("%-17.17s", rtype2);
printf("\n Type3: ");
if (rtype3 == NULL)
#ifdef _bfd_int64_low
printf (_("unrecognized: %-7lx"), _bfd_int64_low (type3));
#else
printf (_("unrecognized: %-7lx"), type3);
#endif
else
printf ("%-17.17s", rtype3);
putchar ('\n');
}
}
if (is_rela)
@ -1504,7 +1571,7 @@ decode_ARM_machine_flags (e_flags, buf)
switch (eabi)
{
default:
strcat (buf, ", <unrecognised EABI>");
strcat (buf, ", <unrecognized EABI>");
if (e_flags)
unknown = 1;
break;
@ -2185,7 +2252,7 @@ usage ()
-A --arch-specific Display architecture specific information (if any).\n\
-D --use-dynamic Use the dynamic section info when displaying symbols\n\
-x --hex-dump=<number> Dump the contents of section <number>\n\
-w --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n\
-w --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n\
Display the contents of DWARF2 debug sections\n"));
#ifdef SUPPORT_DISASSEMBLY
fprintf (stdout, _("\
@ -2372,8 +2439,13 @@ parse_args (argc, argv)
do_debug_str = 1;
break;
case 'o':
case 'O':
do_debug_loc = 1;
break;
default:
warn (_("Unrecognised debug option '%s'\n"), optarg);
warn (_("Unrecognized debug option '%s'\n"), optarg);
break;
}
}
@ -3238,7 +3310,8 @@ process_section_headers (file)
}
else if ((do_debugging || do_debug_info || do_debug_abbrevs
|| do_debug_lines || do_debug_pubnames || do_debug_aranges
|| do_debug_frames || do_debug_macinfo || do_debug_str)
|| do_debug_frames || do_debug_macinfo || do_debug_str
|| do_debug_loc)
&& strncmp (name, ".debug_", 7) == 0)
{
name += 7;
@ -3252,6 +3325,7 @@ process_section_headers (file)
|| (do_debug_frames && (strcmp (name, "frame") == 0))
|| (do_debug_macinfo && (strcmp (name, "macinfo") == 0))
|| (do_debug_str && (strcmp (name, "str") == 0))
|| (do_debug_loc && (strcmp (name, "loc") == 0))
)
request_dump (i, DEBUG_DUMP);
}
@ -6455,6 +6529,7 @@ get_AT_name (attribute)
case DW_AT_src_coords: return "DW_AT_src_coords";
case DW_AT_body_begin: return "DW_AT_body_begin";
case DW_AT_body_end: return "DW_AT_body_end";
case DW_AT_GNU_vector: return "DW_AT_GNU_vector";
default:
{
static char buffer [100];
@ -7124,6 +7199,112 @@ decode_location_expression (data, pointer_size, length)
}
}
static const char * debug_loc_contents;
static bfd_vma debug_loc_size;
static void
load_debug_loc (file)
FILE * file;
{
Elf32_Internal_Shdr * sec;
unsigned int i;
/* If it is already loaded, do nothing. */
if (debug_loc_contents != NULL)
return;
/* Locate the .debug_loc section. */
for (i = 0, sec = section_headers;
i < elf_header.e_shnum;
i ++, sec ++)
if (strcmp (SECTION_NAME (sec), ".debug_loc") == 0)
break;
if (i == elf_header.e_shnum || sec->sh_size == 0)
return;
debug_loc_size = sec->sh_size;
debug_loc_contents = ((char *)
get_data (NULL, file, sec->sh_offset, sec->sh_size,
_("debug_loc section data")));
}
static void
free_debug_loc ()
{
if (debug_loc_contents == NULL)
return;
free ((char *) debug_loc_contents);
debug_loc_contents = NULL;
debug_loc_size = 0;
}
static int
display_debug_loc (section, start, file)
Elf32_Internal_Shdr * section;
unsigned char * start;
FILE * file ATTRIBUTE_UNUSED;
{
unsigned char *section_end;
unsigned long bytes;
unsigned char *section_begin = start;
bfd_vma addr;
addr = section->sh_addr;
bytes = section->sh_size;
section_end = start + bytes;
if (bytes == 0)
{
printf (_("\nThe .debug_loc section is empty.\n"));
return 0;
}
printf (_("Contents of the .debug_loc section:\n\n"));
printf (_("\n Offset Begin End Expression\n"));
while (start < section_end)
{
unsigned long begin;
unsigned long end;
unsigned short length;
unsigned long offset;
offset = start - section_begin;
while (1)
{
/* Normally, the lists in the debug_loc section are related to a
given compilation unit, and thus, we would use the
pointer size of that compilation unit. However, since we are
displaying it seperately here, we either have to store
pointer sizes of all compilation units, or assume they don't
change. We assume, like the debug_line display, that
it doesn't change. */
begin = byte_get (start, debug_line_pointer_size);
start += debug_line_pointer_size;
end = byte_get (start, debug_line_pointer_size);
start += debug_line_pointer_size;
if (begin == 0 && end == 0)
break;
begin += addr;
end += addr;
length = byte_get (start, 2);
start += 2;
printf (" %8.8lx %8.8lx %8.8lx (", offset, begin, end);
decode_location_expression (start, debug_line_pointer_size, length);
printf (")\n");
start += length;
}
printf ("\n");
}
return 1;
}
static const char * debug_str_contents;
static bfd_vma debug_str_size;
@ -7379,7 +7560,7 @@ read_and_display_attr_value (attribute, form, data, cu_offset, pointer_size)
break;
default:
warn (_("Unrecognised form: %d\n"), form);
warn (_("Unrecognized form: %d\n"), form);
break;
}
@ -7528,6 +7709,12 @@ read_and_display_attr_value (attribute, form, data, cu_offset, pointer_size)
decode_location_expression (block_start, pointer_size, uvalue);
printf (")");
}
else if (form == DW_FORM_data4)
{
printf ("(");
printf ("location list");
printf (")");
}
break;
default:
@ -7564,6 +7751,7 @@ display_debug_info (section, start, file)
printf (_("The section %s contains:\n\n"), SECTION_NAME (section));
load_debug_str (file);
load_debug_loc (file);
while (start < end)
{
@ -7748,6 +7936,7 @@ display_debug_info (section, start, file)
}
free_debug_str ();
free_debug_loc ();
printf ("\n");
@ -8559,7 +8748,7 @@ debug_displays[] =
{ ".eh_frame", display_debug_frames, NULL },
{ ".debug_macinfo", display_debug_macinfo, NULL },
{ ".debug_str", display_debug_str, NULL },
{ ".debug_loc", display_debug_loc, NULL },
{ ".debug_pubtypes", display_debug_not_supported, NULL },
{ ".debug_ranges", display_debug_not_supported, NULL },
{ ".debug_static_func", display_debug_not_supported, NULL },
@ -8602,7 +8791,7 @@ display_debug_section (section, file)
}
if (i == -1)
printf (_("Unrecognised debug section: %s\n"), name);
printf (_("Unrecognized debug section: %s\n"), name);
free (start);
@ -9240,6 +9429,7 @@ process_corefile_note_segment (file, offset, length)
while (external < (Elf_External_Note *)((char *) pnotes + length))
{
Elf_External_Note * next;
Elf32_Internal_Note inote;
char * temp = NULL;
@ -9250,7 +9440,18 @@ process_corefile_note_segment (file, offset, length)
inote.descdata = inote.namedata + align_power (inote.namesz, 2);
inote.descpos = offset + (inote.descdata - (char *) pnotes);
external = (Elf_External_Note *)(inote.descdata + align_power (inote.descsz, 2));
next = (Elf_External_Note *)(inote.descdata + align_power (inote.descsz, 2));
if (((char *) next) > (((char *) pnotes) + length))
{
warn (_("corrupt note found at offset %x into core notes\n"),
((char *) external) - ((char *) pnotes));
warn (_(" type: %x, namesize: %08lx, descsize: %08lx\n"),
inote.type, inote.namesz, inote.descsz);
break;
}
external = next;
/* Verify that name is null terminated. It appears that at least
one version of Linux (RedHat 6.0) generates corefiles that don't

View File

@ -1,5 +1,5 @@
/* resbin.c -- manipulate the Windows binary resource format.
Copyright 1997, 1998, 1999 Free Software Foundation, Inc.
Copyright 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
This file is part of GNU Binutils.
@ -30,6 +30,7 @@
/* Macros to swap in values. */
#define get_8(s) (*((unsigned char *)(s)))
#define get_16(be, s) ((be) ? bfd_getb16 (s) : bfd_getl16 (s))
#define get_32(be, s) ((be) ? bfd_getb32 (s) : bfd_getl32 (s))
@ -68,6 +69,9 @@ static struct res_resource *bin_to_res_version
PARAMS ((const unsigned char *, unsigned long, int));
static struct res_resource *bin_to_res_userdata
PARAMS ((const unsigned char *, unsigned long, int));
static void get_version_header
PARAMS ((const unsigned char *, unsigned long, int, const char *,
unichar **, int *, int *, int *, int *));
/* Given a resource type ID, a pointer to data, a length, return a
res_resource structure which represents that resource. The caller
@ -460,7 +464,7 @@ bin_to_res_dialog (data, length, big_endian)
unsigned long length;
int big_endian;
{
int version;
int signature;
struct dialog *d;
int c, sublen, i;
unsigned int off;
@ -472,8 +476,8 @@ bin_to_res_dialog (data, length, big_endian)
d = (struct dialog *) res_alloc (sizeof *d);
version = get_16 (big_endian, data);
if (version != 1)
signature = get_16 (big_endian, data + 2);
if (signature != 0xffff)
{
d->ex = NULL;
d->style = get_32 (big_endian, data);
@ -482,11 +486,11 @@ bin_to_res_dialog (data, length, big_endian)
}
else
{
int signature;
int version;
signature = get_16 (big_endian, data + 2);
if (signature != 0xffff)
fatal (_("unexpected dialog signature %d"), signature);
version = get_16 (big_endian, data);
if (version != 1)
fatal (_("unexpected DIALOGEX version %d"), version);
d->ex = (struct dialog_ex *) res_alloc (sizeof (struct dialog_ex));
d->ex->help = get_32 (big_endian, data + 4);
@ -514,6 +518,8 @@ bin_to_res_dialog (data, length, big_endian)
d->caption = get_unicode (data + off, length - off, big_endian, &sublen);
off += sublen * 2 + 2;
if (sublen == 0)
d->caption = NULL;
if ((d->style & DS_SETFONT) == 0)
{
@ -523,6 +529,7 @@ bin_to_res_dialog (data, length, big_endian)
{
d->ex->weight = 0;
d->ex->italic = 0;
d->ex->charset = 1; /* Default charset. */
}
}
else
@ -538,7 +545,8 @@ bin_to_res_dialog (data, length, big_endian)
if (length < off + 4)
toosmall (_("dialogex font information"));
d->ex->weight = get_16 (big_endian, data + off);
d->ex->italic = get_16 (big_endian, data + off + 2);
d->ex->italic = get_8 (data + off + 2);
d->ex->charset = get_8 (data + off + 3);
off += 4;
}
@ -808,7 +816,7 @@ static struct res_resource *
bin_to_res_rcdata (data, length, big_endian)
const unsigned char *data;
unsigned long length;
int big_endian;
int big_endian ATTRIBUTE_UNUSED;
{
struct rcdata_item *ri;
struct res_resource *r;
@ -1019,7 +1027,7 @@ bin_to_res_version (data, length, big_endian)
struct res_resource *r;
get_version_header (data, length, big_endian, "VS_VERSION_INFO",
(unichar *) NULL, &verlen, &vallen, &type, &off);
(unichar **) NULL, &verlen, &vallen, &type, &off);
if ((unsigned int) verlen != length)
fatal (_("version length %d does not match resource length %lu"),
@ -1091,7 +1099,7 @@ bin_to_res_version (data, length, big_endian)
vi->type = VERINFO_STRING;
get_version_header (data, length, big_endian, "StringFileInfo",
(unichar *) NULL, &verlen, &vallen, &type,
(unichar **) NULL, &verlen, &vallen, &type,
&off);
if (vallen != 0)
@ -1163,7 +1171,7 @@ bin_to_res_version (data, length, big_endian)
vi->type = VERINFO_VAR;
get_version_header (data, length, big_endian, "VarFileInfo",
(unichar *) NULL, &verlen, &vallen, &type,
(unichar **) NULL, &verlen, &vallen, &type,
&off);
if (vallen != 0)
@ -1231,7 +1239,7 @@ static struct res_resource *
bin_to_res_userdata (data, length, big_endian)
const unsigned char *data;
unsigned long length;
int big_endian;
int big_endian ATTRIBUTE_UNUSED;
{
struct rcdata_item *ri;
struct res_resource *r;
@ -1252,6 +1260,7 @@ bin_to_res_userdata (data, length, big_endian)
/* Macros to swap out values. */
#define put_8(v, s) (*((unsigned char *) (s)) = (unsigned char) (v))
#define put_16(be, v, s) ((be) ? bfd_putb16 ((v), (s)) : bfd_putl16 ((v), (s)))
#define put_32(be, v, s) ((be) ? bfd_putb32 ((v), (s)) : bfd_putl32 ((v), (s)))
@ -1621,12 +1630,14 @@ res_to_bin_dialog (dialog, big_endian)
if (dialog->ex == NULL)
{
put_16 (big_endian, 0, d->data + 2);
put_16 (big_endian, 0, d->data + 4);
put_8 (0, d->data + 4);
put_8 (1, d->data + 5);
}
else
{
put_16 (big_endian, dialog->ex->weight, d->data + 2);
put_16 (big_endian, dialog->ex->italic, d->data + 4);
put_8 (dialog->ex->italic, d->data + 4);
put_8 (dialog->ex->charset, d->data + 5);
}
}

View File

@ -1,5 +1,5 @@
/* resrc.c -- read and write Windows rc files.
Copyright 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
This file is part of GNU Binutils.
@ -131,7 +131,7 @@ static FILE *cpp_pipe;
static char *cpp_temp_file;
/* Input stream is either a file or a pipe. */
/* Input stream is either a file or a pipe. */
static enum {ISTREAM_PIPE, ISTREAM_FILE} istream_type;
@ -173,7 +173,7 @@ static void get_data
PARAMS ((FILE *, unsigned char *, unsigned long, const char *));
static void define_fontdirs PARAMS ((void));
/* Run `cmd' and redirect the output to `redir'. */
/* Run `cmd' and redirect the output to `redir'. */
static int
run_cmd (cmd, redir)
@ -481,6 +481,7 @@ read_rc_file (filename, preprocessor, preprocargs, language, use_temp_file)
rcparse_set_language (language);
yyin = cpp_pipe;
yyparse ();
rcparse_discard_strings ();
close_input_stream ();
@ -518,7 +519,7 @@ close_input_stream ()
pclose (cpp_pipe);
}
/* Since this is also run via xatexit, safeguard. */
/* Since this is also run via xatexit, safeguard. */
cpp_pipe = NULL;
cpp_temp_file = NULL;
}
@ -1580,7 +1581,7 @@ write_rc_directory (e, rd, type, name, language, level)
case 2:
/* If we're at level 2, the key of this resource is the name
we are going to use in the rc printout. */
we are going to use in the rc printout. */
name = &re->id;
break;
@ -1592,7 +1593,8 @@ write_rc_directory (e, rd, type, name, language, level)
&& (re->id.u.id & 0xffff) == re->id.u.id)
{
fprintf (e, "LANGUAGE %lu, %lu\n",
re->id.u.id & 0xff, (re->id.u.id >> 8) & 0xff);
re->id.u.id & ((1 << SUBLANG_SHIFT) - 1),
(re->id.u.id >> SUBLANG_SHIFT) & 0xff);
*language = re->id.u.id;
}
break;
@ -2052,23 +2054,26 @@ write_rc_dialog (e, dialog)
{
const struct dialog_control *control;
if (dialog->style != 0)
fprintf (e, "STYLE 0x%lx\n", dialog->style);
fprintf (e, "STYLE 0x%lx\n", dialog->style);
if (dialog->exstyle != 0)
fprintf (e, "EXSTYLE 0x%lx\n", dialog->exstyle);
if ((dialog->class.named && dialog->class.u.n.length > 0)
|| dialog->class.u.id != 0)
{
fprintf (e, "CLASS ");
res_id_print (e, dialog->class, 0);
res_id_print (e, dialog->class, 1);
fprintf (e, "\n");
}
if (dialog->caption != NULL)
{
fprintf (e, "CAPTION \"");
unicode_print (e, dialog->caption, -1);
fprintf (e, "\"\n");
}
if ((dialog->menu.named && dialog->menu.u.n.length > 0)
|| dialog->menu.u.id != 0)
{
@ -2076,14 +2081,18 @@ write_rc_dialog (e, dialog)
res_id_print (e, dialog->menu, 0);
fprintf (e, "\n");
}
if (dialog->font != NULL)
{
fprintf (e, "FONT %d, \"", dialog->pointsize);
unicode_print (e, dialog->font, -1);
fprintf (e, "\"");
if (dialog->ex != NULL
&& (dialog->ex->weight != 0 || dialog->ex->italic != 0))
fprintf (e, ", %d, %d", dialog->ex->weight, dialog->ex->italic);
&& (dialog->ex->weight != 0
|| dialog->ex->italic != 0
|| dialog->ex->charset != 1))
fprintf (e, ", %d, %d, %d",
dialog->ex->weight, dialog->ex->italic, dialog->ex->charset);
fprintf (e, "\n");
}

View File

@ -316,6 +316,7 @@ display_archive (file)
bfd *file;
{
bfd *arfile = (bfd *) NULL;
bfd *last_arfile = (bfd *) NULL;
for (;;)
{
@ -333,8 +334,14 @@ display_archive (file)
}
display_bfd (arfile);
/* Don't close the archive elements; we need them for next_archive. */
if (last_arfile != NULL)
bfd_close (last_arfile);
last_arfile = arfile;
}
if (last_arfile != NULL)
bfd_close (last_arfile);
}
static void

View File

@ -0,0 +1 @@
PICFLAG=-fpic

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=-fpic

View File

@ -1,3 +1,94 @@
2002-05-13 Nick Clifton <nickc@cambridge.redhat.com>
* stabs.c (s_stab_generic): Fix grammatical error in warning
message.
2002-05-11 Nick Clifton <nickc@cambridge.redhat.com>
* stabs.c (s_stab_generic): Warn about a description field that is
too big.
2002-05-11 Daniel Jacobowitz <drow@mvista.com>
Merge from mainline:
2002-05-11 Nick Clifton <nickc@cambridge.redhat.com>
* config/obj-coff.c: Fix compile time warnings when compiling
without BFD_ASSEMBLER defined.
Fix formatting.
* config/tc-sh.c (md_pcrel_from): Define for use with sh-hms
target.
(md_pcrel_from_section): Use md_pcrel_from().
2002-05-09 Alan Modra <amodra@bigpond.net.au>
* config/tc-i386.c (md_estimate_size_before_relax) Don't lose
reloc when no_cond_jump_promotion.
Merge from mainline
2002-05-08 Jim Wilson <wilson@redhat.com>
* config/tc-i960.c (md_estimate_size_before_relax): Return size of
current variable part of frag.
2002-05-02 Alan Modra <amodra@bigpond.net.au>
* config/tc-ppc.c (mapping): Map sectoff to BFD_RELOC_16_BASEREL.
(ppc_elf_validate_fix): Replace BFD_RELOC_32_BASEREL with
BFD_RELOC_16_BASEREL.
(md_assemble): Likewise.
(md_apply_fix3): Likewise.
2002-05-01 Andrew Macleod <amacleod@cygnus.com>
* config/tc-i386.c (extra_symbol_chars): Add '[' to the list.
2002-04-28 Alan Modra <amodra@bigpond.net.au>
* config/tc-i386.c: Formatting fixes, add missing space in error
message.
2002-05-03 Alexandre Oliva <aoliva@redhat.com>
* config/tc-s390.c (md_gather_operands): Emit dwarf2 line-number
information for instructions.
2002-05-02 Nick Clifton <nickc@cambridge.redhat.com>
* config/tc-arm.c (thumb_add_sub): Do not convert a subtract of
zero into an add of zero - it is not the same.
2002-04-27 Alan Modra <amodra@bigpond.net.au>
Merge from mainline.
2002-04-17 Martin Schwidefsky <schwidefsky@de.ibm.com>
* config/tc-s390.c (tc_s390_fix_adjustable): Prevent adjustments to
symbols in merge sections.
2002-02-19 Martin Schwidefsky <schwidefsky@de.ibm.com>
* config/tc-s390.c (md_parse_option): Add switches -m31 and -m64.
Make bit size independent of architecture switch.
(md_begin): Add warning for -m64 with -Aesa.
(s390_md_end): Use renamed architecture defines.
2002-02-19 Tom Tromey <tromey@redhat.com>
* config/tc-xstormy16.h (DWARF2_LINE_MIN_INSN_LENGTH): Define.
Tue Apr 9 16:45:48 2002 J"orn Rennecke <joern.rennecke@superh.com>
* config/tc-sh.h (TC_FIX_ADJUSTABLE): Disable adjusting if
symbol_used_in_reloc_p is true.
* config/tc-sh.c (md_apply_fix3): Don't zero relocations on big
endian hosts.
2002-04-03 Alan Modra <amodra@bigpond.net.au>
* symbols.c (resolve_symbol_value <O_uminus, O_bit_not,
O_logical_not>): Derive final_seg from add_symbol.
<O_multiply..O_logical_or>: More final_seg twiddles.
2002-04-24 Andreas Schwab <schwab@suse.de>
* config/tc-i386.c (output_jump, output_disp)
(md_estimate_size_before_relax): Don't set fx_pcrel_adjust any
more.
(md_apply_fix3): Remember addend value for rela relocations.
(tc_gen_reloc): Correctly compute pc-relative relocation addend.
2002-04-10 Alan Modra <amodra@bigpond.net.au>
* as.c (parse_args <OPTION_VERSION>): Use VERSION is

File diff suppressed because it is too large Load Diff

View File

@ -521,7 +521,7 @@ struct vfp_reg
unsigned long regno;
};
static const struct vfp_reg vfp_regs[] =
static const struct vfp_reg vfp_regs[] =
{
{"fpsid", 0x00000000},
{"FPSID", 0x00000000},
@ -842,7 +842,7 @@ static void do_mav_binops_3a PARAMS ((char *));
static void do_mav_binops_3b PARAMS ((char *));
static void do_mav_binops_3c PARAMS ((char *));
static void do_mav_binops_3d PARAMS ((char *));
static void do_mav_triple PARAMS ((char *, int, enum arm_reg_type,
static void do_mav_triple PARAMS ((char *, int, enum arm_reg_type,
enum arm_reg_type,
enum arm_reg_type));
static void do_mav_triple_4a PARAMS ((char *));
@ -855,7 +855,7 @@ static void do_mav_triple_5e PARAMS ((char *));
static void do_mav_triple_5f PARAMS ((char *));
static void do_mav_triple_5g PARAMS ((char *));
static void do_mav_triple_5h PARAMS ((char *));
static void do_mav_quad PARAMS ((char *, int, enum arm_reg_type,
static void do_mav_quad PARAMS ((char *, int, enum arm_reg_type,
enum arm_reg_type,
enum arm_reg_type,
enum arm_reg_type));
@ -1106,7 +1106,7 @@ static const struct asm_opcode insns[] =
{"strh", 0xe00000b0, 3, ARM_EXT_V4, do_ldstv4},
/* ARM Architecture 4T. */
/* Note: bx (and blx) are required on V5, even if the processor does
/* Note: bx (and blx) are required on V5, even if the processor does
not support Thumb. */
{"bx", 0xe12fff10, 2, ARM_EXT_V4T | ARM_EXT_V5, do_bx},
@ -7447,7 +7447,9 @@ thumb_add_sub (str, subtract)
return;
}
}
else
/* Note - you cannot convert a subtract of 0 into an
add of 0 because the carry flag is set differently. */
else if (offset > 0)
subtract = 0;
if (Rd == REG_SP)
@ -7927,7 +7929,7 @@ mav_reg_required_here (str, shift, regtype)
/* Restore the start point. */
*str = start;
/* In the few cases where we might be able to accept something else
this error can be overridden. */
inst.error = _(all_reg_maps[regtype].expected);

View File

@ -182,9 +182,9 @@ typedef struct _i386_insn i386_insn;
/* List of chars besides those in app.c:symbol_chars that can start an
operand. Used to prevent the scrubber eating vital white-space. */
#ifdef LEX_AT
const char extra_symbol_chars[] = "*%-(@";
const char extra_symbol_chars[] = "*%-(@[";
#else
const char extra_symbol_chars[] = "*%-(";
const char extra_symbol_chars[] = "*%-([";
#endif
#if (defined (TE_I386AIX) \
@ -2208,15 +2208,15 @@ process_suffix ()
/* For movzx and movsx, need to check the register type. */
if (intel_syntax
&& (i.tm.base_opcode == 0xfb6 || i.tm.base_opcode == 0xfbe))
if (i.suffix && i.suffix == BYTE_MNEM_SUFFIX)
{
unsigned int prefix = DATA_PREFIX_OPCODE;
&& (i.tm.base_opcode == 0xfb6 || i.tm.base_opcode == 0xfbe)
&& i.suffix == BYTE_MNEM_SUFFIX)
{
unsigned int prefix = DATA_PREFIX_OPCODE;
if ((i.op[1].regs->reg_type & Reg16) != 0)
if (!add_prefix (prefix))
return 0;
}
if ((i.op[1].regs->reg_type & Reg16) != 0)
if (!add_prefix (prefix))
return 0;
}
if (i.suffix && i.suffix != BYTE_MNEM_SUFFIX)
{
@ -2228,6 +2228,7 @@ process_suffix ()
else
i.tm.base_opcode |= 1;
}
/* Now select between word & dword operations via the operand
size prefix, except for instructions that will ignore this
prefix anyway. */
@ -2309,7 +2310,7 @@ check_byte_reg ()
if (flag_code == CODE_64BIT
&& (i.tm.operand_types[op] & InOutPortReg) == 0)
{
as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
as_bad (_("Incorrect register `%%%s' used with `%c' suffix"),
i.op[op].regs->reg_name,
i.suffix);
return 0;
@ -2368,7 +2369,7 @@ check_long_reg ()
lowering is more complicated. */
if (flag_code == CODE_64BIT)
{
as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
as_bad (_("Incorrect register `%%%s' used with `%c' suffix"),
i.op[op].regs->reg_name,
i.suffix);
return 0;
@ -2385,7 +2386,7 @@ check_long_reg ()
else if ((i.types[op] & Reg64) != 0
&& (i.tm.operand_types[op] & (Reg32 | Acc)) != 0)
{
as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
as_bad (_("Incorrect register `%%%s' used with `%c' suffix"),
i.op[op].regs->reg_name,
i.suffix);
return 0;
@ -2417,7 +2418,7 @@ check_qword_reg ()
{
/* Prohibit these changes in the 64bit mode, since the
lowering is more complicated. */
as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
as_bad (_("Incorrect register `%%%s' used with `%c' suffix"),
i.op[op].regs->reg_name,
i.suffix);
return 0;
@ -2450,7 +2451,7 @@ check_word_reg ()
lowering is more complicated. */
if (flag_code == CODE_64BIT)
{
as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
as_bad (_("Incorrect register `%%%s' used with `%c' suffix"),
i.op[op].regs->reg_name,
i.suffix);
return 0;
@ -2980,7 +2981,6 @@ output_jump ()
{
char *p;
int size;
fixS *fixP;
if (i.tm.opcode_modifier & JumpByte)
{
@ -3031,9 +3031,8 @@ output_jump ()
p = frag_more (1 + size);
*p++ = i.tm.base_opcode;
fixP = fix_new_exp (frag_now, p - frag_now->fr_literal, size,
i.op[0].disps, 1, reloc (size, 1, 1, i.reloc[0]));
fixP->fx_pcrel_adjust = size;
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
i.op[0].disps, 1, reloc (size, 1, 1, i.reloc[0]));
}
static void
@ -3226,7 +3225,6 @@ output_disp ()
int size = 4;
int sign = 0;
int pcrel = (i.flags[n] & Operand_PCrel) != 0;
fixS *fixP;
/* The PC relative address is computed relative
to the instruction boundary, so in case immediate
@ -3266,11 +3264,9 @@ output_disp ()
}
p = frag_more (size);
fixP = fix_new_exp (frag_now, p - frag_now->fr_literal, size,
i.op[n].disps, pcrel,
reloc (size, pcrel, sign, i.reloc[n]));
if (pcrel)
fixP->fx_pcrel_adjust = size;
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
i.op[n].disps, pcrel,
reloc (size, pcrel, sign, i.reloc[n]));
}
}
}
@ -4215,7 +4211,6 @@ md_estimate_size_before_relax (fragP, segment)
RELOC_ENUM reloc_type;
unsigned char *opcode;
int old_fr_fix;
fixS *fixP;
if (fragP->fr_var != NO_RELOC)
reloc_type = fragP->fr_var;
@ -4233,18 +4228,15 @@ md_estimate_size_before_relax (fragP, segment)
/* Make jmp (0xeb) a (d)word displacement jump. */
opcode[0] = 0xe9;
fragP->fr_fix += size;
fixP = fix_new (fragP, old_fr_fix, size,
fragP->fr_symbol,
fragP->fr_offset, 1,
reloc_type);
fixP->fx_pcrel_adjust = size;
fix_new (fragP, old_fr_fix, size,
fragP->fr_symbol,
fragP->fr_offset, 1,
reloc_type);
break;
case COND_JUMP86:
if (no_cond_jump_promotion)
goto relax_guess;
if (size == 2)
if (size == 2
&& (!no_cond_jump_promotion || fragP->fr_var != NO_RELOC))
{
/* Negate the condition, and branch past an
unconditional jump. */
@ -4255,18 +4247,24 @@ md_estimate_size_before_relax (fragP, segment)
/* We added two extra opcode bytes, and have a two byte
offset. */
fragP->fr_fix += 2 + 2;
fixP = fix_new (fragP, old_fr_fix + 2, 2,
fragP->fr_symbol,
fragP->fr_offset, 1,
reloc_type);
fixP->fx_pcrel_adjust = size;
fix_new (fragP, old_fr_fix + 2, 2,
fragP->fr_symbol,
fragP->fr_offset, 1,
reloc_type);
break;
}
/* Fall through. */
case COND_JUMP:
if (no_cond_jump_promotion)
goto relax_guess;
if (no_cond_jump_promotion && fragP->fr_var == NO_RELOC)
{
fragP->fr_fix += 1;
fix_new (fragP, old_fr_fix, 1,
fragP->fr_symbol,
fragP->fr_offset, 1,
BFD_RELOC_8_PCREL);
break;
}
/* This changes the byte-displacement jump 0x7N
to the (d)word-displacement jump 0x0f,0x8N. */
@ -4274,11 +4272,10 @@ md_estimate_size_before_relax (fragP, segment)
opcode[0] = TWO_BYTE_OPCODE_ESCAPE;
/* We've added an opcode byte. */
fragP->fr_fix += 1 + size;
fixP = fix_new (fragP, old_fr_fix + 1, size,
fragP->fr_symbol,
fragP->fr_offset, 1,
reloc_type);
fixP->fx_pcrel_adjust = size;
fix_new (fragP, old_fr_fix + 1, size,
fragP->fr_symbol,
fragP->fr_offset, 1,
reloc_type);
break;
default:
@ -4289,7 +4286,6 @@ md_estimate_size_before_relax (fragP, segment)
return fragP->fr_fix - old_fr_fix;
}
relax_guess:
/* Guess size depending on current relax state. Initially the relax
state will correspond to a short jump and we return 1, because
the variable part of the frag (the branch offset) is one byte
@ -4607,6 +4603,8 @@ md_apply_fix3 (fixP, valP, seg)
else if (use_rela_relocations)
{
fixP->fx_no_overflow = 1;
/* Remember value for tc_gen_reloc. */
fixP->fx_addnumber = value;
value = 0;
}
#endif
@ -5120,9 +5118,23 @@ tc_gen_reloc (section, fixp)
/* Use the rela in 64bit mode. */
else
{
rel->addend = fixp->fx_offset;
if (fixp->fx_pcrel)
rel->addend -= fixp->fx_pcrel_adjust;
if (!fixp->fx_pcrel)
rel->addend = fixp->fx_offset;
else
switch (code)
{
case BFD_RELOC_X86_64_PLT32:
case BFD_RELOC_X86_64_GOT32:
case BFD_RELOC_X86_64_GOTPCREL:
rel->addend = fixp->fx_offset - fixp->fx_size;
break;
default:
rel->addend = (section->vma
- fixp->fx_size
+ fixp->fx_addnumber
+ md_pcrel_from (fixp));
break;
}
}
rel->howto = bfd_reloc_type_lookup (stdoutput, code);

View File

@ -1374,7 +1374,7 @@ ppc_elf_suffix (str_p, exp_p)
MAP ("plt@h", (int) BFD_RELOC_HI16_PLTOFF),
MAP ("plt@ha", (int) BFD_RELOC_HI16_S_PLTOFF),
MAP ("sdarel", (int) BFD_RELOC_GPREL16),
MAP ("sectoff", (int) BFD_RELOC_32_BASEREL),
MAP ("sectoff", (int) BFD_RELOC_16_BASEREL),
MAP ("sectoff@l", (int) BFD_RELOC_LO16_BASEREL),
MAP ("sectoff@h", (int) BFD_RELOC_HI16_BASEREL),
MAP ("sectoff@ha", (int) BFD_RELOC_HI16_S_BASEREL),
@ -1683,7 +1683,7 @@ ppc_elf_validate_fix (fixp, seg)
&& fixp->fx_r_type != BFD_RELOC_HI16_GOTOFF
&& fixp->fx_r_type != BFD_RELOC_LO16_GOTOFF
&& fixp->fx_r_type != BFD_RELOC_HI16_S_GOTOFF
&& fixp->fx_r_type != BFD_RELOC_32_BASEREL
&& fixp->fx_r_type != BFD_RELOC_16_BASEREL
&& fixp->fx_r_type != BFD_RELOC_LO16_BASEREL
&& fixp->fx_r_type != BFD_RELOC_HI16_BASEREL
&& fixp->fx_r_type != BFD_RELOC_HI16_S_BASEREL
@ -2236,7 +2236,7 @@ md_assemble (str)
case BFD_RELOC_LO16_PLTOFF:
reloc = BFD_RELOC_PPC64_PLT16_LO_DS;
break;
case BFD_RELOC_32_BASEREL:
case BFD_RELOC_16_BASEREL:
reloc = BFD_RELOC_PPC64_SECTOFF_DS;
break;
case BFD_RELOC_LO16_BASEREL:
@ -5280,7 +5280,6 @@ md_apply_fix3 (fixP, valP, seg)
case BFD_RELOC_RVA:
case BFD_RELOC_32_PCREL:
case BFD_RELOC_32_BASEREL:
case BFD_RELOC_PPC_EMB_NADDR32:
md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
value, 4);
@ -5305,6 +5304,7 @@ md_apply_fix3 (fixP, valP, seg)
case BFD_RELOC_LO16_GOTOFF:
case BFD_RELOC_HI16_GOTOFF:
case BFD_RELOC_HI16_S_GOTOFF:
case BFD_RELOC_16_BASEREL:
case BFD_RELOC_LO16_BASEREL:
case BFD_RELOC_HI16_BASEREL:
case BFD_RELOC_HI16_S_BASEREL:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,115 @@
/* tc-s390.h -- Header file for tc-s390.c.
Copyright 2000, 2001 Free Software Foundation, Inc.
Written by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#define TC_S390
#ifdef ANSI_PROTOTYPES
struct fix;
#endif
#ifndef BFD_ASSEMBLER
#error S390 support requires BFD_ASSEMBLER
#endif
/* This expression evaluates to false if the relocation is for a local object
for which we still want to do the relocation at runtime. True if we
are willing to perform this relocation while building the .o file.
This is only used for pcrel relocations, so GOTOFF does not need to be
checked here. I am not sure if some of the others are ever used with
pcrel, but it is easier to be safe than sorry. */
#define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \
((FIX)->fx_r_type != BFD_RELOC_390_GOTENT \
&& ((FIX)->fx_addsy == NULL \
|| (! S_IS_EXTERNAL ((FIX)->fx_addsy) \
&& ! S_IS_WEAK ((FIX)->fx_addsy) \
&& S_IS_DEFINED ((FIX)->fx_addsy) \
&& ! S_IS_COMMON ((FIX)->fx_addsy))))
#define TC_FORCE_RELOCATION(FIXP) tc_s390_force_relocation(FIXP)
extern int tc_s390_force_relocation PARAMS ((struct fix *));
#define tc_fix_adjustable(X) tc_s390_fix_adjustable(X)
extern int tc_s390_fix_adjustable PARAMS ((struct fix *));
#define TC_FIX_ADJUSTABLE(fixP) \
(! symbol_used_in_reloc_p ((fixP)->fx_addsy) && tc_fix_adjustable (fixP))
/* The target BFD architecture. */
#define TARGET_ARCH bfd_arch_s390
extern enum bfd_architecture s390_arch PARAMS ((void));
/* The target BFD format. */
#define TARGET_FORMAT s390_target_format()
extern const char * s390_target_format PARAMS ((void));
/* Set the endianness we are using. */
#define TARGET_BYTES_BIG_ENDIAN 1
/* Whether or not the target is big endian */
extern int target_big_endian;
/* Permit temporary numeric labels. */
#define LOCAL_LABELS_FB 1
/* $ is used to refer to the current location. */
/* #define DOLLAR_DOT */
/* We need to be able to make relocations involving the difference of
two symbols. This includes the difference of two symbols when
one of them is undefined (this comes up in PIC code generation).
*/
#define UNDEFINED_DIFFERENCE_OK
/* foo-. gets turned into PC relative relocs */
#define DIFF_EXPR_OK
/* We don't need to handle .word strangely. */
#define WORKING_DOT_WORD
#define md_number_to_chars number_to_chars_bigendian
#define md_do_align(n, fill, len, max, around) \
if ((n) && !need_pass_2 && (fill == 0) && \
(bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0) { \
char *p; \
p = frag_var (rs_align_code, 15, 1, (relax_substateT) max, \
(symbolS *) 0, (offsetT) (n), (char *) 0); \
*p = 0x07; \
goto around; \
}
extern void s390_align_code PARAMS ((fragS *, int));
#define HANDLE_ALIGN(fragP) \
if (fragP->fr_type == rs_align_code) \
s390_align_code (fragP, (fragP->fr_next->fr_address \
- fragP->fr_address \
- fragP->fr_fix));
/* call md_pcrel_from_section, not md_pcrel_from */
#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
#define md_operand(x)
extern void s390_md_end PARAMS ((void));
#define md_end() s390_md_end ()

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "AS 1"
.TH AS 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH AS 1 "2002-05-14" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
\&\s-1AS\s0 \- the portable \s-1GNU\s0 assembler.

View File

@ -240,6 +240,14 @@ s_stab_generic (what, stab_secname, stabstr_secname)
other = longint;
desc = get_absolute_expression ();
if ((desc > 0xffff) || (desc < -0x8000))
/* This could happen for example with a source file with a huge
number of lines. The only cure is to use a different debug
format, probably DWARF. */
as_warn (_(".stab%c: description field '%x' too big, try a different debug format"),
what, desc);
if (what == 's' || what == 'n')
{
if (*input_line_pointer != ',')

View File

@ -986,6 +986,7 @@ resolve_symbol_value (symp)
case O_bit_not:
case O_logical_not:
left = resolve_symbol_value (add_symbol);
seg_left = S_GET_SEGMENT (add_symbol);
if (op == O_uminus)
left = -left;
@ -996,7 +997,7 @@ resolve_symbol_value (symp)
final_val += left + symp->sy_frag->fr_address;
if (final_seg == expr_section || final_seg == undefined_section)
final_seg = absolute_section;
final_seg = seg_left;
resolved = symbol_resolved_p (add_symbol);
break;
@ -1062,15 +1063,19 @@ resolve_symbol_value (symp)
Don't emit messages unless we're finalizing the symbol value,
otherwise we may get the same message multiple times. */
if (op != O_eq && op != O_ne
&& (seg_left != absolute_section
|| seg_right != absolute_section)
&& ((op != O_subtract
&& op != O_lt && op != O_le && op != O_ge && op != O_gt)
|| seg_left != seg_right
|| (seg_left == undefined_section
&& add_symbol != op_symbol))
&& finalize_syms)
if ((op == O_eq || op == O_ne)
|| ((op == O_subtract
|| op == O_lt || op == O_le || op == O_ge || op == O_gt)
&& seg_left == seg_right
&& (seg_left != undefined_section
|| add_symbol == op_symbol))
|| (seg_left == absolute_section
&& seg_right == absolute_section))
{
if (final_seg == expr_section || final_seg == undefined_section)
final_seg = absolute_section;
}
else if (finalize_syms)
{
char *file;
unsigned int line;
@ -1105,6 +1110,9 @@ resolve_symbol_value (symp)
as_bad (_("invalid section for operation setting `%s'"),
S_GET_NAME (symp));
}
/* Prevent the error propagating. */
if (final_seg == expr_section || final_seg == undefined_section)
final_seg = absolute_section;
}
/* Check for division by zero. */
@ -1160,7 +1168,15 @@ resolve_symbol_value (symp)
final_val += symp->sy_frag->fr_address + left;
if (final_seg == expr_section || final_seg == undefined_section)
final_seg = absolute_section;
{
if (seg_left == undefined_section
|| seg_right == undefined_section)
final_seg = undefined_section;
else if (seg_left == absolute_section)
final_seg = seg_right;
else
final_seg = seg_left;
}
resolved = (symbol_resolved_p (add_symbol)
&& symbol_resolved_p (op_symbol));
break;

View File

@ -1,3 +1,9 @@
2002-04-2 Alan Modra <amodra@bigpond.net.au>
Merge from mainline.
2002-04-24 Elena Zannoni <ezannoni@redhat.com>
* dwarf2.h: Add DW_AT_GNU_vector.
2002-02-13 Matt Fredette <fredette@netbsd.org>
* m68k.h (EF_M68000): Define.

View File

@ -328,6 +328,7 @@ enum dwarf_attribute
DW_AT_src_coords = 0x2104,
DW_AT_body_begin = 0x2105,
DW_AT_body_end = 0x2106,
DW_AT_GNU_vector = 0x2107,
/* VMS Extensions. */
DW_AT_VMS_rtnbeg_pd_address = 0x2201
};

View File

@ -1,3 +1,10 @@
2002-04-27 Alan Modra <amodra@bigpond.net.au>
Merge from mainline
2002-04-11 Alan Modra <amodra@bigpond.net.au>
* i386.h: Add intel mode cmpsd and movsd.
Put them before SSE2 insns, so that rep prefix works.
2002-02-25 Alan Modra <amodra@bigpond.net.au>
* ppc.h (PPC_OPCODE_POWER4, PPC_OPCODE_NOPOWER4): Define.

View File

@ -1231,6 +1231,9 @@ static const template i386_optab[] = {
{"cmpunordpd",2, 0x660fc2, 3, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LLongMem, RegXMM, 0 } },
{"cmpunordsd",2, 0xf20fc2, 3, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LongMem, RegXMM, 0 } },
{"cmppd", 3, 0x660fc2, X, CpuSSE2, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
/* Intel mode string compare. */
{"cmpsd", 0, 0xa7, X, 0, NoSuf|Size32|IsString, { 0, 0, 0} },
{"cmpsd", 2, 0xa7, X, 0, NoSuf|Size32|IsString, { AnyMem, AnyMem|EsSeg, 0} },
{"cmpsd", 3, 0xf20fc2, X, CpuSSE2, FP|Modrm, { Imm8, RegXMM|LongMem, RegXMM } },
{"comisd", 2, 0x660f2f, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
{"cvtpi2pd", 2, 0x660f2a, X, CpuSSE2, FP|Modrm, { RegMMX|LLongMem, RegXMM, 0 } },
@ -1249,6 +1252,9 @@ static const template i386_optab[] = {
{"movlpd", 2, 0x660f13, X, CpuSSE2, FP|Modrm, { RegXMM, LLongMem, 0 } },
{"movmskpd", 2, 0x660f50, X, CpuSSE2, lq_Suf|IgnoreSize|Modrm, { RegXMM|InvMem, Reg32|Reg64, 0 } },
{"movntpd", 2, 0x660f2b, X, CpuSSE2, FP|Modrm, { RegXMM, LLongMem, 0 } },
/* Intel mode string move. */
{"movsd", 0, 0xa5, X, 0, NoSuf|Size32|IsString, { 0, 0, 0} },
{"movsd", 2, 0xa5, X, 0, NoSuf|Size32|IsString, { AnyMem, AnyMem|EsSeg, 0} },
{"movsd", 2, 0xf20f10, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
{"movsd", 2, 0xf20f11, X, CpuSSE2, FP|Modrm, { RegXMM, RegXMM|LongMem, 0 } },
{"movupd", 2, 0x660f10, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },

View File

@ -0,0 +1,130 @@
/* s390.h -- Header file for S390 opcode table
Copyright 2000, 2001 Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#ifndef S390_H
#define S390_H
/* List of instruction sets variations. */
enum s390_opcode_arch_val
{
S390_OPCODE_ESA = 0,
S390_OPCODE_ESAME
};
/* The opcode table is an array of struct s390_opcode. */
struct s390_opcode
{
/* The opcode name. */
const char * name;
/* The opcode itself. Those bits which will be filled in with
operands are zeroes. */
unsigned char opcode[6];
/* The opcode mask. This is used by the disassembler. This is a
mask containing ones indicating those bits which must match the
opcode field, and zeroes indicating those bits which need not
match (and are presumably filled in by operands). */
unsigned char mask[6];
/* The opcode length in bytes. */
int oplen;
/* An array of operand codes. Each code is an index into the
operand table. They appear in the order which the operands must
appear in assembly code, and are terminated by a zero. */
unsigned char operands[6];
/* Bitmask of architectures this opcode is available for. */
unsigned int architecture;
};
/* The table itself is sorted by major opcode number, and is otherwise
in the order in which the disassembler should consider
instructions. */
extern const struct s390_opcode s390_opcodes[];
extern const int s390_num_opcodes;
/* A opcode format table for the .insn pseudo mnemonic. */
extern const struct s390_opcode s390_opformats[];
extern const int s390_num_opformats;
/* Values defined for the flags field of a struct powerpc_opcode. */
/* The operands table is an array of struct s390_operand. */
struct s390_operand
{
/* The number of bits in the operand. */
int bits;
/* How far the operand is left shifted in the instruction. */
int shift;
/* One bit syntax flags. */
unsigned long flags;
};
/* Elements in the table are retrieved by indexing with values from
the operands field of the powerpc_opcodes table. */
extern const struct s390_operand s390_operands[];
/* Values defined for the flags field of a struct s390_operand. */
/* This operand names a register. The disassembler uses this to print
register names with a leading 'r'. */
#define S390_OPERAND_GPR 0x1
/* This operand names a floating point register. The disassembler
prints these with a leading 'f'. */
#define S390_OPERAND_FPR 0x2
/* This operand names an access register. The disassembler
prints these with a leading 'a'. */
#define S390_OPERAND_AR 0x4
/* This operand names a control register. The disassembler
prints these with a leading 'c'. */
#define S390_OPERAND_CR 0x8
/* This operand is a displacement. */
#define S390_OPERAND_DISP 0x10
/* This operand names a base register. */
#define S390_OPERAND_BASE 0x20
/* This operand names an index register, it can be skipped. */
#define S390_OPERAND_INDEX 0x40
/* This operand is a relative branch displacement. The disassembler
prints these symbolically if possible. */
#define S390_OPERAND_PCREL 0x80
/* This operand takes signed values. */
#define S390_OPERAND_SIGNED 0x100
/* This operand is a length. */
#define S390_OPERAND_LENGTH 0x200
#endif /* S390_H */

View File

@ -1,3 +1,39 @@
2002-05-09 Alan Modra <amodra@bigpond.net.au>
Merge from mainline.
2002-05-02 Alan Modra <amodra@bigpond.net.au>
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_after_allocation):
Adjust for ppc64_elf_set_toc change. #include libbfd.h.
2002-04-28 Alan Modra <amodra@bigpond.net.au>
* Makefile.am (mpw): New maintainer mode rule to make mpw-*.c files.
* Makefile.in: Regenerate.
* mpw-elfmips.c: Delete.
* mpw-eppcmac.c: Delete.
* mpw-esh.c: Delete.
* mpw-idtmips.c: Delete.
2002-04-27 Alan Modra <amodra@bigpond.net.au>
Merge from mainline
2002-04-08 Alan Modra <amodra@bigpond.net.au>
* ldlang.c (lang_size_sections): Don't complain about
SEC_NEVER_LOAD sections having no memory region specified.
* ld.texinfo (Format Commands <OUTPUT_FORMAT>): Typo fix.
2002-04-07 matthew green <mrg@redhat.com>
* ld/configure.host (*-*-netbsd*): Add support for NetBSD/ELF.
2002-02-19 Martin Schwidefsky <schwidefsky@de.ibm.com>
* emulparams/elf64_s390.sh (ARCH): Change to "s390:64-bit".
* emulparams/elf_s390.sh (ARCH): Change to "s390:31-bit".
2002-04-11 Nick Clifton <nickc@cambridge.redhat.com>
* emultempl/armelf.em (PARSE_AND_LIST_SHORTOPTS): Add 'n' in order
to prevent "-n" from being taken as an abbreviation for
"--no-pipeline-knowledge".
2002-04-04 Alan Modra <amodra@bigpond.net.au>
* dep-in.sed: Cope with absolute paths.

View File

@ -1196,6 +1196,29 @@ dep-am: DEP
.PHONY: dep dep-in dep-am
@MAINT@.PHONY: mpw
@MAINT@mpw: $(srcdir)/mpw-ei386go32.c $(srcdir)/mpw-elfmips.c \
@MAINT@ $(srcdir)/mpw-em68kcoff.c $(srcdir)/mpw-eppcmac.c \
@MAINT@ $(srcdir)/mpw-esh.c $(srcdir)/mpw-idtmips.c
@MAINT@
@MAINT@$(srcdir)/mpw-ei386go32.c: ei386go32.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-elfmips.c: eelf32ebmip.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-em68kcoff.c: em68kcoff.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-eppcmac.c: eppcmacos.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-esh.c: esh.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-idtmips.c: emipsidt.c
@MAINT@ $(srcdir)/../move-if-change $< $@
# What appears below is generated by a hacked mkdep using gcc -MM.
# DO NOT DELETE THIS LINE -- mkdep uses it.

View File

@ -1891,6 +1891,29 @@ dep-am: DEP
.PHONY: dep dep-in dep-am
@MAINT@.PHONY: mpw
@MAINT@mpw: $(srcdir)/mpw-ei386go32.c $(srcdir)/mpw-elfmips.c \
@MAINT@ $(srcdir)/mpw-em68kcoff.c $(srcdir)/mpw-eppcmac.c \
@MAINT@ $(srcdir)/mpw-esh.c $(srcdir)/mpw-idtmips.c
@MAINT@
@MAINT@$(srcdir)/mpw-ei386go32.c: ei386go32.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-elfmips.c: eelf32ebmip.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-em68kcoff.c: em68kcoff.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-eppcmac.c: eppcmacos.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-esh.c: esh.c
@MAINT@ $(srcdir)/../move-if-change $< $@
@MAINT@
@MAINT@$(srcdir)/mpw-idtmips.c: emipsidt.c
@MAINT@ $(srcdir)/../move-if-change $< $@
# What appears below is generated by a hacked mkdep using gcc -MM.
# DO NOT DELETE THIS LINE -- mkdep uses it.

View File

@ -223,6 +223,13 @@ x86_64-*-linux-gnu*)
*-*-linux*)
;;
*-*-netbsd*)
NATIVE_LIB_DIRS=/usr/lib
# NetBSD typically does not use the GCC crtstuff, so ignore it.
HOSTING_CRT0='-dynamic-linker /usr/libexec/ld.elf_so /usr/lib/crt0.o /usr/lib/crtbegin.o'
HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -lc `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` /usr/lib/crtend.o'
;;
alpha*-*-*)
HOSTING_CRT0=/usr/ccs/lib/crt0.o
NATIVE_LIB_DIRS=/usr/ccs/lib

View File

@ -0,0 +1,11 @@
SCRIPT_NAME=elf
ELFSIZE=64
OUTPUT_FORMAT="elf64-s390"
TEXT_START_ADDR=0x80000000
MAXPAGESIZE=0x1000
NONPAGED_TEXT_START_ADDR=0x80000000
ARCH="s390:64-bit"
MACHINE=
NOP=0x07070707
TEMPLATE_NAME=elf32
GENERATE_SHLIB_SCRIPT=yes

View File

@ -0,0 +1,10 @@
SCRIPT_NAME=elf
OUTPUT_FORMAT="elf32-s390"
TEXT_START_ADDR=0x00400000
MAXPAGESIZE=0x1000
NONPAGED_TEXT_START_ADDR=0x00400000
ARCH="s390:31-bit"
MACHINE=
NOP=0x07070707
TEMPLATE_NAME=elf32
GENERATE_SHLIB_SCRIPT=yes

View File

@ -156,7 +156,12 @@ PARSE_AND_LIST_PROLOGUE='
#define OPTION_THUMB_ENTRY 301
'
PARSE_AND_LIST_SHORTOPTS=p
# Note we add 'n' to the short option list in order to prevent
# getopt_long_only from thinking that -n is a unique abbreviation
# for --no-pipeline-knowledge. There is no case to handle 'n' here
# however, so instead it will be passed back to parse_args() in
# lexsup.c where it will be handled.
PARSE_AND_LIST_SHORTOPTS=pn
PARSE_AND_LIST_LONGOPTS='
{ "no-pipeline-knowledge", no_argument, NULL, '\'p\''},

View File

@ -23,6 +23,7 @@
#
cat >>e${EMULATION_NAME}.c <<EOF
#include "libbfd.h"
#include "elf64-ppc.h"
static int need_laying_out = 0;
@ -35,8 +36,8 @@ static void gld${EMULATION_NAME}_finish PARAMS ((void));
static void
gld${EMULATION_NAME}_after_allocation ()
{
if (!ppc64_elf_set_toc (output_bfd, &link_info))
einfo ("%X%P: can not set TOC base: %E\n");
if (!link_info.relocateable)
_bfd_set_gp_value (output_bfd, ppc64_elf_toc (output_bfd));
}
/* Final emulation specific call. PowerPC64 has 24 byte .plt entries,

View File

@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "LD 1"
.TH LD 1 "2002-03-08" "binutils-2.12" "GNU Development Tools"
.TH LD 1 "2002-05-11" "binutils-2.12.1" "GNU Development Tools"
.UC
.SH "NAME"
ld \- Using \s-1LD\s0, the \s-1GNU\s0 linker

View File

@ -2277,7 +2277,7 @@ A couple of linker script commands deal with object file formats.
@cindex output file format in linker script
The @code{OUTPUT_FORMAT} command names the BFD format to use for the
output file (@pxref{BFD}). Using @code{OUTPUT_FORMAT(@var{bfdname})} is
exactly like using @samp{-oformat @var{bfdname}} on the command line
exactly like using @samp{--oformat @var{bfdname}} on the command line
(@pxref{Options,,Command Line Options}). If both are used, the command
line option takes precedence.

View File

@ -2914,6 +2914,8 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
defined, issue a warning. */
if ((bfd_get_section_flags (output_bfd, os->bfd_section)
& (SEC_ALLOC | SEC_LOAD)) != 0
&& (bfd_get_section_flags (output_bfd, os->bfd_section)
& SEC_NEVER_LOAD) == 0
&& ! link_info.relocateable
&& strcmp (os->region->name, "*default*") == 0
&& lang_memory_region_list != NULL

View File

@ -1,3 +1,31 @@
2002-05-09 Anton Blanchard <anton@samba.org>
* ppc-opc.c: Add "tlbiel" for POWER4.
2002-05-09 Alan Modra <amodra@bigpond.net.au>
Merge from mainline.
2002-05-01 Alan Modra <amodra@bigpond.net.au>
* ppc-opc.c: Add "tlbsx." and "tlbsxe." for booke.
2002-04-17 matthew green <mrg@redhat.com>
* ppc-opc.c (powerpc_opcode): Fix dssall operand list.
2002-04-29 Chris Demetriou <cgd@broadcom.com>
Merge from mainline:
2002-03-06 Chris Demetriou <cgd@broadcom.com>
* mips-opc.c (mips_builtin_opcodes): Mark "pref" as being
present on I4.
Merge from mainline:
2002-03-06 Chris Demetriou <cgd@broadcom.com>
* mips-opc.c (mips_builtin_opcodes): Add "movn.ps" and "movz.ps".
Merge from mainline:
2002-03-15 Chris Demetriou <cgd@broadcom.com>
* mips-dis.c (is_newabi): Fix ABI decoding.
2002-04-04 Alan Modra <amodra@bigpond.net.au>
* dep-in.sed: Cope with absolute paths.

Some files were not shown because too many files have changed in this diff Show More