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:
parent
18ff9f4f1b
commit
f3c54bd2c1
@ -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,
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
|
@ -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. */
|
||||
|
@ -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/
|
||||
|
@ -3014,6 +3014,7 @@ coff_compute_section_file_positions (abfd)
|
||||
else
|
||||
current->target_index = target_index++;
|
||||
}
|
||||
abfd->section_tail = ¤t->next;
|
||||
|
||||
free (section_list);
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
158
contrib/binutils/bfd/configure
vendored
158
contrib/binutils/bfd/configure
vendored
@ -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
|
||||
|
@ -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 ;;
|
||||
|
@ -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
|
||||
}
|
||||
};
|
||||
|
56
contrib/binutils/bfd/cpu-s390.c
Normal file
56
contrib/binutils/bfd/cpu-s390.c
Normal 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
|
||||
};
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
2476
contrib/binutils/bfd/elf32-s390.c
Normal file
2476
contrib/binutils/bfd/elf32-s390.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
@ -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 *));
|
||||
|
2392
contrib/binutils/bfd/elf64-s390.c
Normal file
2392
contrib/binutils/bfd/elf64-s390.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
@ -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 */
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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",
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -1 +1 @@
|
||||
#define BFD_VERSION_DATE 20020412
|
||||
#define BFD_VERSION_DATE 20020622
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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 -------------
|
||||
|
||||
|
@ -74,6 +74,7 @@ session:
|
||||
|
||||
command_line:
|
||||
command NEWLINE { prompt(); }
|
||||
;
|
||||
|
||||
command:
|
||||
open_command
|
||||
|
@ -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
|
||||
|
||||
|
14
contrib/binutils/binutils/configure
vendored
14
contrib/binutils/binutils/configure
vendored
@ -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)'
|
||||
|
@ -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)'
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
@ -42,6 +42,7 @@ typedef union
|
||||
} ss;
|
||||
} yystype;
|
||||
# define YYSTYPE yystype
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
#endif
|
||||
# define BEG 257
|
||||
# define END 258
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
1
contrib/binutils/config/mh-s390pic
Normal file
1
contrib/binutils/config/mh-s390pic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=-fpic
|
1
contrib/binutils/config/mt-s390pic
Normal file
1
contrib/binutils/config/mt-s390pic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=-fpic
|
@ -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
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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:
|
||||
|
1977
contrib/binutils/gas/config/tc-s390.c
Normal file
1977
contrib/binutils/gas/config/tc-s390.c
Normal file
File diff suppressed because it is too large
Load Diff
115
contrib/binutils/gas/config/tc-s390.h
Normal file
115
contrib/binutils/gas/config/tc-s390.h
Normal 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 ()
|
@ -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.
|
||||
|
@ -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 != ',')
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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.
|
||||
|
@ -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 } },
|
||||
|
130
contrib/binutils/include/opcode/s390.h
Normal file
130
contrib/binutils/include/opcode/s390.h
Normal 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 */
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
11
contrib/binutils/ld/emulparams/elf64_s390.sh
Normal file
11
contrib/binutils/ld/emulparams/elf64_s390.sh
Normal 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
|
10
contrib/binutils/ld/emulparams/elf_s390.sh
Normal file
10
contrib/binutils/ld/emulparams/elf_s390.sh
Normal 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
|
@ -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\''},
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user