This commit was generated by cvs2svn to compensate for changes in r99461,
which included commits to RCS files with non-trunk default branches.
This commit is contained in:
commit
95cd50e6d7
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=99462
@ -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;
|
||||
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.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,
|
||||
|
@ -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))
|
||||
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
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 */
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
@ -2404,7 +2404,7 @@ cpp_line (s)
|
||||
}
|
||||
|
||||
/* 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.
|
||||
@ -288,7 +288,7 @@ cpp_line (s)
|
||||
}
|
||||
|
||||
/* 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
|
||||
@ -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 Symbol's Value Symbol's Name\n"));
|
||||
printf (_(" Offset Info Type Sym.Value Sym. Name + Addend\n"));
|
||||
}
|
||||
else
|
||||
{
|
||||
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 Symbol's Value Symbol's Name\n"));
|
||||
printf (_(" Offset Info Type Sym. Value Sym. Name + Addend\n"));
|
||||
}
|
||||
else
|
||||
{
|
||||
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,7 +911,13 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (elf_header.e_machine == EM_SPARCV9)
|
||||
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);
|
||||
@ -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.
|
||||
@ -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 ();
|
||||
|
||||
@ -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);
|
||||
|
||||
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
@ -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)
|
||||
|
@ -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 ()
|
@ -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.
|
||||
|
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,
|
||||
|
@ -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.
|
||||
|
@ -3065,6 +3065,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
|
||||
{ "addo.", XO(31,266,1,1), XO_MASK, PPCCOM, { RT, RA, RB } },
|
||||
{ "caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, { RT, RA, RB } },
|
||||
|
||||
{ "tlbiel", X(31,274), XRTRA_MASK, POWER4, { RB } },
|
||||
|
||||
{ "mfapidi", X(31,275), X_MASK, BOOKE, { RT, RA } },
|
||||
|
||||
{ "lscbx", XRC(31,277,0), X_MASK, M601, { RT, RA, RB } },
|
||||
@ -3672,7 +3674,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
|
||||
{ "rac", X(31,818), X_MASK, PWRCOM, { RT, RA, RB } },
|
||||
|
||||
{ "dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, { STRM } },
|
||||
{ "dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, { STRM } },
|
||||
{ "dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, { 0 } },
|
||||
|
||||
{ "srawi", XRC(31,824,0), X_MASK, PPCCOM, { RA, RS, SH } },
|
||||
{ "srai", XRC(31,824,0), X_MASK, PWRCOM, { RA, RS, SH } },
|
||||
@ -3688,7 +3690,9 @@ const struct powerpc_opcode powerpc_opcodes[] = {
|
||||
{ "tlbsx.", XRC(31,914,1), X_MASK, PPC403, { RT, RA, RB } },
|
||||
|
||||
{ "tlbsx", XRC(31,914,0), X_MASK, BOOKE, { RA, RB } },
|
||||
{ "tlbsx.", XRC(31,914,1), X_MASK, BOOKE, { RA, RB } },
|
||||
{ "tlbsxe", XRC(31,915,0), X_MASK, BOOKE, { RA, RB } },
|
||||
{ "tlbsxe.", XRC(31,915,1), X_MASK, BOOKE, { RA, RB } },
|
||||
|
||||
{ "slbmfee", X(31,915), XRA_MASK, PPC64, { RT, RB } },
|
||||
|
||||
|
257
contrib/binutils/opcodes/s390-dis.c
Normal file
257
contrib/binutils/opcodes/s390-dis.c
Normal file
@ -0,0 +1,257 @@
|
||||
/* s390-dis.c -- Disassemble S390 instructions
|
||||
Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
This file is part of GDB, GAS and the GNU binutils.
|
||||
|
||||
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 <stdio.h>
|
||||
#include "ansidecl.h"
|
||||
#include "sysdep.h"
|
||||
#include "dis-asm.h"
|
||||
#include "opcode/s390.h"
|
||||
|
||||
static int init_flag = 0;
|
||||
static int opc_index[256];
|
||||
static int current_arch_mask = 0;
|
||||
|
||||
static void init_disasm PARAMS ((struct disassemble_info *));
|
||||
static unsigned int s390_extract_operand
|
||||
PARAMS ((unsigned char *, const struct s390_operand *));
|
||||
|
||||
/* Set up index table for first opcode byte. */
|
||||
|
||||
static void
|
||||
init_disasm (info)
|
||||
struct disassemble_info *info;
|
||||
{
|
||||
const struct s390_opcode *opcode;
|
||||
const struct s390_opcode *opcode_end;
|
||||
|
||||
memset (opc_index, 0, sizeof (opc_index));
|
||||
opcode_end = s390_opcodes + s390_num_opcodes;
|
||||
for (opcode = s390_opcodes; opcode < opcode_end; opcode++)
|
||||
{
|
||||
opc_index[(int) opcode->opcode[0]] = opcode - s390_opcodes;
|
||||
while ((opcode < opcode_end) &&
|
||||
(opcode[1].opcode[0] == opcode->opcode[0]))
|
||||
opcode++;
|
||||
}
|
||||
switch (info->mach)
|
||||
{
|
||||
case bfd_mach_s390_31:
|
||||
current_arch_mask = 1 << S390_OPCODE_ESA;
|
||||
break;
|
||||
case bfd_mach_s390_64:
|
||||
current_arch_mask = 1 << S390_OPCODE_ESAME;
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
init_flag = 1;
|
||||
}
|
||||
|
||||
/* Extracts an operand value from an instruction. */
|
||||
|
||||
static inline unsigned int
|
||||
s390_extract_operand (insn, operand)
|
||||
unsigned char *insn;
|
||||
const struct s390_operand *operand;
|
||||
{
|
||||
unsigned int val;
|
||||
int bits;
|
||||
|
||||
/* Extract fragments of the operand byte for byte. */
|
||||
insn += operand->shift / 8;
|
||||
bits = (operand->shift & 7) + operand->bits;
|
||||
val = 0;
|
||||
do
|
||||
{
|
||||
val <<= 8;
|
||||
val |= (unsigned int) *insn++;
|
||||
bits -= 8;
|
||||
}
|
||||
while (bits > 0);
|
||||
val >>= -bits;
|
||||
val &= ((1U << (operand->bits - 1)) << 1) - 1;
|
||||
|
||||
/* Sign extend value if the operand is signed or pc relative. */
|
||||
if ((operand->flags & (S390_OPERAND_SIGNED | S390_OPERAND_PCREL))
|
||||
&& (val & (1U << (operand->bits - 1))))
|
||||
val |= (-1U << (operand->bits - 1)) << 1;
|
||||
|
||||
/* Double value if the operand is pc relative. */
|
||||
if (operand->flags & S390_OPERAND_PCREL)
|
||||
val <<= 1;
|
||||
|
||||
/* Length x in an instructions has real length x+1. */
|
||||
if (operand->flags & S390_OPERAND_LENGTH)
|
||||
val++;
|
||||
return val;
|
||||
}
|
||||
|
||||
/* Print a S390 instruction. */
|
||||
|
||||
int
|
||||
print_insn_s390 (memaddr, info)
|
||||
bfd_vma memaddr;
|
||||
struct disassemble_info *info;
|
||||
{
|
||||
bfd_byte buffer[6];
|
||||
const struct s390_opcode *opcode;
|
||||
const struct s390_opcode *opcode_end;
|
||||
unsigned int value;
|
||||
int status, opsize, bufsize;
|
||||
char separator;
|
||||
|
||||
if (init_flag == 0)
|
||||
init_disasm (info);
|
||||
|
||||
/* The output looks better if we put 6 bytes on a line. */
|
||||
info->bytes_per_line = 6;
|
||||
|
||||
/* Every S390 instruction is max 6 bytes long. */
|
||||
memset (buffer, 0, 6);
|
||||
status = (*info->read_memory_func) (memaddr, buffer, 6, info);
|
||||
if (status != 0)
|
||||
{
|
||||
for (bufsize = 0; bufsize < 6; bufsize++)
|
||||
if ((*info->read_memory_func) (memaddr, buffer, bufsize + 1, info) != 0)
|
||||
break;
|
||||
if (bufsize <= 0)
|
||||
{
|
||||
(*info->memory_error_func) (status, memaddr, info);
|
||||
return -1;
|
||||
}
|
||||
/* Opsize calculation looks strange but it works
|
||||
00xxxxxx -> 2 bytes, 01xxxxxx/10xxxxxx -> 4 bytes,
|
||||
11xxxxxx -> 6 bytes. */
|
||||
opsize = ((((buffer[0] >> 6) + 1) >> 1) + 1) << 1;
|
||||
status = opsize > bufsize;
|
||||
}
|
||||
else
|
||||
{
|
||||
bufsize = 6;
|
||||
opsize = ((((buffer[0] >> 6) + 1) >> 1) + 1) << 1;
|
||||
}
|
||||
|
||||
if (status == 0)
|
||||
{
|
||||
/* Find the first match in the opcode table. */
|
||||
opcode_end = s390_opcodes + s390_num_opcodes;
|
||||
for (opcode = s390_opcodes + opc_index[(int) buffer[0]];
|
||||
(opcode < opcode_end) && (buffer[0] == opcode->opcode[0]);
|
||||
opcode++)
|
||||
{
|
||||
const struct s390_operand *operand;
|
||||
const unsigned char *opindex;
|
||||
|
||||
/* Check architecture. */
|
||||
if (!(opcode->architecture & current_arch_mask))
|
||||
continue;
|
||||
/* Check signature of the opcode. */
|
||||
if ((buffer[1] & opcode->mask[1]) != opcode->opcode[1]
|
||||
|| (buffer[2] & opcode->mask[2]) != opcode->opcode[2]
|
||||
|| (buffer[3] & opcode->mask[3]) != opcode->opcode[3]
|
||||
|| (buffer[4] & opcode->mask[4]) != opcode->opcode[4]
|
||||
|| (buffer[5] & opcode->mask[5]) != opcode->opcode[5])
|
||||
continue;
|
||||
|
||||
/* The instruction is valid. */
|
||||
if (opcode->operands[0] != 0)
|
||||
(*info->fprintf_func) (info->stream, "%s\t", opcode->name);
|
||||
else
|
||||
(*info->fprintf_func) (info->stream, "%s", opcode->name);
|
||||
|
||||
/* Extract the operands. */
|
||||
separator = 0;
|
||||
for (opindex = opcode->operands; *opindex != 0; opindex++)
|
||||
{
|
||||
unsigned int value;
|
||||
|
||||
operand = s390_operands + *opindex;
|
||||
value = s390_extract_operand (buffer, operand);
|
||||
|
||||
if ((operand->flags & S390_OPERAND_INDEX) && value == 0)
|
||||
continue;
|
||||
if ((operand->flags & S390_OPERAND_BASE) &&
|
||||
value == 0 && separator == '(')
|
||||
{
|
||||
separator = ',';
|
||||
continue;
|
||||
}
|
||||
|
||||
if (separator)
|
||||
(*info->fprintf_func) (info->stream, "%c", separator);
|
||||
|
||||
if (operand->flags & S390_OPERAND_GPR)
|
||||
(*info->fprintf_func) (info->stream, "%%r%i", value);
|
||||
else if (operand->flags & S390_OPERAND_FPR)
|
||||
(*info->fprintf_func) (info->stream, "%%f%i", value);
|
||||
else if (operand->flags & S390_OPERAND_AR)
|
||||
(*info->fprintf_func) (info->stream, "%%a%i", value);
|
||||
else if (operand->flags & S390_OPERAND_CR)
|
||||
(*info->fprintf_func) (info->stream, "%%c%i", value);
|
||||
else if (operand->flags & S390_OPERAND_PCREL)
|
||||
(*info->print_address_func) (memaddr + (int) value, info);
|
||||
else if (operand->flags & S390_OPERAND_SIGNED)
|
||||
(*info->fprintf_func) (info->stream, "%i", (int) value);
|
||||
else
|
||||
(*info->fprintf_func) (info->stream, "%i", value);
|
||||
|
||||
if (operand->flags & S390_OPERAND_DISP)
|
||||
{
|
||||
separator = '(';
|
||||
}
|
||||
else if (operand->flags & S390_OPERAND_BASE)
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, ")");
|
||||
separator = ',';
|
||||
}
|
||||
else
|
||||
separator = ',';
|
||||
}
|
||||
|
||||
/* Found instruction, printed it, return its size. */
|
||||
return opsize;
|
||||
}
|
||||
/* No matching instruction found, fall through to hex print. */
|
||||
}
|
||||
|
||||
if (bufsize >= 4)
|
||||
{
|
||||
value = (unsigned int) buffer[0];
|
||||
value = (value << 8) + (unsigned int) buffer[1];
|
||||
value = (value << 8) + (unsigned int) buffer[2];
|
||||
value = (value << 8) + (unsigned int) buffer[3];
|
||||
(*info->fprintf_func) (info->stream, ".long\t0x%08x", value);
|
||||
return 4;
|
||||
}
|
||||
else if (bufsize >= 2)
|
||||
{
|
||||
value = (unsigned int) buffer[0];
|
||||
value = (value << 8) + (unsigned int) buffer[1];
|
||||
(*info->fprintf_func) (info->stream, ".short\t0x%04x", value);
|
||||
return 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
value = (unsigned int) buffer[0];
|
||||
(*info->fprintf_func) (info->stream, ".byte\t0x%02x", value);
|
||||
return 1;
|
||||
}
|
||||
}
|
190
contrib/binutils/opcodes/s390-mkopc.c
Normal file
190
contrib/binutils/opcodes/s390-mkopc.c
Normal file
@ -0,0 +1,190 @@
|
||||
/* s390-mkopc.c -- Generates opcode table out of s390-opc.txt
|
||||
Copyright 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
This file is part of GDB, GAS, and the GNU binutils.
|
||||
|
||||
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 <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
/* ARCHBITS_ESA and ARCH_ESAME correspond to the bit numbers defined
|
||||
by s390_opcode_arch_val in include/opcode/s390.h:
|
||||
ARCHBITS_ESAONLY = (1<<S390_OPCODE_ESA)
|
||||
ARCHBITS_ESA = (1<<S390_OPCODE_ESA) + (1<<S390_OPCODE_ESAME)
|
||||
ARCHBITS_ESA = (1<<S390_OPCODE_ESAME). */
|
||||
#define ARCHBITS_ESAONLY 1
|
||||
#define ARCHBITS_ESA 3
|
||||
#define ARCHBITS_ESAME 2
|
||||
|
||||
struct op_struct
|
||||
{
|
||||
char opcode[16];
|
||||
char mnemonic[16];
|
||||
char format[16];
|
||||
int archbits;
|
||||
unsigned long long sort_value;
|
||||
int no_nibbles;
|
||||
};
|
||||
|
||||
struct op_struct *op_array;
|
||||
int max_ops;
|
||||
int no_ops;
|
||||
|
||||
static void
|
||||
createTable (void)
|
||||
{
|
||||
max_ops = 256;
|
||||
op_array = malloc (max_ops * sizeof (struct op_struct));
|
||||
no_ops = 0;
|
||||
}
|
||||
|
||||
/* `insertOpcode': insert an op_struct into sorted opcode array. */
|
||||
|
||||
static void
|
||||
insertOpcode (char *opcode, char *mnemonic, char *format, int archbits)
|
||||
{
|
||||
char *str;
|
||||
unsigned long long sort_value;
|
||||
int no_nibbles;
|
||||
int ix, k;
|
||||
|
||||
while (no_ops >= max_ops)
|
||||
{
|
||||
max_ops = max_ops * 2;
|
||||
op_array = realloc (op_array, max_ops * sizeof (struct op_struct));
|
||||
}
|
||||
|
||||
sort_value = 0;
|
||||
str = opcode;
|
||||
for (ix = 0; ix < 16; ix++)
|
||||
{
|
||||
if (*str >= '0' && *str <= '9')
|
||||
sort_value = (sort_value << 4) + (*str - '0');
|
||||
else if (*str >= 'a' && *str <= 'f')
|
||||
sort_value = (sort_value << 4) + (*str - 'a' + 10);
|
||||
else if (*str >= 'A' && *str <= 'F')
|
||||
sort_value = (sort_value << 4) + (*str - 'A' + 10);
|
||||
else if (*str == '?')
|
||||
sort_value <<= 4;
|
||||
else
|
||||
break;
|
||||
str ++;
|
||||
}
|
||||
sort_value <<= 4*(16 - ix);
|
||||
no_nibbles = ix;
|
||||
for (ix = 0; ix < no_ops; ix++)
|
||||
if (sort_value > op_array[ix].sort_value)
|
||||
break;
|
||||
for (k = no_ops; k > ix; k--)
|
||||
op_array[k] = op_array[k-1];
|
||||
strcpy(op_array[ix].opcode, opcode);
|
||||
strcpy(op_array[ix].mnemonic, mnemonic);
|
||||
strcpy(op_array[ix].format, format);
|
||||
op_array[ix].sort_value = sort_value;
|
||||
op_array[ix].no_nibbles = no_nibbles;
|
||||
op_array[ix].archbits = archbits;
|
||||
no_ops++;
|
||||
}
|
||||
|
||||
static char file_header[] =
|
||||
"/* The opcode table. This file was generated by s390-mkopc.\n\n"
|
||||
" The format of the opcode table is:\n\n"
|
||||
" NAME OPCODE MASK OPERANDS\n\n"
|
||||
" Name is the name of the instruction.\n"
|
||||
" OPCODE is the instruction opcode.\n"
|
||||
" MASK is the opcode mask; this is used to tell the disassembler\n"
|
||||
" which bits in the actual opcode must match OPCODE.\n"
|
||||
" OPERANDS is the list of operands.\n\n"
|
||||
" The disassembler reads the table in order and prints the first\n"
|
||||
" instruction which matches. */\n\n"
|
||||
"const struct s390_opcode s390_opcodes[] =\n {\n";
|
||||
|
||||
/* `dumpTable': write opcode table. */
|
||||
|
||||
static void
|
||||
dumpTable (void)
|
||||
{
|
||||
char *str;
|
||||
int ix;
|
||||
|
||||
/* Write hash table entries (slots). */
|
||||
printf (file_header);
|
||||
|
||||
for (ix = 0; ix < no_ops; ix++)
|
||||
{
|
||||
printf (" { \"%s\", ", op_array[ix].mnemonic);
|
||||
for (str = op_array[ix].opcode; *str != 0; str++)
|
||||
if (*str == '?')
|
||||
*str = '0';
|
||||
printf ("OP%i(0x%sLL), ",
|
||||
op_array[ix].no_nibbles*4, op_array[ix].opcode);
|
||||
printf ("MASK_%s, INSTR_%s, ",
|
||||
op_array[ix].format, op_array[ix].format);
|
||||
printf ("%i}", op_array[ix].archbits);
|
||||
if (ix < no_ops-1)
|
||||
printf (",\n");
|
||||
else
|
||||
printf ("\n");
|
||||
}
|
||||
printf ("};\n\n");
|
||||
printf ("const int s390_num_opcodes =\n");
|
||||
printf (" sizeof (s390_opcodes) / sizeof (s390_opcodes[0]);\n\n");
|
||||
}
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
char currentLine[256];
|
||||
|
||||
createTable ();
|
||||
|
||||
/* Read opcode descriptions from `stdin'. For each mnemonic,
|
||||
make an entry into the opcode table. */
|
||||
while (fgets (currentLine, sizeof (currentLine), stdin) != NULL)
|
||||
{
|
||||
char opcode[16];
|
||||
char mnemonic[16];
|
||||
char format[16];
|
||||
char description[64];
|
||||
char archtag[16];
|
||||
int archbits;
|
||||
|
||||
if (currentLine[0] == '#')
|
||||
continue;
|
||||
memset (opcode, 0, 8);
|
||||
if (sscanf (currentLine, "%15s %15s %15s \"%[^\"]\" %15s",
|
||||
opcode, mnemonic, format, description, archtag) == 5)
|
||||
{
|
||||
if (strcmp (archtag, "esaonly") == 0)
|
||||
archbits = ARCHBITS_ESAONLY;
|
||||
else if (strcmp (archtag, "esa") == 0)
|
||||
archbits = ARCHBITS_ESA;
|
||||
else if (strcmp (archtag, "esame") == 0)
|
||||
archbits = ARCHBITS_ESAME;
|
||||
else
|
||||
archbits = 0;
|
||||
insertOpcode (opcode, mnemonic, format, archbits);
|
||||
}
|
||||
else
|
||||
fprintf (stderr, "Couldn't scan line %s\n", currentLine);
|
||||
}
|
||||
|
||||
dumpTable ();
|
||||
return 0;
|
||||
}
|
318
contrib/binutils/opcodes/s390-opc.c
Normal file
318
contrib/binutils/opcodes/s390-opc.c
Normal file
@ -0,0 +1,318 @@
|
||||
/* s390-opc.c -- S390 opcode list
|
||||
Copyright 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
|
||||
This file is part of GDB, GAS, and the GNU binutils.
|
||||
|
||||
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 <stdio.h>
|
||||
#include "ansidecl.h"
|
||||
#include "opcode/s390.h"
|
||||
|
||||
/* This file holds the S390 opcode table. The opcode table
|
||||
includes almost all of the extended instruction mnemonics. This
|
||||
permits the disassembler to use them, and simplifies the assembler
|
||||
logic, at the cost of increasing the table size. The table is
|
||||
strictly constant data, so the compiler should be able to put it in
|
||||
the .text section.
|
||||
|
||||
This file also holds the operand table. All knowledge about
|
||||
inserting operands into instructions and vice-versa is kept in this
|
||||
file. */
|
||||
|
||||
/* The operands table.
|
||||
The fields are bits, shift, insert, extract, flags. */
|
||||
|
||||
const struct s390_operand s390_operands[] =
|
||||
{
|
||||
#define UNUSED 0
|
||||
{ 0, 0, 0 }, /* Indicates the end of the operand list */
|
||||
|
||||
#define R_8 1 /* GPR starting at position 8 */
|
||||
{ 4, 8, S390_OPERAND_GPR },
|
||||
#define R_12 2 /* GPR starting at position 12 */
|
||||
{ 4, 12, S390_OPERAND_GPR },
|
||||
#define R_16 3 /* GPR starting at position 16 */
|
||||
{ 4, 16, S390_OPERAND_GPR },
|
||||
#define R_20 4 /* GPR starting at position 20 */
|
||||
{ 4, 20, S390_OPERAND_GPR },
|
||||
#define R_24 5 /* GPR starting at position 24 */
|
||||
{ 4, 24, S390_OPERAND_GPR },
|
||||
#define R_28 6 /* GPR starting at position 28 */
|
||||
{ 4, 28, S390_OPERAND_GPR },
|
||||
#define R_32 7 /* GPR starting at position 32 */
|
||||
{ 4, 32, S390_OPERAND_GPR },
|
||||
|
||||
#define F_8 8 /* FPR starting at position 8 */
|
||||
{ 4, 8, S390_OPERAND_FPR },
|
||||
#define F_12 9 /* FPR starting at position 12 */
|
||||
{ 4, 12, S390_OPERAND_FPR },
|
||||
#define F_16 10 /* FPR starting at position 16 */
|
||||
{ 4, 16, S390_OPERAND_FPR },
|
||||
#define F_20 11 /* FPR starting at position 16 */
|
||||
{ 4, 16, S390_OPERAND_FPR },
|
||||
#define F_24 12 /* FPR starting at position 24 */
|
||||
{ 4, 24, S390_OPERAND_FPR },
|
||||
#define F_28 13 /* FPR starting at position 28 */
|
||||
{ 4, 28, S390_OPERAND_FPR },
|
||||
#define F_32 14 /* FPR starting at position 32 */
|
||||
{ 4, 32, S390_OPERAND_FPR },
|
||||
|
||||
#define A_8 15 /* Access reg. starting at position 8 */
|
||||
{ 4, 8, S390_OPERAND_AR },
|
||||
#define A_12 16 /* Access reg. starting at position 12 */
|
||||
{ 4, 12, S390_OPERAND_AR },
|
||||
#define A_24 17 /* Access reg. starting at position 24 */
|
||||
{ 4, 24, S390_OPERAND_AR },
|
||||
#define A_28 18 /* Access reg. starting at position 28 */
|
||||
{ 4, 28, S390_OPERAND_AR },
|
||||
|
||||
#define C_8 19 /* Control reg. starting at position 8 */
|
||||
{ 4, 8, S390_OPERAND_CR },
|
||||
#define C_12 20 /* Control reg. starting at position 12 */
|
||||
{ 4, 12, S390_OPERAND_CR },
|
||||
|
||||
#define B_16 21 /* Base register starting at position 16 */
|
||||
{ 4, 16, S390_OPERAND_BASE|S390_OPERAND_GPR },
|
||||
#define B_32 22 /* Base register starting at position 32 */
|
||||
{ 4, 32, S390_OPERAND_BASE|S390_OPERAND_GPR },
|
||||
|
||||
#define X_12 23 /* Index register starting at position 12 */
|
||||
{ 4, 12, S390_OPERAND_INDEX|S390_OPERAND_GPR },
|
||||
|
||||
#define D_20 24 /* Displacement starting at position 20 */
|
||||
{ 12, 20, S390_OPERAND_DISP },
|
||||
#define D_36 25 /* Displacement starting at position 36 */
|
||||
{ 12, 36, S390_OPERAND_DISP },
|
||||
|
||||
#define L4_8 26 /* 4 bit length starting at position 8 */
|
||||
{ 4, 8, S390_OPERAND_LENGTH },
|
||||
#define L4_12 27 /* 4 bit length starting at position 12 */
|
||||
{ 4, 12, S390_OPERAND_LENGTH },
|
||||
#define L8_8 28 /* 8 bit length starting at position 8 */
|
||||
{ 8, 8, S390_OPERAND_LENGTH },
|
||||
|
||||
#define U4_8 29 /* 4 bit unsigned value starting at 8 */
|
||||
{ 4, 8, 0 },
|
||||
#define U4_12 30 /* 4 bit unsigned value starting at 12 */
|
||||
{ 4, 12, 0 },
|
||||
#define U4_16 31 /* 4 bit unsigned value starting at 16 */
|
||||
{ 4, 16, 0 },
|
||||
#define U4_20 32 /* 4 bit unsigned value starting at 20 */
|
||||
{ 4, 20, 0 },
|
||||
#define U8_8 33 /* 8 bit unsigned value starting at 8 */
|
||||
{ 8, 8, 0 },
|
||||
#define U8_16 34 /* 8 bit unsigned value starting at 16 */
|
||||
{ 8, 16, 0 },
|
||||
#define I16_16 35 /* 16 bit signed value starting at 16 */
|
||||
{ 16, 16, S390_OPERAND_SIGNED },
|
||||
#define U16_16 36 /* 16 bit unsigned value starting at 16 */
|
||||
{ 16, 16, 0 },
|
||||
#define J16_16 37 /* PC relative jump offset at 16 */
|
||||
{ 16, 16, S390_OPERAND_PCREL },
|
||||
#define J32_16 38 /* PC relative long offset at 16 */
|
||||
{ 32, 16, S390_OPERAND_PCREL }
|
||||
};
|
||||
|
||||
|
||||
/* Macros used to form opcodes. */
|
||||
|
||||
/* 8/16/48 bit opcodes. */
|
||||
#define OP8(x) { x, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define OP16(x) { x >> 8, x & 255, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define OP48(x) { x >> 40, (x >> 32) & 255, (x >> 24) & 255, \
|
||||
(x >> 16) & 255, (x >> 8) & 255, x & 255}
|
||||
|
||||
/* The new format of the INSTR_x_y and MASK_x_y defines is based
|
||||
on the following rules:
|
||||
1) the middle part of the definition (x in INSTR_x_y) is the official
|
||||
names of the instruction format that you can find in the principals
|
||||
of operation.
|
||||
2) the last part of the definition (y in INSTR_x_y) gives you an idea
|
||||
which operands the binary represenation of the instruction has.
|
||||
The meanings of the letters in y are:
|
||||
a - access register
|
||||
c - control register
|
||||
d - displacement, 12 bit
|
||||
f - floating pointer register
|
||||
i - signed integer, 4 or 8 bit
|
||||
l - length, 4 or 8 bit
|
||||
p - pc relative
|
||||
r - general purpose register
|
||||
u - unsigned integer, 4 or 8 bit
|
||||
0 - operand skipped.
|
||||
The order of the letters reflects the layout of the format in
|
||||
storage and not the order of the paramaters of the instructions.
|
||||
The use of the letters is not a 100% match with the PoP but it is
|
||||
quite close.
|
||||
|
||||
For example the instruction "mvo" is defined in the PoP as follows:
|
||||
|
||||
MVO D1(L1,B1),D2(L2,B2) [SS]
|
||||
|
||||
--------------------------------------
|
||||
| 'F1' | L1 | L2 | B1 | D1 | B2 | D2 |
|
||||
--------------------------------------
|
||||
0 8 12 16 20 32 36
|
||||
|
||||
The instruction format is: INSTR_SS_LLRDRD / MASK_SS_LLRDRD. */
|
||||
|
||||
#define INSTR_E 2, { 0,0,0,0,0,0 } /* e.g. pr */
|
||||
#define INSTR_RIE_RRP 6, { R_8,R_12,J16_16,0,0,0 } /* e.g. brxhg */
|
||||
#define INSTR_RIL_0P 6, { J32_16,0,0,0,0 } /* e.g. jg */
|
||||
#define INSTR_RIL_RP 6, { R_8,J32_16,0,0,0,0 } /* e.g. brasl */
|
||||
#define INSTR_RIL_UP 6, { U4_8,J32_16,0,0,0,0 } /* e.g. brcl */
|
||||
#define INSTR_RI_0P 4, { J16_16,0,0,0,0,0 } /* e.g. j */
|
||||
#define INSTR_RI_RI 4, { R_8,I16_16,0,0,0,0 } /* e.g. ahi */
|
||||
#define INSTR_RI_RP 4, { R_8,J16_16,0,0,0,0 } /* e.g. brct */
|
||||
#define INSTR_RI_RU 4, { R_8,U16_16,0,0,0,0 } /* e.g. tml */
|
||||
#define INSTR_RI_UP 4, { U4_8,J16_16,0,0,0,0 } /* e.g. brc */
|
||||
#define INSTR_RRE_00 4, { 0,0,0,0,0,0 } /* e.g. palb */
|
||||
#define INSTR_RRE_0R 4, { R_28,0,0,0,0,0 } /* e.g. tb */
|
||||
#define INSTR_RRE_AA 4, { A_24,A_28,0,0,0,0 } /* e.g. cpya */
|
||||
#define INSTR_RRE_AR 4, { A_24,R_28,0,0,0,0 } /* e.g. sar */
|
||||
#define INSTR_RRE_F0 4, { F_24,0,0,0,0,0 } /* e.g. sqer */
|
||||
#define INSTR_RRE_FF 4, { F_24,F_28,0,0,0,0 } /* e.g. debr */
|
||||
#define INSTR_RRE_R0 4, { R_24,0,0,0,0,0 } /* e.g. ipm */
|
||||
#define INSTR_RRE_RA 4, { R_24,A_28,0,0,0,0 } /* e.g. ear */
|
||||
#define INSTR_RRE_RF 4, { R_24,F_28,0,0,0,0 } /* e.g. cefbr */
|
||||
#define INSTR_RRE_RR 4, { R_24,R_28,0,0,0,0 } /* e.g. lura */
|
||||
#define INSTR_RRF_F0FF 4, { F_16,F_24,F_28,0,0,0 } /* e.g. madbr */
|
||||
#define INSTR_RRF_FUFF 4, { F_24,F_16,F_28,U4_20,0,0 } /* e.g. didbr */
|
||||
#define INSTR_RRF_RURR 4, { R_24,R_28,R_16,U4_20,0,0 } /* e.g. .insn */
|
||||
#define INSTR_RRF_U0FF 4, { F_24,U4_16,F_28,0,0,0 } /* e.g. cfxbr */
|
||||
#define INSTR_RRF_U0FR 4, { F_24,U4_16,R_28,0,0,0 } /* e.g. cfebr */
|
||||
#define INSTR_RRF_U0FR 4, { F_24,U4_16,R_28,0,0,0 } /* e.g. cfxbr */
|
||||
#define INSTR_RR_0R 2, { R_12, 0,0,0,0,0 } /* e.g. br */
|
||||
#define INSTR_RR_FF 2, { F_8,F_12,0,0,0,0 } /* e.g. adr */
|
||||
#define INSTR_RR_R0 2, { R_8, 0,0,0,0,0 } /* e.g. spm */
|
||||
#define INSTR_RR_RR 2, { R_8,R_12,0,0,0,0 } /* e.g. lr */
|
||||
#define INSTR_RR_U0 2, { U8_8, 0,0,0,0,0 } /* e.g. svc */
|
||||
#define INSTR_RR_UR 2, { U4_8,R_12,0,0,0,0 } /* e.g. bcr */
|
||||
#define INSTR_RSE_RRRD 6, { R_8,R_12,D_20,B_16,0,0 } /* e.g. lmh */
|
||||
#define INSTR_RSE_RURD 6, { R_8,U4_12,D_20,B_16,0,0 } /* e.g. icmh */
|
||||
#define INSTR_RSI_RRP 4, { R_8,R_12,J16_16,0,0,0 } /* e.g. brxh */
|
||||
#define INSTR_RS_AARD 4, { A_8,A_12,D_20,B_16,0,0 } /* e.g. lam */
|
||||
#define INSTR_RS_CCRD 4, { C_8,C_12,D_20,B_16,0,0 } /* e.g. lctl */
|
||||
#define INSTR_RS_R0RD 4, { R_8,D_20,B_16,0,0,0 } /* e.g. sll */
|
||||
#define INSTR_RS_RRRD 4, { R_8,R_12,D_20,B_16,0,0 } /* e.g. cs */
|
||||
#define INSTR_RS_RURD 4, { R_8,U4_12,D_20,B_16,0,0 } /* e.g. icm */
|
||||
#define INSTR_RXE_FRRD 6, { F_8,D_20,X_12,B_16,0,0 } /* e.g. axbr */
|
||||
#define INSTR_RXE_RRRD 6, { R_8,D_20,X_12,B_16,0,0 } /* e.g. lg */
|
||||
#define INSTR_RXF_FRRDF 6, { F_32,F_8,D_20,X_12,B_16,0 } /* e.g. madb */
|
||||
#define INSTR_RXF_RRRDR 6, { R_32,R_8,D_20,X_12,B_16,0 } /* e.g. .insn */
|
||||
#define INSTR_RX_0RRD 4, { D_20,X_12,B_16,0,0,0 } /* e.g. be */
|
||||
#define INSTR_RX_FRRD 4, { F_8,D_20,X_12,B_16,0,0 } /* e.g. ae */
|
||||
#define INSTR_RX_RRRD 4, { R_8,D_20,X_12,B_16,0,0 } /* e.g. l */
|
||||
#define INSTR_RX_URRD 4, { U4_8,D_20,X_12,B_16,0,0 } /* e.g. bc */
|
||||
#define INSTR_SI_URD 4, { D_20,B_16,U8_8,0,0,0 } /* e.g. cli */
|
||||
#define INSTR_SSE_RDRD 6, { D_20,B_16,D_36,B_32,0,0 } /* e.g. mvsdk */
|
||||
#define INSTR_SS_L0RDRD 6, { D_20,L8_8,B_16,D_36,B_32,0 } /* e.g. mvc */
|
||||
#define INSTR_SS_LIRDRD 6, { D_20,L4_8,B_16,D_36,B_32,U4_12 } /* e.g. srp */
|
||||
#define INSTR_SS_LLRDRD 6, { D_20,L4_8,B_16,D_36,L4_12,B_32 } /* e.g. pack */
|
||||
#define INSTR_SS_RRRDRD 6, { D_20,R_8,B_16,D_36,B_32,R_12 } /* e.g. mvck */
|
||||
#define INSTR_SS_RRRDRD2 6, { R_8,D_20,B_16,R_12,D_36,B_32 } /* e.g. plo */
|
||||
#define INSTR_SS_RRRDRD3 6, { R_8,R_12,D_20,B_16,D_36,B_32 } /* e.g. lmd */
|
||||
#define INSTR_S_00 4, { 0,0,0,0,0,0 } /* e.g. hsch */
|
||||
#define INSTR_S_RD 4, { D_20,B_16,0,0,0,0 } /* e.g. lpsw */
|
||||
|
||||
#define MASK_E { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RIE_RRP { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||
#define MASK_RIL_0P { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RIL_RP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RIL_UP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RI_0P { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RI_RI { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RI_RP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RI_RU { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RI_UP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRE_00 { 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 }
|
||||
#define MASK_RRE_0R { 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00 }
|
||||
#define MASK_RRE_AA { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRE_AR { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRE_F0 { 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00 }
|
||||
#define MASK_RRE_FF { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRE_R0 { 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00 }
|
||||
#define MASK_RRE_RA { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRE_RF { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRE_RR { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_F0FF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_FUFF { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_RURR { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_U0FF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_U0FR { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_U0FR { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RR_0R { 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RR_FF { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RR_R0 { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RR_RR { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RR_U0 { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RR_UR { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RSE_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||
#define MASK_RSE_RURD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||
#define MASK_RSI_RRP { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RS_AARD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RS_CCRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RS_R0RD { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RS_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RS_RURD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RXE_FRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||
#define MASK_RXE_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||
#define MASK_RXF_FRRDF { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||
#define MASK_RXF_RRRDR { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||
#define MASK_RX_0RRD { 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RX_FRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RX_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RX_URRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_SI_URD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_SSE_RDRD { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_SS_L0RDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_SS_LIRDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_SS_LLRDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_SS_RRRDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_SS_RRRDRD2 { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_SS_RRRDRD3 { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_S_00 { 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 }
|
||||
#define MASK_S_RD { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
|
||||
/* The opcode formats table (blueprints for .insn pseudo mnemonic). */
|
||||
|
||||
const struct s390_opcode s390_opformats[] =
|
||||
{
|
||||
{ "e", OP8(0x00LL), MASK_E, INSTR_E, 3 },
|
||||
{ "ri", OP8(0x00LL), MASK_RI_RI, INSTR_RI_RI, 3 },
|
||||
{ "rie", OP8(0x00LL), MASK_RIE_RRP, INSTR_RIE_RRP, 3 },
|
||||
{ "ril", OP8(0x00LL), MASK_RIL_RP, INSTR_RIL_RP, 3 },
|
||||
{ "rr", OP8(0x00LL), MASK_RR_RR, INSTR_RR_RR, 3 },
|
||||
{ "rre", OP8(0x00LL), MASK_RRE_RR, INSTR_RRE_RR, 3 },
|
||||
{ "rrf", OP8(0x00LL), MASK_RRF_RURR, INSTR_RRF_RURR, 3 },
|
||||
{ "rs", OP8(0x00LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3 },
|
||||
{ "rse", OP8(0x00LL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 3 },
|
||||
{ "rsi", OP8(0x00LL), MASK_RSI_RRP, INSTR_RSI_RRP, 3 },
|
||||
{ "rx", OP8(0x00LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3 },
|
||||
{ "rxe", OP8(0x00LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3 },
|
||||
{ "rxf", OP8(0x00LL), MASK_RXF_RRRDR, INSTR_RXF_RRRDR,3 },
|
||||
{ "s", OP8(0x00LL), MASK_S_RD, INSTR_S_RD, 3 },
|
||||
{ "si", OP8(0x00LL), MASK_SI_URD, INSTR_SI_URD, 3 },
|
||||
{ "ss", OP8(0x00LL), MASK_SS_RRRDRD, INSTR_SS_RRRDRD,3 },
|
||||
{ "sse", OP8(0x00LL), MASK_SSE_RDRD, INSTR_SSE_RDRD, 3 },
|
||||
};
|
||||
|
||||
const int s390_num_opformats =
|
||||
sizeof (s390_opformats) / sizeof (s390_opformats[0]);
|
||||
|
||||
#include "s390-opc.tab"
|
626
contrib/binutils/opcodes/s390-opc.txt
Normal file
626
contrib/binutils/opcodes/s390-opc.txt
Normal file
@ -0,0 +1,626 @@
|
||||
# S/390 opcodes list. Use s390-mkopc to convert it into the opcode table.
|
||||
# Copyright 2000, 2001 Free Software Foundation, Inc.
|
||||
# Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
5a a RX_RRRD "add" esa
|
||||
6a ad RX_FRRD "add normalized (long)" esa
|
||||
2a adr RR_FF "add normalized (long)" esa
|
||||
7a ae RX_FRRD "add normalized (short)" esa
|
||||
3a aer RR_FF "add normalized (short)" esa
|
||||
4a ah RX_RRRD "add halfword" esa
|
||||
5e al RX_RRRD "add logical" esa
|
||||
1e alr RR_RR "add logical" esa
|
||||
fa ap SS_LLRDRD "add decimal" esa
|
||||
1a ar RR_RR "add" esa
|
||||
7e au RX_FRRD "add unnormalized (short)" esa
|
||||
3e aur RR_FF "add unnormalized (short)" esa
|
||||
6e aw RX_FRRD "add unnormalized (long)" esa
|
||||
2e awr RR_FF "add unnormalized (long)" esa
|
||||
36 axr RR_FF "add normalized" esa
|
||||
b240 bakr RRE_RR "branch and stack" esa
|
||||
45 bal RX_RRRD "branch and link" esa
|
||||
05 balr RR_RR "branch and link" esa
|
||||
4d bas RX_RRRD "branch and save" esa
|
||||
0d basr RR_RR "branch and save" esa
|
||||
0c bassm RR_RR "branch and save and set mode" esa
|
||||
47 bc RX_URRD "branch on condition" esa
|
||||
07 bcr RR_UR "branch on condition" esa
|
||||
46 bct RX_RRRD "branch on count" esa
|
||||
06 bctr RR_RR "branch on count" esa
|
||||
b258 bsg RRE_RR "branch in subspace group" esa
|
||||
0b bsm RR_RR "branch and set mode" esa
|
||||
86 bxh RS_RRRD "branch on index high" esa
|
||||
87 bxle RS_RRRD "branch on index low or equal" esa
|
||||
59 c RX_RRRD "compare" esa
|
||||
69 cd RX_FRRD "compare (long)" esa
|
||||
29 cdr RR_FF "compare (long)" esa
|
||||
bb cds RS_RRRD "compare double and swap" esa
|
||||
79 ce RX_FRRD "compare (short)" esa
|
||||
39 cer RR_FF "compare (short)" esa
|
||||
b21a cfc S_RD "compare and form codeword" esa
|
||||
49 ch RX_RRRD "compare halfword" esa
|
||||
55 cl RX_RRRD "compare logical" esa
|
||||
d5 clc SS_L0RDRD "compare logical" esa
|
||||
0f clcl RR_RR "compare logical long" esa
|
||||
95 cli SI_URD "compare logical" esa
|
||||
bd clm RS_RURD "compare logical characters under mask" esa
|
||||
15 clr RR_RR "compare logical" esa
|
||||
b25d clst RRE_RR "compare logical string" esa
|
||||
b263 cmpsc RRE_RR "compression call" esa
|
||||
f9 cp SS_LLRDRD "compare decimal" esa
|
||||
b24d cpya RRE_AA "copy access" esa
|
||||
19 cr RR_RR "compare" esa
|
||||
ba cs RS_RRRD "compare and swap" esa
|
||||
b230 csch S_00 "clear subchannel" esa
|
||||
b257 cuse RRE_RR "compare until substring equal" esa
|
||||
b250 csp RRE_RR "compare and swap and purge" esa
|
||||
4f cvb RX_RRRD "convert to binary" esa
|
||||
4e cvd RX_RRRD "convert to decimal" esa
|
||||
5d d RX_RRRD "divide" esa
|
||||
6d dd RX_FRRD "divide (long)" esa
|
||||
2d ddr RR_FF "divide (long)" esa
|
||||
7d de RX_FRRD "divide (short)" esa
|
||||
3d der RR_FF "divide (short)" esa
|
||||
83 diag RS_RRRD "diagnose" esa
|
||||
fd dp SS_LLRDRD "divide decimal" esa
|
||||
1d dr RR_RR "divide" esa
|
||||
b22d dxr RRE_F0 "divide (ext.)" esa
|
||||
b24f ear RRE_RA "extract access" esa
|
||||
de ed SS_L0RDRD "edit" esa
|
||||
df edmk SS_L0RDRD "edit and mark" esa
|
||||
b226 epar RRE_R0 "extract primary ASN" esa
|
||||
b249 ereg RRE_RR "extract stacked registers" esa
|
||||
b227 esar RRE_R0 "extract secondary ASN" esa
|
||||
b24a esta RRE_RR "extract stacked state" esa
|
||||
44 ex RX_RRRD "execute" esa
|
||||
24 hdr RR_FF "halve (long)" esa
|
||||
34 her RR_FF "halve (short)" esa
|
||||
b231 hsch S_00 "halt subchannel" esa
|
||||
b224 iac RRE_R0 "insert address space control" esa
|
||||
43 ic RX_RRRD "insert character" esa
|
||||
bf icm RS_RURD "insert characters under mask" esa
|
||||
b20b ipk S_00 "insert PSW key" esa
|
||||
b222 ipm RRE_R0 "insert program mask" esa
|
||||
b221 ipte RRE_RR "invalidate page table entry" esa
|
||||
b229 iske RRE_RR "insert storage key extended" esa
|
||||
b223 ivsk RRE_RR "insert virtual storage key" esa
|
||||
58 l RX_RRRD "load" esa
|
||||
41 la RX_RRRD "load address" esa
|
||||
51 lae RX_RRRD "load address extended" esa
|
||||
9a lam RS_AARD "load access multiple" esa
|
||||
e500 lasp SSE_RDRD "load address space parameters" esa
|
||||
23 lcdr RR_FF "load complement (long)" esa
|
||||
33 lcer RR_FF "load complement (short)" esa
|
||||
13 lcr RR_RR "load complement" esa
|
||||
b7 lctl RS_CCRD "load control" esa
|
||||
68 ld RX_FRRD "load (long)" esa
|
||||
28 ldr RR_FF "load (long)" esa
|
||||
78 le RX_FRRD "load (short)" esa
|
||||
38 ler RR_FF "load (short)" esa
|
||||
48 lh RX_RRRD "load halfword" esa
|
||||
98 lm RS_RRRD "load multiple" esa
|
||||
21 lndr RR_FF "load negative (long)" esa
|
||||
31 lner RR_FF "load negative (short)" esa
|
||||
11 lnr RR_RR "load negative" esa
|
||||
20 lpdr RR_FF "load positive (long)" esa
|
||||
30 lper RR_FF "load positive (short)" esa
|
||||
10 lpr RR_RR "load positive" esa
|
||||
82 lpsw S_RD "load PSW" esa
|
||||
18 lr RR_RR "load" esa
|
||||
b1 lra RX_RRRD "load real address" esa
|
||||
25 lrdr RR_FF "load rounded (ext. to long)" esa
|
||||
35 lrer RR_FF "load rounded (long to short)" esa
|
||||
22 ltdr RR_FF "load and test (long)" esa
|
||||
32 lter RR_FF "load and test (short)" esa
|
||||
12 ltr RR_RR "load and test" esa
|
||||
b24b lura RRE_RR "load using real address" esa
|
||||
5c m RX_RRRD "multiply" esa
|
||||
af mc SI_URD "monitor call" esa
|
||||
6c md RX_FRRD "multiply (long)" esa
|
||||
2c mdr RR_FF "multiply (long)" esa
|
||||
7c me RX_FRRD "multiply (short to long)" esa
|
||||
3c mer RR_FF "multiply (short to long)" esa
|
||||
4c mh RX_RRRD "multiply halfword" esa
|
||||
fc mp SS_LLRDRD "multiply decimal" esa
|
||||
1c mr RR_RR "multiply" esa
|
||||
b232 msch S_RD "modify subchannel" esa
|
||||
b247 msta RRE_R0 "modify stacked state" esa
|
||||
d2 mvc SS_L0RDRD "move" esa
|
||||
e50f mvcdk SSE_RDRD "move with destination key" esa
|
||||
e8 mvcin SS_L0RDRD "move inverse" esa
|
||||
d9 mvck SS_RRRDRD "move with key" esa
|
||||
0e mvcl RR_RR "move long" esa
|
||||
da mvcp SS_RRRDRD "move to primary" esa
|
||||
db mvcs SS_RRRDRD "move to secondary" esa
|
||||
e50e mvcsk SSE_RDRD "move with source key" esa
|
||||
92 mvi SI_URD "move" esa
|
||||
d1 mvn SS_L0RDRD "move numerics" esa
|
||||
f1 mvo SS_LLRDRD "move with offset" esa
|
||||
b254 mvpg RRE_RR "move page" esa
|
||||
b255 mvst RRE_RR "move string" esa
|
||||
d3 mvz SS_L0RDRD "move zones" esa
|
||||
67 mxd RX_FRRD "multiply (long to ext.)" esa
|
||||
27 mxdr RR_FF "multiply (long to ext.)" esa
|
||||
26 mxr RR_FF "multiply (ext.)" esa
|
||||
54 n RX_RRRD "AND" esa
|
||||
d4 nc SS_L0RDRD "AND" esa
|
||||
94 ni SI_URD "AND" esa
|
||||
14 nr RR_RR "AND" esa
|
||||
56 o RX_RRRD "OR" esa
|
||||
d6 oc SS_L0RDRD "OR" esa
|
||||
96 oi SI_URD "OR" esa
|
||||
16 or RR_RR "OR" esa
|
||||
f2 pack SS_LLRDRD "pack" esa
|
||||
b248 palb RRE_00 "purge ALB" esa
|
||||
b218 pc S_RD "program call" esa
|
||||
0101 pr E "program return" esa
|
||||
b228 pt RRE_RR "program transfer" esa
|
||||
b20d ptlb S_00 "purge TLB" esa
|
||||
b23b rchp S_00 "reset channel path" esa
|
||||
b22a rrbe RRE_RR "reset reference bit extended" esa
|
||||
b238 rsch S_00 "resume subchannel" esa
|
||||
5b s RX_RRRD "subtract" esa
|
||||
b219 sac S_RD "set address space control" esa
|
||||
b279 sacf S_RD "set address space control fast" esa
|
||||
b237 sal S_00 "set address limit" esa
|
||||
b24e sar RRE_AR "set access" esa
|
||||
b23c schm S_00 "set channel monitor" esa
|
||||
b204 sck S_RD "set clock" esa
|
||||
b206 sckc S_RD "set clock comparator" esa
|
||||
6b sd RX_FRRD "subtract normalized (long)" esa
|
||||
2b sdr RR_FF "subtract normalized (long)" esa
|
||||
7b se RX_FRRD "subtract normalized (short)" esa
|
||||
3b ser RR_FF "subtract normalized (short)" esa
|
||||
4b sh RX_RRRD "subtract halfword" esa
|
||||
b214 sie S_RD "start interpretive execution" esa
|
||||
ae sigp RS_RRRD "signal processor" esa
|
||||
5f sl RX_RRRD "subtract logical" esa
|
||||
8b sla RS_R0RD "shift left single" esa
|
||||
8f slda RS_R0RD "shift left double (long)" esa
|
||||
8d sldl RS_R0RD "shift left double logical (long)" esa
|
||||
89 sll RS_R0RD "shift left single logical" esa
|
||||
1f slr RR_RR "subtract logical" esa
|
||||
fb sp SS_LLRDRD "subtract decimal" esa
|
||||
b20a spka S_RD "set PSW key from address" esa
|
||||
04 spm RR_R0 "set program mask" esa
|
||||
b208 spt S_RD "set CPU timer" esa
|
||||
b210 spx S_RD "set prefix" esa
|
||||
b244 sqdr RRE_F0 "square root (long)" esa
|
||||
b245 sqer RRE_F0 "square root (short)" esa
|
||||
1b sr RR_RR "subtract" esa
|
||||
8a sra RS_R0RD "shift right single" esa
|
||||
8e srda RS_R0RD "shift right double (long)" esa
|
||||
8c srdl RS_R0RD "shift right double logical (long)" esa
|
||||
88 srl RS_R0RD "shift right single logical" esa
|
||||
f0 srp SS_LIRDRD "shift and round decimal" esa
|
||||
b25e srst RRE_RR "search string" esa
|
||||
b225 ssar RRE_R0 "set secondary ASN" esa
|
||||
b233 ssch S_RD "start subchannel" esa
|
||||
b22b sske RRE_RR "set storage key extended" esa
|
||||
80 ssm S_RD "set system mask" esa
|
||||
50 st RX_RRRD "store" esa
|
||||
9b stam RS_AARD "store access multiple" esa
|
||||
b212 stap S_RD "store CPU address" esa
|
||||
42 stc RX_RRRD "store character" esa
|
||||
b205 stck S_RD "store clock" esa
|
||||
b207 stckc S_RD "store clock comparator" esa
|
||||
be stcm RS_RURD "store characters under mask" esa
|
||||
b23a stcps S_RD "store channel path status" esa
|
||||
b239 stcrw S_RD "store channel report word" esa
|
||||
b6 stctl RS_CCRD "store control" esa
|
||||
60 std RX_FRRD "store (long)" esa
|
||||
70 ste RX_FRRD "store (short)" esa
|
||||
40 sth RX_RRRD "store halfword" esa
|
||||
b202 stidp S_RD "store CPU id" esa
|
||||
90 stm RS_RRRD "store multiple" esa
|
||||
ac stnsm SI_URD "store then AND system mask" esa
|
||||
ad stosm SI_URD "store then OR system mask" esa
|
||||
b209 stpt S_RD "store CPU timer" esa
|
||||
b211 stpx S_RD "store prefix" esa
|
||||
b234 stsch S_RD "store subchannel" esa
|
||||
b246 stura RRE_RR "store using real address" esa
|
||||
7f su RX_FRRD "subtract unnormalized (short)" esa
|
||||
3f sur RR_FF "subtract unnormalized (short)" esa
|
||||
0a svc RR_U0 "supervisor call" esa
|
||||
6f sw RX_FRRD "subtract unnormalized (long)" esa
|
||||
2f swr RR_FF "subtract unnormalized (long)" esa
|
||||
37 sxr RR_FF "subtract normalized (ext.)" esa
|
||||
b24c tar RRE_AR "test access" esa
|
||||
b22c tb RRE_0R "test block" esa
|
||||
91 tm SI_URD "test under mask" esa
|
||||
b236 tpi S_RD "test pending interruption" esa
|
||||
e501 tprot SSE_RDRD "test protection" esa
|
||||
dc tr SS_L0RDRD "translate" esa
|
||||
99 trace RS_RRRD "trace" esa
|
||||
dd trt SS_L0RDRD "translate and test" esa
|
||||
93 ts S_RD "test and set" esa
|
||||
b235 tsch S_RD "test subchannel" esa
|
||||
f3 unpk SS_LLRDRD "unpack" esa
|
||||
0102 upt E "update tree" esa
|
||||
57 x RX_RRRD "exclusive OR" esa
|
||||
d7 xc SS_L0RDRD "exclusive OR" esa
|
||||
97 xi SI_URD "exclusive OR" esa
|
||||
17 xr RR_RR "exclusive OR" esa
|
||||
f8 zap SS_LLRDRD "zero and add" esa
|
||||
a70a ahi RI_RI "add halfword immediate" esa
|
||||
84 brxh RSI_RRP "branch relative on index high" esa
|
||||
85 brxle RSI_RRP "branch relative on index low or equal" esa
|
||||
a705 bras RI_RP "branch relative and save" esa
|
||||
a704 brc RI_UP "branch relative on condition" esa
|
||||
a706 brct RI_RP "branch relative on count" esa
|
||||
b241 cksm RRE_RR "checksum" esa
|
||||
a70e chi RI_RI "compare halfword immediate" esa
|
||||
a9 clcle RS_RRRD "compare logical long extended" esa
|
||||
a708 lhi RI_RI "load halfword immediate" esa
|
||||
a8 mvcle RS_RRRD "move long extended" esa
|
||||
a70c mhi RI_RI "multiply halfword immediate" esa
|
||||
b252 msr RRE_RR "multiply single" esa
|
||||
71 ms RX_RRRD "multiply single" esa
|
||||
a700 tmh RI_RU "test under mask high" esa
|
||||
a701 tml RI_RU "test under mask low" esa
|
||||
0700 nopr RR_0R "no operation" esa
|
||||
0710 bor RR_0R "branch on overflow / if ones" esa
|
||||
0720 bhr RR_0R "branch on high" esa
|
||||
0720 bpr RR_0R "branch on plus" esa
|
||||
0730 bnler RR_0R "branch on not low or equal" esa
|
||||
0740 blr RR_0R "branch on low" esa
|
||||
0740 bmr RR_0R "branch on minus / if mixed" esa
|
||||
0750 bnher RR_0R "branch on not high or equal" esa
|
||||
0760 blhr RR_0R "branch on low or high" esa
|
||||
0770 bner RR_0R "branch on not equal" esa
|
||||
0770 bnzr RR_0R "branch on not zero / if not zeros" esa
|
||||
0780 ber RR_0R "branch on equal" esa
|
||||
0780 bzr RR_0R "branch on zero / if zeros" esa
|
||||
0790 bnlhr RR_0R "branch on not low or high" esa
|
||||
07a0 bher RR_0R "branch on high or equal" esa
|
||||
07b0 bnlr RR_0R "branch on not low" esa
|
||||
07b0 bnmr RR_0R "branch on not minus / if not mixed" esa
|
||||
07c0 bler RR_0R "brach on low or equal" esa
|
||||
07d0 bnhr RR_0R "branch on not high" esa
|
||||
07d0 bnpr RR_0R "branch on not plus" esa
|
||||
07e0 bnor RR_0R "branch on not overflow / if not ones" esa
|
||||
07f0 br RR_0R "unconditional branch" esa
|
||||
4700 nop RX_0RRD "no operation" esa
|
||||
4710 bo RX_0RRD "branch on overflow / if ones" esa
|
||||
4720 bh RX_0RRD "branch on high" esa
|
||||
4720 bp RX_0RRD "branch on plus" esa
|
||||
4730 bnle RX_0RRD "branch on not low or equal" esa
|
||||
4740 bl RX_0RRD "branch on low" esa
|
||||
4740 bm RX_0RRD "branch on minus / if mixed" esa
|
||||
4750 bnhe RX_0RRD "branch on not high or equal" esa
|
||||
4760 blh RX_0RRD "branch on low or high" esa
|
||||
4770 bne RX_0RRD "branch on not equal" esa
|
||||
4770 bnz RX_0RRD "branch on not zero / if not zeros" esa
|
||||
4780 be RX_0RRD "branch on equal" esa
|
||||
4780 bz RX_0RRD "branch on zero / if zeros" esa
|
||||
4790 bnlh RX_0RRD "branch on not low or high" esa
|
||||
47a0 bhe RX_0RRD "branch on high or equal" esa
|
||||
47b0 bnl RX_0RRD "branch on not low" esa
|
||||
47b0 bnm RX_0RRD "branch on not minus / if not mixed" esa
|
||||
47c0 ble RX_0RRD "branch on low or equal" esa
|
||||
47d0 bnh RX_0RRD "branch on not high" esa
|
||||
47d0 bnp RX_0RRD "branch on not plus" esa
|
||||
47e0 bno RX_0RRD "branch on not overflow / if not ones" esa
|
||||
47f0 b RX_0RRD "unconditional branch" esa
|
||||
a714 jo RI_0P "jump on overflow / if ones" esa
|
||||
a724 jh RI_0P "jump on A high" esa
|
||||
a724 jp RI_0P "jump on plus" esa
|
||||
a734 jnle RI_0P "jump on not low or equal" esa
|
||||
a744 jl RI_0P "jump on A low" esa
|
||||
a744 jm RI_0P "jump on minus / if mixed" esa
|
||||
a754 jnhe RI_0P "jump on not high or equal" esa
|
||||
a764 jlh RI_0P "jump on low or high" esa
|
||||
a774 jne RI_0P "jump on A not equal B" esa
|
||||
a774 jnz RI_0P "jump on not zero / if not zeros" esa
|
||||
a784 je RI_0P "jump on A equal B" esa
|
||||
a784 jz RI_0P "jump on zero / if zeros" esa
|
||||
a794 jnlh RI_0P "jump on not low or high" esa
|
||||
a7a4 jhe RI_0P "jump on high or equal" esa
|
||||
a7b4 jnl RI_0P "jump on A not low" esa
|
||||
a7b4 jnm RI_0P "jump on not minus / if not mixed" esa
|
||||
a7c4 jle RI_0P "jump on low or equal" esa
|
||||
a7d4 jnh RI_0P "jump on A not high" esa
|
||||
a7d4 jnp RI_0P "jump on not plus" esa
|
||||
a7e4 jno RI_0P "jump on not overflow / if not ones" esa
|
||||
a7f4 j RI_0P "jump" esa
|
||||
b34a axbr RRE_FF "add extended bfp" esa
|
||||
b31a adbr RRE_FF "add long bfp" esa
|
||||
ed000000001a adb RXE_FRRD "add long bfp" esa
|
||||
b30a aebr RRE_FF "add short bfp" esa
|
||||
ed000000000a aeb RXE_FRRD "add short bfp" esa
|
||||
b349 cxbr RRE_FF "compare extended bfp" esa
|
||||
b319 cdbr RRE_FF "compare long bfp" esa
|
||||
ed0000000019 cdb RXE_FRRD "compare long bfp" esa
|
||||
b309 cebr RRE_FF "compare short bfp" esa
|
||||
ed0000000009 ceb RXE_FRRD "compare short bfp" esa
|
||||
b348 kxbr RRE_FF "compare and signal extended bfp" esa
|
||||
b318 kdbr RRE_FF "compare and signal long bfp" esa
|
||||
ed0000000018 kdb RXE_FRRD "compare and signal long bfp" esa
|
||||
b308 kebr RRE_FF "compare and signal short bfp" esa
|
||||
ed0000000008 keb RXE_FRRD "compare and signal short bfp" esa
|
||||
b396 cxfbr RRE_RF "convert from fixed 32 to extended bfp" esa
|
||||
b395 cdfbr RRE_RF "convert from fixed 32 to long bfp" esa
|
||||
b394 cefbr RRE_RF "convert from fixed 32 to short bfp" esa
|
||||
b39a cfxbr RRF_U0FR "convert to fixed extended bfp to 32" esa
|
||||
b399 cfdbr RRF_U0FR "convert to fixed long bfp to 32" esa
|
||||
b398 cfebr RRF_U0FR "convert to fixed short bfp to 32" esa
|
||||
b34d dxbr RRE_FF "divide extended bfp" esa
|
||||
b31d ddbr RRE_FF "divide long bfp" esa
|
||||
ed000000001d ddb RXE_FRRD "divide long bfp" esa
|
||||
b30d debr RRE_FF "divide short bfp" esa
|
||||
ed000000000d deb RXE_FRRD "divide short bfp" esa
|
||||
b35b didbr RRF_FUFF "divide to integer long bfp" esa
|
||||
b353 diebr RRF_FUFF "divide to integer short bfp" esa
|
||||
b38c efpc RRE_RR "extract fpc" esa
|
||||
b342 ltxbr RRE_FF "load and test extended bfp" esa
|
||||
b312 ltdbr RRE_FF "load and test long bfp" esa
|
||||
b302 ltebr RRE_FF "load and test short bfp" esa
|
||||
b343 lcxbr RRE_FF "load complement extended bfp" esa
|
||||
b313 lcdbr RRE_FF "load complement long bfp" esa
|
||||
b303 lcebr RRE_FF "load complement short bfp" esa
|
||||
b347 fixbr RRF_U0FF "load fp integer extended bfp" esa
|
||||
b35f fidbr RRF_U0FF "load fp integer long bfp" esa
|
||||
b357 fiebr RRF_U0FF "load fp integer short bfp" esa
|
||||
b29d lfpc S_RD "load fpc" esa
|
||||
b305 lxdbr RRE_FF "load lengthened long to extended bfp" esa
|
||||
ed0000000005 lxdb RXE_FRRD "load lengthened long to extended bfp" esa
|
||||
b306 lxebr RRE_FF "load lengthened short to extended bfp" esa
|
||||
ed0000000006 lxeb RXE_FRRD "load lengthened short to extended bfp" esa
|
||||
b304 ldebr RRE_FF "load lengthened short to long bfp" esa
|
||||
ed0000000004 ldeb RXE_FRRD "load lengthened short to long bfp" esa
|
||||
b341 lnxbr RRE_FF "load negative extended bfp" esa
|
||||
b311 lndbr RRE_FF "load negative long bfp" esa
|
||||
b301 lnebr RRE_FF "load negative short bfp" esa
|
||||
b340 lpxbr RRE_FF "load positive extended bfp" esa
|
||||
b310 lpdbr RRE_FF "load positive long bfp" esa
|
||||
b300 lpebr RRE_FF "load positive short bfp" esa
|
||||
b345 ldxbr RRE_FF "load rounded extended to long bfp" esa
|
||||
b346 lexbr RRE_FF "load rounded extended to short bfp" esa
|
||||
b344 ledbr RRE_FF "load rounded long to short bfp" esa
|
||||
b34c mxbr RRE_FF "multiply extended bfp" esa
|
||||
b31c mdbr RRE_FF "multiply long bfp" esa
|
||||
ed000000001c mdb RXE_FRRD "multiply long bfp" esa
|
||||
b307 mxdbr RRE_FF "multiply long to extended bfp" esa
|
||||
ed0000000007 mxdb RXE_FRRD "multiply long to extended bfp" esa
|
||||
b317 meebr RRE_FF "multiply short bfp" esa
|
||||
ed0000000017 meeb RXE_FRRD "multiply short bfp" esa
|
||||
b30c mdebr RRE_FF "multiply short to long bfp" esa
|
||||
ed000000000c mdeb RXE_FRRD "multiply short to long bfp" esa
|
||||
b31e madbr RRF_F0FF "multiply and add long bfp" esa
|
||||
ed000000001e madb RXF_FRRDF "multiply and add long bfp" esa
|
||||
b30e maebr RRF_F0FF "multiply and add short bfp" esa
|
||||
ed000000000e maeb RXF_FRRDF "multiply and add short bfp" esa
|
||||
b31f msdbr RRF_F0FF "multiply and subtract long bfp" esa
|
||||
ed000000001f msdb RXF_FRRDF "multiply and subtract long bfp" esa
|
||||
b30f msebr RRF_F0FF "multiply and subtract short bfp" esa
|
||||
ed000000000f mseb RXF_FRRDF "multiply and subtract short bfp" esa
|
||||
b384 sfpc RRE_RR "set fpc" esa
|
||||
b299 srnm S_RD "set rounding mode" esa
|
||||
b316 sqxbr RRE_FF "square root extended bfp" esa
|
||||
b315 sqdbr RRE_FF "square root long bfp" esa
|
||||
ed0000000015 sqdb RXE_FRRD "square root long bfp" esa
|
||||
b314 sqebr RRE_FF "square root short bfp" esa
|
||||
ed0000000014 sqeb RXE_FRRD "square root short bfp" esa
|
||||
b29c stfpc S_RD "store fpc" esa
|
||||
b34b sxbr RRE_FF "subtract extended bfp" esa
|
||||
b31b sdbr RRE_FF "subtract long bfp" esa
|
||||
ed000000001b sdb RXE_FRRD "subtract long bfp" esa
|
||||
b30b sebr RRE_FF "subtract short bfp" esa
|
||||
ed000000000b seb RXE_FRRD "subtract short bfp" esa
|
||||
ed0000000012 tcxb RXE_FRRD "test data class extended bfp" esa
|
||||
ed0000000011 tcdb RXE_FRRD "test data class long bfp" esa
|
||||
ed0000000010 tceb RXE_FRRD "test data class short bfp" esa
|
||||
b274 siga S_RD "signal adapter" esa
|
||||
# are the following instructions confidential ??
|
||||
b2a6 cuutf RRE_RR "convert unicode to utf-8" esa
|
||||
b2a7 cutfu RRE_RR "convert utf-8 to unicode" esa
|
||||
ee plo SS_RRRDRD2 "perform locked operation" esa
|
||||
b25a bsa RRE_RR "branch and set authority" esa
|
||||
b277 rp S_RD "resume program" esa
|
||||
0107 sckpf E "set clock programmable field" esa
|
||||
b27d stsi S_RD "store system information" esa
|
||||
01ff trap2 E "trap" esa
|
||||
b2ff trap4 S_RD "trap4" esa
|
||||
# Here are the new esame instructions:
|
||||
b946 bctgr RRE_RR "branch on count 64" esame
|
||||
b900 lpgr RRE_RR "load positive 64" esame
|
||||
b910 lpgfr RRE_RR "load positive 64<32" esame
|
||||
b901 lngr RRE_RR "load negative 64" esame
|
||||
b911 lngfr RRE_RR "load negative 64<32" esame
|
||||
b902 ltgr RRE_RR "load and test 64" esame
|
||||
b912 ltgfr RRE_RR "load and test 64<32" esame
|
||||
b903 lcgr RRE_RR "load complement 64" esame
|
||||
b913 lcgfr RRE_RR "load complement 64<32" esame
|
||||
b980 ngr RRE_RR "and 64" esame
|
||||
b921 clgr RRE_RR "compare logical 64" esame
|
||||
b931 clgfr RRE_RR "compare logical 64<32" esame
|
||||
b981 ogr RRE_RR "or 64" esame
|
||||
b982 xgr RRE_RR "exclusive or 64" esame
|
||||
b904 lgr RRE_RR "load 64" esame
|
||||
b914 lgfr RRE_RR "load 64<32" esame
|
||||
b920 cgr RRE_RR "compare 64" esame
|
||||
b930 cgfr RRE_RR "compare 64<32" esame
|
||||
b908 agr RRE_RR "add 64" esame
|
||||
b918 agfr RRE_RR "add 64<32" esame
|
||||
b909 sgr RRE_RR "subtract 64" esame
|
||||
b919 sgfr RRE_RR "subtract 64<32" esame
|
||||
b90a algr RRE_RR "add logical 64" esame
|
||||
b91a algfr RRE_RR "add logical 64<32" esame
|
||||
b90b slgr RRE_RR "subtract logical 64" esame
|
||||
b91b slgfr RRE_RR "subtract logical 64<32" esame
|
||||
e30000000046 bctg RXE_RRRD "branch on count 64" esame
|
||||
e3000000002e cvdg RXE_RRRD "convert to decimal 64" esame
|
||||
e3000000000e cvbg RXE_RRRD "convert to binary 64" esame
|
||||
e30000000024 stg RXE_RRRD "store 64" esame
|
||||
e30000000080 ng RXE_RRRD "and 64" esame
|
||||
e30000000021 clg RXE_RRRD "compare logical 64" esame
|
||||
e30000000031 clgf RXE_RRRD "comparee logical 64<32" esame
|
||||
e30000000081 og RXE_RRRD "or 64" esame
|
||||
e30000000082 xg RXE_RRRD "exclusive or 64" esame
|
||||
e30000000004 lg RXE_RRRD "load 64" esame
|
||||
e30000000014 lgf RXE_RRRD "load 64<32" esame
|
||||
e30000000015 lgh RXE_RRRD "load halfword 64" esame
|
||||
e30000000020 cg RXE_RRRD "compare 64" esame
|
||||
e30000000030 cgf RXE_RRRD "compare 64<32" esame
|
||||
e30000000008 ag RXE_RRRD "add 64" esame
|
||||
e30000000018 agf RXE_RRRD "add 64<32" esame
|
||||
e30000000009 sg RXE_RRRD "subtract 64" esame
|
||||
e30000000019 sgf RXE_RRRD "subtract 64<32" esame
|
||||
e3000000000a alg RXE_RRRD "add logical 64" esame
|
||||
e3000000001a algf RXE_RRRD "add logical 64<32" esame
|
||||
e3000000000b slg RXE_RRRD "subtract logical 64" esame
|
||||
e3000000001b slgf RXE_RRRD "subtract logical 64<32" esame
|
||||
e3000000000c msg RXE_RRRD "multiply single 64" esame
|
||||
e3000000001c msgf RXE_RRRD "multiply single 64<32" esame
|
||||
ec0000000044 brxhg RIE_RRP "branch relative on index high 64" esame
|
||||
ec0000000045 brxlg RIE_RRP "branch relative on index low or equal 64" esame
|
||||
eb0000000044 bxhg RSE_RRRD "branch on index high 64" esame
|
||||
eb0000000045 bxleg RSE_RRRD "branch on index low or equal 64" esame
|
||||
eb000000000c srlg RSE_RRRD "shift right single logical 64" esame
|
||||
eb000000000d sllg RSE_RRRD "shift left single logical 64" esame
|
||||
eb000000000a srag RSE_RRRD "shift right single 64" esame
|
||||
eb000000000b slag RSE_RRRD "shift left single 64" esame
|
||||
eb0000000024 stmg RSE_RRRD "store multiple 64" esame
|
||||
eb0000000026 stmh RSE_RRRD "store multiple high" esame
|
||||
eb0000000004 lmg RSE_RRRD "load multiple 64" esame
|
||||
eb0000000096 lmh RSE_RRRD "load multiple high" esame
|
||||
ef lmd SS_RRRDRD3 "load multiple disjoint" esame
|
||||
eb000000000f tracg RSE_RRRD "trace 64" esame
|
||||
e30000000003 lrag RXE_RRRD "load real address 64" esame
|
||||
e50000000002 strag SSE_RDRD "store read address" esame
|
||||
eb0000000025 stctg RSE_RRRD "store control 64" esame
|
||||
eb000000002f lctlg RSE_RRRD "load control 64" esame
|
||||
eb0000000030 csg RSE_RRRD "compare and swap 64" esame
|
||||
eb000000003e cdsg RSE_RRRD "compare double and swap 64" esame
|
||||
eb0000000020 clmh RSE_RURD "compare logical characters under mask high" esame
|
||||
eb000000002c stcmh RSE_RURD "store characters under mask high" esame
|
||||
eb0000000080 icmh RSE_RURD "insert characters under mask high" esame
|
||||
a700 tmlh RI_RU "test under mask low high" esame
|
||||
a702 tmhh RI_RU "test under mask high high" esame
|
||||
a701 tmll RI_RU "test under mask low low" esame
|
||||
a703 tmhl RI_RU "test under mask high low" esame
|
||||
c004 brcl RIL_UP "branch relative on condition long" esame
|
||||
c014 jgo RIL_0P "jump long on overflow / if ones" esame
|
||||
c024 jgh RIL_0P "jump long on high" esame
|
||||
c024 jgp RIL_0P "jump long on plus" esame
|
||||
c034 jgnle RIL_0P "jump long on not low or equal" esame
|
||||
c044 jgl RIL_0P "jump long on low" esame
|
||||
c044 jgm RIL_0P "jump long on minus / if mixed" esame
|
||||
c054 jgnhe RIL_0P "jump long on not high or equal" esame
|
||||
c064 jglh RIL_0P "jump long on low or high" esame
|
||||
c074 jgne RIL_0P "jump long on not equal" esame
|
||||
c074 jgnz RIL_0P "jump long on not zero / if not zeros" esame
|
||||
c084 jge RIL_0P "jump long on equal" esame
|
||||
c084 jgz RIL_0P "jump long on zero / if zeros" esame
|
||||
c094 jgnlh RIL_0P "jump long on not low or high" esame
|
||||
c0a4 jghe RIL_0P "jump long on high or equal" esame
|
||||
c0b4 jgnl RIL_0P "jump long on not low" esame
|
||||
c0b4 jgnm RIL_0P "jump long on not minus / if not mixed" esame
|
||||
c0c4 jgle RIL_0P "jump long on low or equal" esame
|
||||
c0d4 jgnh RIL_0P "jump long on not high" esame
|
||||
c0d4 jgnp RIL_0P "jump long on not plus" esame
|
||||
c0e4 jgno RIL_0P "jump long on not overflow / if not ones" esame
|
||||
c0f4 jg RIL_0P "jump long" esame
|
||||
c005 brasl RIL_RP "branch relative and save long" esame
|
||||
a707 brctg RI_RP "branch relative on count 64" esame
|
||||
a709 lghi RI_RI "load halfword immediate 64" esame
|
||||
a70b aghi RI_RI "add halfword immediate 64" esame
|
||||
a70d mghi RI_RI "multiply halfword immediate 64" esame
|
||||
a70f cghi RI_RI "compare halfword immediate 64" esame
|
||||
b925 sturg RRE_RR "store using real address 64" esame
|
||||
b90e eregg RRE_RR "extract stacked registers 64" esame
|
||||
b905 lurag RRE_RR "load using real address 64" esame
|
||||
b90c msgr RRE_RR "multiply single 64" esame
|
||||
b91c msgfr RRE_RR "multiply single 64<32" esame
|
||||
b3a4 cegbr RRE_RR "convert from fixed 64 to short bfp" esame
|
||||
b3a5 cdgbr RRE_RR "convert from fixed 64 to long bfp" esame
|
||||
b3a6 cxgbr RRE_RR "convert from fixed 64 to extended bfp" esame
|
||||
b3a8 cgebr RRF_U0FR "convert to fixed short bfd to 64" esame
|
||||
b3a9 cgdbr RRF_U0FR "convert to fixed long bfp to 64" esame
|
||||
b3aa cgxbr RRF_U0FR "convert to fixed extended bfp to 64" esame
|
||||
b3c4 cegr RRE_RR "convert from fixed 64 to short hfp" esame
|
||||
b3c5 cdgr RRE_RR "convert from fixed 64 to long hfp" esame
|
||||
b3c6 cxgr RRE_RR "convert from fixed 64 to extended hfp" esame
|
||||
b3c8 cger RRF_U0FR "convert to fixed short hfp to 64" esame
|
||||
b3c9 cgdr RRF_U0FR "convert to fixed long hfp to 64" esame
|
||||
b3ca cgxr RRF_U0FR "convert to fixed extended hfp to 64" esame
|
||||
010b tam E "test addressing mode" esame
|
||||
010c sam24 E "set addressing mode 24" esame
|
||||
010d sam31 E "set addressing mode 31" esame
|
||||
010e sam64 E "set addressing mode 64" esame
|
||||
a500 iihh RI_RU "insert immediate high high" esame
|
||||
a501 iihl RI_RU "insert immediate high low" esame
|
||||
a502 iilh RI_RU "insert immediate low high" esame
|
||||
a503 iill RI_RU "insert immediate low low" esame
|
||||
a504 nihh RI_RU "and immediate high high" esame
|
||||
a505 nihl RI_RU "and immediate high low" esame
|
||||
a506 nilh RI_RU "and immediate low high" esame
|
||||
a507 nill RI_RU "and immediate low low" esame
|
||||
a508 oihh RI_RU "or immediate high high" esame
|
||||
a509 oihl RI_RU "or immediate high low" esame
|
||||
a50a oilh RI_RU "or immediate low high" esame
|
||||
a50b oill RI_RU "or immediate low low" esame
|
||||
a50c llihh RI_RU "load logical immediate high high" esame
|
||||
a50d llihl RI_RU "load logical immediate high low" esame
|
||||
a50e llilh RI_RU "load logical immediate low high" esame
|
||||
a50f llill RI_RU "load logical immediate low low" esame
|
||||
b2b1 stfl S_RD "store facility list" esame
|
||||
b2b2 lpswe S_RD "load psw extended" esame
|
||||
b90d dsgr RRE_RR "divide single 64" esame
|
||||
b90f lrvgr RRE_RR "load reversed 64" esame
|
||||
b916 llgfr RRE_RR "load logical 64<32" esame
|
||||
b917 llgtr RRE_RR "load logical thirty one bits" esame
|
||||
b91d dsgfr RRE_RR "divide single 64<32" esame
|
||||
b91f lrvr RRE_RR "load reversed 32" esame
|
||||
b986 mlgr RRE_RR "multiply logical 64" esame
|
||||
b987 dlgr RRE_RR "divide logical 64" esame
|
||||
b988 alcgr RRE_RR "add logical with carry 64" esame
|
||||
b989 slbgr RRE_RR "subtract logical with borrow 64" esame
|
||||
b98d epsw RRE_RR "extract psw" esame
|
||||
b996 mlr RRE_RR "multiply logical 32" esame
|
||||
b997 dlr RRE_RR "divide logical 32" esame
|
||||
b998 alcr RRE_RR "add logical with carry 32" esame
|
||||
b999 slbr RRE_RR "subtract logical with borrow 32" esame
|
||||
b99d esea RRE_R0 "extract and set extended authority" esame
|
||||
c000 larl RIL_RP "load address relative long" esame
|
||||
e3000000000d dsg RXE_RRRD "divide single 64" esame
|
||||
e3000000000f lrvg RXE_RRRD "load reversed 64" esame
|
||||
e30000000016 llgf RXE_RRRD "load logical 64<32" esame
|
||||
e30000000017 llgt RXE_RRRD "load logical thirty one bits" esame
|
||||
e3000000001d dsgf RXE_RRRD "divide single 64<32" esame
|
||||
e3000000001e lrv RXE_RRRD "load reversed 32" esame
|
||||
e3000000001f lrvh RXE_RRRD "load reversed 16" esame
|
||||
e3000000002f strvg RXE_RRRD "store reversed 64" esame
|
||||
e3000000003e strv RXE_RRRD "store reversed 32" esame
|
||||
e3000000003f strvh RXE_RRRD "store reversed 64" esame
|
||||
e30000000086 mlg RXE_RRRD "multiply logical 64" esame
|
||||
e30000000087 dlg RXE_RRRD "divide logical 64" esame
|
||||
e30000000088 alcg RXE_RRRD "add logical with carry 64" esame
|
||||
e30000000089 slbg RXE_RRRD "subtract logical with borrow 64" esame
|
||||
e3000000008e stpq RXE_RRRD "store pair to quadword" esame
|
||||
e3000000008f lpq RXE_RRRD "load pair from quadword" esame
|
||||
e30000000096 ml RXE_RRRD "multiply logical 32" esame
|
||||
e30000000097 dl RXE_RRRD "divide logical 32" esame
|
||||
e30000000098 alc RXE_RRRD "add logical with carry 32" esame
|
||||
e30000000099 slb RXE_RRRD "subtract logical with borrow 32" esame
|
||||
e30000000090 llgc RXE_RRRD "load logical character" esame
|
||||
e30000000091 llgh RXE_RRRD "load logical halfword" esame
|
||||
eb000000001c rllg RSE_RRRD "rotate left single logical 64" esame
|
||||
eb000000001d rll RSE_RRRD "rotate left single logical 32" esame
|
||||
b278 stcke S_RD "store clock extended" esame
|
||||
b2a5 tre RRE_RR "translate extended" esame
|
||||
eb000000008e mvclu RSE_RRRD "move long unicode" esame
|
||||
e9 pka SS_L0RDRD "pack ascii" esame
|
||||
e1 pku SS_L0RDRD "pack unicode" esame
|
||||
b993 troo RRE_RR "translate one to one" esame
|
||||
b992 trot RRE_RR "translate one to two" esame
|
||||
b991 trto RRE_RR "translate two to one" esame
|
||||
b990 trtt RRE_RR "translate two to two" esame
|
||||
ea unpka SS_L0RDRD "unpack ascii" esame
|
||||
e2 unpku SS_L0RDRD "unpack unicode" esame
|
||||
b358 thder RRE_RR "convert short bfp to long hfp" esame
|
||||
b359 thdr RRE_RR "convert long bfp to long hfp" esame
|
||||
b350 tbedr RRF_U0FF "convert long hfp to short bfp" esame
|
||||
b351 tbdr RRF_U0FF "convert long hfp to long bfp" esame
|
||||
b374 lzer RRE_R0 "load short zero" esame
|
||||
b375 lzdr RRE_R0 "load long zero" esame
|
||||
b376 lzxr RRE_R0 "load extended zero" esame
|
Loading…
Reference in New Issue
Block a user