diff -uprN binutils-2.16.91.0.2/bfd/aix5ppc-core.c binutils-2.16.91.0.3/bfd/aix5ppc-core.c --- binutils-2.16.91.0.2/bfd/aix5ppc-core.c 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/aix5ppc-core.c 2005-08-22 12:27:41.000000000 -0700 @@ -1,5 +1,5 @@ /* IBM RS/6000 "XCOFF" back-end for BFD. - Copyright 2001, 2002, 2003, 2004 + Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Written by Tom Rix Contributed by Red Hat Inc. @@ -55,7 +55,7 @@ xcoff64_core_p (bfd *abfd) bfd_vma ld_offset; bfd_size_type i; struct vm_infox vminfo; - bfd_target *return_value = NULL; + const bfd_target *return_value = NULL; /* Get the header. */ if (bfd_seek (abfd, 0, SEEK_SET) != 0) @@ -111,7 +111,10 @@ xcoff64_core_p (bfd *abfd) return return_value; memcpy (new_core_hdr, &core, sizeof (struct core_dumpxx)); - core_hdr(abfd) = (char *)new_core_hdr; + /* The core_hdr() macro is no longer used here because it would + expand to code relying on gcc's cast-as-lvalue extension, + which was removed in gcc 4.0. */ + abfd->tdata.any = new_core_hdr; /* .stack section. */ sec = bfd_make_section_anyway (abfd, ".stack"); diff -uprN binutils-2.16.91.0.2/bfd/aoutf1.h binutils-2.16.91.0.3/bfd/aoutf1.h --- binutils-2.16.91.0.2/bfd/aoutf1.h 2005-05-10 15:46:40.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/aoutf1.h 2005-08-22 12:27:41.000000000 -0700 @@ -143,11 +143,6 @@ sunos_set_arch_mach (bfd *abfd, enum mac machine = 0; break; - case M_29K: - arch = bfd_arch_a29k; - machine = 0; - break; - case M_HPUX: arch = bfd_arch_m68k; machine = 0; @@ -173,7 +168,6 @@ choose_reloc_size (bfd *abfd) switch (bfd_get_arch (abfd)) { case bfd_arch_sparc: - case bfd_arch_a29k: obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE; break; default: @@ -229,9 +223,6 @@ sunos_write_object_contents (bfd *abfd) case bfd_arch_i386: N_SET_MACHTYPE (*execp, M_386); break; - case bfd_arch_a29k: - N_SET_MACHTYPE (*execp, M_29K); - break; default: N_SET_MACHTYPE (*execp, M_UNKNOWN); } diff -uprN binutils-2.16.91.0.2/bfd/aoutx.h binutils-2.16.91.0.3/bfd/aoutx.h --- binutils-2.16.91.0.2/bfd/aoutx.h 2005-05-10 15:46:40.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/aoutx.h 2005-08-22 12:27:41.000000000 -0700 @@ -730,11 +730,6 @@ NAME (aout, machine_type) (enum bfd_arch arch_flags = M_386; break; - case bfd_arch_a29k: - if (machine == 0) - arch_flags = M_29K; - break; - case bfd_arch_arm: if (machine == 0) arch_flags = M_ARM; @@ -848,7 +843,6 @@ NAME (aout, set_arch_mach) (bfd *abfd, switch (arch) { case bfd_arch_sparc: - case bfd_arch_a29k: case bfd_arch_mips: obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE; break; diff -uprN binutils-2.16.91.0.2/bfd/archures.c binutils-2.16.91.0.3/bfd/archures.c --- binutils-2.16.91.0.2/bfd/archures.c 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/archures.c 2005-08-22 12:27:41.000000000 -0700 @@ -111,7 +111,6 @@ DESCRIPTION . . bfd_arch_or32, {* OpenRISC 32 *} . -. bfd_arch_a29k, {* AMD 29000 *} . bfd_arch_sparc, {* SPARC *} .#define bfd_mach_sparc 1 .{* The difference between v8plus and v9 is that v9 is a true 64 bit env. *} @@ -170,7 +169,6 @@ DESCRIPTION . bfd_arch_i860, {* Intel 860 *} . bfd_arch_i370, {* IBM 360/370 Mainframes *} . bfd_arch_romp, {* IBM ROMP PC/RT *} -. bfd_arch_alliant, {* Alliant *} . bfd_arch_convex, {* Convex *} . bfd_arch_m88k, {* Motorola 88xxx *} . bfd_arch_m98k, {* Motorola 98xxx *} @@ -352,6 +350,7 @@ DESCRIPTION .#define bfd_mach_msp14 14 .#define bfd_mach_msp15 15 .#define bfd_mach_msp16 16 +.#define bfd_mach_msp21 21 .#define bfd_mach_msp31 31 .#define bfd_mach_msp32 32 .#define bfd_mach_msp33 33 @@ -402,7 +401,6 @@ DESCRIPTION . */ -extern const bfd_arch_info_type bfd_a29k_arch; extern const bfd_arch_info_type bfd_alpha_arch; extern const bfd_arch_info_type bfd_arc_arch; extern const bfd_arch_info_type bfd_arm_arch; @@ -467,7 +465,6 @@ static const bfd_arch_info_type * const #ifdef SELECT_ARCHITECTURES SELECT_ARCHITECTURES, #else - &bfd_a29k_arch, &bfd_alpha_arch, &bfd_arc_arch, &bfd_arm_arch, diff -uprN binutils-2.16.91.0.2/bfd/bfd.c binutils-2.16.91.0.3/bfd/bfd.c --- binutils-2.16.91.0.2/bfd/bfd.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/bfd.c 2005-08-22 12:27:41.000000000 -0700 @@ -1508,3 +1508,29 @@ bfd_preserve_finish (bfd *abfd ATTRIBUTE objalloc. */ bfd_hash_table_free (&preserve->section_htab); } + +/* +FUNCTION + bfd_hide_symbol + +SYNOPSIS + void bfd_hide_symbol (bfd *, + struct bfd_link_info *, + struct bfd_link_hash_entry *, + bfd_boolean); + +DESCRIPTION + This function hides a symbol so that it won't be exported. + +*/ + +void +bfd_hide_symbol (bfd *abfd, + struct bfd_link_info *link_info, + struct bfd_link_hash_entry *h, + bfd_boolean force_local) +{ + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) + (get_elf_backend_data (abfd)->elf_backend_hide_symbol) + (link_info, (struct elf_link_hash_entry *) h, force_local); +} diff -uprN binutils-2.16.91.0.2/bfd/bfd-in2.h binutils-2.16.91.0.3/bfd/bfd-in2.h --- binutils-2.16.91.0.2/bfd/bfd-in2.h 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/bfd-in2.h 2005-08-22 12:27:41.000000000 -0700 @@ -663,6 +663,8 @@ extern struct bfd_link_needed_list *bfd_ (bfd *, struct bfd_link_info *); extern bfd_boolean bfd_elf_discard_info (bfd *, struct bfd_link_info *); +extern unsigned int _bfd_elf_default_action_discarded + (struct bfd_section *); /* Return an upper bound on the number of bytes required to store a copy of ABFD's program header table entries. Return -1 if an error @@ -707,13 +709,7 @@ extern int bfd_get_sign_extend_vma extern struct bfd_section *_bfd_elf_tls_setup (bfd *, struct bfd_link_info *); -extern void _bfd_elf_provide_symbol - (struct bfd_link_info *, const char *, bfd_vma, struct bfd_section *); - -extern void _bfd_elf_provide_section_bound_symbols - (struct bfd_link_info *, struct bfd_section *, const char *, const char *); - -extern void _bfd_elf_fix_excluded_sec_syms +extern void _bfd_fix_excluded_sec_syms (bfd *, struct bfd_link_info *); extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs @@ -1551,6 +1547,47 @@ extern const struct bfd_symbol * const b #define bfd_section_removed_from_list(ABFD, S) \ ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S)) +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, SYM_PTR, NAME, IDX) \ + /* name, id, index, next, prev, flags, user_set_vma, */ \ + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ + \ + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \ + 0, 0, 1, 0, \ + \ + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ + 0, 0, 0, 0, \ + \ + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \ + 0, 0, 0, \ + \ + /* vma, lma, size, rawsize */ \ + 0, 0, 0, 0, \ + \ + /* output_offset, output_section, alignment_power, */ \ + 0, (struct bfd_section *) &SEC, 0, \ + \ + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \ + NULL, NULL, 0, 0, 0, \ + \ + /* line_filepos, userdata, contents, lineno, lineno_count, */ \ + 0, NULL, NULL, NULL, 0, \ + \ + /* entsize, kept_section, moving_line_filepos, */ \ + 0, NULL, 0, \ + \ + /* target_index, used_by_bfd, constructor_chain, owner, */ \ + 0, NULL, NULL, NULL, \ + \ + /* symbol, */ \ + (struct bfd_symbol *) SYM, \ + \ + /* symbol_ptr_ptr, */ \ + (struct bfd_symbol **) SYM_PTR, \ + \ + /* map_head, map_tail */ \ + { NULL }, { NULL } \ + } + void bfd_section_list_clear (bfd *); asection *bfd_get_section_by_name (bfd *abfd, const char *name); @@ -1658,7 +1695,6 @@ enum bfd_architecture bfd_arch_or32, /* OpenRISC 32 */ - bfd_arch_a29k, /* AMD 29000 */ bfd_arch_sparc, /* SPARC */ #define bfd_mach_sparc 1 /* The difference between v8plus and v9 is that v9 is a true 64 bit env. */ @@ -1717,7 +1753,6 @@ enum bfd_architecture bfd_arch_i860, /* Intel 860 */ bfd_arch_i370, /* IBM 360/370 Mainframes */ bfd_arch_romp, /* IBM ROMP PC/RT */ - bfd_arch_alliant, /* Alliant */ bfd_arch_convex, /* Convex */ bfd_arch_m88k, /* Motorola 88xxx */ bfd_arch_m98k, /* Motorola 98xxx */ @@ -1899,6 +1934,7 @@ enum bfd_architecture #define bfd_mach_msp14 14 #define bfd_mach_msp15 15 #define bfd_mach_msp16 16 +#define bfd_mach_msp21 21 #define bfd_mach_msp31 31 #define bfd_mach_msp32 32 #define bfd_mach_msp33 33 @@ -2837,6 +2873,8 @@ pc-relative or some form of GOT-indirect BFD_RELOC_ARM_IMMEDIATE, BFD_RELOC_ARM_ADRL_IMMEDIATE, BFD_RELOC_ARM_T32_IMMEDIATE, + BFD_RELOC_ARM_T32_IMM12, + BFD_RELOC_ARM_T32_ADD_PC12, BFD_RELOC_ARM_SHIFT_IMM, BFD_RELOC_ARM_SMI, BFD_RELOC_ARM_SWI, @@ -3036,23 +3074,7 @@ of the container. */ BFD_RELOC_DLX_JMP26, /* Renesas M16C/M32C Relocations. */ - BFD_RELOC_M16C_8_PCREL8, - BFD_RELOC_M16C_16_PCREL8, - BFD_RELOC_M16C_8_PCREL16, - BFD_RELOC_M16C_8_ELABEL24, - BFD_RELOC_M16C_8_ABS16, - BFD_RELOC_M16C_16_ABS16, - BFD_RELOC_M16C_16_ABS24, - BFD_RELOC_M16C_16_ABS32, - BFD_RELOC_M16C_24_ABS16, - BFD_RELOC_M16C_24_ABS24, - BFD_RELOC_M16C_24_ABS32, - BFD_RELOC_M16C_32_ABS16, - BFD_RELOC_M16C_32_ABS24, - BFD_RELOC_M16C_32_ABS32, - BFD_RELOC_M16C_40_ABS16, - BFD_RELOC_M16C_40_ABS24, - BFD_RELOC_M16C_40_ABS32, + BFD_RELOC_M32C_HI8, /* Renesas M32R (formerly Mitsubishi M32R) relocs. This is a 24 bit absolute address. */ @@ -4463,6 +4485,11 @@ void bfd_preserve_restore (bfd *, struct void bfd_preserve_finish (bfd *, struct bfd_preserve *); +void bfd_hide_symbol (bfd *, + struct bfd_link_info *, + struct bfd_link_hash_entry *, + bfd_boolean); + /* Extracted from archive.c. */ symindex bfd_get_next_mapent (bfd *abfd, symindex previous, carsym **sym); diff -uprN binutils-2.16.91.0.2/bfd/bfd-in.h binutils-2.16.91.0.3/bfd/bfd-in.h --- binutils-2.16.91.0.2/bfd/bfd-in.h 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/bfd-in.h 2005-08-22 12:27:41.000000000 -0700 @@ -656,6 +656,8 @@ extern struct bfd_link_needed_list *bfd_ (bfd *, struct bfd_link_info *); extern bfd_boolean bfd_elf_discard_info (bfd *, struct bfd_link_info *); +extern unsigned int _bfd_elf_default_action_discarded + (struct bfd_section *); /* Return an upper bound on the number of bytes required to store a copy of ABFD's program header table entries. Return -1 if an error @@ -700,13 +702,7 @@ extern int bfd_get_sign_extend_vma extern struct bfd_section *_bfd_elf_tls_setup (bfd *, struct bfd_link_info *); -extern void _bfd_elf_provide_symbol - (struct bfd_link_info *, const char *, bfd_vma, struct bfd_section *); - -extern void _bfd_elf_provide_section_bound_symbols - (struct bfd_link_info *, struct bfd_section *, const char *, const char *); - -extern void _bfd_elf_fix_excluded_sec_syms +extern void _bfd_fix_excluded_sec_syms (bfd *, struct bfd_link_info *); extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs diff -uprN binutils-2.16.91.0.2/bfd/cf-m68klynx.c binutils-2.16.91.0.3/bfd/cf-m68klynx.c --- binutils-2.16.91.0.2/bfd/cf-m68klynx.c 2005-05-10 15:46:41.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/cf-m68klynx.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,28 +0,0 @@ -/* BFD back-end for Motorola M68K COFF LynxOS files. - Copyright 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. - Written by Cygnus Support. - -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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ - -#define TARGET_SYM m68klynx_coff_vec -#define TARGET_NAME "coff-m68k-lynx" -#define LYNXOS -#define COFF_LONG_FILENAMES -#define STATIC_RELOCS -#define COFF_COMMON_ADDEND - -#include "coff-m68k.c" diff -uprN binutils-2.16.91.0.2/bfd/ChangeLog binutils-2.16.91.0.3/bfd/ChangeLog --- binutils-2.16.91.0.2/bfd/ChangeLog 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/ChangeLog 2005-08-22 12:27:41.000000000 -0700 @@ -1,3 +1,434 @@ +2005-08-18 Kaz Kojima + + * config.bfd: Add bfd_elf32_shnbsd_vec and bfd_elf32_shlnbsd_vec + to targ_selvecs for sh5*-*-netbsd* and sh64*-*-netbsd*. + +2005-08-18 Alan Modra + + * coff-a29k.c: Delete. + * cpu-a29k.c: Delete. + * Makefile.am: Remove mention of a29k files. + * aoutf1.h: Remove a29k support. + * aoutx.h: Likewise. + * archures.c: Likewise. + * coffcode.h: Likewise. + * config.bfd: Likewise. + * configure.in: Likewise. + * ieee.c: Likewise. + * mipsbsd.c: Likewise. + * pdp11.c: Likewise. + * sparclynx.c: Likewise. + * targets.c: Likewise. + * Makefile.in: Regenerate. + * configure: Regenerate. + * bfd-in2.h: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2005-08-18 Alan Modra + + * elf-m10300.c (_bfd_mn10300_elf_adjust_dynamic_symbol): Warn on + zero size dynamic variables. + * elf32-arm.c (elf32_arm_adjust_dynamic_symbol): Likewise. + * elf32-cris.c (elf_cris_adjust_dynamic_symbol): Likewise. + * elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Likewise. + * elf32-i370.c (i370_elf_adjust_dynamic_symbol): Likewise. + * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Likewise. + * elf32-m32r.c (m32r_elf_adjust_dynamic_symbol): Likewise. + * elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Likewise. + * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Likewise. + * elf32-s390.c (elf_s390_adjust_dynamic_symbol): Likewise. + * elf32-sh.c (sh_elf_adjust_dynamic_symbol): Likewise. + * elf32-vax.c (elf_vax_adjust_dynamic_symbol): Likewise. + * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. + * elf64-s390.c (elf_s390_adjust_dynamic_symbol): Likewise. + * elf64-sh64.c (sh64_elf64_adjust_dynamic_symbol): Likewise. + * elf64-x86-64.c (elf64_x86_64_adjust_dynamic_symbol): Likewise. + * elfxx-sparc.c (_bfd_sparc_elf_adjust_dynamic_symbol): Likewise. + +2005-08-17 H.J. Lu + + PR binutils/1179 + * dwarf2.c (_bfd_dwarf2_find_nearest_line): Use section lma + instead of vma. + (_bfd_dwarf2_find_line): Likewise. + +2005-08-17 Alan Modra + + * elf64-mmix.c (mmix_elf_add_symbol_hook): Mark reg section + SEC_LINKER_CREATED. + (mmix_elf_final_link): Check that section hasn't already been + removed before removing. + * mmo.c (mmo_scan): Mark reg contents section SEC_LINKER_CREATED. + (mmo_canonicalize_symtab): Likewise for reg section. + +2005-08-17 Alan Modra + + * elf32-cris.c (elf_cris_adjust_gotplt_to_got): Move assert later. + * elfxx-mips.c (_bfd_mips_elf_hide_symbol): Cope with being called + without any got section. + +2005-08-17 Danny Smith + + * cofflink.c (_bfd_coff_generic_relocate_section): Correct + comment. + +2005-08-17 Alan Modra + + * elflink.c (_bfd_elf_define_linkage_sym): Don't call + bfd_elf_link_record_dynamic_symbol. Call elf_backend_hide_symbol. + (_bfd_elf_link_renumber_dynsyms): Formatting. + (struct elf_gc_sweep_symbol_info): New. + (elf_gc_sweep_symbol): Rewrite. + (elf_gc_sweep): Adjust params and elf_gc_sweep_symbol call. + Call _bfd_elf_link_renumber_dynsyms. + (bfd_elf_gc_sections): Adjust elf_gc_sweep call. + +2005-08-16 Alan Modra + + * elf64-ppc.c (ppc64_elf_edit_opd): Don't call dec_dynrel_count + when relocatable. + +2005-08-15 Bob Wilson + + * elf32-xtensa.c (ELF_MACHINE_CODE, ELF_MACHINE_ALT1): Swap values + of EM_XTENSA and EM_XTENSA_OLD. + +2005-08-16 Alan Modra + + * elf-bfd.h (_bfd_elf_define_linkage_sym): Declare. + * elflink.c (_bfd_elf_define_linkage_sym): New function, extracted + from.. + (_bfd_elf_create_got_section): ..here. + (_bfd_elf_link_create_dynamic_sections): Call it for _DYNAMIC. + (_bfd_elf_create_dynamic_sections): ..and _PROCEDURE_LINKAGE_TABLE_. + * elf-m10300.c (_bfd_mn10300_elf_create_got_section): Use + _bfd_elf_define_linkage_sym. + * elf32-frv.c (_frv_create_got_section): Likewise. + * elf64-alpha.c (elf64_alpha_create_dynamic_sections): Likewise. + +2005-08-15 Paul Brook + + * elf32-arm.c (elf32_arm_howto_table_1): Make R_ARM_PLT32 the same as + R_ARM_PC24. + +2005-08-13 John David Anglin + + PR ld/1135 + * elf64-hppa.c (elf64_hppa_special_sections): Add flag definitions for + .plt, .dlt, .sdata, .sbss and .tbss. + +2005-08-12 Dmitry Diky + + * elf32-msp430.c (msp430_elf_relax_delete_bytes): Adjust relocations + referenced by .section + DISPLACEMENT. + +2005-08-10 James E. Wilson + + * dwarf2.c (scan_unit_for_symbols, case DT_AT_location): Verify that + DW_OP_addr is only opcode in location before using it. + +2005-08-09 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_final_link): Reset gp. + +2005-08-09 Rodney Brown + Nick Clifton + + * aix5ppc-core.c (xcoff64_core_p): Constify return_value + variable. Also, do not use core_hdr macro as it evaluates to a + cast of an lvalue which is no longer supported by GCC 4.0. + +2005-08-08 Eric Dönges + + * archures.c (bfd_mach_msp21): New MSP430 machine number. + * bfd-in2.h: Regenerate. + * cpu-msp430.c (arch_info_struct): Add support for msp430x21xx + variants. + +2005-08-07 Nick Clifton + Paul Brook + + PR 1147 + * elf32-arm.c (bfd_elf32_close_and_cleanup): Define. + (elf32_arm_close_and_cleanup): New function - walk over the + sections in the bfd that is being closed removing them from the + list of recorded sections. + (unrecord_section_via_map_over_sections): New helper function. + (record_section_with_arm_elf_section_data): Call bfd_malloc + instead of bfd_alloc. Remove unneeded abfd parameter. + (elf32_arm_new_section_hook): Do not pass bfd to + record_section_with_arm_elf_section_data. + + * elfxx-target.h (bfd_elfNN_close_and_cleanup): Only define if not + already defined by the target. + +2005-08-05 Fred Fish + + * dwarf2.c (read_rangelist): Use addr_size instead of offset_size + to determine how many bytes to read from each rangelist entry. + +2005-08-05 H.J. Lu + + * bfd.c (bfd_hide_symbol): New. + * bfd-in2.h: Regenerated. + +2005-08-04 H.J. Lu + + * elf64-x86-64.c (elf64_x86_64_merge_symbol): When mixing a + large common symbol and a normal common symbol, always turn + the large common symbol into a normal one. + +2005-08-04 Alan Modra + + * elf32-ppc.c (struct elf_linker_section): Replace sym_val field + with sym. + (ppc_elf_relocate_section): Adjust for above. + (create_sdata_sym): New function. + (ppc_elf_create_linker_section): Call it. + (ppc_elf_check_relocs): Correct has_sda_refs and non_got_refs. + Create sdata syms for all SDA relocs. + (ppc_elf_adjust_dynamic_symbol): Don't special case _SDA_BASE_ + and _SDA2_BASE_. + (ppc_elf_set_sdata_syms): Delete. + * elflink.c (bfd_elf_size_dynamic_sections): Don't create DT_INIT + and DT_FINI tags unless associated section has input. + (bfd_elf_set_symbol, _bfd_elf_provide_symbol): Delete. + (_bfd_elf_provide_section_bound_symbols): Delete. + * bfd-in.h (_bfd_elf_provide_symbol): Delete. + (_bfd_elf_provide_section_bound_symbols): Delete. + * bfd-in2.h: Regenerate. + +2005-08-04 Alan Modra + + * elflink.c (fix_syms, _bfd_elf_fix_excluded_sec_syms): Move to.. + * linker.c (fix_syms, _bfd_fix_excluded_sec_syms): ..here. + * bfd-in.h (_bfd_fix_excluded_sec_syms): Rename. + * bfd-in2.h: Regenerate. + +2005-08-03 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_relax_section): Resize .rela.got + only if it isn't NULL. + +2005-08-03 H.J. Lu + + * elf32-i386.c (elf_howto_table): Undo the overflow change for + R_386_PC16 made on 2005-07-18. + + * elf64-x86-64.c (x86_64_elf_howto_table): Undo the overflow + change for R_X86_64_PC16 made on 2005-07-18. + +2005-08-03 Alan Modra + + * elf32-ppc.c (struct ppc_elf_link_hash_table): Remove hgot. Use + elf.hgot throughout file. + +2005-08-03 Alan Modra + + * elf32-ppc.c (ppc_elf_size_dynamic_sections): Correct value of + _GLOBAL_OFFSET_TABLE_ for > 32k GOT. + +2005-08-02 Andreas Schwab + + * elfxx-ia64.c (struct elfNN_ia64_allocate_data): Add only_got. + (elfNN_ia64_relax_section): Reallocate .rela.got when .got has + changed. + (allocate_dynrel_entries): Look only at GOT relocations when + only_got is true. + (elfNN_ia64_size_dynamic_sections): Set only_got to false before + calling allocate_dynrel_entries. + +2005-08-02 Nick Clifton + + PR 1147 + * elf32-arm.c (struct _arm_elf_section_data): Turn into a typedef + and make the mapcount field unsigned. + (struct section_list): New: Used to keep track of which sections + have an _arm_elf_section_data structure. + (record_section_with_arm_elf_section_data): New function. + (get_arm_elf_section_data): New function. + (unrecord_section_with_arm_elf_section_data): New function. + (elf32_arm_output_symbol_hook): Use get_arm_elf_section_data. + (elf32_arm_new_section_hook): Call + record_section_with_arm_elf_section_data. + (elf32_arm_write_section): Use get_arm_elf_section_data and + unrecord_section_with_arm_elf_section_data. + +2005-08-01 Richard Sandiford + + * elfxx-mips.c (mips_mach_extends_p): Treat MIPS64 as an extension + of MIPS32 and MIPS64r2 as an extension of MIPS32r2. + +2005-07-30 David Daney + + * elflink.c (elf_gc_sweep): Set dynsymcount to correct value. + +2005-07-29 David Daney + + * elfxx-mips.c (_bfd_mips_elf_add_symbol_hook): Ignore _gp_disp + if it is in the *ABS* section. + +2005-07-29 Paul Brook + + * reloc.c: Add BFD_RELOC_ARM_T32_ADD_PC12. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2005-07-29 Paul Brook + + * reloc.c (BFD_RELOC_ARM_T32_IMM12): Add. + * bfd-in2.h: Regeenrate. + * libbfd.h: Regenerate. + +2005-07-29 Pavel Kankovsky + + * peXXigen.c (pe_print_edata): Compute the size of the export + table from the size field in the DataDictionary and not the size + of the section. Some linkers embed the export table inside a + larger section. + +2005-07-29 Alan Modra + + * elf-bfd.h (struct elf_backend_data): Add action_discarded. + (enum action_discarded): Move from.. + * elflink.c (enum action_discarded): ..here. + (_bfd_elf_default_action_discarded): Rename from elf_action_discarded. + Remove target specific section checks. + (elf_link_input_bfd): Adjust. + * elfxx-target.h (elf_backend_action_discarded): Define. + (elfNN_bed): Init new field. + * bfd-in.h (_bfd_elf_default_action_discarded): Declare. + * bfd-in2.h: Regenerate. + * elf-hppa.h (elf_hppa_action_discarded): New function. + * elf32-hppa.c (elf_backend_action_discarded): Define. + * elf64-hppa.c (elf_backend_action_discarded): Define. + * elf32-ppc.c (ppc_elf_action_discarded): New function. + (elf_backend_action_discarded): Define. + +2005-07-27 Alan Modra + + * elflink.c (fix_syms): Handle symbols defined in input sections. + +2005-07-27 Jan Beulich + + * elf64-x86-64.c (R_X86_64_standard, R_X86_64_vt_offset): New. + (elf64_x86_64_info_to_howto): Use them. + +2005-07-27 Alan Modra + + * elflink.c (_bfd_elf_merge_symbol): Skip weak redefinition + regardless of strength of previous definition. + +2005-07-26 Alan Modra + + * elflink.c (elf_gc_mark_dynamic_ref_symbol): Handle -shared. + (bfd_elf_gc_sections): Allow -gc-sections when -shared. + * elf32-ppc.c (ppc_elf_gc_sweep_hook): Correct for -shared. + +2005-07-26 Alan Modra + + * elflink.c (elf_gc_sweep): Move gcc_except_table code.. + (bfd_elf_gc_sections): ..to here. + +2005-07-25 DJ Delorie + + * reloc.c: Remove unused M32C relocs, add BFD_RELOC_M32C_HI8. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + + * elf32-m32c.c (m32c_elf_howto_table): Add R_M32C_8, R_M32C_LO16, + R_M32C_HI8, R_M32C_HI16. + (m32c_reloc_map): Likewise. + (m32c_elf_relocate_section): Add R_M32C_HI8 and R_M32C_HI16. + +2005-07-25 Jan Hubicka + H.J. Lu + + * elf-bfd.h (_bfd_elf_large_com_section): New. + * elf.c (_bfd_elf_large_com_section): New. Defined. + + * elf64-x86-64.c (elf64_x86_64_add_symbol_hook): New. + (elf64_x86_64_elf_section_from_bfd_section): New. + (elf64_x86_64_symbol_processing): New. + (elf64_x86_64_common_definition): New. + (elf64_x86_64_common_section_index): New. + (elf64_x86_64_common_section): New. + (elf64_x86_64_merge_symbol): New. + (elf64_x86_64_additional_program_headers): New. + (elf64_x86_64_special_sections): New. + (elf_backend_section_from_bfd_section): New. Defined. + (elf_backend_add_symbol_hook): Likewise. + (elf_backend_common_section_index): Likewise. + (elf_backend_common_section): Likewise. + (elf_backend_common_definition): Likewise. + (elf_backend_merge_symbol): Likewise. + (elf_backend_special_sections): Likewise. + (elf_backend_additional_program_headers): Likewise. + +2005-07-25 H.J. Lu + + * elf-bfd.h (elf_backend_data): Add common_definition, + common_section_index, common_section, and merge_symbol. + (_bfd_elf_common_definition): New. + (_bfd_elf_common_section_index): New. + (_bfd_elf_common_section): New. + + * elf.c (elf_fake_sections): Don't clear sh_flags. + + * elflink.c (_bfd_elf_merge_symbol): Call backend merge_symbol + if it is available. + (is_global_data_symbol_definition): Call backend + common_definition instead of checking SHN_COMMON. + (elf_link_add_object_symbols): Likewise. + (elf_link_output_extsym): Call backend common_section_index + for common section index. + (_bfd_elf_common_definition): New. + (_bfd_elf_common_section_index): New. + (_bfd_elf_common_section): New. + + * elfxx-target.h (elf_backend_common_definition): New. + (elf_backend_common_section_index): New. + (elf_backend_common_section): New. + (elf_backend_merge_symbol): New. + (elfNN_bed): Initialize common_definition, common_section_index, + common_section, and merge_symbol. + + * section.c (BFD_FAKE_SECTION): New. + (STD_SECTION): Use it. + * bfd-in2.h: Regenerated. + +2005-07-23 Olaf Hering + + * elflink.c (elf_link_input_bfd): Add '\n' for linker einfo + callback. + +2005-07-21 Ralf Corsepius + + * config.bfd: Remove i[3-7]86-*-rtemself*. + Remove sparc-*-rtemself*. + +2005-07-22 Kazuhiro Inaoka + + * elf32-m32r.c (m32r_elf_check_relocs): Fix pc count for + R_M32R_REL32. + +2005-07-21 Ben Elliston + + * Makefile.am (BFD32_BACKENDS): Remove cf-m68klynx.lo. + (BFD32_BACKENDS): Likewise, remove m68klynx.lo. + (BFD32_BACKENDS_CFILES): Remove cf-m68klynx.c, m68klynx.c. + (cf-m68klynx.lo, m68klynx.lo): Remove targets. + * Makefile.in: Regenerate. + * cf-m68klynx.c: Remove. + * m68klynx.c: Likewise. + * configure.in (m68klynx_aout_vec): Remove vector. + (m68klynx_coff_vec): Likewise. + * configure: Regenerate. + * targets.c (m68klynx_aout_vec): Remove extern. + (m68klynx_coff_vec): Likewise. + (_bfd_target_vector): Remove m68klynx_{aout,coff}_vec. + * po/SRC-POTFILES.in: Remove cf-m68klynx.c, m68klynx.c. + 2005-07-20 Kazuhiro Inaoka * elf32-m32r.c (m32r_elf_howto_table): Support R_M32R_REL32. @@ -15,10 +446,10 @@ 2005-07-18 Nick Clifton * config.bfd: Move m32c entry to correct location. - * archures.c: Likewise. - * configure.in: Likewise. - * configure: Regenerate. - * targets.c: Move ms1 vector to correct location. + * archures.c: Likewise. + * configure.in: Likewise. + * configure: Regenerate. + * targets.c: Move ms1 vector to correct location. 2005-07-18 Jan Beulich diff -uprN binutils-2.16.91.0.2/bfd/coff-a29k.c binutils-2.16.91.0.3/bfd/coff-a29k.c --- binutils-2.16.91.0.2/bfd/coff-a29k.c 2005-05-10 15:46:41.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/coff-a29k.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,584 +0,0 @@ -/* BFD back-end for AMD 29000 COFF binaries. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001, - 2002, 2003, 2004 - Free Software Foundation, Inc. - Contributed by David Wood at New York University 7/8/91. - -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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ - -#define A29K 1 - -#include "bfd.h" -#include "sysdep.h" -#include "libbfd.h" -#include "coff/a29k.h" -#include "coff/internal.h" -#include "libcoff.h" - -static long get_symbol_value PARAMS ((asymbol *)); -static bfd_reloc_status_type a29k_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static bfd_boolean coff_a29k_relocate_section - PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, - struct internal_reloc *, struct internal_syment *, asection **)); -static bfd_boolean coff_a29k_adjust_symndx - PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, - struct internal_reloc *, bfd_boolean *)); -static void reloc_processing - PARAMS ((arelent *, struct internal_reloc *, asymbol **, bfd *, asection *)); - -#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2) - -#define INSERT_HWORD(WORD,HWORD) \ - (((WORD) & 0xff00ff00) | (((HWORD) & 0xff00) << 8) | ((HWORD)& 0xff)) -#define EXTRACT_HWORD(WORD) \ - ((((WORD) & 0x00ff0000) >> 8) | ((WORD) & 0xff)) -#define SIGN_EXTEND_HWORD(HWORD) \ - (((HWORD) ^ 0x8000) - 0x8000) - -/* Provided the symbol, returns the value reffed. */ - -static long -get_symbol_value (symbol) - asymbol *symbol; -{ - long relocation = 0; - - if (bfd_is_com_section (symbol->section)) - relocation = 0; - else - relocation = symbol->value + - symbol->section->output_section->vma + - symbol->section->output_offset; - - return relocation; -} - -/* This function is in charge of performing all the 29k relocations. */ - -static bfd_reloc_status_type -a29k_reloc (abfd, reloc_entry, symbol_in, data, input_section, output_bfd, - error_message) - bfd *abfd; - arelent *reloc_entry; - asymbol *symbol_in; - PTR data; - asection *input_section; - bfd *output_bfd; - char **error_message; -{ - /* The consth relocation comes in two parts, we have to remember - the state between calls, in these variables. */ - static bfd_boolean part1_consth_active = FALSE; - static unsigned long part1_consth_value; - unsigned long insn; - unsigned long sym_value; - unsigned long unsigned_value; - unsigned short r_type; - long signed_value; - unsigned long addr = reloc_entry->address ; /*+ input_section->vma*/ - bfd_byte *hit_data =addr + (bfd_byte *) (data); - - r_type = reloc_entry->howto->type; - - if (output_bfd) - { - /* Partial linking - do nothing. */ - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } - - if (symbol_in != NULL - && bfd_is_und_section (symbol_in->section)) - { - /* Keep the state machine happy in case we're called again. */ - if (r_type == R_IHIHALF) - { - part1_consth_active = TRUE; - part1_consth_value = 0; - } - return bfd_reloc_undefined; - } - - if ((part1_consth_active) && (r_type != R_IHCONST)) - { - part1_consth_active = FALSE; - *error_message = (char *) _("Missing IHCONST"); - - return bfd_reloc_dangerous; - } - - sym_value = get_symbol_value(symbol_in); - - switch (r_type) - { - case R_IREL: - insn = bfd_get_32 (abfd, hit_data); - /* Take the value in the field and sign extend it. */ - signed_value = EXTRACT_HWORD(insn); - signed_value = SIGN_EXTEND_HWORD(signed_value); - signed_value <<= 2; - - /* See the note on the R_IREL reloc in coff_a29k_relocate_section. */ - if (signed_value == - (long) reloc_entry->address) - signed_value = 0; - - signed_value += sym_value + reloc_entry->addend; - if ((signed_value & ~0x3ffff) == 0) - { /* Absolute jmp/call */ - insn |= (1 << 24); /* Make it absolute */ - /* FIXME: Should we change r_type to R_IABS. */ - } - else - { - /* Relative jmp/call, so subtract from the value the - address of the place we're coming from. */ - signed_value -= (reloc_entry->address - + input_section->output_section->vma - + input_section->output_offset); - if (signed_value > 0x1ffff || signed_value < -0x20000) - return bfd_reloc_overflow; - } - signed_value >>= 2; - insn = INSERT_HWORD (insn, signed_value); - bfd_put_32 (abfd, (bfd_vma) insn ,hit_data); - break; - case R_ILOHALF: - insn = bfd_get_32 (abfd, hit_data); - unsigned_value = EXTRACT_HWORD(insn); - unsigned_value += sym_value + reloc_entry->addend; - insn = INSERT_HWORD(insn, unsigned_value); - bfd_put_32 (abfd, (bfd_vma) insn, hit_data); - break; - case R_IHIHALF: - insn = bfd_get_32 (abfd, hit_data); - /* consth, part 1 - Just get the symbol value that is referenced. */ - part1_consth_active = TRUE; - part1_consth_value = sym_value + reloc_entry->addend; - /* Don't modify insn until R_IHCONST. */ - break; - case R_IHCONST: - insn = bfd_get_32 (abfd, hit_data); - /* consth, part 2 - Now relocate the reference. */ - if (! part1_consth_active) - { - *error_message = (char *) _("Missing IHIHALF"); - return bfd_reloc_dangerous; - } - /* sym_ptr_ptr = r_symndx, in coff_slurp_reloc_table() */ - unsigned_value = 0; /*EXTRACT_HWORD(insn) << 16;*/ - unsigned_value += reloc_entry->addend; /* r_symndx */ - unsigned_value += part1_consth_value; - unsigned_value = unsigned_value >> 16; - insn = INSERT_HWORD(insn, unsigned_value); - part1_consth_active = FALSE; - bfd_put_32 (abfd, (bfd_vma) insn, hit_data); - break; - case R_BYTE: - insn = bfd_get_8 (abfd, hit_data); - unsigned_value = insn + sym_value + reloc_entry->addend; - if (unsigned_value & 0xffffff00) - return bfd_reloc_overflow; - bfd_put_8 (abfd, unsigned_value, hit_data); - break; - case R_HWORD: - insn = bfd_get_16 (abfd, hit_data); - unsigned_value = insn + sym_value + reloc_entry->addend; - if (unsigned_value & 0xffff0000) - return bfd_reloc_overflow; - bfd_put_16 (abfd, (bfd_vma) insn, hit_data); - break; - case R_WORD: - insn = bfd_get_32 (abfd, hit_data); - insn += sym_value + reloc_entry->addend; - bfd_put_32 (abfd, (bfd_vma) insn, hit_data); - break; - default: - *error_message = _("Unrecognized reloc"); - return bfd_reloc_dangerous; - } - - return(bfd_reloc_ok); -} - -/*FIXME: I'm not real sure about this table. */ -static reloc_howto_type howto_table[] = - { - {R_ABS, 0, 3, 32, FALSE, 0, complain_overflow_bitfield,a29k_reloc,"ABS", TRUE, 0xffffffff,0xffffffff, FALSE}, - EMPTY_HOWTO (1), - EMPTY_HOWTO (2), - EMPTY_HOWTO (3), - EMPTY_HOWTO (4), - EMPTY_HOWTO (5), - EMPTY_HOWTO (6), - EMPTY_HOWTO (7), - EMPTY_HOWTO (8), - EMPTY_HOWTO (9), - EMPTY_HOWTO (10), - EMPTY_HOWTO (11), - EMPTY_HOWTO (12), - EMPTY_HOWTO (13), - EMPTY_HOWTO (14), - EMPTY_HOWTO (15), - EMPTY_HOWTO (16), - EMPTY_HOWTO (17), - EMPTY_HOWTO (18), - EMPTY_HOWTO (19), - EMPTY_HOWTO (20), - EMPTY_HOWTO (21), - EMPTY_HOWTO (22), - EMPTY_HOWTO (23), - {R_IREL, 0, 3, 32, TRUE, 0, complain_overflow_signed,a29k_reloc,"IREL", TRUE, 0xffffffff,0xffffffff, FALSE}, - {R_IABS, 0, 3, 32, FALSE, 0, complain_overflow_bitfield, a29k_reloc,"IABS", TRUE, 0xffffffff,0xffffffff, FALSE}, - {R_ILOHALF, 0, 3, 16, TRUE, 0, complain_overflow_signed, a29k_reloc,"ILOHALF", TRUE, 0x0000ffff,0x0000ffff, FALSE}, - {R_IHIHALF, 0, 3, 16, TRUE, 16, complain_overflow_signed, a29k_reloc,"IHIHALF", TRUE, 0xffff0000,0xffff0000, FALSE}, - {R_IHCONST, 0, 3, 16, TRUE, 0, complain_overflow_signed, a29k_reloc,"IHCONST", TRUE, 0xffff0000,0xffff0000, FALSE}, - {R_BYTE, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, a29k_reloc,"BYTE", TRUE, 0x000000ff,0x000000ff, FALSE}, - {R_HWORD, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, a29k_reloc,"HWORD", TRUE, 0x0000ffff,0x0000ffff, FALSE}, - {R_WORD, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, a29k_reloc,"WORD", TRUE, 0xffffffff,0xffffffff, FALSE}, - }; - -#define BADMAG(x) A29KBADMAG(x) - -#define RELOC_PROCESSING(relent, reloc, symbols, abfd, section) \ - reloc_processing(relent, reloc, symbols, abfd, section) - -static void -reloc_processing (relent,reloc, symbols, abfd, section) - arelent *relent; - struct internal_reloc *reloc; - asymbol **symbols; - bfd *abfd; - asection *section; -{ - static bfd_vma ihihalf_vaddr = (bfd_vma) -1; - - relent->address = reloc->r_vaddr; - relent->howto = howto_table + reloc->r_type; - if (reloc->r_type == R_IHCONST) - { - /* The address of an R_IHCONST should always be the address of - the immediately preceding R_IHIHALF. relocs generated by gas - are correct, but relocs generated by High C are different (I - can't figure out what the address means for High C). We can - handle both gas and High C by ignoring the address here, and - simply reusing the address saved for R_IHIHALF. */ - if (ihihalf_vaddr == (bfd_vma) -1) - abort (); - relent->address = ihihalf_vaddr; - ihihalf_vaddr = (bfd_vma) -1; - relent->addend = reloc->r_symndx; - relent->sym_ptr_ptr= bfd_abs_section_ptr->symbol_ptr_ptr; - } - else - { - asymbol *ptr; - - relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx]; - - ptr = *(relent->sym_ptr_ptr); - - if (ptr - && bfd_asymbol_bfd(ptr) == abfd - && ((ptr->flags & BSF_OLD_COMMON) == 0)) - relent->addend = 0; - else - relent->addend = 0; - - relent->address-= section->vma; - if (reloc->r_type == R_IHIHALF) - ihihalf_vaddr = relent->address; - else if (ihihalf_vaddr != (bfd_vma) -1) - abort (); - } -} - -/* The reloc processing routine for the optimized COFF linker. */ - -static bfd_boolean -coff_a29k_relocate_section (output_bfd, info, input_bfd, input_section, - contents, relocs, syms, sections) - bfd *output_bfd ATTRIBUTE_UNUSED; - struct bfd_link_info *info; - bfd *input_bfd; - asection *input_section; - bfd_byte *contents; - struct internal_reloc *relocs; - struct internal_syment *syms; - asection **sections; -{ - struct internal_reloc *rel; - struct internal_reloc *relend; - bfd_boolean hihalf; - bfd_vma hihalf_val; - - /* If we are performing a relocatable link, we don't need to do a - thing. The caller will take care of adjusting the reloc - addresses and symbol indices. */ - if (info->relocatable) - return TRUE; - - hihalf = FALSE; - hihalf_val = 0; - - rel = relocs; - relend = rel + input_section->reloc_count; - for (; rel < relend; rel++) - { - long symndx; - bfd_byte *loc; - struct coff_link_hash_entry *h; - struct internal_syment *sym; - asection *sec; - bfd_vma val; - bfd_boolean overflow; - unsigned long insn; - long signed_value; - unsigned long unsigned_value; - bfd_reloc_status_type rstat; - - symndx = rel->r_symndx; - loc = contents + rel->r_vaddr - input_section->vma; - - if (symndx == -1 || rel->r_type == R_IHCONST) - h = NULL; - else - h = obj_coff_sym_hashes (input_bfd)[symndx]; - - sym = NULL; - sec = NULL; - val = 0; - - /* An R_IHCONST reloc does not have a symbol. Instead, the - symbol index is an addend. R_IHCONST is always used in - conjunction with R_IHHALF. */ - if (rel->r_type != R_IHCONST) - { - if (h == NULL) - { - if (symndx == -1) - sec = bfd_abs_section_ptr; - else - { - sym = syms + symndx; - sec = sections[symndx]; - val = (sec->output_section->vma - + sec->output_offset - + sym->n_value - - sec->vma); - } - } - else - { - if ( h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak) - { - sec = h->root.u.def.section; - val = (h->root.u.def.value - + sec->output_section->vma - + sec->output_offset); - } - else - { - if (! ((*info->callbacks->undefined_symbol) - (info, h->root.root.string, input_bfd, input_section, - rel->r_vaddr - input_section->vma, TRUE))) - return FALSE; - } - } - - if (hihalf) - { - if (! ((*info->callbacks->reloc_dangerous) - (info, _("missing IHCONST reloc"), input_bfd, - input_section, rel->r_vaddr - input_section->vma))) - return FALSE; - hihalf = FALSE; - } - } - - overflow = FALSE; - - switch (rel->r_type) - { - default: - bfd_set_error (bfd_error_bad_value); - return FALSE; - - case R_IREL: - insn = bfd_get_32 (input_bfd, loc); - - /* Extract the addend. */ - signed_value = EXTRACT_HWORD (insn); - signed_value = SIGN_EXTEND_HWORD (signed_value); - signed_value <<= 2; - - /* Unfortunately, there are two different versions of COFF - a29k. In the original AMD version, the value stored in - the field for the R_IREL reloc is a simple addend. In - the GNU version, the value is the negative of the address - of the reloc within section. We try to cope here by - assuming the AMD version, unless the addend is exactly - the negative of the address; in the latter case we assume - the GNU version. This means that something like - .text - nop - jmp i-4 - will fail, because the addend of -4 will happen to equal - the negative of the address within the section. The - compiler will never generate code like this. - - At some point in the future we may want to take out this - check. */ - - if (signed_value == - (long) (rel->r_vaddr - input_section->vma)) - signed_value = 0; - - /* Determine the destination of the jump. */ - signed_value += val; - - if ((signed_value & ~0x3ffff) == 0) - { - /* We can use an absolute jump. */ - insn |= (1 << 24); - } - else - { - /* Make the destination PC relative. */ - signed_value -= (input_section->output_section->vma - + input_section->output_offset - + (rel->r_vaddr - input_section->vma)); - if (signed_value > 0x1ffff || signed_value < - 0x20000) - { - overflow = TRUE; - signed_value = 0; - } - } - - /* Put the adjusted value back into the instruction. */ - signed_value >>= 2; - insn = INSERT_HWORD (insn, signed_value); - - bfd_put_32 (input_bfd, (bfd_vma) insn, loc); - break; - - case R_ILOHALF: - insn = bfd_get_32 (input_bfd, loc); - unsigned_value = EXTRACT_HWORD (insn); - unsigned_value += val; - insn = INSERT_HWORD (insn, unsigned_value); - bfd_put_32 (input_bfd, (bfd_vma) insn, loc); - break; - - case R_IHIHALF: - /* Save the value for the R_IHCONST reloc. */ - hihalf = TRUE; - hihalf_val = val; - break; - - case R_IHCONST: - if (! hihalf) - { - if (! ((*info->callbacks->reloc_dangerous) - (info, _("missing IHIHALF reloc"), input_bfd, - input_section, rel->r_vaddr - input_section->vma))) - return FALSE; - hihalf_val = 0; - } - - insn = bfd_get_32 (input_bfd, loc); - unsigned_value = rel->r_symndx + hihalf_val; - unsigned_value >>= 16; - insn = INSERT_HWORD (insn, unsigned_value); - bfd_put_32 (input_bfd, (bfd_vma) insn, loc); - - hihalf = FALSE; - - break; - - case R_BYTE: - case R_HWORD: - case R_WORD: - rstat = _bfd_relocate_contents (howto_table + rel->r_type, - input_bfd, val, loc); - if (rstat == bfd_reloc_overflow) - overflow = TRUE; - else if (rstat != bfd_reloc_ok) - abort (); - break; - } - - if (overflow) - { - const char *name; - char buf[SYMNMLEN + 1]; - - if (symndx == -1) - name = "*ABS*"; - else if (h != NULL) - name = NULL; - else if (sym == NULL) - name = "*unknown*"; - else if (sym->_n._n_n._n_zeroes == 0 - && sym->_n._n_n._n_offset != 0) - name = obj_coff_strings (input_bfd) + sym->_n._n_n._n_offset; - else - { - strncpy (buf, sym->_n._n_name, SYMNMLEN); - buf[SYMNMLEN] = '\0'; - name = buf; - } - - if (! ((*info->callbacks->reloc_overflow) - (info, (h ? &h->root : NULL), name, - howto_table[rel->r_type].name, (bfd_vma) 0, input_bfd, - input_section, rel->r_vaddr - input_section->vma))) - return FALSE; - } - } - - return TRUE; -} - -#define coff_relocate_section coff_a29k_relocate_section - -/* We don't want to change the symndx of a R_IHCONST reloc, since it - is actually an addend, not a symbol index at all. */ - -static bfd_boolean -coff_a29k_adjust_symndx (obfd, info, ibfd, sec, irel, adjustedp) - bfd *obfd ATTRIBUTE_UNUSED; - struct bfd_link_info *info ATTRIBUTE_UNUSED; - bfd *ibfd ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; - struct internal_reloc *irel; - bfd_boolean *adjustedp; -{ - if (irel->r_type == R_IHCONST) - *adjustedp = TRUE; - else - *adjustedp = FALSE; - return TRUE; -} - -#define coff_adjust_symndx coff_a29k_adjust_symndx - -#include "coffcode.h" - -CREATE_BIG_COFF_TARGET_VEC (a29kcoff_big_vec, "coff-a29k-big", 0, SEC_READONLY, '_', NULL, COFF_SWAP_TABLE) diff -uprN binutils-2.16.91.0.2/bfd/coffcode.h binutils-2.16.91.0.3/bfd/coffcode.h --- binutils-2.16.91.0.2/bfd/coffcode.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/coffcode.h 2005-08-22 12:27:41.000000000 -0700 @@ -1888,12 +1888,6 @@ coff_set_arch_mach_hook (bfd *abfd, void arch = bfd_arch_ia64; break; #endif -#ifdef A29K_MAGIC_BIG - case A29K_MAGIC_BIG: - case A29K_MAGIC_LITTLE: - arch = bfd_arch_a29k; - break; -#endif #ifdef ARMMAGIC case ARMMAGIC: case ARMPEMAGIC: @@ -2781,15 +2775,6 @@ coff_set_flags (bfd * abfd, break; #endif -#ifdef A29K_MAGIC_BIG - case bfd_arch_a29k: - if (bfd_big_endian (abfd)) - *magicp = A29K_MAGIC_BIG; - else - *magicp = A29K_MAGIC_LITTLE; - return TRUE; -#endif - #ifdef WE32KMAGIC case bfd_arch_we32k: *magicp = WE32KMAGIC; @@ -3771,18 +3756,6 @@ coff_write_object_contents (bfd * abfd) internal_f.f_flags |= flags; /* ...and the "opt"hdr... */ -#ifdef A29K -#ifdef ULTRA3 /* NYU's machine */ - /* FIXME: This is a bogus check. I really want to see if there - is a .shbss or a .shdata section, if so then set the magic - number to indicate a shared data executable. */ - if (internal_f.f_nscns >= 7) - internal_a.magic = SHMAGIC; /* Shared magic. */ - else -#endif /* ULTRA3 */ - internal_a.magic = NMAGIC; /* Assume separate i/d. */ -#define __A_MAGIC_SET__ -#endif /* A29K */ #ifdef TICOFF_AOUT_MAGIC internal_a.magic = TICOFF_AOUT_MAGIC; #define __A_MAGIC_SET__ @@ -4481,11 +4454,6 @@ coff_slurp_symbol_table (bfd * abfd) case C_MOS: /* Member of structure. */ case C_EOS: /* End of structure. */ -#ifdef NOTDEF /* C_AUTOARG has the same value. */ -#ifdef C_GLBLREG - case C_GLBLREG: /* A29k-specific storage class. */ -#endif -#endif case C_REGPARM: /* Register parameter. */ case C_REG: /* register variable. */ /* C_AUTOARG conflicts with TI COFF C_UEXT. */ diff -uprN binutils-2.16.91.0.2/bfd/cofflink.c binutils-2.16.91.0.3/bfd/cofflink.c --- binutils-2.16.91.0.2/bfd/cofflink.c 2005-05-10 15:46:41.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/cofflink.c 2005-08-22 12:27:41.000000000 -0700 @@ -2937,9 +2937,11 @@ _bfd_coff_generic_relocate_section (bfd Note that weak symbols without aux records are a GNU extension. FIXME: All weak externals are treated as having - characteristics IMAGE_WEAK_EXTERN_SEARCH_LIBRARY (2). - There are no known uses of the other two types of - weak externals. */ + characteristic IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY (1). + These behave as per SVR4 ABI: A library member + will resolve a weak external only if a normal + external causes the library member to be linked. + See also linker.c: generic_link_check_archive_element. */ asection *sec; struct coff_link_hash_entry *h2 = input_bfd->tdata.coff_obj_data->sym_hashes[ diff -uprN binutils-2.16.91.0.2/bfd/config.bfd binutils-2.16.91.0.3/bfd/config.bfd --- binutils-2.16.91.0.2/bfd/config.bfd 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/config.bfd 2005-08-22 12:27:41.000000000 -0700 @@ -53,7 +53,7 @@ case $targ in vax-*-vms* | \ arm-*-oabi | \ thumb-*-oabi | \ - a29k-*rtems* | \ + a29k-* | \ hppa*-*-rtems* | \ *-go32-rtems* | \ i[3-7]86*-*-rtemscoff* | \ @@ -305,17 +305,6 @@ case "${targ}" in targ_underscore=yes ;; - a29k-*-ebmon* | a29k-*-udi* | a29k-*-coff* | a29k-*-sym1* | \ - a29k-*-vxworks* | a29k-*-sysv*) - targ_defvec=a29kcoff_big_vec - targ_selvecs=sunos_big_vec - targ_underscore=yes - ;; - a29k-*-aout* | a29k-*-bsd* | a29k-*-vsta*) - targ_defvec=sunos_big_vec - targ_underscore=yes - ;; - avr-*-*) targ_defvec=bfd_elf32_avr_vec ;; @@ -483,7 +472,7 @@ case "${targ}" in i[3-7]86-*-aix*) targ_defvec=i386coff_vec ;; - i[3-7]86-*-rtemself* | i[3-7]86-*-rtems*) + i[3-7]86-*-rtems*) targ_defvec=bfd_elf32_i386_vec targ_selvecs="i386coff_vec i386aout_vec" ;; @@ -750,10 +739,6 @@ case "${targ}" in # targ_selvecs=m68kmach3_vec # targ_cflags=-DSTAT_FOR_EXEC ;; - m68*-*-lynxos*) - targ_defvec=m68klynx_coff_vec - targ_selvecs=m68klynx_aout_vec - ;; m68*-hp*-netbsd*) targ_defvec=m68k4knetbsd_vec targ_selvecs="m68knetbsd_vec hp300bsd_vec sunos_big_vec" @@ -1138,20 +1123,20 @@ case "${targ}" in #ifdef BFD64 sh5le-*-netbsd*) targ_defvec=bfd_elf32_sh64lnbsd_vec - targ_selvecs="bfd_elf32_sh64nbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec" + targ_selvecs="bfd_elf32_sh64nbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec bfd_elf32_shnbsd_vec bfd_elf32_shlnbsd_vec" ;; sh5-*-netbsd*) targ_defvec=bfd_elf32_sh64nbsd_vec - targ_selvecs="bfd_elf32_sh64lnbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec" + targ_selvecs="bfd_elf32_sh64lnbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec bfd_elf32_shnbsd_vec bfd_elf32_shlnbsd_vec" ;; sh64le-*-netbsd*) targ_defvec=bfd_elf64_sh64lnbsd_vec - targ_selvecs="bfd_elf64_sh64nbsd_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec" + targ_selvecs="bfd_elf64_sh64nbsd_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf32_shnbsd_vec bfd_elf32_shlnbsd_vec" ;; sh64-*-netbsd*) targ_defvec=bfd_elf64_sh64nbsd_vec - targ_selvecs="bfd_elf64_sh64lnbsd_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec" + targ_selvecs="bfd_elf64_sh64lnbsd_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf32_shnbsd_vec bfd_elf32_shlnbsd_vec" ;; #endif @@ -1247,10 +1232,6 @@ case "${targ}" in targ_defvec=bfd_elf32_sparc_vec targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec" ;; - sparc-*-lynxos*) - targ_defvec=sparclynx_coff_vec - targ_selvecs=sparclynx_aout_vec - ;; sparc-*-netbsdelf*) targ_defvec=bfd_elf32_sparc_vec targ_selvecs=sparcnetbsd_vec @@ -1302,11 +1283,11 @@ case "${targ}" in sparc*-*-coff*) targ_defvec=sparccoff_vec ;; - sparc*-*-rtems* | sparc*-*-rtemself*) + sparc*-*-rtems*) targ_defvec=bfd_elf32_sparc_vec targ_selvecs="sunos_big_vec sparccoff_vec" ;; - sparc*-*-* | sparc*-*-rtems*) + sparc*-*-*) targ_defvec=sunos_big_vec targ_underscore=yes ;; diff -uprN binutils-2.16.91.0.2/bfd/configure binutils-2.16.91.0.3/bfd/configure --- binutils-2.16.91.0.2/bfd/configure 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/configure 2005-08-22 12:27:41.000000000 -0700 @@ -2836,7 +2836,7 @@ fi # Define the identity of the package. PACKAGE=bfd - VERSION=2.16.91.0.2 + VERSION=2.16.91.0.3 cat >>confdefs.h <<_ACEOF @@ -12939,7 +12939,6 @@ do # This list is alphabetized to make it easy to compare # with the two vector lists in targets.c. For the same reason, # use one entry per line, even though this leads to long lines. - a29kcoff_big_vec) tb="$tb coff-a29k.lo cofflink.lo" ;; a_out_adobe_vec) tb="$tb aout-adobe.lo aout32.lo" ;; aix5coff64_vec) tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;; aout0_big_vec) tb="$tb aout0.lo aout32.lo" ;; @@ -13121,8 +13120,6 @@ do m68kcoff_vec) tb="$tb coff-m68k.lo cofflink.lo" ;; m68kcoffun_vec) tb="$tb coff-u68k.lo coff-m68k.lo cofflink.lo" ;; m68klinux_vec) tb="$tb m68klinux.lo aout32.lo" ;; - m68klynx_aout_vec) tb="$tb m68klynx.lo lynx-core.lo aout32.lo" ;; - m68klynx_coff_vec) tb="$tb cf-m68klynx.lo coff-m68k.lo cofflink.lo lynx-core.lo" ;; m68knetbsd_vec) tb="$tb m68knetbsd.lo aout32.lo" ;; m68ksysvcoff_vec) tb="$tb coff-svm68k.lo cofflink.lo" ;; m88kbcs_vec) tb="$tb coff-m88k.lo" ;; diff -uprN binutils-2.16.91.0.2/bfd/configure.in binutils-2.16.91.0.3/bfd/configure.in --- binutils-2.16.91.0.2/bfd/configure.in 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/configure.in 2005-08-22 12:27:41.000000000 -0700 @@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c]) AC_CANONICAL_TARGET AC_ISC_POSIX -AM_INIT_AUTOMAKE(bfd, 2.16.91.0.2) +AM_INIT_AUTOMAKE(bfd, 2.16.91.0.3) dnl These must be called before AM_PROG_LIBTOOL, because it may want dnl to call AC_CHECK_PROG. @@ -560,7 +560,6 @@ do # This list is alphabetized to make it easy to compare # with the two vector lists in targets.c. For the same reason, # use one entry per line, even though this leads to long lines. - a29kcoff_big_vec) tb="$tb coff-a29k.lo cofflink.lo" ;; a_out_adobe_vec) tb="$tb aout-adobe.lo aout32.lo" ;; aix5coff64_vec) tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;; aout0_big_vec) tb="$tb aout0.lo aout32.lo" ;; @@ -742,8 +741,6 @@ do m68kcoff_vec) tb="$tb coff-m68k.lo cofflink.lo" ;; m68kcoffun_vec) tb="$tb coff-u68k.lo coff-m68k.lo cofflink.lo" ;; m68klinux_vec) tb="$tb m68klinux.lo aout32.lo" ;; - m68klynx_aout_vec) tb="$tb m68klynx.lo lynx-core.lo aout32.lo" ;; - m68klynx_coff_vec) tb="$tb cf-m68klynx.lo coff-m68k.lo cofflink.lo lynx-core.lo" ;; m68knetbsd_vec) tb="$tb m68knetbsd.lo aout32.lo" ;; m68ksysvcoff_vec) tb="$tb coff-svm68k.lo cofflink.lo" ;; m88kbcs_vec) tb="$tb coff-m88k.lo" ;; diff -uprN binutils-2.16.91.0.2/bfd/cpu-a29k.c binutils-2.16.91.0.3/bfd/cpu-a29k.c --- binutils-2.16.91.0.2/bfd/cpu-a29k.c 2005-05-10 15:46:41.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/cpu-a29k.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,39 +0,0 @@ -/* BFD support for the AMD 29000 architecture. - Copyright 1992, 2000, 2002 Free Software Foundation, Inc. - Hacked by Steve Chamberlain of Cygnus Support. - -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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ - -#include "bfd.h" -#include "sysdep.h" -#include "libbfd.h" - -const bfd_arch_info_type bfd_a29k_arch = - { - 32, /* 32 bits in a word */ - 32, /* 32 bits in an address */ - 8, /* 8 bits in a byte */ - bfd_arch_a29k, - 0, /* only 1 machine */ - "a29k", - "a29k", - 4, - TRUE, /* the one and only */ - bfd_default_compatible, - bfd_default_scan , - 0, - }; diff -uprN binutils-2.16.91.0.2/bfd/cpu-msp430.c binutils-2.16.91.0.3/bfd/cpu-msp430.c --- binutils-2.16.91.0.2/bfd/cpu-msp430.c 2005-05-10 15:46:41.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/cpu-msp430.c 2005-08-22 12:27:41.000000000 -0700 @@ -64,23 +64,26 @@ static const bfd_arch_info_type arch_inf /* msp430x16x. */ N (16, bfd_mach_msp16, "msp:16", FALSE, & arch_info_struct[7]), + /* msp430x21x. */ + N (16, bfd_mach_msp21, "msp:21", FALSE, & arch_info_struct[8]), + /* msp430x31x. */ - N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[8]), + N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[9]), /* msp430x32x. */ - N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[9]), + N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[10]), /* msp430x33x. */ - N (16, bfd_mach_msp33, "msp:33", FALSE, & arch_info_struct[10]), + N (16, bfd_mach_msp33, "msp:33", FALSE, & arch_info_struct[11]), /* msp430x41x. */ - N (16, bfd_mach_msp41, "msp:41", FALSE, & arch_info_struct[11]), + N (16, bfd_mach_msp41, "msp:41", FALSE, & arch_info_struct[12]), /* msp430x42x. */ - N (16, bfd_mach_msp42, "msp:42", FALSE, & arch_info_struct[12]), + N (16, bfd_mach_msp42, "msp:42", FALSE, & arch_info_struct[13]), /* msp430x43x. */ - N (16, bfd_mach_msp43, "msp:43", FALSE, & arch_info_struct[13]), + N (16, bfd_mach_msp43, "msp:43", FALSE, & arch_info_struct[14]), /* msp430x44x. */ N (16, bfd_mach_msp43, "msp:44", FALSE, NULL) diff -uprN binutils-2.16.91.0.2/bfd/doc/ChangeLog binutils-2.16.91.0.3/bfd/doc/ChangeLog --- binutils-2.16.91.0.2/bfd/doc/ChangeLog 2005-05-10 15:46:43.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/doc/ChangeLog 2005-08-22 12:27:41.000000000 -0700 @@ -1,3 +1,15 @@ +2005-07-24 Daniel Jacobowitz + + * chew.c: Include . + +2005-07-22 DJ Delorie + + * chew.c: Include stdlib.h. + +2005-07-22 Kazu Hirata + + * chew.c: Don't include sysdep.h. + 2005-05-09 Daniel Jacobowitz * Makefile.am: Use a temporary file to build chew. diff -uprN binutils-2.16.91.0.2/bfd/doc/chew.c binutils-2.16.91.0.3/bfd/doc/chew.c --- binutils-2.16.91.0.2/bfd/doc/chew.c 2005-05-10 15:46:43.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/doc/chew.c 2005-08-22 12:27:41.000000000 -0700 @@ -83,10 +83,11 @@ Foundation, Inc., 51 Franklin Street - F Foo. */ #include "ansidecl.h" -#include "sysdep.h" #include #include #include +#include +#include #define DEF_SIZE 5000 #define STACK 50 diff -uprN binutils-2.16.91.0.2/bfd/dwarf2.c binutils-2.16.91.0.3/bfd/dwarf2.c --- binutils-2.16.91.0.2/bfd/dwarf2.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/dwarf2.c 2005-08-22 12:27:41.000000000 -0700 @@ -1606,7 +1606,7 @@ read_rangelist (struct comp_unit *unit, bfd_vma low_pc; bfd_vma high_pc; - if (unit->offset_size == 4) + if (unit->addr_size == 4) { low_pc = read_4_bytes (unit->abfd, ranges_ptr); ranges_ptr += 4; @@ -1782,9 +1782,17 @@ scan_unit_for_symbols (struct comp_unit if (*attr.u.blk->data == DW_OP_addr) { var->stack = 0; - var->addr = bfd_get ((attr.u.blk->size - 1) * 8, - unit->abfd, - attr.u.blk->data + 1); + + /* Verify that DW_OP_addr is the only opcode in the + location, in which case the block size will be 1 + plus the address size. */ + /* ??? For TLS variables, gcc can emit + DW_OP_addr DW_OP_GNU_push_tls_address + which we don't handle here yet. */ + if (attr.u.blk->size == unit->addr_size + 1U) + var->addr = bfd_get (unit->addr_size * 8, + unit->abfd, + attr.u.blk->data + 1); } break; @@ -2175,9 +2183,9 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd stash = *pinfo; addr = offset; if (section->output_section) - addr += section->output_section->vma + section->output_offset; + addr += section->output_section->lma + section->output_offset; else - addr += section->vma; + addr += section->lma; *filename_ptr = NULL; *functionname_ptr = NULL; *linenumber_ptr = 0; @@ -2384,9 +2392,9 @@ _bfd_dwarf2_find_line (bfd *abfd, addr = symbol->value; if (section->output_section) - addr += section->output_section->vma + section->output_offset; + addr += section->output_section->lma + section->output_offset; else - addr += section->vma; + addr += section->lma; *filename_ptr = NULL; stash = *pinfo; diff -uprN binutils-2.16.91.0.2/bfd/elf32-arm.c binutils-2.16.91.0.3/bfd/elf32-arm.c --- binutils-2.16.91.0.2/bfd/elf32-arm.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-arm.c 2005-08-22 12:27:41.000000000 -0700 @@ -435,13 +435,13 @@ static reloc_howto_type elf32_arm_howto_ HOWTO (R_ARM_PLT32, /* type */ 2, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 26, /* bitsize */ + 24, /* bitsize */ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield,/* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_ARM_PLT32", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x00ffffff, /* src_mask */ 0x00ffffff, /* dst_mask */ TRUE), /* pcrel_offset */ @@ -1515,15 +1515,16 @@ typedef struct elf32_elf_section_map } elf32_arm_section_map; -struct _arm_elf_section_data +typedef struct _arm_elf_section_data { struct bfd_elf_section_data elf; - int mapcount; + unsigned int mapcount; elf32_arm_section_map *map; -}; +} +_arm_elf_section_data; #define elf32_arm_section_data(sec) \ - ((struct _arm_elf_section_data *) elf_section_data (sec)) + ((_arm_elf_section_data *) elf_section_data (sec)) /* The size of the thread control block. */ #define TCB_SIZE 8 @@ -4400,7 +4401,7 @@ elf32_arm_merge_private_bfd_data (bfd * /* Check to see if the input BFD actually contains any sections. If not, its flags may not have been initialised either, but it - cannot actually cause any incompatibility. Do not short-circuit + cannot actually cause any incompatiblity. Do not short-circuit dynamic objects; their section list may be emptied by elf_link_add_object_symbols. @@ -5387,6 +5388,13 @@ elf32_arm_adjust_dynamic_symbol (struct if (info->shared || globals->root.is_relocatable_executable) return TRUE; + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic @@ -6511,6 +6519,71 @@ elf32_arm_section_from_shdr (bfd *abfd, return TRUE; } +/* A structure used to record a list of sections, independently + of the next and prev fields in the asection structure. */ +typedef struct section_list +{ + asection * sec; + struct section_list * next; + struct section_list * prev; +} +section_list; + +/* Unfortunately we need to keep a list of sections for which + an _arm_elf_section_data structure has been allocated. This + is because it is possible for functions like elf32_arm_write_section + to be called on a section which has had an elf_data_structure + allocated for it (and so the used_by_bfd field is valid) but + for which the ARM extended version of this structure - the + _arm_elf_section_data structure - has not been allocated. */ +static section_list * sections_with_arm_elf_section_data = NULL; + +static void +record_section_with_arm_elf_section_data (asection * sec) +{ + struct section_list * entry; + + entry = bfd_malloc (sizeof (* entry)); + if (entry == NULL) + return; + entry->sec = sec; + entry->next = sections_with_arm_elf_section_data; + entry->prev = NULL; + if (entry->next != NULL) + entry->next->prev = entry; + sections_with_arm_elf_section_data = entry; +} + +static _arm_elf_section_data * +get_arm_elf_section_data (asection * sec) +{ + struct section_list * entry; + + for (entry = sections_with_arm_elf_section_data; entry; entry = entry->next) + if (entry->sec == sec) + return elf32_arm_section_data (sec); + return NULL; +} + +static void +unrecord_section_with_arm_elf_section_data (asection * sec) +{ + struct section_list * entry; + + for (entry = sections_with_arm_elf_section_data; entry; entry = entry->next) + if (entry->sec == sec) + { + if (entry->prev != NULL) + entry->prev->next = entry->next; + if (entry->next != NULL) + entry->next->prev = entry->prev; + if (entry == sections_with_arm_elf_section_data) + sections_with_arm_elf_section_data = entry->next; + free (entry); + break; + } +} + /* Called for each symbol. Builds a section map based on mapping symbols. Does not alter any of the symbols. */ @@ -6523,6 +6596,8 @@ elf32_arm_output_symbol_hook (struct bfd { int mapcount; elf32_arm_section_map *map; + elf32_arm_section_map *newmap; + _arm_elf_section_data *arm_data; struct elf32_arm_link_hash_table *globals; /* Only do this on final link. */ @@ -6538,25 +6613,35 @@ elf32_arm_output_symbol_hook (struct bfd if (! bfd_is_arm_mapping_symbol_name (name)) return TRUE; - mapcount = ++(elf32_arm_section_data (input_sec)->mapcount); - map = elf32_arm_section_data (input_sec)->map; + /* If this section has not been allocated an _arm_elf_section_data + structure then we cannot record anything. */ + arm_data = get_arm_elf_section_data (input_sec); + if (arm_data == NULL) + return TRUE; + + mapcount = arm_data->mapcount + 1; + map = arm_data->map; /* TODO: This may be inefficient, but we probably don't usually have many mapping symbols per section. */ - map = bfd_realloc (map, mapcount * sizeof (elf32_arm_section_map)); - elf32_arm_section_data (input_sec)->map = map; + newmap = bfd_realloc (map, mapcount * sizeof (* map)); + if (newmap != NULL) + { + arm_data->map = newmap; + arm_data->mapcount = mapcount; + + map[mapcount - 1].vma = elfsym->st_value; + map[mapcount - 1].type = name[1]; + } - map[mapcount - 1].vma = elfsym->st_value; - map[mapcount - 1].type = name[1]; return TRUE; } - /* Allocate target specific section data. */ static bfd_boolean elf32_arm_new_section_hook (bfd *abfd, asection *sec) { - struct _arm_elf_section_data *sdata; + _arm_elf_section_data *sdata; bfd_size_type amt = sizeof (*sdata); sdata = bfd_zalloc (abfd, amt); @@ -6564,6 +6649,8 @@ elf32_arm_new_section_hook (bfd *abfd, a return FALSE; sec->used_by_bfd = sdata; + record_section_with_arm_elf_section_data (sec); + return _bfd_elf_new_section_hook (abfd, sec); } @@ -6586,6 +6673,7 @@ elf32_arm_write_section (bfd *output_bfd bfd_byte *contents) { int mapcount; + _arm_elf_section_data *arm_data; elf32_arm_section_map *map; bfd_vma ptr; bfd_vma end; @@ -6593,14 +6681,19 @@ elf32_arm_write_section (bfd *output_bfd bfd_byte tmp; int i; - mapcount = elf32_arm_section_data (sec)->mapcount; - map = elf32_arm_section_data (sec)->map; + /* If this section has not been allocated an _arm_elf_section_data + structure then we cannot record anything. */ + arm_data = get_arm_elf_section_data (sec); + if (arm_data == NULL) + return FALSE; + + mapcount = arm_data->mapcount; + map = arm_data->map; if (mapcount == 0) return FALSE; - qsort (map, mapcount, sizeof (elf32_arm_section_map), - elf32_arm_compare_mapping); + qsort (map, mapcount, sizeof (* map), elf32_arm_compare_mapping); offset = sec->output_section->vma + sec->output_offset; ptr = map[0].vma - offset; @@ -6644,10 +6737,31 @@ elf32_arm_write_section (bfd *output_bfd } ptr = end; } + free (map); + arm_data->mapcount = 0; + arm_data->map = NULL; + unrecord_section_with_arm_elf_section_data (sec); + return FALSE; } +static void +unrecord_section_via_map_over_sections (bfd * abfd ATTRIBUTE_UNUSED, + asection * sec, + void * ignore ATTRIBUTE_UNUSED) +{ + unrecord_section_with_arm_elf_section_data (sec); +} + +static bfd_boolean +elf32_arm_close_and_cleanup (bfd * abfd) +{ + bfd_map_over_sections (abfd, unrecord_section_via_map_over_sections, NULL); + + return _bfd_elf_close_and_cleanup (abfd); +} + /* Display STT_ARM_TFUNC symbols as functions. */ static void @@ -6806,6 +6920,7 @@ const struct elf_size_info elf32_arm_siz #define bfd_elf32_find_inliner_info elf32_arm_find_inliner_info #define bfd_elf32_new_section_hook elf32_arm_new_section_hook #define bfd_elf32_bfd_is_target_special_symbol elf32_arm_is_target_special_symbol +#define bfd_elf32_close_and_cleanup elf32_arm_close_and_cleanup #define elf_backend_get_symbol_type elf32_arm_get_symbol_type #define elf_backend_gc_mark_hook elf32_arm_gc_mark_hook diff -uprN binutils-2.16.91.0.2/bfd/elf32-cris.c binutils-2.16.91.0.3/bfd/elf32-cris.c --- binutils-2.16.91.0.2/bfd/elf32-cris.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-cris.c 2005-08-22 12:27:41.000000000 -0700 @@ -2078,9 +2078,6 @@ elf_cris_adjust_gotplt_to_got (h, p) PTR p; { struct bfd_link_info *info = (struct bfd_link_info *) p; - bfd *dynobj = elf_hash_table (info)->dynobj; - - BFD_ASSERT (dynobj != NULL); if (h->root.root.type == bfd_link_hash_warning) h = (struct elf_cris_link_hash_entry *) h->root.root.u.i.link; @@ -2100,9 +2097,13 @@ elf_cris_adjust_gotplt_to_got (h, p) else { /* No GOT entry for this symbol. We need to create one. */ - asection *sgot = bfd_get_section_by_name (dynobj, ".got"); - asection *srelgot - = bfd_get_section_by_name (dynobj, ".rela.got"); + bfd *dynobj = elf_hash_table (info)->dynobj; + asection *sgot; + asection *srelgot; + + BFD_ASSERT (dynobj != NULL); + sgot = bfd_get_section_by_name (dynobj, ".got"); + srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); /* Put an accurate refcount there. */ h->root.got.refcount = h->gotplt_refcount; @@ -2379,6 +2380,13 @@ elf_cris_adjust_dynamic_symbol (info, h) if (!h->non_got_ref) return TRUE; + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elf32-frv.c binutils-2.16.91.0.3/bfd/elf32-frv.c --- binutils-2.16.91.0.2/bfd/elf32-frv.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-frv.c 2005-08-22 12:27:41.000000000 -0700 @@ -4301,22 +4301,15 @@ _frv_create_got_section (bfd *abfd, stru (or .got.plt) section. We don't do this in the linker script because we don't want to define the symbol if we are not creating a global offset table. */ - bh = NULL; - if (!(_bfd_generic_link_add_one_symbol - (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s, - 0, (const char *) NULL, FALSE, bed->collect, &bh))) + h = _bfd_elf_define_linkage_sym (abfd, info, s, "_GLOBAL_OFFSET_TABLE_"); + elf_hash_table (info)->hgot = h; + if (h == NULL) return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->def_regular = 1; - h->type = STT_OBJECT; - /* h->other = STV_HIDDEN; */ /* Should we? */ /* Machine-specific: we want the symbol for executables as well. */ if (! bfd_elf_link_record_dynamic_symbol (info, h)) return FALSE; - - elf_hash_table (info)->hgot = h; } /* The first bit of the global offset table is the header. */ @@ -4399,26 +4392,12 @@ _frv_create_got_section (bfd *abfd, stru /* FRV-specific: remember it. */ frvfdpic_plt_section (info) = s; - if (bed->want_plt_sym) - { - /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the - .plt section. */ - struct elf_link_hash_entry *h; - struct bfd_link_hash_entry *bh = NULL; - - if (! (_bfd_generic_link_add_one_symbol - (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, 0, NULL, - FALSE, get_elf_backend_data (abfd)->collect, &bh))) - return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->def_regular = 1; - h->type = STT_OBJECT; - /* h->other = STV_HIDDEN; */ /* Should we? */ - - if (! info->executable - && ! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - } + /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the + .plt section. */ + if (bed->want_plt_sym + && !_bfd_elf_define_linkage_sym (abfd, info, s, + "_PROCEDURE_LINKAGE_TABLE_")) + return FALSE; /* FRV-specific: we want rel relocations for the plt. */ s = bfd_make_section_with_flags (abfd, ".rel.plt", diff -uprN binutils-2.16.91.0.2/bfd/elf32-hppa.c binutils-2.16.91.0.3/bfd/elf32-hppa.c --- binutils-2.16.91.0.2/bfd/elf32-hppa.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-hppa.c 2005-08-22 12:27:41.000000000 -0700 @@ -1807,6 +1807,13 @@ elf32_hppa_adjust_dynamic_symbol (struct } } + if (eh->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + eh->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic @@ -4251,6 +4258,7 @@ elf32_hppa_elf_get_symbol_type (Elf_Inte #define elf_backend_post_process_headers elf32_hppa_post_process_headers #define elf_backend_get_symbol_type elf32_hppa_elf_get_symbol_type #define elf_backend_reloc_type_class elf32_hppa_reloc_type_class +#define elf_backend_action_discarded elf_hppa_action_discarded #define elf_backend_can_gc_sections 1 #define elf_backend_can_refcount 1 diff -uprN binutils-2.16.91.0.2/bfd/elf32-i370.c binutils-2.16.91.0.3/bfd/elf32-i370.c --- binutils-2.16.91.0.2/bfd/elf32-i370.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-i370.c 2005-08-22 12:27:41.000000000 -0700 @@ -486,6 +486,13 @@ i370_elf_adjust_dynamic_symbol (struct b if (info->shared) return TRUE; + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elf32-i386.c binutils-2.16.91.0.3/bfd/elf32-i386.c --- binutils-2.16.91.0.2/bfd/elf32-i386.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-i386.c 2005-08-22 12:27:41.000000000 -0700 @@ -95,7 +95,7 @@ static reloc_howto_type elf_howto_table[ HOWTO(R_386_16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_386_16", TRUE, 0xffff, 0xffff, FALSE), - HOWTO(R_386_PC16, 0, 1, 16, TRUE, 0, complain_overflow_signed, + HOWTO(R_386_PC16, 0, 1, 16, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_386_PC16", TRUE, 0xffff, 0xffff, TRUE), HOWTO(R_386_8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, @@ -1462,6 +1462,13 @@ elf_i386_adjust_dynamic_symbol (struct b } } + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elf32-m32c.c binutils-2.16.91.0.3/bfd/elf32-m32c.c --- binutils-2.16.91.0.2/bfd/elf32-m32c.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-m32c.c 2005-08-22 12:27:41.000000000 -0700 @@ -132,6 +132,62 @@ static reloc_howto_type m32c_elf_howto_t 0, /* src_mask */ 0, /* dst_mask */ TRUE), /* pcrel_offset */ + + HOWTO (R_M32C_8, /* type */ + 0, /* rightshift */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 8, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_unsigned, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32C_8", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x000000ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_M32C_LO16, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32C_LO16", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_M32C_HI8, /* type */ + 0, /* rightshift */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 8, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32C_HI8", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x000000ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_M32C_HI16, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_M32C_HI16", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ }; /* Map BFD reloc types to M32C ELF reloc types. */ @@ -149,7 +205,11 @@ static const struct m32c_reloc_map m32c_ { BFD_RELOC_24, R_M32C_24 }, { BFD_RELOC_32, R_M32C_32 }, { BFD_RELOC_8_PCREL, R_M32C_8_PCREL }, - { BFD_RELOC_16_PCREL, R_M32C_16_PCREL } + { BFD_RELOC_16_PCREL, R_M32C_16_PCREL }, + { BFD_RELOC_8, R_M32C_8 }, + { BFD_RELOC_LO16, R_M32C_LO16 }, + { BFD_RELOC_HI16, R_M32C_HI16 }, + { BFD_RELOC_M32C_HI8, R_M32C_HI8 } }; static reloc_howto_type * @@ -372,6 +432,11 @@ m32c_elf_relocate_section } } break; + + case R_M32C_HI8: + case R_M32C_HI16: + relocation >>= 16; + break; } r = _bfd_final_link_relocate (howto, input_bfd, input_section, diff -uprN binutils-2.16.91.0.2/bfd/elf32-m32r.c binutils-2.16.91.0.3/bfd/elf32-m32r.c --- binutils-2.16.91.0.2/bfd/elf32-m32r.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-m32r.c 2005-08-22 12:27:41.000000000 -0700 @@ -1911,6 +1911,13 @@ m32r_elf_adjust_dynamic_symbol (struct b return TRUE; } + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic @@ -4011,6 +4018,7 @@ m32r_elf_check_relocs (bfd *abfd, p->count += 1; if (ELF32_R_TYPE (rel->r_info) == R_M32R_26_PCREL_RELA + || ELF32_R_TYPE (rel->r_info) == R_M32R_REL32 || ELF32_R_TYPE (rel->r_info) == R_M32R_18_PCREL_RELA) p->pc_count += 1; } diff -uprN binutils-2.16.91.0.2/bfd/elf32-m68k.c binutils-2.16.91.0.3/bfd/elf32-m68k.c --- binutils-2.16.91.0.2/bfd/elf32-m68k.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-m68k.c 2005-08-22 12:27:41.000000000 -0700 @@ -1081,6 +1081,13 @@ elf_m68k_adjust_dynamic_symbol (info, h) if (info->shared) return TRUE; + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elf32-msp430.c binutils-2.16.91.0.3/bfd/elf32-msp430.c --- binutils-2.16.91.0.2/bfd/elf32-msp430.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-msp430.c 2005-08-22 12:27:41.000000000 -0700 @@ -868,10 +868,22 @@ msp430_elf_relax_delete_bytes (bfd * abf sec->size -= count; /* Adjust all the relocs. */ + symtab_hdr = & elf_tdata (abfd)->symtab_hdr; + isym = (Elf_Internal_Sym *) symtab_hdr->contents; for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++) - /* Get the new reloc address. */ - if ((irel->r_offset > addr && irel->r_offset < toaddr)) - irel->r_offset -= count; + { + int sidx = ELF32_R_SYM(irel->r_info); + Elf_Internal_Sym *lsym = isym + sidx; + + /* Get the new reloc address. */ + if ((irel->r_offset > addr && irel->r_offset < toaddr)) + irel->r_offset -= count; + + /* Adjust symbols referenced by .sec+0xXX */ + if (irel->r_addend > addr && irel->r_addend < toaddr + && lsym->st_shndx == sec_shndx) + irel->r_addend -= count; + } /* Adjust the local symbols defined in this section. */ symtab_hdr = & elf_tdata (abfd)->symtab_hdr; diff -uprN binutils-2.16.91.0.2/bfd/elf32-ppc.c binutils-2.16.91.0.3/bfd/elf32-ppc.c --- binutils-2.16.91.0.2/bfd/elf32-ppc.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-ppc.c 2005-08-22 12:27:41.000000000 -0700 @@ -1668,8 +1668,8 @@ typedef struct elf_linker_section const char *bss_name; /* Associated symbol name. */ const char *sym_name; - /* Value of symbol. */ - bfd_vma sym_val; + /* Associated symbol. */ + struct elf_link_hash_entry *sym; } elf_linker_section_t; /* Linked list of allocated pointer entries. This hangs off of the @@ -2363,7 +2363,7 @@ struct ppc_elf_link_hash_table asection *sgotplt; /* Short-cuts to frequently used symbols on VxWorks targets. */ - struct elf_link_hash_entry *hgot, *hplt; + struct elf_link_hash_entry *hplt; /* True if the target system is VxWorks. */ int is_vxworks; @@ -2734,6 +2734,20 @@ ppc_elf_add_symbol_hook (bfd *abfd, return TRUE; } +static bfd_boolean +create_sdata_sym (struct ppc_elf_link_hash_table *htab, + elf_linker_section_t *lsect) +{ + lsect->sym = elf_link_hash_lookup (&htab->elf, lsect->sym_name, + TRUE, FALSE, TRUE); + if (lsect->sym == NULL) + return FALSE; + if (lsect->sym->root.type == bfd_link_hash_new) + lsect->sym->non_elf = 0; + lsect->sym->ref_regular = 1; + return TRUE; +} + /* Create a special linker section. */ static bfd_boolean @@ -2760,7 +2774,7 @@ ppc_elf_create_linker_section (bfd *abfd return FALSE; lsect->section = s; - return TRUE; + return create_sdata_sym (htab, lsect); } /* Find a linker generated pointer with a given addend and type. */ @@ -3090,6 +3104,11 @@ ppc_elf_check_relocs (bfd *abfd, if (!elf_create_pointer_linker_section (abfd, &htab->sdata[0], h, rel)) return FALSE; + if (h != NULL) + { + ppc_elf_hash_entry (h)->has_sda_refs = TRUE; + h->non_got_ref = TRUE; + } break; /* Indirect .sdata2 relocation. */ @@ -3106,12 +3125,65 @@ ppc_elf_check_relocs (bfd *abfd, if (!elf_create_pointer_linker_section (abfd, &htab->sdata[1], h, rel)) return FALSE; + if (h != NULL) + { + ppc_elf_hash_entry (h)->has_sda_refs = TRUE; + h->non_got_ref = TRUE; + } break; case R_PPC_SDAREL16: + if (info->shared) + { + bad_shared_reloc (abfd, r_type); + return FALSE; + } + if (htab->sdata[0].sym == NULL + && !create_sdata_sym (htab, &htab->sdata[0])) + return FALSE; + if (h != NULL) + { + ppc_elf_hash_entry (h)->has_sda_refs = TRUE; + h->non_got_ref = TRUE; + } + break; + case R_PPC_EMB_SDA2REL: + if (info->shared) + { + bad_shared_reloc (abfd, r_type); + return FALSE; + } + if (htab->sdata[1].sym == NULL + && !create_sdata_sym (htab, &htab->sdata[1])) + return FALSE; + if (h != NULL) + { + ppc_elf_hash_entry (h)->has_sda_refs = TRUE; + h->non_got_ref = TRUE; + } + break; + case R_PPC_EMB_SDA21: case R_PPC_EMB_RELSDA: + if (info->shared) + { + bad_shared_reloc (abfd, r_type); + return FALSE; + } + if (htab->sdata[0].sym == NULL + && !create_sdata_sym (htab, &htab->sdata[0])) + return FALSE; + if (htab->sdata[1].sym == NULL + && !create_sdata_sym (htab, &htab->sdata[1])) + return FALSE; + if (h != NULL) + { + ppc_elf_hash_entry (h)->has_sda_refs = TRUE; + h->non_got_ref = TRUE; + } + break; + case R_PPC_EMB_NADDR32: case R_PPC_EMB_NADDR16: case R_PPC_EMB_NADDR16_LO: @@ -3123,11 +3195,7 @@ ppc_elf_check_relocs (bfd *abfd, return FALSE; } if (h != NULL) - { - ppc_elf_hash_entry (h)->has_sda_refs = TRUE; - /* We may need a copy reloc. */ - h->non_got_ref = TRUE; - } + h->non_got_ref = TRUE; break; case R_PPC_PLT32: @@ -3728,8 +3796,12 @@ ppc_elf_gc_sweep_hook (bfd *abfd, case R_PPC_ADDR14_BRNTAKEN: case R_PPC_UADDR32: case R_PPC_UADDR16: + if (info->shared) + break; + case R_PPC_PLT32: case R_PPC_PLTREL24: + case R_PPC_PLTREL32: case R_PPC_PLT16_LO: case R_PPC_PLT16_HI: case R_PPC_PLT16_HA: @@ -4042,24 +4114,6 @@ ppc_elf_adjust_dynamic_symbol (struct bf /* This is a reference to a symbol defined by a dynamic object which is not a function. */ - /* First, a fudge for old shared libs that export some symbols they - should not. */ - if (!h->def_regular - && (strcmp (h->root.root.string, "_SDA_BASE_") == 0 - || strcmp (h->root.root.string, "_SDA2_BASE_") == 0)) - { - /* These symbols will be defined later, as if they were defined in - a linker script. We don't want to use a definition in a shared - object. */ - const struct elf_backend_data *bed; - - bed = get_elf_backend_data (htab->elf.dynobj); - (*bed->elf_backend_hide_symbol) (info, h, TRUE); - h->root.type = bfd_link_hash_undefined; - h->root.u.undef.abfd = htab->elf.dynobj; - return TRUE; - } - /* If we are creating a shared library, we must presume that the only references to the symbol are via the global offset table. For such cases we need not do anything here; the relocations will @@ -4093,6 +4147,13 @@ ppc_elf_adjust_dynamic_symbol (struct bf } } + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic @@ -4646,15 +4707,13 @@ ppc_elf_size_dynamic_sections (bfd *outp if (htab->is_vxworks) { - /* Save the GOT and PLT symbols in the hash table for easy access. - Mark them as having relocations; they might not, but we won't - know for sure until we build the GOT in finish_dynamic_symbol. */ + /* Save the PLT symbol in the hash table for easy access. + Mark GOT and PLT syms as having relocations; they might not, + but we won't know for sure until we build the GOT in + finish_dynamic_symbol. */ - htab->hgot = elf_link_hash_lookup (elf_hash_table (info), - "_GLOBAL_OFFSET_TABLE_", - FALSE, FALSE, FALSE); - if (htab->hgot) - htab->hgot->indx = -2; + if (htab->elf.hgot) + htab->elf.hgot->indx = -2; htab->hplt = elf_link_hash_lookup (elf_hash_table (info), "_PROCEDURE_LINKAGE_TABLE_", FALSE, FALSE, FALSE); @@ -4672,14 +4731,17 @@ ppc_elf_size_dynamic_sections (bfd *outp { unsigned int g_o_t = 32768; - /* If we haven't allocated the header, do so now. */ + /* If we haven't allocated the header, do so now. When we get here, + for old plt/got the got size will be 0 to 32764 (not allocated), + or 32780 to 65536 (header allocated). For new plt/got, the + corresponding ranges are 0 to 32768 and 32780 to 65536. */ if (htab->got->size <= 32768) { g_o_t = htab->got->size; + if (htab->old_plt) + g_o_t += 4; htab->got->size += htab->got_header_size; } - if (htab->old_plt && !htab->is_vxworks) - g_o_t += 4; htab->elf.hgot->root.u.def.value = g_o_t; } @@ -5254,50 +5316,19 @@ ppc_elf_relax_section (bfd *abfd, return FALSE; } -/* Set _SDA_BASE_, _SDA2_BASE, and sbss start and end syms. They are - set here rather than via PROVIDE in the default linker script, - because using PROVIDE inside an output section statement results in - unnecessary output sections. Using PROVIDE outside an output section - statement runs the risk of section alignment affecting where the - section starts. */ +/* What to do when ld finds relocations against symbols defined in + discarded sections. */ -void -ppc_elf_set_sdata_syms (bfd *obfd, struct bfd_link_info *info) +static unsigned int +ppc_elf_action_discarded (asection *sec) { - struct ppc_elf_link_hash_table *htab; - unsigned i; - asection *s; - bfd_vma val; - - htab = ppc_elf_hash_table (info); - - for (i = 0; i < 2; i++) - { - elf_linker_section_t *lsect = &htab->sdata[i]; + if (strcmp (".fixup", sec->name) == 0) + return 0; - s = lsect->section; - if (s != NULL) - s = s->output_section; - if (s == NULL) - s = bfd_get_section_by_name (obfd, lsect->name); - if (s == NULL) - s = bfd_get_section_by_name (obfd, lsect->bss_name); - - if (s) - { - /* VxWorks executables are relocatable, so the sdata base symbols - must be section-relative. */ - val = 32768; - lsect->sym_val = val + s->vma; - } - else - { - val = 0; - lsect->sym_val = 0; - } + if (strcmp (".got2", sec->name) == 0) + return 0; - _bfd_elf_provide_symbol (info, lsect->sym_name, val, s); - } + return _bfd_elf_default_action_discarded (sec); } /* Fill in the address for a pointer generated in a linker section. */ @@ -6328,6 +6359,7 @@ ppc_elf_relocate_section (bfd *output_bf case R_PPC_SDAREL16: { const char *name; + struct elf_link_hash_entry *sh; BFD_ASSERT (sec != NULL); name = bfd_get_section_name (abfd, sec->output_section); @@ -6344,7 +6376,10 @@ ppc_elf_relocate_section (bfd *output_bf howto->name, name); } - addend -= htab->sdata[0].sym_val; + sh = htab->sdata[0].sym; + addend -= (sh->root.u.def.value + + sh->root.u.def.section->output_offset + + sh->root.u.def.section->output_section->vma); } break; @@ -6352,6 +6387,7 @@ ppc_elf_relocate_section (bfd *output_bf case R_PPC_EMB_SDA2REL: { const char *name; + struct elf_link_hash_entry *sh; BFD_ASSERT (sec != NULL); name = bfd_get_section_name (abfd, sec->output_section); @@ -6370,7 +6406,10 @@ ppc_elf_relocate_section (bfd *output_bf ret = FALSE; continue; } - addend -= htab->sdata[1].sym_val; + sh = htab->sdata[1].sym; + addend -= (sh->root.u.def.value + + sh->root.u.def.section->output_offset + + sh->root.u.def.section->output_section->vma); } break; @@ -6380,6 +6419,7 @@ ppc_elf_relocate_section (bfd *output_bf { const char *name; int reg; + struct elf_link_hash_entry *sh; BFD_ASSERT (sec != NULL); name = bfd_get_section_name (abfd, sec->output_section); @@ -6389,14 +6429,20 @@ ppc_elf_relocate_section (bfd *output_bf && (name[5] == 0 || name[5] == '.')))) { reg = 13; - addend -= htab->sdata[0].sym_val; + sh = htab->sdata[0].sym; + addend -= (sh->root.u.def.value + + sh->root.u.def.section->output_offset + + sh->root.u.def.section->output_section->vma); } else if (strncmp (name, ".sdata2", 7) == 0 || strncmp (name, ".sbss2", 6) == 0) { reg = 2; - addend -= htab->sdata[1].sym_val; + sh = htab->sdata[1].sym; + addend -= (sh->root.u.def.value + + sh->root.u.def.section->output_offset + + sh->root.u.def.section->output_section->vma); } else if (strcmp (name, ".PPC.EMB.sdata0") == 0 @@ -6658,10 +6704,11 @@ ppc_elf_finish_dynamic_symbol (bfd *outp } else { - bfd_vma got_loc = (got_offset - + htab->hgot->root.u.def.value - + htab->hgot->root.u.def.section->output_offset - + htab->hgot->root.u.def.section->output_section->vma); + bfd_vma got_loc + = (got_offset + + htab->elf.hgot->root.u.def.value + + htab->elf.hgot->root.u.def.section->output_offset + + htab->elf.hgot->root.u.def.section->output_section->vma); bfd_vma got_loc_hi = (got_loc >> 16) + ((got_loc & 0x8000) >> 15); @@ -6722,7 +6769,7 @@ ppc_elf_finish_dynamic_symbol (bfd *outp rela.r_offset = (htab->plt->output_section->vma + htab->plt->output_offset + ent->plt.offset + 2); - rela.r_info = ELF32_R_INFO (htab->hgot->indx, + rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_PPC_ADDR16_HA); rela.r_addend = got_offset; bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); @@ -6732,7 +6779,7 @@ ppc_elf_finish_dynamic_symbol (bfd *outp rela.r_offset = (htab->plt->output_section->vma + htab->plt->output_offset + ent->plt.offset + 6); - rela.r_info = ELF32_R_INFO (htab->hgot->indx, + rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_PPC_ADDR16_LO); rela.r_addend = got_offset; bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); @@ -7023,7 +7070,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou unsigned char *p = htab->got->contents; bfd_vma val; - p += elf_hash_table (info)->hgot->root.u.def.value; + p += htab->elf.hgot->root.u.def.value; if (htab->old_plt && !htab->is_vxworks) bfd_put_32 (output_bfd, 0x4e800021 /* blrl */, p - 4); @@ -7046,9 +7093,9 @@ ppc_elf_finish_dynamic_sections (bfd *ou if (!info->shared) { bfd_vma got_value = - (htab->hgot->root.u.def.section->output_section->vma - + htab->hgot->root.u.def.section->output_offset - + htab->hgot->root.u.def.value); + (htab->elf.hgot->root.u.def.section->output_section->vma + + htab->elf.hgot->root.u.def.section->output_offset + + htab->elf.hgot->root.u.def.value); bfd_vma got_hi = (got_value >> 16) + ((got_value & 0x8000) >> 15); bfd_put_32 (output_bfd, plt_entry[0] | (got_hi & 0xffff), @@ -7079,7 +7126,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou rela.r_offset = (htab->plt->output_section->vma + htab->plt->output_offset + 2); - rela.r_info = ELF32_R_INFO (htab->hgot->indx, R_PPC_ADDR16_HA); + rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_PPC_ADDR16_HA); rela.r_addend = 0; bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); loc += sizeof (Elf32_External_Rela); @@ -7088,7 +7135,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou rela.r_offset = (htab->plt->output_section->vma + htab->plt->output_offset + 6); - rela.r_info = ELF32_R_INFO (htab->hgot->indx, R_PPC_ADDR16_LO); + rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_PPC_ADDR16_LO); rela.r_addend = 0; bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); loc += sizeof (Elf32_External_Rela); @@ -7101,12 +7148,12 @@ ppc_elf_finish_dynamic_sections (bfd *ou Elf_Internal_Rela rel; bfd_elf32_swap_reloc_in (output_bfd, loc, &rel); - rel.r_info = ELF32_R_INFO (htab->hgot->indx, R_PPC_ADDR16_HA); + rel.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_PPC_ADDR16_HA); bfd_elf32_swap_reloc_out (output_bfd, &rel, loc); loc += sizeof (Elf32_External_Rela); bfd_elf32_swap_reloc_in (output_bfd, loc, &rel); - rel.r_info = ELF32_R_INFO (htab->hgot->indx, R_PPC_ADDR16_LO); + rel.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_PPC_ADDR16_LO); bfd_elf32_swap_reloc_out (output_bfd, &rel, loc); loc += sizeof (Elf32_External_Rela); @@ -7356,6 +7403,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou #define elf_backend_write_section ppc_elf_write_section #define elf_backend_get_sec_type_attr ppc_elf_get_sec_type_attr #define elf_backend_plt_sym_val ppc_elf_plt_sym_val +#define elf_backend_action_discarded ppc_elf_action_discarded #include "elf32-target.h" diff -uprN binutils-2.16.91.0.2/bfd/elf32-s390.c binutils-2.16.91.0.3/bfd/elf32-s390.c --- binutils-2.16.91.0.2/bfd/elf32-s390.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-s390.c 2005-08-22 12:27:41.000000000 -0700 @@ -1683,6 +1683,13 @@ elf_s390_adjust_dynamic_symbol (info, h) } } + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elf32-sh.c binutils-2.16.91.0.3/bfd/elf32-sh.c --- binutils-2.16.91.0.2/bfd/elf32-sh.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-sh.c 2005-08-22 12:27:41.000000000 -0700 @@ -3915,6 +3915,13 @@ sh_elf_adjust_dynamic_symbol (struct bfd return TRUE; } + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elf32-vax.c binutils-2.16.91.0.3/bfd/elf32-vax.c --- binutils-2.16.91.0.2/bfd/elf32-vax.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-vax.c 2005-08-22 12:27:41.000000000 -0700 @@ -1054,6 +1054,13 @@ elf_vax_adjust_dynamic_symbol (info, h) if (info->shared) return TRUE; + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elf32-xtensa.c binutils-2.16.91.0.3/bfd/elf32-xtensa.c --- binutils-2.16.91.0.2/bfd/elf32-xtensa.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf32-xtensa.c 2005-08-22 12:27:41.000000000 -0700 @@ -9487,14 +9487,8 @@ static const struct bfd_elf_special_sect #define TARGET_BIG_NAME "elf32-xtensa-be" #define ELF_ARCH bfd_arch_xtensa -/* The new EM_XTENSA value will be recognized beginning in the Xtensa T1040 - release. However, we still have to generate files with the EM_XTENSA_OLD - value so that pre-T1040 tools can read the files. As soon as we stop - caring about pre-T1040 tools, the following two values should be - swapped. At the same time, any other code that uses EM_XTENSA_OLD - should be changed to use EM_XTENSA. */ -#define ELF_MACHINE_CODE EM_XTENSA_OLD -#define ELF_MACHINE_ALT1 EM_XTENSA +#define ELF_MACHINE_CODE EM_XTENSA +#define ELF_MACHINE_ALT1 EM_XTENSA_OLD #if XCHAL_HAVE_MMU #define ELF_MAXPAGESIZE (1 << XCHAL_MMU_MIN_PTE_PAGE_SIZE) diff -uprN binutils-2.16.91.0.2/bfd/elf64-alpha.c binutils-2.16.91.0.3/bfd/elf64-alpha.c --- binutils-2.16.91.0.2/bfd/elf64-alpha.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf64-alpha.c 2005-08-22 12:27:41.000000000 -0700 @@ -1232,7 +1232,6 @@ elf64_alpha_create_dynamic_sections (bfd asection *s; flagword flags; struct elf_link_hash_entry *h; - struct bfd_link_hash_entry *bh; /* We need to create .plt, .rela.plt, .got, and .rela.got sections. */ @@ -1245,17 +1244,8 @@ elf64_alpha_create_dynamic_sections (bfd /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the .plt section. */ - bh = NULL; - if (! (_bfd_generic_link_add_one_symbol - (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, - (bfd_vma) 0, (const char *) NULL, FALSE, - get_elf_backend_data (abfd)->collect, &bh))) - return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->def_regular = 1; - h->type = STT_OBJECT; - - if (info->shared && ! bfd_elf_link_record_dynamic_symbol (info, h)) + if (!_bfd_elf_define_linkage_sym (abfd, info, s, + "_PROCEDURE_LINKAGE_TABLE_")) return FALSE; flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY @@ -1292,21 +1282,11 @@ elf64_alpha_create_dynamic_sections (bfd dynobj's .got section. We don't do this in the linker script because we don't want to define the symbol if we are not creating a global offset table. */ - bh = NULL; - if (!(_bfd_generic_link_add_one_symbol - (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, - alpha_elf_tdata(abfd)->got, (bfd_vma) 0, (const char *) NULL, - FALSE, get_elf_backend_data (abfd)->collect, &bh))) - return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->def_regular = 1; - h->type = STT_OBJECT; - - if (info->shared - && ! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - + h = _bfd_elf_define_linkage_sym (abfd, info, alpha_elf_tdata(abfd)->got, + "_GLOBAL_OFFSET_TABLE_"); elf_hash_table (info)->hgot = h; + if (h == NULL) + return FALSE; return TRUE; } diff -uprN binutils-2.16.91.0.2/bfd/elf64-hppa.c binutils-2.16.91.0.3/bfd/elf64-hppa.c --- binutils-2.16.91.0.2/bfd/elf64-hppa.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf64-hppa.c 2005-08-22 12:27:41.000000000 -0700 @@ -2643,9 +2643,14 @@ elf64_hppa_elf_get_symbol_type (elf_sym, static const struct bfd_elf_special_section elf64_hppa_special_sections[] = { - { ".fini", 5, 0, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, - { ".init", 5, 0, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, - { NULL, 0, 0, 0, 0 } + { ".fini", 5, 0, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, + { ".init", 5, 0, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, + { ".plt", 4, 0, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_PARISC_SHORT }, + { ".dlt", 4, 0, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_PARISC_SHORT }, + { ".sdata", 6, 0, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_PARISC_SHORT }, + { ".sbss", 5, 0, SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_PARISC_SHORT }, + { ".tbss", 5, 0, SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_PARISC_WEAKORDER }, + { NULL, 0, 0, 0, 0 } }; /* The hash bucket size is the standard one, namely 4. */ @@ -2745,6 +2750,7 @@ const struct elf_size_info hppa64_elf_si #define elf_backend_reloc_type_class elf64_hppa_reloc_type_class #define elf_backend_rela_normal 1 #define elf_backend_special_sections elf64_hppa_special_sections +#define elf_backend_action_discarded elf_hppa_action_discarded #include "elf64-target.h" diff -uprN binutils-2.16.91.0.2/bfd/elf64-mmix.c binutils-2.16.91.0.3/bfd/elf64-mmix.c --- binutils-2.16.91.0.2/bfd/elf64-mmix.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf64-mmix.c 2005-08-22 12:27:41.000000000 -0700 @@ -2184,7 +2184,10 @@ mmix_elf_add_symbol_hook (abfd, info, sy bfd_vma *valp ATTRIBUTE_UNUSED; { if (sym->st_shndx == SHN_REGISTER) - *secp = bfd_make_section_old_way (abfd, MMIX_REG_SECTION_NAME); + { + *secp = bfd_make_section_old_way (abfd, MMIX_REG_SECTION_NAME); + (*secp)->flags |= SEC_LINKER_CREATED; + } else if ((*namep)[0] == '_' && (*namep)[1] == '_' && (*namep)[2] == '.' && strncmp (*namep, MMIX_LOC_SECTION_START_SYMBOL_PREFIX, strlen (MMIX_LOC_SECTION_START_SYMBOL_PREFIX)) == 0) @@ -2261,9 +2264,12 @@ mmix_elf_final_link (abfd, info) if (bfd_get_section_flags (abfd, reg_section) & SEC_HAS_CONTENTS) _bfd_abort (__FILE__, __LINE__, _("Register section has contents\n")); - /* Really remove the section. */ - bfd_section_list_remove (abfd, reg_section); - --abfd->section_count; + /* Really remove the section, if it hasn't already been done. */ + if (!bfd_section_removed_from_list (abfd, reg_section)) + { + bfd_section_list_remove (abfd, reg_section); + --abfd->section_count; + } } if (! bfd_elf_final_link (abfd, info)) diff -uprN binutils-2.16.91.0.2/bfd/elf64-ppc.c binutils-2.16.91.0.3/bfd/elf64-ppc.c --- binutils-2.16.91.0.2/bfd/elf64-ppc.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf64-ppc.c 2005-08-22 12:27:41.000000000 -0700 @@ -5712,6 +5712,13 @@ ppc64_elf_adjust_dynamic_symbol (struct /* This is a reference to a symbol defined by a dynamic object which is not a function. */ + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic @@ -6461,8 +6468,9 @@ ppc64_elf_edit_opd (bfd *obfd, struct bf if (skip) { - if (!dec_dynrel_count (rel->r_info, sec, info, - NULL, h, sym_sec)) + if (!info->relocatable + && !dec_dynrel_count (rel->r_info, sec, info, + NULL, h, sym_sec)) goto error_ret; } else diff -uprN binutils-2.16.91.0.2/bfd/elf64-s390.c binutils-2.16.91.0.3/bfd/elf64-s390.c --- binutils-2.16.91.0.2/bfd/elf64-s390.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf64-s390.c 2005-08-22 12:27:41.000000000 -0700 @@ -1655,6 +1655,13 @@ elf_s390_adjust_dynamic_symbol (info, h) } } + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elf64-sh64.c binutils-2.16.91.0.3/bfd/elf64-sh64.c --- binutils-2.16.91.0.2/bfd/elf64-sh64.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf64-sh64.c 2005-08-22 12:27:41.000000000 -0700 @@ -3434,6 +3434,13 @@ sh64_elf64_adjust_dynamic_symbol (struct if (!h->non_got_ref) return TRUE; + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elf64-x86-64.c binutils-2.16.91.0.3/bfd/elf64-x86-64.c --- binutils-2.16.91.0.2/bfd/elf64-x86-64.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf64-x86-64.c 2005-08-22 12:27:41.000000000 -0700 @@ -73,7 +73,7 @@ static reloc_howto_type x86_64_elf_howto FALSE), HOWTO(R_X86_64_16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_X86_64_16", FALSE, 0xffff, 0xffff, FALSE), - HOWTO(R_X86_64_PC16,0, 1, 16, TRUE, 0, complain_overflow_signed, + HOWTO(R_X86_64_PC16,0, 1, 16, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_X86_64_PC16", FALSE, 0xffff, 0xffff, TRUE), HOWTO(R_X86_64_8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_X86_64_8", FALSE, 0xff, 0xff, FALSE), @@ -113,6 +113,13 @@ static reloc_howto_type x86_64_elf_howto bfd_elf_generic_reloc, "R_X86_64_GOTPC32", FALSE, 0xffffffff, 0xffffffff, TRUE), + /* We have a gap in the reloc numbers here. + R_X86_64_standard counts the number up to this point, and + R_X86_64_vt_offset is the value to subtract from a reloc type of + R_X86_64_GNU_VT* to form an index into this table. */ +#define R_X86_64_standard (R_X86_64_GOTPC32 + 1) +#define R_X86_64_vt_offset (R_X86_64_GNU_VTINHERIT - R_X86_64_standard) + /* GNU extension to record C++ vtable hierarchy. */ HOWTO (R_X86_64_GNU_VTINHERIT, 0, 4, 0, FALSE, 0, complain_overflow_dont, NULL, "R_X86_64_GNU_VTINHERIT", FALSE, 0, 0, FALSE), @@ -192,7 +199,7 @@ elf64_x86_64_info_to_howto (bfd *abfd AT if (r_type < (unsigned int) R_X86_64_GNU_VTINHERIT || r_type >= (unsigned int) R_X86_64_max) { - if (r_type > (unsigned int) R_X86_64_GOTPC32) + if (r_type >= (unsigned int) R_X86_64_standard) { (*_bfd_error_handler) (_("%B: invalid relocation type %d"), abfd, (int) r_type); @@ -201,7 +208,7 @@ elf64_x86_64_info_to_howto (bfd *abfd AT i = r_type; } else - i = r_type - ((unsigned int) R_X86_64_GNU_VTINHERIT - R_X86_64_GOTPC32 - 1); + i = r_type - (unsigned int) R_X86_64_vt_offset; cache_ptr->howto = &x86_64_elf_howto_table[i]; BFD_ASSERT (r_type == cache_ptr->howto->type); } @@ -1240,6 +1247,13 @@ elf64_x86_64_adjust_dynamic_symbol (stru } } + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic @@ -2906,6 +2920,184 @@ elf64_x86_64_section_from_shdr (bfd *abf return TRUE; } +/* Hook called by the linker routine which adds symbols from an object + file. We use it to put SHN_X86_64_LCOMMON items in .lbss, instead + of .bss. */ + +static bfd_boolean +elf64_x86_64_add_symbol_hook (bfd *abfd, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + Elf_Internal_Sym *sym, + const char **namep ATTRIBUTE_UNUSED, + flagword *flagsp ATTRIBUTE_UNUSED, + asection **secp, bfd_vma *valp) +{ + asection *lcomm; + + switch (sym->st_shndx) + { + case SHN_X86_64_LCOMMON: + lcomm = bfd_get_section_by_name (abfd, "LARGE_COMMON"); + if (lcomm == NULL) + { + lcomm = bfd_make_section_with_flags (abfd, + "LARGE_COMMON", + (SEC_ALLOC + | SEC_IS_COMMON + | SEC_LINKER_CREATED)); + if (lcomm == NULL) + return FALSE; + elf_section_flags (lcomm) |= SHF_X86_64_LARGE; + } + *secp = lcomm; + *valp = sym->st_size; + break; + } + return TRUE; +} + + +/* Given a BFD section, try to locate the corresponding ELF section + index. */ + +static bfd_boolean +elf64_x86_64_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED, + asection *sec, int *index) +{ + if (sec == &_bfd_elf_large_com_section) + { + *index = SHN_X86_64_LCOMMON; + return TRUE; + } + return FALSE; +} + +/* Process a symbol. */ + +static void +elf64_x86_64_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED, + asymbol *asym) +{ + elf_symbol_type *elfsym = (elf_symbol_type *) asym; + + switch (elfsym->internal_elf_sym.st_shndx) + { + case SHN_X86_64_LCOMMON: + asym->section = &_bfd_elf_large_com_section; + asym->value = elfsym->internal_elf_sym.st_size; + /* Common symbol doesn't set BSF_GLOBAL. */ + asym->flags &= ~BSF_GLOBAL; + break; + } +} + +static bfd_boolean +elf64_x86_64_common_definition (Elf_Internal_Sym *sym) +{ + return (sym->st_shndx == SHN_COMMON + || sym->st_shndx == SHN_X86_64_LCOMMON); +} + +static unsigned int +elf64_x86_64_common_section_index (asection *sec) +{ + if ((elf_section_flags (sec) & SHF_X86_64_LARGE) == 0) + return SHN_COMMON; + else + return SHN_X86_64_LCOMMON; +} + +static asection * +elf64_x86_64_common_section (asection *sec) +{ + if ((elf_section_flags (sec) & SHF_X86_64_LARGE) == 0) + return bfd_com_section_ptr; + else + return &_bfd_elf_large_com_section; +} + +static bfd_boolean +elf64_x86_64_merge_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct elf_link_hash_entry **sym_hash ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym, + asection **psec, + bfd_vma *pvalue ATTRIBUTE_UNUSED, + unsigned int *pold_alignment ATTRIBUTE_UNUSED, + bfd_boolean *skip ATTRIBUTE_UNUSED, + bfd_boolean *override ATTRIBUTE_UNUSED, + bfd_boolean *type_change_ok ATTRIBUTE_UNUSED, + bfd_boolean *size_change_ok ATTRIBUTE_UNUSED, + bfd_boolean *newdef ATTRIBUTE_UNUSED, + bfd_boolean *newdyn, + bfd_boolean *newdyncommon ATTRIBUTE_UNUSED, + bfd_boolean *newweak ATTRIBUTE_UNUSED, + bfd *abfd ATTRIBUTE_UNUSED, + asection **sec, + bfd_boolean *olddef ATTRIBUTE_UNUSED, + bfd_boolean *olddyn, + bfd_boolean *olddyncommon ATTRIBUTE_UNUSED, + bfd_boolean *oldweak ATTRIBUTE_UNUSED, + bfd *oldbfd, + asection **oldsec) +{ + /* A normal common symbol and a large common symbol result in a + normal common symbol. We turn the large common symbol into a + normal one. */ + if (!*olddyn + && h->root.type == bfd_link_hash_common + && !*newdyn + && bfd_is_com_section (*sec) + && *oldsec != *sec) + { + if (sym->st_shndx == SHN_COMMON + && (elf_section_flags (*oldsec) & SHF_X86_64_LARGE) != 0) + { + h->root.u.c.p->section + = bfd_make_section_old_way (oldbfd, "COMMON"); + h->root.u.c.p->section->flags = SEC_ALLOC; + } + else if (sym->st_shndx == SHN_X86_64_LCOMMON + && (elf_section_flags (*oldsec) & SHF_X86_64_LARGE) == 0) + *psec = *sec = bfd_com_section_ptr; + } + + return TRUE; +} + +static int +elf64_x86_64_additional_program_headers (bfd *abfd) +{ + asection *s; + int count = 0; + + /* Check to see if we need a large readonly segment. */ + s = bfd_get_section_by_name (abfd, ".lrodata"); + if (s && (s->flags & SEC_LOAD)) + count++; + + /* Check to see if we need a large data segment. Since .lbss sections + is placed right after the .bss section, there should be no need for + a large data segment just because of .lbss. */ + s = bfd_get_section_by_name (abfd, ".ldata"); + if (s && (s->flags & SEC_LOAD)) + count++; + + return count; +} + +static const struct bfd_elf_special_section + elf64_x86_64_special_sections[]= +{ + { ".gnu.linkonce.lb", 16, -2, SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_X86_64_LARGE}, + { ".gnu.linkonce.lr", 16, -2, SHT_PROGBITS, SHF_ALLOC + SHF_X86_64_LARGE}, + { ".gnu.linkonce.lt", 16, -2, SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR + SHF_X86_64_LARGE}, + { ".lbss", 5, -2, SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_X86_64_LARGE}, + { ".ldata", 6, -2, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_X86_64_LARGE}, + { ".lrodata", 8, -2, SHT_PROGBITS, SHF_ALLOC + SHF_X86_64_LARGE}, + { NULL, 0, 0, 0, 0 } +}; + #define TARGET_LITTLE_SYM bfd_elf64_x86_64_vec #define TARGET_LITTLE_NAME "elf64-x86-64" #define ELF_ARCH bfd_arch_i386 @@ -2946,4 +3138,23 @@ elf64_x86_64_section_from_shdr (bfd *abf #define elf_backend_section_from_shdr \ elf64_x86_64_section_from_shdr +#define elf_backend_section_from_bfd_section \ + elf64_x86_64_elf_section_from_bfd_section +#define elf_backend_add_symbol_hook \ + elf64_x86_64_add_symbol_hook +#define elf_backend_symbol_processing \ + elf64_x86_64_symbol_processing +#define elf_backend_common_section_index \ + elf64_x86_64_common_section_index +#define elf_backend_common_section \ + elf64_x86_64_common_section +#define elf_backend_common_definition \ + elf64_x86_64_common_definition +#define elf_backend_merge_symbol \ + elf64_x86_64_merge_symbol +#define elf_backend_special_sections \ + elf64_x86_64_special_sections +#define elf_backend_additional_program_headers \ + elf64_x86_64_additional_program_headers + #include "elf64-target.h" diff -uprN binutils-2.16.91.0.2/bfd/elf-bfd.h binutils-2.16.91.0.3/bfd/elf-bfd.h --- binutils-2.16.91.0.2/bfd/elf-bfd.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf-bfd.h 2005-08-22 12:27:41.000000000 -0700 @@ -546,6 +546,12 @@ struct bfd_elf_special_section int attr; }; +enum action_discarded + { + COMPLAIN = 1, + PRETEND = 2 + }; + struct elf_backend_data { /* The architecture for this backend. */ @@ -918,6 +924,11 @@ struct elf_backend_data bfd_boolean (*elf_backend_ignore_discarded_relocs) (asection *); + /* What to do when ld finds relocations against symbols defined in + discarded sections. */ + unsigned int (*action_discarded) + (asection *); + /* This function returns the width of FDE pointers in bytes, or 0 if that can't be determined for some reason. The default definition goes by the bfd's EI_CLASS. */ @@ -969,6 +980,30 @@ struct elf_backend_data see elf.c. */ bfd_vma (*plt_sym_val) (bfd_vma, const asection *, const arelent *); + /* Is symbol defined in common section? */ + bfd_boolean (*common_definition) (Elf_Internal_Sym *); + + /* Return a common section index for section. */ + unsigned int (*common_section_index) (asection *); + + /* Return a common section for section. */ + asection *(*common_section) (asection *); + + /* Return TRUE if we can merge 2 definitions. */ + bfd_boolean (*merge_symbol) (struct bfd_link_info *, + struct elf_link_hash_entry **, + struct elf_link_hash_entry *, + Elf_Internal_Sym *, asection **, + bfd_vma *, unsigned int *, + bfd_boolean *, bfd_boolean *, + bfd_boolean *, bfd_boolean *, + bfd_boolean *, bfd_boolean *, + bfd_boolean *, bfd_boolean *, + bfd *, asection **, + bfd_boolean *, bfd_boolean *, + bfd_boolean *, bfd_boolean *, + bfd *, asection **); + /* Used to handle bad SHF_LINK_ORDER input. */ bfd_error_handler_type link_order_error_handler; @@ -1604,6 +1639,8 @@ extern bfd_boolean _bfd_elf_create_dynam (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_elf_create_got_section (bfd *, struct bfd_link_info *); +extern struct elf_link_hash_entry *_bfd_elf_define_linkage_sym + (bfd *, struct bfd_link_info *, asection *, const char *); extern bfd_boolean _bfd_elfcore_make_pseudosection (bfd *, char *, size_t, ufile_ptr); @@ -1741,6 +1778,15 @@ extern int bfd_elf_link_record_local_dyn extern bfd_boolean _bfd_elf_close_and_cleanup (bfd *); +extern bfd_boolean _bfd_elf_common_definition + (Elf_Internal_Sym *); + +extern unsigned int _bfd_elf_common_section_index + (asection *); + +extern asection *_bfd_elf_common_section + (asection *); + extern void _bfd_dwarf2_cleanup_debug_info (bfd *); @@ -1801,6 +1847,9 @@ extern bfd *_bfd_elf64_bfd_from_remote_m (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep, int (*target_read_memory) (bfd_vma, bfd_byte *, int)); +/* Large common section. */ +extern asection _bfd_elf_large_com_section; + /* SH ELF specific routine. */ extern bfd_boolean _sh_elf_set_mach_from_flags diff -uprN binutils-2.16.91.0.2/bfd/elf.c binutils-2.16.91.0.3/bfd/elf.c --- binutils-2.16.91.0.2/bfd/elf.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf.c 2005-08-22 12:27:41.000000000 -0700 @@ -2618,7 +2618,7 @@ elf_fake_sections (bfd *abfd, asection * return; } - this_hdr->sh_flags = 0; + /* Don't clear sh_flags. Assembler may set additional bits. */ if ((asect->flags & SEC_ALLOC) != 0 || asect->user_set_vma) @@ -8456,3 +8456,9 @@ done: return result; } + +/* It is only used by x86-64 so far. */ +asection _bfd_elf_large_com_section + = BFD_FAKE_SECTION (_bfd_elf_large_com_section, + SEC_IS_COMMON, NULL, NULL, "LARGE_COMMON", + 0); diff -uprN binutils-2.16.91.0.2/bfd/elf-hppa.h binutils-2.16.91.0.3/bfd/elf-hppa.h --- binutils-2.16.91.0.2/bfd/elf-hppa.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf-hppa.h 2005-08-22 12:27:41.000000000 -0700 @@ -1,5 +1,5 @@ /* Common code for PA ELF implementations. - Copyright 1999, 2000, 2001, 2002, 2003, 2004 + Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -1057,6 +1057,18 @@ static bfd_boolean elf_hppa_sort_unwind return TRUE; } +/* What to do when ld finds relocations against symbols defined in + discarded sections. */ + +static unsigned int +elf_hppa_action_discarded (asection *sec) +{ + if (strcmp (".PARISC.unwind", sec->name) == 0) + return 0; + + return _bfd_elf_default_action_discarded (sec); +} + #if ARCH_SIZE == 64 /* Hook called by the linker routine which adds symbols from an object file. HP's libraries define symbols with HP specific section diff -uprN binutils-2.16.91.0.2/bfd/elflink.c binutils-2.16.91.0.3/bfd/elflink.c --- binutils-2.16.91.0.2/bfd/elflink.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elflink.c 2005-08-22 12:27:41.000000000 -0700 @@ -27,13 +27,50 @@ #include "safe-ctype.h" #include "libiberty.h" +/* Define a symbol in a dynamic linkage section. */ + +struct elf_link_hash_entry * +_bfd_elf_define_linkage_sym (bfd *abfd, + struct bfd_link_info *info, + asection *sec, + const char *name) +{ + struct elf_link_hash_entry *h; + struct bfd_link_hash_entry *bh; + const struct elf_backend_data *bed; + + h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE); + if (h != NULL) + { + /* Zap symbol defined in an as-needed lib that wasn't linked. + This is a symptom of a larger problem: Absolute symbols + defined in shared libraries can't be overridden, because we + lose the link to the bfd which is via the symbol section. */ + h->root.type = bfd_link_hash_new; + } + + bh = &h->root; + if (!_bfd_generic_link_add_one_symbol (info, abfd, name, BSF_GLOBAL, + sec, 0, NULL, FALSE, + get_elf_backend_data (abfd)->collect, + &bh)) + return NULL; + h = (struct elf_link_hash_entry *) bh; + h->def_regular = 1; + h->type = STT_OBJECT; + h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN; + + bed = get_elf_backend_data (abfd); + (*bed->elf_backend_hide_symbol) (info, h, TRUE); + return h; +} + bfd_boolean _bfd_elf_create_got_section (bfd *abfd, struct bfd_link_info *info) { flagword flags; asection *s; struct elf_link_hash_entry *h; - struct bfd_link_hash_entry *bh; const struct elf_backend_data *bed = get_elf_backend_data (abfd); int ptralign; @@ -78,21 +115,10 @@ _bfd_elf_create_got_section (bfd *abfd, (or .got.plt) section. We don't do this in the linker script because we don't want to define the symbol if we are not creating a global offset table. */ - bh = NULL; - if (!(_bfd_generic_link_add_one_symbol - (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s, - 0, NULL, FALSE, bed->collect, &bh))) - return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->def_regular = 1; - h->type = STT_OBJECT; - h->other = STV_HIDDEN; - - if (! info->executable - && ! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - + h = _bfd_elf_define_linkage_sym (abfd, info, s, "_GLOBAL_OFFSET_TABLE_"); elf_hash_table (info)->hgot = h; + if (h == NULL) + return FALSE; } /* The first bit of the global offset table is the header. */ @@ -132,8 +158,6 @@ _bfd_elf_link_create_dynamic_sections (b { flagword flags; register asection *s; - struct elf_link_hash_entry *h; - struct bfd_link_hash_entry *bh; const struct elf_backend_data *bed; if (! is_elf_hash_table (info->hash)) @@ -212,27 +236,7 @@ _bfd_elf_link_create_dynamic_sections (b section. We don't want to define it if there is no .dynamic section, since on some ELF platforms the start up code examines it to decide how to initialize the process. */ - h = elf_link_hash_lookup (elf_hash_table (info), "_DYNAMIC", - FALSE, FALSE, FALSE); - if (h != NULL) - { - /* Zap symbol defined in an as-needed lib that wasn't linked. - This is a symptom of a larger problem: Absolute symbols - defined in shared libraries can't be overridden, because we - lose the link to the bfd which is via the symbol section. */ - h->root.type = bfd_link_hash_new; - } - bh = &h->root; - if (! (_bfd_generic_link_add_one_symbol - (info, abfd, "_DYNAMIC", BSF_GLOBAL, s, 0, NULL, FALSE, - get_elf_backend_data (abfd)->collect, &bh))) - return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->def_regular = 1; - h->type = STT_OBJECT; - - if (! info->executable - && ! bfd_elf_link_record_dynamic_symbol (info, h)) + if (!_bfd_elf_define_linkage_sym (abfd, info, s, "_DYNAMIC")) return FALSE; s = bfd_make_section_with_flags (abfd, ".hash", @@ -282,25 +286,12 @@ _bfd_elf_create_dynamic_sections (bfd *a || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment)) return FALSE; - if (bed->want_plt_sym) - { - /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the - .plt section. */ - struct elf_link_hash_entry *h; - struct bfd_link_hash_entry *bh = NULL; - - if (! (_bfd_generic_link_add_one_symbol - (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, 0, NULL, - FALSE, get_elf_backend_data (abfd)->collect, &bh))) - return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->def_regular = 1; - h->type = STT_OBJECT; - - if (! info->executable - && ! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - } + /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the + .plt section. */ + if (bed->want_plt_sym + && !_bfd_elf_define_linkage_sym (abfd, info, s, + "_PROCEDURE_LINKAGE_TABLE_")) + return FALSE; s = bfd_make_section_with_flags (abfd, (bed->default_use_rela_p @@ -744,7 +735,8 @@ _bfd_elf_link_renumber_dynsyms (bfd *out if (dynsymcount != 0) ++dynsymcount; - return elf_hash_table (info)->dynsymcount = dynsymcount; + elf_hash_table (info)->dynsymcount = dynsymcount; + return dynsymcount; } /* This function is called when we want to define a new symbol. It @@ -780,6 +772,7 @@ _bfd_elf_merge_symbol (bfd *abfd, bfd *oldbfd; bfd_boolean newdyn, olddyn, olddef, newdef, newdyncommon, olddyncommon; bfd_boolean newweak, oldweak; + const struct elf_backend_data *bed; *skip = FALSE; *override = FALSE; @@ -1121,6 +1114,19 @@ _bfd_elf_merge_symbol (bfd *abfd, else olddyncommon = FALSE; + /* We now know everything about the old and new symbols. We ask the + backend to check if we can merge them. */ + bed = get_elf_backend_data (abfd); + if (bed->merge_symbol + && !bed->merge_symbol (info, sym_hash, h, sym, psec, pvalue, + pold_alignment, skip, override, + type_change_ok, size_change_ok, + &newdyn, &newdef, &newdyncommon, &newweak, + abfd, &sec, + &olddyn, &olddef, &olddyncommon, &oldweak, + oldbfd, &oldsec)) + return FALSE; + /* If both the old and the new symbols look like common symbols in a dynamic object, set the size of the symbol to the larger of the two. */ @@ -1197,12 +1203,12 @@ _bfd_elf_merge_symbol (bfd *abfd, newdef = FALSE; newdyncommon = FALSE; *pvalue = sym->st_size; - *psec = sec = bfd_com_section_ptr; + *psec = sec = bed->common_section (oldsec); *size_change_ok = TRUE; } /* Skip weak definitions of symbols that are already defined. */ - if (newdef && olddef && newweak && !oldweak) + if (newdef && olddef && newweak) *skip = TRUE; /* If the old symbol is from a dynamic object, and the new symbol is @@ -2641,6 +2647,8 @@ static bfd_boolean is_global_data_symbol_definition (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Sym *sym) { + const struct elf_backend_data *bed; + /* Local symbols do not count, but target specific ones might. */ if (ELF_ST_BIND (sym->st_info) != STB_GLOBAL && ELF_ST_BIND (sym->st_info) < STB_LOOS) @@ -2656,7 +2664,8 @@ is_global_data_symbol_definition (bfd *a /* If the symbol is defined in the common section, then it is a common definition and so does not count. */ - if (sym->st_shndx == SHN_COMMON) + bed = get_elf_backend_data (abfd); + if (bed->common_definition (sym)) return FALSE; /* If the symbol is in a target specific section then we @@ -3548,6 +3557,7 @@ elf_link_add_object_symbols (bfd *abfd, bfd_boolean type_change_ok; bfd_boolean new_weakdef; bfd_boolean override; + bfd_boolean common; unsigned int old_alignment; bfd *old_bfd; @@ -3557,6 +3567,7 @@ elf_link_add_object_symbols (bfd *abfd, sec = NULL; value = isym->st_value; *sym_hash = NULL; + common = bed->common_definition (isym); bind = ELF_ST_BIND (isym->st_info); if (bind == STB_LOCAL) @@ -3569,8 +3580,7 @@ elf_link_add_object_symbols (bfd *abfd, } else if (bind == STB_GLOBAL) { - if (isym->st_shndx != SHN_UNDEF - && isym->st_shndx != SHN_COMMON) + if (isym->st_shndx != SHN_UNDEF && !common) flags = BSF_GLOBAL; } else if (bind == STB_WEAK) @@ -3861,13 +3871,12 @@ elf_link_add_object_symbols (bfd *abfd, } /* Set the alignment of a common symbol. */ - if ((isym->st_shndx == SHN_COMMON - || bfd_is_com_section (sec)) + if ((common || bfd_is_com_section (sec)) && h->root.type == bfd_link_hash_common) { unsigned int align; - if (isym->st_shndx == SHN_COMMON) + if (common) align = bfd_log2 (isym->st_value); else { @@ -3893,7 +3902,7 @@ elf_link_add_object_symbols (bfd *abfd, definition or a common symbol is ignored due to the old normal definition. We need to make sure the maximum alignment is maintained. */ - if ((old_alignment || isym->st_shndx == SHN_COMMON) + if ((old_alignment || common) && h->root.type != bfd_link_hash_common) { unsigned int common_align; @@ -5015,6 +5024,7 @@ bfd_elf_size_dynamic_sections (bfd *outp asection *dynstr; struct bfd_elf_version_tree *t; struct bfd_elf_version_expr *d; + asection *s; bfd_boolean all_defined; *sinterpptr = bfd_get_section_by_name (dynobj, ".interp"); @@ -5218,7 +5228,8 @@ bfd_elf_size_dynamic_sections (bfd *outp return FALSE; } - if (bfd_get_section_by_name (output_bfd, ".preinit_array") != NULL) + s = bfd_get_section_by_name (output_bfd, ".preinit_array"); + if (s != NULL && s->linker_has_input) { /* DT_PREINIT_ARRAY is not allowed in shared library. */ if (! info->executable) @@ -5246,13 +5257,15 @@ bfd_elf_size_dynamic_sections (bfd *outp || !_bfd_elf_add_dynamic_entry (info, DT_PREINIT_ARRAYSZ, 0)) return FALSE; } - if (bfd_get_section_by_name (output_bfd, ".init_array") != NULL) + s = bfd_get_section_by_name (output_bfd, ".init_array"); + if (s != NULL && s->linker_has_input) { if (!_bfd_elf_add_dynamic_entry (info, DT_INIT_ARRAY, 0) || !_bfd_elf_add_dynamic_entry (info, DT_INIT_ARRAYSZ, 0)) return FALSE; } - if (bfd_get_section_by_name (output_bfd, ".fini_array") != NULL) + s = bfd_get_section_by_name (output_bfd, ".fini_array"); + if (s != NULL && s->linker_has_input) { if (!_bfd_elf_add_dynamic_entry (info, DT_FINI_ARRAY, 0) || !_bfd_elf_add_dynamic_entry (info, DT_FINI_ARRAYSZ, 0)) @@ -6498,7 +6511,7 @@ elf_link_output_extsym (struct elf_link_ case bfd_link_hash_common: input_sec = h->root.u.c.p->section; - sym.st_shndx = SHN_COMMON; + sym.st_shndx = bed->common_section_index (input_sec); sym.st_value = 1 << h->root.u.c.p->alignment_power; break; @@ -6673,12 +6686,6 @@ elf_section_ignore_discarded_relocs (ase return FALSE; } -enum action_discarded - { - COMPLAIN = 1, - PRETEND = 2 - }; - /* Return a mask saying how ld should treat relocations in SEC against symbols defined in discarded sections. If this function returns COMPLAIN set, ld will issue a warning message. If this function @@ -6688,8 +6695,8 @@ enum action_discarded zero the reloc (at least that is the intent, but some cooperation by the target dependent code is needed, particularly for REL targets). */ -static unsigned int -elf_action_discarded (asection *sec) +unsigned int +_bfd_elf_default_action_discarded (asection *sec) { if (sec->flags & SEC_DEBUGGING) return PRETEND; @@ -6700,12 +6707,6 @@ elf_action_discarded (asection *sec) if (strcmp (".gcc_except_table", sec->name) == 0) return 0; - if (strcmp (".PARISC.unwind", sec->name) == 0) - return 0; - - if (strcmp (".fixup", sec->name) == 0) - return 0; - return COMPLAIN | PRETEND; } @@ -7025,7 +7026,7 @@ elf_link_input_bfd (struct elf_final_lin if (!elf_section_ignore_discarded_relocs (o)) { Elf_Internal_Rela *rel, *relend; - unsigned int action = elf_action_discarded (o); + unsigned int action = (*bed->action_discarded) (o); rel = internal_relocs; relend = rel + o->reloc_count * bed->s->int_rels_per_ext_rel; @@ -7089,7 +7090,7 @@ elf_link_input_bfd (struct elf_final_lin if (action & COMPLAIN) (*finfo->info->callbacks->einfo) (_("%X`%s' referenced in section `%A' of %B: " - "defined in discarded section `%A' of %B"), + "defined in discarded section `%A' of %B\n"), sym_name, o, input_bfd, sec, sec->owner); /* Try to do the best we can to support buggy old @@ -8851,19 +8852,26 @@ _bfd_elf_gc_mark (struct bfd_link_info * /* Sweep symbols in swept sections. Called via elf_link_hash_traverse. */ +struct elf_gc_sweep_symbol_info { + struct bfd_link_info *info; + void (*hide_symbol) (struct bfd_link_info *, struct elf_link_hash_entry *, + bfd_boolean); +}; + static bfd_boolean -elf_gc_sweep_symbol (struct elf_link_hash_entry *h, void *idxptr) +elf_gc_sweep_symbol (struct elf_link_hash_entry *h, void *data) { - int *idx = idxptr; - if (h->root.type == bfd_link_hash_warning) h = (struct elf_link_hash_entry *) h->root.u.i.link; - if (h->dynindx != -1 - && ((h->root.type != bfd_link_hash_defined - && h->root.type != bfd_link_hash_defweak) - || h->root.u.def.section->gc_mark)) - h->dynindx = (*idx)++; + if ((h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && !h->root.u.def.section->gc_mark + && !(h->root.u.def.section->owner->flags & DYNAMIC)) + { + struct elf_gc_sweep_symbol_info *inf = data; + (*inf->hide_symbol) (inf->info, h, TRUE); + } return TRUE; } @@ -8874,9 +8882,13 @@ typedef bfd_boolean (*gc_sweep_hook_fn) (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *); static bfd_boolean -elf_gc_sweep (struct bfd_link_info *info, gc_sweep_hook_fn gc_sweep_hook) +elf_gc_sweep (bfd *abfd, struct bfd_link_info *info) { bfd *sub; + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + gc_sweep_hook_fn gc_sweep_hook = bed->gc_sweep_hook; + unsigned long section_sym_count; + struct elf_gc_sweep_symbol_info sweep_info; for (sub = info->input_bfds; sub != NULL; sub = sub->link_next) { @@ -8895,41 +8907,6 @@ elf_gc_sweep (struct bfd_link_info *info if (o->gc_mark) continue; - /* Keep .gcc_except_table.* if the associated .text.* is - marked. This isn't very nice, but the proper solution, - splitting .eh_frame up and using comdat doesn't pan out - easily due to needing special relocs to handle the - difference of two symbols in separate sections. - Don't keep code sections referenced by .eh_frame. */ - if (o->gc_mark_from_eh && (o->flags & SEC_CODE) == 0) - { - if (strncmp (o->name, ".gcc_except_table.", 18) == 0) - { - unsigned long len; - char *fn_name; - asection *fn_text; - - len = strlen (o->name + 18) + 1; - fn_name = bfd_malloc (len + 6); - if (fn_name == NULL) - return FALSE; - memcpy (fn_name, ".text.", 6); - memcpy (fn_name + 6, o->name + 18, len); - fn_text = bfd_get_section_by_name (sub, fn_name); - free (fn_name); - if (fn_text != NULL && fn_text->gc_mark) - o->gc_mark = 1; - } - - /* If not using specially named exception table section, - then keep whatever we are using. */ - else - o->gc_mark = 1; - - if (o->gc_mark) - continue; - } - /* Skip sweeping sections already excluded. */ if (o->flags & SEC_EXCLUDE) continue; @@ -8968,14 +8945,12 @@ elf_gc_sweep (struct bfd_link_info *info /* Remove the symbols that were in the swept sections from the dynamic symbol table. GCFIXME: Anyone know how to get them out of the static symbol table as well? */ - { - int i = 0; - - elf_link_hash_traverse (elf_hash_table (info), elf_gc_sweep_symbol, &i); - - elf_hash_table (info)->dynsymcount = i; - } + sweep_info.info = info; + sweep_info.hide_symbol = bed->elf_backend_hide_symbol; + elf_link_hash_traverse (elf_hash_table (info), elf_gc_sweep_symbol, + &sweep_info); + _bfd_elf_link_renumber_dynsyms (abfd, info, §ion_sym_count); return TRUE; } @@ -9090,19 +9065,25 @@ elf_gc_smash_unused_vtentry_relocs (stru return TRUE; } -/* Mark sections containing dynamically referenced symbols. This is called - through elf_link_hash_traverse. */ +/* Mark sections containing dynamically referenced symbols. When + building shared libraries, we must assume that any visible symbol is + referenced. */ static bfd_boolean -elf_gc_mark_dynamic_ref_symbol (struct elf_link_hash_entry *h, - void *okp ATTRIBUTE_UNUSED) +elf_gc_mark_dynamic_ref_symbol (struct elf_link_hash_entry *h, void *inf) { + struct bfd_link_info *info = (struct bfd_link_info *) inf; + if (h->root.type == bfd_link_hash_warning) h = (struct elf_link_hash_entry *) h->root.u.i.link; if ((h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) - && h->ref_dynamic) + && (h->ref_dynamic + || (info->shared + && h->def_regular + && ELF_ST_VISIBILITY (h->other) != STV_INTERNAL + && ELF_ST_VISIBILITY (h->other) != STV_HIDDEN))) h->root.u.def.section->flags |= SEC_KEEP; return TRUE; @@ -9122,7 +9103,6 @@ bfd_elf_gc_sections (bfd *abfd, struct b if (!get_elf_backend_data (abfd)->can_gc_sections || info->relocatable || info->emitrelocations - || info->shared || !is_elf_hash_table (info->hash)) { (*_bfd_error_handler)(_("Warning: gc-sections option ignored")); @@ -9147,9 +9127,7 @@ bfd_elf_gc_sections (bfd *abfd, struct b if (elf_hash_table (info)->dynamic_sections_created) elf_link_hash_traverse (elf_hash_table (info), elf_gc_mark_dynamic_ref_symbol, - &ok); - if (!ok) - return FALSE; + info); /* Grovel through relocs to find out who stays ... */ gc_mark_hook = get_elf_backend_data (abfd)->gc_mark_hook; @@ -9166,11 +9144,50 @@ bfd_elf_gc_sections (bfd *abfd, struct b return FALSE; } - /* ... and mark SEC_EXCLUDE for those that go. */ - if (!elf_gc_sweep (info, get_elf_backend_data (abfd)->gc_sweep_hook)) - return FALSE; + /* ... again for sections marked from eh_frame. */ + for (sub = info->input_bfds; sub != NULL; sub = sub->link_next) + { + asection *o; - return TRUE; + if (bfd_get_flavour (sub) != bfd_target_elf_flavour) + continue; + + /* Keep .gcc_except_table.* if the associated .text.* is + marked. This isn't very nice, but the proper solution, + splitting .eh_frame up and using comdat doesn't pan out + easily due to needing special relocs to handle the + difference of two symbols in separate sections. + Don't keep code sections referenced by .eh_frame. */ + for (o = sub->sections; o != NULL; o = o->next) + if (!o->gc_mark && o->gc_mark_from_eh && (o->flags & SEC_CODE) == 0) + { + if (strncmp (o->name, ".gcc_except_table.", 18) == 0) + { + unsigned long len; + char *fn_name; + asection *fn_text; + + len = strlen (o->name + 18) + 1; + fn_name = bfd_malloc (len + 6); + if (fn_name == NULL) + return FALSE; + memcpy (fn_name, ".text.", 6); + memcpy (fn_name + 6, o->name + 18, len); + fn_text = bfd_get_section_by_name (sub, fn_name); + free (fn_name); + if (fn_text == NULL || !fn_text->gc_mark) + continue; + } + + /* If not using specially named exception table section, + then keep whatever we are using. */ + if (!_bfd_elf_gc_mark (info, o, gc_mark_hook)) + return FALSE; + } + } + + /* ... and mark SEC_EXCLUDE for those that go. */ + return elf_gc_sweep (abfd, info); } /* Called from check_relocs to record the existence of a VTINHERIT reloc. */ @@ -9820,83 +9837,20 @@ _bfd_elf_section_already_linked (bfd *ab bfd_section_already_linked_table_insert (already_linked_list, sec); } -static void -bfd_elf_set_symbol (struct elf_link_hash_entry *h, bfd_vma val, - struct bfd_section *s) -{ - h->root.type = bfd_link_hash_defined; - h->root.u.def.section = s ? s : bfd_abs_section_ptr; - h->root.u.def.value = val; - h->def_regular = 1; - h->type = STT_OBJECT; - h->other = STV_HIDDEN | (h->other & ~ ELF_ST_VISIBILITY (-1)); - h->forced_local = 1; -} - -/* Set NAME to VAL if the symbol exists and is not defined in a regular - object file. If S is NULL it is an absolute symbol, otherwise it is - relative to that section. */ - -void -_bfd_elf_provide_symbol (struct bfd_link_info *info, const char *name, - bfd_vma val, struct bfd_section *s) +bfd_boolean +_bfd_elf_common_definition (Elf_Internal_Sym *sym) { - struct elf_link_hash_entry *h; - - bfd_elf_record_link_assignment (info, name, TRUE); - - h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE); - if (h != NULL - && !(h->root.type == bfd_link_hash_defined - && h->root.u.def.section != NULL - && h->root.u.def.section != h->root.u.def.section->output_section)) - bfd_elf_set_symbol (h, val, s); + return sym->st_shndx == SHN_COMMON; } -/* Set START and END to boundaries of SEC if they exist and are not - defined in regular object files. */ - -void -_bfd_elf_provide_section_bound_symbols (struct bfd_link_info *info, - asection *sec, - const char *start, - const char *end) -{ - bfd_vma val = 0; - _bfd_elf_provide_symbol (info, start, val, sec); - if (sec != NULL) - val = sec->size; - _bfd_elf_provide_symbol (info, end, val, sec); -} - -/* Convert symbols in excluded output sections to absolute. */ - -static bfd_boolean -fix_syms (struct bfd_link_hash_entry *h, void *data) +unsigned int +_bfd_elf_common_section_index (asection *sec ATTRIBUTE_UNUSED) { - bfd *obfd = (bfd *) data; - - if (h->type == bfd_link_hash_warning) - h = h->u.i.link; - - if (h->type == bfd_link_hash_defined - || h->type == bfd_link_hash_defweak) - { - asection *s = h->u.def.section; - if (s != NULL - && s == s->output_section - && bfd_section_removed_from_list (obfd, s)) - { - h->u.def.value += s->vma; - h->u.def.section = bfd_abs_section_ptr; - } - } - - return TRUE; + return SHN_COMMON; } -void -_bfd_elf_fix_excluded_sec_syms (bfd *obfd, struct bfd_link_info *info) +asection * +_bfd_elf_common_section (asection *sec ATTRIBUTE_UNUSED) { - bfd_link_hash_traverse (info->hash, fix_syms, obfd); + return bfd_com_section_ptr; } diff -uprN binutils-2.16.91.0.2/bfd/elf-m10300.c binutils-2.16.91.0.3/bfd/elf-m10300.c --- binutils-2.16.91.0.2/bfd/elf-m10300.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elf-m10300.c 2005-08-22 12:27:41.000000000 -0700 @@ -542,7 +542,6 @@ _bfd_mn10300_elf_create_got_section (abf flagword flags; flagword pltflags; asection * s; - struct bfd_link_hash_entry * bh; struct elf_link_hash_entry * h; const struct elf_backend_data * bed = get_elf_backend_data (abfd); int ptralign; @@ -581,24 +580,12 @@ _bfd_mn10300_elf_create_got_section (abf || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment)) return FALSE; - if (bed->want_plt_sym) - { - /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the - .plt section. */ - bh = NULL; - if (! (_bfd_generic_link_add_one_symbol - (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, - (bfd_vma) 0, (const char *) NULL, FALSE, - get_elf_backend_data (abfd)->collect, &bh))) - return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->def_regular = 1; - h->type = STT_OBJECT; - - if (info->shared - && ! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - } + /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the + .plt section. */ + if (bed->want_plt_sym + && !_bfd_elf_define_linkage_sym (abfd, info, s, + "_PROCEDURE_LINKAGE_TABLE_")) + return FALSE; s = bfd_make_section_with_flags (abfd, ".got", flags); if (s == NULL @@ -617,20 +604,10 @@ _bfd_mn10300_elf_create_got_section (abf (or .got.plt) section. We don't do this in the linker script because we don't want to define the symbol if we are not creating a global offset table. */ - bh = NULL; - if (!(_bfd_generic_link_add_one_symbol - (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s, - 0, (const char *) NULL, FALSE, bed->collect, &bh))) - return FALSE; - h = (struct elf_link_hash_entry *) bh; - h->def_regular = 1; - h->type = STT_OBJECT; - - if (info->shared - && ! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - + h = _bfd_elf_define_linkage_sym (abfd, info, s, "_GLOBAL_OFFSET_TABLE_"); elf_hash_table (info)->hgot = h; + if (h == NULL) + return FALSE; /* The first bit of the global offset table is the header. */ s->size += bed->got_header_size; @@ -4122,6 +4099,13 @@ _bfd_mn10300_elf_adjust_dynamic_symbol ( if (!h->non_got_ref) return TRUE; + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elfxx-ia64.c binutils-2.16.91.0.3/bfd/elfxx-ia64.c --- binutils-2.16.91.0.2/bfd/elfxx-ia64.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elfxx-ia64.c 2005-08-22 12:27:41.000000000 -0700 @@ -172,6 +172,7 @@ struct elfNN_ia64_allocate_data { struct bfd_link_info *info; bfd_size_type ofs; + bfd_boolean only_got; }; #define elfNN_ia64_hash_table(p) \ @@ -1337,7 +1338,18 @@ elfNN_ia64_relax_section (abfd, sec, lin elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_local_got, &data); ia64_info->got_sec->size = data.ofs; - /* ??? Resize .rela.got too. */ + if (ia64_info->root.dynamic_sections_created + && ia64_info->rel_got_sec != NULL) + { + /* Resize .rela.got. */ + ia64_info->rel_got_sec->size = 0; + if (link_info->shared + && ia64_info->self_dtpmod_offset != (bfd_vma) -1) + ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); + data.only_got = TRUE; + elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_dynrel_entries, + &data); + } } if (!link_info->need_relax_finalize) @@ -2895,6 +2907,52 @@ allocate_dynrel_entries (dyn_i, data) && ELF_ST_VISIBILITY (dyn_i->h->other) && dyn_i->h->root.type == bfd_link_hash_undefweak); + /* Take care of the GOT and PLT relocations. */ + + if ((!resolved_zero + && (dynamic_symbol || shared) + && (dyn_i->want_got || dyn_i->want_gotx)) + || (dyn_i->want_ltoff_fptr + && dyn_i->h + && dyn_i->h->dynindx != -1)) + { + if (!dyn_i->want_ltoff_fptr + || !x->info->pie + || dyn_i->h == NULL + || dyn_i->h->root.type != bfd_link_hash_undefweak) + ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); + } + if ((dynamic_symbol || shared) && dyn_i->want_tprel) + ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); + if (dynamic_symbol && dyn_i->want_dtpmod) + ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); + if (dynamic_symbol && dyn_i->want_dtprel) + ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); + + if (x->only_got) + return TRUE; + + if (ia64_info->rel_fptr_sec && dyn_i->want_fptr) + { + if (dyn_i->h == NULL || dyn_i->h->root.type != bfd_link_hash_undefweak) + ia64_info->rel_fptr_sec->size += sizeof (ElfNN_External_Rela); + } + + if (!resolved_zero && dyn_i->want_pltoff) + { + bfd_size_type t = 0; + + /* Dynamic symbols get one IPLT relocation. Local symbols in + shared libraries get two REL relocations. Local symbols in + main applications get nothing. */ + if (dynamic_symbol) + t = sizeof (ElfNN_External_Rela); + else if (shared) + t = 2 * sizeof (ElfNN_External_Rela); + + ia64_info->rel_pltoff_sec->size += t; + } + /* Take care of the normal data relocations. */ for (rent = dyn_i->reloc_entries; rent; rent = rent->next) @@ -2943,48 +3001,6 @@ allocate_dynrel_entries (dyn_i, data) rent->srel->size += sizeof (ElfNN_External_Rela) * count; } - /* Take care of the GOT and PLT relocations. */ - - if ((!resolved_zero - && (dynamic_symbol || shared) - && (dyn_i->want_got || dyn_i->want_gotx)) - || (dyn_i->want_ltoff_fptr - && dyn_i->h - && dyn_i->h->dynindx != -1)) - { - if (!dyn_i->want_ltoff_fptr - || !x->info->pie - || dyn_i->h == NULL - || dyn_i->h->root.type != bfd_link_hash_undefweak) - ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); - } - if ((dynamic_symbol || shared) && dyn_i->want_tprel) - ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); - if (dynamic_symbol && dyn_i->want_dtpmod) - ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); - if (dynamic_symbol && dyn_i->want_dtprel) - ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); - if (ia64_info->rel_fptr_sec && dyn_i->want_fptr) - { - if (dyn_i->h == NULL || dyn_i->h->root.type != bfd_link_hash_undefweak) - ia64_info->rel_fptr_sec->size += sizeof (ElfNN_External_Rela); - } - - if (!resolved_zero && dyn_i->want_pltoff) - { - bfd_size_type t = 0; - - /* Dynamic symbols get one IPLT relocation. Local symbols in - shared libraries get two REL relocations. Local symbols in - main applications get nothing. */ - if (dynamic_symbol) - t = sizeof (ElfNN_External_Rela); - else if (shared) - t = 2 * sizeof (ElfNN_External_Rela); - - ia64_info->rel_pltoff_sec->size += t; - } - return TRUE; } @@ -3116,6 +3132,7 @@ elfNN_ia64_size_dynamic_sections (output if (info->shared && ia64_info->self_dtpmod_offset != (bfd_vma) -1) ia64_info->rel_got_sec->size += sizeof (ElfNN_External_Rela); + data.only_got = FALSE; elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_dynrel_entries, &data); } @@ -3964,15 +3981,15 @@ elfNN_ia64_final_link (abfd, info) /* Make sure we've got ourselves a nice fat __gp value. */ if (!info->relocatable) { - bfd_vma gp_val = _bfd_get_gp_value (abfd); + bfd_vma gp_val; struct elf_link_hash_entry *gp; - if (gp_val == 0) - { - if (! elfNN_ia64_choose_gp (abfd, info)) - return FALSE; - gp_val = _bfd_get_gp_value (abfd); - } + /* We assume after gp is set, section size will only decrease. We + need to adjust gp for it. */ + _bfd_set_gp_value (abfd, 0); + if (! elfNN_ia64_choose_gp (abfd, info)) + return FALSE; + gp_val = _bfd_get_gp_value (abfd); gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", FALSE, FALSE, FALSE); diff -uprN binutils-2.16.91.0.2/bfd/elfxx-mips.c binutils-2.16.91.0.3/bfd/elfxx-mips.c --- binutils-2.16.91.0.2/bfd/elfxx-mips.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elfxx-mips.c 2005-08-22 12:27:41.000000000 -0700 @@ -5414,6 +5414,20 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd return TRUE; } + /* Shared objects may have a dynamic symbol '_gp_disp' defined as + a SECTION *ABS*. This causes ld to think it can resolve _gp_disp + by setting a DT_NEEDED for the shared object. Since _gp_disp is + a magic symbol resolved by the linker, we ignore this bogus definition + of _gp_disp. New ABI objects do not suffer from this problem so this + is not done for them. */ + if (!NEWABI_P(abfd) + && (sym->st_shndx == SHN_ABS) + && (strcmp (*namep, "_gp_disp") == 0)) + { + *namep = NULL; + return TRUE; + } + switch (sym->st_shndx) { case SHN_COMMON: @@ -8410,11 +8424,10 @@ _bfd_mips_elf_hide_symbol (struct bfd_li h->forced_local = force_local; dynobj = elf_hash_table (info)->dynobj; - if (dynobj != NULL && force_local && h->root.type != STT_TLS) + if (dynobj != NULL && force_local && h->root.type != STT_TLS + && (got = mips_elf_got_section (dynobj, FALSE)) != NULL + && (g = mips_elf_section_data (got)->u.got_info) != NULL) { - got = mips_elf_got_section (dynobj, FALSE); - g = mips_elf_section_data (got)->u.got_info; - if (g->next) { struct mips_got_entry e; @@ -9647,11 +9660,26 @@ mips_mach_extends_p (unsigned long base, { size_t i; - for (i = 0; extension != base && i < ARRAY_SIZE (mips_mach_extensions); i++) + if (extension == base) + return TRUE; + + if (base == bfd_mach_mipsisa32 + && mips_mach_extends_p (bfd_mach_mipsisa64, extension)) + return TRUE; + + if (base == bfd_mach_mipsisa32r2 + && mips_mach_extends_p (bfd_mach_mipsisa64r2, extension)) + return TRUE; + + for (i = 0; i < ARRAY_SIZE (mips_mach_extensions); i++) if (extension == mips_mach_extensions[i].extension) - extension = mips_mach_extensions[i].base; + { + extension = mips_mach_extensions[i].base; + if (extension == base) + return TRUE; + } - return extension == base; + return FALSE; } diff -uprN binutils-2.16.91.0.2/bfd/elfxx-sparc.c binutils-2.16.91.0.3/bfd/elfxx-sparc.c --- binutils-2.16.91.0.2/bfd/elfxx-sparc.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elfxx-sparc.c 2005-08-22 12:27:41.000000000 -0700 @@ -1716,6 +1716,13 @@ _bfd_sparc_elf_adjust_dynamic_symbol (st return TRUE; } + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + /* We must allocate the symbol in our .dynbss section, which will become part of the .bss section of the executable. There will be an entry for this symbol in the .dynsym section. The dynamic diff -uprN binutils-2.16.91.0.2/bfd/elfxx-target.h binutils-2.16.91.0.3/bfd/elfxx-target.h --- binutils-2.16.91.0.2/bfd/elfxx-target.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/elfxx-target.h 2005-08-22 12:27:41.000000000 -0700 @@ -26,7 +26,9 @@ There are two such structures here: one for big-endian machines and one for little-endian machines. */ +#ifndef bfd_elfNN_close_and_cleanup #define bfd_elfNN_close_and_cleanup _bfd_elf_close_and_cleanup +#endif #define bfd_elfNN_bfd_free_cached_info _bfd_generic_bfd_free_cached_info #ifndef bfd_elfNN_get_section_contents #define bfd_elfNN_get_section_contents _bfd_generic_get_section_contents @@ -445,6 +447,9 @@ #ifndef elf_backend_ignore_discarded_relocs #define elf_backend_ignore_discarded_relocs NULL #endif +#ifndef elf_backend_action_discarded +#define elf_backend_action_discarded _bfd_elf_default_action_discarded +#endif #ifndef elf_backend_eh_frame_address_size #define elf_backend_eh_frame_address_size _bfd_elf_eh_frame_address_size #endif @@ -521,6 +526,22 @@ #define elf_backend_link_order_error_handler _bfd_default_error_handler #endif +#ifndef elf_backend_common_definition +#define elf_backend_common_definition _bfd_elf_common_definition +#endif + +#ifndef elf_backend_common_section_index +#define elf_backend_common_section_index _bfd_elf_common_section_index +#endif + +#ifndef elf_backend_common_section +#define elf_backend_common_section _bfd_elf_common_section +#endif + +#ifndef elf_backend_merge_symbol +#define elf_backend_merge_symbol NULL +#endif + extern const struct elf_size_info _bfd_elfNN_size_info; #ifndef INCLUDED_TARGET_FILE @@ -580,6 +601,7 @@ static const struct elf_backend_data elf elf_backend_reloc_type_class, elf_backend_discard_info, elf_backend_ignore_discarded_relocs, + elf_backend_action_discarded, elf_backend_eh_frame_address_size, elf_backend_can_make_relative_eh_frame, elf_backend_can_make_lsda_relative_eh_frame, @@ -590,6 +612,10 @@ static const struct elf_backend_data elf elf_backend_ecoff_debug_swap, elf_backend_bfd_from_remote_memory, elf_backend_plt_sym_val, + elf_backend_common_definition, + elf_backend_common_section_index, + elf_backend_common_section, + elf_backend_merge_symbol, elf_backend_link_order_error_handler, elf_backend_relplt_name, ELF_MACHINE_ALT1, diff -uprN binutils-2.16.91.0.2/bfd/ieee.c binutils-2.16.91.0.3/bfd/ieee.c --- binutils-2.16.91.0.2/bfd/ieee.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/ieee.c 2005-08-22 12:27:41.000000000 -0700 @@ -3412,11 +3412,6 @@ ieee_write_processor (bfd *abfd) return FALSE; break; - case bfd_arch_a29k: - if (! ieee_write_id (abfd, "29000")) - return FALSE; - break; - case bfd_arch_h8300: if (! ieee_write_id (abfd, "H8/300")) return FALSE; diff -uprN binutils-2.16.91.0.2/bfd/libbfd.h binutils-2.16.91.0.3/bfd/libbfd.h --- binutils-2.16.91.0.2/bfd/libbfd.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/libbfd.h 2005-08-22 12:27:41.000000000 -0700 @@ -1211,6 +1211,8 @@ static const char *const bfd_reloc_code_ "BFD_RELOC_ARM_IMMEDIATE", "BFD_RELOC_ARM_ADRL_IMMEDIATE", "BFD_RELOC_ARM_T32_IMMEDIATE", + "BFD_RELOC_ARM_T32_IMM12", + "BFD_RELOC_ARM_T32_ADD_PC12", "BFD_RELOC_ARM_SHIFT_IMM", "BFD_RELOC_ARM_SMI", "BFD_RELOC_ARM_SWI", @@ -1338,23 +1340,7 @@ static const char *const bfd_reloc_code_ "BFD_RELOC_DLX_HI16_S", "BFD_RELOC_DLX_LO16", "BFD_RELOC_DLX_JMP26", - "BFD_RELOC_M16C_8_PCREL8", - "BFD_RELOC_M16C_16_PCREL8", - "BFD_RELOC_M16C_8_PCREL16", - "BFD_RELOC_M16C_8_ELABEL24", - "BFD_RELOC_M16C_8_ABS16", - "BFD_RELOC_M16C_16_ABS16", - "BFD_RELOC_M16C_16_ABS24", - "BFD_RELOC_M16C_16_ABS32", - "BFD_RELOC_M16C_24_ABS16", - "BFD_RELOC_M16C_24_ABS24", - "BFD_RELOC_M16C_24_ABS32", - "BFD_RELOC_M16C_32_ABS16", - "BFD_RELOC_M16C_32_ABS24", - "BFD_RELOC_M16C_32_ABS32", - "BFD_RELOC_M16C_40_ABS16", - "BFD_RELOC_M16C_40_ABS24", - "BFD_RELOC_M16C_40_ABS32", + "BFD_RELOC_M32C_HI8", "BFD_RELOC_M32R_24", "BFD_RELOC_M32R_10_PCREL", "BFD_RELOC_M32R_18_PCREL", diff -uprN binutils-2.16.91.0.2/bfd/linker.c binutils-2.16.91.0.3/bfd/linker.c --- binutils-2.16.91.0.2/bfd/linker.c 2005-05-10 15:46:42.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/linker.c 2005-08-22 12:27:41.000000000 -0700 @@ -3071,3 +3071,36 @@ _bfd_generic_section_already_linked (bfd /* This is the first section with this name. Record it. */ bfd_section_already_linked_table_insert (already_linked_list, sec); } + +/* Convert symbols in excluded output sections to absolute. */ + +static bfd_boolean +fix_syms (struct bfd_link_hash_entry *h, void *data) +{ + bfd *obfd = (bfd *) data; + + if (h->type == bfd_link_hash_warning) + h = h->u.i.link; + + if (h->type == bfd_link_hash_defined + || h->type == bfd_link_hash_defweak) + { + asection *s = h->u.def.section; + if (s != NULL + && s->output_section != NULL + && (s->output_section->flags & SEC_EXCLUDE) != 0 + && bfd_section_removed_from_list (obfd, s->output_section)) + { + h->u.def.value += s->output_offset + s->output_section->vma; + h->u.def.section = bfd_abs_section_ptr; + } + } + + return TRUE; +} + +void +_bfd_fix_excluded_sec_syms (bfd *obfd, struct bfd_link_info *info) +{ + bfd_link_hash_traverse (info->hash, fix_syms, obfd); +} diff -uprN binutils-2.16.91.0.2/bfd/m68klynx.c binutils-2.16.91.0.3/bfd/m68klynx.c --- binutils-2.16.91.0.2/bfd/m68klynx.c 2005-05-10 15:46:42.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/m68klynx.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,57 +0,0 @@ -/* BFD back-end for m68k binaries under LynxOS. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 2001, 2002, 2003 - Free Software Foundation, Inc. - -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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ - -#define N_SHARED_LIB(x) 0 - -#define TEXT_START_ADDR 0 -#define TARGET_PAGE_SIZE 4096 -#define SEGMENT_SIZE TARGET_PAGE_SIZE -#define DEFAULT_ARCH bfd_arch_m68k - -/* Do not "beautify" the CONCAT* macro args. Traditional C will not - remove whitespace added here, and thus will fail to concatenate - the tokens. */ -#define MY(OP) CONCAT2 (m68klynx_aout_,OP) -#define TARGETNAME "a.out-m68k-lynx" - -#include "bfd.h" -#include "sysdep.h" -#include "libbfd.h" - -#include "libaout.h" -#include "aout/aout64.h" - -#define TARGET_IS_BIG_ENDIAN_P - -#ifdef LYNX_CORE - -char *lynx_core_file_failing_command(); -int lynx_core_file_failing_signal(); -bfd_boolean lynx_core_file_matches_executable_p(); -const bfd_target *lynx_core_file_p(); - -#define MY_core_file_failing_command lynx_core_file_failing_command -#define MY_core_file_failing_signal lynx_core_file_failing_signal -#define MY_core_file_matches_executable_p lynx_core_file_matches_executable_p -#define MY_core_file_p lynx_core_file_p - -#endif /* LYNX_CORE */ - -#include "aout-target.h" diff -uprN binutils-2.16.91.0.2/bfd/Makefile.am binutils-2.16.91.0.3/bfd/Makefile.am --- binutils-2.16.91.0.2/bfd/Makefile.am 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/Makefile.am 2005-08-22 12:27:41.000000000 -0700 @@ -54,7 +54,6 @@ BFD64_LIBS_CFILES = archive64.c # This list is alphabetized to make it easier to keep in sync # with the decls and initializer in archures.c. ALL_MACHINES = \ - cpu-a29k.lo \ cpu-alpha.lo \ cpu-arc.lo \ cpu-arm.lo \ @@ -114,7 +113,6 @@ ALL_MACHINES = \ cpu-z8k.lo ALL_MACHINES_CFILES = \ - cpu-a29k.c \ cpu-alpha.c \ cpu-arc.c \ cpu-arm.c \ @@ -187,9 +185,7 @@ BFD32_BACKENDS = \ armnetbsd.lo \ bout.lo \ cf-i386lynx.lo \ - cf-m68klynx.lo \ cf-sparclynx.lo \ - coff-a29k.lo \ coff-apollo.lo \ coff-arm.lo \ coff-aux.lo \ @@ -296,7 +292,6 @@ BFD32_BACKENDS = \ ieee.lo \ m68k4knetbsd.lo \ m68klinux.lo \ - m68klynx.lo \ m68knetbsd.lo \ m88kmach3.lo \ m88kopenbsd.lo \ @@ -359,9 +354,7 @@ BFD32_BACKENDS_CFILES = \ armnetbsd.c \ bout.c \ cf-i386lynx.c \ - cf-m68klynx.c \ cf-sparclynx.c \ - coff-a29k.c \ coff-apollo.c \ coff-arm.c \ coff-aux.c \ @@ -468,7 +461,6 @@ BFD32_BACKENDS_CFILES = \ ieee.c \ m68k4knetbsd.c \ m68klinux.c \ - m68klynx.c \ m68knetbsd.c \ m88kmach3.c \ m88kopenbsd.c \ @@ -965,7 +957,6 @@ simple.lo: simple.c $(INCDIR)/filenames. $(INCDIR)/bfdlink.h archive64.lo: archive64.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ $(INCDIR)/aout/ar.h -cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ @@ -1074,17 +1065,10 @@ cf-i386lynx.lo: cf-i386lynx.c $(INCDIR)/ coff-i386.c $(INCDIR)/hashtab.h $(INCDIR)/coff/i386.h \ $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \ libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h -cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/filenames.h \ - $(INCDIR)/hashtab.h $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h \ - $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \ - coffcode.h coffswap.h cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/filenames.h \ $(INCDIR)/hashtab.h $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h \ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \ coffcode.h coffswap.h -coff-a29k.lo: coff-a29k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \ - libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h coff-apollo.lo: coff-apollo.c $(INCDIR)/filenames.h \ $(INCDIR)/hashtab.h $(INCDIR)/coff/apollo.h $(INCDIR)/coff/external.h \ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \ @@ -1512,10 +1496,6 @@ m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h m68klinux.lo: m68klinux.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ $(INCDIR)/aout/ar.h libaout.h $(INCDIR)/bfdlink.h aout-target.h -m68klynx.lo: m68klynx.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ - libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - aout-target.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ - $(INCDIR)/aout/ar.h m68knetbsd.lo: m68knetbsd.c netbsd.h $(INCDIR)/filenames.h \ $(INCDIR)/hashtab.h libaout.h $(INCDIR)/bfdlink.h aout-target.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ diff -uprN binutils-2.16.91.0.2/bfd/Makefile.in binutils-2.16.91.0.3/bfd/Makefile.in --- binutils-2.16.91.0.2/bfd/Makefile.in 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/Makefile.in 2005-08-22 12:27:41.000000000 -0700 @@ -291,7 +291,6 @@ BFD64_LIBS_CFILES = archive64.c # This list is alphabetized to make it easier to keep in sync # with the decls and initializer in archures.c. ALL_MACHINES = \ - cpu-a29k.lo \ cpu-alpha.lo \ cpu-arc.lo \ cpu-arm.lo \ @@ -351,7 +350,6 @@ ALL_MACHINES = \ cpu-z8k.lo ALL_MACHINES_CFILES = \ - cpu-a29k.c \ cpu-alpha.c \ cpu-arc.c \ cpu-arm.c \ @@ -425,9 +423,7 @@ BFD32_BACKENDS = \ armnetbsd.lo \ bout.lo \ cf-i386lynx.lo \ - cf-m68klynx.lo \ cf-sparclynx.lo \ - coff-a29k.lo \ coff-apollo.lo \ coff-arm.lo \ coff-aux.lo \ @@ -534,7 +530,6 @@ BFD32_BACKENDS = \ ieee.lo \ m68k4knetbsd.lo \ m68klinux.lo \ - m68klynx.lo \ m68knetbsd.lo \ m88kmach3.lo \ m88kopenbsd.lo \ @@ -597,9 +592,7 @@ BFD32_BACKENDS_CFILES = \ armnetbsd.c \ bout.c \ cf-i386lynx.c \ - cf-m68klynx.c \ cf-sparclynx.c \ - coff-a29k.c \ coff-apollo.c \ coff-arm.c \ coff-aux.c \ @@ -706,7 +699,6 @@ BFD32_BACKENDS_CFILES = \ ieee.c \ m68k4knetbsd.c \ m68klinux.c \ - m68klynx.c \ m68knetbsd.c \ m88kmach3.c \ m88kopenbsd.c \ @@ -1534,7 +1526,6 @@ simple.lo: simple.c $(INCDIR)/filenames. $(INCDIR)/bfdlink.h archive64.lo: archive64.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ $(INCDIR)/aout/ar.h -cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ @@ -1643,17 +1634,10 @@ cf-i386lynx.lo: cf-i386lynx.c $(INCDIR)/ coff-i386.c $(INCDIR)/hashtab.h $(INCDIR)/coff/i386.h \ $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \ libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h -cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/filenames.h \ - $(INCDIR)/hashtab.h $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h \ - $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \ - coffcode.h coffswap.h cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/filenames.h \ $(INCDIR)/hashtab.h $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h \ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \ coffcode.h coffswap.h -coff-a29k.lo: coff-a29k.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \ - libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h coff-apollo.lo: coff-apollo.c $(INCDIR)/filenames.h \ $(INCDIR)/hashtab.h $(INCDIR)/coff/apollo.h $(INCDIR)/coff/external.h \ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \ @@ -2081,10 +2065,6 @@ m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h m68klinux.lo: m68klinux.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ $(INCDIR)/aout/ar.h libaout.h $(INCDIR)/bfdlink.h aout-target.h -m68klynx.lo: m68klynx.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ - libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - aout-target.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ - $(INCDIR)/aout/ar.h m68knetbsd.lo: m68knetbsd.c netbsd.h $(INCDIR)/filenames.h \ $(INCDIR)/hashtab.h libaout.h $(INCDIR)/bfdlink.h aout-target.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ diff -uprN binutils-2.16.91.0.2/bfd/mipsbsd.c binutils-2.16.91.0.3/bfd/mipsbsd.c --- binutils-2.16.91.0.2/bfd/mipsbsd.c 2005-05-10 15:46:42.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/mipsbsd.c 2005-08-22 12:27:41.000000000 -0700 @@ -115,7 +115,6 @@ MY (choose_reloc_size) (abfd) switch (bfd_get_arch (abfd)) { case bfd_arch_sparc: - case bfd_arch_a29k: case bfd_arch_mips: obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE; break; @@ -157,9 +156,6 @@ MY (write_object_contents) (abfd) case bfd_arch_i386: N_SET_MACHTYPE (*execp, M_386); break; - case bfd_arch_a29k: - N_SET_MACHTYPE (*execp, M_29K); - break; case bfd_arch_mips: switch (bfd_get_mach (abfd)) { diff -uprN binutils-2.16.91.0.2/bfd/mmo.c binutils-2.16.91.0.3/bfd/mmo.c --- binutils-2.16.91.0.2/bfd/mmo.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/mmo.c 2005-08-22 12:27:41.000000000 -0700 @@ -1853,6 +1853,7 @@ mmo_scan (bfd *abfd) rsec = bfd_make_section_old_way (abfd, MMIX_REG_CONTENTS_SECTION_NAME); + rsec->flags |= SEC_LINKER_CREATED; rsec->vma = z * 8; loc = mmo_get_loc (rsec, z * 8, (255 - z) * 8); bfd_put_64 (abfd, first_octa, loc); @@ -2146,6 +2147,7 @@ mmo_canonicalize_symtab (bfd *abfd, asym { c->section = bfd_make_section_old_way (abfd, MMIX_REG_SECTION_NAME); + c->section->flags |= SEC_LINKER_CREATED; } else { diff -uprN binutils-2.16.91.0.2/bfd/pdp11.c binutils-2.16.91.0.3/bfd/pdp11.c --- binutils-2.16.91.0.2/bfd/pdp11.c 2005-05-10 15:46:43.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/pdp11.c 2005-08-22 12:27:41.000000000 -0700 @@ -719,10 +719,6 @@ NAME (aout, machine_type) (enum bfd_arch arch_flags = M_386; break; - case bfd_arch_a29k: - if (machine == 0) arch_flags = M_29K; - break; - case bfd_arch_arm: if (machine == 0) arch_flags = M_ARM; break; diff -uprN binutils-2.16.91.0.2/bfd/peXXigen.c binutils-2.16.91.0.3/bfd/peXXigen.c --- binutils-2.16.91.0.2/bfd/peXXigen.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/peXXigen.c 2005-08-22 12:27:41.000000000 -0700 @@ -1346,6 +1346,7 @@ pe_print_edata (bfd * abfd, void * vfile return TRUE; addr = section->vma; + dataoff = 0; datasize = section->size; if (datasize == 0) return TRUE; @@ -1355,12 +1356,8 @@ pe_print_edata (bfd * abfd, void * vfile addr += extra->ImageBase; for (section = abfd->sections; section != NULL; section = section->next) - { - datasize = section->size; - - if (addr >= section->vma && addr < section->vma + datasize) - break; - } + if (addr >= section->vma && addr < section->vma + section->size) + break; if (section == NULL) { @@ -1368,14 +1365,21 @@ pe_print_edata (bfd * abfd, void * vfile _("\nThere is an export table, but the section containing it could not be found\n")); return TRUE; } + + dataoff = addr - section->vma; + datasize = extra->DataDirectory[0].Size; + if (datasize > section->size - dataoff) + { + fprintf (file, + _("\nThere is an export table in %s, but it does not fit into that section\n"), + section->name); + return TRUE; + } } fprintf (file, _("\nThere is an export table in %s at 0x%lx\n"), section->name, (unsigned long) addr); - dataoff = addr - section->vma; - datasize -= dataoff; - data = bfd_malloc (datasize); if (data == NULL) return FALSE; diff -uprN binutils-2.16.91.0.2/bfd/po/SRC-POTFILES.in binutils-2.16.91.0.3/bfd/po/SRC-POTFILES.in --- binutils-2.16.91.0.2/bfd/po/SRC-POTFILES.in 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/po/SRC-POTFILES.in 2005-08-22 12:27:41.000000000 -0700 @@ -23,11 +23,9 @@ binary.c bout.c cache.c cf-i386lynx.c -cf-m68klynx.c cf-sparclynx.c cisco-core.c coff64-rs6000.c -coff-a29k.c coff-alpha.c coff-apollo.c coff-arm.c @@ -61,7 +59,6 @@ coff-w65.c coff-we32k.c coff-z8k.c corefile.c -cpu-a29k.c cpu-alpha.c cpu-arc.c cpu-arm.c @@ -240,7 +237,6 @@ linker.c lynx-core.c m68k4knetbsd.c m68klinux.c -m68klynx.c m68knetbsd.c m88kmach3.c m88kopenbsd.c diff -uprN binutils-2.16.91.0.2/bfd/reloc.c binutils-2.16.91.0.3/bfd/reloc.c --- binutils-2.16.91.0.2/bfd/reloc.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/reloc.c 2005-08-22 12:27:41.000000000 -0700 @@ -2736,6 +2736,10 @@ ENUMX ENUMX BFD_RELOC_ARM_T32_IMMEDIATE ENUMX + BFD_RELOC_ARM_T32_IMM12 +ENUMX + BFD_RELOC_ARM_T32_ADD_PC12 +ENUMX BFD_RELOC_ARM_SHIFT_IMM ENUMX BFD_RELOC_ARM_SMI @@ -3069,39 +3073,7 @@ ENUMDOC DLX relocs ENUM - BFD_RELOC_M16C_8_PCREL8 -ENUMX - BFD_RELOC_M16C_16_PCREL8 -ENUMX - BFD_RELOC_M16C_8_PCREL16 -ENUMX - BFD_RELOC_M16C_8_ELABEL24 -ENUMX - BFD_RELOC_M16C_8_ABS16 -ENUMX - BFD_RELOC_M16C_16_ABS16 -ENUMX - BFD_RELOC_M16C_16_ABS24 -ENUMX - BFD_RELOC_M16C_16_ABS32 -ENUMX - BFD_RELOC_M16C_24_ABS16 -ENUMX - BFD_RELOC_M16C_24_ABS24 -ENUMX - BFD_RELOC_M16C_24_ABS32 -ENUMX - BFD_RELOC_M16C_32_ABS16 -ENUMX - BFD_RELOC_M16C_32_ABS24 -ENUMX - BFD_RELOC_M16C_32_ABS32 -ENUMX - BFD_RELOC_M16C_40_ABS16 -ENUMX - BFD_RELOC_M16C_40_ABS24 -ENUMX - BFD_RELOC_M16C_40_ABS32 + BFD_RELOC_M32C_HI8 ENUMDOC Renesas M16C/M32C Relocations. diff -uprN binutils-2.16.91.0.2/bfd/section.c binutils-2.16.91.0.3/bfd/section.c --- binutils-2.16.91.0.2/bfd/section.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/section.c 2005-08-22 12:27:41.000000000 -0700 @@ -635,6 +635,47 @@ CODE_FRAGMENT .#define bfd_section_removed_from_list(ABFD, S) \ . ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S)) . +.#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, SYM_PTR, NAME, IDX) \ +. {* name, id, index, next, prev, flags, user_set_vma, *} \ +. { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ +. \ +. {* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, *} \ +. 0, 0, 1, 0, \ +. \ +. {* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, *} \ +. 0, 0, 0, 0, \ +. \ +. {* has_gp_reloc, need_finalize_relax, reloc_done, *} \ +. 0, 0, 0, \ +. \ +. {* vma, lma, size, rawsize *} \ +. 0, 0, 0, 0, \ +. \ +. {* output_offset, output_section, alignment_power, *} \ +. 0, (struct bfd_section *) &SEC, 0, \ +. \ +. {* relocation, orelocation, reloc_count, filepos, rel_filepos, *} \ +. NULL, NULL, 0, 0, 0, \ +. \ +. {* line_filepos, userdata, contents, lineno, lineno_count, *} \ +. 0, NULL, NULL, NULL, 0, \ +. \ +. {* entsize, kept_section, moving_line_filepos, *} \ +. 0, NULL, 0, \ +. \ +. {* target_index, used_by_bfd, constructor_chain, owner, *} \ +. 0, NULL, NULL, NULL, \ +. \ +. {* symbol, *} \ +. (struct bfd_symbol *) SYM, \ +. \ +. {* symbol_ptr_ptr, *} \ +. (struct bfd_symbol **) SYM_PTR, \ +. \ +. {* map_head, map_tail *} \ +. { NULL }, { NULL } \ +. } +. */ /* We use a macro to initialize the static asymbol structures because @@ -662,46 +703,8 @@ static const asymbol global_syms[] = #define STD_SECTION(SEC, FLAGS, SYM, NAME, IDX) \ const asymbol * const SYM = (asymbol *) &global_syms[IDX]; \ - asection SEC = \ - /* name, id, index, next, prev, flags, user_set_vma, */ \ - { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ - \ - /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \ - 0, 0, 1, 0, \ - \ - /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ - 0, 0, 0, 0, \ - \ - /* has_gp_reloc, need_finalize_relax, reloc_done, */ \ - 0, 0, 0, \ - \ - /* vma, lma, size, rawsize */ \ - 0, 0, 0, 0, \ - \ - /* output_offset, output_section, alignment_power, */ \ - 0, (struct bfd_section *) &SEC, 0, \ - \ - /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \ - NULL, NULL, 0, 0, 0, \ - \ - /* line_filepos, userdata, contents, lineno, lineno_count, */ \ - 0, NULL, NULL, NULL, 0, \ - \ - /* entsize, kept_section, moving_line_filepos, */ \ - 0, NULL, 0, \ - \ - /* target_index, used_by_bfd, constructor_chain, owner, */ \ - 0, NULL, NULL, NULL, \ - \ - /* symbol, */ \ - (struct bfd_symbol *) &global_syms[IDX], \ - \ - /* symbol_ptr_ptr, */ \ - (struct bfd_symbol **) &SYM, \ - \ - /* map_head, map_tail */ \ - { NULL }, { NULL } \ - } + asection SEC = BFD_FAKE_SECTION(SEC, FLAGS, &global_syms[IDX], &SYM, \ + NAME, IDX) STD_SECTION (bfd_com_section, SEC_IS_COMMON, bfd_com_symbol, BFD_COM_SECTION_NAME, 0); diff -uprN binutils-2.16.91.0.2/bfd/sparclynx.c binutils-2.16.91.0.3/bfd/sparclynx.c --- binutils-2.16.91.0.2/bfd/sparclynx.c 2005-05-10 15:46:43.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/sparclynx.c 2005-08-22 12:27:41.000000000 -0700 @@ -108,11 +108,6 @@ NAME(lynx,set_arch_mach) (abfd, machtype machine = 0; break; - case M_29K: - arch = bfd_arch_a29k; - machine = 0; - break; - case M_HPUX: arch = bfd_arch_m68k; machine = 0; @@ -139,7 +134,6 @@ choose_reloc_size (abfd) switch (bfd_get_arch (abfd)) { case bfd_arch_sparc: - case bfd_arch_a29k: obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE; break; default: @@ -180,9 +174,6 @@ NAME(aout,sparclynx_write_object_content case bfd_arch_i386: N_SET_MACHTYPE (*execp, M_386); break; - case bfd_arch_a29k: - N_SET_MACHTYPE (*execp, M_29K); - break; default: N_SET_MACHTYPE (*execp, M_UNKNOWN); } diff -uprN binutils-2.16.91.0.2/bfd/targets.c binutils-2.16.91.0.3/bfd/targets.c --- binutils-2.16.91.0.2/bfd/targets.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/targets.c 2005-08-22 12:27:41.000000000 -0700 @@ -522,7 +522,6 @@ to find an alternative output format tha Alphabetized for easy reference. They are listed a second time below, since we can't intermix extern's and initializers. */ -extern const bfd_target a29kcoff_big_vec; extern const bfd_target a_out_adobe_vec; extern const bfd_target aix5coff64_vec; extern const bfd_target aout0_big_vec; @@ -698,8 +697,6 @@ extern const bfd_target m68kaux_coff_vec extern const bfd_target m68kcoff_vec; extern const bfd_target m68kcoffun_vec; extern const bfd_target m68klinux_vec; -extern const bfd_target m68klynx_aout_vec; -extern const bfd_target m68klynx_coff_vec; extern const bfd_target m68knetbsd_vec; extern const bfd_target m68ksysvcoff_vec; extern const bfd_target m88kbcs_vec; @@ -810,7 +807,6 @@ static const bfd_target * const _bfd_tar Vectors that don't compile on all systems, or aren't finished, should have an entry here with #if 0 around it, to show that it wasn't omitted by mistake. */ - &a29kcoff_big_vec, &a_out_adobe_vec, #ifdef BFD64 &aix5coff64_vec, @@ -1035,8 +1031,6 @@ static const bfd_target * const _bfd_tar which kind of a.out file it is. */ &m68klinux_vec, #endif - &m68klynx_aout_vec, - &m68klynx_coff_vec, &m68knetbsd_vec, &m68ksysvcoff_vec, &m88kbcs_vec, diff -uprN binutils-2.16.91.0.2/bfd/version.h binutils-2.16.91.0.3/bfd/version.h --- binutils-2.16.91.0.2/bfd/version.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/bfd/version.h 2005-08-22 12:27:41.000000000 -0700 @@ -1,3 +1,3 @@ -#define BFD_VERSION_DATE 20050720 +#define BFD_VERSION_DATE 20050821 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_string@ diff -uprN binutils-2.16.91.0.2/binutils/bucomm.h binutils-2.16.91.0.3/binutils/bucomm.h --- binutils-2.16.91.0.2/binutils/bucomm.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/bucomm.h 2005-08-22 12:27:41.000000000 -0700 @@ -68,6 +68,10 @@ extern char *strrchr (); #endif #endif +#if !HAVE_DECL_STPCPY +extern char *stpcpy (char *, const char *); +#endif + #if !HAVE_DECL_STRSTR extern char *strstr (); #endif diff -uprN binutils-2.16.91.0.2/binutils/ChangeLog binutils-2.16.91.0.3/binutils/ChangeLog --- binutils-2.16.91.0.2/binutils/ChangeLog 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/ChangeLog 2005-08-22 12:27:41.000000000 -0700 @@ -1,3 +1,82 @@ +2005-08-17 H.J. Lu + + PR binutils/1179 + * objdump.c (disassemble_bytes): Don't adjust + adjust_section_vma. + (adjust_addresses): Don't adjust vma for debugging section. + Adjust lma only for relocatable files. + (dump_bfd): Tell adjust_addresses if it is a relocatable file. + +2005-08-16 H.J. Lu + + * bucomm.h (stpcpy): Declare if HAVE_DECL_STPCPY isn't defined. + + * configure.in (AC_GNU_SOURCE): Added. + (AC_CHECK_DECLS): Add stpcpy. + * configure: Regenerated. + * config.in: Likewise. + +2005-08-16 Jakub Jelinek + + * unwind-ia64.c (UNW_DEC_SPILL_SPREL, UNW_DEC_SPILL_PSPREL, + UNW_DEC_RESTORE, UNW_DEC_SPILL_REG): Increase {,ab,t}regname + buffer sizes. + +2005-08-15 Daniel Jacobowitz + + * doc/binutils.texi (objdump): Document -M e300. + +2005-08-14 John David Anglin + + * readelf.c (slurp_hppa_unwind_table): Fix entry size on hppa64-hpux. + Don't access table entries past the end of the table. + +2005-08-13 John David Anglin + + * readelf.c (get_parisc_segment_type): Handle PT_PARISC_WEAKORDER. + (get_parisc_section_type_name): Handle SHT_PARISC_DLKM. + +2005-08-11 H.J. Lu + + * NEWS: Mention "-t/--section-details" and + "-N/--full-section-name". + + * doc/binutils.texi: Document "-t/--section-details". Remove + "-N/--full-section-name". + + * readelf.c (do_full_section_name): Renamed to ... + (do_section_details): This. + (option): Rename "-N/--full-section-name" to + "-t/--section-details". + (usage): Likewise. + (parse_args): Likewise. + (get_elf_section_flags): Support do_section_details. + (process_section_headers): Updated for do_section_details. + +2005-08-04 John David Anglin + + * readelf.c (get_parisc_dynamic_type): Add new dynamic types. + (get_dynamic_type): Use old values for DT_LOOS and DT_HIOS when + e_machine is EM_PARISC. + (get_parisc_segment_type): Add new segment types. + (get_parisc_section_type_name): Add new section names. + (dynamic_section_parisc_val): Add new table entries. + +2005-08-01 Filip Navara + + * dlltool.c (alphafunc): Remove and replace usage with nfunc. + (nfunc): Fix sorting of fastcall symbols when --kill-at is used. + +2005-07-25 H.J. Lu + + * readelf.c (dump_relocations): Handle SHN_X86_64_LCOMMON. + (get_symbol_index_type): Likewise. + (get_elf_section_flags): Handle SHF_X86_64_LARGE. + +2005-07-21 Eric Christopher + + * MAINTAINERS: Change affiliation. + 2005-07-19 Ben Elliston * readelf.c (read_and_display_attr_value): Remove comment adjacent diff -uprN binutils-2.16.91.0.2/binutils/config.in binutils-2.16.91.0.3/binutils/config.in --- binutils-2.16.91.0.2/binutils/config.in 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/config.in 2005-08-22 12:27:41.000000000 -0700 @@ -52,6 +52,10 @@ */ #undef HAVE_DECL_SBRK +/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't. + */ +#undef HAVE_DECL_STPCPY + /* Define to 1 if you have the declaration of `strstr', and to 0 if you don't. */ #undef HAVE_DECL_STRSTR @@ -242,6 +246,11 @@ `char[]'. */ #undef YYTEXT_POINTER +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif + /* Enable LFS */ #undef _LARGEFILE64_SOURCE diff -uprN binutils-2.16.91.0.2/binutils/configure binutils-2.16.91.0.3/binutils/configure --- binutils-2.16.91.0.2/binutils/configure 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/configure 2005-08-22 12:27:41.000000000 -0700 @@ -4866,6 +4866,12 @@ ac_link='$CC -o conftest$ac_exeext $CFLA ac_compiler_gnu=$ac_cv_c_compiler_gnu +cat >>confdefs.h <<\_ACEOF +#define _GNU_SOURCE 1 +_ACEOF + + + for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -10161,6 +10167,76 @@ _ACEOF fi +echo "$as_me:$LINENO: checking whether stpcpy is declared" >&5 +echo $ECHO_N "checking whether stpcpy is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_stpcpy+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef stpcpy + char *p = (char *) stpcpy; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_stpcpy=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_stpcpy=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_stpcpy" >&5 +echo "${ECHO_T}$ac_cv_have_decl_stpcpy" >&6 +if test $ac_cv_have_decl_stpcpy = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STPCPY 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STPCPY 0 +_ACEOF + + +fi echo "$as_me:$LINENO: checking whether strstr is declared" >&5 echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_strstr+set}" = set; then diff -uprN binutils-2.16.91.0.2/binutils/configure.in binutils-2.16.91.0.3/binutils/configure.in --- binutils-2.16.91.0.2/binutils/configure.in 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/configure.in 2005-08-22 12:27:41.000000000 -0700 @@ -41,6 +41,7 @@ if test -z "$host" ; then fi AC_PROG_CC +AC_GNU_SOURCE AC_PROG_YACC AM_PROG_LEX @@ -182,7 +183,7 @@ if test $bu_cv_header_utime_h = yes; the AC_DEFINE(HAVE_GOOD_UTIME_H, 1, [Does define struct utimbuf?]) fi -AC_CHECK_DECLS([fprintf, strstr, sbrk, getenv, environ, getc_unlocked]) +AC_CHECK_DECLS([fprintf, stpcpy, strstr, sbrk, getenv, environ, getc_unlocked]) BFD_BINARY_FOPEN diff -uprN binutils-2.16.91.0.2/binutils/dlltool.c binutils-2.16.91.0.3/binutils/dlltool.c --- binutils-2.16.91.0.2/binutils/dlltool.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/dlltool.c 2005-08-22 12:27:41.000000000 -0700 @@ -699,7 +699,6 @@ static int nfunc (const void *, const vo static void remove_null_names (export_type **); static void process_duplicates (export_type **); static void fill_ordinals (export_type **); -static int alphafunc (const void *, const void *); static void mangle_defs (void); static void usage (FILE *, int); static void inform (const char *, ...) ATTRIBUTE_PRINTF_1; @@ -2828,8 +2827,16 @@ nfunc (const void *a, const void *b) { export_type *ap = *(export_type **) a; export_type *bp = *(export_type **) b; + const char *an = ap->name; + const char *bn = bp->name; - return (strcmp (ap->name, bp->name)); + if (killat) + { + an = (an[0] == '@') ? an + 1 : an; + bn = (bn[0] == '@') ? bn + 1 : bn; + } + + return (strcmp (an, bn)); } static void @@ -2973,15 +2980,6 @@ fill_ordinals (export_type **d_export_ve } } -static int -alphafunc (const void *av, const void *bv) -{ - const export_type **a = (const export_type **) av; - const export_type **b = (const export_type **) bv; - - return strcmp ((*a)->name, (*b)->name); -} - static void mangle_defs (void) { @@ -3017,7 +3015,7 @@ mangle_defs (void) d_exports_lexically[i] = 0; - qsort (d_exports_lexically, i, sizeof (export_type *), alphafunc); + qsort (d_exports_lexically, i, sizeof (export_type *), nfunc); /* Fill exp entries with their hint values. */ for (i = 0; i < d_nfuncs; i++) diff -uprN binutils-2.16.91.0.2/binutils/doc/binutils.texi binutils-2.16.91.0.3/binutils/doc/binutils.texi --- binutils-2.16.91.0.2/binutils/doc/binutils.texi 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/doc/binutils.texi 2005-08-22 12:27:41.000000000 -0700 @@ -1745,7 +1745,8 @@ suffix could be inferred by the operands For PPC, @option{booke}, @option{booke32} and @option{booke64} select disassembly of BookE instructions. @option{32} and @option{64} select -PowerPC and PowerPC64 disassembly, respectively. +PowerPC and PowerPC64 disassembly, respectively. @option{e300} selects +disassembly for the e300 family. For MIPS, this option controls the printing of instruction mneumonic names and register names in disassembled instructions. Multiple @@ -3254,7 +3255,7 @@ readelf [@option{-a}|@option{--all}] [@option{-l}|@option{--program-headers}|@option{--segments}] [@option{-S}|@option{--section-headers}|@option{--sections}] [@option{-g}|@option{--section-groups}] - [@option{-N}|@option{--full-section-name}] + [@option{-t}|@option{--section-details}] [@option{-e}|@option{--headers}] [@option{-s}|@option{--syms}|@option{--symbols}] [@option{-n}|@option{--notes}] @@ -3331,10 +3332,10 @@ has any. Displays the information contained in the file's section groups, if it has any. -@item -N -@itemx --full-section-name -@cindex ELF section name information -Displays the full section name for @option{-S}. +@item -t +@itemx --section-details +@cindex ELF section information +Displays the detailed section information. Implies @option{-S}. @item -s @itemx --symbols diff -uprN binutils-2.16.91.0.2/binutils/MAINTAINERS binutils-2.16.91.0.3/binutils/MAINTAINERS --- binutils-2.16.91.0.2/binutils/MAINTAINERS 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/MAINTAINERS 2005-08-22 12:27:41.000000000 -0700 @@ -86,10 +86,10 @@ responsibility among the other maintaine M68k Ben Elliston M88k Mark Kettenis MAXQ Inderpreet Singh - MIPS Eric Christopher + MIPS Eric Christopher MIPS Thiemo Seufer MMIX Hans-Peter Nilsson - MN10300 Eric Christopher + MN10300 Eric Christopher MN10300 Alexandre Oliva MSP430 Dmitry Diky PPC Geoff Keating diff -uprN binutils-2.16.91.0.2/binutils/NEWS binutils-2.16.91.0.3/binutils/NEWS --- binutils-2.16.91.0.2/binutils/NEWS 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/NEWS 2005-08-22 12:27:41.000000000 -0700 @@ -1,5 +1,8 @@ -*- text -*- +* Add "-t/--section-details" to readelf to display section details. +"-N/--full-section-name" is deprecated. + * powerpc-linux ld now supports a variant form of PLT and GOT for the security conscious. This form will automatically be chosen when ld detects that all code in regular object files was generated by gcc -msecure-plt. The old PLT diff -uprN binutils-2.16.91.0.2/binutils/objdump.c binutils-2.16.91.0.3/binutils/objdump.c --- binutils-2.16.91.0.2/binutils/objdump.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/objdump.c 2005-08-22 12:27:41.000000000 -0700 @@ -1355,10 +1355,7 @@ disassemble_bytes (struct disassemble_in done_dot = FALSE; if (with_line_numbers || with_source_code) - /* The line number tables will refer to unadjusted - section VMAs, so we must undo any VMA modifications - when calling show_line. */ - show_line (aux->abfd, section, addr_offset - adjust_section_vma); + show_line (aux->abfd, section, addr_offset); if (! prefix_addresses) { @@ -2601,10 +2598,15 @@ add_include_path (const char *path) static void adjust_addresses (bfd *abfd ATTRIBUTE_UNUSED, asection *section, - void *dummy ATTRIBUTE_UNUSED) + void *arg) { - section->vma += adjust_section_vma; - section->lma += adjust_section_vma; + if ((section->flags & SEC_DEBUGGING) == 0) + { + bfd_boolean *has_reloc_p = (bfd_boolean *) arg; + section->vma += adjust_section_vma; + if (*has_reloc_p) + section->lma += adjust_section_vma; + } } /* Dump selected contents of ABFD. */ @@ -2616,7 +2618,10 @@ dump_bfd (bfd *abfd) the BFD information is a hack. However, we must do it, or bfd_find_nearest_line will not do the right thing. */ if (adjust_section_vma != 0) - bfd_map_over_sections (abfd, adjust_addresses, NULL); + { + bfd_boolean has_reloc = (abfd->flags & HAS_RELOC); + bfd_map_over_sections (abfd, adjust_addresses, &has_reloc); + } if (! dump_debugging_tags) printf (_("\n%s: file format %s\n"), bfd_get_filename (abfd), diff -uprN binutils-2.16.91.0.2/binutils/readelf.c binutils-2.16.91.0.3/binutils/readelf.c --- binutils-2.16.91.0.2/binutils/readelf.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/readelf.c 2005-08-22 12:27:41.000000000 -0700 @@ -147,7 +147,7 @@ static int do_syms; static int do_reloc; static int do_sections; static int do_section_groups; -static int do_full_section_name; +static int do_section_details; static int do_segments; static int do_unwind; static int do_using_dynamic; @@ -1355,6 +1355,9 @@ dump_relocations (FILE *file, sec_name = "ABS"; else if (psym->st_shndx == SHN_COMMON) sec_name = "COMMON"; + else if (elf_header.e_machine == EM_X86_64 + && psym->st_shndx == SHN_X86_64_LCOMMON) + sec_name = "LARGE_COMMON"; else if (elf_header.e_machine == EM_IA_64 && elf_header.e_ident[EI_OSABI] == ELFOSABI_HPUX && psym->st_shndx == SHN_IA_64_ANSI_COMMON) @@ -1530,6 +1533,17 @@ get_parisc_dynamic_type (unsigned long t case DT_HP_GST_SIZE: return "HP_GST_SIZE"; case DT_HP_GST_VERSION: return "HP_GST_VERSION"; case DT_HP_GST_HASHVAL: return "HP_GST_HASHVAL"; + case DT_HP_EPLTREL: return "HP_GST_EPLTREL"; + case DT_HP_EPLTRELSZ: return "HP_GST_EPLTRELSZ"; + case DT_HP_FILTERED: return "HP_FILTERED"; + case DT_HP_FILTER_TLS: return "HP_FILTER_TLS"; + case DT_HP_COMPAT_FILTERED: return "HP_COMPAT_FILTERED"; + case DT_HP_LAZYLOAD: return "HP_LAZYLOAD"; + case DT_HP_BIND_NOW_COUNT: return "HP_BIND_NOW_COUNT"; + case DT_PLT: return "PLT"; + case DT_PLT_SIZE: return "PLT_SIZE"; + case DT_DLT: return "DLT"; + case DT_DLT_SIZE: return "DLT_SIZE"; default: return NULL; } @@ -1672,7 +1686,9 @@ get_dynamic_type (unsigned long type) snprintf (buff, sizeof (buff), _("Processor Specific: %lx"), type); } - else if ((type >= DT_LOOS) && (type <= DT_HIOS)) + else if (((type >= DT_LOOS) && (type <= DT_HIOS)) + || (elf_header.e_machine == EM_PARISC + && (type >= OLD_DT_LOOS) && (type <= OLD_DT_HIOS))) { const char *result; @@ -2389,8 +2405,13 @@ get_parisc_segment_type (unsigned long t case PT_HP_CORE_MMF: return "HP_CORE_MMF"; case PT_HP_PARALLEL: return "HP_PARALLEL"; case PT_HP_FASTBIND: return "HP_FASTBIND"; + case PT_HP_OPT_ANNOT: return "HP_OPT_ANNOT"; + case PT_HP_HSL_ANNOT: return "HP_HSL_ANNOT"; + case PT_HP_STACK: return "HP_STACK"; + case PT_HP_CORE_UTSNAME: return "HP_CORE_UTSNAME"; case PT_PARISC_ARCHEXT: return "PARISC_ARCHEXT"; case PT_PARISC_UNWIND: return "PARISC_UNWIND"; + case PT_PARISC_WEAKORDER: return "PARISC_WEAKORDER"; default: break; } @@ -2554,6 +2575,10 @@ get_parisc_section_type_name (unsigned i case SHT_PARISC_EXT: return "PARISC_EXT"; case SHT_PARISC_UNWIND: return "PARISC_UNWIND"; case SHT_PARISC_DOC: return "PARISC_DOC"; + case SHT_PARISC_ANNOT: return "PARISC_ANNOT"; + case SHT_PARISC_SYMEXTN: return "PARISC_SYMEXTN"; + case SHT_PARISC_STUBS: return "PARISC_STUBS"; + case SHT_PARISC_DLKM: return "PARISC_DLKM"; default: break; } @@ -2693,6 +2718,7 @@ static struct option options[] = {"sections", no_argument, 0, 'S'}, {"section-headers", no_argument, 0, 'S'}, {"section-groups", no_argument, 0, 'g'}, + {"section-details", no_argument, 0, 't'}, {"full-section-name",no_argument, 0, 'N'}, {"symbols", no_argument, 0, 's'}, {"syms", no_argument, 0, 's'}, @@ -2728,8 +2754,7 @@ usage (void) -S --section-headers Display the sections' header\n\ --sections An alias for --section-headers\n\ -g --section-groups Display the section groups\n\ - -N --full-section-name\n\ - Display the full section name\n\ + -t --section-details Display the section details\n\ -e --headers Equivalent to: -h -l -S\n\ -s --syms Display the symbol table\n\ --symbols An alias for --syms\n\ @@ -2802,7 +2827,7 @@ parse_args (int argc, char **argv) usage (); while ((c = getopt_long - (argc, argv, "ersuahnldSDAINgw::x:i:vVWH", options, NULL)) != EOF) + (argc, argv, "ersuahnldSDAINtgw::x:i:vVWH", options, NULL)) != EOF) { char *cp; int section; @@ -2833,8 +2858,10 @@ parse_args (int argc, char **argv) case 'g': do_section_groups++; break; + case 't': case 'N': - do_full_section_name++; + do_sections++; + do_section_details++; break; case 'e': do_header++; @@ -3765,8 +3792,33 @@ get_64bit_elf_symbols (FILE *file, Elf_I static const char * get_elf_section_flags (bfd_vma sh_flags) { - static char buff[33]; + static char buff[1024]; char *p = buff; + int index, size = sizeof (buff) - (8 + 4 + 1); + const struct + { + const char *str; + int len; + } + flags [] = + { + { "WRITE", 5 }, + { "ALLOC", 5 }, + { "EXEC", 4 }, + { "MERGE", 5 }, + { "STRINGS", 7 }, + { "INFO LINK", 9 }, + { "LINK ORDER", 10 }, + { "OS NONCONF", 10 }, + { "GROUP", 5 }, + { "TLS", 3 } + }; + + if (do_section_details) + { + sprintf (buff, "[%8.8lx]: ", (unsigned long) sh_flags); + p += 8 + 4; + } while (sh_flags) { @@ -3775,35 +3827,94 @@ get_elf_section_flags (bfd_vma sh_flags) flag = sh_flags & - sh_flags; sh_flags &= ~ flag; - switch (flag) + if (do_section_details) { - case SHF_WRITE: *p = 'W'; break; - case SHF_ALLOC: *p = 'A'; break; - case SHF_EXECINSTR: *p = 'X'; break; - case SHF_MERGE: *p = 'M'; break; - case SHF_STRINGS: *p = 'S'; break; - case SHF_INFO_LINK: *p = 'I'; break; - case SHF_LINK_ORDER: *p = 'L'; break; - case SHF_OS_NONCONFORMING: *p = 'O'; break; - case SHF_GROUP: *p = 'G'; break; - case SHF_TLS: *p = 'T'; break; + switch (flag) + { + case SHF_WRITE: index = 0; break; + case SHF_ALLOC: index = 1; break; + case SHF_EXECINSTR: index = 2; break; + case SHF_MERGE: index = 3; break; + case SHF_STRINGS: index = 4; break; + case SHF_INFO_LINK: index = 5; break; + case SHF_LINK_ORDER: index = 6; break; + case SHF_OS_NONCONFORMING: index = 7; break; + case SHF_GROUP: index = 8; break; + case SHF_TLS: index = 9; break; - default: - if (flag & SHF_MASKOS) + default: + index = -1; + break; + } + + if (p != buff + 8 + 4) { - *p = 'o'; - sh_flags &= ~ SHF_MASKOS; + if (size < 10 + 2) + abort (); + size -= 2; + *p++ = ','; + *p++ = ' '; + } + + if (index != -1) + { + size -= flags [index].len; + p = stpcpy (p, flags [index].str); + } + else if (flag & SHF_MASKOS) + { + size -= 5 + 8; + sprintf (p, "OS (%8.8lx)", (unsigned long) flag); + p += 5 + 8; } else if (flag & SHF_MASKPROC) { - *p = 'p'; - sh_flags &= ~ SHF_MASKPROC; + size -= 7 + 8; + sprintf (p, "PROC (%8.8lx)", (unsigned long) flag); + p += 7 + 8; } else - *p = 'x'; - break; + { + size -= 10 + 8; + sprintf (p, "UNKNOWN (%8.8lx)", (unsigned long) flag); + p += 10 + 8; + } + } + else + { + switch (flag) + { + case SHF_WRITE: *p = 'W'; break; + case SHF_ALLOC: *p = 'A'; break; + case SHF_EXECINSTR: *p = 'X'; break; + case SHF_MERGE: *p = 'M'; break; + case SHF_STRINGS: *p = 'S'; break; + case SHF_INFO_LINK: *p = 'I'; break; + case SHF_LINK_ORDER: *p = 'L'; break; + case SHF_OS_NONCONFORMING: *p = 'O'; break; + case SHF_GROUP: *p = 'G'; break; + case SHF_TLS: *p = 'T'; break; + + default: + if (elf_header.e_machine == EM_X86_64 + && flag == SHF_X86_64_LARGE) + *p = 'l'; + else if (flag & SHF_MASKOS) + { + *p = 'o'; + sh_flags &= ~ SHF_MASKOS; + } + else if (flag & SHF_MASKPROC) + { + *p = 'p'; + sh_flags &= ~ SHF_MASKPROC; + } + else + *p = 'x'; + break; + } + p++; } - p++; } *p = '\0'; @@ -3983,10 +4094,10 @@ process_section_headers (FILE *file) if (is_32bit_elf) { - if (do_full_section_name) + if (do_section_details) { printf (_(" [Nr] Name\n")); - printf (_(" Type Addr Off Size ES Flg Lk Inf Al\n")); + printf (_(" Type Addr Off Size ES Lk Inf Al\n")); } else printf @@ -3994,10 +4105,10 @@ process_section_headers (FILE *file) } else if (do_wide) { - if (do_full_section_name) + if (do_section_details) { printf (_(" [Nr] Name\n")); - printf (_(" Type Address Off Size ES Flg Lk Inf Al\n")); + printf (_(" Type Address Off Size ES Lk Inf Al\n")); } else printf @@ -4005,11 +4116,11 @@ process_section_headers (FILE *file) } else { - if (do_full_section_name) + if (do_section_details) { printf (_(" [Nr] Name\n")); - printf (_(" Flags Type Address Offset\n")); - printf (_(" Size EntSize Link Info Align\n")); + printf (_(" Type Address Offset Link\n")); + printf (_(" Size EntSize Info Align\n")); } else { @@ -4018,11 +4129,14 @@ process_section_headers (FILE *file) } } + if (do_section_details) + printf (_(" Flags\n")); + for (i = 0, section = section_headers; i < elf_header.e_shnum; i++, section++) { - if (do_full_section_name) + if (do_section_details) { printf (" [%2u] %s\n", SECTION_HEADER_NUM (i), @@ -4046,7 +4160,10 @@ process_section_headers (FILE *file) (unsigned long) section->sh_size, (unsigned long) section->sh_entsize); - printf (" %3s ", get_elf_section_flags (section->sh_flags)); + if (do_section_details) + fputs (" ", stdout); + else + printf (" %3s ", get_elf_section_flags (section->sh_flags)); printf ("%2ld %3lu %2ld\n", (unsigned long) section->sh_link, @@ -4081,7 +4198,10 @@ process_section_headers (FILE *file) print_vma (section->sh_entsize, LONG_HEX); } - printf (" %3s ", get_elf_section_flags (section->sh_flags)); + if (do_section_details) + fputs (" ", stdout); + else + printf (" %3s ", get_elf_section_flags (section->sh_flags)); printf ("%2ld %3lu ", (unsigned long) section->sh_link, @@ -4095,27 +4215,24 @@ process_section_headers (FILE *file) putchar ('\n'); } } - else if (do_full_section_name) + else if (do_section_details) { - printf (" %-15.15s %-15.15s ", - get_elf_section_flags (section->sh_flags), + printf (" %-15.15s ", get_section_type_name (section->sh_type)); - putchar (' '); print_vma (section->sh_addr, LONG_HEX); if ((long) section->sh_offset == section->sh_offset) - printf (" %8.8lx", (unsigned long) section->sh_offset); + printf (" %16.16lx", (unsigned long) section->sh_offset); else { printf (" "); print_vma (section->sh_offset, LONG_HEX); } - printf ("\n "); + printf (" %ld\n ", (unsigned long) section->sh_link); print_vma (section->sh_size, LONG_HEX); - printf (" "); + putchar (' '); print_vma (section->sh_entsize, LONG_HEX); - printf (" %2ld %3lu %ld\n", - (unsigned long) section->sh_link, + printf (" %-16lu %ld\n", (unsigned long) section->sh_info, (unsigned long) section->sh_addralign); } @@ -4142,9 +4259,13 @@ process_section_headers (FILE *file) (unsigned long) section->sh_info, (unsigned long) section->sh_addralign); } + + if (do_section_details) + printf (" %s\n", get_elf_section_flags (section->sh_flags)); } - printf (_("Key to Flags:\n\ + if (!do_section_details) + printf (_("Key to Flags:\n\ W (write), A (alloc), X (execute), M (merge), S (strings)\n\ I (info), L (link order), G (group), x (unknown)\n\ O (extra OS processing required) o (OS specific), p (processor specific)\n")); @@ -5077,7 +5198,7 @@ slurp_hppa_unwind_table (FILE *file, struct hppa_unw_aux_info *aux, Elf_Internal_Shdr *sec) { - unsigned long size, unw_ent_size, nrelas, i; + unsigned long size, unw_ent_size, nentries, nrelas, i; Elf_Internal_Phdr *seg; struct hppa_unw_table_entry *tep; Elf_Internal_Shdr *relsec; @@ -5117,31 +5238,26 @@ slurp_hppa_unwind_table (FILE *file, if (!table) return 0; - unw_ent_size = 2 * eh_addr_size + 8; + unw_ent_size = 16; + nentries = size / unw_ent_size; + size = unw_ent_size * nentries; - tep = aux->table = xcmalloc (size / unw_ent_size, sizeof (aux->table[0])); + tep = aux->table = xcmalloc (nentries, sizeof (aux->table[0])); - for (tp = table; tp < table + size; tp += (2 * eh_addr_size + 8), ++tep) + for (tp = table; tp < table + size; tp += unw_ent_size, ++tep) { unsigned int tmp1, tmp2; tep->start.section = SHN_UNDEF; tep->end.section = SHN_UNDEF; - if (is_32bit_elf) - { - tep->start.offset = byte_get ((unsigned char *) tp + 0, 4); - tep->end.offset = byte_get ((unsigned char *) tp + 4, 4); - tmp1 = byte_get ((unsigned char *) tp + 8, 4); - tmp2 = byte_get ((unsigned char *) tp + 12, 4); - } - else - { - tep->start.offset = BYTE_GET ((unsigned char *) tp + 0); - tep->end.offset = BYTE_GET ((unsigned char *) tp + 8); - tmp1 = byte_get ((unsigned char *) tp + 16, 4); - tmp2 = byte_get ((unsigned char *) tp + 20, 4); - } + tep->start.offset = byte_get ((unsigned char *) tp + 0, 4); + tep->end.offset = byte_get ((unsigned char *) tp + 4, 4); + tmp1 = byte_get ((unsigned char *) tp + 8, 4); + tmp2 = byte_get ((unsigned char *) tp + 12, 4); + + tep->start.offset += aux->seg_base; + tep->end.offset += aux->seg_base; tep->Cannot_unwind = (tmp1 >> 31) & 0x1; tep->Millicode = (tmp1 >> 30) & 0x1; @@ -5174,9 +5290,6 @@ slurp_hppa_unwind_table (FILE *file, tep->Pseudo_SP_Set = (tmp2 >> 28) & 0x1; tep->reserved4 = (tmp2 >> 27) & 0x1; tep->Total_frame_size = tmp2 & 0x7ffffff; - - tep->start.offset += aux->seg_base; - tep->end.offset += aux->seg_base; } free (table); @@ -5235,7 +5348,7 @@ slurp_hppa_unwind_table (FILE *file, free (rela); } - aux->table_len = size / unw_ent_size; + aux->table_len = nentries; return 1; } @@ -5424,7 +5537,13 @@ dynamic_section_parisc_val (Elf_Internal { DT_HP_BIND_RESTRICTED, "HP_BIND_RESTRICTED" }, { DT_HP_BIND_SYMBOLIC, "HP_BIND_SYMBOLIC" }, { DT_HP_RPATH_FIRST, "HP_RPATH_FIRST" }, - { DT_HP_BIND_DEPTH_FIRST, "HP_BIND_DEPTH_FIRST" } + { DT_HP_BIND_DEPTH_FIRST, "HP_BIND_DEPTH_FIRST" }, + { DT_HP_GST, "HP_GST" }, + { DT_HP_SHLIB_FIXED, "HP_SHLIB_FIXED" }, + { DT_HP_MERGE_SHLIB_SEG, "HP_MERGE_SHLIB_SEG" }, + { DT_HP_NODELETE, "HP_NODELETE" }, + { DT_HP_GROUP, "HP_GROUP" }, + { DT_HP_PROTECT_LINKAGE_TABLE, "HP_PROTECT_LINKAGE_TABLE" } }; int first = 1; size_t cnt; @@ -6698,6 +6817,9 @@ get_symbol_index_type (unsigned int type && elf_header.e_machine == EM_IA_64 && elf_header.e_ident[EI_OSABI] == ELFOSABI_HPUX) return "ANSI_COM"; + else if (elf_header.e_machine == EM_X86_64 + && type == SHN_X86_64_LCOMMON) + return "LARGE_COM"; else if (type >= SHN_LOPROC && type <= SHN_HIPROC) sprintf (buff, "PRC[0x%04x]", type); else if (type >= SHN_LOOS && type <= SHN_HIOS) diff -uprN binutils-2.16.91.0.2/binutils/testsuite/binutils-all/objcopy.exp binutils-2.16.91.0.3/binutils/testsuite/binutils-all/objcopy.exp --- binutils-2.16.91.0.2/binutils/testsuite/binutils-all/objcopy.exp 2005-05-10 15:46:43.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/testsuite/binutils-all/objcopy.exp 2005-08-22 12:27:41.000000000 -0700 @@ -71,7 +71,6 @@ if ![string match "" $got] then { # in the first place, and may order things a little differently. # Those systems should use setup_xfail here. - setup_xfail "a29k-*" setup_xfail "h8300-*-rtems*" "h8300-*-coff" setup_xfail "h8500-*-rtems*" "h8500-*-coff" setup_xfail "hppa*-*-*" diff -uprN binutils-2.16.91.0.2/binutils/testsuite/binutils-all/objdump.exp binutils-2.16.91.0.3/binutils/testsuite/binutils-all/objdump.exp --- binutils-2.16.91.0.2/binutils/testsuite/binutils-all/objdump.exp 2005-05-10 15:46:43.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/testsuite/binutils-all/objdump.exp 2005-08-22 12:27:41.000000000 -0700 @@ -36,7 +36,7 @@ send_user "Version [binutil_version $OBJ set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -i"] set cpus_expected [list] -lappend cpus_expected a29k alliant alpha arc arm convex cris +lappend cpus_expected alpha arc arm cris lappend cpus_expected d10v d30v fr30 fr500 fr550 h8 hppa i386 i860 i960 ip2022 lappend cpus_expected m32r m68hc11 m68hc12 m68k m88k MCore lappend cpus_expected mips mn10200 mn10300 msp ns32k pj powerpc pyramid diff -uprN binutils-2.16.91.0.2/binutils/testsuite/ChangeLog binutils-2.16.91.0.3/binutils/testsuite/ChangeLog --- binutils-2.16.91.0.2/binutils/testsuite/ChangeLog 2005-05-10 15:46:43.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/testsuite/ChangeLog 2005-08-22 12:27:41.000000000 -0700 @@ -1,3 +1,8 @@ +2005-08-18 Alan Modra + + * binutils-all/objcopy.exp: Remove a29k support. + * binutils-all/objdump.exp: Likewise, alliant and convex too. + 2005-05-07 Nick Clifton * Update the address and phone number of the FSF organization in diff -uprN binutils-2.16.91.0.2/binutils/unwind-ia64.c binutils-2.16.91.0.3/binutils/unwind-ia64.c --- binutils-2.16.91.0.2/binutils/unwind-ia64.c 2005-05-10 15:46:43.000000000 -0700 +++ binutils-2.16.91.0.3/binutils/unwind-ia64.c 2005-08-22 12:27:41.000000000 -0700 @@ -371,7 +371,7 @@ typedef bfd_vma unw_word; #define UNW_DEC_SPILL_SPREL(fmt, t, abreg, spoff, arg) \ do \ { \ - char regname[10]; \ + char regname[20]; \ \ unw_print_abreg (regname, abreg); \ printf ("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n", \ @@ -382,7 +382,7 @@ typedef bfd_vma unw_word; #define UNW_DEC_SPILL_PSPREL(fmt, t, abreg, pspoff, arg) \ do \ { \ - char regname[10]; \ + char regname[20]; \ \ unw_print_abreg (regname, abreg); \ printf ("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n", \ @@ -393,7 +393,7 @@ typedef bfd_vma unw_word; #define UNW_DEC_RESTORE(fmt, t, abreg, arg) \ do \ { \ - char regname[10]; \ + char regname[20]; \ \ unw_print_abreg (regname, abreg); \ printf ("\t%s:restore(t=%lu,reg=%s)\n", \ @@ -404,7 +404,7 @@ typedef bfd_vma unw_word; #define UNW_DEC_SPILL_REG(fmt, t, abreg, x, ytreg, arg) \ do \ { \ - char abregname[10], tregname[10]; \ + char abregname[20], tregname[20]; \ \ unw_print_abreg (abregname, abreg); \ unw_print_xyreg (tregname, x, ytreg); \ diff -uprN binutils-2.16.91.0.2/binutils.spec binutils-2.16.91.0.3/binutils.spec --- binutils-2.16.91.0.2/binutils.spec 2005-07-20 08:44:10.000000000 -0700 +++ binutils-2.16.91.0.3/binutils.spec 2005-08-21 13:54:33.000000000 -0700 @@ -12,7 +12,7 @@ Summary: A GNU collection of binary utilities. Name: binutils -Version: 2.16.91.0.2 +Version: 2.16.91.0.3 Release: 1 License: GPLv2 Group: Development/Tools diff -uprN binutils-2.16.91.0.2/ChangeLog binutils-2.16.91.0.3/ChangeLog --- binutils-2.16.91.0.2/ChangeLog 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/ChangeLog 2005-08-22 12:27:41.000000000 -0700 @@ -1,3 +1,56 @@ +2005-08-17 Christian Groessler + + * Makefile.tpl: (USUAL_CC_FOR_TARGET): Add missing trailing slash. + * Makefile.in: Regenerate. + +2005-08-12 Paolo Bonzini + + * configure.in: Replace NCN_STRICT_CHECK_TOOL with + NCN_STRICT_CHECK_TOOLS, and likewise for NCN_STRICT_CHECK_TARGET_TOOLS. + Look for alternate names of the target cc and c++ + * configure: Regenerate. + +2005-08-08 Paolo Bonzini + + * configure.in (CC_FOR_TARGET, CXX_FOR_TARGET, GCJ_FOR_TARGET, + GCC_FOR_TARGET, RAW_CXX_FOR_TARGET, GFORTRAN_FOR_TARGET): Find + them with NCN_STRICT_CHECK_TARGET_TOOL, like the other target + tools; remove code to manually set them. + (Target tools): Look in the environment for them. + * Makefile.tpl (CC_FOR_TARGET, CXX_FOR_TARGET, GCJ_FOR_TARGET, + GCC_FOR_TARGET, RAW_CXX_FOR_TARGET, GFORTRAN_FOR_TARGET): Redefine. + (AS_FOR_TARGET, LD_FOR_TARGET, NM_FOR_TARGET): Look into gcc + build directory. + (CONFIGURED_CC_FOR_TARGET, CONFIGURED_CXX_FOR_TARGET, + CONFIGURED_GCJ_FOR_TARGET, CONFIGURED_GCC_FOR_TARGET, + CONFIGURED_GFORTRAN_FOR_TARGET, USUAL_CC_FOR_TARGET, + USUAL_CXX_FOR_TARGET, USUAL_GCJ_FOR_TARGET, USUAL_GCC_FOR_TARGET, + USUAL_RAW_CXX_FOR_TARGET, USUAL_GFORTRAN_FOR_TARGET): New. + (CXX_FOR_TARGET_FOR_RECURSIVE_MAKE, + RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE, RECURSE_FLAGS): Delete. + * configure: Regenerate. + * Makefile.in: Regenerate. + +2005-07-27 Mark Mitchell + + * Makefile.tpl (EXTRA_TARGET_FLAGS): Set LDFLAGS=LDFLAGS_FOR_TARGET. + * Makefile.def (flags_to_pass): Add LDFLAGS_FOR_TARGET. + * Makefile.in: Regenerated. + +2005-07-26 Mark Mitchell + + * Makefile.tpl (SYSROOT_CFLAGS_FOR_TARGET): New variable. + (CFLAGS_FOR_TARGET): Use it. + (CXXFLAGS_FOR_TARGET): Likewise. + * Makefile.in: Regenerated. + * configure.in (--with-build-sysroot): New option. + * configure: Regenerated. + +2005-07-24 Paolo Bonzini + + * Makefile.tpl: Wrap install between unstage and stage + * Makefile.in: Regenerate. + 2005-07-16 Kelley Cook * all files: Update FSF address. diff -uprN binutils-2.16.91.0.2/config/acx.m4 binutils-2.16.91.0.3/config/acx.m4 --- binutils-2.16.91.0.2/config/acx.m4 2005-04-29 10:50:27.000000000 -0700 +++ binutils-2.16.91.0.3/config/acx.m4 2005-08-22 12:27:41.000000000 -0700 @@ -103,72 +103,58 @@ test -n "$target_alias" && ncn_target_to ]) []dnl # _NCN_TOOL_PREFIXES #### -# NCN_CHECK_TARGET_TOOL(variable, prog-to-check-for,[value-if-not-found],[path]) -# Like AC_CHECK_TOOL, but tries a prefix of the target, not the host. -# Code is pretty much lifted from autoconf2.53. +# NCN_STRICT_CHECK_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path]) +# Like plain AC_CHECK_TOOLS, but require prefix if build!=target. -AC_DEFUN([NCN_CHECK_TARGET_TOOL], +AC_DEFUN([NCN_STRICT_CHECK_TOOLS], [AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl -if test -n "$ncn_target_tool_prefix"; then - AC_CHECK_PROG([$1], [${ncn_target_tool_prefix}$2], - [${ncn_target_tool_prefix}$2], , [$4]) -fi -if test -z "$ac_cv_prog_$1" ; then - ncn_cv_$1=$$1 - AC_CHECK_PROG([ncn_cv_$1], [$2], [$2], [$3], [$4]) - $1=$ncn_cv_$1 -else - $1="$ac_cv_prog_$1" -fi -]) []dnl # NCN_CHECK_TARGET_TOOL - - -#### -# NCN_STRICT_CHECK_TOOL(variable, prog-to-check-for,[value-if-not-found],[path]) -# Like AC_CHECK_TOOL, but requires the prefix if build!=host. +for ncn_progname in $2; do + if test -n "$ncn_tool_prefix"; then + AC_CHECK_PROG([$1], [${ncn_tool_prefix}${ncn_progname}], + [${ncn_tool_prefix}${ncn_progname}], , [$4]) + fi + if test -z "$ac_cv_prog_$1" && test $build = $host ; then + AC_CHECK_PROG([$1], [${ncn_progname}], [${ncn_progname}], , [$4]) + fi + test -n "$ac_cv_prog_$1" && break +done -AC_DEFUN([NCN_STRICT_CHECK_TOOL], -[AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl -if test -n "$ncn_tool_prefix"; then - AC_CHECK_PROG([$1], [${ncn_tool_prefix}$2], - [${ncn_tool_prefix}$2], , [$4]) -fi if test -z "$ac_cv_prog_$1" ; then + ifelse([$3],[], [set dummy $2 if test $build = $host ; then - ncn_cv_$1=$$1 - AC_CHECK_PROG([ncn_cv_$1], [$2], [$2], [ifelse([$3],[],[$2],[$3])], [$4]) - $1=$ncn_cv_$1 + $1="[$]2" else - $1="ifelse([$3],[],[${ncn_tool_prefix}$2],[$3])" - fi -else - $1="$ac_cv_prog_$1" + $1="${ncn_tool_prefix}[$]2" + fi], [$1="$3"]) fi -]) []dnl # NCN_STRICT_CHECK_TOOL - +]) []dnl # NCN_STRICT_CHECK_TOOLS #### -# NCN_STRICT_CHECK_TARGET_TOOL(variable, prog-to-check-for,[value-if-not-found],[path]) -# Like NCN_CHECK_TARGET_TOOL, but requires the prefix if build!=target. +# NCN_STRICT_CHECK_TARGET_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path]) +# Like CVS Autoconf AC_CHECK_TARGET_TOOLS, but require prefix if build!=target. -AC_DEFUN([NCN_STRICT_CHECK_TARGET_TOOL], +AC_DEFUN([NCN_STRICT_CHECK_TARGET_TOOLS], [AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl -if test -n "$ncn_target_tool_prefix"; then - AC_CHECK_PROG([$1], [${ncn_target_tool_prefix}$2], - [${ncn_target_tool_prefix}$2], , [$4]) -fi +for ncn_progname in $2; do + if test -n "$ncn_target_tool_prefix"; then + AC_CHECK_PROG([$1], [${ncn_target_tool_prefix}${ncn_progname}], + [${ncn_target_tool_prefix}${ncn_progname}], , [$4]) + fi + if test -z "$ac_cv_prog_$1" && test $build = $target ; then + AC_CHECK_PROG([$1], [${ncn_progname}], [${ncn_progname}], , [$4]) + fi + test -n "$ac_cv_prog_$1" && break +done + if test -z "$ac_cv_prog_$1" ; then + ifelse([$3],[], [set dummy $2 if test $build = $target ; then - ncn_cv_$1=$$1 - AC_CHECK_PROG([ncn_cv_$1], [$2], [$2], [ifelse([$3],[],[$2],[$3])], [$4]) - $1=$ncn_cv_$1 + $1="[$]2" else - $1="ifelse([$3],[],[${ncn_target_tool_prefix}$2],[$3])" - fi -else - $1="$ac_cv_prog_$1" + $1="${ncn_target_tool_prefix}[$]2" + fi], [$1="$3"]) fi -]) []dnl # NCN_STRICT_CHECK_TARGET_TOOL +]) []dnl # NCN_STRICT_CHECK_TARGET_TOOLS ### # AC_PROG_CPP_WERROR diff -uprN binutils-2.16.91.0.2/config/ChangeLog binutils-2.16.91.0.3/config/ChangeLog --- binutils-2.16.91.0.2/config/ChangeLog 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/config/ChangeLog 2005-08-22 12:27:41.000000000 -0700 @@ -1,3 +1,14 @@ +2005-08-12 Paolo Bonzini + + * config/acx.m4 (NCN_CHECK_TARGET_TOOL, NCN_STRICT_CHECK_TOOL, + NCN_STRICT_CHECK_TARGET_TOOL): Remove. + (NCN_STRICT_CHECK_TOOLS, NCN_STRICT_CHECK_TARGET_TOOLS): New, + based on the deleted macros. + +2005-07-27 Mark Mitchell + + * mt-gnu (CXXFLAGS): Include SYSROOT_CFLAGS_FOR_TARGET. + 2005-07-16 Kelley Cook * all files: Update FSF address. diff -uprN binutils-2.16.91.0.2/config/mt-gnu binutils-2.16.91.0.3/config/mt-gnu --- binutils-2.16.91.0.2/config/mt-gnu 2004-09-15 12:05:03.000000000 -0700 +++ binutils-2.16.91.0.3/config/mt-gnu 2005-08-22 12:27:41.000000000 -0700 @@ -1 +1 @@ -CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE +CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) -D_GNU_SOURCE diff -uprN binutils-2.16.91.0.2/configure binutils-2.16.91.0.3/configure --- binutils-2.16.91.0.2/configure 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/configure 2005-08-22 12:27:41.000000000 -0700 @@ -24,6 +24,9 @@ ac_help="$ac_help ac_help="$ac_help --with-gmp=PATH Specify directory for installed GMP library" ac_help="$ac_help + --with-build-sysroot=sysroot + use sysroot as the system root during the build" +ac_help="$ac_help --enable-bootstrap[=lean] Enable bootstrapping [no]" ac_help="$ac_help --enable-serial-[{host,target,build}-]configure @@ -593,7 +596,7 @@ else { echo "configure: error: can not r fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:597: checking host system type" >&5 +echo "configure:600: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -614,7 +617,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)- echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:618: checking target system type" >&5 +echo "configure:621: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -632,7 +635,7 @@ target_os=`echo $target | sed 's/^\([^-] echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:636: checking build system type" >&5 +echo "configure:639: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -687,7 +690,7 @@ test "$program_transform_name" = "" && p # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:691: checking for a BSD compatible install" >&5 +echo "configure:694: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -740,7 +743,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether ln works""... $ac_c" 1>&6 -echo "configure:744: checking whether ln works" >&5 +echo "configure:747: checking whether ln works" >&5 if eval "test \"`echo '$''{'acx_cv_prog_LN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -764,7 +767,7 @@ else fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:768: checking whether ln -s works" >&5 +echo "configure:771: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1789,10 +1792,6 @@ if test "${build}" != "${host}" ; then CXX=${CXX-${host_alias}-c++} CXXFLAGS=${CXXFLAGS-"-g -O2"} CC_FOR_BUILD=${CC_FOR_BUILD-gcc} - CC_FOR_TARGET=${CC_FOR_TARGET-${target_alias}-gcc} - CXX_FOR_TARGET=${CXX_FOR_TARGET-${target_alias}-c++} - GCJ_FOR_TARGET=${GCJ_FOR_TARGET-${target_alias}-gcj} - GCC_FOR_TARGET=${GCC_FOR_TARGET-${CC_FOR_TARGET-${target_alias}-gcc}} BUILD_PREFIX=${build_alias}- BUILD_PREFIX_1=${build_alias}- @@ -1806,14 +1805,13 @@ else # This is all going to change when we autoconfiscate... CC_FOR_BUILD="\$(CC)" - GCC_FOR_TARGET="\$(USUAL_GCC_FOR_TARGET)" BUILD_PREFIX= BUILD_PREFIX_1=loser- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1817: checking for $ac_word" >&5 +echo "configure:1815: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1843,7 +1841,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1847: checking for $ac_word" >&5 +echo "configure:1845: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1894,7 +1892,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1898: checking for $ac_word" >&5 +echo "configure:1896: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1926,7 +1924,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1930: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1928: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1937,12 +1935,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1941 "configure" +#line 1939 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1968,12 +1966,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1972: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1970: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1977: checking whether we are using GNU C" >&5 +echo "configure:1975: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1982,7 +1980,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1986: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -2001,7 +1999,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:2005: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2003: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2068,7 +2066,7 @@ fi # Extract the first word of "${ac_tool_prefix}gnatbind", so it can be a program name with args. set dummy ${ac_tool_prefix}gnatbind; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2072: checking for $ac_word" >&5 +echo "configure:2070: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2100,7 +2098,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "gnatbind", so it can be a program name with args. set dummy gnatbind; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2104: checking for $ac_word" >&5 +echo "configure:2102: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2133,7 +2131,7 @@ fi fi echo $ac_n "checking whether compiler driver understands Ada""... $ac_c" 1>&6 -echo "configure:2137: checking whether compiler driver understands Ada" >&5 +echo "configure:2135: checking whether compiler driver understands Ada" >&5 if eval "test \"`echo '$''{'acx_cv_cc_gcc_supports_ada'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2165,7 +2163,7 @@ else fi echo $ac_n "checking how to compare bootstrapped objects""... $ac_c" 1>&6 -echo "configure:2169: checking how to compare bootstrapped objects" >&5 +echo "configure:2167: checking how to compare bootstrapped objects" >&5 if eval "test \"`echo '$''{'gcc_cv_prog_cmp_skip'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2263,9 +2261,9 @@ saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $gmpinc" # Check GMP actually works echo $ac_n "checking for correct version of gmp.h""... $ac_c" 1>&6 -echo "configure:2267: checking for correct version of gmp.h" >&5 +echo "configure:2265: checking for correct version of gmp.h" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -2289,12 +2287,12 @@ rm -f conftest* if test x"$have_gmp" = xyes; then echo $ac_n "checking for MPFR""... $ac_c" 1>&6 -echo "configure:2293: checking for MPFR" >&5 +echo "configure:2291: checking for MPFR" >&5 saved_LIBS="$LIBS" LIBS="$LIBS $gmplibs" cat > conftest.$ac_ext < #include @@ -2302,7 +2300,7 @@ int main() { mpfr_t n; mpfr_init(n); ; return 0; } EOF -if { (eval echo configure:2306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -2604,6 +2602,18 @@ esac copy_dirs= +# Check whether --with-build-sysroot or --without-build-sysroot was given. +if test "${with_build_sysroot+set}" = set; then + withval="$with_build_sysroot" + if test x"$withval" != x ; then + SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval" + fi +else + SYSROOT_CFLAGS_FOR_TARGET= +fi + + + # Handle --with-headers=XXX. If the value is not "yes", the contents of # the named directory are copied to $(tooldir)/sys-include. if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then @@ -2796,7 +2806,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2800: checking for $ac_word" >&5 +echo "configure:2810: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2831,7 +2841,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2835: checking for $ac_word" >&5 +echo "configure:2845: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2866,7 +2876,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2870: checking for $ac_word" >&5 +echo "configure:2880: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_M4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2901,7 +2911,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2905: checking for $ac_word" >&5 +echo "configure:2915: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2936,7 +2946,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2940: checking for $ac_word" >&5 +echo "configure:2950: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2971,7 +2981,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2975: checking for $ac_word" >&5 +echo "configure:2985: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3448,89 +3458,6 @@ if test "x${use_gnu_ld}" = x && FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(HOST_SUBDIR)/ld' fi -if test "x${CC_FOR_TARGET+set}" = xset; then - : -elif test -d ${srcdir}/gcc; then - CC_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/' -elif test "$host" = "$target"; then - CC_FOR_TARGET='$(CC)' -else - CC_FOR_TARGET=`echo gcc | sed "${program_transform_name}"` -fi -CC_FOR_TARGET=$CC_FOR_TARGET' $(FLAGS_FOR_TARGET)' - -if test "x${GCJ_FOR_TARGET+set}" = xset; then - : -elif test -d ${srcdir}/gcc; then - GCJ_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/gcj -B$$r/$(HOST_SUBDIR)/gcc/' -elif test "$host" = "$target"; then - GCJ_FOR_TARGET='gcj' -else - GCJ_FOR_TARGET=`echo gcj | sed "${program_transform_name}"` -fi -GCJ_FOR_TARGET=$GCJ_FOR_TARGET' $(FLAGS_FOR_TARGET)' - -if test "x${GFORTRAN_FOR_TARGET+set}" = xset; then - : -elif test -d ${srcdir}/gcc; then - GFORTRAN_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/' -elif test "$host" = "$target"; then - GFORTRAN_FOR_TARGET='gfortran' -else - GFORTRAN_FOR_TARGET=`echo gfortran | sed "${program_transform_name}"` -fi -case $GFORTRAN_FOR_TARGET in -*' $(FLAGS_FOR_TARGET)') ;; -*) GFORTRAN_FOR_TARGET=$GFORTRAN_FOR_TARGET' $(FLAGS_FOR_TARGET)' ;; -esac - -# Don't use libstdc++-v3's flags to configure/build itself. -libstdcxx_flags='`test ! -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags || $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes` -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' -raw_libstdcxx_flags='-L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' - -if test "x${CXX_FOR_TARGET+set}" = xset; then - if test "x${RAW_CXX_FOR_TARGET+set}" != xset; then - RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET} - fi -elif test -d ${srcdir}/gcc; then - # We add -shared-libgcc to CXX_FOR_TARGET whenever we use xgcc instead - # of g++ for linking C++ or Java, because g++ has -shared-libgcc by - # default whereas gcc does not. - # RAW_CXX_FOR_TARGET is for linking C++ or java; CXX_FOR_TARGET is for - # all other cases. - CXX_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/g++ -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ '$libstdcxx_flags - RAW_CXX_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ '$raw_libstdcxx_flags -elif test "$host" = "$target"; then - CXX_FOR_TARGET='$(CXX)' - RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET} -else - CXX_FOR_TARGET=`echo c++ | sed "${program_transform_name}"` - RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET} -fi -CXX_FOR_TARGET=$CXX_FOR_TARGET' $(FLAGS_FOR_TARGET)' -RAW_CXX_FOR_TARGET=$RAW_CXX_FOR_TARGET' $(FLAGS_FOR_TARGET)' - -qCXX_FOR_TARGET=`echo "$CXX_FOR_TARGET" | sed 's,[&%],\\\&,g'` -qRAW_CXX_FOR_TARGET=`echo "$RAW_CXX_FOR_TARGET" | sed 's,[&%],\\\&,g'` - -# We want to defer the evaluation of `cmd`s and shell variables in -# CXX_FOR_TARGET when recursing in the top-level Makefile, such as for -# bootstrap. We'll enclose CXX_FOR_TARGET_FOR_RECURSIVE_MAKE in single -# quotes, but we still have to duplicate `$'s so that shell variables -# can be expanded by the nested make as shell variables, not as make -# macros. -qqCXX_FOR_TARGET=`echo "$qCXX_FOR_TARGET" | sed -e 's,[$][$],$$$$,g'` -qqRAW_CXX_FOR_TARGET=`echo "$qRAW_CXX_FOR_TARGET" | sed -e 's,[$][$],$$$$,g'` - -# Wrap CC_FOR_TARGET and friends, for certain types of builds. -CC_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${CC_FOR_TARGET}" -GCJ_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${GCJ_FOR_TARGET}" -GFORTRAN_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${GFORTRAN_FOR_TARGET}" -CXX_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${qCXX_FOR_TARGET}" -RAW_CXX_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${qRAW_CXX_FOR_TARGET}" -CXX_FOR_TARGET_FOR_RECURSIVE_MAKE="\$(STAGE_CC_WRAPPER) ${qqCXX_FOR_TARGET}" -RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE="\$(STAGE_CC_WRAPPER) ${qqRAW_CXX_FOR_TARGET}" - # Makefile fragments. for frag in host_makefile_frag target_makefile_frag alphaieee_frag ospace_frag; do @@ -3574,11 +3501,12 @@ test -n "$host_alias" && ncn_tool_prefix ncn_target_tool_prefix= test -n "$target_alias" && ncn_target_tool_prefix=$target_alias- - if test -n "$ncn_tool_prefix"; then - # Extract the first word of "${ncn_tool_prefix}ar", so it can be a program name with args. -set dummy ${ncn_tool_prefix}ar; ac_word=$2 + for ncn_progname in ar; do + if test -n "$ncn_tool_prefix"; then + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3582: checking for $ac_word" >&5 +echo "configure:3510: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3590,7 +3518,7 @@ else for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_AR="${ncn_tool_prefix}ar" + ac_cv_prog_AR="${ncn_tool_prefix}${ncn_progname}" break fi done @@ -3604,53 +3532,56 @@ else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_AR" ; then - if test $build = $host ; then - ncn_cv_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 + fi + if test -z "$ac_cv_prog_AR" && test $build = $host ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3615: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR'+set}'`\" = set"; then +echo "configure:3541: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_AR"; then - ac_cv_prog_ncn_cv_AR="$ncn_cv_AR" # Let the user override the test. + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_AR="ar" + ac_cv_prog_AR="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_AR" && ac_cv_prog_ncn_cv_AR="ar" fi fi -ncn_cv_AR="$ac_cv_prog_ncn_cv_AR" -if test -n "$ncn_cv_AR"; then - echo "$ac_t""$ncn_cv_AR" 1>&6 +AR="$ac_cv_prog_AR" +if test -n "$AR"; then + echo "$ac_t""$AR" 1>&6 else echo "$ac_t""no" 1>&6 fi - AR=$ncn_cv_AR + fi + test -n "$ac_cv_prog_AR" && break +done + +if test -z "$ac_cv_prog_AR" ; then + set dummy ar + if test $build = $host ; then + AR="$2" else - AR="${ncn_tool_prefix}ar" + AR="${ncn_tool_prefix}$2" fi -else - AR="$ac_cv_prog_AR" fi - if test -n "$ncn_tool_prefix"; then - # Extract the first word of "${ncn_tool_prefix}as", so it can be a program name with args. -set dummy ${ncn_tool_prefix}as; ac_word=$2 + for ncn_progname in as; do + if test -n "$ncn_tool_prefix"; then + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3654: checking for $ac_word" >&5 +echo "configure:3585: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3662,7 +3593,7 @@ else for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_AS="${ncn_tool_prefix}as" + ac_cv_prog_AS="${ncn_tool_prefix}${ncn_progname}" break fi done @@ -3676,53 +3607,56 @@ else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_AS" ; then - if test $build = $host ; then - ncn_cv_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 + fi + if test -z "$ac_cv_prog_AS" && test $build = $host ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3687: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS'+set}'`\" = set"; then +echo "configure:3616: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_AS"; then - ac_cv_prog_ncn_cv_AS="$ncn_cv_AS" # Let the user override the test. + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_AS="as" + ac_cv_prog_AS="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_AS" && ac_cv_prog_ncn_cv_AS="as" fi fi -ncn_cv_AS="$ac_cv_prog_ncn_cv_AS" -if test -n "$ncn_cv_AS"; then - echo "$ac_t""$ncn_cv_AS" 1>&6 +AS="$ac_cv_prog_AS" +if test -n "$AS"; then + echo "$ac_t""$AS" 1>&6 else echo "$ac_t""no" 1>&6 fi - AS=$ncn_cv_AS + fi + test -n "$ac_cv_prog_AS" && break +done + +if test -z "$ac_cv_prog_AS" ; then + set dummy as + if test $build = $host ; then + AS="$2" else - AS="${ncn_tool_prefix}as" + AS="${ncn_tool_prefix}$2" fi -else - AS="$ac_cv_prog_AS" fi - if test -n "$ncn_tool_prefix"; then - # Extract the first word of "${ncn_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ncn_tool_prefix}dlltool; ac_word=$2 + for ncn_progname in dlltool; do + if test -n "$ncn_tool_prefix"; then + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3726: checking for $ac_word" >&5 +echo "configure:3660: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3734,7 +3668,7 @@ else for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_DLLTOOL="${ncn_tool_prefix}dlltool" + ac_cv_prog_DLLTOOL="${ncn_tool_prefix}${ncn_progname}" break fi done @@ -3748,53 +3682,56 @@ else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_DLLTOOL" ; then - if test $build = $host ; then - ncn_cv_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 + fi + if test -z "$ac_cv_prog_DLLTOOL" && test $build = $host ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3759: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL'+set}'`\" = set"; then +echo "configure:3691: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_DLLTOOL"; then - ac_cv_prog_ncn_cv_DLLTOOL="$ncn_cv_DLLTOOL" # Let the user override the test. + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_DLLTOOL="dlltool" + ac_cv_prog_DLLTOOL="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_DLLTOOL" && ac_cv_prog_ncn_cv_DLLTOOL="dlltool" fi fi -ncn_cv_DLLTOOL="$ac_cv_prog_ncn_cv_DLLTOOL" -if test -n "$ncn_cv_DLLTOOL"; then - echo "$ac_t""$ncn_cv_DLLTOOL" 1>&6 +DLLTOOL="$ac_cv_prog_DLLTOOL" +if test -n "$DLLTOOL"; then + echo "$ac_t""$DLLTOOL" 1>&6 else echo "$ac_t""no" 1>&6 fi - DLLTOOL=$ncn_cv_DLLTOOL + fi + test -n "$ac_cv_prog_DLLTOOL" && break +done + +if test -z "$ac_cv_prog_DLLTOOL" ; then + set dummy dlltool + if test $build = $host ; then + DLLTOOL="$2" else - DLLTOOL="${ncn_tool_prefix}dlltool" + DLLTOOL="${ncn_tool_prefix}$2" fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" fi - if test -n "$ncn_tool_prefix"; then - # Extract the first word of "${ncn_tool_prefix}ld", so it can be a program name with args. -set dummy ${ncn_tool_prefix}ld; ac_word=$2 + for ncn_progname in ld; do + if test -n "$ncn_tool_prefix"; then + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3798: checking for $ac_word" >&5 +echo "configure:3735: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3806,7 +3743,7 @@ else for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_LD="${ncn_tool_prefix}ld" + ac_cv_prog_LD="${ncn_tool_prefix}${ncn_progname}" break fi done @@ -3820,53 +3757,56 @@ else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_LD" ; then - if test $build = $host ; then - ncn_cv_LD=$LD - # Extract the first word of "ld", so it can be a program name with args. -set dummy ld; ac_word=$2 + fi + if test -z "$ac_cv_prog_LD" && test $build = $host ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3831: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD'+set}'`\" = set"; then +echo "configure:3766: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_LD"; then - ac_cv_prog_ncn_cv_LD="$ncn_cv_LD" # Let the user override the test. + if test -n "$LD"; then + ac_cv_prog_LD="$LD" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_LD="ld" + ac_cv_prog_LD="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_LD" && ac_cv_prog_ncn_cv_LD="ld" fi fi -ncn_cv_LD="$ac_cv_prog_ncn_cv_LD" -if test -n "$ncn_cv_LD"; then - echo "$ac_t""$ncn_cv_LD" 1>&6 +LD="$ac_cv_prog_LD" +if test -n "$LD"; then + echo "$ac_t""$LD" 1>&6 else echo "$ac_t""no" 1>&6 fi - LD=$ncn_cv_LD + fi + test -n "$ac_cv_prog_LD" && break +done + +if test -z "$ac_cv_prog_LD" ; then + set dummy ld + if test $build = $host ; then + LD="$2" else - LD="${ncn_tool_prefix}ld" + LD="${ncn_tool_prefix}$2" fi -else - LD="$ac_cv_prog_LD" fi - if test -n "$ncn_tool_prefix"; then - # Extract the first word of "${ncn_tool_prefix}nm", so it can be a program name with args. -set dummy ${ncn_tool_prefix}nm; ac_word=$2 + for ncn_progname in nm; do + if test -n "$ncn_tool_prefix"; then + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3870: checking for $ac_word" >&5 +echo "configure:3810: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3878,7 +3818,7 @@ else for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_NM="${ncn_tool_prefix}nm" + ac_cv_prog_NM="${ncn_tool_prefix}${ncn_progname}" break fi done @@ -3892,53 +3832,56 @@ else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_NM" ; then - if test $build = $host ; then - ncn_cv_NM=$NM - # Extract the first word of "nm", so it can be a program name with args. -set dummy nm; ac_word=$2 + fi + if test -z "$ac_cv_prog_NM" && test $build = $host ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3903: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM'+set}'`\" = set"; then +echo "configure:3841: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_NM"; then - ac_cv_prog_ncn_cv_NM="$ncn_cv_NM" # Let the user override the test. + if test -n "$NM"; then + ac_cv_prog_NM="$NM" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_NM="nm" + ac_cv_prog_NM="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_NM" && ac_cv_prog_ncn_cv_NM="nm" fi fi -ncn_cv_NM="$ac_cv_prog_ncn_cv_NM" -if test -n "$ncn_cv_NM"; then - echo "$ac_t""$ncn_cv_NM" 1>&6 +NM="$ac_cv_prog_NM" +if test -n "$NM"; then + echo "$ac_t""$NM" 1>&6 else echo "$ac_t""no" 1>&6 fi - NM=$ncn_cv_NM + fi + test -n "$ac_cv_prog_NM" && break +done + +if test -z "$ac_cv_prog_NM" ; then + set dummy nm + if test $build = $host ; then + NM="$2" else - NM="${ncn_tool_prefix}nm" + NM="${ncn_tool_prefix}$2" fi -else - NM="$ac_cv_prog_NM" fi - if test -n "$ncn_tool_prefix"; then - # Extract the first word of "${ncn_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ncn_tool_prefix}ranlib; ac_word=$2 + for ncn_progname in ranlib; do + if test -n "$ncn_tool_prefix"; then + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3942: checking for $ac_word" >&5 +echo "configure:3885: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3950,7 +3893,7 @@ else for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="${ncn_tool_prefix}ranlib" + ac_cv_prog_RANLIB="${ncn_tool_prefix}${ncn_progname}" break fi done @@ -3964,53 +3907,51 @@ else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_RANLIB" ; then - if test $build = $host ; then - ncn_cv_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 + fi + if test -z "$ac_cv_prog_RANLIB" && test $build = $host ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3975: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB'+set}'`\" = set"; then +echo "configure:3916: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_RANLIB"; then - ac_cv_prog_ncn_cv_RANLIB="$ncn_cv_RANLIB" # Let the user override the test. + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_RANLIB="ranlib" + ac_cv_prog_RANLIB="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_RANLIB" && ac_cv_prog_ncn_cv_RANLIB=":" fi fi -ncn_cv_RANLIB="$ac_cv_prog_ncn_cv_RANLIB" -if test -n "$ncn_cv_RANLIB"; then - echo "$ac_t""$ncn_cv_RANLIB" 1>&6 +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 else echo "$ac_t""no" 1>&6 fi - RANLIB=$ncn_cv_RANLIB - else - RANLIB=":" fi -else - RANLIB="$ac_cv_prog_RANLIB" + test -n "$ac_cv_prog_RANLIB" && break +done + +if test -z "$ac_cv_prog_RANLIB" ; then + RANLIB=":" fi - if test -n "$ncn_tool_prefix"; then - # Extract the first word of "${ncn_tool_prefix}windres", so it can be a program name with args. -set dummy ${ncn_tool_prefix}windres; ac_word=$2 + for ncn_progname in windres; do + if test -n "$ncn_tool_prefix"; then + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4014: checking for $ac_word" >&5 +echo "configure:3955: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4022,7 +3963,7 @@ else for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_WINDRES="${ncn_tool_prefix}windres" + ac_cv_prog_WINDRES="${ncn_tool_prefix}${ncn_progname}" break fi done @@ -4036,53 +3977,56 @@ else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_WINDRES" ; then - if test $build = $host ; then - ncn_cv_WINDRES=$WINDRES - # Extract the first word of "windres", so it can be a program name with args. -set dummy windres; ac_word=$2 + fi + if test -z "$ac_cv_prog_WINDRES" && test $build = $host ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4047: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES'+set}'`\" = set"; then +echo "configure:3986: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_WINDRES"; then - ac_cv_prog_ncn_cv_WINDRES="$ncn_cv_WINDRES" # Let the user override the test. + if test -n "$WINDRES"; then + ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_WINDRES="windres" + ac_cv_prog_WINDRES="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_WINDRES" && ac_cv_prog_ncn_cv_WINDRES="windres" fi fi -ncn_cv_WINDRES="$ac_cv_prog_ncn_cv_WINDRES" -if test -n "$ncn_cv_WINDRES"; then - echo "$ac_t""$ncn_cv_WINDRES" 1>&6 +WINDRES="$ac_cv_prog_WINDRES" +if test -n "$WINDRES"; then + echo "$ac_t""$WINDRES" 1>&6 else echo "$ac_t""no" 1>&6 fi - WINDRES=$ncn_cv_WINDRES + fi + test -n "$ac_cv_prog_WINDRES" && break +done + +if test -z "$ac_cv_prog_WINDRES" ; then + set dummy windres + if test $build = $host ; then + WINDRES="$2" else - WINDRES="${ncn_tool_prefix}windres" + WINDRES="${ncn_tool_prefix}$2" fi -else - WINDRES="$ac_cv_prog_WINDRES" fi - if test -n "$ncn_tool_prefix"; then - # Extract the first word of "${ncn_tool_prefix}objcopy", so it can be a program name with args. -set dummy ${ncn_tool_prefix}objcopy; ac_word=$2 + for ncn_progname in objcopy; do + if test -n "$ncn_tool_prefix"; then + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4086: checking for $ac_word" >&5 +echo "configure:4030: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4094,7 +4038,7 @@ else for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_OBJCOPY="${ncn_tool_prefix}objcopy" + ac_cv_prog_OBJCOPY="${ncn_tool_prefix}${ncn_progname}" break fi done @@ -4108,53 +4052,56 @@ else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_OBJCOPY" ; then - if test $build = $host ; then - ncn_cv_OBJCOPY=$OBJCOPY - # Extract the first word of "objcopy", so it can be a program name with args. -set dummy objcopy; ac_word=$2 + fi + if test -z "$ac_cv_prog_OBJCOPY" && test $build = $host ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4119: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJCOPY'+set}'`\" = set"; then +echo "configure:4061: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_OBJCOPY"; then - ac_cv_prog_ncn_cv_OBJCOPY="$ncn_cv_OBJCOPY" # Let the user override the test. + if test -n "$OBJCOPY"; then + ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_OBJCOPY="objcopy" + ac_cv_prog_OBJCOPY="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_OBJCOPY" && ac_cv_prog_ncn_cv_OBJCOPY="objcopy" fi fi -ncn_cv_OBJCOPY="$ac_cv_prog_ncn_cv_OBJCOPY" -if test -n "$ncn_cv_OBJCOPY"; then - echo "$ac_t""$ncn_cv_OBJCOPY" 1>&6 +OBJCOPY="$ac_cv_prog_OBJCOPY" +if test -n "$OBJCOPY"; then + echo "$ac_t""$OBJCOPY" 1>&6 else echo "$ac_t""no" 1>&6 fi - OBJCOPY=$ncn_cv_OBJCOPY + fi + test -n "$ac_cv_prog_OBJCOPY" && break +done + +if test -z "$ac_cv_prog_OBJCOPY" ; then + set dummy objcopy + if test $build = $host ; then + OBJCOPY="$2" else - OBJCOPY="${ncn_tool_prefix}objcopy" + OBJCOPY="${ncn_tool_prefix}$2" fi -else - OBJCOPY="$ac_cv_prog_OBJCOPY" fi - if test -n "$ncn_tool_prefix"; then - # Extract the first word of "${ncn_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ncn_tool_prefix}objdump; ac_word=$2 + for ncn_progname in objdump; do + if test -n "$ncn_tool_prefix"; then + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4158: checking for $ac_word" >&5 +echo "configure:4105: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4166,7 +4113,7 @@ else for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_OBJDUMP="${ncn_tool_prefix}objdump" + ac_cv_prog_OBJDUMP="${ncn_tool_prefix}${ncn_progname}" break fi done @@ -4180,46 +4127,48 @@ else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_OBJDUMP" ; then - if test $build = $host ; then - ncn_cv_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 + fi + if test -z "$ac_cv_prog_OBJDUMP" && test $build = $host ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4191: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJDUMP'+set}'`\" = set"; then +echo "configure:4136: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_OBJDUMP"; then - ac_cv_prog_ncn_cv_OBJDUMP="$ncn_cv_OBJDUMP" # Let the user override the test. + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_OBJDUMP="objdump" + ac_cv_prog_OBJDUMP="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_OBJDUMP" && ac_cv_prog_ncn_cv_OBJDUMP="objdump" fi fi -ncn_cv_OBJDUMP="$ac_cv_prog_ncn_cv_OBJDUMP" -if test -n "$ncn_cv_OBJDUMP"; then - echo "$ac_t""$ncn_cv_OBJDUMP" 1>&6 +OBJDUMP="$ac_cv_prog_OBJDUMP" +if test -n "$OBJDUMP"; then + echo "$ac_t""$OBJDUMP" 1>&6 else echo "$ac_t""no" 1>&6 fi - OBJDUMP=$ncn_cv_OBJDUMP + fi + test -n "$ac_cv_prog_OBJDUMP" && break +done + +if test -z "$ac_cv_prog_OBJDUMP" ; then + set dummy objdump + if test $build = $host ; then + OBJDUMP="$2" else - OBJDUMP="${ncn_tool_prefix}objdump" + OBJDUMP="${ncn_tool_prefix}$2" fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" fi @@ -4228,519 +4177,911 @@ fi -# Target tools. - if test -n "$ncn_target_tool_prefix"; then - # Extract the first word of "${ncn_target_tool_prefix}ar", so it can be a program name with args. -set dummy ${ncn_target_tool_prefix}ar; ac_word=$2 +# Target tools. Do the tests using the names they may have passed in +# the environment, then move it to CONFIGURED_*_FOR_TARGET. + for ncn_progname in ar; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4237: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_AR_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4188: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$CONFIGURED_AR_FOR_TARGET"; then - ac_cv_prog_CONFIGURED_AR_FOR_TARGET="$CONFIGURED_AR_FOR_TARGET" # Let the user override the test. + if test -n "$AR_FOR_TARGET"; then + ac_cv_prog_AR_FOR_TARGET="$AR_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_CONFIGURED_AR_FOR_TARGET="${ncn_target_tool_prefix}ar" + ac_cv_prog_AR_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" break fi done IFS="$ac_save_ifs" fi fi -CONFIGURED_AR_FOR_TARGET="$ac_cv_prog_CONFIGURED_AR_FOR_TARGET" -if test -n "$CONFIGURED_AR_FOR_TARGET"; then - echo "$ac_t""$CONFIGURED_AR_FOR_TARGET" 1>&6 +AR_FOR_TARGET="$ac_cv_prog_AR_FOR_TARGET" +if test -n "$AR_FOR_TARGET"; then + echo "$ac_t""$AR_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_CONFIGURED_AR_FOR_TARGET" ; then - if test $build = $target ; then - ncn_cv_CONFIGURED_AR_FOR_TARGET=$CONFIGURED_AR_FOR_TARGET - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 + fi + if test -z "$ac_cv_prog_AR_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4270: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_AR_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4219: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_CONFIGURED_AR_FOR_TARGET"; then - ac_cv_prog_ncn_cv_CONFIGURED_AR_FOR_TARGET="$ncn_cv_CONFIGURED_AR_FOR_TARGET" # Let the user override the test. + if test -n "$AR_FOR_TARGET"; then + ac_cv_prog_AR_FOR_TARGET="$AR_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_CONFIGURED_AR_FOR_TARGET="ar" + ac_cv_prog_AR_FOR_TARGET="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_CONFIGURED_AR_FOR_TARGET" && ac_cv_prog_ncn_cv_CONFIGURED_AR_FOR_TARGET="ar" fi fi -ncn_cv_CONFIGURED_AR_FOR_TARGET="$ac_cv_prog_ncn_cv_CONFIGURED_AR_FOR_TARGET" -if test -n "$ncn_cv_CONFIGURED_AR_FOR_TARGET"; then - echo "$ac_t""$ncn_cv_CONFIGURED_AR_FOR_TARGET" 1>&6 +AR_FOR_TARGET="$ac_cv_prog_AR_FOR_TARGET" +if test -n "$AR_FOR_TARGET"; then + echo "$ac_t""$AR_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi - CONFIGURED_AR_FOR_TARGET=$ncn_cv_CONFIGURED_AR_FOR_TARGET + fi + test -n "$ac_cv_prog_AR_FOR_TARGET" && break +done + +if test -z "$ac_cv_prog_AR_FOR_TARGET" ; then + set dummy ar + if test $build = $target ; then + AR_FOR_TARGET="$2" else - CONFIGURED_AR_FOR_TARGET="${ncn_target_tool_prefix}ar" + AR_FOR_TARGET="${ncn_target_tool_prefix}$2" fi -else - CONFIGURED_AR_FOR_TARGET="$ac_cv_prog_CONFIGURED_AR_FOR_TARGET" fi - if test -n "$ncn_target_tool_prefix"; then - # Extract the first word of "${ncn_target_tool_prefix}as", so it can be a program name with args. -set dummy ${ncn_target_tool_prefix}as; ac_word=$2 + for ncn_progname in as; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4309: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_AS_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4263: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$CONFIGURED_AS_FOR_TARGET"; then - ac_cv_prog_CONFIGURED_AS_FOR_TARGET="$CONFIGURED_AS_FOR_TARGET" # Let the user override the test. + if test -n "$AS_FOR_TARGET"; then + ac_cv_prog_AS_FOR_TARGET="$AS_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_CONFIGURED_AS_FOR_TARGET="${ncn_target_tool_prefix}as" + ac_cv_prog_AS_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" break fi done IFS="$ac_save_ifs" fi fi -CONFIGURED_AS_FOR_TARGET="$ac_cv_prog_CONFIGURED_AS_FOR_TARGET" -if test -n "$CONFIGURED_AS_FOR_TARGET"; then - echo "$ac_t""$CONFIGURED_AS_FOR_TARGET" 1>&6 +AS_FOR_TARGET="$ac_cv_prog_AS_FOR_TARGET" +if test -n "$AS_FOR_TARGET"; then + echo "$ac_t""$AS_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_CONFIGURED_AS_FOR_TARGET" ; then - if test $build = $target ; then - ncn_cv_CONFIGURED_AS_FOR_TARGET=$CONFIGURED_AS_FOR_TARGET - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 + fi + if test -z "$ac_cv_prog_AS_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4342: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_AS_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4294: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_CONFIGURED_AS_FOR_TARGET"; then - ac_cv_prog_ncn_cv_CONFIGURED_AS_FOR_TARGET="$ncn_cv_CONFIGURED_AS_FOR_TARGET" # Let the user override the test. + if test -n "$AS_FOR_TARGET"; then + ac_cv_prog_AS_FOR_TARGET="$AS_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_CONFIGURED_AS_FOR_TARGET="as" + ac_cv_prog_AS_FOR_TARGET="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_CONFIGURED_AS_FOR_TARGET" && ac_cv_prog_ncn_cv_CONFIGURED_AS_FOR_TARGET="as" fi fi -ncn_cv_CONFIGURED_AS_FOR_TARGET="$ac_cv_prog_ncn_cv_CONFIGURED_AS_FOR_TARGET" -if test -n "$ncn_cv_CONFIGURED_AS_FOR_TARGET"; then - echo "$ac_t""$ncn_cv_CONFIGURED_AS_FOR_TARGET" 1>&6 +AS_FOR_TARGET="$ac_cv_prog_AS_FOR_TARGET" +if test -n "$AS_FOR_TARGET"; then + echo "$ac_t""$AS_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi - CONFIGURED_AS_FOR_TARGET=$ncn_cv_CONFIGURED_AS_FOR_TARGET + fi + test -n "$ac_cv_prog_AS_FOR_TARGET" && break +done + +if test -z "$ac_cv_prog_AS_FOR_TARGET" ; then + set dummy as + if test $build = $target ; then + AS_FOR_TARGET="$2" else - CONFIGURED_AS_FOR_TARGET="${ncn_target_tool_prefix}as" + AS_FOR_TARGET="${ncn_target_tool_prefix}$2" fi -else - CONFIGURED_AS_FOR_TARGET="$ac_cv_prog_CONFIGURED_AS_FOR_TARGET" fi - if test -n "$ncn_target_tool_prefix"; then - # Extract the first word of "${ncn_target_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ncn_target_tool_prefix}dlltool; ac_word=$2 + for ncn_progname in cc gcc; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4381: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4338: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$CONFIGURED_DLLTOOL_FOR_TARGET"; then - ac_cv_prog_CONFIGURED_DLLTOOL_FOR_TARGET="$CONFIGURED_DLLTOOL_FOR_TARGET" # Let the user override the test. + if test -n "$CC_FOR_TARGET"; then + ac_cv_prog_CC_FOR_TARGET="$CC_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_CONFIGURED_DLLTOOL_FOR_TARGET="${ncn_target_tool_prefix}dlltool" + ac_cv_prog_CC_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" break fi done IFS="$ac_save_ifs" fi fi -CONFIGURED_DLLTOOL_FOR_TARGET="$ac_cv_prog_CONFIGURED_DLLTOOL_FOR_TARGET" -if test -n "$CONFIGURED_DLLTOOL_FOR_TARGET"; then - echo "$ac_t""$CONFIGURED_DLLTOOL_FOR_TARGET" 1>&6 +CC_FOR_TARGET="$ac_cv_prog_CC_FOR_TARGET" +if test -n "$CC_FOR_TARGET"; then + echo "$ac_t""$CC_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_CONFIGURED_DLLTOOL_FOR_TARGET" ; then - if test $build = $target ; then - ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET=$CONFIGURED_DLLTOOL_FOR_TARGET - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 + fi + if test -z "$ac_cv_prog_CC_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4414: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4369: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET"; then - ac_cv_prog_ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET="$ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET" # Let the user override the test. + if test -n "$CC_FOR_TARGET"; then + ac_cv_prog_CC_FOR_TARGET="$CC_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET="dlltool" + ac_cv_prog_CC_FOR_TARGET="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET" && ac_cv_prog_ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET="dlltool" fi fi -ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET="$ac_cv_prog_ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET" -if test -n "$ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET"; then - echo "$ac_t""$ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET" 1>&6 +CC_FOR_TARGET="$ac_cv_prog_CC_FOR_TARGET" +if test -n "$CC_FOR_TARGET"; then + echo "$ac_t""$CC_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi - CONFIGURED_DLLTOOL_FOR_TARGET=$ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET + fi + test -n "$ac_cv_prog_CC_FOR_TARGET" && break +done + +if test -z "$ac_cv_prog_CC_FOR_TARGET" ; then + set dummy cc gcc + if test $build = $target ; then + CC_FOR_TARGET="$2" else - CONFIGURED_DLLTOOL_FOR_TARGET="${ncn_target_tool_prefix}dlltool" + CC_FOR_TARGET="${ncn_target_tool_prefix}$2" fi -else - CONFIGURED_DLLTOOL_FOR_TARGET="$ac_cv_prog_CONFIGURED_DLLTOOL_FOR_TARGET" fi - if test -n "$ncn_target_tool_prefix"; then - # Extract the first word of "${ncn_target_tool_prefix}ld", so it can be a program name with args. -set dummy ${ncn_target_tool_prefix}ld; ac_word=$2 + for ncn_progname in c++ g++ cxx gxx; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4453: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_LD_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4413: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$CONFIGURED_LD_FOR_TARGET"; then - ac_cv_prog_CONFIGURED_LD_FOR_TARGET="$CONFIGURED_LD_FOR_TARGET" # Let the user override the test. + if test -n "$CXX_FOR_TARGET"; then + ac_cv_prog_CXX_FOR_TARGET="$CXX_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_CONFIGURED_LD_FOR_TARGET="${ncn_target_tool_prefix}ld" + ac_cv_prog_CXX_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" break fi done IFS="$ac_save_ifs" fi fi -CONFIGURED_LD_FOR_TARGET="$ac_cv_prog_CONFIGURED_LD_FOR_TARGET" -if test -n "$CONFIGURED_LD_FOR_TARGET"; then - echo "$ac_t""$CONFIGURED_LD_FOR_TARGET" 1>&6 +CXX_FOR_TARGET="$ac_cv_prog_CXX_FOR_TARGET" +if test -n "$CXX_FOR_TARGET"; then + echo "$ac_t""$CXX_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_CONFIGURED_LD_FOR_TARGET" ; then - if test $build = $target ; then - ncn_cv_CONFIGURED_LD_FOR_TARGET=$CONFIGURED_LD_FOR_TARGET - # Extract the first word of "ld", so it can be a program name with args. -set dummy ld; ac_word=$2 + fi + if test -z "$ac_cv_prog_CXX_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4486: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_LD_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4444: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_CONFIGURED_LD_FOR_TARGET"; then - ac_cv_prog_ncn_cv_CONFIGURED_LD_FOR_TARGET="$ncn_cv_CONFIGURED_LD_FOR_TARGET" # Let the user override the test. + if test -n "$CXX_FOR_TARGET"; then + ac_cv_prog_CXX_FOR_TARGET="$CXX_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_CONFIGURED_LD_FOR_TARGET="ld" + ac_cv_prog_CXX_FOR_TARGET="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_CONFIGURED_LD_FOR_TARGET" && ac_cv_prog_ncn_cv_CONFIGURED_LD_FOR_TARGET="ld" fi fi -ncn_cv_CONFIGURED_LD_FOR_TARGET="$ac_cv_prog_ncn_cv_CONFIGURED_LD_FOR_TARGET" -if test -n "$ncn_cv_CONFIGURED_LD_FOR_TARGET"; then - echo "$ac_t""$ncn_cv_CONFIGURED_LD_FOR_TARGET" 1>&6 +CXX_FOR_TARGET="$ac_cv_prog_CXX_FOR_TARGET" +if test -n "$CXX_FOR_TARGET"; then + echo "$ac_t""$CXX_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi - CONFIGURED_LD_FOR_TARGET=$ncn_cv_CONFIGURED_LD_FOR_TARGET + fi + test -n "$ac_cv_prog_CXX_FOR_TARGET" && break +done + +if test -z "$ac_cv_prog_CXX_FOR_TARGET" ; then + set dummy c++ g++ cxx gxx + if test $build = $target ; then + CXX_FOR_TARGET="$2" else - CONFIGURED_LD_FOR_TARGET="${ncn_target_tool_prefix}ld" + CXX_FOR_TARGET="${ncn_target_tool_prefix}$2" fi -else - CONFIGURED_LD_FOR_TARGET="$ac_cv_prog_CONFIGURED_LD_FOR_TARGET" fi - if test -n "$ncn_target_tool_prefix"; then - # Extract the first word of "${ncn_target_tool_prefix}nm", so it can be a program name with args. -set dummy ${ncn_target_tool_prefix}nm; ac_word=$2 + for ncn_progname in dlltool; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4525: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_NM_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4488: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$CONFIGURED_NM_FOR_TARGET"; then - ac_cv_prog_CONFIGURED_NM_FOR_TARGET="$CONFIGURED_NM_FOR_TARGET" # Let the user override the test. + if test -n "$DLLTOOL_FOR_TARGET"; then + ac_cv_prog_DLLTOOL_FOR_TARGET="$DLLTOOL_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_CONFIGURED_NM_FOR_TARGET="${ncn_target_tool_prefix}nm" + ac_cv_prog_DLLTOOL_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" break fi done IFS="$ac_save_ifs" fi fi -CONFIGURED_NM_FOR_TARGET="$ac_cv_prog_CONFIGURED_NM_FOR_TARGET" -if test -n "$CONFIGURED_NM_FOR_TARGET"; then - echo "$ac_t""$CONFIGURED_NM_FOR_TARGET" 1>&6 +DLLTOOL_FOR_TARGET="$ac_cv_prog_DLLTOOL_FOR_TARGET" +if test -n "$DLLTOOL_FOR_TARGET"; then + echo "$ac_t""$DLLTOOL_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi -fi -if test -z "$ac_cv_prog_CONFIGURED_NM_FOR_TARGET" ; then - if test $build = $target ; then - ncn_cv_CONFIGURED_NM_FOR_TARGET=$CONFIGURED_NM_FOR_TARGET - # Extract the first word of "nm", so it can be a program name with args. -set dummy nm; ac_word=$2 + fi + if test -z "$ac_cv_prog_DLLTOOL_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4558: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_NM_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4519: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_CONFIGURED_NM_FOR_TARGET"; then - ac_cv_prog_ncn_cv_CONFIGURED_NM_FOR_TARGET="$ncn_cv_CONFIGURED_NM_FOR_TARGET" # Let the user override the test. + if test -n "$DLLTOOL_FOR_TARGET"; then + ac_cv_prog_DLLTOOL_FOR_TARGET="$DLLTOOL_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_CONFIGURED_NM_FOR_TARGET="nm" + ac_cv_prog_DLLTOOL_FOR_TARGET="${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_CONFIGURED_NM_FOR_TARGET" && ac_cv_prog_ncn_cv_CONFIGURED_NM_FOR_TARGET="nm" fi fi -ncn_cv_CONFIGURED_NM_FOR_TARGET="$ac_cv_prog_ncn_cv_CONFIGURED_NM_FOR_TARGET" -if test -n "$ncn_cv_CONFIGURED_NM_FOR_TARGET"; then - echo "$ac_t""$ncn_cv_CONFIGURED_NM_FOR_TARGET" 1>&6 +DLLTOOL_FOR_TARGET="$ac_cv_prog_DLLTOOL_FOR_TARGET" +if test -n "$DLLTOOL_FOR_TARGET"; then + echo "$ac_t""$DLLTOOL_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi - CONFIGURED_NM_FOR_TARGET=$ncn_cv_CONFIGURED_NM_FOR_TARGET + fi + test -n "$ac_cv_prog_DLLTOOL_FOR_TARGET" && break +done + +if test -z "$ac_cv_prog_DLLTOOL_FOR_TARGET" ; then + set dummy dlltool + if test $build = $target ; then + DLLTOOL_FOR_TARGET="$2" else - CONFIGURED_NM_FOR_TARGET="${ncn_target_tool_prefix}nm" + DLLTOOL_FOR_TARGET="${ncn_target_tool_prefix}$2" fi +fi + + for ncn_progname in gcc; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:4563: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$GCC_FOR_TARGET"; then + ac_cv_prog_GCC_FOR_TARGET="$GCC_FOR_TARGET" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_GCC_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +GCC_FOR_TARGET="$ac_cv_prog_GCC_FOR_TARGET" +if test -n "$GCC_FOR_TARGET"; then + echo "$ac_t""$GCC_FOR_TARGET" 1>&6 else - CONFIGURED_NM_FOR_TARGET="$ac_cv_prog_CONFIGURED_NM_FOR_TARGET" + echo "$ac_t""no" 1>&6 fi - if test -n "$ncn_target_tool_prefix"; then - # Extract the first word of "${ncn_target_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ncn_target_tool_prefix}ranlib; ac_word=$2 + fi + if test -z "$ac_cv_prog_GCC_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4597: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_RANLIB_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4594: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$CONFIGURED_RANLIB_FOR_TARGET"; then - ac_cv_prog_CONFIGURED_RANLIB_FOR_TARGET="$CONFIGURED_RANLIB_FOR_TARGET" # Let the user override the test. + if test -n "$GCC_FOR_TARGET"; then + ac_cv_prog_GCC_FOR_TARGET="$GCC_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_CONFIGURED_RANLIB_FOR_TARGET="${ncn_target_tool_prefix}ranlib" + ac_cv_prog_GCC_FOR_TARGET="${ncn_progname}" break fi done IFS="$ac_save_ifs" fi fi -CONFIGURED_RANLIB_FOR_TARGET="$ac_cv_prog_CONFIGURED_RANLIB_FOR_TARGET" -if test -n "$CONFIGURED_RANLIB_FOR_TARGET"; then - echo "$ac_t""$CONFIGURED_RANLIB_FOR_TARGET" 1>&6 +GCC_FOR_TARGET="$ac_cv_prog_GCC_FOR_TARGET" +if test -n "$GCC_FOR_TARGET"; then + echo "$ac_t""$GCC_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi + + fi + test -n "$ac_cv_prog_GCC_FOR_TARGET" && break +done +if test -z "$ac_cv_prog_GCC_FOR_TARGET" ; then + GCC_FOR_TARGET="${CC_FOR_TARGET}" fi -if test -z "$ac_cv_prog_CONFIGURED_RANLIB_FOR_TARGET" ; then - if test $build = $target ; then - ncn_cv_CONFIGURED_RANLIB_FOR_TARGET=$CONFIGURED_RANLIB_FOR_TARGET - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 + + for ncn_progname in gcj; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4630: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_RANLIB_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4633: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_CONFIGURED_RANLIB_FOR_TARGET"; then - ac_cv_prog_ncn_cv_CONFIGURED_RANLIB_FOR_TARGET="$ncn_cv_CONFIGURED_RANLIB_FOR_TARGET" # Let the user override the test. + if test -n "$GCJ_FOR_TARGET"; then + ac_cv_prog_GCJ_FOR_TARGET="$GCJ_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_CONFIGURED_RANLIB_FOR_TARGET="ranlib" + ac_cv_prog_GCJ_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_CONFIGURED_RANLIB_FOR_TARGET" && ac_cv_prog_ncn_cv_CONFIGURED_RANLIB_FOR_TARGET=":" fi fi -ncn_cv_CONFIGURED_RANLIB_FOR_TARGET="$ac_cv_prog_ncn_cv_CONFIGURED_RANLIB_FOR_TARGET" -if test -n "$ncn_cv_CONFIGURED_RANLIB_FOR_TARGET"; then - echo "$ac_t""$ncn_cv_CONFIGURED_RANLIB_FOR_TARGET" 1>&6 +GCJ_FOR_TARGET="$ac_cv_prog_GCJ_FOR_TARGET" +if test -n "$GCJ_FOR_TARGET"; then + echo "$ac_t""$GCJ_FOR_TARGET" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + if test -z "$ac_cv_prog_GCJ_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:4664: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$GCJ_FOR_TARGET"; then + ac_cv_prog_GCJ_FOR_TARGET="$GCJ_FOR_TARGET" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_GCJ_FOR_TARGET="${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +GCJ_FOR_TARGET="$ac_cv_prog_GCJ_FOR_TARGET" +if test -n "$GCJ_FOR_TARGET"; then + echo "$ac_t""$GCJ_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi - CONFIGURED_RANLIB_FOR_TARGET=$ncn_cv_CONFIGURED_RANLIB_FOR_TARGET + fi + test -n "$ac_cv_prog_GCJ_FOR_TARGET" && break +done + +if test -z "$ac_cv_prog_GCJ_FOR_TARGET" ; then + set dummy gcj + if test $build = $target ; then + GCJ_FOR_TARGET="$2" else - CONFIGURED_RANLIB_FOR_TARGET=":" + GCJ_FOR_TARGET="${ncn_target_tool_prefix}$2" fi -else - CONFIGURED_RANLIB_FOR_TARGET="$ac_cv_prog_CONFIGURED_RANLIB_FOR_TARGET" fi - if test -n "$ncn_target_tool_prefix"; then - # Extract the first word of "${ncn_target_tool_prefix}windres", so it can be a program name with args. -set dummy ${ncn_target_tool_prefix}windres; ac_word=$2 + for ncn_progname in gfortran; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4669: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CONFIGURED_WINDRES_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4708: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$CONFIGURED_WINDRES_FOR_TARGET"; then - ac_cv_prog_CONFIGURED_WINDRES_FOR_TARGET="$CONFIGURED_WINDRES_FOR_TARGET" # Let the user override the test. + if test -n "$GFORTRAN_FOR_TARGET"; then + ac_cv_prog_GFORTRAN_FOR_TARGET="$GFORTRAN_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_CONFIGURED_WINDRES_FOR_TARGET="${ncn_target_tool_prefix}windres" + ac_cv_prog_GFORTRAN_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" break fi done IFS="$ac_save_ifs" fi fi -CONFIGURED_WINDRES_FOR_TARGET="$ac_cv_prog_CONFIGURED_WINDRES_FOR_TARGET" -if test -n "$CONFIGURED_WINDRES_FOR_TARGET"; then - echo "$ac_t""$CONFIGURED_WINDRES_FOR_TARGET" 1>&6 +GFORTRAN_FOR_TARGET="$ac_cv_prog_GFORTRAN_FOR_TARGET" +if test -n "$GFORTRAN_FOR_TARGET"; then + echo "$ac_t""$GFORTRAN_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi + fi + if test -z "$ac_cv_prog_GFORTRAN_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:4739: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$GFORTRAN_FOR_TARGET"; then + ac_cv_prog_GFORTRAN_FOR_TARGET="$GFORTRAN_FOR_TARGET" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_GFORTRAN_FOR_TARGET="${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" +fi fi -if test -z "$ac_cv_prog_CONFIGURED_WINDRES_FOR_TARGET" ; then +GFORTRAN_FOR_TARGET="$ac_cv_prog_GFORTRAN_FOR_TARGET" +if test -n "$GFORTRAN_FOR_TARGET"; then + echo "$ac_t""$GFORTRAN_FOR_TARGET" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + test -n "$ac_cv_prog_GFORTRAN_FOR_TARGET" && break +done + +if test -z "$ac_cv_prog_GFORTRAN_FOR_TARGET" ; then + set dummy gfortran if test $build = $target ; then - ncn_cv_CONFIGURED_WINDRES_FOR_TARGET=$CONFIGURED_WINDRES_FOR_TARGET - # Extract the first word of "windres", so it can be a program name with args. -set dummy windres; ac_word=$2 + GFORTRAN_FOR_TARGET="$2" + else + GFORTRAN_FOR_TARGET="${ncn_target_tool_prefix}$2" + fi +fi + + for ncn_progname in ld; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4702: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_CONFIGURED_WINDRES_FOR_TARGET'+set}'`\" = set"; then +echo "configure:4783: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$ncn_cv_CONFIGURED_WINDRES_FOR_TARGET"; then - ac_cv_prog_ncn_cv_CONFIGURED_WINDRES_FOR_TARGET="$ncn_cv_CONFIGURED_WINDRES_FOR_TARGET" # Let the user override the test. + if test -n "$LD_FOR_TARGET"; then + ac_cv_prog_LD_FOR_TARGET="$LD_FOR_TARGET" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_ncn_cv_CONFIGURED_WINDRES_FOR_TARGET="windres" + ac_cv_prog_LD_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_prog_ncn_cv_CONFIGURED_WINDRES_FOR_TARGET" && ac_cv_prog_ncn_cv_CONFIGURED_WINDRES_FOR_TARGET="windres" fi fi -ncn_cv_CONFIGURED_WINDRES_FOR_TARGET="$ac_cv_prog_ncn_cv_CONFIGURED_WINDRES_FOR_TARGET" -if test -n "$ncn_cv_CONFIGURED_WINDRES_FOR_TARGET"; then - echo "$ac_t""$ncn_cv_CONFIGURED_WINDRES_FOR_TARGET" 1>&6 +LD_FOR_TARGET="$ac_cv_prog_LD_FOR_TARGET" +if test -n "$LD_FOR_TARGET"; then + echo "$ac_t""$LD_FOR_TARGET" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + if test -z "$ac_cv_prog_LD_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:4814: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$LD_FOR_TARGET"; then + ac_cv_prog_LD_FOR_TARGET="$LD_FOR_TARGET" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_LD_FOR_TARGET="${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +LD_FOR_TARGET="$ac_cv_prog_LD_FOR_TARGET" +if test -n "$LD_FOR_TARGET"; then + echo "$ac_t""$LD_FOR_TARGET" 1>&6 else echo "$ac_t""no" 1>&6 fi - CONFIGURED_WINDRES_FOR_TARGET=$ncn_cv_CONFIGURED_WINDRES_FOR_TARGET + fi + test -n "$ac_cv_prog_LD_FOR_TARGET" && break +done + +if test -z "$ac_cv_prog_LD_FOR_TARGET" ; then + set dummy ld + if test $build = $target ; then + LD_FOR_TARGET="$2" else - CONFIGURED_WINDRES_FOR_TARGET="${ncn_target_tool_prefix}windres" + LD_FOR_TARGET="${ncn_target_tool_prefix}$2" fi +fi + + for ncn_progname in nm; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:4858: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$NM_FOR_TARGET"; then + ac_cv_prog_NM_FOR_TARGET="$NM_FOR_TARGET" # Let the user override the test. else - CONFIGURED_WINDRES_FOR_TARGET="$ac_cv_prog_CONFIGURED_WINDRES_FOR_TARGET" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_NM_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" fi +fi +NM_FOR_TARGET="$ac_cv_prog_NM_FOR_TARGET" +if test -n "$NM_FOR_TARGET"; then + echo "$ac_t""$NM_FOR_TARGET" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + if test -z "$ac_cv_prog_NM_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:4889: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$NM_FOR_TARGET"; then + ac_cv_prog_NM_FOR_TARGET="$NM_FOR_TARGET" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_NM_FOR_TARGET="${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +NM_FOR_TARGET="$ac_cv_prog_NM_FOR_TARGET" +if test -n "$NM_FOR_TARGET"; then + echo "$ac_t""$NM_FOR_TARGET" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + test -n "$ac_cv_prog_NM_FOR_TARGET" && break +done +if test -z "$ac_cv_prog_NM_FOR_TARGET" ; then + set dummy nm + if test $build = $target ; then + NM_FOR_TARGET="$2" + else + NM_FOR_TARGET="${ncn_target_tool_prefix}$2" + fi +fi + for ncn_progname in ranlib; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:4933: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB_FOR_TARGET"; then + ac_cv_prog_RANLIB_FOR_TARGET="$RANLIB_FOR_TARGET" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +RANLIB_FOR_TARGET="$ac_cv_prog_RANLIB_FOR_TARGET" +if test -n "$RANLIB_FOR_TARGET"; then + echo "$ac_t""$RANLIB_FOR_TARGET" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + fi + if test -z "$ac_cv_prog_RANLIB_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:4964: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB_FOR_TARGET"; then + ac_cv_prog_RANLIB_FOR_TARGET="$RANLIB_FOR_TARGET" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB_FOR_TARGET="${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +RANLIB_FOR_TARGET="$ac_cv_prog_RANLIB_FOR_TARGET" +if test -n "$RANLIB_FOR_TARGET"; then + echo "$ac_t""$RANLIB_FOR_TARGET" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + test -n "$ac_cv_prog_RANLIB_FOR_TARGET" && break +done +if test -z "$ac_cv_prog_RANLIB_FOR_TARGET" ; then + RANLIB_FOR_TARGET=":" +fi + for ncn_progname in windres; do + if test -n "$ncn_target_tool_prefix"; then + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:5003: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$WINDRES_FOR_TARGET"; then + ac_cv_prog_WINDRES_FOR_TARGET="$WINDRES_FOR_TARGET" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_WINDRES_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +WINDRES_FOR_TARGET="$ac_cv_prog_WINDRES_FOR_TARGET" +if test -n "$WINDRES_FOR_TARGET"; then + echo "$ac_t""$WINDRES_FOR_TARGET" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + fi + if test -z "$ac_cv_prog_WINDRES_FOR_TARGET" && test $build = $target ; then + # Extract the first word of "${ncn_progname}", so it can be a program name with args. +set dummy ${ncn_progname}; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:5034: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$WINDRES_FOR_TARGET"; then + ac_cv_prog_WINDRES_FOR_TARGET="$WINDRES_FOR_TARGET" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_WINDRES_FOR_TARGET="${ncn_progname}" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +WINDRES_FOR_TARGET="$ac_cv_prog_WINDRES_FOR_TARGET" +if test -n "$WINDRES_FOR_TARGET"; then + echo "$ac_t""$WINDRES_FOR_TARGET" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + test -n "$ac_cv_prog_WINDRES_FOR_TARGET" && break +done +if test -z "$ac_cv_prog_WINDRES_FOR_TARGET" ; then + set dummy windres + if test $build = $target ; then + WINDRES_FOR_TARGET="$2" + else + WINDRES_FOR_TARGET="${ncn_target_tool_prefix}$2" + fi +fi +CONFIGURED_AR_FOR_TARGET="$AR_FOR_TARGET" +CONFIGURED_AS_FOR_TARGET="$AS_FOR_TARGET" +CONFIGURED_CC_FOR_TARGET="$CC_FOR_TARGET" +CONFIGURED_CXX_FOR_TARGET="$CXX_FOR_TARGET" +CONFIGURED_DLLTOOL_FOR_TARGET="$DLLTOOL_FOR_TARGET" +CONFIGURED_GCC_FOR_TARGET="$GCC_FOR_TARGET" +CONFIGURED_GCJ_FOR_TARGET="$GCJ_FOR_TARGET" +CONFIGURED_GFORTRAN_FOR_TARGET="$GFORTRAN_FOR_TARGET" +CONFIGURED_LD_FOR_TARGET="$LD_FOR_TARGET" +CONFIGURED_NM_FOR_TARGET="$NM_FOR_TARGET" +CONFIGURED_RANLIB_FOR_TARGET="$RANLIB_FOR_TARGET" +CONFIGURED_WINDRES_FOR_TARGET="$WINDRES_FOR_TARGET" @@ -4754,7 +5095,13 @@ if test "x${build}" = "x${host}" ; then # should also eliminate all of this cleanly. AR_FOR_TARGET="\$(USUAL_AR_FOR_TARGET)" AS_FOR_TARGET="\$(USUAL_AS_FOR_TARGET)" + CC_FOR_TARGET="\$(USUAL_CC_FOR_TARGET)" + CXX_FOR_TARGET="\$(USUAL_CXX_FOR_TARGET)" + RAW_CXX_FOR_TARGET="\$(USUAL_RAW_CXX_FOR_TARGET)" DLLTOOL_FOR_TARGET="\$(USUAL_DLLTOOL_FOR_TARGET)" + GCC_FOR_TARGET="\$(USUAL_GCC_FOR_TARGET)" + GCJ_FOR_TARGET="\$(USUAL_GCJ_FOR_TARGET)" + GFORTRAN_FOR_TARGET="\$(USUAL_GFORTRAN_FOR_TARGET)" LD_FOR_TARGET="\$(USUAL_LD_FOR_TARGET)" NM_FOR_TARGET="\$(USUAL_NM_FOR_TARGET)" RANLIB_FOR_TARGET="\$(USUAL_RANLIB_FOR_TARGET)" @@ -4763,7 +5110,13 @@ else # Just use the ones we found. AR_FOR_TARGET="\$(CONFIGURED_AR_FOR_TARGET)" AS_FOR_TARGET="\$(CONFIGURED_AS_FOR_TARGET)" + CC_FOR_TARGET="\$(CONFIGURED_CC_FOR_TARGET)" + CXX_FOR_TARGET="\$(CONFIGURED_CXX_FOR_TARGET)" + RAW_CXX_FOR_TARGET="\$(CONFIGURED_CXX_FOR_TARGET)" DLLTOOL_FOR_TARGET="\$(CONFIGURED_DLLTOOL_FOR_TARGET)" + GCC_FOR_TARGET="\$(CONFIGURED_GCC_FOR_TARGET)" + GCJ_FOR_TARGET="\$(CONFIGURED_GCJ_FOR_TARGET)" + GFORTRAN_FOR_TARGET="\$(CONFIGURED_GFORTRAN_FOR_TARGET)" LD_FOR_TARGET="\$(CONFIGURED_LD_FOR_TARGET)" NM_FOR_TARGET="\$(CONFIGURED_NM_FOR_TARGET)" RANLIB_FOR_TARGET="\$(CONFIGURED_RANLIB_FOR_TARGET)" @@ -4772,18 +5125,13 @@ fi - - - - - # Certain tools may need extra flags. AR_FOR_TARGET=${AR_FOR_TARGET}${extra_arflags_for_target} RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET}${extra_ranlibflags_for_target} NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target} echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:4787: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:5135: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" @@ -4830,7 +5178,7 @@ esac # gcc for stageN-gcc and stagePREV-gcc for stage(N-1). In case this is not # possible, however, we can resort to mv. echo $ac_n "checking if symbolic links between directories work""... $ac_c" 1>&6 -echo "configure:4834: checking if symbolic links between directories work" >&5 +echo "configure:5182: checking if symbolic links between directories work" >&5 if eval "test \"`echo '$''{'gcc_cv_prog_ln_s_dir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5053,6 +5401,7 @@ s%@do_compare@%$do_compare%g s%@gmplibs@%$gmplibs%g s%@gmpinc@%$gmpinc%g s%@stage1_languages@%$stage1_languages%g +s%@SYSROOT_CFLAGS_FOR_TARGET@%$SYSROOT_CFLAGS_FOR_TARGET%g s%@CONFIGURED_BISON@%$CONFIGURED_BISON%g s%@CONFIGURED_YACC@%$CONFIGURED_YACC%g s%@CONFIGURED_M4@%$CONFIGURED_M4%g @@ -5086,55 +5435,42 @@ s%@target_configdirs@%$target_configdirs s%@CC_FOR_BUILD@%$CC_FOR_BUILD%g s%@config_shell@%$config_shell%g s%@AR@%$AR%g -s%@ncn_cv_AR@%$ncn_cv_AR%g s%@AS@%$AS%g -s%@ncn_cv_AS@%$ncn_cv_AS%g s%@DLLTOOL@%$DLLTOOL%g -s%@ncn_cv_DLLTOOL@%$ncn_cv_DLLTOOL%g s%@LD@%$LD%g -s%@ncn_cv_LD@%$ncn_cv_LD%g s%@NM@%$NM%g -s%@ncn_cv_NM@%$ncn_cv_NM%g s%@RANLIB@%$RANLIB%g -s%@ncn_cv_RANLIB@%$ncn_cv_RANLIB%g s%@WINDRES@%$WINDRES%g -s%@ncn_cv_WINDRES@%$ncn_cv_WINDRES%g s%@OBJCOPY@%$OBJCOPY%g -s%@ncn_cv_OBJCOPY@%$ncn_cv_OBJCOPY%g s%@OBJDUMP@%$OBJDUMP%g -s%@ncn_cv_OBJDUMP@%$ncn_cv_OBJDUMP%g s%@CXX@%$CXX%g s%@CFLAGS_FOR_BUILD@%$CFLAGS_FOR_BUILD%g +s%@AR_FOR_TARGET@%$AR_FOR_TARGET%g +s%@AS_FOR_TARGET@%$AS_FOR_TARGET%g +s%@CC_FOR_TARGET@%$CC_FOR_TARGET%g +s%@CXX_FOR_TARGET@%$CXX_FOR_TARGET%g +s%@DLLTOOL_FOR_TARGET@%$DLLTOOL_FOR_TARGET%g +s%@GCC_FOR_TARGET@%$GCC_FOR_TARGET%g +s%@GCJ_FOR_TARGET@%$GCJ_FOR_TARGET%g +s%@GFORTRAN_FOR_TARGET@%$GFORTRAN_FOR_TARGET%g +s%@LD_FOR_TARGET@%$LD_FOR_TARGET%g +s%@NM_FOR_TARGET@%$NM_FOR_TARGET%g +s%@RANLIB_FOR_TARGET@%$RANLIB_FOR_TARGET%g +s%@WINDRES_FOR_TARGET@%$WINDRES_FOR_TARGET%g s%@CONFIGURED_AR_FOR_TARGET@%$CONFIGURED_AR_FOR_TARGET%g -s%@ncn_cv_CONFIGURED_AR_FOR_TARGET@%$ncn_cv_CONFIGURED_AR_FOR_TARGET%g s%@CONFIGURED_AS_FOR_TARGET@%$CONFIGURED_AS_FOR_TARGET%g -s%@ncn_cv_CONFIGURED_AS_FOR_TARGET@%$ncn_cv_CONFIGURED_AS_FOR_TARGET%g +s%@CONFIGURED_CC_FOR_TARGET@%$CONFIGURED_CC_FOR_TARGET%g +s%@CONFIGURED_CXX_FOR_TARGET@%$CONFIGURED_CXX_FOR_TARGET%g s%@CONFIGURED_DLLTOOL_FOR_TARGET@%$CONFIGURED_DLLTOOL_FOR_TARGET%g -s%@ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET@%$ncn_cv_CONFIGURED_DLLTOOL_FOR_TARGET%g +s%@CONFIGURED_GCC_FOR_TARGET@%$CONFIGURED_GCC_FOR_TARGET%g +s%@CONFIGURED_GCJ_FOR_TARGET@%$CONFIGURED_GCJ_FOR_TARGET%g +s%@CONFIGURED_GFORTRAN_FOR_TARGET@%$CONFIGURED_GFORTRAN_FOR_TARGET%g s%@CONFIGURED_LD_FOR_TARGET@%$CONFIGURED_LD_FOR_TARGET%g -s%@ncn_cv_CONFIGURED_LD_FOR_TARGET@%$ncn_cv_CONFIGURED_LD_FOR_TARGET%g s%@CONFIGURED_NM_FOR_TARGET@%$CONFIGURED_NM_FOR_TARGET%g -s%@ncn_cv_CONFIGURED_NM_FOR_TARGET@%$ncn_cv_CONFIGURED_NM_FOR_TARGET%g s%@CONFIGURED_RANLIB_FOR_TARGET@%$CONFIGURED_RANLIB_FOR_TARGET%g -s%@ncn_cv_CONFIGURED_RANLIB_FOR_TARGET@%$ncn_cv_CONFIGURED_RANLIB_FOR_TARGET%g s%@CONFIGURED_WINDRES_FOR_TARGET@%$CONFIGURED_WINDRES_FOR_TARGET%g -s%@ncn_cv_CONFIGURED_WINDRES_FOR_TARGET@%$ncn_cv_CONFIGURED_WINDRES_FOR_TARGET%g -s%@GCC_FOR_TARGET@%$GCC_FOR_TARGET%g s%@FLAGS_FOR_TARGET@%$FLAGS_FOR_TARGET%g -s%@CC_FOR_TARGET@%$CC_FOR_TARGET%g -s%@GCJ_FOR_TARGET@%$GCJ_FOR_TARGET%g -s%@GFORTRAN_FOR_TARGET@%$GFORTRAN_FOR_TARGET%g -s%@CXX_FOR_TARGET@%$CXX_FOR_TARGET%g s%@RAW_CXX_FOR_TARGET@%$RAW_CXX_FOR_TARGET%g -s%@CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@%$CXX_FOR_TARGET_FOR_RECURSIVE_MAKE%g -s%@RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@%$RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE%g -s%@AR_FOR_TARGET@%$AR_FOR_TARGET%g -s%@AS_FOR_TARGET@%$AS_FOR_TARGET%g -s%@DLLTOOL_FOR_TARGET@%$DLLTOOL_FOR_TARGET%g -s%@LD_FOR_TARGET@%$LD_FOR_TARGET%g -s%@NM_FOR_TARGET@%$NM_FOR_TARGET%g -s%@RANLIB_FOR_TARGET@%$RANLIB_FOR_TARGET%g -s%@WINDRES_FOR_TARGET@%$WINDRES_FOR_TARGET%g s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g s%@MAINT@%$MAINT%g diff -uprN binutils-2.16.91.0.2/configure.in binutils-2.16.91.0.3/configure.in --- binutils-2.16.91.0.2/configure.in 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/configure.in 2005-08-22 12:27:41.000000000 -0700 @@ -1000,10 +1000,6 @@ if test "${build}" != "${host}" ; then CXX=${CXX-${host_alias}-c++} CXXFLAGS=${CXXFLAGS-"-g -O2"} CC_FOR_BUILD=${CC_FOR_BUILD-gcc} - CC_FOR_TARGET=${CC_FOR_TARGET-${target_alias}-gcc} - CXX_FOR_TARGET=${CXX_FOR_TARGET-${target_alias}-c++} - GCJ_FOR_TARGET=${GCJ_FOR_TARGET-${target_alias}-gcj} - GCC_FOR_TARGET=${GCC_FOR_TARGET-${CC_FOR_TARGET-${target_alias}-gcc}} BUILD_PREFIX=${build_alias}- BUILD_PREFIX_1=${build_alias}- @@ -1017,7 +1013,6 @@ else # This is all going to change when we autoconfiscate... CC_FOR_BUILD="\$(CC)" - GCC_FOR_TARGET="\$(USUAL_GCC_FOR_TARGET)" BUILD_PREFIX= BUILD_PREFIX_1=loser- @@ -1405,6 +1400,15 @@ esac copy_dirs= +AC_ARG_WITH([build-sysroot], + [ --with-build-sysroot=sysroot + use sysroot as the system root during the build], + [if test x"$withval" != x ; then + SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval" + fi], + [SYSROOT_CFLAGS_FOR_TARGET=]) +AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET) + # Handle --with-headers=XXX. If the value is not "yes", the contents of # the named directory are copied to $(tooldir)/sys-include. if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then @@ -2039,89 +2043,6 @@ if test "x${use_gnu_ld}" = x && FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(HOST_SUBDIR)/ld' fi -if test "x${CC_FOR_TARGET+set}" = xset; then - : -elif test -d ${srcdir}/gcc; then - CC_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/' -elif test "$host" = "$target"; then - CC_FOR_TARGET='$(CC)' -else - CC_FOR_TARGET=`echo gcc | sed "${program_transform_name}"` -fi -CC_FOR_TARGET=$CC_FOR_TARGET' $(FLAGS_FOR_TARGET)' - -if test "x${GCJ_FOR_TARGET+set}" = xset; then - : -elif test -d ${srcdir}/gcc; then - GCJ_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/gcj -B$$r/$(HOST_SUBDIR)/gcc/' -elif test "$host" = "$target"; then - GCJ_FOR_TARGET='gcj' -else - GCJ_FOR_TARGET=`echo gcj | sed "${program_transform_name}"` -fi -GCJ_FOR_TARGET=$GCJ_FOR_TARGET' $(FLAGS_FOR_TARGET)' - -if test "x${GFORTRAN_FOR_TARGET+set}" = xset; then - : -elif test -d ${srcdir}/gcc; then - GFORTRAN_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/' -elif test "$host" = "$target"; then - GFORTRAN_FOR_TARGET='gfortran' -else - GFORTRAN_FOR_TARGET=`echo gfortran | sed "${program_transform_name}"` -fi -case $GFORTRAN_FOR_TARGET in -*' $(FLAGS_FOR_TARGET)') ;; -*) GFORTRAN_FOR_TARGET=$GFORTRAN_FOR_TARGET' $(FLAGS_FOR_TARGET)' ;; -esac - -# Don't use libstdc++-v3's flags to configure/build itself. -libstdcxx_flags='`test ! -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags || $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes` -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' -raw_libstdcxx_flags='-L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs' - -if test "x${CXX_FOR_TARGET+set}" = xset; then - if test "x${RAW_CXX_FOR_TARGET+set}" != xset; then - RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET} - fi -elif test -d ${srcdir}/gcc; then - # We add -shared-libgcc to CXX_FOR_TARGET whenever we use xgcc instead - # of g++ for linking C++ or Java, because g++ has -shared-libgcc by - # default whereas gcc does not. - # RAW_CXX_FOR_TARGET is for linking C++ or java; CXX_FOR_TARGET is for - # all other cases. - CXX_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/g++ -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ '$libstdcxx_flags - RAW_CXX_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ '$raw_libstdcxx_flags -elif test "$host" = "$target"; then - CXX_FOR_TARGET='$(CXX)' - RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET} -else - CXX_FOR_TARGET=`echo c++ | sed "${program_transform_name}"` - RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET} -fi -CXX_FOR_TARGET=$CXX_FOR_TARGET' $(FLAGS_FOR_TARGET)' -RAW_CXX_FOR_TARGET=$RAW_CXX_FOR_TARGET' $(FLAGS_FOR_TARGET)' - -qCXX_FOR_TARGET=`echo "$CXX_FOR_TARGET" | sed 's,[[&%]],\\\&,g'` -qRAW_CXX_FOR_TARGET=`echo "$RAW_CXX_FOR_TARGET" | sed 's,[[&%]],\\\&,g'` - -# We want to defer the evaluation of `cmd`s and shell variables in -# CXX_FOR_TARGET when recursing in the top-level Makefile, such as for -# bootstrap. We'll enclose CXX_FOR_TARGET_FOR_RECURSIVE_MAKE in single -# quotes, but we still have to duplicate `$'s so that shell variables -# can be expanded by the nested make as shell variables, not as make -# macros. -qqCXX_FOR_TARGET=`echo "$qCXX_FOR_TARGET" | sed -e 's,[[$]][[$]],$$$$,g'` -qqRAW_CXX_FOR_TARGET=`echo "$qRAW_CXX_FOR_TARGET" | sed -e 's,[[$]][[$]],$$$$,g'` - -# Wrap CC_FOR_TARGET and friends, for certain types of builds. -CC_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${CC_FOR_TARGET}" -GCJ_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${GCJ_FOR_TARGET}" -GFORTRAN_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${GFORTRAN_FOR_TARGET}" -CXX_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${qCXX_FOR_TARGET}" -RAW_CXX_FOR_TARGET="\$(STAGE_CC_WRAPPER) ${qRAW_CXX_FOR_TARGET}" -CXX_FOR_TARGET_FOR_RECURSIVE_MAKE="\$(STAGE_CC_WRAPPER) ${qqCXX_FOR_TARGET}" -RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE="\$(STAGE_CC_WRAPPER) ${qqRAW_CXX_FOR_TARGET}" - # Makefile fragments. for frag in host_makefile_frag target_makefile_frag alphaieee_frag ospace_frag; do @@ -2160,39 +2081,62 @@ AC_SUBST(CC_FOR_BUILD) AC_SUBST(config_shell) # Host tools. -NCN_STRICT_CHECK_TOOL(AR, ar) -NCN_STRICT_CHECK_TOOL(AS, as) -NCN_STRICT_CHECK_TOOL(DLLTOOL, dlltool) -NCN_STRICT_CHECK_TOOL(LD, ld) -NCN_STRICT_CHECK_TOOL(NM, nm) -NCN_STRICT_CHECK_TOOL(RANLIB, ranlib, :) -NCN_STRICT_CHECK_TOOL(WINDRES, windres) -NCN_STRICT_CHECK_TOOL(OBJCOPY, objcopy) -NCN_STRICT_CHECK_TOOL(OBJDUMP, objdump) +NCN_STRICT_CHECK_TOOLS(AR, ar) +NCN_STRICT_CHECK_TOOLS(AS, as) +NCN_STRICT_CHECK_TOOLS(DLLTOOL, dlltool) +NCN_STRICT_CHECK_TOOLS(LD, ld) +NCN_STRICT_CHECK_TOOLS(NM, nm) +NCN_STRICT_CHECK_TOOLS(RANLIB, ranlib, :) +NCN_STRICT_CHECK_TOOLS(WINDRES, windres) +NCN_STRICT_CHECK_TOOLS(OBJCOPY, objcopy) +NCN_STRICT_CHECK_TOOLS(OBJDUMP, objdump) AC_SUBST(CC) AC_SUBST(CXX) AC_SUBST(CFLAGS) AC_SUBST(CFLAGS_FOR_BUILD) AC_SUBST(CXXFLAGS) -# Target tools. -NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_AR_FOR_TARGET, ar) -NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_AS_FOR_TARGET, as) -NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_DLLTOOL_FOR_TARGET, dlltool) -NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_LD_FOR_TARGET, ld) -NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_NM_FOR_TARGET, nm) -NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_RANLIB_FOR_TARGET, ranlib, :) -NCN_STRICT_CHECK_TARGET_TOOL(CONFIGURED_WINDRES_FOR_TARGET, windres) - -AC_SUBST(GCC_FOR_TARGET) +# Target tools. Do the tests using the names they may have passed in +# the environment, then move it to CONFIGURED_*_FOR_TARGET. +NCN_STRICT_CHECK_TARGET_TOOLS(AR_FOR_TARGET, ar) +NCN_STRICT_CHECK_TARGET_TOOLS(AS_FOR_TARGET, as) +NCN_STRICT_CHECK_TARGET_TOOLS(CC_FOR_TARGET, cc gcc) +NCN_STRICT_CHECK_TARGET_TOOLS(CXX_FOR_TARGET, c++ g++ cxx gxx) +NCN_STRICT_CHECK_TARGET_TOOLS(DLLTOOL_FOR_TARGET, dlltool) +NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET}) +NCN_STRICT_CHECK_TARGET_TOOLS(GCJ_FOR_TARGET, gcj) +NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran) +NCN_STRICT_CHECK_TARGET_TOOLS(LD_FOR_TARGET, ld) +NCN_STRICT_CHECK_TARGET_TOOLS(NM_FOR_TARGET, nm) +NCN_STRICT_CHECK_TARGET_TOOLS(RANLIB_FOR_TARGET, ranlib, :) +NCN_STRICT_CHECK_TARGET_TOOLS(WINDRES_FOR_TARGET, windres) + +CONFIGURED_AR_FOR_TARGET="$AR_FOR_TARGET" +CONFIGURED_AS_FOR_TARGET="$AS_FOR_TARGET" +CONFIGURED_CC_FOR_TARGET="$CC_FOR_TARGET" +CONFIGURED_CXX_FOR_TARGET="$CXX_FOR_TARGET" +CONFIGURED_DLLTOOL_FOR_TARGET="$DLLTOOL_FOR_TARGET" +CONFIGURED_GCC_FOR_TARGET="$GCC_FOR_TARGET" +CONFIGURED_GCJ_FOR_TARGET="$GCJ_FOR_TARGET" +CONFIGURED_GFORTRAN_FOR_TARGET="$GFORTRAN_FOR_TARGET" +CONFIGURED_LD_FOR_TARGET="$LD_FOR_TARGET" +CONFIGURED_NM_FOR_TARGET="$NM_FOR_TARGET" +CONFIGURED_RANLIB_FOR_TARGET="$RANLIB_FOR_TARGET" +CONFIGURED_WINDRES_FOR_TARGET="$WINDRES_FOR_TARGET" + +AC_SUBST(CONFIGURED_AR_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_AS_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_CC_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_CXX_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_DLLTOOL_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_GCC_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_GCJ_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_GFORTRAN_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_LD_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_NM_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_RANLIB_FOR_TARGET)dnl +AC_SUBST(CONFIGURED_WINDRES_FOR_TARGET)dnl AC_SUBST(FLAGS_FOR_TARGET) -AC_SUBST(CC_FOR_TARGET) -AC_SUBST(GCJ_FOR_TARGET) -AC_SUBST(GFORTRAN_FOR_TARGET) -AC_SUBST(CXX_FOR_TARGET) -AC_SUBST(RAW_CXX_FOR_TARGET) -AC_SUBST(CXX_FOR_TARGET_FOR_RECURSIVE_MAKE) -AC_SUBST(RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE) # Fix up target tools. if test "x${build}" = "x${host}" ; then @@ -2204,7 +2148,13 @@ if test "x${build}" = "x${host}" ; then # should also eliminate all of this cleanly. AR_FOR_TARGET="\$(USUAL_AR_FOR_TARGET)" AS_FOR_TARGET="\$(USUAL_AS_FOR_TARGET)" + CC_FOR_TARGET="\$(USUAL_CC_FOR_TARGET)" + CXX_FOR_TARGET="\$(USUAL_CXX_FOR_TARGET)" + RAW_CXX_FOR_TARGET="\$(USUAL_RAW_CXX_FOR_TARGET)" DLLTOOL_FOR_TARGET="\$(USUAL_DLLTOOL_FOR_TARGET)" + GCC_FOR_TARGET="\$(USUAL_GCC_FOR_TARGET)" + GCJ_FOR_TARGET="\$(USUAL_GCJ_FOR_TARGET)" + GFORTRAN_FOR_TARGET="\$(USUAL_GFORTRAN_FOR_TARGET)" LD_FOR_TARGET="\$(USUAL_LD_FOR_TARGET)" NM_FOR_TARGET="\$(USUAL_NM_FOR_TARGET)" RANLIB_FOR_TARGET="\$(USUAL_RANLIB_FOR_TARGET)" @@ -2213,19 +2163,20 @@ else # Just use the ones we found. AR_FOR_TARGET="\$(CONFIGURED_AR_FOR_TARGET)" AS_FOR_TARGET="\$(CONFIGURED_AS_FOR_TARGET)" + CC_FOR_TARGET="\$(CONFIGURED_CC_FOR_TARGET)" + CXX_FOR_TARGET="\$(CONFIGURED_CXX_FOR_TARGET)" + RAW_CXX_FOR_TARGET="\$(CONFIGURED_CXX_FOR_TARGET)" DLLTOOL_FOR_TARGET="\$(CONFIGURED_DLLTOOL_FOR_TARGET)" + GCC_FOR_TARGET="\$(CONFIGURED_GCC_FOR_TARGET)" + GCJ_FOR_TARGET="\$(CONFIGURED_GCJ_FOR_TARGET)" + GFORTRAN_FOR_TARGET="\$(CONFIGURED_GFORTRAN_FOR_TARGET)" LD_FOR_TARGET="\$(CONFIGURED_LD_FOR_TARGET)" NM_FOR_TARGET="\$(CONFIGURED_NM_FOR_TARGET)" RANLIB_FOR_TARGET="\$(CONFIGURED_RANLIB_FOR_TARGET)" WINDRES_FOR_TARGET="\$(CONFIGURED_WINDRES_FOR_TARGET)" fi -AC_SUBST(AR_FOR_TARGET) -AC_SUBST(AS_FOR_TARGET) -AC_SUBST(DLLTOOL_FOR_TARGET) -AC_SUBST(LD_FOR_TARGET) -AC_SUBST(NM_FOR_TARGET) -AC_SUBST(RANLIB_FOR_TARGET) -AC_SUBST(WINDRES_FOR_TARGET) + +AC_SUBST(RAW_CXX_FOR_TARGET) # Certain tools may need extra flags. AR_FOR_TARGET=${AR_FOR_TARGET}${extra_arflags_for_target} diff -uprN binutils-2.16.91.0.2/cpu/ChangeLog binutils-2.16.91.0.3/cpu/ChangeLog --- binutils-2.16.91.0.2/cpu/ChangeLog 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/cpu/ChangeLog 2005-08-22 12:27:41.000000000 -0700 @@ -1,3 +1,11 @@ +2005-07-25 DJ Delorie + + * m32c.opc (parse_unsigned8): Add %dsp8(). + (parse_signed8): Add %hi8(). + (parse_unsigned16): Add %dsp16(). + (parse_signed16): Add %lo16() and %hi16(). + (parse_lab_5_3): Make valuep a bfd_vma *. + 2005-07-18 Nick Clifton * m32c.cpu (f-16-8, f-24-8, f-32-16, f-dsp-8-u24): New opcode diff -uprN binutils-2.16.91.0.2/cpu/m32c.opc binutils-2.16.91.0.3/cpu/m32c.opc --- binutils-2.16.91.0.2/cpu/m32c.opc 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/cpu/m32c.opc 2005-08-22 12:27:41.000000000 -0700 @@ -153,6 +153,28 @@ parse_unsigned8 (CGEN_CPU_DESC cd, const unsigned long value; long have_zero = 0; + if (strncasecmp (*strp, "%dsp8(", 6) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 6; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_8, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + return _("%dsp8() takes a symbolic address, not a number"); + } + *valuep = value; + return errmsg; + } + if (strncmp (*strp, "0x0", 3) == 0 || (**strp == '0' && *(*strp + 1) != 'x')) have_zero = 1; @@ -201,7 +223,29 @@ parse_signed8 (CGEN_CPU_DESC cd, const c { const char *errmsg = 0; signed long value; - + + if (strncasecmp (*strp, "%hi8(", 5) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 5; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_M32C_HI8, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + value >>= 16; + } + *valuep = value; + return errmsg; + } + PARSE_SIGNED; if (value <= 255 && value > 127) @@ -221,7 +265,29 @@ parse_unsigned16 (CGEN_CPU_DESC cd, cons const char *errmsg = 0; unsigned long value; long have_zero = 0; - + + if (strncasecmp (*strp, "%dsp16(", 7) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_16, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + return _("%dsp16() takes a symbolic address, not a number"); + } + *valuep = value; + return errmsg; + } + /* Don't successfully parse literals beginning with '['. */ if (**strp == '[') return "Invalid literal"; /* Anything -- will not be seen. */ @@ -259,6 +325,50 @@ parse_signed16 (CGEN_CPU_DESC cd, const const char *errmsg = 0; signed long value; + if (strncasecmp (*strp, "%lo16(", 6) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 6; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_LO16, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + value &= 0xffff; + } + *valuep = value; + return errmsg; + } + + if (strncasecmp (*strp, "%hi16(", 6) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 6; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_HI16, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + value >>= 16; + } + *valuep = value; + return errmsg; + } + PARSE_SIGNED; if (value <= 65535 && value > 32767) @@ -380,10 +490,10 @@ parse_lab_5_3 (CGEN_CPU_DESC cd, int opindex ATTRIBUTE_UNUSED, int opinfo, enum cgen_parse_operand_result *type_addr, - unsigned long *valuep) + bfd_vma *valuep) { const char *errmsg = 0; - unsigned long value; + bfd_vma value; enum cgen_parse_operand_result op_res; errmsg = cgen_parse_address (cd, strp, M32C_OPERAND_LAB_5_3, diff -uprN binutils-2.16.91.0.2/gas/as.c binutils-2.16.91.0.3/gas/as.c --- binutils-2.16.91.0.2/gas/as.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/as.c 2005-08-22 12:27:41.000000000 -0700 @@ -43,10 +43,7 @@ #include "dwarf2dbg.h" #include "dw2gencfi.h" #include "hash.h" - -#ifdef BFD_ASSEMBLER #include "bfdver.h" -#endif #ifdef HAVE_ITBL_CPU #include "itbl-ops.h" @@ -112,13 +109,11 @@ int debug_memory = 0; /* Enable verbose mode. */ int verbose = 0; -#ifdef BFD_ASSEMBLER segT reg_section; segT expr_section; segT text_section; segT data_section; segT bss_section; -#endif /* Name of listing file. */ static char *listing_filename = NULL; @@ -225,13 +220,8 @@ print_version_id (void) return; printed = 1; -#ifdef BFD_ASSEMBLER - fprintf (stderr, _("GNU assembler version %s (%s) using BFD version %s"), + fprintf (stderr, _("GNU assembler version %s (%s) using BFD version %s\n"), VERSION, TARGET_ALIAS, BFD_VERSION_STRING); -#else - fprintf (stderr, _("GNU assembler version %s (%s)"), VERSION, TARGET_ALIAS); -#endif - fprintf (stderr, "\n"); } static void @@ -276,7 +266,7 @@ Options:\n\ emulate output (default %s)\n"), def_em); } #endif -#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF) +#if defined OBJ_ELF || defined OBJ_MAYBE_ELF fprintf (stream, _("\ --execstack require executable stack for this object\n")); fprintf (stream, _("\ @@ -433,6 +423,7 @@ parse_args (int * pargc, char *** pargv) OPTION_EXECSTACK, OPTION_NOEXECSTACK, OPTION_ALTERNATE, + OPTION_AL, OPTION_HASH_TABLE_SIZE, OPTION_REDUCE_MEMORY_OVERHEADS, OPTION_WARN_FATAL @@ -451,10 +442,12 @@ parse_args (int * pargc, char *** pargv) necessary because -a= is a valid switch but getopt would normally reject it since --alternate does not take an argument. */ ,{"a", optional_argument, NULL, 'a'} + /* Handle -al=. */ + ,{"al", optional_argument, NULL, OPTION_AL} ,{"defsym", required_argument, NULL, OPTION_DEFSYM} ,{"dump-config", no_argument, NULL, OPTION_DUMPCONFIG} ,{"emulation", required_argument, NULL, OPTION_EMULATION} -#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF) +#if defined OBJ_ELF || defined OBJ_MAYBE_ELF ,{"execstack", no_argument, NULL, OPTION_EXECSTACK} ,{"noexecstack", no_argument, NULL, OPTION_NOEXECSTACK} #endif @@ -595,11 +588,7 @@ parse_args (int * pargc, char *** pargv) case OPTION_VERSION: /* This output is intended to follow the GNU standards document. */ -#ifdef BFD_ASSEMBLER printf (_("GNU assembler %s\n"), BFD_VERSION_STRING); -#else - printf (_("GNU assembler %s\n"), VERSION); -#endif printf (_("Copyright 2005 Free Software Foundation, Inc.\n")); printf (_("\ This program is free software; you may redistribute it under the terms of\n\ @@ -640,11 +629,7 @@ the GNU General Public License. This pr if (*s == '\0') as_fatal (_("bad defsym; format is --defsym name=value")); *s++ = '\0'; -#ifdef BFD_ASSEMBLER i = bfd_scan_vma (s, (const char **) NULL, 0); -#else - i = strtol (s, (char **) NULL, 0); -#endif n = xmalloc (sizeof *n); n->next = defsyms; n->name = optarg; @@ -771,7 +756,7 @@ the GNU General Public License. This pr flag_fatal_warnings = 1; break; -#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF) +#if defined OBJ_ELF || defined OBJ_MAYBE_ELF case OPTION_EXECSTACK: flag_execstack = 1; flag_noexecstack = 0; @@ -786,6 +771,12 @@ the GNU General Public License. This pr flag_always_generate_output = 1; break; + case OPTION_AL: + listing |= LISTING_LISTING; + if (optarg) + listing_filename = xstrdup (optarg); + break; + case OPTION_ALTERNATE: optarg = old_argv [optind - 1]; while (* optarg == '-') @@ -974,44 +965,10 @@ static void perform_an_assembly_pass (int argc, char ** argv) { int saw_a_file = 0; -#ifdef BFD_ASSEMBLER flagword applicable; -#endif need_pass_2 = 0; -#ifndef BFD_ASSEMBLER -#ifdef MANY_SEGMENTS - { - unsigned int i; - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - segment_info[i].fix_root = 0; - } - /* Create the three fixed ones. */ - { - segT seg; - -#ifdef TE_APOLLO - seg = subseg_new (".wtext", 0); -#else - seg = subseg_new (".text", 0); -#endif - assert (seg == SEG_E0); - seg = subseg_new (".data", 0); - assert (seg == SEG_E1); - seg = subseg_new (".bss", 0); - assert (seg == SEG_E2); -#ifdef TE_APOLLO - create_target_segments (); -#endif - } - -#else /* not MANY_SEGMENTS. */ - text_fix_root = NULL; - data_fix_root = NULL; - bss_fix_root = NULL; -#endif /* not MANY_SEGMENTS. */ -#else /* BFD_ASSEMBLER. */ /* Create the standard sections, and those the assembler uses internally. */ text_section = subseg_new (TEXT_SECTION_NAME, 0); @@ -1033,12 +990,10 @@ perform_an_assembly_pass (int argc, char reg_section = subseg_new ("*GAS `reg' section*", 0); expr_section = subseg_new ("*GAS `expr' section*", 0); -#endif /* BFD_ASSEMBLER. */ - subseg_set (text_section, 0); /* This may add symbol table entries, which requires having an open BFD, - and sections already created, in BFD_ASSEMBLER mode. */ + and sections already created. */ md_begin (); #ifdef USING_CGEN @@ -1104,10 +1059,8 @@ main (int argc, char ** argv) out_file_name = OBJ_DEFAULT_OUTPUT_FILE_NAME; hex_init (); -#ifdef BFD_ASSEMBLER bfd_init (); bfd_set_error_program_name (myname); -#endif #ifdef USE_EMULATIONS select_emulation_mode (argc, argv); @@ -1131,21 +1084,13 @@ main (int argc, char ** argv) #ifdef TC_I960 macro_strip_at = flag_mri; #endif -#ifdef TC_A29K - /* For compatibility with the AMD 29K family macro assembler - specification. */ - flag_macro_alternate = 1; - macro_strip_at = 1; -#endif macro_init (flag_macro_alternate, flag_mri, macro_strip_at, macro_expr); PROGRESS (1); -#ifdef BFD_ASSEMBLER output_file_create (out_file_name); assert (stdoutput != 0); -#endif #ifdef tc_init_after_args tc_init_after_args (); @@ -1180,7 +1125,7 @@ main (int argc, char ** argv) md_end (); #endif -#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF) +#if defined OBJ_ELF || defined OBJ_MAYBE_ELF if ((flag_execstack || flag_noexecstack) && OUTPUT_FLAVOR == bfd_target_elf_flavour) { @@ -1207,13 +1152,11 @@ main (int argc, char ** argv) else keep_it = 0; -#if defined (BFD_ASSEMBLER) || !defined (BFD) /* This used to be done at the start of write_object_file in write.c, but that caused problems when doing listings when keep_it was zero. This could probably be moved above md_end, but I didn't want to risk the change. */ subsegs_finish (); -#endif if (keep_it) write_object_file (); @@ -1223,10 +1166,7 @@ main (int argc, char ** argv) #endif #ifndef OBJ_VMS /* Does its own file handling. */ -#ifndef BFD_ASSEMBLER - if (keep_it) -#endif - output_file_close (out_file_name); + output_file_close (out_file_name); #endif if (flag_fatal_warnings && had_warnings () > 0 && had_errors () == 0) diff -uprN binutils-2.16.91.0.2/gas/as.h binutils-2.16.91.0.3/gas/as.h --- binutils-2.16.91.0.2/gas/as.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/as.h 2005-08-22 12:27:41.000000000 -0700 @@ -111,9 +111,7 @@ extern void *alloca (); /* Now GNU header files... */ #include "ansidecl.h" -#ifdef BFD_ASSEMBLER #include "bfd.h" -#endif #include "libiberty.h" /* Define the standard progress macros. */ @@ -207,14 +205,9 @@ extern char *strstr (); /* These are assembler-wide concepts */ -#ifdef BFD_ASSEMBLER extern bfd *stdoutput; typedef bfd_vma addressT; typedef bfd_signed_vma offsetT; -#else -typedef unsigned long addressT; -typedef long offsetT; -#endif /* Type of symbol value, etc. For use in prototypes. */ typedef addressT valueT; @@ -243,49 +236,11 @@ typedef addressT valueT; /* subsegs.c Sub-segments. Also, segment(=expression type)s.*/ -#ifndef BFD_ASSEMBLER - -#ifdef MANY_SEGMENTS -#include "bfd.h" -#define N_SEGMENTS 40 -#define SEG_NORMAL(x) ((x) >= SEG_E0 && (x) <= SEG_E39) -#define SEG_LIST SEG_E0,SEG_E1,SEG_E2,SEG_E3,SEG_E4,SEG_E5,SEG_E6,SEG_E7,SEG_E8,SEG_E9,\ - SEG_E10,SEG_E11,SEG_E12,SEG_E13,SEG_E14,SEG_E15,SEG_E16,SEG_E17,SEG_E18,SEG_E19,\ - SEG_E20,SEG_E21,SEG_E22,SEG_E23,SEG_E24,SEG_E25,SEG_E26,SEG_E27,SEG_E28,SEG_E29,\ - SEG_E30,SEG_E31,SEG_E32,SEG_E33,SEG_E34,SEG_E35,SEG_E36,SEG_E37,SEG_E38,SEG_E39 -#define SEG_TEXT SEG_E0 -#define SEG_DATA SEG_E1 -#define SEG_BSS SEG_E2 -#define SEG_LAST SEG_E39 -#else -#define N_SEGMENTS 3 -#define SEG_NORMAL(x) ((x) == SEG_TEXT || (x) == SEG_DATA || (x) == SEG_BSS) -#define SEG_LIST SEG_TEXT,SEG_DATA,SEG_BSS -#endif - -typedef enum _segT -{ - SEG_ABSOLUTE = 0, - SEG_LIST, - SEG_UNKNOWN, - SEG_GOOF, /* Only happens if AS has a logic error. */ - /* Invented so we don't crash printing - error message involving weird segment. */ - SEG_EXPR, /* Intermediate expression values. */ - SEG_DEBUG, /* Debug segment */ - SEG_NTV, /* Transfert vector preload segment. */ - SEG_PTV, /* Transfert vector postload segment. */ - SEG_REGISTER /* Mythical: a register-valued expression. */ -} segT; - -#define SEG_MAXIMUM_ORDINAL (SEG_REGISTER) -#else typedef asection *segT; #define SEG_NORMAL(SEG) ( (SEG) != absolute_section \ && (SEG) != undefined_section \ && (SEG) != reg_section \ && (SEG) != expr_section) -#endif typedef int subsegT; /* What subseg we are accessing now? */ @@ -294,33 +249,13 @@ COMMON subsegT now_subseg; /* Segment our instructions emit to. */ COMMON segT now_seg; -#ifdef BFD_ASSEMBLER #define segment_name(SEG) bfd_get_section_name (stdoutput, SEG) -#else -extern char const *const seg_name[]; -#define segment_name(SEG) seg_name[(int) (SEG)] -#endif - -#ifndef BFD_ASSEMBLER -extern int section_alignment[]; -#endif -#ifdef BFD_ASSEMBLER extern segT reg_section, expr_section; /* Shouldn't these be eliminated someday? */ extern segT text_section, data_section, bss_section; #define absolute_section bfd_abs_section_ptr #define undefined_section bfd_und_section_ptr -#else -#define reg_section SEG_REGISTER -#define expr_section SEG_EXPR -#define text_section SEG_TEXT -#define data_section SEG_DATA -#define bss_section SEG_BSS -#define absolute_section SEG_ABSOLUTE -#define undefined_section SEG_UNKNOWN -#endif - enum _relax_state { @@ -602,9 +537,7 @@ int seg_not_empty_p (segT); void start_dependencies (char *); void register_dependency (char *); void print_dependencies (void); -#ifdef BFD_ASSEMBLER segT subseg_get (const char *, int); -#endif struct expressionS; struct fix; @@ -612,10 +545,8 @@ typedef struct symbol symbolS; struct relax_type; typedef struct frag fragS; -#ifdef BFD_ASSEMBLER /* literal.c */ valueT add_to_literal_pool (symbolS *, valueT, segT, int); -#endif int check_eh_frame (struct expressionS *, unsigned int *); int eh_frame_estimate_size_before_relax (fragS *); diff -uprN binutils-2.16.91.0.2/gas/ChangeLog binutils-2.16.91.0.3/gas/ChangeLog --- binutils-2.16.91.0.2/gas/ChangeLog 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/ChangeLog 2005-08-22 12:27:41.000000000 -0700 @@ -1,3 +1,430 @@ +2005-08-18 Christian Groessler + + * config/tc-h8300.h: Remove TC_RELOC_MANGLE/tc_reloc_mangle. + * config/tc-mcore.h: Likewise. + * config/tc-z8k.h: Likewise. + * config/tc-z8k.c: Likewise. + * config/tc-sh.h: Remove TC_RELOC_MANGLE and + sh_coff_reloc_mangle declaration. + * config/tc-sh.c: (md_apply_fix): Fix comment for case + BFD_RELOC_SH_USES. + +2005-08-18 Kaz Kojima + + * config/tc-sh64.c (sh64_target_format): Check preset_target_arch + to confirm that no ISA is specified. + +2005-08-18 Nick Clifton + + * write.c (relax_segment): Count the number of frags being + processed and use this to compute a maximum limit on the number of + iterations that will be allowed when attempting to relax the + segment. + +2005-08-17 Danny Smith + + * config/obj-coff.c (obj_coff_weak): Set auxiliary record + of NT weak externals to IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY. + +2005-08-16 Alan Modra + + * config/tc-ppc.c (ppc_set_cpu): Don't select 64-bit based on + default cpu. + +2005-08-15 Paul Brook + + * config/tc-arm.c (do_t_mov_cmp): Fix encoding of i16-bit conditional + instructions. + (do_t_mvn_tst, do_t_neg, do_t_shift): Ditto. + +2005-08-15 Daniel Jacobowitz + + * config/tc-ppc.c (parse_cpu): Add -me300 support. + (md_show_usage): Likewise. + * doc/c-ppc.texi (PowerPC-Opts): Document it. + +2005-08-12 Martin Schwidefsky + + * config/tc-s390.c (md_parse_option): Add cpu type z9-109. + (md_gather_operands): Add support for optional operands. + +2005-08-12 Dmitry Diky + * config/tc-msp430.c (msp430_enable_relax): New flag. + (msp430_enable_polys): Likewise. + (OPTION_RELAX): New option. + (OPTION_POLYMORPHS): Likewise. + (md_longopts): New long options. + (md_show_usage): Updated. + (md_parse_option): Add new options handler. + (msp430_operands): Add check if polymorph insns are enabled. + (msp430_force_relocation_local): New function. + (md_apply_fix): Now delete relocs according to new flags combination. + (msp430_relax_frag): Convert long branches to short branches only if + flag msp430_enable_relax is set. + * config/tc-msp430.h (TC_FORCE_RELOCATION_LOCAL): Defined. + (msp430_force_relocation_local): Likewise. + * doc/c-msp430.texi: Describe new options. + +2005-08-11 Ian Lance Taylor + + * Makefile.am ($(srcdir)/make-gas.com): Remove target. + (stamp-mk.com): Likewise. + (EXTRA_DIST): Remove make-gas.com from list. + (MOSTLYCLEANFILES): Remove stamp-mk.com from list. + * Makefile.in: Regenerate. + +2005-08-11 Hans-Peter Nilsson + + * subsegs.c (subseg_change): Move declaration of seginfo to before + first statement. + +2005-08-11 Alan Modra + + * README-vms: Delete. + * config-gas.com: Delete. + * makefile.vms: Delete. + * vmsconf.sh: Delete. + * config/atof-tahoe.c: Delete. + * config/m88k-opcode.h: Delete. + * config/obj-bout.c: Delete. + * config/obj-bout.h: Delete. + * config/obj-hp300.c: Delete. + * config/obj-hp300.h: Delete. + * config/tc-a29k.c: Delete. + * config/tc-a29k.h: Delete. + * config/tc-h8500.c: Delete. + * config/tc-h8500.h: Delete. + * config/tc-m88k.c: Delete. + * config/tc-m88k.h: Delete. + * config/tc-tahoe.c: Delete. + * config/tc-tahoe.h: Delete. + * config/tc-tic80.c: Delete. + * config/tc-tic80.h: Delete. + * config/tc-w65.c: Delete. + * config/tc-w65.h: Delete. + * config/te-aux.h: Delete. + * config/te-delt88.h: Delete. + * config/te-delta.h: Delete. + * config/te-dpx2.h: Delete. + * config/te-hp300.h: Delete. + * config/te-ic960.h: Delete. + * config/vms-a-conf.h: Delete. + * doc/c-a29k.texi: Delete. + * doc/c-h8500.texi: Delete. + * doc/c-m88k.texi: Delete. + * README: Remove obsolete examples, and list of supported targets. + * Makefile.am: Remove a29k, h8500, m88k, tahoe, tic80, w65, + bout and hp300 support. + (DEP_FLAGS): Don't define BFD_ASSEMBLER. + * configure.in: Remove --enable-bfd-assembler, need_bfd, + primary_bfd_gas. + * configure.tgt: Remove a29k, h8300-coff, h8500-*, i960 non-elf, + m68k non bfd, m88k, or32-coff, tic80-*, vax non-bfd, w65k-*, *-nindy. + * as.c: Remove all non-BFD_ASSEMBLER code, support for above targets. + * as.h: Likewise. + * dw2gencfi.c: Likewise. + * dwarf2dbg.c: Likewise. + * ehopt.c: Likewise. + * input-file.c: Likewise. + * listing.c: Likewise. + * literal.c: Likewise. + * messages.c: Likewise. + * obj.h: Likewise. + * output-file.c: Likewise. + * read.c: Likewise. + * stabs.c: Likewise. + * struc-symbol.h: Likewise. + * subsegs.c: Likewise. + * subsegs.h: Likewise. + * symbols.c: Likewise. + * symbols.h: Likewise. + * tc.h: Likewise. + * write.c: Likewise. + * write.h: Likewise. + * config/aout_gnu.h: Likewise. + * config/obj-aout.c: Likewise. + * config/obj-aout.h: Likewise. + * config/obj-coff.c: Likewise. + * config/obj-coff.h: Likewise. + * config/obj-evax.h: Likewise. + * config/obj-ieee.h: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-arm.h: Likewise. + * config/tc-avr.c: Likewise. + * config/tc-avr.h: Likewise. + * config/tc-crx.h: Likewise. + * config/tc-d10v.h: Likewise. + * config/tc-d30v.h: Likewise. + * config/tc-dlx.h: Likewise. + * config/tc-fr30.h: Likewise. + * config/tc-frv.h: Likewise. + * config/tc-h8300.c: Likewise. + * config/tc-h8300.h: Likewise. + * config/tc-hppa.h: Likewise. + * config/tc-i370.h: Likewise. + * config/tc-i386.c: Likewise. + * config/tc-i386.h: Likewise. + * config/tc-i860.h: Likewise. + * config/tc-i960.c: Likewise. + * config/tc-i960.h: Likewise. + * config/tc-ip2k.h: Likewise. + * config/tc-iq2000.h: Likewise. + * config/tc-m32c.h: Likewise. + * config/tc-m32r.h: Likewise. + * config/tc-m68hc11.h: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-m68k.h: Likewise. + * config/tc-maxq.c: Likewise. + * config/tc-maxq.h: Likewise. + * config/tc-mcore.c: Likewise. + * config/tc-mcore.h: Likewise. + * config/tc-mn10200.h: Likewise. + * config/tc-mn10300.c: Likewise. + * config/tc-mn10300.h: Likewise. + * config/tc-ms1.h: Likewise. + * config/tc-msp430.c: Likewise. + * config/tc-msp430.h: Likewise. + * config/tc-ns32k.c: Likewise. + * config/tc-ns32k.h: Likewise. + * config/tc-openrisc.h: Likewise. + * config/tc-or32.c: Likewise. + * config/tc-or32.h: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-ppc.h: Likewise. + * config/tc-s390.h: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-sh.h: Likewise. + * config/tc-sparc.c: Likewise. + * config/tc-tic30.c: Likewise. + * config/tc-tic30.h: Likewise. + * config/tc-tic4x.c: Likewise. + * config/tc-tic4x.h: Likewise. + * config/tc-tic54x.c: Likewise. + * config/tc-tic54x.h: Likewise. + * config/tc-v850.h: Likewise. + * config/tc-vax.c: Likewise. + * config/tc-vax.h: Likewise. + * config/tc-xstormy16.h: Likewise. + * config/tc-xtensa.h: Likewise. + * config/tc-z8k.c: Likewise. + * config/tc-z8k.h: Likewise. + * config/vms-a-conf.h + * doc/Makefile.am: Likewise. + * doc/all.texi: Likewise. + * doc/as.texinfo: Likewise. + * doc/internals.texi: Likewise. + * doc/Makefile.in: Regenerate. + * Makefile.in: Regenerate. + * configure: Regenerate. + * config.in: Regenerate. + * po/POTFILES.in: Regenerate. + +2005-08-09 Nick Clifton + + PR 1070 + * macro.c (getstring): Do not treat round parentheses exactly the + same as angle brackets - the parentheses need to be preserved and + passed on to the macro processing code. + +2005-08-08 Nick Clifton + + * config/tc-msp430.c (MSP430_ISA_21): Define. + (mcu_types): Add entries for msp430x21xx variants. + +2005-08-08 Nick Clifton + + PR 1070 + * macro.c (getstring): Treat round parentheses in the same way as + angle brackets. + (get_any_string): Likewise. + +2005-08-07 H.J. Lu + + PR gas/1118 + * as.c (parse_args): Handle -al=. + +2005-08-07 Nick Clifton + + * read.c (s_app_line): Accept a line number of 0 for compatibility + with gcc's output for assembler-with-cpp files. + +2005-08-05 Paul Brook + + * config/tc-arm.c (current_it_mask, current_cc): New variables. + (do_t_add_sub): Use correct encodings inside IT block. + (do_t_arit3c): Ditto. + (do_t_it): Simplify logic. Set current_it_mask and current_cc. + (md_assemble): Verify conditional suffixes agains IT blocks. + +2005-08-05 Paul Brook + + * config/tc-arm.c (encode_thumb32_immediate): Only accept shifted + constants. + (encode_thumb32_shifted_operand): Prohibit register shifts. + (encode_thumb32_addr_mode): Fix typo. + (insns): Correct thumb2 ldm and stm opcodes. + +2005-08-02 Khem Raj + + * config/tc-arm.c (do_iwmmxt_wldstd): Correct the offset range for + WLDRD/WSTRD instruction. + +2005-08-02 Alan Modra + + * config/tc-ppc.c (md_apply_fix ): Don't warn on overflow + if emitting a reloc. + +2005-07-29 Thiemo Seufer + + * config/tc-mips.c (s_mips_globl): Allow multiple symbols per .globl. + +2005-07-29 Paul Brook + + * config/tc-arm.c (T16_32_TAB): Add "addr". Fix encoding of push and + pop. + (do_t_addr): Implement 32-bit variant. + (do_t_push_pop): Make some errors warnings. Handle single register + 32-bit case. + (insns): Use tCE for adr. + (md_pcrel_from_section): Handle BFD_RELOC_ARM_T32_ADD_PC12. + (md_apply_fix): Ditto. + +2005-07-29 Paul Brook + + * config/tc-arm.c (parse_tb): New function. + (enum operand_parse_code): Add OP_TB. + (parse_operands): Handle OP_TB. + (do_t_add_sub_w, do_t_tb): New functions. + (insns): Add entries for addw, subw, tbb and tbh. + (md_apply_fix): Handle BFD_RELOC_ARM_T32_IMM12. + +2005-07-29 Kazuhiro Inaoka + + * config/tc-m32r.c (m32r_check_fixup): Fixed X_op check. + +2007-07-27 H.J. Lu + + * config/tc-i386.c (handle_large_common): Declare only for ELF. + +2005-07-27 Jan Beulich + + * config/tc-ia64.h (unw_r_record): Change type of fr_mem to unsigned + int. + (unw_p_record): Remove unused/redundant fields imask and rmask. + Combine spoff and pspoff into a union. Combine gr and br into a + union. Change type of grmask and brmask to unsigned char. Change type + of frmask to unsigned int. + (unw_x_record): Combine spoff, pspoff, and treg into a union. + * config/tc-ia64.c (unwind): New field 'pending_saves'. + (check_pending_save): New. + (alloc_record): Clear out entire record. + (output_psp_gr): Use renamed structure fields. + (output_psp_sprel): Likewise. + (output_rp_gr): Likewise. + (output_rp_br): Likewise. + (output_rp_psprel): Likewise. + (output_rp_sprel): Likewise. + (output_pfs_gr): Likewise. + (output_pfs_psprel): Likewise. + (output_pfs_sprel): Likewise. + (output_preds_gr): Likewise. + (output_preds_psprel): Likewise. + (output_preds_sprel): Likewise. + (output_spill_base): Likewise. + (output_unat_gr): Likewise. + (output_unat_psprel): Likewise. + (output_unat_sprel): Likewise. + (output_lc_gr): Likewise. + (output_lc_psprel): Likewise. + (output_lc_sprel): Likewise. + (output_fpsr_gr): Likewise. + (output_fpsr_psprel): Likewise. + (output_fpsr_sprel): Likewise. + (output_priunat_gr): Likewise. + (output_priunat_psprel): Likewise. + (output_priunat_sprel): Likewise. + (output_bsp_gr): Likewise. + (output_bsp_psprel): Likewise. + (output_bsp_sprel): Likewise. + (output_bspstore_gr): Likewise. + (output_bspstore_psprel): Likewise. + (output_bspstore_sprel): Likewise. + (output_rnat_gr): Likewise. + (output_rnat_psprel): Likewise. + (output_rnat_sprel): Likewise. + (output_spill_psprel): Likewise. + (output_spill_sprel): Likewise. + (output_spill_reg): Likewise. + (output_fr_mem): Likewise. Allocate one unwind record per set mask + bit. + (output_frgr_mem): Likewise. + (output_gr_mem): Likewise. + (output_br_mem): Likewise. + (output_gr_gr): Likewise. + (output_br_gr): Likewise. + (fixup_unw_records): Likewise. + (process_one_record): Use renamed structure fields. For gr_gr and + br_gr, collect mask from chain of records before output. + (in_prologue): Simplify and eliminate early returns. Call + check_pending_save. + (in_body): Simplify and eliminate early returns. + (dot_body): Call check_pending_save. + (md_assemble): Update comment. Deal with pending saves. + +2005-07-26 Jan Beulich + + * config/tc-i386.c (optimize_imm): Calculate candidate immediates + mask from guessed suffix, but mask out other immediate types only + if at least on candidate is valid for the insn. + +2005-07-25 DJ Delorie + + * config/tc-m32c.c (md_cgen_lookup_reloc): Add 8 bit operands. + Support %mod() modifiers from opcodes. + * doc/c-m32c.texi (M32C-Modifiers): New section. + +2005-07-25 Jan Hubicka + H.J. Lu + + * config/obj-elf.c: Include "elf/x86-64.h" if TC_I386 is + defined. + (elf_com_section_ptr): New. + (elf_begin): Set elf_com_section_ptr to bfd_com_section_ptr. + (elf_common_parse): Make it global. Use elf_com_section_ptr + instead of bfd_com_section_ptr. + (obj_elf_change_section): Handle x86-64 large bss sections. + + * config/obj-elf.h (elf_com_section_ptr): New. + (elf_common_parse): New. + + * config/tc-i386.c (handle_large_common): New. + (md_pseudo_table): Add "largecomm". + (x86_64_section_letter): New. + (x86_64_section_word): New. + + * config/tc-i386.h (x86_64_section_word): New. + (x86_64_section_letter): New. + (md_elf_section_letter): New. Defined. + (md_elf_section_word): Likewise. + +2005-07-21 Ralf Corsepius + + * configure.tgt: Remove i386-*-rtemself*. + Remove sparc-*-rtemself*. + +2005-07-21 Ben Elliston + + * config/tc-m68k.h: Remove TE_LYNX conditional code. + +2005-07-21 Paul Brook + + * config/tc-arm.c (encode_thumb32_addr_mode): Don't set + inst.reloc.pc_rel. + +2005-07-20 Tavis Ormandy + + * messages.c: Use vsnprintf instead of vsprintf. + 2005-07-20 Kazuhiro Inaoka * config/tc-m32r.c (tc_gen_reloc): Check BFD_RELOC_32_PCREL and diff -uprN binutils-2.16.91.0.2/gas/config/aout_gnu.h binutils-2.16.91.0.3/gas/config/aout_gnu.h --- binutils-2.16.91.0.2/gas/config/aout_gnu.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/aout_gnu.h 2005-08-22 12:27:42.000000000 -0700 @@ -26,15 +26,15 @@ relocations, and one which uses extended relocations. Today, the extended reloc uses are - TC_SPARC, TC_A29K + TC_SPARC each must define the enum reloc_type */ -#define USE_EXTENDED_RELOC (defined(TC_SPARC) || defined(TC_A29K)) +#define USE_EXTENDED_RELOC defined(TC_SPARC) -#if defined(TC_SPARC) || defined(TC_A29K) +#if defined(TC_SPARC) enum reloc_type { RELOC_8, RELOC_16, RELOC_32,/* simple relocations */ @@ -62,7 +62,7 @@ enum reloc_type NO_RELOC }; -#endif /* TC_SPARC or TC_A29K */ +#endif /* TC_SPARC */ #define __GNU_EXEC_MACROS__ diff -uprN binutils-2.16.91.0.2/gas/config/atof-tahoe.c binutils-2.16.91.0.3/gas/config/atof-tahoe.c --- binutils-2.16.91.0.2/gas/config/atof-tahoe.c 2005-04-09 12:03:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/atof-tahoe.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,415 +0,0 @@ -/* atof_tahoe.c - turn a string into a Tahoe floating point number - Copyright 1987, 1993, 2000, 2003 Free Software Foundation, Inc. - -/* This is really a simplified version of atof_vax.c. I glommed it wholesale - and then shaved it down. I don't even know how it works. (Don't you find - my honesty refreshing? Devon E Bowen - - I don't allow uppercase letters in the precision descriptors. - i.e. 'f' and 'd' are allowed but 'F' and 'D' aren't. */ - -#include "as.h" - -/* Precision in LittleNums. */ -#define MAX_PRECISION (4) -#define D_PRECISION (4) -#define F_PRECISION (2) - -/* Precision in chars. */ -#define D_PRECISION_CHARS (8) -#define F_PRECISION_CHARS (4) - -/* Length in LittleNums of guard bits. */ -#define GUARD (2) - -static const long int mask[] = -{ - 0x00000000, - 0x00000001, - 0x00000003, - 0x00000007, - 0x0000000f, - 0x0000001f, - 0x0000003f, - 0x0000007f, - 0x000000ff, - 0x000001ff, - 0x000003ff, - 0x000007ff, - 0x00000fff, - 0x00001fff, - 0x00003fff, - 0x00007fff, - 0x0000ffff, - 0x0001ffff, - 0x0003ffff, - 0x0007ffff, - 0x000fffff, - 0x001fffff, - 0x003fffff, - 0x007fffff, - 0x00ffffff, - 0x01ffffff, - 0x03ffffff, - 0x07ffffff, - 0x0fffffff, - 0x1fffffff, - 0x3fffffff, - 0x7fffffff, - 0xffffffff -}; - -/* Shared between flonum_gen2tahoe and next_bits. */ -static int bits_left_in_littlenum; -static LITTLENUM_TYPE *littlenum_pointer; -static LITTLENUM_TYPE *littlenum_end; - -#if __STDC__ == 1 - -int flonum_gen2tahoe (int format_letter, FLONUM_TYPE * f, - LITTLENUM_TYPE * words); - -#else /* not __STDC__ */ - -int flonum_gen2tahoe (); - -#endif /* not __STDC__ */ - -static int -next_bits (number_of_bits) - int number_of_bits; -{ - int return_value; - - if (littlenum_pointer < littlenum_end) - return 0; - if (number_of_bits >= bits_left_in_littlenum) - { - return_value = mask[bits_left_in_littlenum] & *littlenum_pointer; - number_of_bits -= bits_left_in_littlenum; - return_value <<= number_of_bits; - bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS - number_of_bits; - littlenum_pointer--; - if (littlenum_pointer >= littlenum_end) - return_value |= ((*littlenum_pointer) >> (bits_left_in_littlenum)) & - mask[number_of_bits]; - } - else - { - bits_left_in_littlenum -= number_of_bits; - return_value = mask[number_of_bits] & - ((*littlenum_pointer) >> bits_left_in_littlenum); - } - return return_value; -} - -static void -make_invalid_floating_point_number (words) - LITTLENUM_TYPE *words; -{ - /* Floating Reserved Operand Code. */ - *words = 0x8000; -} - -static int /* 0 means letter is OK. */ -what_kind_of_float (letter, precisionP, exponent_bitsP) - /* In: lowercase please. What kind of float? */ - char letter; - - /* Number of 16-bit words in the float. */ - int *precisionP; - - /* Number of exponent bits. */ - long int *exponent_bitsP; -{ - int retval; /* 0: OK. */ - - retval = 0; - switch (letter) - { - case 'f': - *precisionP = F_PRECISION; - *exponent_bitsP = 8; - break; - - case 'd': - *precisionP = D_PRECISION; - *exponent_bitsP = 8; - break; - - default: - retval = 69; - break; - } - return (retval); -} - -/* Warning: This returns 16-bit LITTLENUMs, because that is what the - VAX thinks in. It is up to the caller to figure out any alignment - problems and to conspire for the bytes/word to be emitted in the - right order. Bigendians beware! */ - -char * /* Return pointer past text consumed. */ -atof_tahoe (str, what_kind, words) - char *str; /* Text to convert to binary. */ - char what_kind; /* 'd', 'f', 'g', 'h' */ - LITTLENUM_TYPE *words; /* Build the binary here. */ -{ - FLONUM_TYPE f; - LITTLENUM_TYPE bits[MAX_PRECISION + MAX_PRECISION + GUARD]; - /* Extra bits for zeroed low-order bits. */ - /* The 1st MAX_PRECISION are zeroed, the last contain flonum bits. */ - char *return_value; - int precision; /* Number of 16-bit words in the format. */ - long int exponent_bits; - - return_value = str; - f.low = bits + MAX_PRECISION; - f.high = NULL; - f.leader = NULL; - f.exponent = NULL; - f.sign = '\0'; - - if (what_kind_of_float (what_kind, &precision, &exponent_bits)) - { - /* We lost. */ - return_value = NULL; - make_invalid_floating_point_number (words); - } - if (return_value) - { - memset (bits, '\0', sizeof (LITTLENUM_TYPE) * MAX_PRECISION); - - /* Use more LittleNums than seems necessary: - the highest flonum may have 15 leading 0 bits, so could be - useless. */ - f.high = f.low + precision - 1 + GUARD; - - if (atof_generic (&return_value, ".", "eE", &f)) - { - make_invalid_floating_point_number (words); - /* We lost. */ - return_value = NULL; - } - else - { - if (flonum_gen2tahoe (what_kind, &f, words)) - return_value = NULL; - } - } - return return_value; -} - -/* In: a flonum, a Tahoe floating point format. - Out: a Tahoe floating-point bit pattern. */ - -int /* 0: OK. */ -flonum_gen2tahoe (format_letter, f, words) - char format_letter; /* One of 'd' 'f'. */ - FLONUM_TYPE *f; - LITTLENUM_TYPE *words; /* Deliver answer here. */ -{ - LITTLENUM_TYPE *lp; - int precision; - long int exponent_bits; - int return_value; /* 0 == OK. */ - - return_value = - what_kind_of_float (format_letter, &precision, &exponent_bits); - if (return_value != 0) - { - make_invalid_floating_point_number (words); - } - else - { - if (f->low > f->leader) - { - /* 0.0e0 seen. */ - memset (words, '\0', sizeof (LITTLENUM_TYPE) * precision); - } - else - { - long int exponent_1; - long int exponent_2; - long int exponent_3; - long int exponent_4; - int exponent_skippage; - LITTLENUM_TYPE word1; - - /* JF: Deal with new Nan, +Inf and -Inf codes. */ - if (f->sign != '-' && f->sign != '+') - { - make_invalid_floating_point_number (words); - return return_value; - } - /* All tahoe floating_point formats have: - Bit 15 is sign bit. - Bits 14:n are excess-whatever exponent. - Bits n-1:0 (if any) are most significant bits of fraction. - Bits 15:0 of the next word are the next most significant bits. - And so on for each other word. - - So we need: number of bits of exponent, number of bits of - mantissa. */ - - bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS; - littlenum_pointer = f->leader; - littlenum_end = f->low; - - /* Seek (and forget) 1st significant bit. */ - for (exponent_skippage = 0; - !next_bits (1); - exponent_skippage++) - ; - - exponent_1 = f->exponent + f->leader + 1 - f->low; - - /* Radix LITTLENUM_RADIX, point just higher than f -> leader. */ - exponent_2 = exponent_1 * LITTLENUM_NUMBER_OF_BITS; - - /* Radix 2. */ - exponent_3 = exponent_2 - exponent_skippage; - - /* Forget leading zeros, forget 1st bit. */ - exponent_4 = exponent_3 + (1 << (exponent_bits - 1)); - - /* Offset exponent. */ - - if (exponent_4 & ~mask[exponent_bits]) - { - /* Exponent overflow. Lose immediately. */ - - make_invalid_floating_point_number (words); - - /* We leave return_value alone: admit we read the - number, but return a floating exception because we - can't encode the number. */ - } - else - { - lp = words; - - /* Word 1. Sign, exponent and perhaps high bits. */ - /* Assume 2's complement integers. */ - word1 = ((exponent_4 & mask[exponent_bits]) - << (15 - exponent_bits)) - | ((f->sign == '+') ? 0 : 0x8000) - | next_bits (15 - exponent_bits); - *lp++ = word1; - - /* The rest of the words are just mantissa bits. */ - for (; lp < words + precision; lp++) - *lp = next_bits (LITTLENUM_NUMBER_OF_BITS); - - if (next_bits (1)) - { - /* Since the NEXT bit is a 1, round UP the mantissa. - The cunning design of these hidden-1 floats permits - us to let the mantissa overflow into the exponent, and - it 'does the right thing'. However, we lose if the - highest-order bit of the lowest-order word flips. - Is that clear? */ - - unsigned long int carry; - - /* #if (sizeof(carry)) < ((sizeof(bits[0]) * - BITS_PER_CHAR) + 2) Please allow at least 1 more - bit in carry than is in a LITTLENUM. We need - that extra bit to hold a carry during a LITTLENUM - carry propagation. Another extra bit (kept 0) - will assure us that we don't get a sticky sign - bit after shifting right, and that permits us to - propagate the carry without any masking of bits. - #endif */ - for (carry = 1, lp--; - carry && (lp >= words); - lp--) - { - carry = *lp + carry; - *lp = carry; - carry >>= LITTLENUM_NUMBER_OF_BITS; - } - - if ((word1 ^ *words) - & (1 << (LITTLENUM_NUMBER_OF_BITS - 1))) - { - make_invalid_floating_point_number (words); - /* We leave return_value alone: admit we read - the number, but return a floating exception - because we can't encode the number. */ - } - } /* if (we needed to round up) */ - } /* if (exponent overflow) */ - } /* if (0.0e0) */ - } /* if (float_type was OK) */ - return return_value; -} - -/* In: input_line_pointer -> the 1st character of a floating-point - * number. - * 1 letter denoting the type of statement that wants a - * binary floating point number returned. - * Address of where to build floating point literal. - * Assumed to be 'big enough'. - * Address of where to return size of literal (in chars). - * - * Out: Input_line_pointer -> of next char after floating number. - * Error message, or 0. - * Floating point literal. - * Number of chars we used for the literal. */ - -char * -md_atof (what_statement_type, literalP, sizeP) - char what_statement_type; - char *literalP; - int *sizeP; -{ - LITTLENUM_TYPE words[MAX_PRECISION]; - register char kind_of_float; - register int number_of_chars; - register LITTLENUM_TYPE *littlenum_pointer; - - switch (what_statement_type) - { - case 'f': /* .ffloat */ - case 'd': /* .dfloat */ - kind_of_float = what_statement_type; - break; - - default: - kind_of_float = 0; - break; - } - - if (kind_of_float) - { - register LITTLENUM_TYPE *limit; - - input_line_pointer = atof_tahoe (input_line_pointer, - kind_of_float, - words); - /* The atof_tahoe() builds up 16-bit numbers. - Since the assembler may not be running on - a different-endian machine, be very careful about - converting words to chars. */ - number_of_chars = (kind_of_float == 'f' ? F_PRECISION_CHARS : - (kind_of_float == 'd' ? D_PRECISION_CHARS : 0)); - know (number_of_chars <= MAX_PRECISION * sizeof (LITTLENUM_TYPE)); - limit = words + (number_of_chars / sizeof (LITTLENUM_TYPE)); - for (littlenum_pointer = words; - littlenum_pointer < limit; - littlenum_pointer++) - { - md_number_to_chars (literalP, *littlenum_pointer, - sizeof (LITTLENUM_TYPE)); - literalP += sizeof (LITTLENUM_TYPE); - } - } - else - { - number_of_chars = 0; - } - - *sizeP = number_of_chars; - return kind_of_float ? 0 : _("Bad call to md_atof()"); -} diff -uprN binutils-2.16.91.0.2/gas/config/m88k-opcode.h binutils-2.16.91.0.3/gas/config/m88k-opcode.h --- binutils-2.16.91.0.2/gas/config/m88k-opcode.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/m88k-opcode.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,559 +0,0 @@ -/* m88k-opcode.h -- Instruction information for the Motorola 88000 - Contributed by Devon Bowen of Buffalo University - and Torbjorn Granlund of the Swedish Institute of Computer Science. - Copyright 1989, 1990, 1991, 1993, 2000 Free Software Foundation, Inc. - -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 1, 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, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ - -#if !defined(__STDC__) && !defined(const) -#define const -#endif - -/* - Character codes for op_spec field below. - Reserved for self-matching: [ ] , - - d = GRF Destination register (21:5) - x = XRF register prefix. Makes next d, 1, or 2, match an extended register. - 1 = Source register 1 (16:5) - 2 = Source register 2 (0:5) - 3 = Both source registers (same value) (0:5 and 16:5) - I = IMM16 (0:16) - b = bit field spec. (0:10) - p = 16 bit pc displ. (0:16) - P = 26 bit pc displ. (0:26) - B = bb0/bb1 condition (21:5) - M = bcnd condition (21:5) - f = fcr (5:6) - c = cr (5:6) - V = VEC9 (0:9) - o = O6 field of "prot" insn (10:7) - ? = Give warning for this insn/operand combination - */ - -/* instruction descriptor structure */ - -struct m88k_opcode -{ - unsigned int opcode; - char *name; - char *op_spec; -}; - -/* and introducing... the Motorola 88100 and 88110 instruction sets... */ - -/* By default, include the 88110 instructions. */ -#define MC88110 - -#if defined (MC88110) -#define _MC88100(OPCODE,MNEM,OP_SPEC) -#define _MC88110(OPCODE,MNEM,OP_SPEC) {OPCODE,MNEM,OP_SPEC}, -#else -#define _MC88100(OPCODE,MNEM,OP_SPEC) {OPCODE,MNEM,OP_SPEC}, -#define _MC88110(OPCODE,MNEM,OP_SPEC) -#endif - -#define _MC88xxx(OPCODE,MNEM,OP_SPEC) {OPCODE,MNEM,OP_SPEC}, - -/* Equal mnemonics must be adjacent. - More specific operand specification must go before more general. - For example, "d,1,2" must go before "d,1,I" as a register for s2 - would otherwise be considered a variable name. */ - -static struct m88k_opcode m88k_opcodes[] = -{ - /* Opcode Mnemonic Opspec */ - - _MC88xxx (0xf4007000, "add", "d,1,2") - _MC88xxx (0x70000000, "add", "d,1,I") - _MC88xxx (0xf4007200, "add.ci", "d,1,2") - _MC88xxx (0xf4007300, "add.cio", "d,1,2") - _MC88xxx (0xf4007100, "add.co", "d,1,2") - _MC88xxx (0xf4006000, "addu", "d,1,2") - _MC88xxx (0x60000000, "addu", "d,1,I") - _MC88xxx (0xf4006200, "addu.ci", "d,1,2") - _MC88xxx (0xf4006300, "addu.cio", "d,1,2") - _MC88xxx (0xf4006100, "addu.co", "d,1,2") - _MC88xxx (0xf4004000, "and", "d,1,2") - _MC88xxx (0x40000000, "and", "d,1,I") - _MC88xxx (0xf4004400, "and.c", "d,1,2") - _MC88xxx (0x44000000, "and.u", "d,1,I") - _MC88xxx (0xd0000000, "bb0", "B,1,p") - _MC88xxx (0xd4000000, "bb0.n", "B,1,p") - _MC88xxx (0xd8000000, "bb1", "B,1,p") - _MC88xxx (0xdc000000, "bb1.n", "B,1,p") - _MC88xxx (0xe8000000, "bcnd", "M,1,p") - _MC88xxx (0xec000000, "bcnd.n", "M,1,p") - _MC88xxx (0xc0000000, "br", "P") - _MC88xxx (0xc4000000, "br.n", "P") - _MC88xxx (0xc8000000, "bsr", "P") - _MC88xxx (0xcc000000, "bsr.n", "P") - _MC88xxx (0xf4008000, "clr", "d,1,2") - _MC88xxx (0xf0008000, "clr", "d,1,b") - _MC88xxx (0xf4007c00, "cmp", "d,1,2") - _MC88xxx (0x7c000000, "cmp", "d,1,I") - _MC88xxx (0xf4007800, "div", "d,1,2") - _MC88xxx (0x78000000, "div", "d,1,I") - _MC88xxx (0xf4007800, "divs", "d,1,2") - _MC88xxx (0x78000000, "divs", "d,1,I") - _MC88110 (0xf4006900, "divu.d", "d,1,2") - _MC88xxx (0xf4006800, "divu", "d,1,2") - _MC88xxx (0x68000000, "divu", "d,1,I") - _MC88xxx (0xf4009000, "ext", "d,1,2") - _MC88xxx (0xf0009000, "ext", "d,1,b") - _MC88xxx (0xf4009800, "extu", "d,1,2") - _MC88xxx (0xf0009800, "extu", "d,1,b") - _MC88xxx (0x84002800, "fadd.sss", "d,1,2") - _MC88110 (0x8400a800, "fadd.sss", "xd,x1,x2") - _MC88xxx (0x84002880, "fadd.ssd", "d,1,2") - _MC88110 (0x8400a820, "fadd.ssd", "xd,x1,x2") - _MC88110 (0x8400a840, "fadd.ssx", "xd,x1,x2") - _MC88xxx (0x84002a00, "fadd.sds", "d,1,2") - _MC88110 (0x8400a880, "fadd.sds", "xd,x1,x2") - _MC88xxx (0x84002a80, "fadd.sdd", "d,1,2") - _MC88110 (0x8400a8a0, "fadd.sdd", "xd,x1,x2") - _MC88110 (0x8400a8c0, "fadd.sdx", "xd,x1,x2") - _MC88110 (0x8400a900, "fadd.sxs", "xd,x1,x2") - _MC88110 (0x8400a920, "fadd.sxd", "xd,x1,x2") - _MC88110 (0x8400a940, "fadd.sxx", "xd,x1,x2") - _MC88xxx (0x84002820, "fadd.dss", "d,1,2") - _MC88110 (0x8400aa00, "fadd.dss", "xd,x1,x2") - _MC88xxx (0x840028a0, "fadd.dsd", "d,1,2") - _MC88110 (0x8400aa20, "fadd.dsd", "xd,x1,x2") - _MC88110 (0x8400aa40, "fadd.dsx", "xd,x1,x2") - _MC88xxx (0x84002a20, "fadd.dds", "d,1,2") - _MC88110 (0x8400aa80, "fadd.dds", "xd,x1,x2") - _MC88xxx (0x84002aa0, "fadd.ddd", "d,1,2") - _MC88110 (0x8400aaa0, "fadd.ddd", "xd,x1,x2") - _MC88110 (0x8400aac0, "fadd.ddx", "xd,x1,x2") - _MC88110 (0x8400ab00, "fadd.dxs", "xd,x1,x2") - _MC88110 (0x8400ab20, "fadd.dxd", "xd,x1,x2") - _MC88110 (0x8400ab40, "fadd.dxx", "xd,x1,x2") - _MC88110 (0x8400ac00, "fadd.xss", "xd,x1,x2") - _MC88110 (0x8400ac20, "fadd.xsd", "xd,x1,x2") - _MC88110 (0x8400ac40, "fadd.xsx", "xd,x1,x2") - _MC88110 (0x8400ac80, "fadd.xds", "xd,x1,x2") - _MC88110 (0x8400aca0, "fadd.xdd", "xd,x1,x2") - _MC88110 (0x8400acc0, "fadd.xdx", "xd,x1,x2") - _MC88110 (0x8400ad00, "fadd.xxs", "xd,x1,x2") - _MC88110 (0x8400ad20, "fadd.xxd", "xd,x1,x2") - _MC88110 (0x8400ad40, "fadd.xxx", "xd,x1,x2") - _MC88xxx (0x84003a80, "fcmp.sdd", "d,1,2") - _MC88110 (0x8400ba80, "fcmp.sdd", "d,x1,x2") - _MC88xxx (0x84003a00, "fcmp.sds", "d,1,2") - _MC88110 (0x8400ba00, "fcmp.sds", "d,x1,x2") - _MC88110 (0x8400bb00, "fcmp.sdx", "d,x1,x2") - _MC88xxx (0x84003880, "fcmp.ssd", "d,1,2") - _MC88110 (0x8400b880, "fcmp.ssd", "d,x1,x2") - _MC88xxx (0x84003800, "fcmp.sss", "d,1,2") - _MC88110 (0x8400b800, "fcmp.sss", "d,x1,x2") - _MC88110 (0x8400b900, "fcmp.ssx", "d,x1,x2") - _MC88110 (0x8400bc80, "fcmp.sxd", "d,x1,x2") - _MC88110 (0x8400bc00, "fcmp.sxs", "d,x1,x2") - _MC88110 (0x8400bd00, "fcmp.sxx", "d,x1,x2") - _MC88110 (0x84003aa0, "fcmpu.sdd", "d,1,2") - _MC88110 (0x8400baa0, "fcmpu.sdd", "d,x1,x2") - _MC88110 (0x84003a20, "fcmpu.sds", "d,1,2") - _MC88110 (0x8400ba20, "fcmpu.sds", "d,x1,x2") - _MC88110 (0x8400bb20, "fcmpu.sdx", "d,x1,x2") - _MC88110 (0x840038a0, "fcmpu.ssd", "d,1,2") - _MC88110 (0x8400b8a0, "fcmpu.ssd", "d,x1,x2") - _MC88110 (0x84003820, "fcmpu.sss", "d,1,2") - _MC88110 (0x8400b820, "fcmpu.sss", "d,x1,x2") - _MC88110 (0x8400b920, "fcmpu.ssx", "d,x1,x2") - _MC88110 (0x8400bca0, "fcmpu.sxd", "d,x1,x2") - _MC88110 (0x8400bc20, "fcmpu.sxs", "d,x1,x2") - _MC88110 (0x8400bd20, "fcmpu.sxx", "d,x1,x2") - _MC88110 (0x84000880, "fcvt.ds", "d,2") - _MC88110 (0x84008880, "fcvt.ds", "xd,x2") - _MC88110 (0x840088c0, "fcvt.dx", "xd,x2") - _MC88110 (0x84000820, "fcvt.sd", "d,2") - _MC88110 (0x84008820, "fcvt.sd", "xd,x2") - _MC88110 (0x84008840, "fcvt.sx", "xd,x2") - _MC88110 (0x84008920, "fcvt.xd", "xd,x2") - _MC88110 (0x84008900, "fcvt.xs", "xd,x2") - _MC88xxx (0x84007000, "fdiv.sss", "d,1,2") - _MC88110 (0x8400f000, "fdiv.sss", "xd,x1,x2") - _MC88xxx (0x84007080, "fdiv.ssd", "d,1,2") - _MC88110 (0x8400f020, "fdiv.ssd", "xd,x1,x2") - _MC88110 (0x8400f040, "fdiv.ssx", "xd,x1,x2") - _MC88xxx (0x84007200, "fdiv.sds", "d,1,2") - _MC88110 (0x8400f080, "fdiv.sds", "xd,x1,x2") - _MC88xxx (0x84007280, "fdiv.sdd", "d,1,2") - _MC88110 (0x8400f0a0, "fdiv.sdd", "xd,x1,x2") - _MC88110 (0x8400f0c0, "fdiv.sdx", "xd,x1,x2") - _MC88110 (0x8400f100, "fdiv.sxs", "xd,x1,x2") - _MC88110 (0x8400f120, "fdiv.sxd", "xd,x1,x2") - _MC88110 (0x8400f140, "fdiv.sxx", "xd,x1,x2") - _MC88xxx (0x84007020, "fdiv.dss", "d,1,2") - _MC88110 (0x8400f200, "fdiv.dss", "xd,x1,x2") - _MC88xxx (0x840070a0, "fdiv.dsd", "d,1,2") - _MC88110 (0x8400f220, "fdiv.dsd", "xd,x1,x2") - _MC88110 (0x8400f240, "fdiv.dsx", "xd,x1,x2") - _MC88xxx (0x84007220, "fdiv.dds", "d,1,2") - _MC88110 (0x8400f280, "fdiv.dds", "xd,x1,x2") - _MC88xxx (0x840072a0, "fdiv.ddd", "d,1,2") - _MC88110 (0x8400f2a0, "fdiv.ddd", "xd,x1,x2") - _MC88110 (0x8400f2c0, "fdiv.ddx", "xd,x1,x2") - _MC88110 (0x8400f300, "fdiv.dxs", "xd,x1,x2") - _MC88110 (0x8400f320, "fdiv.dxd", "xd,x1,x2") - _MC88110 (0x8400f340, "fdiv.dxx", "xd,x1,x2") - _MC88110 (0x8400f400, "fdiv.xss", "xd,x1,x2") - _MC88110 (0x8400f420, "fdiv.xsd", "xd,x1,x2") - _MC88110 (0x8400f440, "fdiv.xsx", "xd,x1,x2") - _MC88110 (0x8400f480, "fdiv.xds", "xd,x1,x2") - _MC88110 (0x8400f4a0, "fdiv.xdd", "xd,x1,x2") - _MC88110 (0x8400f4c0, "fdiv.xdx", "xd,x1,x2") - _MC88110 (0x8400f500, "fdiv.xxs", "xd,x1,x2") - _MC88110 (0x8400f520, "fdiv.xxd", "xd,x1,x2") - _MC88110 (0x8400f540, "fdiv.xxx", "xd,x1,x2") - _MC88xxx (0xf400ec00, "ff0", "d,2") - _MC88xxx (0xf400e800, "ff1", "d,2") - _MC88xxx (0x80004800, "fldcr", "d,f") - _MC88xxx (0x84002020, "flt.ds", "d,2") - _MC88110 (0x84002220, "flt.ds", "xd,2") - _MC88xxx (0x84002000, "flt.ss", "d,2") - _MC88110 (0x84002200, "flt.ss", "xd,2") - _MC88110 (0x84002240, "flt.xs", "xd,2") - _MC88xxx (0x84000000, "fmul.sss", "d,1,2") - _MC88110 (0x84008000, "fmul.sss", "xd,x1,x2") - _MC88xxx (0x84000080, "fmul.ssd", "d,1,2") - _MC88110 (0x84008020, "fmul.ssd", "xd,x1,x2") - _MC88110 (0x84008040, "fmul.ssx", "xd,x1,x2") - _MC88xxx (0x84000200, "fmul.sds", "d,1,2") - _MC88110 (0x84008080, "fmul.sds", "xd,x1,x2") - _MC88xxx (0x84000280, "fmul.sdd", "d,1,2") - _MC88110 (0x840080a0, "fmul.sdd", "xd,x1,x2") - _MC88110 (0x840080c0, "fmul.sdx", "xd,x1,x2") - _MC88110 (0x84008100, "fmul.sxs", "xd,x1,x2") - _MC88110 (0x84008120, "fmul.sxd", "xd,x1,x2") - _MC88110 (0x84008140, "fmul.sxx", "xd,x1,x2") - _MC88xxx (0x84000020, "fmul.dss", "d,1,2") - _MC88110 (0x84008200, "fmul.dss", "xd,x1,x2") - _MC88xxx (0x840000a0, "fmul.dsd", "d,1,2") - _MC88110 (0x84008220, "fmul.dsd", "xd,x1,x2") - _MC88110 (0x84008240, "fmul.dsx", "xd,x1,x2") - _MC88xxx (0x84000220, "fmul.dds", "d,1,2") - _MC88110 (0x84008280, "fmul.dds", "xd,x1,x2") - _MC88xxx (0x840002a0, "fmul.ddd", "d,1,2") - _MC88110 (0x840082a0, "fmul.ddd", "xd,x1,x2") - _MC88110 (0x840082c0, "fmul.ddx", "xd,x1,x2") - _MC88110 (0x84008300, "fmul.dxs", "xd,x1,x2") - _MC88110 (0x84008320, "fmul.dxd", "xd,x1,x2") - _MC88110 (0x84008340, "fmul.dxx", "xd,x1,x2") - _MC88110 (0x84008400, "fmul.xss", "xd,x1,x2") - _MC88110 (0x84008420, "fmul.xsd", "xd,x1,x2") - _MC88110 (0x84008440, "fmul.xsx", "xd,x1,x2") - _MC88110 (0x84008480, "fmul.xds", "xd,x1,x2") - _MC88110 (0x840084a0, "fmul.xdd", "xd,x1,x2") - _MC88110 (0x840084c0, "fmul.xdx", "xd,x1,x2") - _MC88110 (0x84008500, "fmul.xxs", "xd,x1,x2") - _MC88110 (0x84008520, "fmul.xxd", "xd,x1,x2") - _MC88110 (0x84008540, "fmul.xxx", "xd,x1,x2") - _MC88110 (0x840078a0, "fsqrt.dd", "d,2") - _MC88110 (0x8400f8a0, "fsqrt.dd", "xd,x2") - _MC88110 (0x84007880, "fsqrt.ds", "d,2") - _MC88110 (0x8400f880, "fsqrt.ds", "xd,x2") - _MC88110 (0x8400f8c0, "fsqrt.dx", "xd,x2") - _MC88110 (0x84007820, "fsqrt.sd", "d,2") - _MC88110 (0x8400f820, "fsqrt.sd", "xd,x2") - _MC88110 (0x84007800, "fsqrt.ss", "d,2") - _MC88110 (0x8400f800, "fsqrt.ss", "xd,x2") - _MC88110 (0x8400f840, "fsqrt.sx", "xd,x2") - _MC88110 (0x8400f920, "fsqrt.xd", "xd,x2") - _MC88110 (0x8400f900, "fsqrt.xs", "xd,x2") - _MC88110 (0x8400f940, "fsqrt.xx", "xd,x2") - _MC88xxx (0x80008800, "fstcr", "3,f") - _MC88xxx (0x84003000, "fsub.sss", "d,1,2") - _MC88110 (0x8400b000, "fsub.sss", "xd,x1,x2") - _MC88xxx (0x84003080, "fsub.ssd", "d,1,2") - _MC88110 (0x8400b020, "fsub.ssd", "xd,x1,x2") - _MC88110 (0x8400b040, "fsub.ssx", "xd,x1,x2") - _MC88xxx (0x84003200, "fsub.sds", "d,1,2") - _MC88110 (0x8400b080, "fsub.sds", "xd,x1,x2") - _MC88xxx (0x84003280, "fsub.sdd", "d,1,2") - _MC88110 (0x8400b0a0, "fsub.sdd", "xd,x1,x2") - _MC88110 (0x8400b0c0, "fsub.sdx", "xd,x1,x2") - _MC88110 (0x8400b100, "fsub.sxs", "xd,x1,x2") - _MC88110 (0x8400b120, "fsub.sxd", "xd,x1,x2") - _MC88110 (0x8400b140, "fsub.sxx", "xd,x1,x2") - _MC88xxx (0x84003020, "fsub.dss", "d,1,2") - _MC88110 (0x8400b200, "fsub.dss", "xd,x1,x2") - _MC88xxx (0x840030a0, "fsub.dsd", "d,1,2") - _MC88110 (0x8400b220, "fsub.dsd", "xd,x1,x2") - _MC88110 (0x8400b240, "fsub.dsx", "xd,x1,x2") - _MC88xxx (0x84003220, "fsub.dds", "d,1,2") - _MC88110 (0x8400b280, "fsub.dds", "xd,x1,x2") - _MC88xxx (0x840032a0, "fsub.ddd", "d,1,2") - _MC88110 (0x8400b2a0, "fsub.ddd", "xd,x1,x2") - _MC88110 (0x8400b2c0, "fsub.ddx", "xd,x1,x2") - _MC88110 (0x8400b300, "fsub.dxs", "xd,x1,x2") - _MC88110 (0x8400b320, "fsub.dxd", "xd,x1,x2") - _MC88110 (0x8400b340, "fsub.dxx", "xd,x1,x2") - _MC88110 (0x8400b400, "fsub.xss", "xd,x1,x2") - _MC88110 (0x8400b420, "fsub.xsd", "xd,x1,x2") - _MC88110 (0x8400b440, "fsub.xsx", "xd,x1,x2") - _MC88110 (0x8400b480, "fsub.xds", "xd,x1,x2") - _MC88110 (0x8400b4a0, "fsub.xdd", "xd,x1,x2") - _MC88110 (0x8400b4c0, "fsub.xdx", "xd,x1,x2") - _MC88110 (0x8400b500, "fsub.xxs", "xd,x1,x2") - _MC88110 (0x8400b520, "fsub.xxd", "xd,x1,x2") - _MC88110 (0x8400b540, "fsub.xxx", "xd,x1,x2") - _MC88xxx (0x8000c800, "fxcr", "d,3,f") - _MC88xxx (0x8400fc01, "illop1", "") - _MC88xxx (0x8400fc02, "illop2", "") - _MC88xxx (0x8400fc03, "illop3", "") - _MC88xxx (0x84004880, "int.sd", "d,2") - _MC88110 (0x8400c880, "int.sd", "d,x2") - _MC88xxx (0x84004800, "int.ss", "d,2") - _MC88110 (0x8400c800, "int.ss", "d,x2") - _MC88110 (0x8400c900, "int.sx", "d,x2") - _MC88xxx (0xf400c000, "jmp", "2") - _MC88xxx (0xf400c400, "jmp.n", "2") - _MC88xxx (0xf400c800, "jsr", "2") - _MC88xxx (0xf400cc00, "jsr.n", "2") - _MC88xxx (0xf4001400, "ld", "d,1,2") - _MC88xxx (0xf4001600, "ld", "d,1[2]") - _MC88xxx (0x14000000, "ld", "d,1,I") - _MC88110 (0xf0001600, "ld", "xd,1[2]") - _MC88110 (0xf0001400, "ld", "xd,1,2") - _MC88110 (0x04000000, "ld", "xd,1,I") - _MC88xxx (0xf4001e00, "ld.b", "d,1[2]") - _MC88xxx (0xf4001c00, "ld.b", "d,1,2") - _MC88xxx (0x1c000000, "ld.b", "d,1,I") - _MC88xxx (0xf4001d00, "ld.b.usr", "d,1,2") - _MC88xxx (0xf4001f00, "ld.b.usr", "d,1[2]") - _MC88xxx (0xf4000e00, "ld.bu", "d,1[2]") - _MC88xxx (0xf4000c00, "ld.bu", "d,1,2") - _MC88xxx (0x0c000000, "ld.bu", "d,1,I") - _MC88xxx (0xf4000d00, "ld.bu.usr", "d,1,2") - _MC88xxx (0xf4000f00, "ld.bu.usr", "d,1[2]") - _MC88xxx (0xf4001200, "ld.d", "d,1[2]") - _MC88xxx (0xf4001000, "ld.d", "d,1,2") - _MC88xxx (0x10000000, "ld.d", "d,1,I") - _MC88110 (0xf0001200, "ld.d", "xd,1[2]") - _MC88110 (0xf0001000, "ld.d", "xd,1,2") - _MC88110 (0x00000000, "ld.d", "xd,1,I") - _MC88xxx (0xf4001100, "ld.d.usr", "d,1,2") - _MC88xxx (0xf4001300, "ld.d.usr", "d,1[2]") - _MC88110 (0xf0001100, "ld.d.usr", "xd,1,2") - _MC88110 (0xf0001300, "ld.d.usr", "xd,1[2]") - _MC88xxx (0xf4001a00, "ld.h", "d,1[2]") - _MC88xxx (0xf4001800, "ld.h", "d,1,2") - _MC88xxx (0x18000000, "ld.h", "d,1,I") - _MC88xxx (0xf4001900, "ld.h.usr", "d,1,2") - _MC88xxx (0xf4001b00, "ld.h.usr", "d,1[2]") - _MC88xxx (0xf4000a00, "ld.hu", "d,1[2]") - _MC88xxx (0xf4000800, "ld.hu", "d,1,2") - _MC88xxx (0x08000000, "ld.hu", "d,1,I") - _MC88xxx (0xf4000900, "ld.hu.usr", "d,1,2") - _MC88xxx (0xf4000b00, "ld.hu.usr", "d,1[2]") - _MC88xxx (0xf4001500, "ld.usr", "d,1,2") - _MC88xxx (0xf4001700, "ld.usr", "d,1[2]") - _MC88110 (0xf0001500, "ld.usr", "xd,1,2") - _MC88110 (0xf0001700, "ld.usr", "xd,1[2]") - _MC88110 (0xf0001a00, "ld.x", "xd,1[2]") - _MC88110 (0xf0001800, "ld.x", "xd,1,2") - _MC88110 (0x3c000000, "ld.x", "xd,1,I") - _MC88110 (0xf0001900, "ld.x.usr", "xd,1,2") - _MC88110 (0xf0001b00, "ld.x.usr", "xd,1[2]") - _MC88xxx (0xf4003600, "lda", "d,1[2]") - _MC88xxx (0xf4006000, "lda", "?d,1,2") /* Output addu */ - _MC88xxx (0x60000000, "lda", "?d,1,I") /* Output addu */ - _MC88xxx (0xf4006000, "lda.b", "?d,1[2]") /* Output addu */ - _MC88xxx (0xf4006000, "lda.b", "?d,1,2") /* Output addu */ - _MC88xxx (0x60000000, "lda.b", "?d,1,I") /* Output addu */ - _MC88xxx (0xf4003200, "lda.d", "d,1[2]") - _MC88xxx (0xf4006000, "lda.d", "?d,1,2") /* Output addu */ - _MC88xxx (0x60000000, "lda.d", "?d,1,I") /* Output addu */ - _MC88110 (0xf4003e00, "lda.x", "d,1[2]") - _MC88xxx (0xf4003a00, "lda.h", "d,1[2]") - _MC88xxx (0xf4006000, "lda.h", "?d,1,2") /* Output addu */ - _MC88xxx (0x60000000, "lda.h", "?d,1,I") /* Output addu */ - _MC88xxx (0x80004000, "ldcr", "d,c") - _MC88xxx (0xf400a000, "mak", "d,1,2") - _MC88xxx (0xf000a000, "mak", "d,1,b") - _MC88xxx (0x48000000, "mask", "d,1,I") - _MC88xxx (0x4c000000, "mask.u", "d,1,I") - _MC88110 (0x8400c000, "mov.s", "d,x2") - _MC88110 (0x84004200, "mov.s", "xd,2") - _MC88110 (0x8400c080, "mov.d", "d,x2") - _MC88110 (0x84004280, "mov.d", "xd,2") - _MC88110 (0x8400c300, "mov", "xd,x2") - _MC88xxx (0xf4006c00, "mul", "d,1,2") - _MC88xxx (0x6c000000, "mul", "d,1,I") - _MC88xxx (0xf4006e00, "muls", "d,1,2") - _MC88xxx (0x6c000000, "muls", "d,1,I") - _MC88xxx (0xf4006c00, "mulu", "d,1,2") /* synonym for mul */ - _MC88xxx (0x6c000000, "mulu", "d,1,I") /* synonym for mul */ - _MC88110 (0xf4006d00, "mulu.d", "d,1,2") - _MC88xxx (0x84005080, "nint.sd", "d,2") - _MC88110 (0x8400d080, "nint.sd", "d,x2") - _MC88xxx (0x84005000, "nint.ss", "d,2") - _MC88110 (0x8400d000, "nint.ss", "d,x2") - _MC88110 (0x8400d100, "nint.sx", "d,x2") - _MC88xxx (0xf4005800, "or", "d,1,2") - _MC88xxx (0x58000000, "or", "d,1,I") - _MC88xxx (0xf4005c00, "or.c", "d,1,2") - _MC88xxx (0x5c000000, "or.u", "d,1,I") - _MC88110 (0x88002020, "padd.b", "d,1,2") - _MC88110 (0x88002040, "padd.h", "d,1,2") - _MC88110 (0x88002060, "padd", "d,1,2") - _MC88110 (0x880020a0, "padds.u.b", "d,1,2") - _MC88110 (0x880020c0, "padds.u.h", "d,1,2") - _MC88110 (0x880020e0, "padds.u", "d,1,2") - _MC88110 (0x88002120, "padds.us.b", "d,1,2") - _MC88110 (0x88002140, "padds.us.h", "d,1,2") - _MC88110 (0x88002160, "padds.us", "d,1,2") - _MC88110 (0x880021a0, "padds.s.b", "d,1,2") - _MC88110 (0x880021c0, "padds.s.h", "d,1,2") - _MC88110 (0x880021e0, "padds.s", "d,1,2") - _MC88110 (0x88003860, "pcmp", "d,1,2") - _MC88110 (0x88000000, "pmul", "d,1,2") - _MC88110 (0x88006420, "ppack.32.b", "d,1,2") - _MC88110 (0x88006240, "ppack.16.h", "d,1,2") - _MC88110 (0x88006440, "ppack.32.h", "d,1,2") - _MC88110 (0x88006160, "ppack.8", "d,1,2") - _MC88110 (0x88006260, "ppack.16", "d,1,2") - _MC88110 (0x88006460, "ppack.32", "d,1,2") - _MC88110 (0x88007800, "prot", "d,1,2") - _MC88110 (0x88007000, "prot", "d,1,o") - _MC88110 (0x88003020, "psub.b", "d,1,2") - _MC88110 (0x88003040, "psub.h", "d,1,2") - _MC88110 (0x88003060, "psub", "d,1,2") - _MC88110 (0x880030a0, "psubs.u.b", "d,1,2") - _MC88110 (0x880030c0, "psubs.u.h", "d,1,2") - _MC88110 (0x880030e0, "psubs.u", "d,1,2") - _MC88110 (0x88003120, "psubs.us.b", "d,1,2") - _MC88110 (0x88003140, "psubs.us.h", "d,1,2") - _MC88110 (0x88003160, "psubs.us", "d,1,2") - _MC88110 (0x880031a0, "psubs.s.b", "d,1,2") - _MC88110 (0x880031c0, "psubs.s.h", "d,1,2") - _MC88110 (0x880031e0, "psubs.s", "d,1,2") - _MC88110 (0x88006800, "punpk.n", "d,1") - _MC88110 (0x88006820, "punpk.b", "d,1") - _MC88110 (0x88006840, "punpk.h", "d,1") - _MC88xxx (0xf400a800, "rot", "d,1,2") - _MC88xxx (0xf000a800, "rot", "d,1,b") - _MC88xxx (0xf400fc00, "rte", "") - _MC88xxx (0xf4008800, "set", "d,1,2") - _MC88xxx (0xf0008800, "set", "d,1,b") - _MC88xxx (0xf4002600, "st", "d,1[2]") - _MC88xxx (0xf4002400, "st", "d,1,2") - _MC88xxx (0x24000000, "st", "d,1,I") - _MC88110 (0xf0002600, "st", "xd,1[2]") - _MC88110 (0xf0002400, "st", "xd,1,2") - _MC88110 (0x34000000, "st", "xd,1,I") - _MC88xxx (0xf4002e00, "st.b", "d,1[2]") - _MC88xxx (0xf4002c00, "st.b", "d,1,2") - _MC88xxx (0x2c000000, "st.b", "d,1,I") - _MC88xxx (0xf4002d00, "st.b.usr", "d,1,2") - _MC88xxx (0xf4002f00, "st.b.usr", "d,1[2]") - _MC88110 (0xf4002d80, "st.b.usr.wt", "d,1,2") - _MC88110 (0xf4002f80, "st.b.usr.wt", "d,1[2]") - _MC88110 (0xf4002c80, "st.b.wt", "d,1,2") - _MC88110 (0xf4002e80, "st.b.wt", "d,1[2]") - _MC88xxx (0xf4002200, "st.d", "d,1[2]") - _MC88xxx (0xf4002000, "st.d", "d,1,2") - _MC88xxx (0x20000000, "st.d", "d,1,I") - _MC88110 (0xf0002200, "st.d", "xd,1[2]") - _MC88110 (0xf0002000, "st.d", "xd,1,2") - _MC88110 (0x30000000, "st.d", "xd,1,I") - _MC88xxx (0xf4002100, "st.d.usr", "d,1,2") - _MC88xxx (0xf4002300, "st.d.usr", "d,1[2]") - _MC88110 (0xf0002100, "st.d.usr", "xd,1,2") - _MC88110 (0xf0002300, "st.d.usr", "xd,1[2]") - _MC88110 (0xf4002180, "st.d.usr.wt", "d,1,2") - _MC88110 (0xf4002380, "st.d.usr.wt", "d,1[2]") - _MC88110 (0xf0002180, "st.d.usr.wt", "xd,1,2") - _MC88110 (0xf0002380, "st.d.usr.wt", "xd,1[2]") - _MC88110 (0xf4002080, "st.d.wt", "d,1,2") - _MC88110 (0xf4002280, "st.d.wt", "d,1[2]") - _MC88110 (0xf0002080, "st.d.wt", "xd,1,2") - _MC88110 (0xf0002280, "st.d.wt", "xd,1[2]") - _MC88xxx (0xf4002a00, "st.h", "d,1[2]") - _MC88xxx (0xf4002800, "st.h", "d,1,2") - _MC88xxx (0x28000000, "st.h", "d,1,I") - _MC88xxx (0xf4002900, "st.h.usr", "d,1,2") - _MC88xxx (0xf4002b00, "st.h.usr", "d,1[2]") - _MC88110 (0xf4002980, "st.h.usr.wt", "d,1,2") - _MC88110 (0xf4002b80, "st.h.usr.wt", "d,1[2]") - _MC88110 (0xf4002880, "st.h.wt", "d,1,2") - _MC88110 (0xf4002a80, "st.h.wt", "d,1[2]") - _MC88xxx (0xf4002500, "st.usr", "d,1,2") - _MC88xxx (0xf4002700, "st.usr", "d,1[2]") - _MC88110 (0xf0002500, "st.usr", "xd,1,2") - _MC88110 (0xf0002700, "st.usr", "xd,1[2]") - _MC88110 (0xf4002580, "st.usr.wt", "d,1,2") - _MC88110 (0xf4002780, "st.usr.wt", "d,1[2]") - _MC88110 (0xf0002580, "st.usr.wt", "xd,1,2") - _MC88110 (0xf0002780, "st.usr.wt", "xd,1[2]") - _MC88110 (0xf4002480, "st.wt", "d,1,2") - _MC88110 (0xf4002680, "st.wt", "d,1[2]") - _MC88110 (0xf0002480, "st.wt", "xd,1,2") - _MC88110 (0xf0002680, "st.wt", "xd,1[2]") - _MC88110 (0xf0002a00, "st.x", "xd,1[2]") - _MC88110 (0xf0002800, "st.x", "xd,1,2") - _MC88110 (0x38000000, "st.x", "xd,1,I") - _MC88110 (0xf0002900, "st.x.usr", "xd,1,2") - _MC88110 (0xf0002b00, "st.x.usr", "xd,1[2]") - _MC88110 (0xf0002980, "st.x.usr.wt", "xd,1,2") - _MC88110 (0xf0002b80, "st.x.usr.wt", "xd,1[2]") - _MC88110 (0xf0002880, "st.x.wt", "xd,1,2") - _MC88110 (0xf0002a80, "st.x.wt", "xd,1[2]") - _MC88xxx (0x80008000, "stcr", "3,c") - _MC88xxx (0xf4007400, "sub", "d,1,2") - _MC88xxx (0x74000000, "sub", "d,1,I") - _MC88xxx (0xf4007600, "sub.ci", "d,1,2") - _MC88xxx (0xf4007700, "sub.cio", "d,1,2") - _MC88xxx (0xf4007500, "sub.co", "d,1,2") - _MC88xxx (0xf4006400, "subu", "d,1,2") - _MC88xxx (0x64000000, "subu", "d,1,I") - _MC88xxx (0xf4006600, "subu.ci", "d,1,2") - _MC88xxx (0xf4006700, "subu.cio", "d,1,2") - _MC88xxx (0xf4006500, "subu.co", "d,1,2") - _MC88xxx (0xf000d000, "tb0", "B,1,V") - _MC88xxx (0xf000d800, "tb1", "B,1,V") - _MC88xxx (0xf400f800, "tbnd", "1,2") - _MC88xxx (0xf8000000, "tbnd", "1,I") - _MC88xxx (0xf000e800, "tcnd", "M,1,V") - _MC88xxx (0x84005880, "trnc.sd", "d,2") - _MC88110 (0x8400d880, "trnc.sd", "d,x2") - _MC88xxx (0x84005800, "trnc.ss", "d,2") - _MC88110 (0x8400d800, "trnc.ss", "d,x2") - _MC88110 (0x8400d900, "trnc.sx", "d,x2") - _MC88xxx (0x8000c000, "xcr", "d,3,c") - _MC88xxx (0xf4000600, "xmem", "d,1[2]") - _MC88xxx (0xf4000400, "xmem", "d,1,2") - _MC88100 (0x04000000, "xmem", "?d,1,I") - _MC88xxx (0xf4000200, "xmem.bu", "d,1[2]") - _MC88xxx (0xf4000000, "xmem.bu", "d,1,2") - _MC88100 (0x00000000, "xmem.bu", "?d,1,I") - _MC88xxx (0xf4000300, "xmem.bu.usr", "d,1[2]") - _MC88xxx (0xf4000100, "xmem.bu.usr", "d,1,2") - _MC88100 (0x00000100, "xmem.bu.usr", "?d,1,I") - _MC88xxx (0xf4000700, "xmem.usr", "d,1[2]") - _MC88xxx (0xf4000500, "xmem.usr", "d,1,2") - _MC88100 (0x04000100, "xmem.usr", "?d,1,I") - _MC88xxx (0xf4005000, "xor", "d,1,2") - _MC88xxx (0x50000000, "xor", "d,1,I") - _MC88xxx (0xf4005400, "xor.c", "d,1,2") - _MC88xxx (0x54000000, "xor.u", "d,1,I") - _MC88xxx (0x00000000, "", 0) -}; - -#define NUMOPCODES ((sizeof m88k_opcodes)/(sizeof m88k_opcodes[0])) diff -uprN binutils-2.16.91.0.2/gas/config/obj-aout.c binutils-2.16.91.0.3/gas/config/obj-aout.c --- binutils-2.16.91.0.2/gas/config/obj-aout.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-aout.c 2005-08-22 12:27:42.000000000 -0700 @@ -22,51 +22,10 @@ #define OBJ_HEADER "obj-aout.h" #include "as.h" -#ifdef BFD_ASSEMBLER #undef NO_RELOC #include "aout/aout64.h" -#endif #include "obstack.h" -#ifndef BFD_ASSEMBLER -/* in: segT out: N_TYPE bits. */ -const short seg_N_TYPE[] = -{ - N_ABS, - N_TEXT, - N_DATA, - N_BSS, - N_UNDF, /* Unknown. */ - N_UNDF, /* Error. */ - N_UNDF, /* Expression. */ - N_UNDF, /* Debug. */ - N_UNDF, /* Ntv. */ - N_UNDF, /* Ptv. */ - N_REGISTER, /* Register. */ -}; - -const segT N_TYPE_seg[N_TYPE + 2] = -{ /* N_TYPE == 0x1E = 32-2 */ - SEG_UNKNOWN, /* N_UNDF == 0 */ - SEG_GOOF, - SEG_ABSOLUTE, /* N_ABS == 2 */ - SEG_GOOF, - SEG_TEXT, /* N_TEXT == 4 */ - SEG_GOOF, - SEG_DATA, /* N_DATA == 6 */ - SEG_GOOF, - SEG_BSS, /* N_BSS == 8 */ - SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_REGISTER, /* Dummy N_REGISTER for regs = 30. */ - SEG_GOOF, -}; -#endif - -#ifdef BFD_ASSEMBLER - void obj_aout_frob_symbol (symbolS *sym, int *punt ATTRIBUTE_UNUSED) { @@ -176,137 +135,6 @@ obj_aout_frob_file_before_fix (void) assert (x); } -#else /* ! BFD_ASSEMBLER */ - -/* Relocation. */ - -/** Crawl along a fixS chain. Emit the segment's relocations. */ - -void -obj_emit_relocations (char **where, - fixS *fixP, /* Fixup chain for this segment. */ - relax_addressT segment_address_in_file) -{ - for (; fixP; fixP = fixP->fx_next) - if (fixP->fx_done == 0) - { - symbolS *sym; - - sym = fixP->fx_addsy; - while (sym->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (sym) || S_IS_COMMON (sym))) - sym = sym->sy_value.X_add_symbol; - fixP->fx_addsy = sym; - - if (! sym->sy_resolved && ! S_IS_DEFINED (sym)) - { - char *file; - unsigned int line; - - if (expr_symbol_where (sym, &file, &line)) - as_bad_where (file, line, _("unresolved relocation")); - else - as_bad (_("bad relocation: symbol `%s' not in symbol table"), - S_GET_NAME (sym)); - } - - tc_aout_fix_to_chars (*where, fixP, segment_address_in_file); - *where += md_reloc_size; - } -} - -#ifndef obj_header_append -/* Aout file generation & utilities. */ - -/* An AOUT header on disk is laid out in target byte order. */ - -void -obj_header_append (char **where, object_headers *headers) -{ - char *p; - - tc_headers_hook (headers); - -#ifdef __A_OUT_GNU_H__ -#define SIZEOF_HEADER(PIECE) (sizeof (((struct exec_bytes *) 0)->PIECE)) -#else -#define SIZEOF_HEADER(PIECE) 4 -#endif -#define DO(PIECE) \ - md_number_to_chars (p, headers->header.PIECE, SIZEOF_HEADER (PIECE)); \ - p += SIZEOF_HEADER (PIECE); - - p = *where; - DO (a_info); - DO (a_text); - DO (a_data); - DO (a_bss); - DO (a_syms); - DO (a_entry); - DO (a_trsize); - DO (a_drsize); - *where = p; -#undef DO -#undef SIZEOF_HEADER -} -#endif /* ! defined (obj_header_append) */ - -void -obj_symbol_to_chars (char **where, symbolS *symbolP) -{ - char *p = *where; - md_number_to_chars (p, S_GET_OFFSET (symbolP), 4); - p += 4; - /* Can't use S_GET_TYPE here as it masks. */ - *p++ = symbolP->sy_symbol.n_type; - *p++ = symbolP->sy_symbol.n_other; - md_number_to_chars (p, S_GET_DESC (symbolP), 2); - p += 2; - md_number_to_chars (p, S_GET_VALUE (symbolP), 4); - p += 4; - *where = p; -} - -void -obj_emit_symbols (char **where, symbolS *symbol_rootP) -{ - symbolS *symbolP; - - /* Emit all symbols left in the symbol chain. */ - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - /* Used to save the offset of the name. It is used to point - to the string in memory but must be a file offset. */ - char *temp; - - temp = S_GET_NAME (symbolP); - S_SET_OFFSET (symbolP, symbolP->sy_name_offset); - - /* Any symbol still undefined and is not a dbg symbol is made N_EXT. */ - if (!S_IS_DEBUG (symbolP) && !S_IS_DEFINED (symbolP)) - S_SET_EXTERNAL (symbolP); - - /* Adjust the type of a weak symbol. */ - if (S_GET_WEAK (symbolP)) - { - switch (S_GET_TYPE (symbolP)) - { - case N_UNDF: S_SET_TYPE (symbolP, N_WEAKU); break; - case N_ABS: S_SET_TYPE (symbolP, N_WEAKA); break; - case N_TEXT: S_SET_TYPE (symbolP, N_WEAKT); break; - case N_DATA: S_SET_TYPE (symbolP, N_WEAKD); break; - case N_BSS: S_SET_TYPE (symbolP, N_WEAKB); break; - default: as_bad (_("%s: bad type for weak symbol"), temp); break; - } - } - - obj_symbol_to_chars (where, symbolP); - S_SET_NAME (symbolP, temp); - } -} - -#endif /* ! BFD_ASSEMBLER */ - static void obj_aout_line (int ignore ATTRIBUTE_UNUSED) { @@ -381,136 +209,6 @@ obj_aout_type (int ignore ATTRIBUTE_UNUS s_ignore (0); } -#ifndef BFD_ASSEMBLER - -void -obj_crawl_symbol_chain (object_headers *headers) -{ - symbolS *symbolP; - symbolS **symbolPP; - int symbol_number = 0; - - tc_crawl_symbol_chain (headers); - - symbolPP = &symbol_rootP; /*->last symbol chain link. */ - while ((symbolP = *symbolPP) != NULL) - { - if (symbolP->sy_mri_common) - { - if (S_IS_EXTERNAL (symbolP)) - as_bad (_("%s: global symbols not supported in common sections"), - S_GET_NAME (symbolP)); - *symbolPP = symbol_next (symbolP); - continue; - } - - if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_DATA)) - { - S_SET_SEGMENT (symbolP, SEG_TEXT); - } - - resolve_symbol_value (symbolP); - - /* Skip symbols which were equated to undefined or common - symbols. Also skip defined uncommon symbols which can - be resolved since in this case they should have been - resolved to a non-symbolic constant. */ - if (symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (symbolP) - || S_IS_COMMON (symbolP) - || symbol_resolved_p (symbolP))) - { - *symbolPP = symbol_next (symbolP); - continue; - } - - /* OK, here is how we decide which symbols go out into the brave - new symtab. Symbols that do are: - - * symbols with no name (stabd's?) - * symbols with debug info in their N_TYPE - - Symbols that don't are: - * symbols that are registers - * symbols with \1 as their 3rd character (numeric labels) - * "local labels" as defined by S_LOCAL_NAME(name) if the -L - switch was passed to gas. - - All other symbols are output. We complain if a deleted - symbol was marked external. */ - - if (!S_IS_REGISTER (symbolP) - && (!S_GET_NAME (symbolP) - || S_IS_DEBUG (symbolP) - || !S_IS_DEFINED (symbolP) - || S_IS_EXTERNAL (symbolP) - || (S_GET_NAME (symbolP)[0] != '\001' - && (flag_keep_locals || !S_LOCAL_NAME (symbolP))))) - { - symbolP->sy_number = symbol_number++; - - /* The + 1 after strlen account for the \0 at the - end of each string */ - if (!S_IS_STABD (symbolP)) - { - /* Ordinary case. */ - symbolP->sy_name_offset = string_byte_count; - string_byte_count += strlen (S_GET_NAME (symbolP)) + 1; - } - else /* .Stabd case. */ - symbolP->sy_name_offset = 0; - symbolPP = &symbolP->sy_next; - } - else - { - if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP)) - /* This warning should never get triggered any more. - Well, maybe if you're doing twisted things with - register names... */ - as_bad (_("Local symbol %s never defined."), - decode_local_label_name (S_GET_NAME (symbolP))); - - /* Unhook it from the chain */ - *symbolPP = symbol_next (symbolP); - } - } - - H_SET_SYMBOL_TABLE_SIZE (headers, symbol_number); -} - -/* Find strings by crawling along symbol table chain. */ - -void -obj_emit_strings (char **where) -{ - symbolS *symbolP; - - md_number_to_chars (*where, string_byte_count, 4); - *where += 4; - - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - if (S_GET_NAME (symbolP)) - append (where, S_GET_NAME (symbolP), - (unsigned long) (strlen (S_GET_NAME (symbolP)) + 1)); -} - -#ifndef AOUT_VERSION -#define AOUT_VERSION 0 -#endif - -void -obj_pre_write_hook (object_headers *headers) -{ - H_SET_DYNAMIC (headers, 0); - H_SET_VERSION (headers, AOUT_VERSION); - H_SET_MACHTYPE (headers, AOUT_MACHTYPE); - tc_aout_pre_write_hook (headers); -} - -#endif /* ! BFD_ASSEMBLER */ - -#ifdef BFD_ASSEMBLER - /* Support for an AOUT emulation. */ static void @@ -614,7 +312,6 @@ const struct format_ops aout_format_ops 0, /* read_begin_hook. */ 0 /* symbol_new_hook. */ }; -#endif /* BFD_ASSEMBLER */ const pseudo_typeS aout_pseudo_table[] = { diff -uprN binutils-2.16.91.0.2/gas/config/obj-aout.h binutils-2.16.91.0.3/gas/config/obj-aout.h --- binutils-2.16.91.0.2/gas/config/obj-aout.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-aout.h 2005-08-22 12:27:42.000000000 -0700 @@ -24,33 +24,10 @@ #include "targ-cpu.h" -#ifdef BFD_ASSEMBLER - #include "bfd/libaout.h" #define OUTPUT_FLAVOR bfd_target_aout_flavour -#else /* ! BFD_ASSEMBLER */ - -#ifndef VMS -#include "aout_gnu.h" /* Needed to define struct nlist. Sigh. */ -#else -#include "a_out.h" -#endif - -#ifndef AOUT_MACHTYPE -#define AOUT_MACHTYPE 0 -#endif /* AOUT_MACHTYPE */ - -extern const short seg_N_TYPE[]; -extern const segT N_TYPE_seg[]; - -#ifndef DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (OMAGIC) -#endif /* DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE */ - -#endif /* ! BFD_ASSEMBLER */ - extern const pseudo_typeS aout_pseudo_table[]; #ifndef obj_pop_insert @@ -63,8 +40,6 @@ typedef struct nlist obj_symbol_type; /* /* Symbol table macros and constants */ -#ifdef BFD_ASSEMBLER - #define S_SET_OTHER(S,V) \ (aout_symbol (symbol_get_bfdsym (S))->other = (V)) #define S_SET_TYPE(S,T) \ @@ -88,163 +63,6 @@ extern void obj_aout_frob_file_before_fi #define obj_sec_sym_ok_for_reloc(SEC) 1 -#else - -/* We use the sy_obj field to record whether a symbol is weak. */ -#define OBJ_SYMFIELD_TYPE char - -/* Macros to extract information from a symbol table entry. - This syntactic indirection allows independence regarding a.out or coff. - The argument (s) of all these macros is a pointer to a symbol table entry. */ - -/* True if the symbol is external. */ -#define S_IS_EXTERNAL(s) ((s)->sy_symbol.n_type & N_EXT) - -/* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT. */ -#define S_IS_DEFINED(s) \ - (S_GET_TYPE (s) != N_UNDF || S_GET_DESC (s) != 0) - -#define S_IS_COMMON(s) \ - (S_GET_TYPE (s) == N_UNDF && S_GET_VALUE (s) != 0) - -/* Return true for symbols that should not be reduced to section - symbols or eliminated from expressions, because they may be - overridden by the linker. */ -#define S_FORCE_RELOC(s, strict) \ - (!SEG_NORMAL (S_GET_SEGMENT (s))) - -#define S_IS_REGISTER(s) ((s)->sy_symbol.n_type == N_REGISTER) - -/* True if a debug special symbol entry. */ -#define S_IS_DEBUG(s) ((s)->sy_symbol.n_type & N_STAB) -/* True if a symbol is local symbol name. */ -#define S_IS_LOCAL(s) \ - ((S_GET_NAME (s) \ - && !S_IS_DEBUG (s) \ - && (strchr (S_GET_NAME (s), '\001') != NULL \ - || strchr (S_GET_NAME (s), '\002') != NULL \ - || (S_LOCAL_NAME(s) && !flag_keep_locals))) \ - || (flag_strip_local_absolute \ - && ! S_IS_EXTERNAL(s) \ - && S_GET_SEGMENT (s) == absolute_section)) -/* True if the symbol has been generated because of a .stabd directive. */ -#define S_IS_STABD(s) (S_GET_NAME(s) == NULL) - -/* Accessors. */ -/* The name of the symbol. */ -#define S_GET_NAME(s) ((s)->sy_symbol.n_un.n_name) -/* The pointer to the string table. */ -#define S_GET_OFFSET(s) ((s)->sy_symbol.n_un.n_strx) -/* The type of the symbol. */ -#define S_GET_TYPE(s) ((s)->sy_symbol.n_type & N_TYPE) -/* The numeric value of the segment. */ -#define S_GET_SEGMENT(s) (N_TYPE_seg[S_GET_TYPE(s)]) -/* The n_other expression value. */ -#define S_GET_OTHER(s) ((s)->sy_symbol.n_other) -/* The n_desc expression value. */ -#define S_GET_DESC(s) ((s)->sy_symbol.n_desc) -/* Whether the symbol is weak. */ -#define S_GET_WEAK(s) ((s)->sy_obj) - -/* Modifiers. */ -/* Assume that a symbol cannot be simultaneously in more than on segment. */ -/* Set segment. */ -#define S_SET_SEGMENT(s,seg) ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type |= SEGMENT_TO_SYMBOL_TYPE (seg)) -/* The symbol is external. */ -#define S_SET_EXTERNAL(s) ((s)->sy_symbol.n_type |= N_EXT) -/* The symbol is not external. */ -#define S_CLEAR_EXTERNAL(s) ((s)->sy_symbol.n_type &= ~N_EXT) -/* Set the name of the symbol. */ -#define S_SET_NAME(s,v) ((s)->sy_symbol.n_un.n_name = (v)) -/* Set the offset in the string table. */ -#define S_SET_OFFSET(s,v) ((s)->sy_symbol.n_un.n_strx = (v)) -/* Set the n_type field. */ -#define S_SET_TYPE(s,t) ((s)->sy_symbol.n_type = (t)) -/* Set the n_other expression value. */ -#define S_SET_OTHER(s,v) ((s)->sy_symbol.n_other = (v)) -/* Set the n_desc expression value. */ -#define S_SET_DESC(s,v) ((s)->sy_symbol.n_desc = (v)) -/* Mark the symbol as weak. This causes n_type to be adjusted when - the symbol is written out. */ -#define S_SET_WEAK(s) ((s)->sy_obj = 1) - -/* File header macro and type definition. */ - -#define H_GET_FILE_SIZE(h) (H_GET_HEADER_SIZE (h) \ - + H_GET_TEXT_SIZE (h) \ - + H_GET_DATA_SIZE (h) \ - + H_GET_TEXT_RELOCATION_SIZE (h) \ - + H_GET_DATA_RELOCATION_SIZE (h) \ - + H_GET_LINENO_SIZE (h) \ - + H_GET_SYMBOL_TABLE_SIZE (h) \ - + H_GET_STRING_SIZE (h)) - -#define H_GET_HEADER_SIZE(h) (EXEC_BYTES_SIZE) -#define H_GET_TEXT_SIZE(h) ((h)->header.a_text) -#define H_GET_DATA_SIZE(h) ((h)->header.a_data) -#define H_GET_BSS_SIZE(h) ((h)->header.a_bss) -#define H_GET_TEXT_RELOCATION_SIZE(h) ((h)->header.a_trsize) -#define H_GET_DATA_RELOCATION_SIZE(h) ((h)->header.a_drsize) -#define H_GET_SYMBOL_TABLE_SIZE(h) ((h)->header.a_syms) -#define H_GET_ENTRY_POINT(h) ((h)->header.a_entry) -#define H_GET_STRING_SIZE(h) ((h)->string_table_size) -#define H_GET_LINENO_SIZE(h) (0) - -#define H_GET_DYNAMIC(h) ((h)->header.a_info >> 31) -#define H_GET_VERSION(h) (((h)->header.a_info >> 24) & 0x7f) -#define H_GET_MACHTYPE(h) (((h)->header.a_info >> 16) & 0xff) -#define H_GET_MAGIC_NUMBER(h) ((h)->header.a_info & 0xffff) - -#define H_SET_DYNAMIC(h,v) ((h)->header.a_info = (((v) << 31) \ - | (H_GET_VERSION (h) << 24) \ - | (H_GET_MACHTYPE (h) << 16) \ - | (H_GET_MAGIC_NUMBER (h)))) - -#define H_SET_VERSION(h,v) ((h)->header.a_info = ((H_GET_DYNAMIC (h) << 31) \ - | ((v) << 24) \ - | (H_GET_MACHTYPE (h) << 16) \ - | (H_GET_MAGIC_NUMBER (h)))) - -#define H_SET_MACHTYPE(h,v) ((h)->header.a_info = ((H_GET_DYNAMIC (h) << 31) \ - | (H_GET_VERSION (h) << 24) \ - | ((v) << 16) \ - | (H_GET_MAGIC_NUMBER (h)))) - -#define H_SET_MAGIC_NUMBER(h,v) ((h)->header.a_info = ((H_GET_DYNAMIC (h) << 31) \ - | (H_GET_VERSION (h) << 24) \ - | (H_GET_MACHTYPE (h) << 16) \ - | ((v)))) - -#define H_SET_TEXT_SIZE(h,v) ((h)->header.a_text = md_section_align (SEG_TEXT, (v))) -#define H_SET_DATA_SIZE(h,v) ((h)->header.a_data = md_section_align (SEG_DATA, (v))) -#define H_SET_BSS_SIZE(h,v) ((h)->header.a_bss = md_section_align (SEG_BSS, (v))) - -#define H_SET_RELOCATION_SIZE(h,t,d) (H_SET_TEXT_RELOCATION_SIZE ((h),(t)),\ - H_SET_DATA_RELOCATION_SIZE ((h),(d))) - -#define H_SET_TEXT_RELOCATION_SIZE(h,v) ((h)->header.a_trsize = (v)) -#define H_SET_DATA_RELOCATION_SIZE(h,v) ((h)->header.a_drsize = (v)) -#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->header.a_syms = (v) * 12) - -#define H_SET_ENTRY_POINT(h,v) ((h)->header.a_entry = (v)) -#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v)) - -typedef struct -{ - struct exec header; /* a.out header. */ - long string_table_size; /* names + '\0' + sizeof (int). */ -} - -object_headers; - -/* Line numbering stuff. */ -#define OBJ_EMIT_LINENO(a, b, c) {;} - -struct fix; -extern void tc_aout_fix_to_chars (char *, struct fix *, relax_addressT); - -#endif - #define obj_read_begin_hook() {;} #define obj_symbol_new_hook(s) {;} diff -uprN binutils-2.16.91.0.2/gas/config/obj-bout.c binutils-2.16.91.0.3/gas/config/obj-bout.c --- binutils-2.16.91.0.2/gas/config/obj-bout.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-bout.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,324 +0,0 @@ -/* b.out object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1996, 2000, 2001, 2002, - 2003, 2005 Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#include "as.h" -#include "obstack.h" - -/* In: segT Out: N_TYPE bits. */ -const short seg_N_TYPE[] = -{ - N_ABS, - N_TEXT, - N_DATA, - N_BSS, - N_UNDF, /* Unknown. */ - N_UNDF, /* Error. */ - N_UNDF, /* Expression. */ - N_UNDF, /* Debug. */ - N_UNDF, /* Ntv. */ - N_UNDF, /* Ptv. */ - N_REGISTER, /* Register. */ -}; - -const segT N_TYPE_seg[N_TYPE + 2] = -{ /* N_TYPE == 0x1E = 32-2 */ - SEG_UNKNOWN, /* N_UNDF == 0 */ - SEG_GOOF, - SEG_ABSOLUTE, /* N_ABS == 2 */ - SEG_GOOF, - SEG_TEXT, /* N_TEXT == 4 */ - SEG_GOOF, - SEG_DATA, /* N_DATA == 6 */ - SEG_GOOF, - SEG_BSS, /* N_BSS == 8 */ - SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, - SEG_REGISTER, /* Dummy N_REGISTER for regs = 30. */ - SEG_GOOF, -}; - -/* Relocation. */ - -/* Crawl along a fixS chain. Emit the segment's relocations. */ - -void -obj_emit_relocations (char **where, - fixS *fixP, /* Fixup chain for this segment. */ - relax_addressT segment_address_in_file) -{ - for (; fixP; fixP = fixP->fx_next) - { - if (fixP->fx_done == 0 - || fixP->fx_r_type != NO_RELOC) - { - symbolS *sym; - - sym = fixP->fx_addsy; - while (sym->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (sym) || S_IS_COMMON (sym))) - sym = sym->sy_value.X_add_symbol; - fixP->fx_addsy = sym; - - tc_bout_fix_to_chars (*where, fixP, segment_address_in_file); - *where += md_reloc_size; - } - } -} - -/* Aout file generation & utilities . */ - -/* Convert a lvalue to machine dependent data. */ - -void -obj_header_append (char **where, object_headers *headers) -{ - /* Always leave in host byte order. */ - char *p; - - headers->header.a_talign = section_alignment[SEG_TEXT]; - - /* Force to at least 2. */ - if (headers->header.a_talign < 2) - headers->header.a_talign = 2; - - headers->header.a_dalign = section_alignment[SEG_DATA]; - headers->header.a_balign = section_alignment[SEG_BSS]; - - headers->header.a_tload = 0; - headers->header.a_dload = - md_section_align (SEG_DATA, H_GET_TEXT_SIZE (headers)); - - headers->header.a_relaxable = linkrelax; - - p = *where; - host_number_to_chars (p, headers->header.a_magic, 4); - p += 4; - host_number_to_chars (p, headers->header.a_text, 4); - p += 4; - host_number_to_chars (p, headers->header.a_data, 4); - p += 4; - host_number_to_chars (p, headers->header.a_bss, 4); - p += 4; - host_number_to_chars (p, headers->header.a_syms, 4); - p += 4; - host_number_to_chars (p, headers->header.a_entry, 4); - p += 4; - host_number_to_chars (p, headers->header.a_trsize, 4); - p += 4; - host_number_to_chars (p, headers->header.a_drsize, 4); - p += 4; - host_number_to_chars (p, headers->header.a_tload, 4); - p += 4; - host_number_to_chars (p, headers->header.a_dload, 4); - p += 4; - *p++ = headers->header.a_talign; - *p++ = headers->header.a_dalign; - *p++ = headers->header.a_balign; - *p++ = headers->header.a_relaxable; - *where = p; -} - -void -obj_symbol_to_chars (char **where, symbolS *symbolP) -{ - char *p = *where; - - host_number_to_chars (p, S_GET_OFFSET (symbolP), 4); - p += 4; - /* Can't use S_GET_TYPE here as it masks. */ - *p++ = symbolP->sy_symbol.n_type; - *p++ = symbolP->sy_symbol.n_other; - host_number_to_chars (p, S_GET_DESC (symbolP), 2); - p += 2; - host_number_to_chars (p, S_GET_VALUE (symbolP), 4); - p += 4; - *where = p; -} - -void -obj_emit_symbols (char **where, symbolS *symbol_rootP) -{ - symbolS *symbolP; - - /* Emit all symbols left in the symbol chain. */ - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - /* Used to save the offset of the name. It is used to point to - the string in memory but must be a file offset. */ - char *temp; - - temp = S_GET_NAME (symbolP); - S_SET_OFFSET (symbolP, symbolP->sy_name_offset); - - /* Any symbol still undefined and is not a dbg symbol is made N_EXT. */ - if (!S_IS_DEBUG (symbolP) && !S_IS_DEFINED (symbolP)) - S_SET_EXTERNAL (symbolP); - - obj_symbol_to_chars (where, symbolP); - S_SET_NAME (symbolP, temp); - } -} - -void -obj_symbol_new_hook (symbolS *symbolP) -{ - S_SET_OTHER (symbolP, 0); - S_SET_DESC (symbolP, 0); -} - -static void -obj_bout_line (int ignore ATTRIBUTE_UNUSED) -{ - /* Assume delimiter is part of expression. */ - /* BSD4.2 as fails with delightful bug, so we are not being - incompatible here. */ - new_logical_line (NULL, (int) (get_absolute_expression ())); - demand_empty_rest_of_line (); -} - -void -obj_read_begin_hook (void) -{ -} - -void -obj_crawl_symbol_chain (object_headers *headers) -{ - symbolS **symbolPP; - symbolS *symbolP; - int symbol_number = 0; - - tc_crawl_symbol_chain (headers); - - symbolPP = &symbol_rootP; /* -> last symbol chain link. */ - while ((symbolP = *symbolPP) != NULL) - { - if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_DATA)) - { - S_SET_SEGMENT (symbolP, SEG_TEXT); - } - - resolve_symbol_value (symbolP); - - /* Skip symbols which were equated to undefined or common - symbols. */ - if (symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (symbolP) || S_IS_COMMON (symbolP))) - { - *symbolPP = symbol_next (symbolP); - continue; - } - - /* OK, here is how we decide which symbols go out into the - brave new symtab. Symbols that do are: - - * symbols with no name (stabd's?) - * symbols with debug info in their N_TYPE - - Symbols that don't are: - * symbols that are registers - * symbols with \1 as their 3rd character (numeric labels) - * "local labels" as defined by S_LOCAL_NAME(name) - if the -L switch was passed to gas. - - All other symbols are output. We complain if a deleted - symbol was marked external. */ - - if (1 - && !S_IS_REGISTER (symbolP) - && (!S_GET_NAME (symbolP) - || S_IS_DEBUG (symbolP) -#ifdef TC_I960 - /* FIXME-SOON this ifdef seems highly dubious to me. xoxorich. */ - || !S_IS_DEFINED (symbolP) - || S_IS_EXTERNAL (symbolP) -#endif - || (S_GET_NAME (symbolP)[0] != '\001' - && (flag_keep_locals || !S_LOCAL_NAME (symbolP))))) - { - symbolP->sy_number = symbol_number++; - - /* The + 1 after strlen account for the \0 at the end of - each string. */ - if (!S_IS_STABD (symbolP)) - { - /* Ordinary case. */ - symbolP->sy_name_offset = string_byte_count; - string_byte_count += strlen (S_GET_NAME (symbolP)) + 1; - } - else /* .Stabd case. */ - symbolP->sy_name_offset = 0; - symbolPP = &(symbolP->sy_next); - } - else - { - if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP)) - as_bad (_("Local symbol %s never defined"), - S_GET_NAME (symbolP)); - - /* Unhook it from the chain. */ - *symbolPP = symbol_next (symbolP); - } - } - - H_SET_SYMBOL_TABLE_SIZE (headers, symbol_number); -} - -/* Find strings by crawling along symbol table chain. */ - -void -obj_emit_strings (char **where) -{ - symbolS *symbolP; - - md_number_to_chars (*where, string_byte_count, 4); - *where += 4; - - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - if (S_GET_NAME (symbolP)) - append (where, S_GET_NAME (symbolP), - (unsigned long) (strlen (S_GET_NAME (symbolP)) + 1)); -} - -const pseudo_typeS obj_pseudo_table[] = -{ - {"line", obj_bout_line, 0}, /* Source code line number. */ - - /* COFF debugging directives. Currently ignored silently. */ - {"def", s_ignore, 0}, - {"dim", s_ignore, 0}, - {"endef", s_ignore, 0}, - {"ln", s_ignore, 0}, - {"scl", s_ignore, 0}, - {"size", s_ignore, 0}, - {"tag", s_ignore, 0}, - {"type", s_ignore, 0}, - {"val", s_ignore, 0}, - - /* Other stuff we don't handle. */ - {"ABORT", s_ignore, 0}, - {"ident", s_ignore, 0}, - - {NULL, NULL, 0} -}; - diff -uprN binutils-2.16.91.0.2/gas/config/obj-bout.h binutils-2.16.91.0.3/gas/config/obj-bout.h --- binutils-2.16.91.0.2/gas/config/obj-bout.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-bout.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,310 +0,0 @@ -/* b.out object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, - 2002, 2003, 2005 Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Cambridge, MA - 02139, USA. */ - -/* This file is a modified version of 'a.out.h'. It is to be used in all GNU - tools modified to support the i80960 b.out format (or tools that operate on - object files created by such tools). - - All i80960 development is done in a CROSS-DEVELOPMENT environment. I.e., - object code is generated on, and executed under the direction of a symbolic - debugger running on, a host system. We do not want to be subject to the - vagaries of which host it is or whether it supports COFF or a.out format, or - anything else. We DO want to: - - o always generate the same format object files, regardless of host. - - o have an 'a.out' header that we can modify for our own purposes - (the 80960 is typically an embedded processor and may require - enhanced linker support that the normal a.out.h header can't - accommodate). - - As for byte-ordering, the following rules apply: - - o Text and data that is actually downloaded to the target is always - in i80960 (little-endian) order. - - o All other numbers (in the header, symbols, relocation directives) - are in host byte-order: object files CANNOT be lifted from a - little-end host and used on a big-endian (or vice versa) without - modification. - ==> This is no longer true using BFD. We can generate any byte order - for the header, and read any byte order. Preference would be to - use little-endian byte order throughout, regardless of host. <== - - o The downloader ('comm960') takes care to generate a pseudo-header - with correct (i80960) byte-ordering before shipping text and data - off to the NINDY monitor in the target systems. Symbols and - relocation info are never sent to the target. */ - -#define OBJ_BOUT 1 - -#define OUTPUT_FLAVOR bfd_target_aout_flavour - -#include "targ-cpu.h" - -#define OBJ_DEFAULT_OUTPUT_FILE_NAME "b.out" - -extern const short seg_N_TYPE[]; -extern const segT N_TYPE_seg[]; - -#define BMAGIC 0415 -/* We don't accept the following (see N_BADMAG macro). - They're just here so GNU code will compile. */ -#define OMAGIC 0407 /* Old impure format. */ -#define NMAGIC 0410 /* Read-only text. */ -#define ZMAGIC 0413 /* Demand load format. */ - -#ifndef DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE BMAGIC -#endif - -/* File header: - All 'lengths' are given as a number of bytes. - All 'alignments' are for relinkable files only; an alignment of - 'n' indicates the corresponding segment must begin at an - address that is a multiple of (2**n). */ -struct exec -{ - /* Standard stuff. */ - unsigned long a_magic; /* Identifies this as a b.out file. */ - unsigned long a_text; /* Length of text. */ - unsigned long a_data; /* Length of data. */ - unsigned long a_bss; /* Length of runtime uninitialized data area. */ - unsigned long a_syms; /* Length of symbol table. */ - unsigned long a_entry; /* Runtime start address. */ - unsigned long a_trsize; /* Length of text relocation info. */ - unsigned long a_drsize; /* Length of data relocation info. */ - - /* Added for i960 */ - unsigned long a_tload; /* Text runtime load address. */ - unsigned long a_dload; /* Data runtime load address. */ - unsigned char a_talign; /* Alignment of text segment. */ - unsigned char a_dalign; /* Alignment of data segment. */ - unsigned char a_balign; /* Alignment of bss segment. */ - unsigned char a_relaxable; /* Contains enough info to relax. */ -}; - -#define EXEC_BYTES_SIZE (10 * 4 + 4 * 1) - -#define N_BADMAG(x) (((x).a_magic) != BMAGIC) -#define N_TXTOFF(x) EXEC_BYTES_SIZE -#define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text ) -#define N_TROFF(x) ( N_DATOFF(x) + (x).a_data ) -#define N_DROFF(x) ( N_TROFF(x) + (x).a_trsize ) -#define N_SYMOFF(x) ( N_DROFF(x) + (x).a_drsize ) -#define N_STROFF(x) ( N_SYMOFF(x) + (x).a_syms ) - -/* A single entry in the symbol table. */ -struct nlist - { - union - { - char *n_name; - struct nlist *n_next; - long n_strx; /* Index into string table. */ - } - n_un; - unsigned char n_type; /* See below. */ - char n_other; /* Used in i80960 support -- see below. */ - short n_desc; - unsigned long n_value; - }; - -typedef struct nlist obj_symbol_type; - -/* Legal values of n_type. */ -#define N_UNDF 0 /* Undefined symbol. */ -#define N_ABS 2 /* Absolute symbol. */ -#define N_TEXT 4 /* Text symbol. */ -#define N_DATA 6 /* Data symbol. */ -#define N_BSS 8 /* BSS symbol. */ -#define N_FN 31 /* Filename symbol. */ - -#define N_EXT 1 /* External symbol (OR'd in with one of above). */ -#define N_TYPE 036 /* Mask for all the type bits. */ -#define N_STAB 0340 /* Mask for all bits used for SDB entries. */ - -#ifndef CUSTOM_RELOC_FORMAT -struct relocation_info - { - int r_address; /* File address of item to be relocated. */ - unsigned - r_index:24, /* Index of symbol on which relocation is based. */ - r_pcrel:1, /* 1 => relocate PC-relative; else absolute - On i960, pc-relative implies 24-bit - address, absolute implies 32-bit. */ - r_length:2, /* Number of bytes to relocate: - 0 => 1 byte - 1 => 2 bytes - 2 => 4 bytes -- only value used for i960. */ - r_extern:1, r_bsr:1, /* Something for the GNU NS32K assembler. */ - r_disp:1, /* Something for the GNU NS32K assembler. */ - r_callj:1, /* 1 if relocation target is an i960 'callj'. */ - nuthin:1; /* Unused. */ - }; - -#endif /* CUSTOM_RELOC_FORMAT */ - -/* Macros to extract information from a symbol table entry. - This syntactic indirection allows independence regarding a.out or coff. - The argument (s) of all these macros is a pointer to a symbol table entry. */ - -/* Predicates. */ -/* True if the symbol is external. */ -#define S_IS_EXTERNAL(s) ((s)->sy_symbol.n_type & N_EXT) - -/* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT. */ -#define S_IS_DEFINED(s) ((S_GET_TYPE(s) != N_UNDF) || (S_GET_DESC(s) != 0)) - -/* Return true for symbols that should not be reduced to section - symbols or eliminated from expressions, because they may be - overridden by the linker. */ -#define S_FORCE_RELOC(s, strict) \ - (!SEG_NORMAL (S_GET_SEGMENT (s))) - -#define S_IS_COMMON(s) \ - (S_GET_TYPE (s) == N_UNDF && S_GET_VALUE (s) != 0) - -#define S_IS_REGISTER(s) ((s)->sy_symbol.n_type == N_REGISTER) - -/* True if a debug special symbol entry. */ -#define S_IS_DEBUG(s) ((s)->sy_symbol.n_type & N_STAB) -/* True if a symbol is local symbol name. */ -#define S_IS_LOCAL(s) \ - ((S_GET_NAME (s) \ - && !S_IS_DEBUG (s) \ - && (strchr (S_GET_NAME (s), '\001') != NULL \ - || strchr (S_GET_NAME (s), '\002') != NULL \ - || (S_LOCAL_NAME(s) && !flag_keep_locals))) \ - || (flag_strip_local_absolute \ - && !S_IS_EXTERNAL(s) \ - && S_GET_SEGMENT(s) == absolute_section)) -/* True if the symbol has been generated because of a .stabd directive. */ -#define S_IS_STABD(s) (S_GET_NAME(s) == NULL) - -/* Accessors. */ -/* The name of the symbol. */ -#define S_GET_NAME(s) ((s)->sy_symbol.n_un.n_name) -/* The pointer to the string table. */ -#define S_GET_OFFSET(s) ((s)->sy_symbol.n_un.n_strx) -/* The type of the symbol. */ -#define S_GET_TYPE(s) ((s)->sy_symbol.n_type & N_TYPE) -/* The numeric value of the segment. */ -#define S_GET_SEGMENT(s) (N_TYPE_seg[S_GET_TYPE(s)]) -/* The n_other expression value. */ -#define S_GET_OTHER(s) ((s)->sy_symbol.n_other) -/* The n_desc expression value. */ -#define S_GET_DESC(s) ((s)->sy_symbol.n_desc) - -/* Modifiers. */ -/* Assume that a symbol cannot be simultaneously in more than on segment. */ -/* Set segment. */ -#define S_SET_SEGMENT(s,seg) ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type |= SEGMENT_TO_SYMBOL_TYPE (seg)) -/* The symbol is external. */ -#define S_SET_EXTERNAL(s) ((s)->sy_symbol.n_type |= N_EXT) -/* The symbol is not external. */ -#define S_CLEAR_EXTERNAL(s) ((s)->sy_symbol.n_type &= ~N_EXT) -/* Set the name of the symbol. */ -#define S_SET_NAME(s,v) ((s)->sy_symbol.n_un.n_name = (v)) -/* Set the offset in the string table. */ -#define S_SET_OFFSET(s,v) ((s)->sy_symbol.n_un.n_strx = (v)) -/* Set the n_other expression value. */ -#define S_SET_OTHER(s,v) ((s)->sy_symbol.n_other = (v)) -/* Set the n_desc expression value. */ -#define S_SET_DESC(s,v) ((s)->sy_symbol.n_desc = (v)) -/* Set the n_type value. */ -#define S_SET_TYPE(s,v) ((s)->sy_symbol.n_type = (v)) - -/* File header macro and type definition. */ - -#define H_GET_FILE_SIZE(h) (EXEC_BYTES_SIZE \ - + H_GET_TEXT_SIZE (h) \ - + H_GET_DATA_SIZE(h) \ - + H_GET_SYMBOL_TABLE_SIZE (h) \ - + H_GET_TEXT_RELOCATION_SIZE (h) \ - + H_GET_DATA_RELOCATION_SIZE (h) \ - + (h)->string_table_size) - -#define H_GET_HEADER_SIZE(h) EXEC_BYTES_SIZE -#define H_GET_TEXT_SIZE(h) ((h)->header.a_text) -#define H_GET_DATA_SIZE(h) ((h)->header.a_data) -#define H_GET_BSS_SIZE(h) ((h)->header.a_bss) -#define H_GET_TEXT_RELOCATION_SIZE(h) ((h)->header.a_trsize) -#define H_GET_DATA_RELOCATION_SIZE(h) ((h)->header.a_drsize) -#define H_GET_SYMBOL_TABLE_SIZE(h) ((h)->header.a_syms) -#define H_GET_MAGIC_NUMBER(h) ((h)->header.a_info) -#define H_GET_ENTRY_POINT(h) ((h)->header.a_entry) -#define H_GET_STRING_SIZE(h) ((h)->string_table_size) -#define H_GET_LINENO_SIZE(h) (0) - -#ifdef EXEC_MACHINE_TYPE -#define H_GET_MACHINE_TYPE(h) ((h)->header.a_machtype) -#endif /* EXEC_MACHINE_TYPE. */ -#ifdef EXEC_VERSION -#define H_GET_VERSION(h) ((h)->header.a_version) -#endif /* EXEC_VERSION. */ - -#define H_SET_TEXT_SIZE(h,v) ((h)->header.a_text = (v)) -#define H_SET_DATA_SIZE(h,v) ((h)->header.a_data = (v)) -#define H_SET_BSS_SIZE(h,v) ((h)->header.a_bss = (v)) - -#define H_SET_RELOCATION_SIZE(h,t,d) (H_SET_TEXT_RELOCATION_SIZE((h),(t)),\ - H_SET_DATA_RELOCATION_SIZE((h),(d))) - -#define H_SET_TEXT_RELOCATION_SIZE(h,v) ((h)->header.a_trsize = (v)) -#define H_SET_DATA_RELOCATION_SIZE(h,v) ((h)->header.a_drsize = (v)) -#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->header.a_syms = (v) * 12) - -#define H_SET_MAGIC_NUMBER(h,v) ((h)->header.a_magic = (v)) - -#define H_SET_ENTRY_POINT(h,v) ((h)->header.a_entry = (v)) -#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v)) -#ifdef EXEC_MACHINE_TYPE -#define H_SET_MACHINE_TYPE(h,v) ((h)->header.a_machtype = (v)) -#endif /* EXEC_MACHINE_TYPE. */ -#ifdef EXEC_VERSION -#define H_SET_VERSION(h,v) ((h)->header.a_version = (v)) -#endif /* EXEC_VERSION. */ - -typedef struct - { - struct exec header; /* a.out header. */ - long string_table_size; /* names + '\0' + sizeof (int). */ - } - -object_headers; - -/* Unused hooks. */ -#define OBJ_EMIT_LINENO(a, b, c) {;} -#define obj_pre_write_hook(a) {;} - -#if WORDS_BIGENDIAN -#define host_number_to_chars number_to_chars_bigendian -#else -#define host_number_to_chars number_to_chars_littleendian -#endif - -struct fix; - -extern void tc_aout_fix_to_chars (char *, struct fix *, relax_addressT); -extern void tc_bout_fix_to_chars (char *, struct fix *, relax_addressT); - -#define AOUT_STABS diff -uprN binutils-2.16.91.0.2/gas/config/obj-coff.c binutils-2.16.91.0.3/gas/config/obj-coff.c --- binutils-2.16.91.0.2/gas/config/obj-coff.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-coff.c 2005-08-22 12:27:42.000000000 -0700 @@ -38,9 +38,9 @@ #define KEEP_RELOC_INFO #endif -/* The BFD_ASSEMBLER version of obj_coff_section will use this macro to set - a new section's attributes when a directive has no valid flags or the - "w" flag is used. This default should be appropriate for most. */ +/* obj_coff_section will use this macro to set a new section's + attributes when a directive has no valid flags or the "w" flag is + used. This default should be appropriate for most. */ #ifndef TC_COFF_SECTION_DEFAULT_ATTRIBUTES #define TC_COFF_SECTION_DEFAULT_ATTRIBUTES (SEC_LOAD | SEC_DATA) #endif @@ -151,9 +151,7 @@ tag_find_or_make (char *name) 0, &zero_address_frag); tag_insert (S_GET_NAME (symbolP), symbolP); -#ifdef BFD_ASSEMBLER symbol_table_insert (symbolP); -#endif } return symbolP; @@ -171,8 +169,6 @@ obj_coff_bss (int ignore ATTRIBUTE_UNUSE s_lcomm (0); } -#ifdef BFD_ASSEMBLER - #define GET_FILENAME_STRING(X) \ ((char *) (&((X)->sy_symbol.ost_auxent->x_file.x_n.x_offset))[1]) @@ -1087,10 +1083,7 @@ obj_coff_weak (int ignore ATTRIBUTE_UNUS symbolP = symbol_find_or_make (name); *input_line_pointer = c; SKIP_WHITESPACE (); - -#if defined BFD_ASSEMBLER || defined S_SET_WEAK S_SET_WEAK (symbolP); -#endif #ifdef TE_PE /* See _Microsoft Portable Executable and Common Object @@ -1100,7 +1093,7 @@ obj_coff_weak (int ignore ATTRIBUTE_UNUS the value of the weak symbol itself. */ S_SET_STORAGE_CLASS (symbolP, C_NT_WEAK); S_SET_NUMBER_AUXILIARY (symbolP, 1); - SA_SET_SYM_FSIZE (symbolP, IMAGE_WEAK_EXTERN_SEARCH_LIBRARY); + SA_SET_SYM_FSIZE (symbolP, IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY); alternateP = symbol_find_or_make (weak_name2altname (name)); S_SET_EXTERNAL (alternateP); @@ -1127,10 +1120,8 @@ void coff_obj_read_begin_hook (void) { /* These had better be the same. Usually 18 bytes. */ -#ifndef BFD_HEADERS know (sizeof (SYMENT) == sizeof (AUXENT)); know (SYMESZ == AUXESZ); -#endif tag_init (); } @@ -1703,2769 +1694,56 @@ symbol_dump (void) #endif /* DEBUG */ -#else /* not BFD_ASSEMBLER */ - -#include "frags.h" -/* This is needed because we include internal bfd things. */ -#include - -#include "libbfd.h" -#include "libcoff.h" - -/* The NOP_OPCODE is for the alignment fill value. Fill with nop so - that we can stick sections together without causing trouble. */ -#ifndef NOP_OPCODE -#define NOP_OPCODE 0x00 -#endif - -/* The zeroes if symbol name is longer than 8 chars */ -#define S_SET_ZEROES(s,v) ((s)->sy_symbol.ost_entry.n_zeroes = (v)) - -#define MIN(a,b) ((a) < (b)? (a) : (b)) - -/* This vector is used to turn a gas internal segment number into a - section number suitable for insertion into a coff symbol table. - This must correspond to seg_info_off_by_4. */ - -const short seg_N_TYPE[] = -{ /* in: segT out: N_TYPE bits */ - C_ABS_SECTION, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - C_UNDEF_SECTION, /* SEG_UNKNOWN */ - C_UNDEF_SECTION, /* SEG_GOOF */ - C_UNDEF_SECTION, /* SEG_EXPR */ - C_DEBUG_SECTION, /* SEG_DEBUG */ - C_NTV_SECTION, /* SEG_NTV */ - C_PTV_SECTION, /* SEG_PTV */ - C_REGISTER_SECTION, /* SEG_REGISTER */ -}; - -int function_lineoff = -1; /* Offset in line#s where the last function - started (the odd entry for line #0) */ - -/* Structure used to keep the filenames which - are too long around so that we can stick them - into the string table. */ -struct filename_list -{ - const char *filename; - struct filename_list *next; -}; - -static struct filename_list *filename_list_head; -static struct filename_list *filename_list_tail; - -static symbolS *last_line_symbol; - -/* Add 4 to the real value to get the index and compensate the - negatives. This vector is used by S_GET_SEGMENT to turn a coff - section number into a segment number. */ - -bfd *abfd; -static symbolS *previous_file_symbol; -static int line_base; - -/* When not using BFD_ASSEMBLER, we permit up to 40 sections. - - This array maps a COFF section number into a gas section number. - Because COFF uses negative section numbers, you must add 4 to the - COFF section number when indexing into this array; this is done via - the SEG_INFO_FROM_SECTION_NUMBER macro. This must correspond to - seg_N_TYPE. */ - -static const segT seg_info_off_by_4[] = -{ - SEG_PTV, - SEG_NTV, - SEG_DEBUG, - SEG_ABSOLUTE, - SEG_UNKNOWN, - SEG_E0, SEG_E1, SEG_E2, SEG_E3, SEG_E4, - SEG_E5, SEG_E6, SEG_E7, SEG_E8, SEG_E9, - SEG_E10, SEG_E11, SEG_E12, SEG_E13, SEG_E14, - SEG_E15, SEG_E16, SEG_E17, SEG_E18, SEG_E19, - SEG_E20, SEG_E21, SEG_E22, SEG_E23, SEG_E24, - SEG_E25, SEG_E26, SEG_E27, SEG_E28, SEG_E29, - SEG_E30, SEG_E31, SEG_E32, SEG_E33, SEG_E34, - SEG_E35, SEG_E36, SEG_E37, SEG_E38, SEG_E39, - (segT) 40, - (segT) 41, - (segT) 42, - (segT) 43, - (segT) 44, - (segT) 45, - (segT) 0, - (segT) 0, - (segT) 0, - SEG_REGISTER -}; - -#define SEG_INFO_FROM_SECTION_NUMBER(x) (seg_info_off_by_4[(x)+4]) - -static relax_addressT -relax_align (relax_addressT address, long alignment) -{ - relax_addressT mask; - relax_addressT new_address; - - mask = ~((~0) << alignment); - new_address = (address + mask) & (~mask); - - return new_address - address; -} - -segT -s_get_segment (symbolS * x) -{ - return SEG_INFO_FROM_SECTION_NUMBER (x->sy_symbol.ost_entry.n_scnum); -} - -/* Calculate the size of the frag chain and fill in the section header - to contain all of it, also fill in the addr of the sections. */ - -static unsigned int -size_section (bfd *abfd ATTRIBUTE_UNUSED, unsigned int idx) -{ - unsigned int size = 0; - fragS *frag = segment_info[idx].frchainP->frch_root; - - while (frag) - { - size = frag->fr_address; - if (frag->fr_address != size) - { - fprintf (stderr, _("Out of step\n")); - size = frag->fr_address; - } - - switch (frag->fr_type) - { -#ifdef TC_COFF_SIZEMACHDEP - case rs_machine_dependent: - size += TC_COFF_SIZEMACHDEP (frag); - break; -#endif - case rs_space: - case rs_fill: - case rs_org: - size += frag->fr_fix; - size += frag->fr_offset * frag->fr_var; - break; - case rs_align: - case rs_align_code: - case rs_align_test: - { - addressT off; - - size += frag->fr_fix; - off = relax_align (size, frag->fr_offset); - if (frag->fr_subtype != 0 && off > frag->fr_subtype) - off = 0; - size += off; - } - break; - default: - BAD_CASE (frag->fr_type); - break; - } - frag = frag->fr_next; - } - segment_info[idx].scnhdr.s_size = size; - return size; -} - -static unsigned int -count_entries_in_chain (unsigned int idx) -{ - unsigned int nrelocs; - fixS *fixup_ptr; - - /* Count the relocations. */ - fixup_ptr = segment_info[idx].fix_root; - nrelocs = 0; - while (fixup_ptr != (fixS *) NULL) - { - if (fixup_ptr->fx_done == 0 && TC_COUNT_RELOC (fixup_ptr)) - { -#if defined(TC_A29K) || defined(TC_OR32) - if (fixup_ptr->fx_r_type == RELOC_CONSTH) - nrelocs += 2; - else - nrelocs++; -#else - nrelocs++; -#endif - } - - fixup_ptr = fixup_ptr->fx_next; - } - return nrelocs; -} - -#ifdef TE_AUX - -/* AUX's ld expects relocations to be sorted. */ - -static int -compare_external_relocs (const void * x, const void * y) -{ - struct external_reloc *a = (struct external_reloc *) x; - struct external_reloc *b = (struct external_reloc *) y; - bfd_vma aadr = bfd_getb32 (a->r_vaddr); - bfd_vma badr = bfd_getb32 (b->r_vaddr); - - return (aadr < badr ? -1 : badr < aadr ? 1 : 0); -} - -#endif - -/* Output all the relocations for a section. */ - -static void -do_relocs_for (bfd * abfd, object_headers * h, unsigned long *file_cursor) -{ - unsigned int nrelocs; - unsigned int idx; - unsigned long reloc_start = *file_cursor; - - for (idx = SEG_E0; idx < SEG_LAST; idx++) - { - if (segment_info[idx].scnhdr.s_name[0]) - { - struct external_reloc *ext_ptr; - struct external_reloc *external_reloc_vec; - unsigned int external_reloc_size; - unsigned int base = segment_info[idx].scnhdr.s_paddr; - fixS *fix_ptr = segment_info[idx].fix_root; - - nrelocs = count_entries_in_chain (idx); - - if (nrelocs) - /* Bypass this stuff if no relocs. This also incidentally - avoids a SCO bug, where free(malloc(0)) tends to crash. */ - { - external_reloc_size = nrelocs * RELSZ; - external_reloc_vec = malloc (external_reloc_size); - - ext_ptr = external_reloc_vec; - - /* Fill in the internal coff style reloc struct from the - internal fix list. */ - while (fix_ptr) - { - struct internal_reloc intr; - - /* Only output some of the relocations. */ - if (fix_ptr->fx_done == 0 && TC_COUNT_RELOC (fix_ptr)) - { -#ifdef TC_RELOC_MANGLE - TC_RELOC_MANGLE (&segment_info[idx], fix_ptr, &intr, - base); -#else - symbolS *dot; - symbolS *symbol_ptr = fix_ptr->fx_addsy; - - intr.r_type = TC_COFF_FIX2RTYPE (fix_ptr); - intr.r_vaddr = - base + fix_ptr->fx_frag->fr_address + fix_ptr->fx_where; - -#ifdef TC_KEEP_FX_OFFSET - intr.r_offset = fix_ptr->fx_offset; -#else - intr.r_offset = 0; -#endif - - while (symbol_ptr->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (symbol_ptr) - || S_IS_COMMON (symbol_ptr))) - { - symbolS *n; - - /* We must avoid looping, as that can occur - with a badly written program. */ - n = symbol_ptr->sy_value.X_add_symbol; - if (n == symbol_ptr) - break; - symbol_ptr = n; - } - - /* Turn the segment of the symbol into an offset. */ - if (symbol_ptr) - { - resolve_symbol_value (symbol_ptr); - if (! symbol_ptr->sy_resolved) - { - char *file; - unsigned int line; - - if (expr_symbol_where (symbol_ptr, &file, &line)) - as_bad_where (file, line, - _("unresolved relocation")); - else - as_bad (_("bad relocation: symbol `%s' not in symbol table"), - S_GET_NAME (symbol_ptr)); - } - - dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot; - if (dot) - intr.r_symndx = dot->sy_number; - else - intr.r_symndx = symbol_ptr->sy_number; - } - else - intr.r_symndx = -1; -#endif - (void) bfd_coff_swap_reloc_out (abfd, &intr, ext_ptr); - ext_ptr++; -#if defined(TC_A29K) - /* The 29k has a special kludge for the high 16 bit - reloc. Two relocations are emitted, R_IHIHALF, - and R_IHCONST. The second one doesn't contain a - symbol, but uses the value for offset. */ - if (intr.r_type == R_IHIHALF) - { - /* Now emit the second bit. */ - intr.r_type = R_IHCONST; - intr.r_symndx = fix_ptr->fx_addnumber; - (void) bfd_coff_swap_reloc_out (abfd, &intr, ext_ptr); - ext_ptr++; - } -#endif -#if defined(TC_OR32) - /* The or32 has a special kludge for the high 16 bit - reloc. Two relocations are emitted, R_IHIHALF, - and R_IHCONST. The second one doesn't contain a - symbol, but uses the value for offset. */ - if (intr.r_type == R_IHIHALF) - { - /* Now emit the second bit. */ - intr.r_type = R_IHCONST; - intr.r_symndx = fix_ptr->fx_addnumber; - (void) bfd_coff_swap_reloc_out (abfd, & intr, ext_ptr); - ext_ptr ++; - } -#endif - } - - fix_ptr = fix_ptr->fx_next; - } -#ifdef TE_AUX - /* Sort the reloc table. */ - qsort ((void *) external_reloc_vec, nrelocs, - sizeof (struct external_reloc), compare_external_relocs); -#endif - /* Write out the reloc table. */ - bfd_bwrite ((void *) external_reloc_vec, - (bfd_size_type) external_reloc_size, abfd); - free (external_reloc_vec); - - /* Fill in section header info. */ - segment_info[idx].scnhdr.s_relptr = *file_cursor; - *file_cursor += external_reloc_size; - segment_info[idx].scnhdr.s_nreloc = nrelocs; - } - else - { - /* No relocs. */ - segment_info[idx].scnhdr.s_relptr = 0; - } - } - } - - /* Set relocation_size field in file headers. */ - H_SET_RELOCATION_SIZE (h, *file_cursor - reloc_start, 0); -} - -/* Run through a frag chain and write out the data to go with it, fill - in the scnhdrs with the info on the file positions. */ - -static void -fill_section (bfd * abfd, - object_headers *h ATTRIBUTE_UNUSED, - unsigned long *file_cursor) +const pseudo_typeS coff_pseudo_table[] = { - unsigned int i; - unsigned int paddr = 0; - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - unsigned int offset = 0; - struct internal_scnhdr *s = &(segment_info[i].scnhdr); - - PROGRESS (1); - - if (s->s_name[0]) - { - fragS *frag = segment_info[i].frchainP->frch_root; - char *buffer = NULL; - - if (s->s_size == 0) - s->s_scnptr = 0; - else - { - buffer = xmalloc (s->s_size); - s->s_scnptr = *file_cursor; - } - know (s->s_paddr == paddr); - - if (streq (s->s_name, ".text")) - s->s_flags |= STYP_TEXT; - else if (streq (s->s_name, ".data")) - s->s_flags |= STYP_DATA; - else if (streq (s->s_name, ".bss")) - { - s->s_scnptr = 0; - s->s_flags |= STYP_BSS; - - /* @@ Should make the i386 and a29k coff targets define - COFF_NOLOAD_PROBLEM, and have only one test here. */ -#ifndef TC_I386 -#ifndef TC_A29K -#ifndef TC_OR32 -#ifndef COFF_NOLOAD_PROBLEM - /* Apparently the SVR3 linker (and exec syscall) and UDI - mondfe progrem are confused by noload sections. */ - s->s_flags |= STYP_NOLOAD; -#endif -#endif -#endif + {"ABORT", s_abort, 0}, + {"appline", obj_coff_ln, 1}, + /* We accept the .bss directive for backward compatibility with + earlier versions of gas. */ + {"bss", obj_coff_bss, 0}, + {"def", obj_coff_def, 0}, + {"dim", obj_coff_dim, 0}, + {"endef", obj_coff_endef, 0}, + {"ident", obj_coff_ident, 0}, + {"line", obj_coff_line, 0}, + {"ln", obj_coff_ln, 0}, + {"scl", obj_coff_scl, 0}, + {"sect", obj_coff_section, 0}, + {"sect.s", obj_coff_section, 0}, + {"section", obj_coff_section, 0}, + {"section.s", obj_coff_section, 0}, + /* FIXME: We ignore the MRI short attribute. */ + {"size", obj_coff_size, 0}, + {"tag", obj_coff_tag, 0}, + {"type", obj_coff_type, 0}, + {"val", obj_coff_val, 0}, + {"version", s_ignore, 0}, + {"loc", obj_coff_loc, 0}, + {"optim", s_ignore, 0}, /* For sun386i cc (?) */ + {"weak", obj_coff_weak, 0}, +#if defined TC_TIC4X + /* The tic4x uses sdef instead of def. */ + {"sdef", obj_coff_def, 0}, #endif - } - else if (streq (s->s_name, ".lit")) - s->s_flags = STYP_LIT | STYP_TEXT; - else if (streq (s->s_name, ".init")) - s->s_flags |= STYP_TEXT; - else if (streq (s->s_name, ".fini")) - s->s_flags |= STYP_TEXT; - else if (strneq (s->s_name, ".comment", 8)) - s->s_flags |= STYP_INFO; - - while (frag) - { - unsigned int fill_size; - - switch (frag->fr_type) - { - case rs_machine_dependent: - if (frag->fr_fix) - { - memcpy (buffer + frag->fr_address, - frag->fr_literal, - (unsigned int) frag->fr_fix); - offset += frag->fr_fix; - } - - break; - case rs_space: - case rs_fill: - case rs_align: - case rs_align_code: - case rs_align_test: - case rs_org: - if (frag->fr_fix) - { - memcpy (buffer + frag->fr_address, - frag->fr_literal, - (unsigned int) frag->fr_fix); - offset += frag->fr_fix; - } - - fill_size = frag->fr_var; - if (fill_size && frag->fr_offset > 0) - { - unsigned int count; - unsigned int off = frag->fr_fix; - - for (count = frag->fr_offset; count; count--) - { - if (fill_size + frag->fr_address + off <= s->s_size) - { - memcpy (buffer + frag->fr_address + off, - frag->fr_literal + frag->fr_fix, - fill_size); - off += fill_size; - offset += fill_size; - } - } - } - break; - case rs_broken_word: - break; - default: - abort (); - } - frag = frag->fr_next; - } - - if (s->s_size != 0) - { - if (s->s_scnptr != 0) - { - bfd_bwrite (buffer, s->s_size, abfd); - *file_cursor += s->s_size; - } - free (buffer); - } - paddr += s->s_size; - } - } -} + {NULL, NULL, 0} +}; + -/* Coff file generation & utilities. */ +/* Support for a COFF emulation. */ static void -coff_header_append (bfd * abfd, object_headers * h) -{ - unsigned int i; - char buffer[1000]; - char buffero[1000]; -#ifdef COFF_LONG_SECTION_NAMES - unsigned long string_size = 4; -#endif - - bfd_seek (abfd, 0, 0); - -#ifndef OBJ_COFF_OMIT_OPTIONAL_HEADER - H_SET_MAGIC_NUMBER (h, COFF_MAGIC); - H_SET_VERSION_STAMP (h, 0); - H_SET_ENTRY_POINT (h, 0); - H_SET_TEXT_START (h, segment_info[SEG_E0].frchainP->frch_root->fr_address); - H_SET_DATA_START (h, segment_info[SEG_E1].frchainP->frch_root->fr_address); - H_SET_SIZEOF_OPTIONAL_HEADER (h, bfd_coff_swap_aouthdr_out (abfd, &h->aouthdr, - buffero)); -#else /* defined (OBJ_COFF_OMIT_OPTIONAL_HEADER) */ - H_SET_SIZEOF_OPTIONAL_HEADER (h, 0); -#endif /* defined (OBJ_COFF_OMIT_OPTIONAL_HEADER) */ - - i = bfd_coff_swap_filehdr_out (abfd, &h->filehdr, buffer); - - bfd_bwrite (buffer, (bfd_size_type) i, abfd); - bfd_bwrite (buffero, (bfd_size_type) H_GET_SIZEOF_OPTIONAL_HEADER (h), abfd); - - for (i = SEG_E0; i < SEG_LAST; i++) - { - if (segment_info[i].scnhdr.s_name[0]) - { - unsigned int size; - -#ifdef COFF_LONG_SECTION_NAMES - /* Support long section names as found in PE. This code - must coordinate with that in write_object_file and - w_strings. */ - if (strlen (segment_info[i].name) > SCNNMLEN) - { - memset (segment_info[i].scnhdr.s_name, 0, SCNNMLEN); - sprintf (segment_info[i].scnhdr.s_name, "/%lu", string_size); - string_size += strlen (segment_info[i].name) + 1; - } -#endif - size = bfd_coff_swap_scnhdr_out (abfd, - &(segment_info[i].scnhdr), - buffer); - if (size == 0) - as_bad (_("bfd_coff_swap_scnhdr_out failed")); - bfd_bwrite (buffer, (bfd_size_type) size, abfd); - } - } -} - -static char * -symbol_to_chars (bfd * abfd, char * where, symbolS * symbolP) -{ - unsigned int numaux = symbolP->sy_symbol.ost_entry.n_numaux; - unsigned int i; - valueT val; - - /* Turn any symbols with register attributes into abs symbols. */ - if (S_GET_SEGMENT (symbolP) == reg_section) - S_SET_SEGMENT (symbolP, absolute_section); - - /* At the same time, relocate all symbols to their output value. */ -#ifndef TE_PE - val = (segment_info[S_GET_SEGMENT (symbolP)].scnhdr.s_paddr - + S_GET_VALUE (symbolP)); -#else - val = S_GET_VALUE (symbolP); -#endif - - S_SET_VALUE (symbolP, val); - - symbolP->sy_symbol.ost_entry.n_value = val; - - where += bfd_coff_swap_sym_out (abfd, &symbolP->sy_symbol.ost_entry, - where); - - for (i = 0; i < numaux; i++) - { - where += bfd_coff_swap_aux_out (abfd, - &symbolP->sy_symbol.ost_auxent[i], - S_GET_DATA_TYPE (symbolP), - S_GET_STORAGE_CLASS (symbolP), - i, numaux, where); - } - - return where; -} - -void -coff_obj_symbol_new_hook (symbolS *symbolP) +coff_pop_insert (void) { - char underscore = 0; /* Symbol has leading _ */ - - /* Effective symbol. */ - /* Store the pointer in the offset. */ - S_SET_ZEROES (symbolP, 0L); - S_SET_DATA_TYPE (symbolP, T_NULL); - S_SET_STORAGE_CLASS (symbolP, 0); - S_SET_NUMBER_AUXILIARY (symbolP, 0); - /* Additional information. */ - symbolP->sy_symbol.ost_flags = 0; - /* Auxiliary entries. */ - memset ((char *) &symbolP->sy_symbol.ost_auxent[0], 0, AUXESZ); - - if (S_IS_STRING (symbolP)) - SF_SET_STRING (symbolP); - if (!underscore && S_IS_LOCAL (symbolP)) - SF_SET_LOCAL (symbolP); + pop_insert (coff_pseudo_table); } static int -c_line_new (symbolS * symbol, long paddr, int line_number, fragS * frag) +coff_separate_stab_sections (void) { - struct lineno_list *new_line = xmalloc (sizeof (* new_line)); - - segment_info_type *s = segment_info + now_seg; - new_line->line.l_lnno = line_number; - - if (line_number == 0) - { - last_line_symbol = symbol; - new_line->line.l_addr.l_symndx = (long) symbol; - } - else - { - new_line->line.l_addr.l_paddr = paddr; - } - - new_line->frag = (char *) frag; - new_line->next = NULL; - - if (s->lineno_list_head == NULL) - s->lineno_list_head = new_line; - else - s->lineno_list_tail->next = new_line; - - s->lineno_list_tail = new_line; - return LINESZ * s->scnhdr.s_nlnno++; + return 1; } -/* Handle .ln directives. */ - -static void -obj_coff_ln (int appline) -{ - int l; - - if (! appline && def_symbol_in_progress != NULL) - { - /* Wrong context. */ - as_warn (_(".ln pseudo-op inside .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - l = get_absolute_expression (); - c_line_new (0, frag_now_fix (), l, frag_now); - - if (appline) - new_logical_line ((char *) NULL, l - 1); - -#ifndef NO_LISTING - { - extern int listing; - - if (listing) - { - if (! appline) - l += line_base - 1; - listing_source_line ((unsigned int) l); - } - } -#endif - demand_empty_rest_of_line (); -} - -/* Handle .def directives. - - One might ask : why can't we symbol_new if the symbol does not - already exist and fill it with debug information. Because of - the C_EFCN special symbol. It would clobber the value of the - function symbol before we have a chance to notice that it is - a C_EFCN. And a second reason is that the code is more clear this - way. (at least I think it is :-). */ - -#define SKIP_SEMI_COLON() while (*input_line_pointer++ != ';') -#define SKIP_WHITESPACES() while (*input_line_pointer == ' ' || \ - *input_line_pointer == '\t') \ - input_line_pointer++; - -static void -obj_coff_def (int what ATTRIBUTE_UNUSED) -{ - char name_end; /* Char after the end of name. */ - char *symbol_name; /* Name of the debug symbol. */ - char *symbol_name_copy; /* Temporary copy of the name. */ - unsigned int symbol_name_length; - - if (def_symbol_in_progress != NULL) - { - as_warn (_(".def pseudo-op used inside of .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - SKIP_WHITESPACES (); - - def_symbol_in_progress = obstack_alloc (¬es, sizeof (*def_symbol_in_progress)); - memset (def_symbol_in_progress, 0, sizeof (*def_symbol_in_progress)); - - symbol_name = input_line_pointer; - name_end = get_symbol_end (); - symbol_name_length = strlen (symbol_name); - symbol_name_copy = xmalloc (symbol_name_length + 1); - strcpy (symbol_name_copy, symbol_name); -#ifdef tc_canonicalize_symbol_name - symbol_name_copy = tc_canonicalize_symbol_name (symbol_name_copy); -#endif - - /* Initialize the new symbol. */ - S_SET_NAME (def_symbol_in_progress, symbol_name_copy); - /* free(symbol_name_copy); */ - def_symbol_in_progress->sy_name_offset = (unsigned long) ~0; - def_symbol_in_progress->sy_number = ~0; - def_symbol_in_progress->sy_frag = &zero_address_frag; - S_SET_VALUE (def_symbol_in_progress, 0); - - if (S_IS_STRING (def_symbol_in_progress)) - SF_SET_STRING (def_symbol_in_progress); - - *input_line_pointer = name_end; - - demand_empty_rest_of_line (); -} - -static void -c_symbol_merge (symbolS *debug, symbolS *normal) -{ - S_SET_DATA_TYPE (normal, S_GET_DATA_TYPE (debug)); - S_SET_STORAGE_CLASS (normal, S_GET_STORAGE_CLASS (debug)); - - if (S_GET_NUMBER_AUXILIARY (debug) > S_GET_NUMBER_AUXILIARY (normal)) - S_SET_NUMBER_AUXILIARY (normal, S_GET_NUMBER_AUXILIARY (debug)); - - if (S_GET_NUMBER_AUXILIARY (debug) > 0) - memcpy ((char *) &normal->sy_symbol.ost_auxent[0], - (char *) &debug->sy_symbol.ost_auxent[0], - (unsigned int) (S_GET_NUMBER_AUXILIARY (debug) * AUXESZ)); - - /* Move the debug flags. */ - SF_SET_DEBUG_FIELD (normal, SF_GET_DEBUG_FIELD (debug)); -} - -static unsigned int dim_index; - -static void -obj_coff_endef (int ignore ATTRIBUTE_UNUSED) -{ - symbolS *symbolP = 0; - - dim_index = 0; - if (def_symbol_in_progress == NULL) - { - as_warn (_(".endef pseudo-op used outside of .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - /* Set the section number according to storage class. */ - switch (S_GET_STORAGE_CLASS (def_symbol_in_progress)) - { - case C_STRTAG: - case C_ENTAG: - case C_UNTAG: - SF_SET_TAG (def_symbol_in_progress); - /* Fall through. */ - - case C_FILE: - case C_TPDEF: - SF_SET_DEBUG (def_symbol_in_progress); - S_SET_SEGMENT (def_symbol_in_progress, SEG_DEBUG); - break; - - case C_EFCN: - /* Do not emit this symbol. */ - SF_SET_LOCAL (def_symbol_in_progress); - /* Fall through. */ - - case C_BLOCK: - /* Will need processing before writing. */ - SF_SET_PROCESS (def_symbol_in_progress); - /* Fall through. */ - - case C_FCN: - S_SET_SEGMENT (def_symbol_in_progress, SEG_E0); - - if (streq (S_GET_NAME (def_symbol_in_progress), ".bf")) - { - if (function_lineoff < 0) - fprintf (stderr, _("`.bf' symbol without preceding function\n")); - - SA_GET_SYM_LNNOPTR (last_line_symbol) = function_lineoff; - - SF_SET_PROCESS (last_line_symbol); - SF_SET_ADJ_LNNOPTR (last_line_symbol); - SF_SET_PROCESS (def_symbol_in_progress); - function_lineoff = -1; - } - - /* Value is always set to . */ - def_symbol_in_progress->sy_frag = frag_now; - S_SET_VALUE (def_symbol_in_progress, (valueT) frag_now_fix ()); - break; - -#ifdef C_AUTOARG - case C_AUTOARG: -#endif /* C_AUTOARG */ - case C_AUTO: - case C_REG: - case C_MOS: - case C_MOE: - case C_MOU: - case C_ARG: - case C_REGPARM: - case C_FIELD: - case C_EOS: - SF_SET_DEBUG (def_symbol_in_progress); - S_SET_SEGMENT (def_symbol_in_progress, absolute_section); - break; - - case C_EXT: - case C_WEAKEXT: -#ifdef TE_PE - case C_NT_WEAK: -#endif - case C_STAT: - case C_LABEL: - /* Valid but set somewhere else (s_comm, s_lcomm, colon). */ - break; - - case C_USTATIC: - case C_EXTDEF: - case C_ULABEL: - as_warn (_("unexpected storage class %d"), S_GET_STORAGE_CLASS (def_symbol_in_progress)); - break; - } - - /* Now that we have built a debug symbol, try to find if we should - merge with an existing symbol or not. If a symbol is C_EFCN or - absolute_section or untagged SEG_DEBUG it never merges. We also - don't merge labels, which are in a different namespace, nor - symbols which have not yet been defined since they are typically - unique, nor do we merge tags with non-tags. */ - - /* Two cases for functions. Either debug followed by definition or - definition followed by debug. For definition first, we will - merge the debug symbol into the definition. For debug first, the - lineno entry MUST point to the definition function or else it - will point off into space when crawl_symbols() merges the debug - symbol into the real symbol. Therefor, let's presume the debug - symbol is a real function reference. */ - - /* FIXME-SOON If for some reason the definition label/symbol is - never seen, this will probably leave an undefined symbol at link - time. */ - - if (S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_EFCN - || S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_LABEL - || (S_GET_SEGMENT (def_symbol_in_progress) == SEG_DEBUG - && !SF_GET_TAG (def_symbol_in_progress)) - || S_GET_SEGMENT (def_symbol_in_progress) == absolute_section - || def_symbol_in_progress->sy_value.X_op != O_constant - || (symbolP = symbol_find (S_GET_NAME (def_symbol_in_progress))) == NULL - || (SF_GET_TAG (def_symbol_in_progress) != SF_GET_TAG (symbolP))) - { - symbol_append (def_symbol_in_progress, symbol_lastP, &symbol_rootP, - &symbol_lastP); - } - else - { - /* This symbol already exists, merge the newly created symbol - into the old one. This is not mandatory. The linker can - handle duplicate symbols correctly. But I guess that it save - a *lot* of space if the assembly file defines a lot of - symbols. [loic] */ - - /* The debug entry (def_symbol_in_progress) is merged into the - previous definition. */ - - c_symbol_merge (def_symbol_in_progress, symbolP); - /* FIXME-SOON Should *def_symbol_in_progress be free'd? xoxorich. */ - def_symbol_in_progress = symbolP; - - if (SF_GET_FUNCTION (def_symbol_in_progress) - || SF_GET_TAG (def_symbol_in_progress) - || S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_STAT) - { - /* For functions, and tags, and static symbols, the symbol - *must* be where the debug symbol appears. Move the - existing symbol to the current place. */ - /* If it already is at the end of the symbol list, do nothing. */ - if (def_symbol_in_progress != symbol_lastP) - { - symbol_remove (def_symbol_in_progress, &symbol_rootP, - &symbol_lastP); - symbol_append (def_symbol_in_progress, symbol_lastP, - &symbol_rootP, &symbol_lastP); - } - } - } - - if (SF_GET_TAG (def_symbol_in_progress)) - { - symbolS *oldtag; - - oldtag = symbol_find (S_GET_NAME (def_symbol_in_progress)); - if (oldtag == NULL || ! SF_GET_TAG (oldtag)) - tag_insert (S_GET_NAME (def_symbol_in_progress), - def_symbol_in_progress); - } - - if (SF_GET_FUNCTION (def_symbol_in_progress)) - { - know (sizeof (def_symbol_in_progress) <= sizeof (long)); - function_lineoff - = c_line_new (def_symbol_in_progress, 0, 0, &zero_address_frag); - - SF_SET_PROCESS (def_symbol_in_progress); - - if (symbolP == NULL) - /* That is, if this is the first time we've seen the function. */ - symbol_table_insert (def_symbol_in_progress); - } - - def_symbol_in_progress = NULL; - demand_empty_rest_of_line (); -} - -static void -obj_coff_dim (int ignore ATTRIBUTE_UNUSED) -{ - int dim_index; - - if (def_symbol_in_progress == NULL) - { - as_warn (_(".dim pseudo-op used outside of .def/.endef: ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - - for (dim_index = 0; dim_index < DIMNUM; dim_index++) - { - SKIP_WHITESPACES (); - SA_SET_SYM_DIMEN (def_symbol_in_progress, dim_index, - get_absolute_expression ()); - - switch (*input_line_pointer) - { - case ',': - input_line_pointer++; - break; - - default: - as_warn (_("badly formed .dim directive ignored")); - /* Fall through. */ - - case '\n': - case ';': - dim_index = DIMNUM; - break; - } - } - - demand_empty_rest_of_line (); -} - -static void -obj_coff_line (int ignore ATTRIBUTE_UNUSED) -{ - int this_base; - const char *name; - - if (def_symbol_in_progress == NULL) - { - obj_coff_ln (0); - return; - } - - name = S_GET_NAME (def_symbol_in_progress); - this_base = get_absolute_expression (); - - /* Only .bf symbols indicate the use of a new base line number; the - line numbers associated with .ef, .bb, .eb are relative to the - start of the containing function. */ - if (streq (".bf", name)) - { - line_base = this_base; - -#ifndef NO_LISTING - { - extern int listing; - if (listing) - listing_source_line ((unsigned int) line_base); - } -#endif - } - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - SA_SET_SYM_LNNO (def_symbol_in_progress, this_base); - - demand_empty_rest_of_line (); -} - -static void -obj_coff_size (int ignore ATTRIBUTE_UNUSED) -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".size pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - SA_SET_SYM_SIZE (def_symbol_in_progress, get_absolute_expression ()); - demand_empty_rest_of_line (); -} - -static void -obj_coff_scl (int ignore ATTRIBUTE_UNUSED) -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".scl pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_STORAGE_CLASS (def_symbol_in_progress, get_absolute_expression ()); - demand_empty_rest_of_line (); -} - -static void -obj_coff_tag (int ignore ATTRIBUTE_UNUSED) -{ - char *symbol_name; - char name_end; - - if (def_symbol_in_progress == NULL) - { - as_warn (_(".tag pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1); - symbol_name = input_line_pointer; - name_end = get_symbol_end (); -#ifdef tc_canonicalize_symbol_name - symbol_name = tc_canonicalize_symbol_name (symbol_name); -#endif - - /* Assume that the symbol referred to by .tag is always defined. - This was a bad assumption. I've added find_or_make. xoxorich. */ - SA_SET_SYM_TAGNDX (def_symbol_in_progress, - (long) tag_find_or_make (symbol_name)); - if (SA_GET_SYM_TAGNDX (def_symbol_in_progress) == 0L) - as_warn (_("tag not found for .tag %s"), symbol_name); - - SF_SET_TAGGED (def_symbol_in_progress); - *input_line_pointer = name_end; - - demand_empty_rest_of_line (); -} - -static void -obj_coff_type (int ignore ATTRIBUTE_UNUSED) -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".type pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - S_SET_DATA_TYPE (def_symbol_in_progress, get_absolute_expression ()); - - if (ISFCN (S_GET_DATA_TYPE (def_symbol_in_progress)) && - S_GET_STORAGE_CLASS (def_symbol_in_progress) != C_TPDEF) - SF_SET_FUNCTION (def_symbol_in_progress); - - demand_empty_rest_of_line (); -} - -static void -obj_coff_val (int ignore ATTRIBUTE_UNUSED) -{ - if (def_symbol_in_progress == NULL) - { - as_warn (_(".val pseudo-op used outside of .def/.endef ignored.")); - demand_empty_rest_of_line (); - return; - } - - if (is_name_beginner (*input_line_pointer)) - { - char *symbol_name = input_line_pointer; - char name_end = get_symbol_end (); - -#ifdef tc_canonicalize_symbol_name - symbol_name = tc_canonicalize_symbol_name (symbol_name); -#endif - - if (streq (symbol_name, ".")) - { - def_symbol_in_progress->sy_frag = frag_now; - S_SET_VALUE (def_symbol_in_progress, (valueT) frag_now_fix ()); - /* If the .val is != from the .def (e.g. statics). */ - } - else if (! streq (S_GET_NAME (def_symbol_in_progress), symbol_name)) - { - def_symbol_in_progress->sy_value.X_op = O_symbol; - def_symbol_in_progress->sy_value.X_add_symbol = - symbol_find_or_make (symbol_name); - def_symbol_in_progress->sy_value.X_op_symbol = NULL; - def_symbol_in_progress->sy_value.X_add_number = 0; - - /* If the segment is undefined when the forward reference is - resolved, then copy the segment id from the forward - symbol. */ - SF_SET_GET_SEGMENT (def_symbol_in_progress); - - /* FIXME: gcc can generate address expressions here in - unusual cases (search for "obscure" in sdbout.c). We - just ignore the offset here, thus generating incorrect - debugging information. We ignore the rest of the line - just below. */ - } - /* Otherwise, it is the name of a non debug symbol and - its value will be calculated later. */ - *input_line_pointer = name_end; - - /* FIXME: this is to avoid an error message in the - FIXME case mentioned just above. */ - while (! is_end_of_line[(unsigned char) *input_line_pointer]) - ++input_line_pointer; - } - else - { - S_SET_VALUE (def_symbol_in_progress, - (valueT) get_absolute_expression ()); - } - - demand_empty_rest_of_line (); -} - -#ifdef TE_PE - -/* Handle the .linkonce pseudo-op. This is parsed by s_linkonce in - read.c, which then calls this object file format specific routine. */ - -void -obj_coff_pe_handle_link_once (enum linkonce_type type) -{ - seg_info (now_seg)->scnhdr.s_flags |= IMAGE_SCN_LNK_COMDAT; - - /* We store the type in the seg_info structure, and use it to set up - the auxiliary entry for the section symbol in c_section_symbol. */ - seg_info (now_seg)->linkonce = type; -} - -#endif /* TE_PE */ - -void -coff_obj_read_begin_hook (void) -{ - /* These had better be the same. Usually 18 bytes. */ -#ifndef BFD_HEADERS - know (sizeof (SYMENT) == sizeof (AUXENT)); - know (SYMESZ == AUXESZ); -#endif - tag_init (); -} - -/* This function runs through the symbol table and puts all the - externals onto another chain. */ - -/* The chain of globals. */ -symbolS *symbol_globalP; -symbolS *symbol_global_lastP; - -/* The chain of externals. */ -symbolS *symbol_externP; -symbolS *symbol_extern_lastP; - -stack *block_stack; -symbolS *last_functionP; -static symbolS *last_bfP; -symbolS *last_tagP; - -static unsigned int -yank_symbols (void) -{ - symbolS *symbolP; - unsigned int symbol_number = 0; - unsigned int last_file_symno = 0; - struct filename_list *filename_list_scan = filename_list_head; - - for (symbolP = symbol_rootP; - symbolP; - symbolP = symbolP ? symbol_next (symbolP) : symbol_rootP) - { - if (symbolP->sy_mri_common) - { - if (S_GET_STORAGE_CLASS (symbolP) == C_EXT -#ifdef TE_PE - || S_GET_STORAGE_CLASS (symbolP) == C_NT_WEAK -#endif - || S_GET_STORAGE_CLASS (symbolP) == C_WEAKEXT) - as_bad (_("%s: global symbols not supported in common sections"), - S_GET_NAME (symbolP)); - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - continue; - } - - if (!SF_GET_DEBUG (symbolP)) - { - /* Debug symbols do not need all this rubbish. */ - symbolS *real_symbolP; - - /* L* and C_EFCN symbols never merge. */ - if (!SF_GET_LOCAL (symbolP) - && !SF_GET_STATICS (symbolP) - && S_GET_STORAGE_CLASS (symbolP) != C_LABEL - && symbolP->sy_value.X_op == O_constant - && (real_symbolP = symbol_find (S_GET_NAME (symbolP))) - && real_symbolP != symbolP) - { - /* FIXME-SOON: where do dups come from? - Maybe tag references before definitions? xoxorich. */ - /* Move the debug data from the debug symbol to the - real symbol. Do NOT do the opposite (i.e. move from - real symbol to debug symbol and remove real symbol from the - list.) Because some pointers refer to the real symbol - whereas no pointers refer to the debug symbol. */ - c_symbol_merge (symbolP, real_symbolP); - /* Replace the current symbol by the real one. */ - /* The symbols will never be the last or the first - because : 1st symbol is .file and 3 last symbols are - .text, .data, .bss. */ - symbol_remove (real_symbolP, &symbol_rootP, &symbol_lastP); - symbol_insert (real_symbolP, symbolP, &symbol_rootP, &symbol_lastP); - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - symbolP = real_symbolP; - } - - if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_E1)) - S_SET_SEGMENT (symbolP, SEG_E0); - - resolve_symbol_value (symbolP); - - if (S_GET_STORAGE_CLASS (symbolP) == C_NULL) - { - if (!S_IS_DEFINED (symbolP) && !SF_GET_LOCAL (symbolP)) - S_SET_EXTERNAL (symbolP); - - else if (S_GET_SEGMENT (symbolP) == SEG_E0) - S_SET_STORAGE_CLASS (symbolP, C_LABEL); - - else - S_SET_STORAGE_CLASS (symbolP, C_STAT); - } - - /* Mainly to speed up if not -g. */ - if (SF_GET_PROCESS (symbolP)) - { - /* Handle the nested blocks auxiliary info. */ - if (S_GET_STORAGE_CLASS (symbolP) == C_BLOCK) - { - if (streq (S_GET_NAME (symbolP), ".bb")) - stack_push (block_stack, (char *) &symbolP); - else - { - /* .eb */ - symbolS *begin_symbolP; - - begin_symbolP = *(symbolS **) stack_pop (block_stack); - if (begin_symbolP == NULL) - as_warn (_("mismatched .eb")); - else - SA_SET_SYM_ENDNDX (begin_symbolP, symbol_number + 2); - } - } - - /* If we are able to identify the type of a function, and we - are out of a function (last_functionP == 0) then, the - function symbol will be associated with an auxiliary - entry. */ - if (last_functionP == NULL && SF_GET_FUNCTION (symbolP)) - { - last_functionP = symbolP; - - if (S_GET_NUMBER_AUXILIARY (symbolP) < 1) - S_SET_NUMBER_AUXILIARY (symbolP, 1); - } - - if (S_GET_STORAGE_CLASS (symbolP) == C_FCN) - { - if (streq (S_GET_NAME (symbolP), ".bf")) - { - if (last_bfP != NULL) - SA_SET_SYM_ENDNDX (last_bfP, symbol_number); - last_bfP = symbolP; - } - } - else if (S_GET_STORAGE_CLASS (symbolP) == C_EFCN) - { - /* I don't even know if this is needed for sdb. But - the standard assembler generates it, so... */ - if (last_functionP == NULL) - as_fatal (_("C_EFCN symbol out of scope")); - SA_SET_SYM_FSIZE (last_functionP, - (long) (S_GET_VALUE (symbolP) - - S_GET_VALUE (last_functionP))); - SA_SET_SYM_ENDNDX (last_functionP, symbol_number); - last_functionP = NULL; - } - } - } - else if (SF_GET_TAG (symbolP)) - /* First descriptor of a structure must point to - the first slot after the structure description. */ - last_tagP = symbolP; - - else if (S_GET_STORAGE_CLASS (symbolP) == C_EOS) - /* +2 take in account the current symbol. */ - SA_SET_SYM_ENDNDX (last_tagP, symbol_number + 2); - - else if (S_GET_STORAGE_CLASS (symbolP) == C_FILE) - { - /* If the filename was too long to fit in the - auxent, put it in the string table. */ - if (SA_GET_FILE_FNAME_ZEROS (symbolP) == 0 - && SA_GET_FILE_FNAME_OFFSET (symbolP) != 0) - { - SA_SET_FILE_FNAME_OFFSET (symbolP, string_byte_count); - string_byte_count += strlen (filename_list_scan->filename) + 1; - filename_list_scan = filename_list_scan->next; - } - if (S_GET_VALUE (symbolP)) - { - S_SET_VALUE (symbolP, last_file_symno); - last_file_symno = symbol_number; - } - } - -#ifdef tc_frob_coff_symbol - tc_frob_coff_symbol (symbolP); -#endif - - /* We must put the external symbols apart. The loader - does not bomb if we do not. But the references in - the endndx field for a .bb symbol are not corrected - if an external symbol is removed between .bb and .be. - I.e in the following case : - [20] .bb endndx = 22 - [21] foo external - [22] .be - ld will move the symbol 21 to the end of the list but - endndx will still be 22 instead of 21. */ - - if (SF_GET_LOCAL (symbolP)) - /* Remove C_EFCN and LOCAL (L...) symbols. */ - /* Next pointer remains valid. */ - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - - else if (symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (symbolP) || S_IS_COMMON (symbolP))) - /* Skip symbols which were equated to undefined or common - symbols. */ - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - - else if (!S_IS_DEFINED (symbolP) - && !S_IS_DEBUG (symbolP) - && !SF_GET_STATICS (symbolP) - && (S_GET_STORAGE_CLASS (symbolP) == C_EXT -#ifdef TE_PE - || S_GET_STORAGE_CLASS (symbolP) == C_NT_WEAK -#endif - || S_GET_STORAGE_CLASS (symbolP) == C_WEAKEXT)) - { - /* If external, Remove from the list. */ - symbolS *hold = symbol_previous (symbolP); - - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - symbol_clear_list_pointers (symbolP); - symbol_append (symbolP, symbol_extern_lastP, &symbol_externP, &symbol_extern_lastP); - symbolP = hold; - } - else if (! S_IS_DEBUG (symbolP) - && ! SF_GET_STATICS (symbolP) - && ! SF_GET_FUNCTION (symbolP) - && (S_GET_STORAGE_CLASS (symbolP) == C_EXT -#ifdef TE_PE - || S_GET_STORAGE_CLASS (symbolP) == C_NT_WEAK -#endif - || S_GET_STORAGE_CLASS (symbolP) == C_NT_WEAK)) - { - symbolS *hold = symbol_previous (symbolP); - - /* The O'Reilly COFF book says that defined global symbols - come at the end of the symbol table, just before - undefined global symbols. */ - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - symbol_clear_list_pointers (symbolP); - symbol_append (symbolP, symbol_global_lastP, &symbol_globalP, - &symbol_global_lastP); - symbolP = hold; - } - else - { - if (SF_GET_STRING (symbolP)) - { - symbolP->sy_name_offset = string_byte_count; - string_byte_count += strlen (S_GET_NAME (symbolP)) + 1; - } - else - symbolP->sy_name_offset = 0; - - symbolP->sy_number = symbol_number; - symbol_number += 1 + S_GET_NUMBER_AUXILIARY (symbolP); - } - } - - return symbol_number; -} - -static unsigned int -glue_symbols (symbolS **head, symbolS **tail) -{ - unsigned int symbol_number = 0; - - while (*head != NULL) - { - symbolS *tmp = *head; - - /* Append. */ - symbol_remove (tmp, head, tail); - symbol_append (tmp, symbol_lastP, &symbol_rootP, &symbol_lastP); - - /* Process. */ - if (SF_GET_STRING (tmp)) - { - tmp->sy_name_offset = string_byte_count; - string_byte_count += strlen (S_GET_NAME (tmp)) + 1; - } - else - /* Fix "long" names. */ - tmp->sy_name_offset = 0; - - tmp->sy_number = symbol_number; - symbol_number += 1 + S_GET_NUMBER_AUXILIARY (tmp); - } - - return symbol_number; -} - -static unsigned int -tie_tags (void) -{ - unsigned int symbol_number = 0; - symbolS *symbolP; - - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - symbolP->sy_number = symbol_number; - - if (SF_GET_TAGGED (symbolP)) - { - SA_SET_SYM_TAGNDX - (symbolP, - ((symbolS *) SA_GET_SYM_TAGNDX (symbolP))->sy_number); - } - - symbol_number += 1 + S_GET_NUMBER_AUXILIARY (symbolP); - } - - return symbol_number; -} - - -/* Build a 'section static' symbol. */ - -static symbolS * -c_section_symbol (char *name, int idx) -{ - symbolS *symbolP; - - symbolP = symbol_find (name); - if (symbolP == NULL) - symbolP = symbol_new (name, idx, 0, &zero_address_frag); - else - { - /* Mmmm. I just love violating interfaces. Makes me feel...dirty. */ - S_SET_SEGMENT (symbolP, idx); - symbolP->sy_frag = &zero_address_frag; - } - - S_SET_STORAGE_CLASS (symbolP, C_STAT); - S_SET_NUMBER_AUXILIARY (symbolP, 1); - - SF_SET_STATICS (symbolP); - -#ifdef TE_DELTA - /* manfred@s-direktnet.de: section symbols *must* have the LOCAL bit cleared, - which is set by the new definition of LOCAL_LABEL in tc-m68k.h. */ - SF_CLEAR_LOCAL (symbolP); -#endif -#ifdef TE_PE - /* If the .linkonce pseudo-op was used for this section, we must - store the information in the auxiliary entry for the section - symbol. */ - if (segment_info[idx].linkonce != LINKONCE_UNSET) - { - int type; - - switch (segment_info[idx].linkonce) - { - default: - abort (); - case LINKONCE_DISCARD: - type = IMAGE_COMDAT_SELECT_ANY; - break; - case LINKONCE_ONE_ONLY: - type = IMAGE_COMDAT_SELECT_NODUPLICATES; - break; - case LINKONCE_SAME_SIZE: - type = IMAGE_COMDAT_SELECT_SAME_SIZE; - break; - case LINKONCE_SAME_CONTENTS: - type = IMAGE_COMDAT_SELECT_EXACT_MATCH; - break; - } - - SYM_AUXENT (symbolP)->x_scn.x_comdat = type; - } -#endif /* TE_PE */ - - return symbolP; -} - -static void -crawl_symbols (object_headers *h, bfd *abfd ATTRIBUTE_UNUSED) -{ - unsigned int i; - - /* Initialize the stack used to keep track of the matching .bb .be. */ - block_stack = stack_init (512, sizeof (symbolS *)); - - /* The symbol list should be ordered according to the following sequence - order : - . .file symbol - . debug entries for functions - . fake symbols for the sections, including .text .data and .bss - . defined symbols - . undefined symbols - But this is not mandatory. The only important point is to put the - undefined symbols at the end of the list. */ - - /* Is there a .file symbol ? If not insert one at the beginning. */ - if (symbol_rootP == NULL - || S_GET_STORAGE_CLASS (symbol_rootP) != C_FILE) - c_dot_file_symbol ("fake", 0); - - /* Build up static symbols for the sections, they are filled in later. */ - for (i = SEG_E0; i < SEG_LAST; i++) - if (segment_info[i].scnhdr.s_name[0]) - segment_info[i].dot = c_section_symbol ((char *) segment_info[i].name, - i - SEG_E0 + 1); - - /* Take all the externals out and put them into another chain. */ - H_SET_SYMBOL_TABLE_SIZE (h, yank_symbols ()); - /* Take the externals and glue them onto the end. */ - H_SET_SYMBOL_TABLE_SIZE (h, - (H_GET_SYMBOL_COUNT (h) - + glue_symbols (&symbol_globalP, - &symbol_global_lastP) - + glue_symbols (&symbol_externP, - &symbol_extern_lastP))); - - H_SET_SYMBOL_TABLE_SIZE (h, tie_tags ()); - know (symbol_globalP == NULL); - know (symbol_global_lastP == NULL); - know (symbol_externP == NULL); - know (symbol_extern_lastP == NULL); -} - -/* Find strings by crawling along symbol table chain. */ - -static void -w_strings (char *where) -{ - symbolS *symbolP; - struct filename_list *filename_list_scan = filename_list_head; - - /* Gotta do md_ byte-ordering stuff for string_byte_count first - KWK. */ - md_number_to_chars (where, (valueT) string_byte_count, 4); - where += 4; - -#ifdef COFF_LONG_SECTION_NAMES - /* Support long section names as found in PE. This code must - coordinate with that in coff_header_append and write_object_file. */ - { - unsigned int i; - - for (i = SEG_E0; i < SEG_LAST; i++) - { - if (segment_info[i].scnhdr.s_name[0] - && strlen (segment_info[i].name) > SCNNMLEN) - { - unsigned int size; - - size = strlen (segment_info[i].name) + 1; - memcpy (where, segment_info[i].name, size); - where += size; - } - } - } -#endif /* COFF_LONG_SECTION_NAMES */ - - for (symbolP = symbol_rootP; - symbolP; - symbolP = symbol_next (symbolP)) - { - unsigned int size; - - if (SF_GET_STRING (symbolP)) - { - size = strlen (S_GET_NAME (symbolP)) + 1; - memcpy (where, S_GET_NAME (symbolP), size); - where += size; - } - if (S_GET_STORAGE_CLASS (symbolP) == C_FILE - && SA_GET_FILE_FNAME_ZEROS (symbolP) == 0 - && SA_GET_FILE_FNAME_OFFSET (symbolP) != 0) - { - size = strlen (filename_list_scan->filename) + 1; - memcpy (where, filename_list_scan->filename, size); - filename_list_scan = filename_list_scan ->next; - where += size; - } - } -} - -static void -do_linenos_for (bfd * abfd, - object_headers * h, - unsigned long *file_cursor) -{ - unsigned int idx; - unsigned long start = *file_cursor; - - for (idx = SEG_E0; idx < SEG_LAST; idx++) - { - segment_info_type *s = segment_info + idx; - - if (s->scnhdr.s_nlnno != 0) - { - struct lineno_list *line_ptr; - struct external_lineno *buffer = xmalloc (s->scnhdr.s_nlnno * LINESZ); - struct external_lineno *dst = buffer; - - /* Run through the table we've built and turn it into its external - form, take this chance to remove duplicates. */ - - for (line_ptr = s->lineno_list_head; - line_ptr != (struct lineno_list *) NULL; - line_ptr = line_ptr->next) - { - if (line_ptr->line.l_lnno == 0) - { - /* Turn a pointer to a symbol into the symbols' index, - provided that it has been initialised. */ - if (line_ptr->line.l_addr.l_symndx) - line_ptr->line.l_addr.l_symndx = - ((symbolS *) line_ptr->line.l_addr.l_symndx)->sy_number; - } - else - line_ptr->line.l_addr.l_paddr += ((struct frag *) (line_ptr->frag))->fr_address; - - (void) bfd_coff_swap_lineno_out (abfd, &(line_ptr->line), dst); - dst++; - } - - s->scnhdr.s_lnnoptr = *file_cursor; - - bfd_bwrite (buffer, (bfd_size_type) s->scnhdr.s_nlnno * LINESZ, abfd); - free (buffer); - - *file_cursor += s->scnhdr.s_nlnno * LINESZ; - } - } - - H_SET_LINENO_SIZE (h, *file_cursor - start); -} - -/* Now we run through the list of frag chains in a segment and - make all the subsegment frags appear at the end of the - list, as if the seg 0 was extra long. */ - -static void -remove_subsegs (void) -{ - unsigned int i; - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - frchainS *head = segment_info[i].frchainP; - fragS dummy; - fragS *prev_frag = &dummy; - - while (head && head->frch_seg == i) - { - prev_frag->fr_next = head->frch_root; - prev_frag = head->frch_last; - head = head->frch_next; - } - prev_frag->fr_next = 0; - } -} - -unsigned long machine; -int coff_flags; - -#ifndef SUB_SEGMENT_ALIGN -#ifdef HANDLE_ALIGN -/* The last subsegment gets an alignment corresponding to the alignment - of the section. This allows proper nop-filling at the end of - code-bearing sections. */ -#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ - (!(FRCHAIN)->frch_next || (FRCHAIN)->frch_next->frch_seg != (SEG) \ - ? get_recorded_alignment (SEG) : 0) -#else -#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 1 -#endif -#endif - -static void -w_symbols (bfd * abfd, char *where, symbolS * symbol_rootP) -{ - symbolS *symbolP; - unsigned int i; - - /* First fill in those values we have only just worked out. */ - for (i = SEG_E0; i < SEG_LAST; i++) - { - symbolP = segment_info[i].dot; - if (symbolP) - { - SA_SET_SCN_SCNLEN (symbolP, segment_info[i].scnhdr.s_size); - SA_SET_SCN_NRELOC (symbolP, segment_info[i].scnhdr.s_nreloc); - SA_SET_SCN_NLINNO (symbolP, segment_info[i].scnhdr.s_nlnno); - } - } - - /* Emit all symbols left in the symbol chain. */ - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { - /* Used to save the offset of the name. It is used to point - to the string in memory but must be a file offset. */ - char *temp; - - /* We can't fix the lnnoptr field in yank_symbols with the other - adjustments, because we have to wait until we know where they - go in the file. */ - if (SF_GET_ADJ_LNNOPTR (symbolP)) - SA_GET_SYM_LNNOPTR (symbolP) += - segment_info[S_GET_SEGMENT (symbolP)].scnhdr.s_lnnoptr; - - tc_coff_symbol_emit_hook (symbolP); - - temp = S_GET_NAME (symbolP); - if (SF_GET_STRING (symbolP)) - { - S_SET_OFFSET (symbolP, symbolP->sy_name_offset); - S_SET_ZEROES (symbolP, 0); - } - else - { - memset (symbolP->sy_symbol.ost_entry.n_name, 0, SYMNMLEN); - strncpy (symbolP->sy_symbol.ost_entry.n_name, temp, SYMNMLEN); - } - where = symbol_to_chars (abfd, where, symbolP); - S_SET_NAME (symbolP, temp); - } -} - -static void -fixup_mdeps (fragS *frags, - object_headers *h ATTRIBUTE_UNUSED, - segT this_segment) -{ - subseg_change (this_segment, 0); - - while (frags) - { - switch (frags->fr_type) - { - case rs_align: - case rs_align_code: - case rs_align_test: - case rs_org: -#ifdef HANDLE_ALIGN - HANDLE_ALIGN (frags); -#endif - frags->fr_type = rs_fill; - frags->fr_offset = - ((frags->fr_next->fr_address - frags->fr_address - frags->fr_fix) - / frags->fr_var); - break; - case rs_machine_dependent: - md_convert_frag (h, this_segment, frags); - frag_wane (frags); - break; - default: - ; - } - frags = frags->fr_next; - } -} - -#ifndef TC_FORCE_RELOCATION -#define TC_FORCE_RELOCATION(fix) 0 -#endif - -static void -fixup_segment (segment_info_type * segP, segT this_segment_type) -{ - fixS * fixP; - symbolS *add_symbolP; - symbolS *sub_symbolP; - long add_number; - int size; - char *place; - long where; - char pcrel; - fragS *fragP; - segT add_symbol_segment = absolute_section; - - for (fixP = segP->fix_root; fixP; fixP = fixP->fx_next) - { - fragP = fixP->fx_frag; - know (fragP); - where = fixP->fx_where; - place = fragP->fr_literal + where; - size = fixP->fx_size; - add_symbolP = fixP->fx_addsy; - sub_symbolP = fixP->fx_subsy; - add_number = fixP->fx_offset; - pcrel = fixP->fx_pcrel; - - /* We want function-relative stabs to work on systems which - may use a relaxing linker; thus we must handle the sym1-sym2 - fixups function-relative stabs generates. - - Of course, if you actually enable relaxing in the linker, the - line and block scoping information is going to be incorrect - in some cases. The only way to really fix this is to support - a reloc involving the difference of two symbols. */ - if (linkrelax - && (!sub_symbolP || pcrel)) - continue; - -#ifdef TC_I960 - if (fixP->fx_tcbit && SF_GET_CALLNAME (add_symbolP)) - { - /* Relocation should be done via the associated 'bal' entry - point symbol. */ - if (!SF_GET_BALNAME (tc_get_bal_of_call (add_symbolP))) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("No 'bal' entry point for leafproc %s"), - S_GET_NAME (add_symbolP)); - continue; - } - fixP->fx_addsy = add_symbolP = tc_get_bal_of_call (add_symbolP); - } -#endif - - /* Make sure the symbols have been resolved; this may not have - happened if these are expression symbols. */ - if (add_symbolP != NULL && ! add_symbolP->sy_resolved) - resolve_symbol_value (add_symbolP); - - if (add_symbolP != NULL) - { - /* If this fixup is against a symbol which has been equated - to another symbol, convert it to the other symbol. */ - if (add_symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (add_symbolP) - || S_IS_COMMON (add_symbolP))) - { - while (add_symbolP->sy_value.X_op == O_symbol - && (! S_IS_DEFINED (add_symbolP) - || S_IS_COMMON (add_symbolP))) - { - symbolS *n; - - /* We must avoid looping, as that can occur with a - badly written program. */ - n = add_symbolP->sy_value.X_add_symbol; - if (n == add_symbolP) - break; - add_number += add_symbolP->sy_value.X_add_number; - add_symbolP = n; - } - fixP->fx_addsy = add_symbolP; - fixP->fx_offset = add_number; - } - } - - if (sub_symbolP != NULL && ! sub_symbolP->sy_resolved) - resolve_symbol_value (sub_symbolP); - - if (add_symbolP != NULL - && add_symbolP->sy_mri_common) - { - add_number += S_GET_VALUE (add_symbolP); - fixP->fx_offset = add_number; - add_symbolP = fixP->fx_addsy = add_symbolP->sy_value.X_add_symbol; - } - - if (add_symbolP) - add_symbol_segment = S_GET_SEGMENT (add_symbolP); - - if (sub_symbolP) - { - if (add_symbolP == NULL || add_symbol_segment == absolute_section) - { - if (add_symbolP != NULL) - { - add_number += S_GET_VALUE (add_symbolP); - add_symbolP = NULL; - fixP->fx_addsy = NULL; - } - - /* It's just -sym. */ - if (S_GET_SEGMENT (sub_symbolP) == absolute_section) - { - add_number -= S_GET_VALUE (sub_symbolP); - fixP->fx_subsy = 0; - fixP->fx_done = 1; - } - else - { -#ifndef TC_M68K - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Negative of non-absolute symbol %s"), - S_GET_NAME (sub_symbolP)); -#endif - add_number -= S_GET_VALUE (sub_symbolP); - } /* not absolute */ - - /* If sub_symbol is in the same segment that add_symbol - and add_symbol is either in DATA, TEXT, BSS or ABSOLUTE. */ - } - else if (S_GET_SEGMENT (sub_symbolP) == add_symbol_segment - && SEG_NORMAL (add_symbol_segment)) - { - /* Difference of 2 symbols from same segment. Can't - make difference of 2 undefineds: 'value' means - something different for N_UNDF. */ -#ifdef TC_I960 - /* Makes no sense to use the difference of 2 arbitrary symbols - as the target of a call instruction. */ - if (fixP->fx_tcbit) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("callj to difference of 2 symbols")); -#endif /* TC_I960 */ - add_number += S_GET_VALUE (add_symbolP) - - S_GET_VALUE (sub_symbolP); - add_symbolP = NULL; - - if (!TC_FORCE_RELOCATION (fixP)) - { - fixP->fx_addsy = NULL; - fixP->fx_subsy = NULL; - fixP->fx_done = 1; -#ifdef TC_M68K /* FIXME: Is this right? */ - pcrel = 0; - fixP->fx_pcrel = 0; -#endif - } - } - else - { - /* Different segments in subtraction. */ - know (!(S_IS_EXTERNAL (sub_symbolP) && (S_GET_SEGMENT (sub_symbolP) == absolute_section))); - - if ((S_GET_SEGMENT (sub_symbolP) == absolute_section)) - add_number -= S_GET_VALUE (sub_symbolP); - -#ifdef DIFF_EXPR_OK - else if (S_GET_SEGMENT (sub_symbolP) == this_segment_type) - { - /* Make it pc-relative. */ - add_number += (md_pcrel_from (fixP) - - S_GET_VALUE (sub_symbolP)); - pcrel = 1; - fixP->fx_pcrel = 1; - sub_symbolP = 0; - fixP->fx_subsy = 0; - } -#endif - else - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld."), - segment_name (S_GET_SEGMENT (sub_symbolP)), - S_GET_NAME (sub_symbolP), - (long) (fragP->fr_address + where)); - } - } - } - - if (add_symbolP) - { - if (add_symbol_segment == this_segment_type && pcrel) - { - /* This fixup was made when the symbol's segment was - SEG_UNKNOWN, but it is now in the local segment. - So we know how to do the address without relocation. */ -#ifdef TC_I960 - /* reloc_callj() may replace a 'call' with a 'calls' or a 'bal', - in which cases it modifies *fixP as appropriate. In the case - of a 'calls', no further work is required, and *fixP has been - set up to make the rest of the code below a no-op. */ - reloc_callj (fixP); -#endif - - add_number += S_GET_VALUE (add_symbolP); - add_number -= md_pcrel_from (fixP); - - /* We used to do - add_number -= segP->scnhdr.s_vaddr; - if defined (TC_I386) || defined (TE_LYNX). I now - think that was an error propagated from the case when - we are going to emit the relocation. If we are not - going to emit the relocation, then we just want to - set add_number to the difference between the symbols. - This is a case that would only arise when there is a - PC relative reference from a section other than .text - to a symbol defined in the same section, and the - reference is not relaxed. Since jump instructions on - the i386 are relaxed, this could only arise with a - call instruction. */ - - /* Lie. Don't want further pcrel processing. */ - pcrel = 0; - if (!TC_FORCE_RELOCATION (fixP)) - { - fixP->fx_addsy = NULL; - fixP->fx_done = 1; - } - } - else - { - switch (add_symbol_segment) - { - case absolute_section: -#ifdef TC_I960 - /* See comment about reloc_callj() above. */ - reloc_callj (fixP); -#endif /* TC_I960 */ - add_number += S_GET_VALUE (add_symbolP); - add_symbolP = NULL; - - if (!TC_FORCE_RELOCATION (fixP)) - { - fixP->fx_addsy = NULL; - fixP->fx_done = 1; - } - break; - default: - -#if defined(TC_A29K) || (defined(TE_PE) && defined(TC_I386)) || defined(TC_M88K) || defined(TC_OR32) - /* This really should be handled in the linker, but - backward compatibility forbids. */ - add_number += S_GET_VALUE (add_symbolP); -#else - add_number += S_GET_VALUE (add_symbolP) + - segment_info[S_GET_SEGMENT (add_symbolP)].scnhdr.s_paddr; -#endif - break; - - case SEG_UNKNOWN: -#ifdef TC_I960 - if ((int) fixP->fx_bit_fixP == 13) - { - /* This is a COBR instruction. They have only a - 13-bit displacement and are only to be used - for local branches: flag as error, don't generate - relocation. */ - as_bad_where (fixP->fx_file, fixP->fx_line, - _("can't use COBR format with external label")); - fixP->fx_addsy = NULL; - fixP->fx_done = 1; - continue; - } -#endif /* TC_I960 */ -#if ((defined (TC_I386) || defined (TE_LYNX) || defined (TE_AUX)) && !defined(TE_PE)) || defined (COFF_COMMON_ADDEND) - /* 386 COFF uses a peculiar format in which the - value of a common symbol is stored in the .text - segment (I've checked this on SVR3.2 and SCO - 3.2.2) Ian Taylor . */ - /* This is also true for 68k COFF on sysv machines - (Checked on Motorola sysv68 R3V6 and R3V7.1, and also on - UNIX System V/M68000, Release 1.0 from ATT/Bell Labs) - Philippe De Muyter . */ - if (S_IS_COMMON (add_symbolP)) - add_number += S_GET_VALUE (add_symbolP); -#endif - break; - - } - } - } - - if (pcrel) - { -#if !defined(TC_M88K) && !(defined(TE_PE) && defined(TC_I386)) && !defined(TC_A29K) && !defined(TC_OR32) - /* This adjustment is not correct on the m88k, for which the - linker does all the computation. */ - add_number -= md_pcrel_from (fixP); -#endif - if (add_symbolP == 0) - fixP->fx_addsy = &abs_symbol; -#if defined (TC_I386) || defined (TE_LYNX) || defined (TC_I960) || defined (TC_M68K) - /* On the 386 we must adjust by the segment vaddr as well. - Ian Taylor. - - I changed the i960 to work this way as well. This is - compatible with the current GNU linker behaviour. I do - not know what other i960 COFF assemblers do. This is not - a common case: normally, only assembler code will contain - a PC relative reloc, and only branches which do not - originate in the .text section will have a non-zero - address. - - I changed the m68k to work this way as well. This will - break existing PC relative relocs from sections which do - not start at address 0, but it will make ld -r work. - Ian Taylor, 4 Oct 96. */ - - add_number -= segP->scnhdr.s_vaddr; -#endif - } - - md_apply_fix (fixP, (valueT *) & add_number, this_segment_type); - - if (!fixP->fx_bit_fixP && ! fixP->fx_no_overflow) - { -#ifndef TC_M88K - /* The m88k uses the offset field of the reloc to get around - this problem. */ - if ((size == 1 - && ((add_number & ~0xFF) - || (fixP->fx_signed && (add_number & 0x80))) - && ((add_number & ~0xFF) != (-1 & ~0xFF) - || (add_number & 0x80) == 0)) - || (size == 2 - && ((add_number & ~0xFFFF) - || (fixP->fx_signed && (add_number & 0x8000))) - && ((add_number & ~0xFFFF) != (-1 & ~0xFFFF) - || (add_number & 0x8000) == 0))) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Value of %ld too large for field of %d bytes at 0x%lx"), - (long) add_number, size, - (unsigned long) (fragP->fr_address + where)); - } -#endif -#ifdef WARN_SIGNED_OVERFLOW_WORD - /* Warn if a .word value is too large when treated as a - signed number. We already know it is not too negative. - This is to catch over-large switches generated by gcc on - the 68k. */ - if (!flag_signed_overflow_ok - && size == 2 - && add_number > 0x7fff) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Signed .word overflow; switch may be too large; %ld at 0x%lx"), - (long) add_number, - (unsigned long) (fragP->fr_address + where)); -#endif - } - } -} - -/* Fill in the counts in the first entry in a .stab section. */ - -static void -adjust_stab_section (bfd *abfd, segT seg) -{ - segT stabstrseg = SEG_UNKNOWN; - const char *secname, *name2; - char *name; - char *p = NULL; - int i, strsz = 0, nsyms; - fragS *frag = segment_info[seg].frchainP->frch_root; - - /* Look for the associated string table section. */ - - secname = segment_info[seg].name; - name = alloca (strlen (secname) + 4); - strcpy (name, secname); - strcat (name, "str"); - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - name2 = segment_info[i].name; - if (name2 != NULL && strneq (name2, name, 8)) - { - stabstrseg = i; - break; - } - } - - /* If we found the section, get its size. */ - if (stabstrseg != SEG_UNKNOWN) - strsz = size_section (abfd, stabstrseg); - - nsyms = size_section (abfd, seg) / 12 - 1; - - /* Look for the first frag of sufficient size for the initial stab - symbol, and collect a pointer to it. */ - while (frag && frag->fr_fix < 12) - frag = frag->fr_next; - assert (frag != 0); - p = frag->fr_literal; - assert (p != 0); - - /* Write in the number of stab symbols and the size of the string - table. */ - bfd_h_put_16 (abfd, (bfd_vma) nsyms, (bfd_byte *) p + 6); - bfd_h_put_32 (abfd, (bfd_vma) strsz, (bfd_byte *) p + 8); -} - -void -write_object_file (void) -{ - int i; - const char *name; - struct frchain *frchain_ptr; - object_headers headers; - unsigned long file_cursor; - bfd *abfd; - unsigned int addr; - abfd = bfd_openw (out_file_name, TARGET_FORMAT); - - if (abfd == 0) - { - as_perror (_("FATAL: Can't create %s"), out_file_name); - exit (EXIT_FAILURE); - } - bfd_set_format (abfd, bfd_object); - bfd_set_arch_mach (abfd, BFD_ARCH, machine); - - string_byte_count = 4; - - /* Run through all the sub-segments and align them up. Also - close any open frags. We tack a .fill onto the end of the - frag chain so that any .align's size can be worked by looking - at the next frag. */ - for (frchain_ptr = frchain_root; - frchain_ptr != (struct frchain *) NULL; - frchain_ptr = frchain_ptr->frch_next) - { - int alignment; - - subseg_set (frchain_ptr->frch_seg, frchain_ptr->frch_subseg); - - alignment = SUB_SEGMENT_ALIGN (now_seg, frchain_ptr); - -#ifdef md_do_align - md_do_align (alignment, NULL, 0, 0, alignment_done); -#endif - if (subseg_text_p (now_seg)) - frag_align_code (alignment, 0); - else - frag_align (alignment, 0, 0); - -#ifdef md_do_align - alignment_done: -#endif - - frag_wane (frag_now); - frag_now->fr_fix = 0; - know (frag_now->fr_next == NULL); - } - - remove_subsegs (); - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - relax_segment (segment_info[i].frchainP->frch_root, i); - - /* Relaxation has completed. Freeze all syms. */ - finalize_syms = 1; - - H_SET_NUMBER_OF_SECTIONS (&headers, 0); - - /* Find out how big the sections are, and set the addresses. */ - addr = 0; - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - long size; - - segment_info[i].scnhdr.s_paddr = addr; - segment_info[i].scnhdr.s_vaddr = addr; - - if (segment_info[i].scnhdr.s_name[0]) - { - H_SET_NUMBER_OF_SECTIONS (&headers, - H_GET_NUMBER_OF_SECTIONS (&headers) + 1); - -#ifdef COFF_LONG_SECTION_NAMES - /* Support long section names as found in PE. This code - must coordinate with that in coff_header_append and - w_strings. */ - { - unsigned int len; - - len = strlen (segment_info[i].name); - if (len > SCNNMLEN) - string_byte_count += len + 1; - } -#endif /* COFF_LONG_SECTION_NAMES */ - } - - size = size_section (abfd, (unsigned int) i); - addr += size; - - /* I think the section alignment is only used on the i960; the - i960 needs it, and it should do no harm on other targets. */ -#ifdef ALIGNMENT_IN_S_FLAGS - segment_info[i].scnhdr.s_flags |= (section_alignment[i] & 0xF) << 8; -#else - segment_info[i].scnhdr.s_align = 1 << section_alignment[i]; -#endif - - if (i == SEG_E0) - H_SET_TEXT_SIZE (&headers, size); - else if (i == SEG_E1) - H_SET_DATA_SIZE (&headers, size); - else if (i == SEG_E2) - H_SET_BSS_SIZE (&headers, size); - } - - /* Turn the gas native symbol table shape into a coff symbol table. */ - crawl_symbols (&headers, abfd); - - if (string_byte_count == 4) - string_byte_count = 0; - - H_SET_STRING_SIZE (&headers, string_byte_count); - -#ifdef tc_frob_file - tc_frob_file (); -#endif - - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - fixup_mdeps (segment_info[i].frchainP->frch_root, &headers, i); - fixup_segment (&segment_info[i], i); - } - - /* Look for ".stab" segments and fill in their initial symbols - correctly. */ - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - name = segment_info[i].name; - - if (name != NULL - && strneq (".stab", name, 5) - && ! strneq (".stabstr", name, 8)) - adjust_stab_section (abfd, i); - } - - file_cursor = H_GET_TEXT_FILE_OFFSET (&headers); - - bfd_seek (abfd, (file_ptr) file_cursor, 0); - - /* Plant the data. */ - fill_section (abfd, &headers, &file_cursor); - - do_relocs_for (abfd, &headers, &file_cursor); - - do_linenos_for (abfd, &headers, &file_cursor); - - H_SET_FILE_MAGIC_NUMBER (&headers, COFF_MAGIC); -#ifndef OBJ_COFF_OMIT_TIMESTAMP - H_SET_TIME_STAMP (&headers, (long) time (NULL)); -#else - H_SET_TIME_STAMP (&headers, 0); -#endif -#ifdef TC_COFF_SET_MACHINE - TC_COFF_SET_MACHINE (&headers); -#endif - -#ifndef COFF_FLAGS -#define COFF_FLAGS 0 -#endif - -#ifdef KEEP_RELOC_INFO - H_SET_FLAGS (&headers, ((H_GET_LINENO_SIZE (&headers) ? 0 : F_LNNO) | - COFF_FLAGS | coff_flags)); -#else - H_SET_FLAGS (&headers, ((H_GET_LINENO_SIZE (&headers) ? 0 : F_LNNO) | - (H_GET_RELOCATION_SIZE (&headers) ? 0 : F_RELFLG) | - COFF_FLAGS | coff_flags)); -#endif - - { - unsigned int symtable_size = H_GET_SYMBOL_TABLE_SIZE (&headers); - char *buffer1 = xmalloc (symtable_size + string_byte_count + 1); - - H_SET_SYMBOL_TABLE_POINTER (&headers, bfd_tell (abfd)); - w_symbols (abfd, buffer1, symbol_rootP); - if (string_byte_count > 0) - w_strings (buffer1 + symtable_size); - bfd_bwrite (buffer1, (bfd_size_type) symtable_size + string_byte_count, - abfd); - free (buffer1); - } - - coff_header_append (abfd, &headers); - - { - extern bfd *stdoutput; - stdoutput = abfd; - } -} - -/* Add a new segment. This is called from subseg_new via the - obj_new_segment macro. */ - -segT -obj_coff_add_segment (const char *name) -{ - unsigned int i; - -#ifndef COFF_LONG_SECTION_NAMES - char buf[SCNNMLEN + 1]; - - strncpy (buf, name, SCNNMLEN); - buf[SCNNMLEN] = '\0'; - name = buf; -#endif - - for (i = SEG_E0; i < SEG_LAST && segment_info[i].scnhdr.s_name[0]; i++) - if (streq (name, segment_info[i].name)) - return (segT) i; - - if (i == SEG_LAST) - { - as_bad (_("Too many new sections; can't add \"%s\""), name); - return now_seg; - } - - /* Add a new section. */ - strncpy (segment_info[i].scnhdr.s_name, name, - sizeof (segment_info[i].scnhdr.s_name)); - segment_info[i].scnhdr.s_flags = STYP_REG; - segment_info[i].name = xstrdup (name); - - return (segT) i; -} - -/* Implement the .section pseudo op: - .section name {, "flags"} - ^ ^ - | +--- optional flags: 'b' for bss - | 'i' for info - +-- section name 'l' for lib - 'n' for noload - 'o' for over - 'w' for data - 'd' (apparently m88k for data) - 'x' for text - 'r' for read-only data - But if the argument is not a quoted string, treat it as a - subsegment number. */ - -void -obj_coff_section (int ignore ATTRIBUTE_UNUSED) -{ - /* Strip out the section name. */ - char *section_name, *name; - char c; - unsigned int exp; - long flags; - - if (flag_mri) - { - char type; - - s_mri_sect (&type); - flags = 0; - if (type == 'C') - flags = STYP_TEXT; - else if (type == 'D') - flags = STYP_DATA; - segment_info[now_seg].scnhdr.s_flags |= flags; - - return; - } - - section_name = input_line_pointer; - c = get_symbol_end (); - - name = xmalloc (input_line_pointer - section_name + 1); - strcpy (name, section_name); - - *input_line_pointer = c; - - exp = 0; - flags = 0; - - SKIP_WHITESPACE (); - if (*input_line_pointer == ',') - { - ++input_line_pointer; - SKIP_WHITESPACE (); - - if (*input_line_pointer != '"') - exp = get_absolute_expression (); - else - { - ++input_line_pointer; - while (*input_line_pointer != '"' - && ! is_end_of_line[(unsigned char) *input_line_pointer]) - { - switch (*input_line_pointer) - { - case 'b': flags |= STYP_BSS; break; - case 'i': flags |= STYP_INFO; break; - case 'l': flags |= STYP_LIB; break; - case 'n': flags |= STYP_NOLOAD; break; - case 'o': flags |= STYP_OVER; break; - case 'd': - case 'w': flags |= STYP_DATA; break; - case 'x': flags |= STYP_TEXT; break; - case 'r': flags |= STYP_LIT; break; - default: - as_warn (_("unknown section attribute '%c'"), - *input_line_pointer); - break; - } - ++input_line_pointer; - } - if (*input_line_pointer == '"') - ++input_line_pointer; - } - } - - subseg_new (name, (subsegT) exp); - - segment_info[now_seg].scnhdr.s_flags |= flags; - - demand_empty_rest_of_line (); -} - -static void -obj_coff_text (int ignore ATTRIBUTE_UNUSED) -{ - subseg_new (".text", get_absolute_expression ()); -} - -static void -obj_coff_data (int ignore ATTRIBUTE_UNUSED) -{ - if (flag_readonly_data_in_text) - subseg_new (".text", get_absolute_expression () + 1000); - else - subseg_new (".data", get_absolute_expression ()); -} - -static void -obj_coff_ident (int ignore ATTRIBUTE_UNUSED) -{ - segT current_seg = now_seg; /* Save current seg. */ - subsegT current_subseg = now_subseg; - - subseg_new (".comment", 0); /* .comment seg. */ - stringer (1); /* Read string. */ - subseg_set (current_seg, current_subseg); /* Restore current seg. */ -} - -void -c_dot_file_symbol (const char *filename, int appfile ATTRIBUTE_UNUSED) -{ - symbolS *symbolP; - - symbolP = symbol_new (".file", SEG_DEBUG, 0, & zero_address_frag); - - S_SET_STORAGE_CLASS (symbolP, C_FILE); - S_SET_NUMBER_AUXILIARY (symbolP, 1); - - if (strlen (filename) > FILNMLEN) - { - /* Filename is too long to fit into an auxent, - we stick it into the string table instead. We keep - a linked list of the filenames we find so we can emit - them later. */ - struct filename_list *f = xmalloc (sizeof (* f)); - - f->filename = filename; - f->next = 0; - - SA_SET_FILE_FNAME_ZEROS (symbolP, 0); - SA_SET_FILE_FNAME_OFFSET (symbolP, 1); - - if (filename_list_tail) - filename_list_tail->next = f; - else - filename_list_head = f; - filename_list_tail = f; - } - else - SA_SET_FILE_FNAME (symbolP, filename); - -#ifndef NO_LISTING - { - extern int listing; - if (listing) - listing_source_file (filename); - } -#endif - - SF_SET_DEBUG (symbolP); - S_SET_VALUE (symbolP, (valueT) previous_file_symbol); - - previous_file_symbol = symbolP; - - /* Make sure that the symbol is first on the symbol chain. */ - if (symbol_rootP != symbolP) - { - symbol_remove (symbolP, &symbol_rootP, &symbol_lastP); - symbol_insert (symbolP, symbol_rootP, &symbol_rootP, &symbol_lastP); - } -} - -static void -obj_coff_lcomm (int ignore ATTRIBUTE_UNUSED) -{ - s_lcomm (0); - return; -} - -/* The first entry in a .stab section is special. */ - -void -obj_coff_init_stab_section (segT seg) -{ - char *file; - char *p; - char *stabstr_name; - unsigned int stroff; - - /* Make space for this first symbol. */ - p = frag_more (12); - /* Zero it out. */ - memset (p, 0, 12); - as_where (&file, (unsigned int *) NULL); - stabstr_name = alloca (strlen (segment_info[seg].name) + 4); - strcpy (stabstr_name, segment_info[seg].name); - strcat (stabstr_name, "str"); - stroff = get_stab_string_offset (file, stabstr_name); - know (stroff == 1); - md_number_to_chars (p, stroff, 4); -} - -#endif /* not BFD_ASSEMBLER */ - -const pseudo_typeS coff_pseudo_table[] = -{ - {"ABORT", s_abort, 0}, - {"appline", obj_coff_ln, 1}, - /* We accept the .bss directive for backward compatibility with - earlier versions of gas. */ - {"bss", obj_coff_bss, 0}, - {"def", obj_coff_def, 0}, - {"dim", obj_coff_dim, 0}, - {"endef", obj_coff_endef, 0}, - {"ident", obj_coff_ident, 0}, - {"line", obj_coff_line, 0}, - {"ln", obj_coff_ln, 0}, - {"scl", obj_coff_scl, 0}, - {"sect", obj_coff_section, 0}, - {"sect.s", obj_coff_section, 0}, - {"section", obj_coff_section, 0}, - {"section.s", obj_coff_section, 0}, - /* FIXME: We ignore the MRI short attribute. */ - {"size", obj_coff_size, 0}, - {"tag", obj_coff_tag, 0}, - {"type", obj_coff_type, 0}, - {"val", obj_coff_val, 0}, - {"version", s_ignore, 0}, -#ifdef BFD_ASSEMBLER - {"loc", obj_coff_loc, 0}, - {"optim", s_ignore, 0}, /* For sun386i cc (?) */ - {"weak", obj_coff_weak, 0}, -#else - {"data", obj_coff_data, 0}, - {"lcomm", obj_coff_lcomm, 0}, - {"text", obj_coff_text, 0}, - {"use", obj_coff_section, 0}, -#endif -#if defined TC_M88K || defined TC_TIC4X - /* The m88k and tic4x uses sdef instead of def. */ - {"sdef", obj_coff_def, 0}, -#endif - {NULL, NULL, 0} -}; - -#ifdef BFD_ASSEMBLER - -/* Support for a COFF emulation. */ - -static void -coff_pop_insert (void) -{ - pop_insert (coff_pseudo_table); -} - -static int -coff_separate_stab_sections (void) -{ - return 1; -} - -const struct format_ops coff_format_ops = +const struct format_ops coff_format_ops = { bfd_target_coff_flavour, 0, /* dfl_leading_underscore */ @@ -4498,5 +1776,3 @@ const struct format_ops coff_format_ops coff_obj_read_begin_hook, coff_obj_symbol_new_hook }; - -#endif diff -uprN binutils-2.16.91.0.2/gas/config/obj-coff.h binutils-2.16.91.0.3/gas/config/obj-coff.h --- binutils-2.16.91.0.2/gas/config/obj-coff.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-coff.h 2005-08-22 12:27:42.000000000 -0700 @@ -25,16 +25,6 @@ #define OBJ_COFF 1 -#ifndef BFD_ASSEMBLER - -#define WORKING_DOT_WORD -#define WARN_SIGNED_OVERFLOW_WORD -#define OBJ_COFF_OMIT_OPTIONAL_HEADER -#define BFD_HEADERS -#define BFD - -#endif - #include "targ-cpu.h" #include "bfd.h" @@ -85,11 +75,6 @@ #endif #endif -#ifdef TC_A29K -#include "coff/a29k.h" -#define TARGET_FORMAT "coff-a29k-big" -#endif - #ifdef TC_OR32 #include "coff/or32.h" #define TARGET_FORMAT "coff-or32-big" @@ -147,16 +132,6 @@ #define TARGET_FORMAT "pe-mips" #endif -#ifdef TC_M88K -#include "coff/m88k.h" -#define TARGET_FORMAT "coff-m88kbcs" -#endif - -#ifdef TC_W65 -#include "coff/w65.h" -#define TARGET_FORMAT "coff-w65" -#endif - #ifdef TC_TIC30 #include "coff/tic30.h" #define TARGET_FORMAT "coff-tic30" @@ -172,12 +147,6 @@ #define TARGET_FORMAT "coff1-c54x" #endif -#ifdef TC_TIC80 -#include "coff/tic80.h" -#define TARGET_FORMAT "coff-tic80" -#define ALIGNMENT_IN_S_FLAGS 1 -#endif - #ifdef TC_MCORE #include "coff/mcore.h" #ifndef TARGET_FORMAT @@ -190,11 +159,6 @@ #define USE_UNIQUE 1 #endif -/* Targets may also set this. Also, if BFD_ASSEMBLER is defined, this - will already have been defined. */ -#undef SYMBOLS_NEED_BACKPOINTERS -#define SYMBOLS_NEED_BACKPOINTERS 1 - #ifndef OBJ_COFF_MAX_AUXENTRIES #define OBJ_COFF_MAX_AUXENTRIES 1 #endif @@ -202,44 +166,6 @@ #define obj_symbol_new_hook coff_obj_symbol_new_hook #define obj_read_begin_hook coff_obj_read_begin_hook -/* This file really contains two implementations of the COFF back end. - They are in the process of being merged, but this is only a - preliminary, mechanical merging. Many definitions that are - identical between the two are still found in both versions. - - The first version, with BFD_ASSEMBLER defined, uses high-level BFD - interfaces and data structures. The second version, with - BFD_ASSEMBLER not defined, also uses BFD, but mostly for swapping - data structures and for doing the actual I/O. The latter defines - the preprocessor symbols BFD and BFD_HEADERS. Try not to let this - confuse you. - - These two are in the process of being merged, and eventually the - BFD_ASSEMBLER version should take over completely. Release timing - issues and namespace problems convinced me to merge the two - together in this fashion, a little sooner than I would have liked. - The real merge should be much better done by the time the next - release comes out. - - For now, the structure of this file is: - - #ifdef BFD_ASSEMBLER - - #else - - #endif - - Unfortunately, the common portions are very small at the moment, - and many declarations or definitions are duplicated. The structure - of obj-coff.c is similar. - - See doc/internals.texi for a brief discussion of the history, if - you care. - - Ken Raeburn, 5 May 1994. */ - -#ifdef BFD_ASSEMBLER - #include "bfd/libcoff.h" #define OUTPUT_FLAVOR bfd_target_coff_flavour @@ -414,422 +340,6 @@ hey ! Where is the C_LEAFSTAT definition #endif /* no C_LEAFSTAT */ #endif /* TC_I960 */ -#else /* not BFD_ASSEMBLER */ - -#if defined TC_A29K || defined TC_OR32 -/* Allow translate from aout relocs to coff relocs. */ -#define NO_RELOC 20 -#define RELOC_32 1 -#define RELOC_8 2 -#define RELOC_CONST 3 -#define RELOC_CONSTH 4 -#define RELOC_JUMPTARG 5 -#define RELOC_BASE22 6 -#define RELOC_HI22 7 -#define RELOC_LO10 8 -#define RELOC_BASE13 9 -#define RELOC_WDISP22 10 -#define RELOC_WDISP30 11 -#endif - -extern const segT N_TYPE_seg[]; - -/* Magic number of paged executable. */ -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE 0x8300 - -/* SYMBOL TABLE */ - -/* Symbol table entry data type. */ - -typedef struct -{ - /* Basic symbol. */ - struct internal_syment ost_entry; - /* Auxiliary entry. */ - union internal_auxent ost_auxent[OBJ_COFF_MAX_AUXENTRIES]; - /* obj_coff internal use only flags. */ - unsigned int ost_flags; -} obj_symbol_type; - -/* Symbol table macros and constants. */ - -/* Possible and useful section number in symbol table - The values of TEXT, DATA and BSS may not be portable. */ - -#define C_ABS_SECTION N_ABS -#define C_UNDEF_SECTION N_UNDEF -#define C_DEBUG_SECTION N_DEBUG -#define C_NTV_SECTION N_TV -#define C_PTV_SECTION P_TV -#define C_REGISTER_SECTION 50 - -/* Macros to extract information from a symbol table entry. - This syntactic indirection allows independence regarding a.out or coff. - The argument (s) of all these macros is a pointer to a symbol table entry. */ - -/* Predicates. */ -/* True if the symbol is external. */ -#define S_IS_EXTERNAL(s) \ - ((s)->sy_symbol.ost_entry.n_scnum == C_UNDEF_SECTION) - -/* True if symbol has been defined, ie : - section > 0 (DATA, TEXT or BSS) - section == 0 and value > 0 (external bss symbol). */ -#define S_IS_DEFINED(s) \ - ((s)->sy_symbol.ost_entry.n_scnum > C_UNDEF_SECTION \ - || ((s)->sy_symbol.ost_entry.n_scnum == C_UNDEF_SECTION \ - && S_GET_VALUE (s) > 0) \ - || ((s)->sy_symbol.ost_entry.n_scnum == C_ABS_SECTION)) - -/* Return true for symbols that should not be reduced to section - symbols or eliminated from expressions, because they may be - overridden by the linker. */ -#define S_FORCE_RELOC(s, strict) \ - (!SEG_NORMAL (S_GET_SEGMENT (s)) || (strict && S_IS_WEAK (s))) - -/* True if a debug special symbol entry. */ -#define S_IS_DEBUG(s) \ - ((s)->sy_symbol.ost_entry.n_scnum == C_DEBUG_SECTION) - -/* True if a symbol is local symbol name. */ -/* A symbol name whose name includes ^A is a gas internal pseudo symbol. */ -#define S_IS_LOCAL(s) \ - ((s)->sy_symbol.ost_entry.n_scnum == C_REGISTER_SECTION \ - || (S_LOCAL_NAME(s) && ! flag_keep_locals && ! S_IS_DEBUG (s)) \ - || strchr (S_GET_NAME (s), '\001') != NULL \ - || strchr (S_GET_NAME (s), '\002') != NULL \ - || (flag_strip_local_absolute \ - && !S_IS_EXTERNAL (s) \ - && (s)->sy_symbol.ost_entry.n_scnum == C_ABS_SECTION)) - -/* True if a symbol can be multiply defined (bss symbols have this def - though it is bad practice). */ -#define S_IS_COMMON(s) ((s)->sy_symbol.ost_entry.n_scnum == 0 \ - && S_GET_VALUE (s) != 0) - -/* True if a symbol name is in the string table, i.e. its length is > 8. */ -#define S_IS_STRING(s) (strlen (S_GET_NAME (s)) > 8 ? 1 : 0) - -/* True if a symbol is defined as weak. */ -#ifdef TE_PE -#define S_IS_WEAK(s) \ - ( (s)->sy_symbol.ost_entry.n_sclass == C_NT_WEAK \ - || (s)->sy_symbol.ost_entry.n_sclass == C_WEAKEXT) -#else -#define S_IS_WEAK(s) \ - ((s)->sy_symbol.ost_entry.n_sclass == C_WEAKEXT) -#endif - -/* Accessors. */ -/* The name of the symbol. */ -#define S_GET_NAME(s) ((char *) (s)->sy_symbol.ost_entry.n_offset) - -/* The pointer to the string table. */ -#define S_GET_OFFSET(s) ((s)->sy_symbol.ost_entry.n_offset) - -/* The numeric value of the segment. */ -#define S_GET_SEGMENT(s) s_get_segment (s) - -/* The data type. */ -#define S_GET_DATA_TYPE(s) ((s)->sy_symbol.ost_entry.n_type) - -/* The storage class. */ -#define S_GET_STORAGE_CLASS(s) ((s)->sy_symbol.ost_entry.n_sclass) - -/* The number of auxiliary entries. */ -#define S_GET_NUMBER_AUXILIARY(s) ((s)->sy_symbol.ost_entry.n_numaux) - -/* Modifiers. */ -/* Set the name of the symbol. */ -#define S_SET_NAME(s, v) \ - ((s)->sy_symbol.ost_entry.n_offset = (unsigned long) (v)) - -/* Set the offset of the symbol. */ -#define S_SET_OFFSET(s, v) \ - ((s)->sy_symbol.ost_entry.n_offset = (v)) - -/* The numeric value of the segment. */ -#define S_SET_SEGMENT(s, v) \ - ((s)->sy_symbol.ost_entry.n_scnum = SEGMENT_TO_SYMBOL_TYPE (v)) - -/* The data type. */ -#define S_SET_DATA_TYPE(s, v) \ - ((s)->sy_symbol.ost_entry.n_type = (v)) - -/* The storage class. */ -#define S_SET_STORAGE_CLASS(s, v) \ - ((s)->sy_symbol.ost_entry.n_sclass = (v)) - -/* The number of auxiliary entries. */ -#define S_SET_NUMBER_AUXILIARY(s, v) \ - ((s)->sy_symbol.ost_entry.n_numaux = (v)) - -/* Additional modifiers. */ -/* The symbol is external (does not mean undefined). */ -#define S_SET_EXTERNAL(s) \ - do \ - { \ - S_SET_STORAGE_CLASS (s, C_EXT); \ - SF_CLEAR_LOCAL (s); \ - } \ - while (0) - -/* Auxiliary entry macros. SA_ stands for symbol auxiliary. */ -/* Omit the tv related fields. */ -/* Accessors. */ -#define SYM_AUXENT(S) (&(S)->sy_symbol.ost_auxent[0]) - -#define SA_GET_SYM_TAGNDX(s) (SYM_AUXENT (s)->x_sym.x_tagndx.l) -#define SA_GET_SYM_LNNO(s) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno) -#define SA_GET_SYM_SIZE(s) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_size) -#define SA_GET_SYM_FSIZE(s) (SYM_AUXENT (s)->x_sym.x_misc.x_fsize) -#define SA_GET_SYM_LNNOPTR(s) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_lnnoptr) -#define SA_GET_SYM_ENDNDX(s) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_endndx.l) -#define SA_GET_SYM_DIMEN(s,i) (SYM_AUXENT (s)->x_sym.x_fcnary.x_ary.x_dimen[(i)]) -#define SA_GET_FILE_FNAME(s) (SYM_AUXENT (s)->x_file.x_fname) -#define SA_GET_FILE_FNAME_OFFSET(s) (SYM_AUXENT (s)->x_file.x_n.x_offset) -#define SA_GET_FILE_FNAME_ZEROS(s) (SYM_AUXENT (s)->x_file.x_n.x_zeroes) -#define SA_GET_SCN_SCNLEN(s) (SYM_AUXENT (s)->x_scn.x_scnlen) -#define SA_GET_SCN_NRELOC(s) (SYM_AUXENT (s)->x_scn.x_nreloc) -#define SA_GET_SCN_NLINNO(s) (SYM_AUXENT (s)->x_scn.x_nlinno) - -/* Modifiers. */ -#define SA_SET_SYM_TAGNDX(s,v) (SYM_AUXENT (s)->x_sym.x_tagndx.l = (v)) -#define SA_SET_SYM_LNNO(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno = (v)) -#define SA_SET_SYM_SIZE(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_size = (v)) -#define SA_SET_SYM_FSIZE(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_fsize = (v)) -#define SA_SET_SYM_LNNOPTR(s,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_lnnoptr = (v)) -#define SA_SET_SYM_ENDNDX(s,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_endndx.l = (v)) -#define SA_SET_SYM_DIMEN(s,i,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_ary.x_dimen[(i)] = (v)) -#define SA_SET_FILE_FNAME(s,v) strncpy (SYM_AUXENT (s)->x_file.x_fname,(v),FILNMLEN) -#define SA_SET_FILE_FNAME_OFFSET(s,v) (SYM_AUXENT (s)->x_file.x_n.x_offset = (v)) -#define SA_SET_FILE_FNAME_ZEROS(s,v) (SYM_AUXENT (s)->x_file.x_n.x_zeroes = (v)) -#define SA_SET_SCN_SCNLEN(s,v) (SYM_AUXENT (s)->x_scn.x_scnlen = (v)) -#define SA_SET_SCN_NRELOC(s,v) (SYM_AUXENT (s)->x_scn.x_nreloc = (v)) -#define SA_SET_SCN_NLINNO(s,v) (SYM_AUXENT (s)->x_scn.x_nlinno = (v)) - -/* Internal use only definitions. SF_ stands for symbol flags. - - These values can be assigned to sy_symbol.ost_flags field of a symbolS. - - You'll break i960 if you shift the SYSPROC bits anywhere else. for - more on the balname/callname hack, see tc-i960.h. b.out is done - differently. */ - -#define SF_I960_MASK 0x000001ff /* Bits 0-8 are used by the i960 port. */ -#define SF_SYSPROC 0x0000003f /* bits 0-5 are used to store the sysproc number. */ -#define SF_IS_SYSPROC 0x00000040 /* bit 6 marks symbols that are sysprocs. */ -#define SF_BALNAME 0x00000080 /* bit 7 marks BALNAME symbols. */ -#define SF_CALLNAME 0x00000100 /* bit 8 marks CALLNAME symbols. */ - -#define SF_NORMAL_MASK 0x0000ffff /* bits 12-15 are general purpose. */ - -#define SF_STATICS 0x00001000 /* Mark the .text & all symbols. */ -#define SF_DEFINED 0x00002000 /* Symbol is defined in this file. */ -#define SF_STRING 0x00004000 /* Symbol name length > 8. */ -#define SF_LOCAL 0x00008000 /* Symbol must not be emitted. */ - -#define SF_DEBUG_MASK 0xffff0000 /* bits 16-31 are debug info. */ - -#define SF_FUNCTION 0x00010000 /* The symbol is a function. */ -#define SF_PROCESS 0x00020000 /* Process symbol before write. */ -#define SF_TAGGED 0x00040000 /* Is associated with a tag. */ -#define SF_TAG 0x00080000 /* Is a tag. */ -#define SF_DEBUG 0x00100000 /* Is in debug or abs section. */ -#define SF_GET_SEGMENT 0x00200000 /* Get the section of the forward symbol. */ -#define SF_ADJ_LNNOPTR 0x00400000 /* Has a lnnoptr. */ -/* All other bits are unused. */ - -/* Accessors. */ -#define SF_GET(s) ((s)->sy_symbol.ost_flags) -#define SF_GET_NORMAL_FIELD(s) (SF_GET (s) & SF_NORMAL_MASK) -#define SF_GET_DEBUG_FIELD(s) (SF_GET (s) & SF_DEBUG_MASK) -#define SF_GET_FILE(s) (SF_GET (s) & SF_FILE) -#define SF_GET_STATICS(s) (SF_GET (s) & SF_STATICS) -#define SF_GET_DEFINED(s) (SF_GET (s) & SF_DEFINED) -#define SF_GET_STRING(s) (SF_GET (s) & SF_STRING) -#define SF_GET_LOCAL(s) (SF_GET (s) & SF_LOCAL) -#define SF_GET_FUNCTION(s) (SF_GET (s) & SF_FUNCTION) -#define SF_GET_PROCESS(s) (SF_GET (s) & SF_PROCESS) -#define SF_GET_DEBUG(s) (SF_GET (s) & SF_DEBUG) -#define SF_GET_TAGGED(s) (SF_GET (s) & SF_TAGGED) -#define SF_GET_TAG(s) (SF_GET (s) & SF_TAG) -#define SF_GET_GET_SEGMENT(s) (SF_GET (s) & SF_GET_SEGMENT) -#define SF_GET_ADJ_LNNOPTR(s) (SF_GET (s) & SF_ADJ_LNNOPTR) -#define SF_GET_I960(s) (SF_GET (s) & SF_I960_MASK) /* Used by i960. */ -#define SF_GET_BALNAME(s) (SF_GET (s) & SF_BALNAME) /* Used by i960. */ -#define SF_GET_CALLNAME(s) (SF_GET (s) & SF_CALLNAME) /* Used by i960. */ -#define SF_GET_IS_SYSPROC(s) (SF_GET (s) & SF_IS_SYSPROC) /* Used by i960. */ -#define SF_GET_SYSPROC(s) (SF_GET (s) & SF_SYSPROC) /* Used by i960. */ - -/* Modifiers. */ -#define SF_SET(s,v) (SF_GET (s) = (v)) -#define SF_SET_NORMAL_FIELD(s,v)(SF_GET (s) |= ((v) & SF_NORMAL_MASK)) -#define SF_SET_DEBUG_FIELD(s,v) (SF_GET (s) |= ((v) & SF_DEBUG_MASK)) -#define SF_SET_FILE(s) (SF_GET (s) |= SF_FILE) -#define SF_SET_STATICS(s) (SF_GET (s) |= SF_STATICS) -#define SF_SET_DEFINED(s) (SF_GET (s) |= SF_DEFINED) -#define SF_SET_STRING(s) (SF_GET (s) |= SF_STRING) -#define SF_SET_LOCAL(s) (SF_GET (s) |= SF_LOCAL) -#define SF_CLEAR_LOCAL(s) (SF_GET (s) &= ~SF_LOCAL) -#define SF_SET_FUNCTION(s) (SF_GET (s) |= SF_FUNCTION) -#define SF_SET_PROCESS(s) (SF_GET (s) |= SF_PROCESS) -#define SF_SET_DEBUG(s) (SF_GET (s) |= SF_DEBUG) -#define SF_SET_TAGGED(s) (SF_GET (s) |= SF_TAGGED) -#define SF_SET_TAG(s) (SF_GET (s) |= SF_TAG) -#define SF_SET_GET_SEGMENT(s) (SF_GET (s) |= SF_GET_SEGMENT) -#define SF_SET_ADJ_LNNOPTR(s) (SF_GET (s) |= SF_ADJ_LNNOPTR) -#define SF_SET_I960(s,v) (SF_GET (s) |= ((v) & SF_I960_MASK)) /* Used by i960. */ -#define SF_SET_BALNAME(s) (SF_GET (s) |= SF_BALNAME) /* Used by i960. */ -#define SF_SET_CALLNAME(s) (SF_GET (s) |= SF_CALLNAME) /* Used by i960. */ -#define SF_SET_IS_SYSPROC(s) (SF_GET (s) |= SF_IS_SYSPROC) /* Used by i960. */ -#define SF_SET_SYSPROC(s,v) (SF_GET (s) |= ((v) & SF_SYSPROC)) /* Used by i960. */ - -/* File header macro and type definition. */ - -/* File position calculators. Beware to use them when all the - appropriate fields are set in the header. */ - -#ifdef OBJ_COFF_OMIT_OPTIONAL_HEADER -#define OBJ_COFF_AOUTHDRSZ (0) -#else -#define OBJ_COFF_AOUTHDRSZ (AOUTHDRSZ) -#endif - -#define H_GET_TEXT_FILE_OFFSET(h) \ - (long) (FILHSZ \ - + OBJ_COFF_AOUTHDRSZ \ - + H_GET_NUMBER_OF_SECTIONS (h) * SCNHSZ) - -#define H_GET_DATA_FILE_OFFSET(h) \ - (long) (H_GET_TEXT_FILE_OFFSET (h) \ - + H_GET_TEXT_SIZE (h)) - -#define H_GET_BSS_FILE_OFFSET(h) 0 - -#define H_GET_RELOCATION_FILE_OFFSET(h) \ - (long) (H_GET_DATA_FILE_OFFSET (h) \ - + H_GET_DATA_SIZE (h)) - -#define H_GET_LINENO_FILE_OFFSET(h) \ - (long) (H_GET_RELOCATION_FILE_OFFSET (h) \ - + H_GET_RELOCATION_SIZE (h)) - -#define H_GET_SYMBOL_TABLE_FILE_OFFSET(h) \ - (long) (H_GET_LINENO_FILE_OFFSET (h) \ - + H_GET_LINENO_SIZE (h)) - -#define H_GET_FILE_SIZE(h) \ - (long) (H_GET_SYMBOL_TABLE_FILE_OFFSET (h) \ - + H_GET_SYMBOL_TABLE_SIZE (h) \ - + (h)->string_table_size) - -/* Accessors. */ -/* aouthdr. */ -#define H_GET_MAGIC_NUMBER(h) ((h)->aouthdr.magic) -#define H_GET_VERSION_STAMP(h) ((h)->aouthdr.vstamp) -#define H_GET_TEXT_SIZE(h) ((h)->aouthdr.tsize) -#define H_GET_DATA_SIZE(h) ((h)->aouthdr.dsize) -#define H_GET_BSS_SIZE(h) ((h)->aouthdr.bsize) -#define H_GET_ENTRY_POINT(h) ((h)->aouthdr.entry) -#define H_GET_TEXT_START(h) ((h)->aouthdr.text_start) -#define H_GET_DATA_START(h) ((h)->aouthdr.data_start) -/* filehdr. */ -#define H_GET_FILE_MAGIC_NUMBER(h) ((h)->filehdr.f_magic) -#define H_GET_NUMBER_OF_SECTIONS(h) ((h)->filehdr.f_nscns) -#define H_GET_TIME_STAMP(h) ((h)->filehdr.f_timdat) -#define H_GET_SYMBOL_TABLE_POINTER(h) ((h)->filehdr.f_symptr) -#define H_GET_SYMBOL_COUNT(h) ((h)->filehdr.f_nsyms) -#define H_GET_SYMBOL_TABLE_SIZE(h) (H_GET_SYMBOL_COUNT(h) * SYMESZ) -#define H_GET_SIZEOF_OPTIONAL_HEADER(h) ((h)->filehdr.f_opthdr) -#define H_GET_FLAGS(h) ((h)->filehdr.f_flags) -/* Extra fields to achieve bsd a.out compatibility and for convenience. */ -#define H_GET_RELOCATION_SIZE(h) ((h)->relocation_size) -#define H_GET_STRING_SIZE(h) ((h)->string_table_size) -#define H_GET_LINENO_SIZE(h) ((h)->lineno_size) - -#ifndef OBJ_COFF_OMIT_OPTIONAL_HEADER -#define H_GET_HEADER_SIZE(h) (sizeof (FILHDR) \ - + sizeof (AOUTHDR)\ - + (H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ)) -#else /* OBJ_COFF_OMIT_OPTIONAL_HEADER */ -#define H_GET_HEADER_SIZE(h) (sizeof (FILHDR) \ - + (H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ)) -#endif /* OBJ_COFF_OMIT_OPTIONAL_HEADER */ - -#define H_GET_TEXT_RELOCATION_SIZE(h) (text_section_header.s_nreloc * RELSZ) -#define H_GET_DATA_RELOCATION_SIZE(h) (data_section_header.s_nreloc * RELSZ) - -/* Modifiers. */ -/* aouthdr. */ -#define H_SET_MAGIC_NUMBER(h,v) ((h)->aouthdr.magic = (v)) -#define H_SET_VERSION_STAMP(h,v) ((h)->aouthdr.vstamp = (v)) -#define H_SET_TEXT_SIZE(h,v) ((h)->aouthdr.tsize = (v)) -#define H_SET_DATA_SIZE(h,v) ((h)->aouthdr.dsize = (v)) -#define H_SET_BSS_SIZE(h,v) ((h)->aouthdr.bsize = (v)) -#define H_SET_ENTRY_POINT(h,v) ((h)->aouthdr.entry = (v)) -#define H_SET_TEXT_START(h,v) ((h)->aouthdr.text_start = (v)) -#define H_SET_DATA_START(h,v) ((h)->aouthdr.data_start = (v)) -/* filehdr. */ -#define H_SET_FILE_MAGIC_NUMBER(h,v) ((h)->filehdr.f_magic = (v)) -#define H_SET_NUMBER_OF_SECTIONS(h,v) ((h)->filehdr.f_nscns = (v)) -#define H_SET_TIME_STAMP(h,v) ((h)->filehdr.f_timdat = (v)) -#define H_SET_SYMBOL_TABLE_POINTER(h,v) ((h)->filehdr.f_symptr = (v)) -#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->filehdr.f_nsyms = (v)) -#define H_SET_SIZEOF_OPTIONAL_HEADER(h,v) ((h)->filehdr.f_opthdr = (v)) -#define H_SET_FLAGS(h,v) ((h)->filehdr.f_flags = (v)) -/* Extra fields to achieve bsd a.out compatibility and for convenience. */ -#define H_SET_RELOCATION_SIZE(h,t,d) ((h)->relocation_size = (t)+(d)) -#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v)) -#define H_SET_LINENO_SIZE(h,v) ((h)->lineno_size = (v)) - -/* Segment flipping. */ - -typedef struct -{ - struct internal_aouthdr aouthdr; /* a.out header. */ - struct internal_filehdr filehdr; /* File header, not machine dep. */ - long string_table_size; /* names + '\0' + sizeof (int). */ - long relocation_size; /* Cumulated size of relocation - information for all sections in - bytes. */ - long lineno_size; /* Size of the line number information - table in bytes. */ -} object_headers; - -struct lineno_list -{ - struct bfd_internal_lineno line; - char *frag; /* Frag to which the line number is related. */ - struct lineno_list *next; /* Forward chain pointer. */ -}; - -#define obj_segment_name(i) (segment_info[(int) (i)].scnhdr.s_name) - -#define obj_add_segment(s) obj_coff_add_segment (s) - -/* Sanity check. */ -#ifdef TC_I960 -#ifndef C_LEAFSTAT -hey ! Where is the C_LEAFSTAT definition ? i960 - coff support is depending on it. -#endif /* no C_LEAFSTAT */ -#endif /* TC_I960 */ - -extern struct internal_scnhdr data_section_header; -extern struct internal_scnhdr text_section_header; - -/* Forward the segment of a forwarded symbol. */ -#define OBJ_COPY_SYMBOL_ATTRIBUTES(dest,src) \ - (SF_GET_GET_SEGMENT (dest) \ - ? (S_SET_SEGMENT (dest, S_GET_SEGMENT (src)), 0) \ - : 0) - -#ifdef TE_PE -#define obj_handle_link_once(t) obj_coff_pe_handle_link_once (t) -#endif - -#endif /* not BFD_ASSEMBLER */ - extern const pseudo_typeS coff_pseudo_table[]; #ifndef obj_pop_insert @@ -861,7 +371,6 @@ extern const pseudo_typeS coff_pseudo_ta #define obj_app_file(name, app) c_dot_file_symbol (name, app) -#ifdef BFD_ASSEMBLER extern int S_SET_DATA_TYPE (symbolS *, int); extern int S_SET_STORAGE_CLASS (symbolS *, int); extern int S_GET_STORAGE_CLASS (symbolS *); @@ -873,9 +382,6 @@ extern void coff_adjust_symtab extern void coff_frob_section (segT); extern void coff_adjust_section_syms (bfd *, asection *, void *); extern void coff_frob_file_after_relocs (void); -#else -extern void obj_extra_stuff (object_headers *); -#endif extern void coff_obj_symbol_new_hook (symbolS *); extern void coff_obj_read_begin_hook (void); extern void obj_coff_section (int); diff -uprN binutils-2.16.91.0.2/gas/config/obj-elf.c binutils-2.16.91.0.3/gas/config/obj-elf.c --- binutils-2.16.91.0.2/gas/config/obj-elf.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-elf.c 2005-08-22 12:27:42.000000000 -0700 @@ -53,6 +53,10 @@ #include "elf/i370.h" #endif +#ifdef TC_I386 +#include "elf/x86-64.h" +#endif + static void obj_elf_line (int); static void obj_elf_size (int); static void obj_elf_type (int); @@ -174,6 +178,8 @@ static const pseudo_typeS ecoff_debug_ps /* This is called when the assembler starts. */ +asection *elf_com_section_ptr; + void elf_begin (void) { @@ -186,6 +192,7 @@ elf_begin (void) symbol_table_insert (section_symbol (s)); s = bfd_get_section_by_name (stdoutput, BSS_SECTION_NAME); symbol_table_insert (section_symbol (s)); + elf_com_section_ptr = bfd_com_section_ptr; } void @@ -270,7 +277,7 @@ elf_file_symbol (const char *s, int appf /* Called from read.c:s_comm after we've parsed .comm symbol, size. Parse a possible alignment value. */ -static symbolS * +symbolS * elf_common_parse (int ignore ATTRIBUTE_UNUSED, symbolS *symbolP, addressT size) { addressT align = 0; @@ -334,7 +341,7 @@ elf_common_parse (int ignore ATTRIBUTE_U S_SET_VALUE (symbolP, size); S_SET_ALIGN (symbolP, align); S_SET_EXTERNAL (symbolP); - S_SET_SEGMENT (symbolP, bfd_com_section_ptr); + S_SET_SEGMENT (symbolP, elf_com_section_ptr); } symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT; @@ -569,7 +576,16 @@ obj_elf_change_section (const char *name .section .init_array,"aw",@progbits for __attribute__ ((section (".init_array"))). + "@progbits" is incorrect. Also for x86-64 large bss + sections, gcc, as of 2005-07-06, will emit + + .section .lbss,"aw",@progbits + "@progbits" is incorrect. */ +#ifdef TC_I386 + && (bed->s->arch_size != 64 + || !(ssect->attr & SHF_X86_64_LARGE)) +#endif && ssect->type != SHT_INIT_ARRAY && ssect->type != SHT_FINI_ARRAY && ssect->type != SHT_PREINIT_ARRAY) diff -uprN binutils-2.16.91.0.2/gas/config/obj-elf.h binutils-2.16.91.0.3/gas/config/obj-elf.h --- binutils-2.16.91.0.2/gas/config/obj-elf.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-elf.h 2005-08-22 12:27:42.000000000 -0700 @@ -244,5 +244,8 @@ extern void elf_pop_insert (void); struct ecoff_extr; extern void elf_ecoff_set_ext (symbolS *, struct ecoff_extr *); #endif +extern asection *elf_com_section_ptr; +extern symbolS * elf_common_parse (int ignore ATTRIBUTE_UNUSED, symbolS *symbolP, + addressT size); #endif /* _OBJ_ELF_H */ diff -uprN binutils-2.16.91.0.2/gas/config/obj-evax.h binutils-2.16.91.0.3/gas/config/obj-evax.h --- binutils-2.16.91.0.2/gas/config/obj-evax.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-evax.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* This file is obj-evax.h - Copyright 1996, 2000 Free Software Foundation, Inc. + Copyright 1996, 2000, 2005 Free Software Foundation, Inc. Contributed by Klaus Kämpf (kkaempf@progis.de) of proGIS Software, Aachen, Germany. @@ -31,9 +31,7 @@ /* include whatever target cpu is appropriate. */ #include "targ-cpu.h" -#ifdef BFD_ASSEMBLER #define OUTPUT_FLAVOR bfd_target_evax_flavour -#endif /* * SYMBOLS @@ -58,8 +56,6 @@ obj_symbol_type; /* should be the forma typedef void *object_headers; -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (0) /* your magic number */ - #define OBJ_EMIT_LINENO(a,b,c) /* must be *something*. This no-op's it out. */ #define obj_symbol_new_hook(s) {;} diff -uprN binutils-2.16.91.0.2/gas/config/obj-hp300.c binutils-2.16.91.0.3/gas/config/obj-hp300.c --- binutils-2.16.91.0.2/gas/config/obj-hp300.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-hp300.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,54 +0,0 @@ -/* This file is obj-hp300.h - Copyright 1993, 2000, 2005 Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#include "config/obj-aout.c" - -/* Aout file generation & utilities */ -void -hp300_header_append (where, headers) - char **where; - object_headers *headers; -{ - tc_headers_hook (headers); - -#define DO(FIELD) \ - { \ - md_number_to_chars (*where, headers->header.FIELD, \ - sizeof (((struct exec_bytes *) 0)->FIELD)); \ - *where += sizeof (((struct exec_bytes *) 0)->FIELD); \ - } - - DO (a_info); - DO (a_spare1); - DO (a_spare2); - DO (a_text); - DO (a_data); - DO (a_bss); - DO (a_trsize); - DO (a_drsize); - DO (a_spare3); - DO (a_spare4); - DO (a_spare5); - DO (a_entry); - DO (a_spare6); - DO (a_spare7); - DO (a_syms); - DO (a_spare8); -} diff -uprN binutils-2.16.91.0.2/gas/config/obj-hp300.h binutils-2.16.91.0.3/gas/config/obj-hp300.h --- binutils-2.16.91.0.2/gas/config/obj-hp300.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-hp300.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,72 +0,0 @@ -/* This file is obj-hp300.h - Copyright 1993, 2000, 2005 Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#define __STRUCT_EXEC_OVERRIDE__ - -struct exec_bytes -{ - unsigned char a_info[4]; /* a_machtype/a_magic */ - unsigned char a_spare1[4]; - unsigned char a_spare2[4]; - unsigned char a_text[4]; /* length of text, in bytes */ - unsigned char a_data[4]; /* length of data, in bytes */ - unsigned char a_bss[4]; /* length of uninitialized data area for file, in bytes */ - unsigned char a_trsize[4]; /* length of relocation info for text, in bytes */ - unsigned char a_drsize[4]; /* length of relocation info for data, in bytes */ - unsigned char a_spare3[4]; /* HP = pascal interface size */ - unsigned char a_spare4[4]; /* HP = symbol table size */ - unsigned char a_spare5[4]; /* HP = debug name table size */ - unsigned char a_entry[4]; /* start address */ - unsigned char a_spare6[4]; /* HP = source line table size */ - unsigned char a_spare7[4]; /* HP = value table size */ - unsigned char a_syms[4]; /* length of symbol table data in file, in bytes */ - unsigned char a_spare8[4]; -}; - -/* How big the "struct exec" is on disk */ -#define EXEC_BYTES_SIZE (16 * 4) - -struct exec -{ - unsigned long a_info; - unsigned long a_spare1; - unsigned long a_spare2; - unsigned long a_text; - unsigned long a_data; - unsigned long a_bss; - unsigned long a_trsize; - unsigned long a_drsize; - unsigned long a_spare3; - unsigned long a_spare4; - unsigned long a_spare5; - unsigned long a_entry; - unsigned long a_spare6; - unsigned long a_spare7; - unsigned long a_syms; - unsigned long a_spare8; -}; - -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (OMAGIC) -#define AOUT_VERSION 0x02 -#define AOUT_MACHTYPE 0x0c -#define OMAGIC 0x106 - -#define obj_header_append hp300_header_append -#include "config/obj-aout.h" diff -uprN binutils-2.16.91.0.2/gas/config/obj-ieee.h binutils-2.16.91.0.3/gas/config/obj-ieee.h --- binutils-2.16.91.0.2/gas/config/obj-ieee.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/obj-ieee.h 2005-08-22 12:27:42.000000000 -0700 @@ -19,8 +19,6 @@ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#define BFD 1 - #include "bfd.h" typedef struct @@ -43,8 +41,6 @@ typedef struct } object_headers; -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE 1 - int lineno_rootP; #define IEEE_STYLE diff -uprN binutils-2.16.91.0.2/gas/config/tc-a29k.c binutils-2.16.91.0.3/gas/config/tc-a29k.c --- binutils-2.16.91.0.2/gas/config/tc-a29k.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-a29k.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,1187 +0,0 @@ -/* tc-a29k.c -- Assemble for the AMD 29000. - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1998, 2000, 2001, - 2002, 2005 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -/* John Gilmore has reorganized this module somewhat, to make it easier - to convert it to new machines' assemblers as desired. There was too - much bloody rewriting required before. There still probably is. */ - -#include "as.h" -#include "safe-ctype.h" - -#include "opcode/a29k.h" - -/* Make it easier to clone this machine desc into another one. */ -#define machine_opcode a29k_opcode -#define machine_opcodes a29k_opcodes -#define machine_ip a29k_ip -#define machine_it a29k_it - -#define IMMEDIATE_BIT 0x01000000 /* Turns RB into Immediate. */ -#define ABSOLUTE_BIT 0x01000000 /* Turns PC-relative to Absolute. */ -#define CE_BIT 0x00800000 /* Coprocessor enable in LOAD. */ -#define UI_BIT 0x00000080 /* Unsigned integer in CONVERT. */ - -/* handle of the OPCODE hash table. */ -static struct hash_control *op_hash = NULL; - -struct machine_it -{ - char *error; - unsigned long opcode; - struct nlist *nlistp; - expressionS exp; - int pcrel; - int reloc_offset; /* Offset of reloc within insn. */ - int reloc; -} -the_insn; - -#if defined(BFD_HEADERS) -#ifdef RELSZ -const int md_reloc_size = RELSZ; /* Coff headers. */ -#else -const int md_reloc_size = 12; /* Something else headers. */ -#endif -#else -const int md_reloc_size = 12; /* Not bfdized. */ -#endif - -/* This array holds the chars that always start a comment. If the - pre-processor is disabled, these aren't very useful. */ -const char comment_chars[] = ";"; - -/* This array holds the chars that only start a comment at the beginning of - a line. If the line seems to have the form '# 123 filename' - .line and .file directives will appear in the pre-processed output. */ -/* Note that input_file.c hand checks for '#' at the beginning of the - first line of the input file. This is because the compiler outputs - #NO_APP at the beginning of its output. */ -/* Also note that comments like this one will always work. */ -const char line_comment_chars[] = "#"; - -/* We needed an unused char for line separation to work around the - lack of macros, using sed and such. */ -const char line_separator_chars[] = "@"; - -/* Chars that can be used to separate mant from exp in floating point nums. */ -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant. - As in 0f12.456 - or 0d1.2345e12. */ -const char FLT_CHARS[] = "rRsSfFdDxXpP"; - -/* Also be aware that MAXIMUM_NUMBER_OF_CHARS_FOR_FLOAT may have to be - changed in read.c. Ideally it shouldn't have to know about it at - all, but nothing is ideal around here. */ - -/* anull bit - causes the branch delay slot instructions to not be executed. */ -#define ANNUL (1 << 29) - -#ifndef OBJ_COFF - -static void -s_use (int ignore) -{ - if (strncmp (input_line_pointer, ".text", 5) == 0) - { - input_line_pointer += 5; - s_text (0); - return; - } - if (strncmp (input_line_pointer, ".data", 5) == 0) - { - input_line_pointer += 5; - s_data (0); - return; - } - if (strncmp (input_line_pointer, ".data1", 6) == 0) - { - input_line_pointer += 6; - s_data1 (); - return; - } - /* Literals can't go in the text segment because you can't read from - instruction memory on some 29k's. So, into initialized data. */ - if (strncmp (input_line_pointer, ".lit", 4) == 0) - { - input_line_pointer += 4; - subseg_set (SEG_DATA, 200); - demand_empty_rest_of_line (); - return; - } - - as_bad (_("Unknown segment type")); - demand_empty_rest_of_line (); -} - -static void -s_data1 (void) -{ - subseg_set (SEG_DATA, 1); - demand_empty_rest_of_line (); -} - -#endif /* OBJ_COFF */ - -/* Install symbol definition that maps REGNAME to REGNO. - FIXME-SOON: These are not recognized in mixed case. */ - -static void -insert_sreg (char *regname, int regnum) -{ - /* FIXME-SOON, put something in these syms so they won't be output - to the symbol table of the resulting object file. */ - - /* Must be large enough to hold the names of the special registers. */ - char buf[80]; - int i; - - symbol_table_insert (symbol_new (regname, SEG_REGISTER, (valueT) regnum, - &zero_address_frag)); - for (i = 0; regname[i]; i++) - buf[i] = TOUPPER (regname[i]); - buf[i] = '\0'; - - symbol_table_insert (symbol_new (buf, SEG_REGISTER, (valueT) regnum, - &zero_address_frag)); -} - -/* Install symbol definitions for assorted special registers. - See ASM29K Ref page 2-9. */ - -static void -define_some_regs (void) -{ -#define SREG 256 - - /* Protected special-purpose register names. */ - insert_sreg ("vab", SREG + 0); - insert_sreg ("ops", SREG + 1); - insert_sreg ("cps", SREG + 2); - insert_sreg ("cfg", SREG + 3); - insert_sreg ("cha", SREG + 4); - insert_sreg ("chd", SREG + 5); - insert_sreg ("chc", SREG + 6); - insert_sreg ("rbp", SREG + 7); - insert_sreg ("tmc", SREG + 8); - insert_sreg ("tmr", SREG + 9); - insert_sreg ("pc0", SREG + 10); - insert_sreg ("pc1", SREG + 11); - insert_sreg ("pc2", SREG + 12); - insert_sreg ("mmu", SREG + 13); - insert_sreg ("lru", SREG + 14); - - /* Additional protected special-purpose registers for the 29050. */ - insert_sreg ("rsn", SREG + 15); - insert_sreg ("rma0", SREG + 16); - insert_sreg ("rmc0", SREG + 17); - insert_sreg ("rma1", SREG + 18); - insert_sreg ("rmc1", SREG + 19); - insert_sreg ("spc0", SREG + 20); - insert_sreg ("spc1", SREG + 21); - insert_sreg ("spc2", SREG + 22); - insert_sreg ("iba0", SREG + 23); - insert_sreg ("ibc0", SREG + 24); - insert_sreg ("iba1", SREG + 25); - insert_sreg ("ibc1", SREG + 26); - - /* Additional registers for the 29040. */ - insert_sreg ("dba", SREG + 27); - insert_sreg ("dbc", SREG + 28); - insert_sreg ("cir", SREG + 29); - insert_sreg ("cdr", SREG + 30); - - /* Unprotected special-purpose register names. */ - insert_sreg ("ipc", SREG + 128); - insert_sreg ("ipa", SREG + 129); - insert_sreg ("ipb", SREG + 130); - insert_sreg ("q", SREG + 131); - insert_sreg ("alu", SREG + 132); - insert_sreg ("bp", SREG + 133); - insert_sreg ("fc", SREG + 134); - insert_sreg ("cr", SREG + 135); - insert_sreg ("fpe", SREG + 160); - insert_sreg ("inte", SREG + 161); - insert_sreg ("fps", SREG + 162); - /* "", SREG+163); Reserved */ - insert_sreg ("exop", SREG + 164); -} - -/* This function is called once, at assembler startup time. It should - set up all the tables, etc., that the MD part of the assembler will - need. */ - -void -md_begin (void) -{ - const char *retval = NULL; - int lose = 0; - int skipnext = 0; - unsigned int i; - char *strend, *strend2; - - /* Hash up all the opcodes for fast use later. */ - - op_hash = hash_new (); - - for (i = 0; i < num_opcodes; i++) - { - const char *name = machine_opcodes[i].name; - - if (skipnext) - { - skipnext = 0; - continue; - } - - /* Hack to avoid multiple opcode entries. We pre-locate all the - variations (b/i field and P/A field) and handle them. */ - if (!strcmp (name, machine_opcodes[i + 1].name)) - { - if ((machine_opcodes[i].opcode & 0x01000000) != 0 - || (machine_opcodes[i + 1].opcode & 0x01000000) == 0 - || ((machine_opcodes[i].opcode | 0x01000000) - != machine_opcodes[i + 1].opcode)) - goto bad_table; - - strend = machine_opcodes[i].args + strlen (machine_opcodes[i].args) - 1; - strend2 = machine_opcodes[i + 1].args + strlen (machine_opcodes[i + 1].args) - 1; - - switch (*strend) - { - case 'b': - if (*strend2 != 'i') - goto bad_table; - break; - - case 'P': - if (*strend2 != 'A') - goto bad_table; - break; - - default: - bad_table: - fprintf (stderr, "internal error: can't handle opcode %s\n", - name); - lose = 1; - } - - /* OK, this is an i/b or A/P pair. We skip the - higher-valued one, and let the code for operand checking - handle OR-ing in the bit. */ - skipnext = 1; - } - - retval = hash_insert (op_hash, name, (void *) &machine_opcodes[i]); - if (retval != NULL) - { - fprintf (stderr, "internal error: can't hash `%s': %s\n", - machine_opcodes[i].name, retval); - lose = 1; - } - } - - if (lose) - as_fatal (_("Broken assembler. No assembly attempted.")); - - define_some_regs (); -} - -static char * -parse_operand (char *s, expressionS *operandp, int opt) -{ - char *save = input_line_pointer; - char *new; - - input_line_pointer = s; - expression (operandp); - if (operandp->X_op == O_absent && ! opt) - as_bad (_("missing operand")); - new = input_line_pointer; - input_line_pointer = save; - return new; -} - -/* Instruction parsing. Takes a string containing the opcode. - Operands are at input_line_pointer. Output is in the_insn. - Warnings or errors are generated. */ - -static void -machine_ip (char *str) -{ - char *s; - const char *args; - struct machine_opcode *insn; - char *argsStart; - unsigned long opcode; - expressionS the_operand; - expressionS *operand = &the_operand; - unsigned int reg; - - /* Must handle `div0' opcode. */ - s = str; - if (ISALPHA (*s)) - for (; ISALNUM (*s); ++s) - *s = TOLOWER (*s); - - switch (*s) - { - case '\0': - break; - - case ' ': /* FIXME-SOMEDAY more whitespace. */ - *s++ = '\0'; - break; - - default: - as_bad (_("Unknown opcode: `%s'"), str); - return; - } - if ((insn = (struct machine_opcode *) hash_find (op_hash, str)) == NULL) - { - as_bad (_("Unknown opcode `%s'."), str); - return; - } - argsStart = s; - opcode = insn->opcode; - memset (&the_insn, '\0', sizeof (the_insn)); - the_insn.reloc = NO_RELOC; - - /* Build the opcode, checking as we go to make sure that the - operands match. - - If an operand matches, we modify the_insn or opcode appropriately, - and do a "continue". If an operand fails to match, we "break". */ - if (insn->args[0] != '\0') - /* Prime the pump. */ - s = parse_operand (s, operand, insn->args[0] == 'I'); - - for (args = insn->args;; ++args) - { - switch (*args) - { - case '\0': - if (*s == '\0') - { - /* We are truly done. */ - the_insn.opcode = opcode; - return; - } - as_bad (_("Too many operands: %s"), s); - break; - - case ',': - if (*s++ == ',') - { - /* Parse next operand. */ - s = parse_operand (s, operand, args[1] == 'I'); - continue; - } - break; - - case 'v': - /* Trap numbers (immediate field). */ - if (operand->X_op == O_constant) - { - if (operand->X_add_number < 256) - opcode |= (operand->X_add_number << 16); - else - as_bad (_("Immediate value of %ld is too large"), - (long) operand->X_add_number); - continue; - } - the_insn.reloc = RELOC_8; - /* BIG-ENDIAN Byte 1 of insn. */ - the_insn.reloc_offset = 1; - the_insn.exp = *operand; - continue; - - case 'b': /* A general register or 8-bit immediate. */ - case 'i': - /* We treat the two cases identically since we mashed - them together in the opcode table. */ - if (operand->X_op == O_register) - goto general_reg; - - /* Make sure the 'i' case really exists. */ - if ((insn->opcode | IMMEDIATE_BIT) != (insn + 1)->opcode) - break; - - opcode |= IMMEDIATE_BIT; - if (operand->X_op == O_constant) - { - if (operand->X_add_number < 256) - opcode |= operand->X_add_number; - else - as_bad (_("Immediate value of %ld is too large"), - (long) operand->X_add_number); - continue; - } - the_insn.reloc = RELOC_8; - the_insn.reloc_offset = 3; /* BIG-ENDIAN Byte 3 of insn. */ - the_insn.exp = *operand; - continue; - - case 'a': /* Next operand must be a register. */ - case 'c': - general_reg: - /* lrNNN or grNNN or %%expr or a user-def register name. */ - if (operand->X_op != O_register) - break; - know (operand->X_add_symbol == 0); - know (operand->X_op_symbol == 0); - reg = operand->X_add_number; - if (reg >= SREG) - break; - - /* Got the register, now figure out where it goes in the - opcode. */ - switch (*args) - { - case 'a': - opcode |= reg << 8; - continue; - - case 'b': - case 'i': - opcode |= reg; - continue; - - case 'c': - opcode |= reg << 16; - continue; - } - as_fatal (_("failed sanity check.")); - break; - - case 'x': /* 16 bit constant, zero-extended. */ - case 'X': /* 16 bit constant, one-extended. */ - if (operand->X_op == O_constant) - { - opcode |= (operand->X_add_number & 0xFF) << 0 - | ((operand->X_add_number & 0xFF00) << 8); - continue; - } - the_insn.reloc = RELOC_CONST; - the_insn.exp = *operand; - continue; - - case 'h': - if (operand->X_op == O_constant) - { - opcode |= (operand->X_add_number & 0x00FF0000) >> 16 - | (((unsigned long) operand->X_add_number - /* Avoid sign ext. */ & 0xFF000000) >> 8); - continue; - } - the_insn.reloc = RELOC_CONSTH; - the_insn.exp = *operand; - continue; - - case 'P': /* PC-relative jump address. */ - case 'A': /* Absolute jump address. */ - /* These two are treated together since we folded the - opcode table entries together. */ - if (operand->X_op == O_constant) - { - /* Make sure the 'A' case really exists. */ - if ((insn->opcode | ABSOLUTE_BIT) != (insn + 1)->opcode) - break; - - { - bfd_vma v, mask; - - mask = 0x1ffff; - v = operand->X_add_number & ~ mask; - if (v) - as_bad ("call/jmp target out of range"); - } - - opcode |= ABSOLUTE_BIT - | (operand->X_add_number & 0x0003FC00) << 6 - | ((operand->X_add_number & 0x000003FC) >> 2); - continue; - } - - the_insn.reloc = RELOC_JUMPTARG; - the_insn.exp = *operand; - the_insn.pcrel = 1; /* Assume PC-relative jump. */ - /* FIXME-SOON, Do we figure out whether abs later, after - know sym val? */ - continue; - - case 'e': /* Coprocessor enable bit for LOAD/STORE insn. */ - if (operand->X_op == O_constant) - { - if (operand->X_add_number == 0) - continue; - if (operand->X_add_number == 1) - { - opcode |= CE_BIT; - continue; - } - } - break; - - case 'n': /* Control bits for LOAD/STORE instructions. */ - if (operand->X_op == O_constant - && operand->X_add_number < 128) - { - opcode |= (operand->X_add_number << 16); - continue; - } - break; - - case 's': /* Special register number. */ - if (operand->X_op != O_register) - break; - if (operand->X_add_number < SREG) - break; - opcode |= (operand->X_add_number & 0xFF) << 8; - continue; - - case 'u': /* UI bit of CONVERT. */ - if (operand->X_op == O_constant) - { - if (operand->X_add_number == 0) - continue; - if (operand->X_add_number == 1) - { - opcode |= UI_BIT; - continue; - } - } - break; - - case 'r': /* RND bits of CONVERT. */ - if (operand->X_op == O_constant - && operand->X_add_number < 8) - { - opcode |= operand->X_add_number << 4; - continue; - } - break; - - case 'I': /* ID bits of INV and IRETINV. */ - /* This operand is optional. */ - if (operand->X_op == O_absent) - continue; - else if (operand->X_op == O_constant - && operand->X_add_number < 4) - { - opcode |= operand->X_add_number << 16; - continue; - } - break; - - case 'd': /* FD bits of CONVERT. */ - if (operand->X_op == O_constant - && operand->X_add_number < 4) - { - opcode |= operand->X_add_number << 2; - continue; - } - break; - - case 'f': /* FS bits of CONVERT. */ - if (operand->X_op == O_constant - && operand->X_add_number < 4) - { - opcode |= operand->X_add_number << 0; - continue; - } - break; - - case 'C': - if (operand->X_op == O_constant - && operand->X_add_number < 4) - { - opcode |= operand->X_add_number << 16; - continue; - } - break; - - case 'F': - if (operand->X_op == O_constant - && operand->X_add_number < 16) - { - opcode |= operand->X_add_number << 18; - continue; - } - break; - - default: - BAD_CASE (*args); - } - /* Types or values of args don't match. */ - as_bad ("Invalid operands"); - return; - } -} - -/* Assemble a single instruction. Its label has already been handled - by the generic front end. We just parse opcode and operands, and - produce the bytes of data and relocation. */ - -void -md_assemble (char *str) -{ - char *toP; - - know (str); - machine_ip (str); - toP = frag_more (4); - /* Put out the opcode. */ - md_number_to_chars (toP, the_insn.opcode, 4); - - /* Put out the symbol-dependent stuff. */ - if (the_insn.reloc != NO_RELOC) - fix_new_exp (frag_now, - (toP - frag_now->fr_literal + the_insn.reloc_offset), - 4, & the_insn.exp, the_insn.pcrel, the_insn.reloc); -} - -/* This is identical to the md_atof in m68k.c. I think this is right, - but I'm not sure. - - Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -/* Equal to MAX_PRECISION in atof-ieee.c */ -#define MAX_LITTLENUMS 6 - -char * -md_atof (int type, char *litP, int *sizeP) -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return "Bad call to MD_ATOF()"; - } - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - *sizeP = prec * sizeof (LITTLENUM_TYPE); - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (valueT) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - return 0; -} - -/* Write out big-endian. */ - -void -md_number_to_chars (char *buf, valueT val, int n) -{ - number_to_chars_bigendian (buf, val, n); -} - -void -md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) -{ - valueT val = *valP; - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - - fixP->fx_addnumber = val; /* Remember value for emit_reloc. */ - - know (fixP->fx_size == 4); - know (fixP->fx_r_type < NO_RELOC); - - /* This is a hack. There should be a better way to handle this. */ - if (fixP->fx_r_type == RELOC_WDISP30 && fixP->fx_addsy) - val += fixP->fx_where + fixP->fx_frag->fr_address; - - switch (fixP->fx_r_type) - { - case RELOC_32: - buf[0] = val >> 24; - buf[1] = val >> 16; - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_8: - buf[0] = val; - break; - - case RELOC_WDISP30: - val = (val >> 2) + 1; - buf[0] |= (val >> 24) & 0x3f; - buf[1] = (val >> 16); - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_HI22: - buf[1] |= (val >> 26) & 0x3f; - buf[2] = val >> 18; - buf[3] = val >> 10; - break; - - case RELOC_LO10: - buf[2] |= (val >> 8) & 0x03; - buf[3] = val; - break; - - case RELOC_BASE13: - buf[2] |= (val >> 8) & 0x1f; - buf[3] = val; - break; - - case RELOC_WDISP22: - val = (val >> 2) + 1; - /* FALLTHROUGH */ - case RELOC_BASE22: - buf[1] |= (val >> 16) & 0x3f; - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_JUMPTARG: /* 00XX00XX pattern in a word. */ - if (!fixP->fx_done) - { - /* The linker tries to support both AMD and old GNU style - R_IREL relocs. That means that if the addend is exactly - the negative of the address within the section, the - linker will not handle it correctly. */ - if (fixP->fx_pcrel - && val != 0 - && val == - (fixP->fx_frag->fr_address + fixP->fx_where)) - as_bad_where - (fixP->fx_file, fixP->fx_line, - "the linker will not handle this relocation correctly"); - } - else if (fixP->fx_pcrel) - { - if (val + 0x20000 > 0x3ffff) - as_bad_where (fixP->fx_file, fixP->fx_line, - "call/jmp target out of range"); - } - else - /* This case was supposed to be handled in machine_ip. */ - abort (); - - buf[1] = val >> 10; /* Holds bits 0003FFFC of address. */ - buf[3] = val >> 2; - break; - - case RELOC_CONST: /* 00XX00XX pattern in a word. */ - buf[1] = val >> 8; /* Holds bits 0000XXXX. */ - buf[3] = val; - break; - - case RELOC_CONSTH: /* 00XX00XX pattern in a word. */ - buf[1] = val >> 24; /* Holds bits XXXX0000. */ - buf[3] = val >> 16; - break; - - case NO_RELOC: - default: - as_bad (_("bad relocation type: 0x%02x"), fixP->fx_r_type); - break; - } - - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - fixP->fx_done = 1; -} - -#ifdef OBJ_COFF -short -tc_coff_fix2rtype (fixS *fixP) -{ - switch (fixP->fx_r_type) - { - case RELOC_32: return R_WORD; - case RELOC_8: return R_BYTE; - case RELOC_CONST: return R_ILOHALF; - case RELOC_CONSTH: return R_IHIHALF; - case RELOC_JUMPTARG: return R_IREL; - default: - printf (_("need %o3\n"), fixP->fx_r_type); - abort (); - } - - return 0; -} - -#endif /* OBJ_COFF */ - -/* Should never be called for 29k. */ - -void -md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, - segT seg ATTRIBUTE_UNUSED, - fragS *fragP ATTRIBUTE_UNUSED) -{ - as_fatal (_("a29k_convert_frag\n")); -} - -/* Should never be called for a29k. */ - -int -md_estimate_size_before_relax (fragS *fragP ATTRIBUTE_UNUSED, - segT segtype ATTRIBUTE_UNUSED) -{ - as_fatal (_("a29k_estimate_size_before_relax\n")); - return 0; -} - -/* Translate internal representation of relocation info to target format. - - On sparc/29k: first 4 bytes are normal unsigned long address, next three - bytes are index, most sig. byte first. Byte 7 is broken up with - bit 7 as external, bits 6 & 5 unused, and the lower - five bits as relocation type. Next 4 bytes are long addend. */ - -/* Thanx and a tip of the hat to Michael Bloom, mb@ttidca.tti.com. */ - -#ifdef OBJ_AOUT - -void -tc_aout_fix_to_chars (char *where, - fixS *fixP, - relax_addressT segment_address_in_file) -{ - long r_symbolnum; - - know (fixP->fx_r_type < NO_RELOC); - know (fixP->fx_addsy != NULL); - - md_number_to_chars (where, - fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file, - 4); - - r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy) - ? S_GET_TYPE (fixP->fx_addsy) - : fixP->fx_addsy->sy_number); - - where[4] = (r_symbolnum >> 16) & 0x0ff; - where[5] = (r_symbolnum >> 8) & 0x0ff; - where[6] = r_symbolnum & 0x0ff; - where[7] = (((!S_IS_DEFINED (fixP->fx_addsy)) << 7) & 0x80) | (0 & 0x60) | (fixP->fx_r_type & 0x1F); - - /* Also easy. */ - md_number_to_chars (&where[8], fixP->fx_addnumber, 4); -} - -#endif /* OBJ_AOUT */ - -const char *md_shortopts = ""; - -struct option md_longopts[] = -{ - {NULL, no_argument, NULL, 0} -}; - -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (int c ATTRIBUTE_UNUSED, char *arg ATTRIBUTE_UNUSED) -{ - return 0; -} - -void -md_show_usage (FILE *stream ATTRIBUTE_UNUSED) -{ -} - -/* This is called when a line is unrecognized. This is used to handle - definitions of a29k style local labels. */ - -int -a29k_unrecognized_line (int c) -{ - int lab; - char *s; - - if (c != '$' - || ! ISDIGIT (input_line_pointer[0])) - return 0; - - s = input_line_pointer; - - lab = 0; - while (ISDIGIT (*s)) - { - lab = lab * 10 + *s - '0'; - ++s; - } - - if (*s != ':') - { - /* Not a label definition. */ - return 0; - } - - if (dollar_label_defined (lab)) - { - as_bad (_("label \"$%d\" redefined"), lab); - return 0; - } - - define_dollar_label (lab); - colon (dollar_label_name (lab, 0)); - input_line_pointer = s + 1; - - return 1; -} - -/* Default the values of symbols known that should be "predefined". We - don't bother to predefine them unless you actually use one, since there - are a lot of them. */ - -symbolS * -md_undefined_symbol (char *name) -{ - long regnum; - char testbuf[5 + /*SLOP*/ 5]; - - if (name[0] == 'g' || name[0] == 'G' - || name[0] == 'l' || name[0] == 'L' - || name[0] == 's' || name[0] == 'S') - { - /* Perhaps a global or local register name. */ - if (name[1] == 'r' || name[1] == 'R') - { - long maxreg; - - /* Parse the number, make sure it has no extra zeroes or - trailing chars. */ - regnum = atol (&name[2]); - - if (name[0] == 's' || name[0] == 'S') - maxreg = 255; - else - maxreg = 127; - if (regnum > maxreg) - return NULL; - - sprintf (testbuf, "%ld", regnum); - if (strcmp (testbuf, &name[2]) != 0) - return NULL; /* gr007 or lr7foo or whatever. */ - - /* We have a wiener! Define and return a new symbol for it. */ - if (name[0] == 'l' || name[0] == 'L') - regnum += 128; - else if (name[0] == 's' || name[0] == 'S') - regnum += SREG; - return (symbol_new (name, SEG_REGISTER, (valueT) regnum, - &zero_address_frag)); - } - } - - return NULL; -} - -/* Parse an operand that is machine-specific. */ - -void -md_operand (expressionS *expressionP) -{ - if (input_line_pointer[0] == '%' && input_line_pointer[1] == '%') - { - /* We have a numeric register expression. No biggy. */ - input_line_pointer += 2; /* Skip %% */ - (void) expression (expressionP); - if (expressionP->X_op != O_constant - || expressionP->X_add_number > 255) - as_bad (_("Invalid expression after %%%%\n")); - expressionP->X_op = O_register; - } - else if (input_line_pointer[0] == '&') - { - /* We are taking the 'address' of a register...this one is not - in the manual, but it *is* in traps/fpsymbol.h! What they - seem to want is the register number, as an absolute number. */ - input_line_pointer++; /* Skip & */ - (void) expression (expressionP); - if (expressionP->X_op != O_register) - as_bad (_("Invalid register in & expression")); - else - expressionP->X_op = O_constant; - } - else if (input_line_pointer[0] == '$' - && ISDIGIT (input_line_pointer[1])) - { - long lab; - char *name; - symbolS *sym; - - /* This is a local label. */ - ++input_line_pointer; - lab = (long) get_absolute_expression (); - if (dollar_label_defined (lab)) - { - name = dollar_label_name (lab, 0); - sym = symbol_find (name); - } - else - { - name = dollar_label_name (lab, 1); - sym = symbol_find_or_make (name); - } - - expressionP->X_op = O_symbol; - expressionP->X_add_symbol = sym; - expressionP->X_add_number = 0; - } - else if (input_line_pointer[0] == '$') - { - char *s; - char type; - int fieldnum, fieldlimit; - LITTLENUM_TYPE floatbuf[8]; - - /* $float(), $doubleN(), or $extendN() convert floating values - to integers. */ - - s = input_line_pointer; - - ++s; - - fieldnum = 0; - if (strncmp (s, "double", sizeof "double" - 1) == 0) - { - s += sizeof "double" - 1; - type = 'd'; - fieldlimit = 2; - } - else if (strncmp (s, "float", sizeof "float" - 1) == 0) - { - s += sizeof "float" - 1; - type = 'f'; - fieldlimit = 1; - } - else if (strncmp (s, "extend", sizeof "extend" - 1) == 0) - { - s += sizeof "extend" - 1; - type = 'x'; - fieldlimit = 4; - } - else - return; - - if (ISDIGIT (*s)) - { - fieldnum = *s - '0'; - ++s; - } - - if (fieldnum >= fieldlimit) - return; - - SKIP_WHITESPACE (); - if (*s != '(') - return; - ++s; - SKIP_WHITESPACE (); - - s = atof_ieee (s, type, floatbuf); - if (s == NULL) - return; - s = s; - - SKIP_WHITESPACE (); - if (*s != ')') - return; - ++s; - SKIP_WHITESPACE (); - - input_line_pointer = s; - expressionP->X_op = O_constant; - expressionP->X_unsigned = 1; - expressionP->X_add_number = ((floatbuf[fieldnum * 2] - << LITTLENUM_NUMBER_OF_BITS) - + floatbuf[fieldnum * 2 + 1]); - } -} - -/* Round up a section size to the appropriate boundary. */ - -valueT -md_section_align (segT segment ATTRIBUTE_UNUSED, valueT size) -{ - return size; /* Byte alignment is fine. */ -} - -/* Exactly what point is a PC-relative offset relative TO? - On the 29000, they're relative to the address of the instruction, - which we have set up as the address of the fixup too. */ - -long -md_pcrel_from (fixS *fixP) -{ - return fixP->fx_where + fixP->fx_frag->fr_address; -} - -const pseudo_typeS -md_pseudo_table[] = -{ - {"align", s_align_bytes, 4}, - {"block", s_space, 0}, - {"cputype", s_ignore, 0}, /* CPU as 29000 or 29050. */ - {"reg", s_lsym, 0}, /* Register equate, same as equ. */ - {"space", s_ignore, 0}, /* Listing control. */ - {"sect", s_ignore, 0}, /* Creation of coff sections. */ -#ifndef OBJ_COFF - {"use", s_use, 0}, /* We can do this right with coff. */ -#endif - {"word", cons, 4}, - {NULL, 0, 0}, -}; diff -uprN binutils-2.16.91.0.2/gas/config/tc-a29k.h binutils-2.16.91.0.3/gas/config/tc-a29k.h --- binutils-2.16.91.0.2/gas/config/tc-a29k.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-a29k.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,53 +0,0 @@ -/* tc-a29k.h -- Assemble for the AMD 29000. - Copyright 1989, 1990, 1991, 1992, 1993, 1995, 1998, 2003, 2005 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#define TC_A29K - -#define TARGET_BYTES_BIG_ENDIAN 1 - -#define WORKING_DOT_WORD - -#define LEX_DOLLAR 1 - -#define tc_unrecognized_line(c) a29k_unrecognized_line (c) -extern int a29k_unrecognized_line (int); - -#define tc_headers_hook(a) ; /* Not used. */ -#define tc_headers_hook(a) ; /* Not used. */ -#define tc_crawl_symbol_chain(a) ; /* Not used. */ -#define tc_coff_symbol_emit_hook(a) ; /* Not used. */ - -#define AOUT_MACHTYPE 101 -#define TC_COFF_FIX2RTYPE(fix_ptr) tc_coff_fix2rtype (fix_ptr) -#define BFD_ARCH bfd_arch_a29k -#define COFF_MAGIC SIPFBOMAGIC -/* Should the reloc be output ? - on the 29k, this is true only if there is a symbol attached. - on the h8, this is always true, since no fixup is done. */ -#define TC_COUNT_RELOC(x) (x->fx_addsy) -#define TC_CONS_RELOC RELOC_32 - -#define COFF_FLAGS F_AR32W -#define reloc_type int -#define NEED_FX_R_TYPE - -#define ZERO_BASED_SEGMENTS - diff -uprN binutils-2.16.91.0.2/gas/config/tc-arm.c binutils-2.16.91.0.3/gas/config/tc-arm.c --- binutils-2.16.91.0.2/gas/config/tc-arm.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-arm.c 2005-08-22 12:27:42.000000000 -0700 @@ -175,9 +175,6 @@ static int meabi_flags = EF_ARM_EABI_UNK symbolS * GOT_symbol; #endif -/* Size of relocation record. */ -const int md_reloc_size = 8; - /* 0: assemble for ARM, 1: assemble for Thumb, 2: assemble for Thumb even though target CPU does not support thumb @@ -535,6 +532,11 @@ typedef struct literal_pool /* Pointer to a linked list of literal pools. */ literal_pool * list_of_pools = NULL; + +/* State variables for IT block handling. */ +static bfd_boolean current_it_mask = 0; +static int current_cc; + /* Pure syntax. */ @@ -3491,6 +3493,55 @@ parse_cond (char **str) return c->value; } +/* Parse the operands of a table branch instruction. Similar to a memory + operand. */ +static int +parse_tb (char **str) +{ + char * p = *str; + int reg; + + if (skip_past_char (&p, '[') == FAIL) + return FAIL; + + if ((reg = arm_reg_parse (&p, REG_TYPE_RN)) == FAIL) + { + inst.error = _(reg_expected_msgs[REG_TYPE_RN]); + return FAIL; + } + inst.operands[0].reg = reg; + + if (skip_past_comma (&p) == FAIL) + return FAIL; + + if ((reg = arm_reg_parse (&p, REG_TYPE_RN)) == FAIL) + { + inst.error = _(reg_expected_msgs[REG_TYPE_RN]); + return FAIL; + } + inst.operands[0].imm = reg; + + if (skip_past_comma (&p) == SUCCESS) + { + if (parse_shift (&p, 0, SHIFT_LSL_IMMEDIATE) == FAIL) + return FAIL; + if (inst.reloc.exp.X_add_number != 1) + { + inst.error = _("invalid shift"); + return FAIL; + } + inst.operands[0].shifted = 1; + } + + if (skip_past_char (&p, ']') == FAIL) + { + inst.error = _("']' expected"); + return FAIL; + } + *str = p; + return SUCCESS; +} + /* Matcher codes for parse_operands. */ enum operand_parse_code { @@ -3546,6 +3597,7 @@ enum operand_parse_code OP_ENDI, /* Endianness specifier */ OP_PSR, /* CPSR/SPSR mask for msr */ OP_COND, /* conditional code */ + OP_TB, /* Table branch. */ OP_RRnpc_I0, /* ARM register or literal 0 */ OP_RR_EXr, /* ARM register or expression with opt. reloc suff. */ @@ -3787,6 +3839,10 @@ parse_operands (char *str, const unsigne case OP_PSR: val = parse_psr (&str); break; case OP_COND: val = parse_cond (&str); break; + case OP_TB: + po_misc_or_fail (parse_tb (&str)); + break; + /* Register lists */ case OP_REGLST: val = parse_reg_list (&str); @@ -3935,14 +3991,14 @@ encode_thumb32_immediate (unsigned int v { unsigned int a, i; - if (val <= 255) + if (val <= 0xff) return val; - for (i = 0; i < 32; i++) + for (i = 1; i <= 24; i++) { - a = rotate_left (val, i); - if (a >= 128 && a <= 255) - return (a & 0x7f) | (i << 7); + a = val >> i; + if ((val & ~(0xff << i)) == 0) + return ((val >> i) & 0x7f) | ((32 - i) << 7); } a = val & 0xff; @@ -5462,7 +5518,7 @@ static void do_iwmmxt_wldstd (void) { inst.instruction |= inst.operands[0].reg << 12; - encode_arm_cp_address (1, TRUE, FALSE, BFD_RELOC_ARM_CP_OFF_IMM_S2); + encode_arm_cp_address (1, TRUE, FALSE, 0); } static void @@ -5583,6 +5639,8 @@ encode_thumb32_shifted_operand (int i) unsigned int value = inst.reloc.exp.X_add_number; unsigned int shift = inst.operands[i].shift_kind; + constraint (inst.operands[i].immisreg, + _("shift by register not allowed in thumb mode")); inst.instruction |= inst.operands[i].reg; if (shift == SHIFT_RRX) inst.instruction |= SHIFT_ROR << 4; @@ -5641,9 +5699,10 @@ encode_thumb32_addr_mode (int i, bfd_boo { constraint (inst.reloc.exp.X_op != O_constant, _("expression too complex")); - constraint (inst.reloc.exp.X_add_number < 0 || inst.reloc.exp.X_add_number > 3, + constraint (inst.reloc.exp.X_add_number < 0 + || inst.reloc.exp.X_add_number > 3, _("shift out of range")); - inst.instruction |= inst.reloc.exp.X_op << 4; + inst.instruction |= inst.reloc.exp.X_add_number << 4; } inst.reloc.type = BFD_RELOC_UNUSED; } @@ -5667,7 +5726,6 @@ encode_thumb32_addr_mode (int i, bfd_boo inst.instruction |= 0x00000100; } inst.reloc.type = BFD_RELOC_ARM_T32_OFFSET_IMM; - inst.reloc.pc_rel = is_pc; } else if (inst.operands[i].postind) { @@ -5695,6 +5753,7 @@ encode_thumb32_addr_mode (int i, bfd_boo X(adcs, 4140, eb500000), \ X(add, 1c00, eb000000), \ X(adds, 1c00, eb100000), \ + X(adr, 000f, f20f0000), \ X(and, 4000, ea000000), \ X(ands, 4000, ea100000), \ X(asr, 1000, fa40f000), \ @@ -5728,8 +5787,8 @@ encode_thumb32_addr_mode (int i, bfd_boo X(negs, 4240, f1d00000), /* rsbs #0 */ \ X(orr, 4300, ea400000), \ X(orrs, 4300, ea500000), \ - X(pop, bc00, e8ad0000), /* ldmia sp!,... */ \ - X(push, b400, e8bd0000), /* stmia sp!,... */ \ + X(pop, bc00, e8bd0000), /* ldmia sp!,... */ \ + X(push, b400, e92d0000), /* stmdb sp!,... */ \ X(rev, ba00, fa90f080), \ X(rev16, ba40, fa90f090), \ X(revsh, bac0, fa90f0b0), \ @@ -5775,6 +5834,20 @@ static const unsigned int thumb_op32[] = /* Thumb instruction encoders, in alphabetical order. */ +/* ADDW or SUBW. */ +static void +do_t_add_sub_w (void) +{ + int Rd, Rn; + + Rd = inst.operands[0].reg; + Rn = inst.operands[1].reg; + + constraint (Rd == 15, _("PC not allowed as destination")); + inst.instruction |= (Rn << 16) | (Rd << 8); + inst.reloc.type = BFD_RELOC_ARM_T32_IMM12; +} + /* Parse an add or subtract instruction. We get here with inst.instruction equalling any of THUMB_OPCODE_add, adds, sub, or subs. */ @@ -5792,6 +5865,8 @@ do_t_add_sub (void) { if (!inst.operands[2].isreg) { + /* ??? Convert large immediates to addw/subw. */ + /* ??? 16-bit adds with small immediates. */ /* For an immediate, we always generate a 32-bit opcode; section relaxation will shrink it later if possible. */ inst.instruction = THUMB_OP32 (inst.instruction); @@ -5806,11 +5881,20 @@ do_t_add_sub (void) /* See if we can do this with a 16-bit instruction. */ if (!inst.operands[2].shifted && inst.size_req != 4) { - if (Rd <= 7 && Rn <= 7 && Rn <= 7 - && (inst.instruction == T_MNEM_adds - || inst.instruction == T_MNEM_subs)) + bfd_boolean narrow; + + if (inst.instruction == T_MNEM_adds + || inst.instruction == T_MNEM_subs) + narrow = (current_it_mask == 0); + else + narrow = (current_it_mask != 0); + if (Rd > 7 || Rs > 7 || Rn > 7) + narrow = FALSE; + + if (narrow) { - inst.instruction = (inst.instruction == T_MNEM_adds + inst.instruction = ((inst.instruction == T_MNEM_adds + || inst.instruction == T_MNEM_add) ? T_OPCODE_ADD_R3 : T_OPCODE_SUB_R3); inst.instruction |= Rd | (Rs << 3) | (Rn << 6); @@ -5896,11 +5980,24 @@ do_t_add_sub (void) static void do_t_adr (void) { - inst.reloc.type = BFD_RELOC_ARM_THUMB_ADD; - inst.reloc.exp.X_add_number -= 4; /* PC relative adjust. */ - inst.reloc.pc_rel = 1; + if (unified_syntax && inst.size_req != 2) + { + /* Always generate a 32-bit opcode; + section relaxation will shrink it later if possible. */ + inst.instruction = THUMB_OP32 (inst.instruction); + inst.instruction |= inst.operands[0].reg << 8; + inst.reloc.type = BFD_RELOC_ARM_T32_ADD_PC12; + inst.reloc.pc_rel = 1; + } + else + { + inst.instruction = THUMB_OP16 (inst.instruction); + inst.reloc.type = BFD_RELOC_ARM_THUMB_ADD; + inst.reloc.exp.X_add_number -= 4; /* PC relative adjust. */ + inst.reloc.pc_rel = 1; - inst.instruction |= inst.operands[0].reg << 4; + inst.instruction |= inst.operands[0].reg << 4; + } } /* Arithmetic instructions for which there is just one 16-bit @@ -5934,10 +6031,22 @@ do_t_arit3 (void) } else { + bfd_boolean narrow; + /* See if we can do this with a 16-bit instruction. */ - if (THUMB_SETS_FLAGS (inst.instruction) - && !inst.operands[2].shifted - && inst.size_req != 4 + if (THUMB_SETS_FLAGS (inst.instruction)) + narrow = current_it_mask == 0; + else + narrow = current_it_mask != 0; + + if (Rd > 7 || Rn > 7 || Rs > 7) + narrow = FALSE; + if (inst.operands[2].shifted) + narrow = FALSE; + if (inst.size_req == 4) + narrow = FALSE; + + if (narrow && Rd == Rs) { inst.instruction = THUMB_OP16 (inst.instruction); @@ -6005,10 +6114,22 @@ do_t_arit3c (void) } else { + bfd_boolean narrow; + /* See if we can do this with a 16-bit instruction. */ - if (THUMB_SETS_FLAGS (inst.instruction) - && !inst.operands[2].shifted - && inst.size_req != 4) + if (THUMB_SETS_FLAGS (inst.instruction)) + narrow = current_it_mask == 0; + else + narrow = current_it_mask != 0; + + if (Rd > 7 || Rn > 7 || Rs > 7) + narrow = FALSE; + if (inst.operands[2].shifted) + narrow = FALSE; + if (inst.size_req == 4) + narrow = FALSE; + + if (narrow) { if (Rd == Rs) { @@ -6279,21 +6400,26 @@ static void do_t_it (void) { unsigned int cond = inst.operands[0].imm; + + current_it_mask = (inst.instruction & 0xf) | 0x10; + current_cc = cond; + + /* If the condition is a negative condition, invert the mask. */ if ((cond & 0x1) == 0x0) { unsigned int mask = inst.instruction & 0x000f; - inst.instruction &= 0xfff0; if ((mask & 0x7) == 0) /* no conversion needed */; else if ((mask & 0x3) == 0) - mask = (~(mask & 0x8) & 0x8) | 0x4; - else if ((mask & 1) == 0) - mask = (~(mask & 0xC) & 0xC) | 0x2; + mask ^= 0x8; + else if ((mask & 0x1) == 0) + mask ^= 0xC; else - mask = (~(mask & 0xE) & 0xE) | 0x1; + mask ^= 0xE; - inst.instruction |= (mask & 0xF); + inst.instruction &= 0xfff0; + inst.instruction |= mask; } inst.instruction |= cond << 4; @@ -6570,6 +6696,18 @@ do_t_mov_cmp (void) { int r0off = (inst.instruction == T_MNEM_mov || inst.instruction == T_MNEM_movs) ? 8 : 16; + bfd_boolean narrow; + bfd_boolean low_regs; + + low_regs = (inst.operands[0].reg <= 7 && inst.operands[1].reg <= 7); + if (current_it_mask) + narrow = inst.instruction != T_MNEM_movs; + else + narrow = inst.instruction != T_MNEM_movs || low_regs; + if (inst.size_req == 4 + || inst.operands[1].shifted) + narrow = FALSE; + if (!inst.operands[1].isreg) { /* For an immediate, we always generate a 32-bit opcode; @@ -6579,10 +6717,7 @@ do_t_mov_cmp (void) inst.instruction |= inst.operands[0].reg << r0off; inst.reloc.type = BFD_RELOC_ARM_T32_IMMEDIATE; } - else if (inst.size_req == 4 - || inst.operands[1].shifted - || (inst.instruction == T_MNEM_movs - && (inst.operands[0].reg > 7 || inst.operands[1].reg > 7))) + else if (!narrow) { inst.instruction = THUMB_OP32 (inst.instruction); inst.instruction |= inst.operands[0].reg << r0off; @@ -6607,7 +6742,7 @@ do_t_mov_cmp (void) break; case T_MNEM_cmp: - if (inst.operands[0].reg <= 7 && inst.operands[1].reg <= 7) + if (low_regs) { inst.instruction = T_OPCODE_CMP_LR; inst.instruction |= inst.operands[0].reg; @@ -6675,6 +6810,20 @@ do_t_mvn_tst (void) { int r0off = (inst.instruction == T_MNEM_mvn || inst.instruction == T_MNEM_mvns) ? 8 : 16; + bfd_boolean narrow; + + if (inst.size_req == 4 + || inst.instruction > 0xffff + || inst.operands[1].shifted + || inst.operands[0].reg > 7 || inst.operands[1].reg > 7) + narrow = FALSE; + else if (inst.instruction == T_MNEM_cmn) + narrow = TRUE; + else if (THUMB_SETS_FLAGS (inst.instruction)) + narrow = (current_it_mask == 0); + else + narrow = (current_it_mask != 0); + if (!inst.operands[1].isreg) { /* For an immediate, we always generate a 32-bit opcode; @@ -6688,12 +6837,7 @@ do_t_mvn_tst (void) else { /* See if we can do this with a 16-bit instruction. */ - if (inst.instruction < 0xffff - && THUMB_SETS_FLAGS (inst.instruction) - && !inst.operands[1].shifted - && inst.operands[0].reg <= 7 - && inst.operands[1].reg <= 7 - && inst.size_req != 4) + if (narrow) { inst.instruction = THUMB_OP16 (inst.instruction); inst.instruction |= inst.operands[0].reg; @@ -6821,9 +6965,18 @@ do_t_neg (void) { if (unified_syntax) { - if (inst.operands[0].reg > 7 || inst.operands[1].reg > 7 - || !THUMB_SETS_FLAGS (inst.instruction) - || inst.size_req == 4) + bfd_boolean narrow; + + if (THUMB_SETS_FLAGS (inst.instruction)) + narrow = (current_it_mask == 0); + else + narrow = (current_it_mask != 0); + if (inst.operands[0].reg > 7 || inst.operands[1].reg > 7) + narrow = FALSE; + if (inst.size_req == 4) + narrow = FALSE; + + if (!narrow) { inst.instruction = THUMB_OP32 (inst.instruction); inst.instruction |= inst.operands[0].reg << 8; @@ -6881,39 +7034,52 @@ do_t_pld (void) static void do_t_push_pop (void) { + unsigned mask; + constraint (inst.operands[0].writeback, _("push/pop do not support {reglist}^")); constraint (inst.reloc.type != BFD_RELOC_UNUSED, _("expression too complex")); - if ((inst.operands[0].imm & ~0xff) == 0) + mask = inst.operands[0].imm; + if ((mask & ~0xff) == 0) inst.instruction = THUMB_OP16 (inst.instruction); else if ((inst.instruction == T_MNEM_push - && (inst.operands[0].imm & ~0xff) == 1 << REG_LR) + && (mask & ~0xff) == 1 << REG_LR) || (inst.instruction == T_MNEM_pop - && (inst.operands[0].imm & ~0xff) == 1 << REG_PC)) + && (mask & ~0xff) == 1 << REG_PC)) { inst.instruction = THUMB_OP16 (inst.instruction); inst.instruction |= THUMB_PP_PC_LR; - inst.operands[0].imm &= 0xff; + mask &= 0xff; } else if (unified_syntax) { - if (inst.operands[1].imm & (1 << 13)) - as_warn (_("SP should not be in register list")); + if (mask & (1 << 13)) + inst.error = _("SP not allowed in register list"); if (inst.instruction == T_MNEM_push) { - if (inst.operands[1].imm & (1 << 15)) - as_warn (_("PC should not be in register list")); + if (mask & (1 << 15)) + inst.error = _("PC not allowed in register list"); } else { - if (inst.operands[1].imm & (1 << 14) - && inst.operands[1].imm & (1 << 15)) - as_warn (_("LR and PC should not both be in register list")); + if (mask & (1 << 14) + && mask & (1 << 15)) + inst.error = _("LR and PC should not both be in register list"); } - - inst.instruction = THUMB_OP32 (inst.instruction); + if ((mask & (mask - 1)) == 0) + { + /* Single register push/pop implemented as str/ldr. */ + if (inst.instruction == T_MNEM_push) + inst.instruction = 0xf84d0d04; /* str reg, [sp, #-4]! */ + else + inst.instruction = 0xf85d0b04; /* ldr reg, [sp], #4 */ + mask = ffs(mask) - 1; + mask <<= 12; + } + else + inst.instruction = THUMB_OP32 (inst.instruction); } else { @@ -6921,7 +7087,7 @@ do_t_push_pop (void) return; } - inst.instruction |= inst.operands[0].imm; + inst.instruction |= mask; } static void @@ -6988,12 +7154,38 @@ do_t_shift (void) if (unified_syntax) { - if (inst.operands[0].reg > 7 - || inst.operands[1].reg > 7 - || !THUMB_SETS_FLAGS (inst.instruction) - || (!inst.operands[2].isreg && inst.instruction == T_MNEM_rors) - || (inst.operands[2].isreg && inst.operands[1].reg != inst.operands[0].reg) - || inst.size_req == 4) + bfd_boolean narrow; + int shift_kind; + + switch (inst.instruction) + { + case T_MNEM_asr: + case T_MNEM_asrs: shift_kind = SHIFT_ASR; break; + case T_MNEM_lsl: + case T_MNEM_lsls: shift_kind = SHIFT_LSL; break; + case T_MNEM_lsr: + case T_MNEM_lsrs: shift_kind = SHIFT_LSR; break; + case T_MNEM_ror: + case T_MNEM_rors: shift_kind = SHIFT_ROR; break; + default: abort (); + } + + if (THUMB_SETS_FLAGS (inst.instruction)) + narrow = (current_it_mask == 0); + else + narrow = (current_it_mask != 0); + if (inst.operands[0].reg > 7 || inst.operands[1].reg > 7) + narrow = FALSE; + if (!inst.operands[2].isreg && shift_kind == SHIFT_ROR) + narrow = FALSE; + if (inst.operands[2].isreg + && (inst.operands[1].reg != inst.operands[0].reg + || inst.operands[2].reg > 7)) + narrow = FALSE; + if (inst.size_req == 4) + narrow = FALSE; + + if (!narrow) { if (inst.operands[2].isreg) { @@ -7005,19 +7197,7 @@ do_t_shift (void) else { inst.operands[1].shifted = 1; - switch (inst.instruction) - { - case T_MNEM_asr: - case T_MNEM_asrs: inst.operands[1].shift_kind = SHIFT_ASR; break; - case T_MNEM_lsl: - case T_MNEM_lsls: inst.operands[1].shift_kind = SHIFT_LSL; break; - case T_MNEM_lsr: - case T_MNEM_lsrs: inst.operands[1].shift_kind = SHIFT_LSR; break; - case T_MNEM_ror: - case T_MNEM_rors: inst.operands[1].shift_kind = SHIFT_ROR; break; - default: abort (); - } - + inst.operands[1].shift_kind = shift_kind; inst.instruction = THUMB_OP32 (THUMB_SETS_FLAGS (inst.instruction) ? T_MNEM_movs : T_MNEM_mov); inst.instruction |= inst.operands[0].reg << 8; @@ -7030,12 +7210,12 @@ do_t_shift (void) { if (inst.operands[2].isreg) { - switch (inst.instruction) + switch (shift_kind) { - case T_MNEM_asrs: inst.instruction = T_OPCODE_ASR_R; break; - case T_MNEM_lsls: inst.instruction = T_OPCODE_LSL_R; break; - case T_MNEM_lsrs: inst.instruction = T_OPCODE_LSR_R; break; - case T_MNEM_rors: inst.instruction = T_OPCODE_ROR_R; break; + case SHIFT_ASR: inst.instruction = T_OPCODE_ASR_R; break; + case SHIFT_LSL: inst.instruction = T_OPCODE_LSL_R; break; + case SHIFT_LSR: inst.instruction = T_OPCODE_LSR_R; break; + case SHIFT_ROR: inst.instruction = T_OPCODE_ROR_R; break; default: abort (); } @@ -7044,11 +7224,11 @@ do_t_shift (void) } else { - switch (inst.instruction) + switch (shift_kind) { - case T_MNEM_asrs: inst.instruction = T_OPCODE_ASR_I; break; - case T_MNEM_lsls: inst.instruction = T_OPCODE_LSL_I; break; - case T_MNEM_lsrs: inst.instruction = T_OPCODE_LSR_I; break; + case SHIFT_ASR: inst.instruction = T_OPCODE_ASR_I; break; + case SHIFT_LSL: inst.instruction = T_OPCODE_LSL_I; break; + case SHIFT_LSR: inst.instruction = T_OPCODE_LSR_I; break; default: abort (); } inst.reloc.type = BFD_RELOC_ARM_THUMB_SHIFT; @@ -7225,6 +7405,21 @@ do_t_swi (void) } static void +do_t_tb (void) +{ + int half; + + half = (inst.instruction & 0x10) != 0; + constraint (inst.operands[0].imm == 15, + _("PC is not a valid index register")); + constraint (!half && inst.operands[0].shifted, + _("instruction does not allow shifted index")); + constraint (half && !inst.operands[0].shifted, + _("instruction requires shifted index")); + inst.instruction |= (inst.operands[0].reg << 16) | inst.operands[0].imm; +} + +static void do_t_usat (void) { inst.instruction |= inst.operands[0].reg << 8; @@ -7575,12 +7770,35 @@ md_assemble (char *str) return; } + /* Check conditional suffixes. */ + if (current_it_mask) + { + int cond; + cond = current_cc ^ ((current_it_mask >> 4) & 1) ^ 1; + if (cond != inst.cond) + { + as_bad (_("incorrect condition in IT block")); + return; + } + current_it_mask <<= 1; + current_it_mask &= 0x1f; + } + else if (inst.cond != COND_ALWAYS && opcode->tencode != do_t_branch) + { + as_bad (_("thumb conditional instrunction not in IT block")); + return; + } + mapping_state (MAP_THUMB); inst.instruction = opcode->tvalue; if (!parse_operands (p, opcode->operands)) opcode->tencode (); + /* Clear current_it_mask at the end of an IT block. */ + if (current_it_mask == 0x10) + current_it_mask = 0; + if (!inst.error) { assert (inst.instruction < 0xe800 || inst.instruction > 0xffff); @@ -8123,7 +8341,7 @@ static const struct asm_opcode insns[] = TCE(bl, b000000, f000f800, 1, (EXPr), branch, t_branch23), /* Pseudo ops. */ - TCE(adr, 28f0000, 000f, 2, (RR, EXP), adr, t_adr), + tCE(adr, 28f0000, adr, 2, (RR, EXP), adr, t_adr), C3(adrl, 28f0000, 2, (RR, EXP), adrl), tCE(nop, 1a00000, nop, 1, (oI255c), nop, t_nop), @@ -8159,11 +8377,11 @@ static const struct asm_opcode insns[] = TC3(strt, 4200000, f8400e00, 2, (RR, ADDR), ldstt, t_ldstt), TC3(strbt, 4600000, f8200e00, 2, (RR, ADDR), ldstt, t_ldstt), - TC3(stmdb, 9000000, e9100000, 2, (RRw, REGLST), ldmstm, t_ldmstm), - TC3(stmfd, 9000000, e9100000, 2, (RRw, REGLST), ldmstm, t_ldmstm), + TC3(stmdb, 9000000, e9000000, 2, (RRw, REGLST), ldmstm, t_ldmstm), + TC3(stmfd, 9000000, e9000000, 2, (RRw, REGLST), ldmstm, t_ldmstm), - TC3(ldmdb, 9100000, e9000000, 2, (RRw, REGLST), ldmstm, t_ldmstm), - TC3(ldmea, 9100000, e9000000, 2, (RRw, REGLST), ldmstm, t_ldmstm), + TC3(ldmdb, 9100000, e9100000, 2, (RRw, REGLST), ldmstm, t_ldmstm), + TC3(ldmea, 9100000, e9100000, 2, (RRw, REGLST), ldmstm, t_ldmstm), /* V1 instructions with no Thumb analogue at all. */ CE(rsc, 0e00000, 3, (RR, oRR, SH), arit), @@ -8465,6 +8683,15 @@ static const struct asm_opcode insns[] = TUE(ittee, 0, bf09, 1, (COND), it, t_it), TUE(iteee, 0, bf01, 1, (COND), it, t_it), + /* Thumb2 only instructions. */ +#undef ARM_VARIANT +#define ARM_VARIANT 0 + + TCE(addw, 0, f2000000, 3, (RR, RR, EXPi), 0, t_add_sub_w), + TCE(subw, 0, f2a00000, 3, (RR, RR, EXPi), 0, t_add_sub_w), + TCE(tbb, 0, e8d0f000, 1, (TB), 0, t_tb), + TCE(tbh, 0, e8d0f010, 1, (TB), 0, t_tb), + #undef ARM_VARIANT #define ARM_VARIANT FPU_FPA_EXT_V1 /* Core FPA instruction set (V1). */ CE(wfs, e200110, 1, (RR), rd), @@ -9919,6 +10146,7 @@ md_pcrel_from_section (fixS * fixP, segT case BFD_RELOC_ARM_THUMB_OFFSET: case BFD_RELOC_ARM_T32_OFFSET_IMM: + case BFD_RELOC_ARM_T32_ADD_PC12: return (base + 4) & ~3; /* Thumb branches are simply offset by +4. */ @@ -10440,6 +10668,8 @@ md_apply_fix (fixS * fixP, break; case BFD_RELOC_ARM_T32_IMMEDIATE: + case BFD_RELOC_ARM_T32_IMM12: + case BFD_RELOC_ARM_T32_ADD_PC12: /* We claim that this fixup has been processed here, even if in fact we generate an error because we do not have a reloc for it, so tc_gen_reloc will reject it. */ @@ -10458,9 +10688,23 @@ md_apply_fix (fixS * fixP, newval <<= 16; newval |= md_chars_to_number (buf+2, THUMB_SIZE); - newimm = encode_thumb32_immediate (value); - /* FUTURE: Implement analogue of negate_data_op for T32. */ + if (fixP->fx_r_type == BFD_RELOC_ARM_T32_IMMEDIATE) + newimm = encode_thumb32_immediate (value); + else + { + /* 12 bit immediate for addw/subw. */ + if (value < 0) + { + value = -value; + newval ^= 0x00a00000; + } + if (value > 0xfff) + newimm = (unsigned int) FAIL; + else + newimm = value; + } + if (newimm == (unsigned int)FAIL) { as_bad_where (fixP->fx_file, fixP->fx_line, diff -uprN binutils-2.16.91.0.2/gas/config/tc-arm.h binutils-2.16.91.0.3/gas/config/tc-arm.h --- binutils-2.16.91.0.2/gas/config/tc-arm.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-arm.h 2005-08-22 12:27:42.000000000 -0700 @@ -32,8 +32,6 @@ #define COFF_MAGIC ARMMAGIC #define TARGET_ARCH bfd_arch_arm -#define AOUT_MACHTYPE 0 - #define DIFF_EXPR_OK #ifdef LITTLE_ENDIAN @@ -121,7 +119,6 @@ struct fix; #define TC_START_LABEL(C,STR) (c == ':' || (c == '/' && arm_data_in_code ())) #define tc_canonicalize_symbol_name(str) arm_canonicalize_symbol_name (str); #define obj_adjust_symtab() arm_adjust_symtab () -#define tc_aout_pre_write_hook(x) {;} /* not used */ #define LISTING_HEADER "ARM GAS " diff -uprN binutils-2.16.91.0.2/gas/config/tc-avr.c binutils-2.16.91.0.3/gas/config/tc-avr.c --- binutils-2.16.91.0.2/gas/config/tc-avr.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-avr.c 2005-08-22 12:27:42.000000000 -0700 @@ -1085,12 +1085,11 @@ md_apply_fix (fixP, valP, seg) } } -/* A `BFD_ASSEMBLER' GAS will call this to generate a reloc. GAS - will pass the resulting reloc to `bfd_install_relocation'. This - currently works poorly, as `bfd_install_relocation' often does the - wrong thing, and instances of `tc_gen_reloc' have been written to - work around the problems, which in turns makes it difficult to fix - `bfd_install_relocation'. */ +/* GAS will call this to generate a reloc, passing the resulting reloc + to `bfd_install_relocation'. This currently works poorly, as + `bfd_install_relocation' often does the wrong thing, and instances of + `tc_gen_reloc' have been written to work around the problems, which + in turns makes it difficult to fix `bfd_install_relocation'. */ /* If while processing a fixup, a reloc really needs to be created then it is done here. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-avr.h binutils-2.16.91.0.3/gas/config/tc-avr.h --- binutils-2.16.91.0.2/gas/config/tc-avr.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-avr.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* This file is tc-avr.h - Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002, 2005 Free Software Foundation, Inc. Contributed by Denis Chertykov @@ -20,10 +20,6 @@ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef BFD_ASSEMBLER - #error AVR support requires BFD_ASSEMBLER -#endif - /* By convention, you should define this macro in the `.h' file. For example, `tc-m68k.h' defines `TC_M68K'. You might have to use this if it is necessary to add CPU specific code to the object format diff -uprN binutils-2.16.91.0.2/gas/config/tc-crx.h binutils-2.16.91.0.3/gas/config/tc-crx.h --- binutils-2.16.91.0.2/gas/config/tc-crx.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-crx.h 2005-08-22 12:27:42.000000000 -0700 @@ -31,10 +31,8 @@ #define TARGET_FORMAT "elf32-crx" #define TARGET_ARCH bfd_arch_crx -#define BFD_ARCH bfd_arch_crx #define WORKING_DOT_WORD -#define NEED_FX_R_TYPE #define LOCAL_LABEL_PREFIX '.' #define md_undefined_symbol(s) 0 diff -uprN binutils-2.16.91.0.2/gas/config/tc-d10v.h binutils-2.16.91.0.3/gas/config/tc-d10v.h --- binutils-2.16.91.0.2/gas/config/tc-d10v.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-d10v.h 2005-08-22 12:27:42.000000000 -0700 @@ -24,10 +24,6 @@ #define TARGET_BYTES_BIG_ENDIAN 0 -#ifndef BFD_ASSEMBLER - #error D10V support requires BFD_ASSEMBLER -#endif - /* The target BFD architecture. */ #define TARGET_ARCH bfd_arch_d10v diff -uprN binutils-2.16.91.0.2/gas/config/tc-d30v.h binutils-2.16.91.0.3/gas/config/tc-d30v.h --- binutils-2.16.91.0.2/gas/config/tc-d30v.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-d30v.h 2005-08-22 12:27:42.000000000 -0700 @@ -22,10 +22,6 @@ #define TC_D30V -#ifndef BFD_ASSEMBLER - #error D30V support requires BFD_ASSEMBLER -#endif - /* The target BFD architecture. */ #define TARGET_ARCH bfd_arch_d30v #define TARGET_FORMAT "elf32-d30v" diff -uprN binutils-2.16.91.0.2/gas/config/tc-dlx.h binutils-2.16.91.0.3/gas/config/tc-dlx.h --- binutils-2.16.91.0.2/gas/config/tc-dlx.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-dlx.h 2005-08-22 12:27:42.000000000 -0700 @@ -22,10 +22,6 @@ #define TC_DLX -#ifndef BFD_ASSEMBLER - #error DLX support requires BFD_ASSEMBLER -#endif - #ifndef __BFD_H_SEEN__ #include "bfd.h" #endif @@ -52,21 +48,9 @@ extern bfd_boolean md_dlx_fix_adjustable #define tc_unrecognized_line(c) dlx_unrecognized_line (c) -#define tc_headers_hook(a) ; /* Not used. */ -#define tc_headers_hook(a) ; /* Not used. */ -#define tc_crawl_symbol_chain(a) ; /* Not used. */ #define tc_coff_symbol_emit_hook(a) ; /* Not used. */ -#define AOUT_MACHTYPE 101 -#define TC_COFF_FIX2RTYPE(fix_ptr) tc_coff_fix2rtype (fix_ptr) -#define BFD_ARCH bfd_arch_dlx #define COFF_MAGIC DLXMAGIC -/* Should the reloc be output ? - on the 29k, this is true only if there is a symbol attached. - on the h8, this is always true, since no fixup is done - on dlx, I have no idea!! but lets keep it here just for fun. */ -#define TC_COUNT_RELOC(x) (x->fx_addsy) -#define TC_CONS_RELOC BFD_RELOC_32_PCREL /* No shared lib support, so we don't need to ensure externally visible symbols can be overridden. */ @@ -77,8 +61,6 @@ extern bfd_boolean md_dlx_fix_adjustable /* Values passed to md_apply_fix don't include the symbol value. */ #define MD_APPLY_SYM_VALUE(FIX) 0 -#define NEED_FX_R_TYPE - /* Zero Based Segment?? sound very dangerous to me! */ #define ZERO_BASED_SEGMENTS diff -uprN binutils-2.16.91.0.2/gas/config/tc-fr30.h binutils-2.16.91.0.3/gas/config/tc-fr30.h --- binutils-2.16.91.0.2/gas/config/tc-fr30.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-fr30.h 2005-08-22 12:27:42.000000000 -0700 @@ -21,11 +21,6 @@ #define TC_FR30 -#ifndef BFD_ASSEMBLER -/* Leading space so will compile with cc. */ - #error FR30 support requires BFD_ASSEMBLER -#endif - #define LISTING_HEADER "FR30 GAS " /* The target BFD architecture. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-frv.h binutils-2.16.91.0.3/gas/config/tc-frv.h --- binutils-2.16.91.0.2/gas/config/tc-frv.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-frv.h 2005-08-22 12:27:42.000000000 -0700 @@ -20,11 +20,6 @@ #define TC_FRV -#ifndef BFD_ASSEMBLER -/* leading space so will compile with cc */ - #error FRV support requires BFD_ASSEMBLER -#endif - #define LISTING_HEADER "FRV GAS " /* The target BFD architecture. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-h8300.c binutils-2.16.91.0.3/gas/config/tc-h8300.c --- binutils-2.16.91.0.2/gas/config/tc-h8300.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-h8300.c 2005-08-22 12:27:42.000000000 -0700 @@ -25,10 +25,7 @@ #include "as.h" #include "subsegs.h" #include "bfd.h" - -#ifdef BFD_ASSEMBLER #include "dwarf2dbg.h" -#endif #define DEFINE_TABLE #define h8_opcodes ops @@ -77,10 +74,8 @@ h8300hmode (int arg ATTRIBUTE_UNUSED) { Hmode = 1; Smode = 0; -#ifdef BFD_ASSEMBLER if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300h)) as_warn (_("could not set architecture and machine")); -#endif } static void @@ -88,10 +83,8 @@ h8300smode (int arg ATTRIBUTE_UNUSED) { Smode = 1; Hmode = 1; -#ifdef BFD_ASSEMBLER if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300s)) as_warn (_("could not set architecture and machine")); -#endif } static void @@ -100,10 +93,8 @@ h8300hnmode (int arg ATTRIBUTE_UNUSED) Hmode = 1; Smode = 0; Nmode = 1; -#ifdef BFD_ASSEMBLER if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300hn)) as_warn (_("could not set architecture and machine")); -#endif } static void @@ -112,10 +103,8 @@ h8300snmode (int arg ATTRIBUTE_UNUSED) Smode = 1; Hmode = 1; Nmode = 1; -#ifdef BFD_ASSEMBLER if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sn)) as_warn (_("could not set architecture and machine")); -#endif } static void @@ -124,10 +113,8 @@ h8300sxmode (int arg ATTRIBUTE_UNUSED) Smode = 1; Hmode = 1; SXmode = 1; -#ifdef BFD_ASSEMBLER if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sx)) as_warn (_("could not set architecture and machine")); -#endif } static void @@ -137,10 +124,8 @@ h8300sxnmode (int arg ATTRIBUTE_UNUSED) Hmode = 1; SXmode = 1; Nmode = 1; -#ifdef BFD_ASSEMBLER if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sxn)) as_warn (_("could not set architecture and machine")); -#endif } static void @@ -184,8 +169,6 @@ const pseudo_typeS md_pseudo_table[] = {0, 0, 0} }; -const int md_reloc_size; - const char EXP_CHARS[] = "eE"; /* Chars that mean this number is a floating point constant @@ -208,10 +191,8 @@ md_begin (void) char prev_buffer[100]; int idx = 0; -#ifdef BFD_ASSEMBLER if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300)) as_warn (_("could not set architecture and machine")); -#endif opcode_hash_control = hash_new (); prev_buffer[0] = 0; @@ -2017,18 +1998,8 @@ md_assemble (char *str) build_bytes (instruction, operand); -#ifdef BFD_ASSEMBLER dwarf2_emit_insn (instruction->length); -#endif -} - -#ifndef BFD_ASSEMBLER -void -tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_crawl_symbol_chain \n")); } -#endif symbolS * md_undefined_symbol (char *name ATTRIBUTE_UNUSED) @@ -2036,14 +2007,6 @@ md_undefined_symbol (char *name ATTRIBUT return 0; } -#ifndef BFD_ASSEMBLER -void -tc_headers_hook (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_headers_hook \n")); -} -#endif - /* Various routines to kill one day */ /* Equal to MAX_PRECISION in atof-ieee.c */ #define MAX_LITTLENUMS 6 @@ -2132,12 +2095,7 @@ tc_aout_fix_to_chars (void) } void -md_convert_frag ( -#ifdef BFD_ASSEMBLER - bfd *headers ATTRIBUTE_UNUSED, -#else - object_headers *headers ATTRIBUTE_UNUSED, -#endif +md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT seg ATTRIBUTE_UNUSED, fragS *fragP ATTRIBUTE_UNUSED) { @@ -2145,22 +2103,12 @@ md_convert_frag ( abort (); } -#ifdef BFD_ASSEMBLER valueT md_section_align (segT segment, valueT size) { int align = bfd_get_section_alignment (stdoutput, segment); return ((size + (1 << align) - 1) & (-1 << align)); } -#else -valueT -md_section_align (segT seg, valueT size) -{ - return ((size + (1 << section_alignment[(int) seg]) - 1) - & (-1 << section_alignment[(int) seg])); -} -#endif - void md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) @@ -2212,66 +2160,6 @@ md_pcrel_from (fixS *fixP ATTRIBUTE_UNUS abort (); } -#ifndef BFD_ASSEMBLER -void -tc_reloc_mangle (fixS *fix_ptr, struct internal_reloc *intr, bfd_vma base) -{ - symbolS *symbol_ptr; - - symbol_ptr = fix_ptr->fx_addsy; - - /* If this relocation is attached to a symbol then it's ok - to output it. */ - if (fix_ptr->fx_r_type == TC_CONS_RELOC) - { - /* cons likes to create reloc32's whatever the size of the reloc.. - */ - switch (fix_ptr->fx_size) - { - case 4: - intr->r_type = R_RELLONG; - break; - case 2: - intr->r_type = R_RELWORD; - break; - case 1: - intr->r_type = R_RELBYTE; - break; - default: - abort (); - } - } - else - { - intr->r_type = fix_ptr->fx_r_type; - } - - intr->r_vaddr = fix_ptr->fx_frag->fr_address + fix_ptr->fx_where + base; - intr->r_offset = fix_ptr->fx_offset; - - if (symbol_ptr) - { - if (symbol_ptr->sy_number != -1) - intr->r_symndx = symbol_ptr->sy_number; - else - { - symbolS *segsym; - - /* This case arises when a reference is made to `.'. */ - segsym = seg_info (S_GET_SEGMENT (symbol_ptr))->dot; - if (segsym == NULL) - intr->r_symndx = -1; - else - { - intr->r_symndx = segsym->sy_number; - intr->r_offset += S_GET_VALUE (symbol_ptr); - } - } - } - else - intr->r_symndx = -1; -} -#else /* BFD_ASSEMBLER */ arelent * tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp) { @@ -2313,4 +2201,3 @@ tc_gen_reloc (asection *section ATTRIBUT return rel; } -#endif diff -uprN binutils-2.16.91.0.2/gas/config/tc-h8300.h binutils-2.16.91.0.3/gas/config/tc-h8300.h --- binutils-2.16.91.0.2/gas/config/tc-h8300.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-h8300.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,6 +1,6 @@ /* This file is tc-h8300.h Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 2000, 2001, 2002, 2003 + 1997, 1998, 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -26,10 +26,8 @@ #define TARGET_ARCH bfd_arch_h8300 -#ifdef BFD_ASSEMBLER /* Fixup debug sections since we will never relax them. */ #define TC_LINKRELAX_FIXUP(seg) (seg->flags & SEC_ALLOC) -#endif #ifdef OBJ_ELF #define TARGET_FORMAT "elf32-h8300" #define LOCAL_LABEL_PREFIX '.' @@ -42,17 +40,10 @@ struct internal_reloc; #define WORKING_DOT_WORD -/* This macro translates between an internal fix and a coff reloc type. */ -#define TC_COFF_FIX2RTYPE(fixP) abort (); - -#define BFD_ARCH bfd_arch_h8300 #define COFF_MAGIC ( Smode && Nmode ? 0x8304 : Hmode && Nmode ? 0x8303 : Smode ? 0x8302 : Hmode ? 0x8301 : 0x8300) -#define TC_COUNT_RELOC(x) (1) #define IGNORE_NONSTANDARD_ESCAPES #define tc_coff_symbol_emit_hook(a) ; /* not used */ -#define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle(a,b,c) -extern void tc_reloc_mangle (struct fix *, struct internal_reloc *, bfd_vma); /* No shared lib support, so we don't need to ensure externally visible symbols can be overridden. */ @@ -84,10 +75,7 @@ extern void tc_reloc_mangle (struct fix #define tc_fix_adjustable(FIX) 0 #endif -#define TC_CONS_RELOC (Hmode ? R_RELLONG: R_RELWORD) - #define LISTING_HEADER "Renesas H8/300 GAS " -#define NEED_FX_R_TYPE 1 #ifndef OBJ_ELF #define RELOC_32 1234 #endif diff -uprN binutils-2.16.91.0.2/gas/config/tc-h8500.c binutils-2.16.91.0.3/gas/config/tc-h8500.c --- binutils-2.16.91.0.2/gas/config/tc-h8500.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-h8500.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,1486 +0,0 @@ -/* tc-h8500.c -- Assemble code for the Renesas H8/500 - Copyright 1993, 1994, 1995, 1998, 2000, 2001, 2002, 2003, 2005 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -/* Written By Steve Chamberlain . */ - -#include -#include "as.h" -#include "bfd.h" -#include "subsegs.h" -#define DEFINE_TABLE -#define ASSEMBLER_TABLE -#include "opcodes/h8500-opc.h" -#include "safe-ctype.h" - -const char comment_chars[] = "!"; -const char line_separator_chars[] = ";"; -const char line_comment_chars[] = "!#"; - -/* This table describes all the machine specific pseudo-ops the assembler - has to support. The fields are: - pseudo-op name without dot - function to call to execute this pseudo-op - Integer arg to pass to the function. */ - -const pseudo_typeS md_pseudo_table[] = -{ - {"int", cons, 2}, - {"data.b", cons, 1}, - {"data.w", cons, 2}, - {"data.l", cons, 4}, - {"form", listing_psize, 0}, - {"heading", listing_title, 0}, - {"import", s_ignore, 0}, - {"page", listing_eject, 0}, - {"program", s_ignore, 0}, - {0, 0, 0} -}; - -const int md_reloc_size; - -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant. - As in 0f12.456 - or 0d1.2345e12. */ -const char FLT_CHARS[] = "rRsSfFdDxXpP"; - -#define C(a,b) ENCODE_RELAX(a, b) -#define ENCODE_RELAX(what, length) (((what) << 2) + (length)) - -#define GET_WHAT(x) ((x >> 2)) - -#define BYTE_DISP 1 -#define WORD_DISP 2 -#define UNDEF_BYTE_DISP 0 -#define UNDEF_WORD_DISP 3 - -#define BRANCH 1 -#define SCB_F 2 -#define SCB_TST 3 -#define END 4 - -#define BYTE_F 127 -#define BYTE_B -126 -#define WORD_F 32767 -#define WORD_B 32768 - -relax_typeS md_relax_table[C (END, 0)] = -{ - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - - /* BRANCH */ - { 0, 0, 0, 0 }, - { BYTE_F, BYTE_B, 2, C (BRANCH, WORD_DISP) }, - { WORD_F, WORD_B, 3, 0 }, - { 0, 0, 3, 0 }, - - /* SCB_F */ - { 0, 0, 0, 0 }, - { BYTE_F, BYTE_B, 3, C (SCB_F, WORD_DISP) }, - { WORD_F, WORD_B, 8, 0 }, - { 0, 0, 8, 0 }, - - /* SCB_TST */ - { 0, 0, 0, 0 }, - { BYTE_F, BYTE_B, 3, C (SCB_TST, WORD_DISP) }, - { WORD_F, WORD_B, 10, 0 }, - { 0, 0, 10, 0 } - -}; - -static struct hash_control *opcode_hash_control; /* Opcode mnemonics. */ - -/* This function is called once, at assembler startup time. This should - set up all the tables, etc. that the MD part of the assembler needs. */ - -void -md_begin (void) -{ - const h8500_opcode_info *opcode; - char prev_buffer[100]; - int idx = 0; - - opcode_hash_control = hash_new (); - prev_buffer[0] = 0; - - /* Insert unique names into hash table. */ - for (opcode = h8500_table; opcode->name; opcode++) - { - if (idx != opcode->idx) - { - hash_insert (opcode_hash_control, opcode->name, (char *) opcode); - idx++; - } - } -} - -static int rn; /* Register number used by RN. */ -static int rs; /* Register number used by RS. */ -static int rd; /* Register number used by RD. */ -static int crb; /* Byte size cr. */ -static int crw; /* Word sized cr. */ -static int cr; /* Unknown size cr. */ - -static expressionS displacement;/* Displacement expression. */ -static int immediate_inpage; -static expressionS immediate; /* Immediate expression. */ -static expressionS absolute; /* Absolute expression. */ - -typedef struct -{ - int type; - unsigned int reg; - expressionS exp; - int page; -} - -h8500_operand_info; - -/* Try to parse a reg name. Return the number of chars consumed. */ - -static int parse_reg (char *, int *, unsigned int *); - -static int -parse_reg (char *src, int *mode, unsigned int *reg) -{ - char *end; - int len; - - /* Cribbed from get_symbol_end(). */ - if (!is_name_beginner (*src) || *src == '\001') - return 0; - end = src + 1; - while (is_part_of_name (*end) || *end == '\001') - end++; - len = end - src; - - if (len == 2 && src[0] == 'r') - { - if (src[1] >= '0' && src[1] <= '7') - { - *mode = RN; - *reg = (src[1] - '0'); - return len; - } - } - if (len == 2 && src[0] == 's' && src[1] == 'p') - { - *mode = RN; - *reg = 7; - return len; - } - if (len == 3 && src[0] == 'c' && src[1] == 'c' && src[2] == 'r') - { - *mode = CRB; - *reg = 1; - return len; - } - if (len == 2 && src[0] == 's' && src[1] == 'r') - { - *mode = CRW; - *reg = 0; - return len; - } - if (len == 2 && src[0] == 'b' && src[1] == 'r') - { - *mode = CRB; - *reg = 3; - return len; - } - if (len == 2 && src[0] == 'e' && src[1] == 'p') - { - *mode = CRB; - *reg = 4; - return len; - } - if (len == 2 && src[0] == 'd' && src[1] == 'p') - { - *mode = CRB; - *reg = 5; - return len; - } - if (len == 2 && src[0] == 't' && src[1] == 'p') - { - *mode = CRB; - *reg = 7; - return len; - } - if (len == 2 && src[0] == 'f' && src[1] == 'p') - { - *mode = RN; - *reg = 6; - return len; - } - return 0; -} - -static char * -parse_exp (char *s, expressionS *op, int *page) -{ - char *save; - char *new; - - save = input_line_pointer; - - *page = 0; - if (s[0] == '%') - { - if (s[1] == 'p' && s[2] == 'a' && s[3] == 'g' && s[4] == 'e') - { - s += 5; - *page = 'p'; - } - if (s[1] == 'h' && s[2] == 'i' && s[3] == '1' && s[4] == '6') - { - s += 5; - *page = 'h'; - } - else if (s[1] == 'o' && s[2] == 'f' && s[3] == 'f') - { - s += 4; - *page = 'o'; - } - } - - input_line_pointer = s; - - expression (op); - if (op->X_op == O_absent) - as_bad (_("missing operand")); - new = input_line_pointer; - input_line_pointer = save; - return new; -} - -typedef enum -{ - exp_signed, exp_unsigned, exp_sandu -} sign_type; - -static char * -skip_colonthing (sign_type sign, - char *ptr, - h8500_operand_info *exp, - int def, - int size8, - int size16, - int size24) -{ - ptr = parse_exp (ptr, &exp->exp, &exp->page); - if (*ptr == ':') - { - ptr++; - if (*ptr == '8') - { - ptr++; - exp->type = size8; - } - else if (ptr[0] == '1' && ptr[1] == '6') - { - ptr += 2; - exp->type = size16; - } - else if (ptr[0] == '2' && ptr[1] == '4') - { - if (!size24) - { - as_bad (_(":24 not valid for this opcode")); - } - ptr += 2; - exp->type = size24; - } - else - { - as_bad (_("expect :8,:16 or :24")); - exp->type = size16; - } - } - else - { - if (exp->page == 'p') - exp->type = IMM8; - else if (exp->page == 'h') - exp->type = IMM16; - else - { - /* Let's work out the size from the context. */ - int n = exp->exp.X_add_number; - - if (size8 - && exp->exp.X_op == O_constant - && ((sign == exp_signed && (n >= -128 && n <= 127)) - || (sign == exp_unsigned && (n >= 0 && (n <= 255))) - || (sign == exp_sandu && (n >= -128 && (n <= 255))))) - exp->type = size8; - else - exp->type = def; - } - } - return ptr; -} - -static int -parse_reglist (char *src, h8500_operand_info *op) -{ - int mode; - unsigned int rn; - int mask = 0; - unsigned int rm; - int idx = 1; - - /* Skip (. */ - while (src[idx] && src[idx] != ')') - { - int done = parse_reg (src + idx, &mode, &rn); - - if (done) - { - idx += done; - mask |= 1 << rn; - } - else - { - as_bad (_("syntax error in reg list")); - return 0; - } - - if (src[idx] == '-') - { - idx++; - done = parse_reg (src + idx, &mode, &rm); - if (done) - { - idx += done; - while (rn <= rm) - { - mask |= 1 << rn; - rn++; - } - } - else - as_bad (_("missing final register in range")); - } - - if (src[idx] == ',') - idx++; - } - idx++; - op->exp.X_add_symbol = 0; - op->exp.X_op_symbol = 0; - op->exp.X_add_number = mask; - op->exp.X_op = O_constant; - op->exp.X_unsigned = 1; - op->type = IMM8; - return idx; -} - -/* The many forms of operand: - - Rn Register direct - @Rn Register indirect - @(disp[:size], Rn) Register indirect with displacement - @Rn+ - @-Rn - @aa[:size] absolute - #xx[:size] immediate data. */ - -static void -get_operand (char **ptr, - h8500_operand_info *op, - char ispage) -{ - char *src = *ptr; - int mode; - unsigned int num; - unsigned int len; - - op->page = 0; - if (src[0] == '(' && src[1] == 'r') - { - /* This is a register list */ - *ptr = src + parse_reglist (src, op); - return; - } - - len = parse_reg (src, &op->type, &op->reg); - - if (len) - { - *ptr = src + len; - return; - } - - if (*src == '@') - { - src++; - if (*src == '-') - { - src++; - len = parse_reg (src, &mode, &num); - if (len == 0) - { - /* Oops, not a reg after all, must be ordinary exp */ - src--; - /* must be a symbol */ - *ptr = skip_colonthing (exp_unsigned, src, - op, ABS16, ABS8, ABS16, ABS24); - return; - } - - op->type = RNDEC; - op->reg = num; - *ptr = src + len; - return; - } - if (*src == '(') - { - /* Disp */ - src++; - - src = skip_colonthing (exp_signed, src, - op, RNIND_D16, RNIND_D8, RNIND_D16, 0); - - if (*src != ',') - { - as_bad (_("expected @(exp, Rn)")); - return; - } - src++; - len = parse_reg (src, &mode, &op->reg); - if (len == 0 || mode != RN) - { - as_bad (_("expected @(exp, Rn)")); - return; - } - src += len; - if (*src != ')') - { - as_bad (_("expected @(exp, Rn)")); - return; - } - *ptr = src + 1; - return; - } - len = parse_reg (src, &mode, &num); - - if (len) - { - src += len; - if (*src == '+') - { - src++; - if (mode != RN) - { - as_bad (_("@Rn+ needs word register")); - return; - } - op->type = RNINC; - op->reg = num; - *ptr = src; - return; - } - if (mode != RN) - { - as_bad (_("@Rn needs word register")); - return; - } - op->type = RNIND; - op->reg = num; - *ptr = src; - return; - } - else - { - /* must be a symbol */ - *ptr = - skip_colonthing (exp_unsigned, src, op, - ispage ? ABS24 : ABS16, ABS8, ABS16, ABS24); - return; - } - } - - if (*src == '#') - { - src++; - *ptr = skip_colonthing (exp_sandu, src, op, IMM16, IMM8, IMM16, ABS24); - return; - } - else - *ptr = skip_colonthing (exp_signed, src, op, - ispage ? ABS24 : PCREL8, PCREL8, PCREL16, ABS24); -} - -static char * -get_operands (h8500_opcode_info *info, - char *args, - h8500_operand_info *operand) -{ - char *ptr = args; - - switch (info->nargs) - { - case 0: - operand[0].type = 0; - operand[1].type = 0; - break; - - case 1: - ptr++; - get_operand (&ptr, operand + 0, info->name[0] == 'p'); - operand[1].type = 0; - break; - - case 2: - ptr++; - get_operand (&ptr, operand + 0, 0); - if (*ptr == ',') - ptr++; - get_operand (&ptr, operand + 1, 0); - break; - - default: - abort (); - } - - return ptr; -} - -/* Passed a pointer to a list of opcodes which use different - addressing modes, return the opcode which matches the opcodes - provided. */ - -int pcrel8; /* Set when we've seen a pcrel operand. */ - -static h8500_opcode_info * -get_specific (h8500_opcode_info *opcode, - h8500_operand_info *operands) -{ - h8500_opcode_info *this_try = opcode; - int found = 0; - unsigned int noperands = opcode->nargs; - int this_index = opcode->idx; - - while (this_index == opcode->idx && !found) - { - unsigned int i; - - this_try = opcode++; - - /* Look at both operands needed by the opcodes and provided by - the user. */ - for (i = 0; i < noperands; i++) - { - h8500_operand_info *user = operands + i; - - switch (this_try->arg_type[i]) - { - case FPIND_D8: - /* Opcode needs (disp:8,fp). */ - if (user->type == RNIND_D8 && user->reg == 6) - { - displacement = user->exp; - continue; - } - break; - case RDIND_D16: - if (user->type == RNIND_D16) - { - displacement = user->exp; - rd = user->reg; - continue; - } - break; - case RDIND_D8: - if (user->type == RNIND_D8) - { - displacement = user->exp; - rd = user->reg; - continue; - } - break; - case RNIND_D16: - case RNIND_D8: - if (user->type == this_try->arg_type[i]) - { - displacement = user->exp; - rn = user->reg; - continue; - } - break; - - case SPDEC: - if (user->type == RNDEC && user->reg == 7) - continue; - break; - - case SPINC: - if (user->type == RNINC && user->reg == 7) - continue; - break; - - case ABS16: - if (user->type == ABS16) - { - absolute = user->exp; - continue; - } - break; - case ABS8: - if (user->type == ABS8) - { - absolute = user->exp; - continue; - } - break; - case ABS24: - if (user->type == ABS24) - { - absolute = user->exp; - continue; - } - break; - - case CRB: - if ((user->type == CRB || user->type == CR) && user->reg != 0) - { - crb = user->reg; - continue; - } - break; - case CRW: - if ((user->type == CRW || user->type == CR) && user->reg == 0) - { - crw = user->reg; - continue; - } - break; - case DISP16: - if (user->type == DISP16) - { - displacement = user->exp; - continue; - } - break; - case DISP8: - if (user->type == DISP8) - { - displacement = user->exp; - continue; - } - break; - case FP: - if (user->type == RN && user->reg == 6) - continue; - break; - - case PCREL16: - if (user->type == PCREL16) - { - displacement = user->exp; - continue; - } - break; - case PCREL8: - if (user->type == PCREL8) - { - displacement = user->exp; - pcrel8 = 1; - continue; - } - break; - - case IMM16: - if (user->type == IMM16 - || user->type == IMM8) - { - immediate_inpage = user->page; - immediate = user->exp; - continue; - } - break; - case RLIST: - case IMM8: - if (user->type == IMM8) - { - immediate_inpage = user->page; - immediate = user->exp; - continue; - } - break; - case IMM4: - if (user->type == IMM8) - { - immediate_inpage = user->page; - immediate = user->exp; - continue; - } - break; - case QIM: - if (user->type == IMM8 - && user->exp.X_op == O_constant - && (user->exp.X_add_number == -2 - || user->exp.X_add_number == -1 - || user->exp.X_add_number == 1 - || user->exp.X_add_number == 2)) - { - immediate_inpage = user->page; - immediate = user->exp; - continue; - } - break; - case RD: - if (user->type == RN) - { - rd = user->reg; - continue; - } - break; - case RS: - if (user->type == RN) - { - rs = user->reg; - continue; - } - break; - case RDIND: - if (user->type == RNIND) - { - rd = user->reg; - continue; - - } - break; - case RNINC: - case RNIND: - case RNDEC: - case RN: - if (user->type == this_try->arg_type[i]) - { - rn = user->reg; - continue; - } - break; - case SP: - if (user->type == RN && user->reg == 7) - continue; - break; - default: - printf (_("unhandled %d\n"), this_try->arg_type[i]); - break; - } - - /* If we get here this didn't work out. */ - goto fail; - } - found = 1; - fail:; - - } - - if (found) - return this_try; - else - return 0; -} - -static int -check (expressionS *operand, - int low, - int high) -{ - if (operand->X_op != O_constant - || operand->X_add_number < low - || operand->X_add_number > high) - as_bad (_("operand must be absolute in range %d..%d"), low, high); - - return operand->X_add_number; -} - -static void -insert (char *output, int index, expressionS *exp, int reloc, int pcrel) -{ - fix_new_exp (frag_now, - output - frag_now->fr_literal + index, - 4, /* Always say size is 4, but we know better. */ - exp, pcrel, reloc); -} - -static void -build_relaxable_instruction (h8500_opcode_info *opcode, - h8500_operand_info *operand ATTRIBUTE_UNUSED) -{ - /* All relaxable instructions start life as two bytes but can become - three bytes long if a lonely branch and up to 9 bytes if long - scb. */ - char *p; - int len; - int type; - - if (opcode->bytes[0].contents == 0x01) - type = SCB_F; - else if (opcode->bytes[0].contents == 0x06 - || opcode->bytes[0].contents == 0x07) - type = SCB_TST; - else - type = BRANCH; - - p = frag_var (rs_machine_dependent, - md_relax_table[C (type, WORD_DISP)].rlx_length, - len = md_relax_table[C (type, BYTE_DISP)].rlx_length, - C (type, UNDEF_BYTE_DISP), - displacement.X_add_symbol, - displacement.X_add_number, - 0); - - p[0] = opcode->bytes[0].contents; - if (type != BRANCH) - p[1] = opcode->bytes[1].contents | rs; -} - -/* Now we know what sort of opcodes it is, let's build the bytes. */ - -static void -build_bytes (h8500_opcode_info *opcode, h8500_operand_info *operand) -{ - int index; - - if (pcrel8) - { - pcrel8 = 0; - build_relaxable_instruction (opcode, operand); - } - else - { - char *output = frag_more (opcode->length); - - memset (output, 0, opcode->length); - for (index = 0; index < opcode->length; index++) - { - output[index] = opcode->bytes[index].contents; - - switch (opcode->bytes[index].insert) - { - default: - printf (_("failed for %d\n"), opcode->bytes[index].insert); - break; - case 0: - break; - case RN: - output[index] |= rn; - break; - case RD: - case RDIND: - output[index] |= rd; - break; - case RS: - output[index] |= rs; - break; - case DISP16: - insert (output, index, &displacement, R_H8500_IMM16, 0); - index++; - break; - case DISP8: - case FPIND_D8: - insert (output, index, &displacement, R_H8500_IMM8, 0); - break; - case IMM16: - { - int p; - - switch (immediate_inpage) - { - case 'p': - p = R_H8500_HIGH16; - break; - case 'h': - p = R_H8500_HIGH16; - break; - default: - p = R_H8500_IMM16; - break; - } - insert (output, index, &immediate, p, 0); - } - index++; - break; - case RLIST: - case IMM8: - if (immediate_inpage) - insert (output, index, &immediate, R_H8500_HIGH8, 0); - else - insert (output, index, &immediate, R_H8500_IMM8, 0); - break; - case PCREL16: - insert (output, index, &displacement, R_H8500_PCREL16, 1); - index++; - break; - case PCREL8: - insert (output, index, &displacement, R_H8500_PCREL8, 1); - break; - case IMM4: - output[index] |= check (&immediate, 0, 15); - break; - case CR: - output[index] |= cr; - if (cr == 0) - output[0] |= 0x8; - else - output[0] &= ~0x8; - break; - case CRB: - output[index] |= crb; - output[0] &= ~0x8; - break; - case CRW: - output[index] |= crw; - output[0] |= 0x8; - break; - case ABS24: - insert (output, index, &absolute, R_H8500_IMM24, 0); - index += 2; - break; - case ABS16: - insert (output, index, &absolute, R_H8500_IMM16, 0); - index++; - break; - case ABS8: - insert (output, index, &absolute, R_H8500_IMM8, 0); - break; - case QIM: - switch (immediate.X_add_number) - { - case -2: - output[index] |= 0x5; - break; - case -1: - output[index] |= 0x4; - break; - case 1: - output[index] |= 0; - break; - case 2: - output[index] |= 1; - break; - } - break; - } - } - } -} - -/* This is the guts of the machine-dependent assembler. STR points to - a machine dependent instruction. This function is supposed to emit - the frags/bytes it assembles to. */ - -void -md_assemble (char *str) -{ - char *op_start; - char *op_end; - h8500_operand_info operand[2]; - h8500_opcode_info *opcode; - h8500_opcode_info *prev_opcode; - char name[11]; - - int nlen = 0; - - /* Drop leading whitespace. */ - while (*str == ' ') - str++; - - /* Find the op code end. */ - for (op_start = op_end = str; - !is_end_of_line[(unsigned char) *op_end] && *op_end != ' '; - op_end++) - if (nlen < 10) - name[nlen++] = *op_end; - - name[nlen] = 0; - - if (op_end == op_start) - as_bad (_("can't find opcode ")); - - opcode = (h8500_opcode_info *) hash_find (opcode_hash_control, name); - - if (opcode == NULL) - { - as_bad (_("unknown opcode")); - return; - } - - get_operands (opcode, op_end, operand); - prev_opcode = opcode; - - opcode = get_specific (opcode, operand); - - if (opcode == 0) - { - /* Couldn't find an opcode which matched the operands. */ - char *where = frag_more (2); - - where[0] = 0x0; - where[1] = 0x0; - as_bad (_("invalid operands for opcode")); - return; - } - - build_bytes (opcode, operand); -} - -void -tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_crawl_symbol_chain \n")); -} - -symbolS * -md_undefined_symbol (char *name ATTRIBUTE_UNUSED) -{ - return NULL; -} - -void -tc_headers_hook (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_headers_hook \n")); -} - -/* Various routines to kill one day. */ -/* Equal to MAX_PRECISION in atof-ieee.c. */ -#define MAX_LITTLENUMS 6 - -/* Turn a string in input_line_pointer into a floating point constant - of type type, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -char * -md_atof (int type, char *litP, int *sizeP) -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return _("Bad call to MD_ATOF()"); - } - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * sizeof (LITTLENUM_TYPE); - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (long) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - return 0; -} - -const char *md_shortopts = ""; -struct option md_longopts[] = -{ - {NULL, no_argument, NULL, 0} -}; -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (int c ATTRIBUTE_UNUSED, char *arg ATTRIBUTE_UNUSED) -{ - return 0; -} - -void -md_show_usage (FILE *stream ATTRIBUTE_UNUSED) -{ -} - -static void -wordify_scb (char *buffer, int *disp_size, int *inst_size) -{ - int rn = buffer[1] & 0x7; - - switch (buffer[0]) - { - case 0x0e: /* BSR */ - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2a: - case 0x2b: - case 0x2c: - case 0x2d: - case 0x2e: - case 0x2f: - buffer[0] |= 0x10; - buffer[1] = 0; - buffer[2] = 0; - *disp_size = 2; - *inst_size = 1; - return; - default: - abort (); - - case 0x01: - *inst_size = 6; - *disp_size = 2; - break; - case 0x06: - *inst_size = 8; - *disp_size = 2; - - *buffer++ = 0x26; /* bne + 8 */ - *buffer++ = 0x08; - break; - case 0x07: - *inst_size = 8; - *disp_size = 2; - *buffer++ = 0x27; /* bne + 8 */ - *buffer++ = 0x08; - break; - - } - *buffer++ = 0xa8 | rn; /* addq -1,rn */ - *buffer++ = 0x0c; - *buffer++ = 0x04; /* cmp #0xff:8, rn */ - *buffer++ = 0xff; - *buffer++ = 0x70 | rn; - *buffer++ = 0x36; /* bne ... */ - *buffer++ = 0; - *buffer++ = 0; -} - -/* Called after relaxing, change the frags so they know how big they - are. */ - -void -md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, - segT seg ATTRIBUTE_UNUSED, - fragS *fragP) -{ - int disp_size = 0; - int inst_size = 0; - char *buffer = fragP->fr_fix + fragP->fr_literal; - - switch (fragP->fr_subtype) - { - case C (BRANCH, BYTE_DISP): - disp_size = 1; - inst_size = 1; - break; - - case C (SCB_F, BYTE_DISP): - case C (SCB_TST, BYTE_DISP): - disp_size = 1; - inst_size = 2; - break; - - /* Branches to a known 16 bit displacement. */ - - /* Turn on the 16bit bit. */ - case C (BRANCH, WORD_DISP): - case C (SCB_F, WORD_DISP): - case C (SCB_TST, WORD_DISP): - wordify_scb (buffer, &disp_size, &inst_size); - break; - - case C (BRANCH, UNDEF_WORD_DISP): - case C (SCB_F, UNDEF_WORD_DISP): - case C (SCB_TST, UNDEF_WORD_DISP): - /* This tried to be relaxed, but didn't manage it, it now needs - a fix. */ - wordify_scb (buffer, &disp_size, &inst_size); - - /* Make a reloc */ - fix_new (fragP, - fragP->fr_fix + inst_size, - 4, - fragP->fr_symbol, - fragP->fr_offset, - 0, - R_H8500_PCREL16); - - fragP->fr_fix += disp_size + inst_size; - return; - break; - default: - abort (); - } - if (inst_size) - { - /* Get the address of the end of the instruction. */ - int next_inst = fragP->fr_fix + fragP->fr_address + disp_size + inst_size; - int targ_addr = (S_GET_VALUE (fragP->fr_symbol) + - fragP->fr_offset); - int disp = targ_addr - next_inst; - - md_number_to_chars (buffer + inst_size, disp, disp_size); - fragP->fr_fix += disp_size + inst_size; - } -} - -valueT -md_section_align (segT seg, valueT size) -{ - return ((size + (1 << section_alignment[(int) seg]) - 1) - & (-1 << section_alignment[(int) seg])); -} - -void -md_apply_fix (fixS *fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED) -{ - long val = * (long *) valP; - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - - if (fixP->fx_r_type == 0) - fixP->fx_r_type = fixP->fx_size == 4 ? R_H8500_IMM32 : R_H8500_IMM16; - - switch (fixP->fx_r_type) - { - case R_H8500_IMM8: - case R_H8500_PCREL8: - *buf++ = val; - break; - case R_H8500_IMM16: - case R_H8500_LOW16: - case R_H8500_PCREL16: - *buf++ = (val >> 8); - *buf++ = val; - break; - case R_H8500_HIGH8: - *buf++ = val >> 16; - break; - case R_H8500_HIGH16: - *buf++ = val >> 24; - *buf++ = val >> 16; - break; - case R_H8500_IMM24: - *buf++ = (val >> 16); - *buf++ = (val >> 8); - *buf++ = val; - break; - case R_H8500_IMM32: - *buf++ = (val >> 24); - *buf++ = (val >> 16); - *buf++ = (val >> 8); - *buf++ = val; - break; - default: - abort (); - } - - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - fixP->fx_done = 1; -} - -/* Called just before address relaxation, return the length - by which a fragment must grow to reach it's destination. */ - -int -md_estimate_size_before_relax (fragS *fragP, segT segment_type) -{ - int what; - - switch (fragP->fr_subtype) - { - default: - abort (); - - case C (BRANCH, UNDEF_BYTE_DISP): - case C (SCB_F, UNDEF_BYTE_DISP): - case C (SCB_TST, UNDEF_BYTE_DISP): - what = GET_WHAT (fragP->fr_subtype); - /* Used to be a branch to somewhere which was unknown. */ - if (S_GET_SEGMENT (fragP->fr_symbol) == segment_type) - { - /* Got a symbol and it's defined in this segment, become byte - sized - maybe it will fix up. */ - fragP->fr_subtype = C (what, BYTE_DISP); - } - else - /* Its got a segment, but its not ours, so it will always be - long. */ - fragP->fr_subtype = C (what, UNDEF_WORD_DISP); - break; - - case C (BRANCH, BYTE_DISP): - case C (BRANCH, WORD_DISP): - case C (BRANCH, UNDEF_WORD_DISP): - case C (SCB_F, BYTE_DISP): - case C (SCB_F, WORD_DISP): - case C (SCB_F, UNDEF_WORD_DISP): - case C (SCB_TST, BYTE_DISP): - case C (SCB_TST, WORD_DISP): - case C (SCB_TST, UNDEF_WORD_DISP): - /* When relaxing a section for the second time, we don't need to - do anything besides return the current size. */ - break; - } - - return md_relax_table[fragP->fr_subtype].rlx_length; -} - -/* Put number into target byte order. */ - -void -md_number_to_chars (char *ptr, valueT use, int nbytes) -{ - number_to_chars_bigendian (ptr, use, nbytes); -} - -long -md_pcrel_from (fixS *fixP) -{ - return fixP->fx_size + fixP->fx_where + fixP->fx_frag->fr_address; -} - -void -tc_coff_symbol_emit_hook (symbolS *ignore ATTRIBUTE_UNUSED) -{ -} - -short -tc_coff_fix2rtype (fixS *fix_ptr) -{ - if (fix_ptr->fx_r_type == RELOC_32) - { - /* Cons likes to create reloc32's whatever the size of the reloc. */ - switch (fix_ptr->fx_size) - { - case 2: - return R_H8500_IMM16; - break; - case 1: - return R_H8500_IMM8; - break; - default: - abort (); - } - } - return fix_ptr->fx_r_type; -} - -void -tc_reloc_mangle (fixS *fix_ptr, - struct internal_reloc *intr, - bfd_vma base) -{ - symbolS *symbol_ptr; - - symbol_ptr = fix_ptr->fx_addsy; - - /* If this relocation is attached to a symbol then it's ok - to output it */ - if (fix_ptr->fx_r_type == RELOC_32) - { - /* Cons likes to create reloc32's whatever the size of the reloc. */ - switch (fix_ptr->fx_size) - { - case 2: - intr->r_type = R_IMM16; - break; - case 1: - intr->r_type = R_IMM8; - break; - default: - abort (); - } - } - else - intr->r_type = fix_ptr->fx_r_type; - - intr->r_vaddr = fix_ptr->fx_frag->fr_address + fix_ptr->fx_where + base; - intr->r_offset = fix_ptr->fx_offset; - - /* Turn the segment of the symbol into an offset. */ - if (symbol_ptr) - { - symbolS *dot; - - dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot; - if (dot) - { - intr->r_offset += S_GET_VALUE (symbol_ptr); - intr->r_symndx = dot->sy_number; - } - else - intr->r_symndx = symbol_ptr->sy_number; - } - else - intr->r_symndx = -1; -} - -int -start_label (char *ptr) -{ - /* Check for :s.w */ - if (ISALPHA (ptr[1]) && ptr[2] == '.') - return 0; - /* Check for :s */ - if (ISALPHA (ptr[1]) && !ISALPHA (ptr[2])) - return 0; - return 1; -} - -int -tc_coff_sizemachdep (fragS *frag) -{ - return md_relax_table[frag->fr_subtype].rlx_length; -} diff -uprN binutils-2.16.91.0.2/gas/config/tc-h8500.h binutils-2.16.91.0.3/gas/config/tc-h8500.h --- binutils-2.16.91.0.2/gas/config/tc-h8500.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-h8500.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,55 +0,0 @@ -/* This file is tc-h8500.h - Copyright 1993, 1995, 1997, 1998, 2000, 2003, 2005 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#define TC_H8500 - -#define TARGET_BYTES_BIG_ENDIAN 1 - -struct internal_reloc; - -#define WORKING_DOT_WORD - -/* This macro translates between an internal fix and a coff reloc type. */ -#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype (fixP) - -#define BFD_ARCH bfd_arch_h8500 -#define COFF_MAGIC 0x8500 -#define TC_COUNT_RELOC(x) ((x)->fx_addsy || (x)->fx_subsy) -#define IGNORE_NONSTANDARD_ESCAPES - -#define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle(a, b, c) -extern void tc_reloc_mangle - (struct fix *, struct internal_reloc *, bfd_vma); - -#define LISTING_HEADER "Renesas H8/500 GAS " -#define NEED_FX_R_TYPE 1 -#define RELOC_32 1234 - -#define TC_START_LABEL(ch, ptr) (ch == ':' && start_label (ptr)) -int start_label (char *); - -#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag) -int tc_coff_sizemachdep (struct frag *); - -#define md_operand(x) - -extern struct relax_type md_relax_table[]; -#define TC_GENERIC_RELAX_TABLE md_relax_table diff -uprN binutils-2.16.91.0.2/gas/config/tc-hppa.h binutils-2.16.91.0.3/gas/config/tc-hppa.h --- binutils-2.16.91.0.2/gas/config/tc-hppa.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-hppa.h 2005-08-22 12:27:42.000000000 -0700 @@ -106,10 +106,6 @@ extern void pa_check_eof PARAMS ((void)) extern const char hppa_symbol_chars[]; #define tc_symbol_chars hppa_symbol_chars -/* The PA does not need support for either of these. */ -#define tc_crawl_symbol_chain(headers) {;} -#define tc_headers_hook(headers) {;} - #define RELOC_EXPANSION_POSSIBLE #define MAX_RELOC_EXPANSION 6 diff -uprN binutils-2.16.91.0.2/gas/config/tc-i370.h binutils-2.16.91.0.3/gas/config/tc-i370.h --- binutils-2.16.91.0.2/gas/config/tc-i370.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-i370.h 2005-08-22 12:27:42.000000000 -0700 @@ -29,10 +29,6 @@ struct fix; #define TARGET_BYTES_BIG_ENDIAN 1 #endif -#ifndef BFD_ASSEMBLER - #error I370 support requires BFD_ASSEMBLER -#endif - /* The target BFD architecture. */ #define TARGET_ARCH (i370_arch ()) extern enum bfd_architecture i370_arch (void); diff -uprN binutils-2.16.91.0.2/gas/config/tc-i386.c binutils-2.16.91.0.3/gas/config/tc-i386.c --- binutils-2.16.91.0.2/gas/config/tc-i386.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-i386.c 2005-08-22 12:27:42.000000000 -0700 @@ -111,6 +111,9 @@ static void output_disp PARAMS ((fragS * #ifndef I386COFF static void s_bss PARAMS ((int)); #endif +#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) +static void handle_large_common (int small ATTRIBUTE_UNUSED); +#endif static const char *default_arch = DEFAULT_ARCH; @@ -467,6 +470,9 @@ const pseudo_typeS md_pseudo_table[] = {"att_syntax", set_intel_syntax, 0}, {"file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0}, {"loc", dwarf2_directive_loc, 0}, +#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) + {"largecomm", handle_large_common, 0}, +#endif #ifdef TE_PE {"secrel32", pe_directive_secrel, 0}, #endif @@ -2083,22 +2089,36 @@ optimize_imm () /* Symbols and expressions. */ default: - /* Convert symbolic operand to proper sizes for matching. */ - switch (guess_suffix) - { - case QWORD_MNEM_SUFFIX: - i.types[op] &= Imm64 | Imm32S; - break; - case LONG_MNEM_SUFFIX: - i.types[op] &= Imm32; - break; - case WORD_MNEM_SUFFIX: - i.types[op] &= Imm16; - break; - case BYTE_MNEM_SUFFIX: - i.types[op] &= Imm8 | Imm8S; - break; - } + /* Convert symbolic operand to proper sizes for matching, but don't + prevent matching a set of insns that only supports sizes other + than those matching the insn suffix. */ + { + unsigned int mask, allowed = 0; + const template *t; + + for (t = current_templates->start; t < current_templates->end; ++t) + allowed |= t->operand_types[op]; + switch (guess_suffix) + { + case QWORD_MNEM_SUFFIX: + mask = Imm64 | Imm32S; + break; + case LONG_MNEM_SUFFIX: + mask = Imm32; + break; + case WORD_MNEM_SUFFIX: + mask = Imm16; + break; + case BYTE_MNEM_SUFFIX: + mask = Imm8; + break; + default: + mask = 0; + break; + } + if (mask & allowed) + i.types[op] &= mask; + } break; } } @@ -4850,9 +4870,6 @@ int md_short_jump_size = 2; /* Size of dword displacement jmp. */ int md_long_jump_size = 5; -/* Size of relocation record. */ -const int md_reloc_size = 8; - void md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol) char *ptr; @@ -4966,10 +4983,7 @@ md_apply_fix (fixP, valP, seg) /* For some reason, the PE format does not store a section address offset for a PC relative symbol. */ if (S_GET_SEGMENT (fixP->fx_addsy) != seg -#if defined(BFD_ASSEMBLER) || defined(S_IS_WEAK) - || S_IS_WEAK (fixP->fx_addsy) -#endif - ) + || S_IS_WEAK (fixP->fx_addsy)) value += md_pcrel_from (fixP); #endif } @@ -6990,3 +7004,71 @@ tc_pe_dwarf2_emit_offset (symbolS *symbo emit_expr (&expr, size); } #endif + +#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) +/* For ELF on x86-64, add support for SHF_X86_64_LARGE. */ + +int +x86_64_section_letter (int letter, char **ptr_msg) +{ + if (flag_code == CODE_64BIT) + { + if (letter == 'l') + return SHF_X86_64_LARGE; + + *ptr_msg = _("Bad .section directive: want a,l,w,x,M,S,G,T in string"); + } + else + *ptr_msg = _("Bad .section directive: want a,w,x,M,S,G,T in string"); + return -1; +} + +int +x86_64_section_word (char *str, size_t len) +{ + if (len == 5 && flag_code == CODE_64BIT && strncmp (str, "large", 5) == 0) + return SHF_X86_64_LARGE; + + return -1; +} + +static void +handle_large_common (int small ATTRIBUTE_UNUSED) +{ + if (flag_code != CODE_64BIT) + { + s_comm_internal (0, elf_common_parse); + as_warn (_(".largecomm supported only in 64bit mode, producing .comm")); + } + else + { + static segT lbss_section; + asection *saved_com_section_ptr = elf_com_section_ptr; + asection *saved_bss_section = bss_section; + + if (lbss_section == NULL) + { + flagword applicable; + segT seg = now_seg; + subsegT subseg = now_subseg; + + /* The .lbss section is for local .largecomm symbols. */ + lbss_section = subseg_new (".lbss", 0); + applicable = bfd_applicable_section_flags (stdoutput); + bfd_set_section_flags (stdoutput, lbss_section, + applicable & SEC_ALLOC); + seg_info (lbss_section)->bss = 1; + + subseg_set (seg, subseg); + } + + elf_com_section_ptr = &_bfd_elf_large_com_section; + bss_section = lbss_section; + + s_comm_internal (0, elf_common_parse); + + elf_com_section_ptr = saved_com_section_ptr; + bss_section = saved_bss_section; + } +} +#endif /* OBJ_ELF || OBJ_MAYBE_ELF */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-i386.h binutils-2.16.91.0.3/gas/config/tc-i386.h --- binutils-2.16.91.0.2/gas/config/tc-i386.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-i386.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,6 +1,6 @@ /* tc-i386.h -- Header file for tc-i386.c Copyright 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004 + 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -23,10 +23,6 @@ #ifndef TC_I386 #define TC_I386 1 -#ifndef BFD_ASSEMBLER -#error So, do you know what you are doing? -#endif - struct fix; #define TARGET_BYTES_BIG_ENDIAN 0 @@ -501,6 +497,12 @@ extern void tc_x86_frame_initial_instruc #define md_elf_section_type(str,len) i386_elf_section_type (str, len) extern int i386_elf_section_type PARAMS ((const char *, size_t len)); +/* Support for SHF_X86_64_LARGE */ +extern int x86_64_section_word PARAMS ((char *, size_t)); +extern int x86_64_section_letter PARAMS ((int letter, char **ptr_msg)); +#define md_elf_section_letter(LETTER, PTR_MSG) x86_64_section_letter (LETTER, PTR_MSG) +#define md_elf_section_word(STR, LEN) x86_64_section_word (STR, LEN) + #ifdef TE_PE #define O_secrel O_md1 diff -uprN binutils-2.16.91.0.2/gas/config/tc-i860.h binutils-2.16.91.0.3/gas/config/tc-i860.h --- binutils-2.16.91.0.2/gas/config/tc-i860.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-i860.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* tc-i860.h -- Header file for the i860. - Copyright 1991, 1992, 1995, 1998, 2000, 2001, 2002, 2003 + Copyright 1991, 1992, 1995, 1998, 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc. Brought back from the dead and completely reworked @@ -24,10 +24,6 @@ #ifndef TC_I860 #define TC_I860 1 -#ifndef BFD_ASSEMBLER -#error i860 support requires BFD_ASSEMBLER -#endif - enum i860_fix_info { OP_NONE = 0x00000, diff -uprN binutils-2.16.91.0.2/gas/config/tc-i960.c binutils-2.16.91.0.3/gas/config/tc-i960.c --- binutils-2.16.91.0.2/gas/config/tc-i960.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-i960.c 2005-08-22 12:27:42.000000000 -0700 @@ -123,14 +123,6 @@ extern char *input_line_pointer; -#if !defined (BFD_ASSEMBLER) && !defined (BFD) -#ifdef OBJ_COFF -const int md_reloc_size = sizeof (struct reloc); -#else /* OBJ_COFF */ -const int md_reloc_size = sizeof (struct relocation_info); -#endif /* OBJ_COFF */ -#endif - /* Local i80960 routines. */ struct memS; struct regop; @@ -2050,17 +2042,10 @@ relax_cobr (fragS *fragP) /* fragP->fr_o If the fragment substate is 2, a 13-bit displacement was not enough. Replace the cobr with a two instructions (a compare and a branch). */ -#ifndef BFD_ASSEMBLER -void -md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, - segT seg ATTRIBUTE_UNUSED, - fragS *fragP) -#else void md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT sec ATTRIBUTE_UNUSED, fragS *fragP) -#endif { /* Structure describing needed address fix. */ fixS *fixP; @@ -2455,15 +2440,6 @@ md_apply_fix (fixS *fixP, if (!fixP->fx_bit_fixP) { -#ifndef BFD_ASSEMBLER - /* For callx, we always want to write out zero, and emit a - symbolic relocation. */ - if (fixP->fx_bsr) - val = 0; - - fixP->fx_addnumber = val; -#endif - md_number_to_imm (place, val, fixP->fx_size); } else if ((int) (size_t) fixP->fx_bit_fixP == 13 @@ -2546,33 +2522,6 @@ tc_bout_fix_to_chars (char *where, #endif /* OBJ_AOUT or OBJ_BOUT */ -#if defined (OBJ_COFF) && defined (BFD) -short -tc_coff_fix2rtype (fixS *fixP) -{ - if (fixP->fx_bsr) - abort (); - - if (fixP->fx_pcrel == 0 && fixP->fx_size == 4) - return R_RELLONG; - - if (fixP->fx_pcrel != 0 && fixP->fx_size == 4) - return R_IPRMED; - - abort (); - return 0; -} - -int -tc_coff_sizemachdep (fragS *frag) -{ - if (frag->fr_next) - return frag->fr_next->fr_address - frag->fr_address; - else - return 0; -} -#endif - /* Align an address by rounding it up to the specified boundary. */ valueT @@ -2581,139 +2530,12 @@ md_section_align (segT seg, { int align; -#ifdef BFD_ASSEMBLER align = bfd_get_section_alignment (stdoutput, seg); -#else - align = section_alignment[(int) seg]; -#endif return (addr + (1 << align) - 1) & (-1 << align); } extern int coff_flags; -#ifdef OBJ_COFF -void -tc_headers_hook (object_headers *headers) -{ - switch (architecture) - { - case ARCH_KA: - coff_flags |= F_I960KA; - break; - - case ARCH_KB: - coff_flags |= F_I960KB; - break; - - case ARCH_MC: - coff_flags |= F_I960MC; - break; - - case ARCH_CA: - coff_flags |= F_I960CA; - break; - - case ARCH_JX: - coff_flags |= F_I960JX; - break; - - case ARCH_HX: - coff_flags |= F_I960HX; - break; - - default: - if (iclasses_seen == I_BASE) - coff_flags |= F_I960CORE; - else if (iclasses_seen & I_CX) - coff_flags |= F_I960CA; - else if (iclasses_seen & I_HX) - coff_flags |= F_I960HX; - else if (iclasses_seen & I_JX) - coff_flags |= F_I960JX; - else if (iclasses_seen & I_CX2) - coff_flags |= F_I960CA; - else if (iclasses_seen & I_MIL) - coff_flags |= F_I960MC; - else if (iclasses_seen & (I_DEC | I_FP)) - coff_flags |= F_I960KB; - else - coff_flags |= F_I960KA; - break; - } - - if (flag_readonly_data_in_text) - { - headers->filehdr.f_magic = I960RWMAGIC; - headers->aouthdr.magic = OMAGIC; - } - else - { - headers->filehdr.f_magic = I960ROMAGIC; - headers->aouthdr.magic = NMAGIC; - } /* set magic numbers */ -} - -#endif /* OBJ_COFF */ - -#ifndef BFD_ASSEMBLER - -/* Things going on here: - - For bout, We need to assure a couple of simplifying - assumptions about leafprocs for the linker: the leafproc - entry symbols will be defined in the same assembly in - which they're declared with the '.leafproc' directive; - and if a leafproc has both 'call' and 'bal' entry points - they are both global or both local. - - For coff, the call symbol has a second aux entry that - contains the bal entry point. The bal symbol becomes a - label. - - For coff representation, the call symbol has a second aux entry that - contains the bal entry point. The bal symbol becomes a label. */ - -void -tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED) -{ - symbolS *symbolP; - - for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) - { -#ifdef OBJ_COFF - if (TC_S_IS_SYSPROC (symbolP)) - { - /* Second aux entry already contains the sysproc number. */ - S_SET_NUMBER_AUXILIARY (symbolP, 2); - S_SET_STORAGE_CLASS (symbolP, C_SCALL); - S_SET_DATA_TYPE (symbolP, S_GET_DATA_TYPE (symbolP) | (DT_FCN << N_BTSHFT)); - continue; - } -#endif /* OBJ_COFF */ - - if (!TC_S_IS_BALNAME (symbolP) && !TC_S_IS_CALLNAME (symbolP)) - continue; - - if (!S_IS_DEFINED (symbolP)) - as_bad (_("leafproc symbol '%s' undefined"), S_GET_NAME (symbolP)); - - if (TC_S_IS_CALLNAME (symbolP)) - { - symbolS *balP = tc_get_bal_of_call (symbolP); - - if (S_IS_EXTERNAL (symbolP) != S_IS_EXTERNAL (balP)) - { - S_SET_EXTERNAL (symbolP); - S_SET_EXTERNAL (balP); - as_warn (_("Warning: making leafproc entries %s and %s both global\n"), - S_GET_NAME (symbolP), S_GET_NAME (balP)); - } /* externality mismatch */ - } /* if callname */ - } /* walk the symbol chain */ -} - -#endif /* ! BFD_ASSEMBLER */ - /* For aout or bout, the bal immediately follows the call. For coff, we cheat and store a pointer to the bal symbol in the @@ -2841,8 +2663,6 @@ i960_validate_fix (fixS *fixP, segT this return 1; } -#ifdef BFD_ASSEMBLER - /* From cgen.c: */ static short @@ -2895,8 +2715,6 @@ tc_gen_reloc (asection *section ATTRIBUT /* end from cgen.c */ -#endif /* BFD_ASSEMBLER */ - const pseudo_typeS md_pseudo_table[] = { {"bss", s_lcomm, 1}, diff -uprN binutils-2.16.91.0.2/gas/config/tc-i960.h binutils-2.16.91.0.3/gas/config/tc-i960.h --- binutils-2.16.91.0.2/gas/config/tc-i960.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-i960.h 2005-08-22 12:27:42.000000000 -0700 @@ -52,21 +52,12 @@ */ /* tailor gas */ -#define SYMBOLS_NEED_BACKPOINTERS #define LOCAL_LABELS_FB 1 #define BITFIELD_CONS_EXPRESSIONS /* tailor the coff format */ -#define BFD_ARCH bfd_arch_i960 -#define COFF_FLAGS F_AR32WR #define COFF_MAGIC I960ROMAGIC -#define OBJ_COFF_SECTION_HEADER_HAS_ALIGNMENT #define OBJ_COFF_MAX_AUXENTRIES (2) -#define TC_COUNT_RELOC(FIX) (!(FIX)->fx_done) -#define TC_COFF_FIX2RTYPE(FIX) tc_coff_fix2rtype (FIX) -#define TC_COFF_SIZEMACHDEP(FRAGP) tc_coff_sizemachdep (FRAGP) -#define TC_COFF_SET_MACHINE(HDRS) tc_headers_hook (HDRS) -extern int tc_coff_sizemachdep PARAMS ((struct frag *)); /* MEANING OF 'n_other' in the symbol record. * @@ -188,7 +179,6 @@ extern struct symbol *tc_get_bal_of_call extern void i960_handle_align PARAMS ((struct frag *)); #define HANDLE_ALIGN(FRAG) i960_handle_align (FRAG) -#define NEED_FX_R_TYPE #define NO_RELOC -1 #define md_operand(x) diff -uprN binutils-2.16.91.0.2/gas/config/tc-ia64.c binutils-2.16.91.0.3/gas/config/tc-ia64.c --- binutils-2.16.91.0.2/gas/config/tc-ia64.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-ia64.c 2005-08-22 12:27:42.000000000 -0700 @@ -742,6 +742,9 @@ static struct unsigned int prologue_count; /* number of .prologues seen so far */ /* Prologue counts at previous .label_state directives. */ struct label_prologue_count * saved_prologue_counts; + + /* List of split up .save-s. */ + unw_p_record *pending_saves; } unwind; /* The input value is a negated offset from psp, and specifies an address @@ -1738,6 +1741,55 @@ output_X4_format (f, qp, ab, reg, x, y, (*f) (count, bytes, NULL); } +/* This function checks whether there are any outstanding .save-s and + discards them if so. */ + +static void +check_pending_save (void) +{ + if (unwind.pending_saves) + { + unw_rec_list *cur, *prev; + + as_warn ("Previous .save incomplete"); + for (cur = unwind.list, prev = NULL; cur; ) + if (&cur->r.record.p == unwind.pending_saves) + { + if (prev) + prev->next = cur->next; + else + unwind.list = cur->next; + if (cur == unwind.tail) + unwind.tail = prev; + if (cur == unwind.current_entry) + unwind.current_entry = cur->next; + /* Don't free the first discarded record, it's being used as + terminator for (currently) br_gr and gr_gr processing, and + also prevents leaving a dangling pointer to it in its + predecessor. */ + cur->r.record.p.grmask = 0; + cur->r.record.p.brmask = 0; + cur->r.record.p.frmask = 0; + prev = cur->r.record.p.next; + cur->r.record.p.next = NULL; + cur = prev; + break; + } + else + { + prev = cur; + cur = cur->next; + } + while (cur) + { + prev = cur; + cur = cur->r.record.p.next; + free (prev); + } + unwind.pending_saves = NULL; + } +} + /* This function allocates a record list structure, and initializes fields. */ static unw_rec_list * @@ -1745,7 +1797,7 @@ alloc_record (unw_record_type t) { unw_rec_list *ptr; ptr = xmalloc (sizeof (*ptr)); - ptr->next = NULL; + memset (ptr, 0, sizeof (*ptr)); ptr->slot_number = SLOT_NUM_NOT_SET; ptr->r.type = t; return ptr; @@ -1809,7 +1861,7 @@ output_psp_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (psp_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -1818,7 +1870,7 @@ output_psp_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (psp_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -1834,7 +1886,7 @@ output_rp_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (rp_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -1843,7 +1895,7 @@ output_rp_br (br) unsigned int br; { unw_rec_list *ptr = alloc_record (rp_br); - ptr->r.record.p.br = br; + ptr->r.record.p.r.br = br; return ptr; } @@ -1852,7 +1904,7 @@ output_rp_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (rp_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -1861,7 +1913,7 @@ output_rp_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (rp_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -1877,7 +1929,7 @@ output_pfs_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (pfs_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -1886,7 +1938,7 @@ output_pfs_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (pfs_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -1895,7 +1947,7 @@ output_pfs_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (pfs_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -1911,7 +1963,7 @@ output_preds_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (preds_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -1920,7 +1972,7 @@ output_preds_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (preds_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -1929,7 +1981,7 @@ output_preds_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (preds_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -1938,8 +1990,24 @@ output_fr_mem (mask) unsigned int mask; { unw_rec_list *ptr = alloc_record (fr_mem); - ptr->r.record.p.rmask = mask; - return ptr; + unw_rec_list *cur = ptr; + + ptr->r.record.p.frmask = mask; + unwind.pending_saves = &ptr->r.record.p; + for (;;) + { + unw_rec_list *prev = cur; + + /* Clear least significant set bit. */ + mask &= ~(mask & (~mask + 1)); + if (!mask) + return ptr; + cur = alloc_record (fr_mem); + cur->r.record.p.frmask = mask; + /* Retain only least significant bit. */ + prev->r.record.p.frmask ^= mask; + prev->r.record.p.next = cur; + } } static unw_rec_list * @@ -1948,9 +2016,39 @@ output_frgr_mem (gr_mask, fr_mask) unsigned int fr_mask; { unw_rec_list *ptr = alloc_record (frgr_mem); - ptr->r.record.p.grmask = gr_mask; - ptr->r.record.p.frmask = fr_mask; - return ptr; + unw_rec_list *cur = ptr; + + unwind.pending_saves = &cur->r.record.p; + cur->r.record.p.frmask = fr_mask; + while (fr_mask) + { + unw_rec_list *prev = cur; + + /* Clear least significant set bit. */ + fr_mask &= ~(fr_mask & (~fr_mask + 1)); + if (!gr_mask && !fr_mask) + return ptr; + cur = alloc_record (frgr_mem); + cur->r.record.p.frmask = fr_mask; + /* Retain only least significant bit. */ + prev->r.record.p.frmask ^= fr_mask; + prev->r.record.p.next = cur; + } + cur->r.record.p.grmask = gr_mask; + for (;;) + { + unw_rec_list *prev = cur; + + /* Clear least significant set bit. */ + gr_mask &= ~(gr_mask & (~gr_mask + 1)); + if (!gr_mask) + return ptr; + cur = alloc_record (frgr_mem); + cur->r.record.p.grmask = gr_mask; + /* Retain only least significant bit. */ + prev->r.record.p.grmask ^= gr_mask; + prev->r.record.p.next = cur; + } } static unw_rec_list * @@ -1959,9 +2057,27 @@ output_gr_gr (mask, reg) unsigned int reg; { unw_rec_list *ptr = alloc_record (gr_gr); + unw_rec_list *cur = ptr; + ptr->r.record.p.grmask = mask; - ptr->r.record.p.gr = reg; - return ptr; + ptr->r.record.p.r.gr = reg; + unwind.pending_saves = &ptr->r.record.p; + for (;;) + { + unw_rec_list *prev = cur; + + /* Clear least significant set bit. */ + mask &= ~(mask & (~mask + 1)); + if (!mask) + return ptr; + cur = alloc_record (gr_gr); + cur->r.record.p.grmask = mask; + /* Indicate this record shouldn't be output. */ + cur->r.record.p.r.gr = REG_NUM; + /* Retain only least significant bit. */ + prev->r.record.p.grmask ^= mask; + prev->r.record.p.next = cur; + } } static unw_rec_list * @@ -1969,27 +2085,77 @@ output_gr_mem (mask) unsigned int mask; { unw_rec_list *ptr = alloc_record (gr_mem); - ptr->r.record.p.rmask = mask; - return ptr; + unw_rec_list *cur = ptr; + + ptr->r.record.p.grmask = mask; + unwind.pending_saves = &ptr->r.record.p; + for (;;) + { + unw_rec_list *prev = cur; + + /* Clear least significant set bit. */ + mask &= ~(mask & (~mask + 1)); + if (!mask) + return ptr; + cur = alloc_record (gr_mem); + cur->r.record.p.grmask = mask; + /* Retain only least significant bit. */ + prev->r.record.p.grmask ^= mask; + prev->r.record.p.next = cur; + } } static unw_rec_list * output_br_mem (unsigned int mask) { unw_rec_list *ptr = alloc_record (br_mem); + unw_rec_list *cur = ptr; + ptr->r.record.p.brmask = mask; - return ptr; + unwind.pending_saves = &ptr->r.record.p; + for (;;) + { + unw_rec_list *prev = cur; + + /* Clear least significant set bit. */ + mask &= ~(mask & (~mask + 1)); + if (!mask) + return ptr; + cur = alloc_record (br_mem); + cur->r.record.p.brmask = mask; + /* Retain only least significant bit. */ + prev->r.record.p.brmask ^= mask; + prev->r.record.p.next = cur; + } } static unw_rec_list * -output_br_gr (save_mask, reg) - unsigned int save_mask; +output_br_gr (mask, reg) + unsigned int mask; unsigned int reg; { unw_rec_list *ptr = alloc_record (br_gr); - ptr->r.record.p.brmask = save_mask; - ptr->r.record.p.gr = reg; - return ptr; + unw_rec_list *cur = ptr; + + ptr->r.record.p.brmask = mask; + ptr->r.record.p.r.gr = reg; + unwind.pending_saves = &ptr->r.record.p; + for (;;) + { + unw_rec_list *prev = cur; + + /* Clear least significant set bit. */ + mask &= ~(mask & (~mask + 1)); + if (!mask) + return ptr; + cur = alloc_record (br_gr); + cur->r.record.p.brmask = mask; + /* Indicate this record shouldn't be output. */ + cur->r.record.p.r.gr = REG_NUM; + /* Retain only least significant bit. */ + prev->r.record.p.brmask ^= mask; + prev->r.record.p.next = cur; + } } static unw_rec_list * @@ -1997,7 +2163,7 @@ output_spill_base (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (spill_base); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -2013,7 +2179,7 @@ output_unat_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (unat_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -2022,7 +2188,7 @@ output_unat_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (unat_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -2031,7 +2197,7 @@ output_unat_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (unat_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -2047,7 +2213,7 @@ output_lc_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (lc_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -2056,7 +2222,7 @@ output_lc_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (lc_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -2065,7 +2231,7 @@ output_lc_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (lc_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -2081,7 +2247,7 @@ output_fpsr_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (fpsr_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -2090,7 +2256,7 @@ output_fpsr_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (fpsr_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -2099,7 +2265,7 @@ output_fpsr_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (fpsr_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -2122,7 +2288,7 @@ output_priunat_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (priunat_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -2131,7 +2297,7 @@ output_priunat_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (priunat_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -2140,7 +2306,7 @@ output_priunat_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (priunat_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -2156,7 +2322,7 @@ output_bsp_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (bsp_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -2165,7 +2331,7 @@ output_bsp_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (bsp_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -2174,7 +2340,7 @@ output_bsp_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (bsp_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -2190,7 +2356,7 @@ output_bspstore_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (bspstore_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -2199,7 +2365,7 @@ output_bspstore_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (bspstore_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -2208,7 +2374,7 @@ output_bspstore_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (bspstore_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -2224,7 +2390,7 @@ output_rnat_gr (gr) unsigned int gr; { unw_rec_list *ptr = alloc_record (rnat_gr); - ptr->r.record.p.gr = gr; + ptr->r.record.p.r.gr = gr; return ptr; } @@ -2233,7 +2399,7 @@ output_rnat_psprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (rnat_psprel); - ptr->r.record.p.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.p.off.psp = ENCODED_PSP_OFFSET (offset); return ptr; } @@ -2242,7 +2408,7 @@ output_rnat_sprel (offset) unsigned int offset; { unw_rec_list *ptr = alloc_record (rnat_sprel); - ptr->r.record.p.spoff = offset / 4; + ptr->r.record.p.off.sp = offset / 4; return ptr; } @@ -2291,7 +2457,7 @@ output_spill_psprel (ab, reg, offset, pr unw_rec_list *ptr = alloc_record (predicate ? spill_psprel_p : spill_psprel); ptr->r.record.x.ab = ab; ptr->r.record.x.reg = reg; - ptr->r.record.x.pspoff = ENCODED_PSP_OFFSET (offset); + ptr->r.record.x.where.pspoff = ENCODED_PSP_OFFSET (offset); ptr->r.record.x.qp = predicate; return ptr; } @@ -2306,7 +2472,7 @@ output_spill_sprel (ab, reg, offset, pre unw_rec_list *ptr = alloc_record (predicate ? spill_sprel_p : spill_sprel); ptr->r.record.x.ab = ab; ptr->r.record.x.reg = reg; - ptr->r.record.x.spoff = offset / 4; + ptr->r.record.x.where.spoff = offset / 4; ptr->r.record.x.qp = predicate; return ptr; } @@ -2322,7 +2488,7 @@ output_spill_reg (ab, reg, targ_reg, xy, unw_rec_list *ptr = alloc_record (predicate ? spill_reg_p : spill_reg); ptr->r.record.x.ab = ab; ptr->r.record.x.reg = reg; - ptr->r.record.x.treg = targ_reg; + ptr->r.record.x.where.reg = targ_reg; ptr->r.record.x.xy = xy; ptr->r.record.x.qp = predicate; return ptr; @@ -2336,7 +2502,7 @@ process_one_record (ptr, f) unw_rec_list *ptr; vbyte_func f; { - unsigned long fr_mask, gr_mask; + unsigned int fr_mask, gr_mask; switch (ptr->r.type) { @@ -2402,13 +2568,13 @@ process_one_record (ptr, f) case bsp_gr: case bspstore_gr: case rnat_gr: - output_P3_format (f, ptr->r.type, ptr->r.record.p.gr); + output_P3_format (f, ptr->r.type, ptr->r.record.p.r.gr); break; case rp_br: - output_P3_format (f, rp_br, ptr->r.record.p.br); + output_P3_format (f, rp_br, ptr->r.record.p.r.br); break; case psp_sprel: - output_P7_format (f, psp_sprel, ptr->r.record.p.spoff, 0); + output_P7_format (f, psp_sprel, ptr->r.record.p.off.sp, 0); break; case rp_when: case pfs_when: @@ -2425,7 +2591,7 @@ process_one_record (ptr, f) case lc_psprel: case fpsr_psprel: case spill_base: - output_P7_format (f, ptr->r.type, ptr->r.record.p.pspoff, 0); + output_P7_format (f, ptr->r.type, ptr->r.record.p.off.psp, 0); break; case rp_sprel: case pfs_sprel: @@ -2437,13 +2603,29 @@ process_one_record (ptr, f) case bsp_sprel: case bspstore_sprel: case rnat_sprel: - output_P8_format (f, ptr->r.type, ptr->r.record.p.spoff); + output_P8_format (f, ptr->r.type, ptr->r.record.p.off.sp); break; case gr_gr: - output_P9_format (f, ptr->r.record.p.grmask, ptr->r.record.p.gr); + if (ptr->r.record.p.r.gr < REG_NUM) + { + const unw_rec_list *cur = ptr; + + gr_mask = cur->r.record.p.grmask; + while ((cur = cur->r.record.p.next) != NULL) + gr_mask |= cur->r.record.p.grmask; + output_P9_format (f, gr_mask, ptr->r.record.p.r.gr); + } break; case br_gr: - output_P2_format (f, ptr->r.record.p.brmask, ptr->r.record.p.gr); + if (ptr->r.record.p.r.gr < REG_NUM) + { + const unw_rec_list *cur = ptr; + + gr_mask = cur->r.record.p.brmask; + while ((cur = cur->r.record.p.next) != NULL) + gr_mask |= cur->r.record.p.brmask; + output_P2_format (f, gr_mask, ptr->r.record.p.r.gr); + } break; case spill_mask: as_bad ("spill_mask record unimplemented."); @@ -2459,7 +2641,7 @@ process_one_record (ptr, f) case bsp_psprel: case bspstore_psprel: case rnat_psprel: - output_P8_format (f, ptr->r.type, ptr->r.record.p.pspoff); + output_P8_format (f, ptr->r.type, ptr->r.record.p.off.psp); break; case unwabi: output_P10_format (f, ptr->r.record.p.abi, ptr->r.record.p.context); @@ -2474,32 +2656,32 @@ process_one_record (ptr, f) case spill_psprel: output_X1_format (f, ptr->r.type, ptr->r.record.x.ab, ptr->r.record.x.reg, ptr->r.record.x.t, - ptr->r.record.x.pspoff); + ptr->r.record.x.where.pspoff); break; case spill_sprel: output_X1_format (f, ptr->r.type, ptr->r.record.x.ab, ptr->r.record.x.reg, ptr->r.record.x.t, - ptr->r.record.x.spoff); + ptr->r.record.x.where.spoff); break; case spill_reg: output_X2_format (f, ptr->r.record.x.ab, ptr->r.record.x.reg, ptr->r.record.x.xy >> 1, ptr->r.record.x.xy, - ptr->r.record.x.treg, ptr->r.record.x.t); + ptr->r.record.x.where.reg, ptr->r.record.x.t); break; case spill_psprel_p: output_X3_format (f, ptr->r.type, ptr->r.record.x.qp, ptr->r.record.x.ab, ptr->r.record.x.reg, - ptr->r.record.x.t, ptr->r.record.x.pspoff); + ptr->r.record.x.t, ptr->r.record.x.where.pspoff); break; case spill_sprel_p: output_X3_format (f, ptr->r.type, ptr->r.record.x.qp, ptr->r.record.x.ab, ptr->r.record.x.reg, - ptr->r.record.x.t, ptr->r.record.x.spoff); + ptr->r.record.x.t, ptr->r.record.x.where.spoff); break; case spill_reg_p: output_X4_format (f, ptr->r.record.x.qp, ptr->r.record.x.ab, ptr->r.record.x.reg, ptr->r.record.x.xy >> 1, - ptr->r.record.x.xy, ptr->r.record.x.treg, + ptr->r.record.x.xy, ptr->r.record.x.where.reg, ptr->r.record.x.t); break; default: @@ -2835,8 +3017,8 @@ fixup_unw_records (list, before_relax) as_bad ("fr_mem record before region record!"); return; } - region->r.record.r.mask.fr_mem |= ptr->r.record.p.rmask; - set_imask (region, ptr->r.record.p.rmask, t, 1); + region->r.record.r.mask.fr_mem |= ptr->r.record.p.frmask; + set_imask (region, ptr->r.record.p.frmask, t, 1); break; case gr_mem: if (!region) @@ -2844,8 +3026,8 @@ fixup_unw_records (list, before_relax) as_bad ("gr_mem record before region record!"); return; } - region->r.record.r.mask.gr_mem |= ptr->r.record.p.rmask; - set_imask (region, ptr->r.record.p.rmask, t, 2); + region->r.record.r.mask.gr_mem |= ptr->r.record.p.grmask; + set_imask (region, ptr->r.record.p.grmask, t, 2); break; case br_mem: if (!region) @@ -3174,18 +3356,11 @@ static int in_prologue (const char *directive) { int in = in_procedure (directive); - if (in) - { - /* We are in a procedure. Check if we are in a prologue. */ - if (unwind.prologue) - return 1; - /* We only want to issue one message. */ - if (in == 1) - return unwind_diagnostic ("prologue", directive); - else - return -1; - } - return 0; + + if (in > 0 && !unwind.prologue) + in = unwind_diagnostic ("prologue", directive); + check_pending_save (); + return in; } /* Return 1 if a directive is in a body, -1 if a directive isn't in @@ -3197,18 +3372,10 @@ static int in_body (const char *directive) { int in = in_procedure (directive); - if (in) - { - /* We are in a procedure. Check if we are in a body. */ - if (unwind.body) - return 1; - /* We only want to issue one message. */ - if (in == 1) - return unwind_diagnostic ("body region", directive); - else - return -1; - } - return 0; + + if (in > 0 && !unwind.body) + in = unwind_diagnostic ("body region", directive); + return in; } static void @@ -4306,6 +4473,7 @@ dot_body (dummy) return; if (!unwind.prologue && !unwind.body && unwind.insn) as_warn ("Initial .body should precede any instructions"); + check_pending_save (); unwind.prologue = 0; unwind.prologue_mask = 0; @@ -10774,12 +10942,24 @@ md_assemble (str) as_where (&CURR_SLOT.src_file, &CURR_SLOT.src_line); dwarf2_where (&CURR_SLOT.debug_line); - /* Add unwind entry, if there is one. */ + /* Add unwind entries, if there are any. */ if (unwind.current_entry) { CURR_SLOT.unwind_record = unwind.current_entry; unwind.current_entry = NULL; } + if (unwind.pending_saves) + { + if (unwind.pending_saves->next) + { + /* Attach the next pending save to the next slot so that its + slot number will get set correctly. */ + add_unwind_entry (unwind.pending_saves->next, NOT_A_CHAR); + unwind.pending_saves = &unwind.pending_saves->next->r.record.p; + } + else + unwind.pending_saves = NULL; + } if (unwind.proc_pending.sym && S_IS_DEFINED (unwind.proc_pending.sym)) unwind.insn = 1; diff -uprN binutils-2.16.91.0.2/gas/config/tc-ia64.h binutils-2.16.91.0.3/gas/config/tc-ia64.h --- binutils-2.16.91.0.2/gas/config/tc-ia64.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-ia64.h 2005-08-22 12:27:42.000000000 -0700 @@ -241,7 +241,7 @@ typedef struct unw_r_record struct { unsigned char *i; - unsigned long fr_mem; + unsigned int fr_mem; unsigned char gr_mem; unsigned char br_mem; } mask; @@ -249,17 +249,22 @@ typedef struct unw_r_record typedef struct unw_p_record { - void *imask; + struct unw_rec_list *next; unsigned long t; unsigned long size; - unsigned long spoff; - unsigned long br; - unsigned long pspoff; - unsigned short gr; - unsigned short rmask; - unsigned short grmask; - unsigned long frmask; - unsigned short brmask; + union + { + unsigned long sp; + unsigned long psp; + } off; + union + { + unsigned short gr; + unsigned short br; + } r; + unsigned char grmask; + unsigned char brmask; + unsigned int frmask; unsigned char abi; unsigned char context; } unw_p_record; @@ -274,10 +279,13 @@ typedef struct unw_b_record typedef struct unw_x_record { unsigned long t; - unsigned long spoff; - unsigned long pspoff; + union + { + unsigned long spoff; + unsigned long pspoff; + unsigned int reg; + } where; unsigned short reg; - unsigned short treg; unsigned short qp; unsigned short ab; /* Value of the AB field.. */ unsigned short xy; /* Value of the XY field.. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-ip2k.h binutils-2.16.91.0.3/gas/config/tc-ip2k.h --- binutils-2.16.91.0.2/gas/config/tc-ip2k.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-ip2k.h 2005-08-22 12:27:42.000000000 -0700 @@ -20,11 +20,6 @@ #define TC_IP2K -#ifndef BFD_ASSEMBLER -/* Leading space so will compile with cc. */ - #error IP2K support requires BFD_ASSEMBLER -#endif - #define LISTING_HEADER "IP2xxx GAS " /* The target BFD architecture. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-iq2000.h binutils-2.16.91.0.3/gas/config/tc-iq2000.h --- binutils-2.16.91.0.2/gas/config/tc-iq2000.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-iq2000.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* tc-iq2000.h -- Header file for tc-iq2000.c. - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -20,11 +20,6 @@ #define TC_IQ2000 -#ifndef BFD_ASSEMBLER -/* Leading space so will compile with cc. */ - #error IQ2000 support requires BFD_ASSEMBLER -#endif - #define LISTING_HEADER "IQ2000 GAS " /* The target BFD architecture. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-m32c.c binutils-2.16.91.0.3/gas/config/tc-m32c.c --- binutils-2.16.91.0.2/gas/config/tc-m32c.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-m32c.c 2005-08-22 12:27:42.000000000 -0700 @@ -738,6 +738,27 @@ md_cgen_lookup_reloc (const CGEN_INSN * int offset; } op_reloc_table[] = { + /* Absolute relocs for 8-bit fields. */ + { M32C_OPERAND_IMM_8_QI, BFD_RELOC_8, 1 }, + { M32C_OPERAND_IMM_16_QI, BFD_RELOC_8, 2 }, + { M32C_OPERAND_IMM_24_QI, BFD_RELOC_8, 3 }, + { M32C_OPERAND_IMM_32_QI, BFD_RELOC_8, 4 }, + { M32C_OPERAND_IMM_40_QI, BFD_RELOC_8, 5 }, + { M32C_OPERAND_IMM_48_QI, BFD_RELOC_8, 6 }, + { M32C_OPERAND_IMM_56_QI, BFD_RELOC_8, 7 }, + { M32C_OPERAND_DSP_8_S8, BFD_RELOC_8, 1 }, + { M32C_OPERAND_DSP_16_S8, BFD_RELOC_8, 2 }, + { M32C_OPERAND_DSP_24_S8, BFD_RELOC_8, 3 }, + { M32C_OPERAND_DSP_32_S8, BFD_RELOC_8, 4 }, + { M32C_OPERAND_DSP_40_S8, BFD_RELOC_8, 5 }, + { M32C_OPERAND_DSP_48_S8, BFD_RELOC_8, 6 }, + { M32C_OPERAND_DSP_8_U8, BFD_RELOC_8, 1 }, + { M32C_OPERAND_DSP_16_U8, BFD_RELOC_8, 2 }, + { M32C_OPERAND_DSP_24_U8, BFD_RELOC_8, 3 }, + { M32C_OPERAND_DSP_32_U8, BFD_RELOC_8, 4 }, + { M32C_OPERAND_DSP_40_U8, BFD_RELOC_8, 5 }, + { M32C_OPERAND_DSP_48_U8, BFD_RELOC_8, 6 }, + /* Absolute relocs for 16-bit fields. */ { M32C_OPERAND_IMM_16_HI, BFD_RELOC_16, 2 }, { M32C_OPERAND_IMM_24_HI, BFD_RELOC_16, 3 }, @@ -777,6 +798,11 @@ md_cgen_lookup_reloc (const CGEN_INSN * { fixP->fx_where += or->offset; fixP->fx_size -= or->offset; + + if (fixP->fx_cgen.opinfo + && fixP->fx_cgen.opinfo != BFD_RELOC_NONE) + return fixP->fx_cgen.opinfo; + return or->reloc; } } diff -uprN binutils-2.16.91.0.2/gas/config/tc-m32c.h binutils-2.16.91.0.3/gas/config/tc-m32c.h --- binutils-2.16.91.0.2/gas/config/tc-m32c.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-m32c.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* tc-m32c.h -- Header file for tc-m32c.c. - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -20,10 +20,6 @@ #define TC_M32C -#ifndef BFD_ASSEMBLER -#error M32C support requires BFD_ASSEMBLER -#endif - #define LISTING_HEADER "M16C/M32C GAS " /* The target BFD architecture. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-m32r.c binutils-2.16.91.0.3/gas/config/tc-m32r.c --- binutils-2.16.91.0.2/gas/config/tc-m32r.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-m32r.c 2005-08-22 12:27:42.000000000 -0700 @@ -479,7 +479,7 @@ m32r_check_fixup (expressionS *main_exp, return 0; } - if (exp->X_op == O_PIC_reloc || exp->X_md != BFD_RELOC_UNUSED) + if (exp->X_op == O_PIC_reloc) { *r_type_p = exp->X_md; if (exp == main_exp) diff -uprN binutils-2.16.91.0.2/gas/config/tc-m32r.h binutils-2.16.91.0.3/gas/config/tc-m32r.h --- binutils-2.16.91.0.2/gas/config/tc-m32r.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-m32r.h 2005-08-22 12:27:42.000000000 -0700 @@ -21,11 +21,6 @@ #define TC_M32R -#ifndef BFD_ASSEMBLER -/* Leading space so will compile with cc. */ - #error M32R support requires BFD_ASSEMBLER -#endif - #define LISTING_HEADER \ (target_big_endian ? "M32R GAS" : "M32R GAS Little Endian") diff -uprN binutils-2.16.91.0.2/gas/config/tc-m68hc11.h binutils-2.16.91.0.3/gas/config/tc-m68hc11.h --- binutils-2.16.91.0.2/gas/config/tc-m68hc11.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-m68hc11.h 2005-08-22 12:27:42.000000000 -0700 @@ -32,10 +32,6 @@ struct fix; /* Motorola assembler specs does not require '.' before pseudo-ops. */ #define NO_PSEUDO_DOT 1 -#ifndef BFD_ASSEMBLER -#error M68HC11 support requires BFD_ASSEMBLER -#endif - /* The target BFD architecture. */ #define TARGET_ARCH (m68hc11_arch ()) extern enum bfd_architecture m68hc11_arch (void); diff -uprN binutils-2.16.91.0.2/gas/config/tc-m68k.c binutils-2.16.91.0.3/gas/config/tc-m68k.c --- binutils-2.16.91.0.2/gas/config/tc-m68k.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-m68k.c 2005-08-22 12:27:42.000000000 -0700 @@ -70,8 +70,6 @@ const char FLT_CHARS[] = "rRsSfFdDxXeEpP changed in read.c . Ideally it shouldn't have to know about it at all, but nothing is ideal around here. */ -const int md_reloc_size = 8; /* Size of relocation record. */ - /* Are we trying to generate PIC code? If so, absolute references ought to be made into linkage table references or pc-relative references. Not implemented. For ELF there are other means @@ -740,63 +738,6 @@ find_cf_chip (int architecture) return buf; } -#if defined (M68KCOFF) && !defined (BFD_ASSEMBLER) - -#ifdef NO_PCREL_RELOCS - -int -make_pcrel_absolute (fixS *fixP, long *add_number) -{ - register unsigned char *opcode = fixP->fx_frag->fr_opcode; - - /* Rewrite the PC relative instructions to absolute address ones. - these are rumored to be faster, and the apollo linker refuses - to deal with the PC relative relocations. */ - if (opcode[0] == 0x60 && opcode[1] == 0xff) /* BRA -> JMP. */ - { - if (flag_keep_pcrel) - as_fatal (_("Tried to convert PC relative branch to absolute jump")); - opcode[0] = 0x4e; - opcode[1] = 0xf9; - } - else if (opcode[0] == 0x61 && opcode[1] == 0xff) /* BSR -> JSR. */ - { - if (flag_keep_pcrel) - as_fatal (_("Tried to convert PC relative BSR to absolute JSR")); - opcode[0] = 0x4e; - opcode[1] = 0xb9; - } - else - as_fatal (_("Unknown PC relative instruction")); - *add_number -= 4; - return 0; -} - -#endif /* NO_PCREL_RELOCS */ - -short -tc_coff_fix2rtype (fixS *fixP) -{ - if (fixP->fx_tcbit && fixP->fx_size == 4) - return R_RELLONG_NEG; -#ifdef NO_PCREL_RELOCS - know (fixP->fx_pcrel == 0); - return (fixP->fx_size == 1 ? R_RELBYTE - : fixP->fx_size == 2 ? R_DIR16 - : R_DIR32); -#else - return (fixP->fx_pcrel - ? (fixP->fx_size == 1 ? R_PCRBYTE - : fixP->fx_size == 2 ? R_PCRWORD - : R_PCRLONG) - : (fixP->fx_size == 1 ? R_RELBYTE - : fixP->fx_size == 2 ? R_RELWORD - : R_RELLONG)); -#endif -} - -#endif - #ifdef OBJ_ELF /* Return zero if the reference to SYMBOL from within the same segment may @@ -956,8 +897,6 @@ tc_m68k_fix_adjustable (fixS *fixP) #endif /* OBJ_ELF */ -#ifdef BFD_ASSEMBLER - arelent * tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp) { @@ -1068,8 +1007,6 @@ tc_gen_reloc (asection *section ATTRIBUT return reloc; } -#endif /* BFD_ASSEMBLER */ - /* Handle of the OPCODE hash table. NULL means any use before m68k_ip_begin() will crash. */ static struct hash_control *op_hash; @@ -2273,12 +2210,8 @@ m68k_ip (char *instring) && m68k_abspcadd) { opP->disp.exp.X_op = O_symbol; -#ifndef BFD_ASSEMBLER - opP->disp.exp.X_add_symbol = &abs_symbol; -#else opP->disp.exp.X_add_symbol = section_symbol (absolute_section); -#endif } /* Force into index mode. Hope this works. */ @@ -3894,11 +3827,6 @@ init_regtable (void) static int no_68851, no_68881; -#ifdef OBJ_AOUT -/* a.out machine type. Default to 68020. */ -int m68k_aout_machtype = 2; -#endif - void md_assemble (char *str) { @@ -4444,18 +4372,6 @@ m68k_init_after_args (void) if (no_68851 && (current_architecture & m68851)) as_bad (_("options for 68851 and no-68851 both given")); -#ifdef OBJ_AOUT - /* Work out the magic number. This isn't very general. */ - if (current_architecture & m68000) - m68k_aout_machtype = 0; - else if (current_architecture & m68010) - m68k_aout_machtype = 1; - else if (current_architecture & m68020) - m68k_aout_machtype = 2; - else - m68k_aout_machtype = 2; -#endif - /* Note which set of "movec" control registers is available. */ select_control_regs (); @@ -4654,11 +4570,9 @@ md_apply_fix (fixS *fixP, valueT *valP, } #endif -#ifdef BFD_ASSEMBLER if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY) return; -#endif switch (fixP->fx_size) { @@ -4712,10 +4626,7 @@ md_apply_fix (fixS *fixP, valueT *valP, in write.c may have clobbered fx_pcrel, so we need to examine the reloc type. */ if ((fixP->fx_pcrel -#ifdef BFD_ASSEMBLER - || fixP->fx_r_type == BFD_RELOC_8_PCREL -#endif - ) + || fixP->fx_r_type == BFD_RELOC_8_PCREL) && fixP->fx_size == 1 && (fixP->fx_addsy == NULL || S_IS_DEFINED (fixP->fx_addsy)) @@ -4943,18 +4854,6 @@ md_convert_frag_1 (fragS *fragP) } } -#ifndef BFD_ASSEMBLER - -void -md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, - segT sec ATTRIBUTE_UNUSED, - fragS *fragP) -{ - md_convert_frag_1 (fragP); -} - -#else - void md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT sec ATTRIBUTE_UNUSED, @@ -4962,7 +4861,6 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNU { md_convert_frag_1 (fragP); } -#endif /* Force truly undefined symbols to their maximum size, and generally set up the frag list to be relaxed @@ -5121,38 +5019,6 @@ md_ri_to_chars (char *the_bytes, struct #endif -#ifndef BFD_ASSEMBLER -void -tc_aout_fix_to_chars (char *where, fixS *fixP, - relax_addressT segment_address_in_file) -{ - /* - * In: length of relocation (or of address) in chars: 1, 2 or 4. - * Out: GNU LD relocation length code: 0, 1, or 2. - */ - - static const unsigned char nbytes_r_length[] = {42, 0, 1, 42, 2}; - long r_symbolnum; - - know (fixP->fx_addsy != NULL); - - md_number_to_chars (where, - (fixP->fx_frag->fr_address - + fixP->fx_where - segment_address_in_file), 4); - - r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy) - ? S_GET_TYPE (fixP->fx_addsy) - : fixP->fx_addsy->sy_number); - - where[4] = (r_symbolnum >> 16) & 0x0ff; - where[5] = (r_symbolnum >> 8) & 0x0ff; - where[6] = r_symbolnum & 0x0ff; - where[7] = (((fixP->fx_pcrel << 7) & 0x80) - | ((nbytes_r_length[fixP->fx_size] << 5) & 0x60) - | ((!S_IS_DEFINED (fixP->fx_addsy) << 4) & 0x10)); -} -#endif - #endif /* OBJ_AOUT or OBJ_BOUT */ #ifndef WORKING_DOT_WORD @@ -7408,7 +7274,6 @@ valueT md_section_align (segT segment ATTRIBUTE_UNUSED, valueT size) { #ifdef OBJ_AOUT -#ifdef BFD_ASSEMBLER /* For a.out, force the section size to be aligned. If we don't do this, BFD will align it for us, but it will not write out the final bytes of the section. This may be a bug in BFD, but it is @@ -7419,7 +7284,6 @@ md_section_align (segT segment ATTRIBUTE align = bfd_get_section_alignment (stdoutput, segment); size = ((size + (1 << align) - 1) & ((valueT) -1 << align)); #endif -#endif return size; } @@ -7441,34 +7305,6 @@ md_pcrel_from (fixS *fixP) return fixP->fx_where + fixP->fx_frag->fr_address - adjust; } -#ifndef BFD_ASSEMBLER -#ifdef OBJ_COFF - -void -tc_coff_symbol_emit_hook (symbolS *ignore ATTRIBUTE_UNUSED) -{ -} - -int -tc_coff_sizemachdep (fragS *frag) -{ - switch (frag->fr_subtype & 0x3) - { - case BYTE: - return 1; - case SHORT: - return 2; - case LONG: - return 4; - default: - abort (); - return 0; - } -} - -#endif -#endif - #ifdef OBJ_ELF void m68k_elf_final_processing (void) diff -uprN binutils-2.16.91.0.2/gas/config/tc-m68k.h binutils-2.16.91.0.3/gas/config/tc-m68k.h --- binutils-2.16.91.0.2/gas/config/tc-m68k.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-m68k.h 2005-08-22 12:27:42.000000000 -0700 @@ -51,9 +51,6 @@ struct fix; #undef OBJ_COFF_OMIT_OPTIONAL_HEADER #endif -#ifdef TE_LYNX -#define TARGET_FORMAT "coff-m68k-lynx" -#endif #ifdef TE_AUX #define TARGET_FORMAT "coff-m68k-aux" #endif @@ -64,34 +61,11 @@ struct fix; #ifndef COFF_MAGIC #define COFF_MAGIC MC68MAGIC #endif -#define BFD_ARCH bfd_arch_m68k /* for non-BFD_ASSEMBLER */ -#define TARGET_ARCH bfd_arch_m68k /* BFD_ASSEMBLER */ -#define COFF_FLAGS F_AR32W -#define TC_COUNT_RELOC(x) ((x)->fx_addsy||(x)->fx_subsy) - -#define TC_COFF_FIX2RTYPE(FIX) tc_coff_fix2rtype(FIX) -#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag) -extern int tc_coff_sizemachdep (struct frag *); -#ifdef TE_SUN3 -/* This variable contains the value to write out at the beginning of - the a.out file. The 2<<16 means that this is a 68020 file instead - of an old-style 68000 file */ - -#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (2<<16|OMAGIC); /* Magic byte for file header */ -#endif /* TE_SUN3 */ - -#ifndef AOUT_MACHTYPE -#define AOUT_MACHTYPE m68k_aout_machtype -extern int m68k_aout_machtype; -#endif +#define TARGET_ARCH bfd_arch_m68k #define tc_comment_chars m68k_comment_chars extern const char *m68k_comment_chars; -#define tc_crawl_symbol_chain(a) {;} /* not used */ -#define tc_headers_hook(a) {;} /* not used */ -#define tc_aout_pre_write_hook(x) {;} /* not used */ - #define LISTING_WORD_SIZE 2 /* A word is 2 bytes */ #define LISTING_LHS_WIDTH 2 /* One word on the first line */ #define LISTING_LHS_WIDTH_SECOND 2 /* One word on the second line */ @@ -104,10 +78,6 @@ extern const char *m68k_comment_chars; #if !defined (REGISTER_PREFIX_OPTIONAL) #if defined (M68KCOFF) || defined (OBJ_ELF) -#ifndef BFD_ASSEMBLER -#define LOCAL_LABEL(name) (name[0] == '.' \ - && (name[1] == 'L' || name[1] == '.')) -#endif /* ! BFD_ASSEMBLER */ #define REGISTER_PREFIX_OPTIONAL 0 #else /* ! (COFF || ELF) */ #define REGISTER_PREFIX_OPTIONAL 1 @@ -123,11 +93,6 @@ extern const char *m68k_comment_chars; #define tc_canonicalize_symbol_name(s) ((*(s) == '~' ? *(s) = '.' : '.'), s) /* On the Delta, dots are not required before pseudo-ops. */ #define NO_PSEUDO_DOT 1 -#ifndef BFD_ASSEMBLER -#undef LOCAL_LABEL -#define LOCAL_LABEL(name) \ - (name[0] == '.' || (name[0] == 'L' && name[1] == '%')) -#endif #endif extern void m68k_mri_mode_change (int); @@ -144,8 +109,6 @@ extern void m68k_flush_pending_output (v extern void m68k_frob_symbol (symbolS *); -#ifdef BFD_ASSEMBLER - #define tc_frob_symbol(sym,punt) \ do \ { \ @@ -180,20 +143,6 @@ extern int tc_m68k_fix_adjustable (struc extern void m68k_elf_final_processing (void); #endif -#else /* ! BFD_ASSEMBLER */ - -#define tc_frob_coff_symbol(sym) m68k_frob_symbol (sym) - -#define NO_RELOC 0 -#define RELAX_RELOC_ABS8 0 -#define RELAX_RELOC_ABS16 0 -#define RELAX_RELOC_ABS32 0 -#define RELAX_RELOC_PC8 0 -#define RELAX_RELOC_PC16 0 -#define RELAX_RELOC_PC32 0 - -#endif /* ! BFD_ASSEMBLER */ - #define DIFF_EXPR_OK extern void m68k_init_after_args (void); diff -uprN binutils-2.16.91.0.2/gas/config/tc-m88k.c binutils-2.16.91.0.3/gas/config/tc-m88k.c --- binutils-2.16.91.0.2/gas/config/tc-m88k.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-m88k.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,1138 +0,0 @@ -/* m88k.c -- Assembler for the Motorola 88000 - Contributed by Devon Bowen of Buffalo University - and Torbjorn Granlund of the Swedish Institute of Computer Science. - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, - 2000, 2001, 2002, 2003, 2005 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#include "as.h" -#include "safe-ctype.h" -#include "subsegs.h" -#include "m88k-opcode.h" - -struct field_val_assoc -{ - char *name; - unsigned val; -}; - -struct field_val_assoc cr_regs[] = -{ - {"PID", 0}, - {"PSR", 1}, - {"EPSR", 2}, - {"SSBR", 3}, - {"SXIP", 4}, - {"SNIP", 5}, - {"SFIP", 6}, - {"VBR", 7}, - {"DMT0", 8}, - {"DMD0", 9}, - {"DMA0", 10}, - {"DMT1", 11}, - {"DMD1", 12}, - {"DMA1", 13}, - {"DMT2", 14}, - {"DMD2", 15}, - {"DMA2", 16}, - {"SR0", 17}, - {"SR1", 18}, - {"SR2", 19}, - {"SR3", 20}, - - {NULL, 0}, -}; - -struct field_val_assoc fcr_regs[] = -{ - {"FPECR", 0}, - {"FPHS1", 1}, - {"FPLS1", 2}, - {"FPHS2", 3}, - {"FPLS2", 4}, - {"FPPT", 5}, - {"FPRH", 6}, - {"FPRL", 7}, - {"FPIT", 8}, - - {"FPSR", 62}, - {"FPCR", 63}, - - {NULL, 0}, -}; - -struct field_val_assoc cmpslot[] = -{ -/* Integer Floating point. */ - {"nc", 0}, - {"cp", 1}, - {"eq", 2}, - {"ne", 3}, - {"gt", 4}, - {"le", 5}, - {"lt", 6}, - {"ge", 7}, - {"hi", 8}, {"ou", 8}, - {"ls", 9}, {"ib", 9}, - {"lo", 10}, {"in", 10}, - {"hs", 11}, {"ob", 11}, - {"be", 12}, {"ue", 12}, - {"nb", 13}, {"lg", 13}, - {"he", 14}, {"ug", 14}, - {"nh", 15}, {"ule", 15}, - {"ul", 16}, - {"uge", 17}, - - {NULL, 0}, -}; - -struct field_val_assoc cndmsk[] = -{ - {"gt0", 1}, - {"eq0", 2}, - {"ge0", 3}, - {"lt0", 12}, - {"ne0", 13}, - {"le0", 14}, - - {NULL, 0}, -}; - -struct m88k_insn -{ - unsigned long opcode; - expressionS exp; - enum reloc_type reloc; -}; - -extern char *myname; -static struct hash_control *op_hash = NULL; - -/* These bits should be turned off in the first address of every segment. */ -int md_seg_align = 7; - -/* These chars start a comment anywhere in a source file (except inside - another comment. */ -const char comment_chars[] = ";"; - -/* These chars only start a comment at the beginning of a line. */ -const char line_comment_chars[] = "#"; - -const char line_separator_chars[] = ""; - -/* Chars that can be used to separate mant from exp in floating point nums. */ -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant. - as in 0f123.456 - or 0H1.234E-12 (see exp chars above). */ -const char FLT_CHARS[] = "dDfF"; - -void -md_begin (void) -{ - const char *retval = NULL; - unsigned int i = 0; - - /* Initialize hash table. */ - op_hash = hash_new (); - - while (*m88k_opcodes[i].name) - { - char *name = m88k_opcodes[i].name; - - /* Hash each mnemonic and record its position. */ - retval = hash_insert (op_hash, name, &m88k_opcodes[i]); - - if (retval != NULL) - as_fatal (_("Can't hash instruction '%s':%s"), - m88k_opcodes[i].name, retval); - - /* Skip to next unique mnemonic or end of list. */ - for (i++; !strcmp (m88k_opcodes[i].name, name); i++) - ; - } -} - -const char *md_shortopts = ""; -struct option md_longopts[] = -{ - {NULL, no_argument, NULL, 0} -}; -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (int c ATTRIBUTE_UNUSED, char *arg ATTRIBUTE_UNUSED) -{ - return 0; -} - -void -md_show_usage (FILE *stream ATTRIBUTE_UNUSED) -{ -} - -static char * -get_o6 (char *param, unsigned *valp) -{ - unsigned val; - char *save_ptr; - - save_ptr = input_line_pointer; - input_line_pointer = param; - val = get_absolute_expression (); - param = input_line_pointer; - input_line_pointer = save_ptr; - - if (val & 0x3) - as_warn (_("Removed lower 2 bits of expression")); - - *valp = val; - - return (param); -} - -static char * -get_vec9 (char *param, unsigned *valp) -{ - unsigned val; - char *save_ptr; - - save_ptr = input_line_pointer; - input_line_pointer = param; - val = get_absolute_expression (); - param = input_line_pointer; - input_line_pointer = save_ptr; - - if (val >= 1 << 9) - as_warn (_("Expression truncated to 9 bits")); - - *valp = val % (1 << 9); - - return param; -} - -static char * -get_bf2 (char *param, int bc) -{ - int depth = 0; - int c; - - for (;;) - { - c = *param; - if (c == 0) - return param; - else if (c == '(') - depth++; - else if (c == ')') - depth--; - else if (c == bc && depth <= 0) - return param; - param++; - } -} - -static char * -match_name (char *param, - struct field_val_assoc *assoc_tab, - unsigned *valp) -{ - int i; - char *name; - int name_len; - - for (i = 0;; i++) - { - name = assoc_tab[i].name; - if (name == NULL) - return NULL; - name_len = strlen (name); - if (!strncmp (param, name, name_len)) - { - *valp = assoc_tab[i].val; - return param + name_len; - } - } -} - -static char * -get_bf_offset_expression (char *param, unsigned *offsetp) -{ - unsigned offset; - - if (ISALPHA (param[0])) - { - param[0] = TOLOWER (param[0]); - param[1] = TOLOWER (param[1]); - - param = match_name (param, cmpslot, offsetp); - - return param; - } - else - { - input_line_pointer = param; - offset = get_absolute_expression (); - param = input_line_pointer; - } - - *offsetp = offset; - return param; -} - -static char * -get_bf (char *param, unsigned *valp) -{ - unsigned offset = 0; - unsigned width = 0; - char *xp; - char *save_ptr; - - xp = get_bf2 (param, '<'); - - save_ptr = input_line_pointer; - input_line_pointer = param; - if (*xp == 0) - { - /* We did not find '<'. We have an offset (width implicitly 32). */ - param = get_bf_offset_expression (param, &offset); - input_line_pointer = save_ptr; - if (param == NULL) - return NULL; - } - else - { - *xp++ = 0; /* Overwrite the '<'. */ - param = get_bf2 (xp, '>'); - if (*param == 0) - return NULL; - *param++ = 0; /* Overwrite the '>'. */ - - width = get_absolute_expression (); - xp = get_bf_offset_expression (xp, &offset); - input_line_pointer = save_ptr; - - if (xp + 1 != param) - return NULL; - } - - *valp = ((width % 32) << 5) | (offset % 32); - - return param; -} - -static char * -get_cr (char *param, unsigned *regnop) -{ - unsigned regno; - unsigned c; - - if (!strncmp (param, "cr", 2)) - { - param += 2; - - regno = *param++ - '0'; - if (regno < 10) - { - if (regno == 0) - { - *regnop = 0; - return param; - } - c = *param - '0'; - if (c < 10) - { - regno = regno * 10 + c; - if (c < 64) - { - *regnop = regno; - return param + 1; - } - } - else - { - *regnop = regno; - return param; - } - } - return NULL; - } - - param = match_name (param, cr_regs, regnop); - - return param; -} - -static char * -get_fcr (char *param, unsigned *regnop) -{ - unsigned regno; - unsigned c; - - if (!strncmp (param, "fcr", 3)) - { - param += 3; - - regno = *param++ - '0'; - if (regno < 10) - { - if (regno == 0) - { - *regnop = 0; - return param; - } - c = *param - '0'; - if (c < 10) - { - regno = regno * 10 + c; - if (c < 64) - { - *regnop = regno; - return param + 1; - } - } - else - { - *regnop = regno; - return param; - } - } - return NULL; - } - - param = match_name (param, fcr_regs, regnop); - - return param; -} - -#define hexval(z) \ - (ISDIGIT (z) ? (z) - '0' : \ - ISLOWER (z) ? (z) - 'a' + 10 : \ - ISUPPER (z) ? (z) - 'A' + 10 : (unsigned) -1) - -static char * -getval (char *param, unsigned int *valp) -{ - unsigned int val = 0; - unsigned int c; - - c = *param++; - if (c == '0') - { - c = *param++; - if (c == 'x' || c == 'X') - { - c = *param++; - c = hexval (c); - while (c < 16) - { - val = val * 16 + c; - c = *param++; - c = hexval (c); - } - } - else - { - c -= '0'; - while (c < 8) - { - val = val * 8 + c; - c = *param++ - '0'; - } - } - } - else - { - c -= '0'; - while (c < 10) - { - val = val * 10 + c; - c = *param++ - '0'; - } - } - - *valp = val; - return param - 1; -} - -static char * -get_cnd (char *param, unsigned *valp) -{ - unsigned int val; - - if (ISDIGIT (*param)) - { - param = getval (param, &val); - - if (val >= 32) - { - as_warn (_("Expression truncated to 5 bits")); - val %= 32; - } - } - else - { - param[0] = TOLOWER (param[0]); - param[1] = TOLOWER (param[1]); - - param = match_name (param, cndmsk, valp); - - if (param == NULL) - return NULL; - - val = *valp; - } - - *valp = val << 21; - return param; -} - -static char * -get_reg (char *param, unsigned *regnop, unsigned int reg_prefix) -{ - unsigned c; - unsigned regno; - - c = *param++; - if (c == reg_prefix) - { - regno = *param++ - '0'; - if (regno < 10) - { - if (regno == 0) - { - *regnop = 0; - return param; - } - c = *param - '0'; - if (c < 10) - { - regno = regno * 10 + c; - if (c < 32) - { - *regnop = regno; - return param + 1; - } - } - else - { - *regnop = regno; - return param; - } - } - return NULL; - } - else if (c == 's' && param[0] == 'p') - { - *regnop = 31; - return param + 1; - } - - return 0; -} - -static char * -get_imm16 (char *param, struct m88k_insn *insn) -{ - enum reloc_type reloc = NO_RELOC; - unsigned int val; - char *save_ptr; - - if (!strncmp (param, "hi16", 4) && !ISALNUM (param[4])) - { - reloc = RELOC_HI16; - param += 4; - } - else if (!strncmp (param, "lo16", 4) && !ISALNUM (param[4])) - { - reloc = RELOC_LO16; - param += 4; - } - else if (!strncmp (param, "iw16", 4) && !ISALNUM (param[4])) - { - reloc = RELOC_IW16; - param += 4; - } - - save_ptr = input_line_pointer; - input_line_pointer = param; - expression (&insn->exp); - param = input_line_pointer; - input_line_pointer = save_ptr; - - val = insn->exp.X_add_number; - - if (insn->exp.X_op == O_constant) - { - /* Insert the value now, and reset reloc to NO_RELOC. */ - if (reloc == NO_RELOC) - { - /* Warn about too big expressions if not surrounded by xx16. */ - if (val > 0xffff) - as_warn (_("Expression truncated to 16 bits")); - } - - if (reloc == RELOC_HI16) - val >>= 16; - - insn->opcode |= val & 0xffff; - reloc = NO_RELOC; - } - else if (reloc == NO_RELOC) - /* We accept a symbol even without lo16, hi16, etc, and assume - lo16 was intended. */ - reloc = RELOC_LO16; - - insn->reloc = reloc; - - return param; -} - -static char * -get_pcr (char *param, struct m88k_insn *insn, enum reloc_type reloc) -{ - char *saveptr, *saveparam; - - saveptr = input_line_pointer; - input_line_pointer = param; - - expression (&insn->exp); - - saveparam = input_line_pointer; - input_line_pointer = saveptr; - - /* Botch: We should relocate now if O_constant. */ - insn->reloc = reloc; - - return saveparam; -} - -static char * -get_cmp (char *param, unsigned *valp) -{ - unsigned int val; - char *save_ptr; - - save_ptr = param; - - param = match_name (param, cmpslot, valp); - val = *valp; - - if (param == NULL) - { - param = save_ptr; - - save_ptr = input_line_pointer; - input_line_pointer = param; - val = get_absolute_expression (); - param = input_line_pointer; - input_line_pointer = save_ptr; - - if (val >= 32) - { - as_warn (_("Expression truncated to 5 bits")); - val %= 32; - } - } - - *valp = val << 21; - return param; -} - -static int -calcop (struct m88k_opcode *format, - char *param, - struct m88k_insn *insn) -{ - char *fmt = format->op_spec; - int f; - unsigned val; - unsigned opcode; - unsigned int reg_prefix = 'r'; - - insn->opcode = format->opcode; - opcode = 0; - - for (;;) - { - if (param == 0) - return 0; - f = *fmt++; - switch (f) - { - case 0: - insn->opcode |= opcode; - return (*param == 0 || *param == '\n'); - - default: - if (f != *param++) - return 0; - break; - - case 'd': - param = get_reg (param, &val, reg_prefix); - reg_prefix = 'r'; - opcode |= val << 21; - break; - - case 'o': - param = get_o6 (param, &val); - opcode |= ((val >> 2) << 7); - break; - - case 'x': - reg_prefix = 'x'; - break; - - case '1': - param = get_reg (param, &val, reg_prefix); - reg_prefix = 'r'; - opcode |= val << 16; - break; - - case '2': - param = get_reg (param, &val, reg_prefix); - reg_prefix = 'r'; - opcode |= val; - break; - - case '3': - param = get_reg (param, &val, 'r'); - opcode |= (val << 16) | val; - break; - - case 'I': - param = get_imm16 (param, insn); - break; - - case 'b': - param = get_bf (param, &val); - opcode |= val; - break; - - case 'p': - param = get_pcr (param, insn, RELOC_PC16); - break; - - case 'P': - param = get_pcr (param, insn, RELOC_PC26); - break; - - case 'B': - param = get_cmp (param, &val); - opcode |= val; - break; - - case 'M': - param = get_cnd (param, &val); - opcode |= val; - break; - - case 'c': - param = get_cr (param, &val); - opcode |= val << 5; - break; - - case 'f': - param = get_fcr (param, &val); - opcode |= val << 5; - break; - - case 'V': - param = get_vec9 (param, &val); - opcode |= val; - break; - - case '?': - /* Having this here repeats the warning somtimes. - But can't we stand that? */ - as_warn (_("Use of obsolete instruction")); - break; - } - } -} - -void -md_assemble (char *op) -{ - char *param, *thisfrag; - char c; - struct m88k_opcode *format; - struct m88k_insn insn; - - assert (op); - - /* Skip over instruction to find parameters. */ - for (param = op; *param != 0 && !ISSPACE (*param); param++) - ; - c = *param; - *param++ = '\0'; - - /* Try to find the instruction in the hash table. */ - if ((format = (struct m88k_opcode *) hash_find (op_hash, op)) == NULL) - { - as_bad (_("Invalid mnemonic '%s'"), op); - return; - } - - /* Try parsing this instruction into insn. */ - insn.exp.X_add_symbol = 0; - insn.exp.X_op_symbol = 0; - insn.exp.X_add_number = 0; - insn.exp.X_op = O_illegal; - insn.reloc = NO_RELOC; - - while (!calcop (format, param, &insn)) - { - /* If it doesn't parse try the next instruction. */ - if (!strcmp (format[0].name, format[1].name)) - format++; - else - { - as_fatal (_("Parameter syntax error")); - return; - } - } - - /* Grow the current frag and plop in the opcode. */ - thisfrag = frag_more (4); - md_number_to_chars (thisfrag, insn.opcode, 4); - - /* If this instruction requires labels mark it for later. */ - switch (insn.reloc) - { - case NO_RELOC: - break; - - case RELOC_LO16: - case RELOC_HI16: - fix_new_exp (frag_now, - thisfrag - frag_now->fr_literal + 2, - 2, - &insn.exp, - 0, - insn.reloc); - break; - - case RELOC_IW16: - fix_new_exp (frag_now, - thisfrag - frag_now->fr_literal, - 4, - &insn.exp, - 0, - insn.reloc); - break; - - case RELOC_PC16: - fix_new_exp (frag_now, - thisfrag - frag_now->fr_literal + 2, - 2, - &insn.exp, - 1, - insn.reloc); - break; - - case RELOC_PC26: - fix_new_exp (frag_now, - thisfrag - frag_now->fr_literal, - 4, - &insn.exp, - 1, - insn.reloc); - break; - - default: - as_fatal (_("Unknown relocation type")); - break; - } -} - -void -md_number_to_chars (char *buf, valueT val, int nbytes) -{ - number_to_chars_bigendian (buf, val, nbytes); -} - -#define MAX_LITTLENUMS 6 - -/* Turn a string in input_line_pointer into a floating point constant of type - type, and store the appropriate bytes in *litP. The number of LITTLENUMS - emitted is stored in *sizeP . An error message is returned, or NULL on OK. */ - -char * -md_atof (int type, char *litP, int *sizeP) -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return _("Bad call to MD_ATOF()"); - } - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * sizeof (LITTLENUM_TYPE); - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (long) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - return 0; -} - -int md_short_jump_size = 4; - -void -md_create_short_jump (char *ptr, - addressT from_addr ATTRIBUTE_UNUSED, - addressT to_addr ATTRIBUTE_UNUSED, - fragS *frag, - symbolS *to_symbol) -{ - ptr[0] = (char) 0xc0; - ptr[1] = 0x00; - ptr[2] = 0x00; - ptr[3] = 0x00; - fix_new (frag, - ptr - frag->fr_literal, - 4, - to_symbol, - (offsetT) 0, - 0, - RELOC_PC26); /* Botch: Shouldn't this be RELOC_PC16? */ -} - -int md_long_jump_size = 4; - -void -md_create_long_jump (char *ptr, - addressT from_addr ATTRIBUTE_UNUSED, - addressT to_addr ATTRIBUTE_UNUSED, - fragS *frag, - symbolS *to_symbol) -{ - ptr[0] = (char) 0xc0; - ptr[1] = 0x00; - ptr[2] = 0x00; - ptr[3] = 0x00; - fix_new (frag, - ptr - frag->fr_literal, - 4, - to_symbol, - (offsetT) 0, - 0, - RELOC_PC26); -} - -int -md_estimate_size_before_relax (fragS *fragP ATTRIBUTE_UNUSED, - segT segment_type ATTRIBUTE_UNUSED) -{ - as_fatal (_("Relaxation should never occur")); - return -1; -} - -#ifdef M88KCOFF - -/* These functions are needed if we are linking with obj-coffbfd.c. - That file may be replaced by a more BFD oriented version at some - point. If that happens, these functions should be reexamined. - - Ian Lance Taylor, Cygnus Support, 13 July 1993. */ - -/* Given a fixS structure (created by a call to fix_new, above), - return the BFD relocation type to use for it. */ - -short -tc_coff_fix2rtype (fixS *fixp) -{ - switch (fixp->fx_r_type) - { - case RELOC_LO16: - return R_LVRT16; - case RELOC_HI16: - return R_HVRT16; - case RELOC_PC16: - return R_PCR16L; - case RELOC_PC26: - return R_PCR26L; - case RELOC_32: - return R_VRT32; - case RELOC_IW16: - return R_VRT16; - default: - abort (); - } -} - -/* Apply a fixS to the object file. Since COFF does not use addends - in relocs, the addend is actually stored directly in the object - file itself. */ - -void -md_apply_fix (fixS *fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED) -{ - long val = * (long *) valP; - char *buf; - - buf = fixP->fx_frag->fr_literal + fixP->fx_where; - fixP->fx_offset = 0; - - switch (fixP->fx_r_type) - { - case RELOC_IW16: - fixP->fx_offset = val >> 16; - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_LO16: - fixP->fx_offset = val >> 16; - buf[0] = val >> 8; - buf[1] = val; - break; - - case RELOC_HI16: - fixP->fx_offset = val >> 16; - buf[0] = val >> 8; - buf[1] = val; - break; - - case RELOC_PC16: - buf[0] = val >> 10; - buf[1] = val >> 2; - break; - - case RELOC_PC26: - buf[0] |= (val >> 26) & 0x03; - buf[1] = val >> 18; - buf[2] = val >> 10; - buf[3] = val >> 2; - break; - - case RELOC_32: - buf[0] = val >> 24; - buf[1] = val >> 16; - buf[2] = val >> 8; - buf[3] = val; - break; - - default: - abort (); - } - - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - fixP->fx_done = 1; -} - -/* Where a PC relative offset is calculated from. On the m88k they - are calculated from just after the instruction. */ - -long -md_pcrel_from (fixS *fixp) -{ - switch (fixp->fx_r_type) - { - case RELOC_PC16: - return fixp->fx_frag->fr_address + fixp->fx_where - 2; - case RELOC_PC26: - return fixp->fx_frag->fr_address + fixp->fx_where; - default: - abort (); - } -} - -/* Fill in rs_align_code fragments. */ - -void -m88k_handle_align (fragS *fragp) -{ - static const unsigned char nop_pattern[] = { 0xf4, 0x00, 0x58, 0x00 }; - - int bytes; - char *p; - - if (fragp->fr_type != rs_align_code) - return; - - bytes = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix; - p = fragp->fr_literal + fragp->fr_fix; - - if (bytes & 3) - { - int fix = bytes & 3; - memset (p, 0, fix); - p += fix; - bytes -= fix; - fragp->fr_fix += fix; - } - - memcpy (p, nop_pattern, 4); - fragp->fr_var = 4; -} - -#endif /* M88KCOFF */ - -const pseudo_typeS md_pseudo_table[] = -{ - {"align", s_align_bytes, 4}, - {"def", s_set, 0}, - {"dfloat", float_cons, 'd'}, - {"ffloat", float_cons, 'f'}, - {"half", cons, 2}, - {"bss", s_lcomm, 1}, - {"string", stringer, 0}, - {"word", cons, 4}, - /* Force set to be treated as an instruction. */ - {"set", NULL, 0}, - {".set", s_set, 0}, - {NULL, NULL, 0} -}; diff -uprN binutils-2.16.91.0.2/gas/config/tc-m88k.h binutils-2.16.91.0.3/gas/config/tc-m88k.h --- binutils-2.16.91.0.2/gas/config/tc-m88k.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-m88k.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,109 +0,0 @@ -/* m88k.h -- Assembler for the Motorola 88000 - Contributed by Devon Bowen of Buffalo University - and Torbjorn Granlund of the Swedish Institute of Computer Science. - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, - 2002, 2005 Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#define TC_M88K - -#define TARGET_BYTES_BIG_ENDIAN 1 - -#ifdef M88KCOFF -#define COFF_MAGIC MC88OMAGIC -#define BFD_ARCH bfd_arch_m88k -#define COFF_FLAGS F_AR32W -#endif - -#define NEED_FX_R_TYPE -#define TC_KEEP_FX_OFFSET -#define TC_CONS_RELOC RELOC_32 - -/* Different type of relocation available in the m88k. */ - -enum reloc_type -{ - RELOC_LO16, /* lo16(sym). */ - RELOC_HI16, /* hi16(sym). */ - RELOC_PC16, /* bb0, bb1, bcnd. */ - RELOC_PC26, /* br, bsr. */ - RELOC_32, /* Jump tables, etc. */ - RELOC_IW16, /* Global access through linker regs 28. */ - NO_RELOC -}; - -struct reloc_info_m88k -{ - unsigned long int r_address; - unsigned int r_symbolnum:24; - unsigned int r_extern:1; - unsigned int r_pad:3; - enum reloc_type r_type:4; - long int r_addend; -}; - -#define relocation_info reloc_info_m88k - -/* The m88k uses '@' to start local labels. */ -#define LEX_AT (LEX_BEGIN_NAME | LEX_NAME) - -#ifndef BFD_ASSEMBLER -#define LOCAL_LABEL(name) \ - ((name[0] =='@' && (name [1] == 'L' || name [1] == '.')) \ - || (name[0] == 'L' && name[1] == '0' && name[2] == '\001')) -#endif - -/* The m88k uses pseudo-ops with no leading period. */ -#define NO_PSEUDO_DOT 1 - -/* Don't warn on word overflow; it happens on %hi relocs. */ -#undef WARN_SIGNED_OVERFLOW_WORD - -#define md_convert_frag(b,s,f) {as_fatal (_("m88k convert_frag\n"));} - -/* We don't need to do anything special for undefined symbols. */ -#define md_undefined_symbol(s) 0 - -/* We have no special operand handling. */ -#define md_operand(e) - -#ifdef M88KCOFF - -/* Whether a reloc should be output. */ -#define TC_COUNT_RELOC(fixp) ((fixp)->fx_addsy != NULL) - -/* Get the BFD reloc type to use for a gas fixS structure. */ -#define TC_COFF_FIX2RTYPE(fixp) tc_coff_fix2rtype (fixp) - -/* No special hook needed for symbols. */ -#define tc_coff_symbol_emit_hook(s) - -/* Align sections to a four byte boundary. */ -#ifndef max -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#endif -#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) max (section_alignment[(int) (SEG)], 4) - -/* Fill in rs_align_code fragments. */ -extern void m88k_handle_align (fragS *); -#define HANDLE_ALIGN(frag) m88k_handle_align (frag) - -#define MAX_MEM_FOR_RS_ALIGN_CODE (3 + 4) - -#endif /* M88KCOFF */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-maxq.c binutils-2.16.91.0.3/gas/config/tc-maxq.c --- binutils-2.16.91.0.2/gas/config/tc-maxq.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-maxq.c 2005-08-22 12:27:42.000000000 -0700 @@ -90,7 +90,6 @@ union _maxq20_op typedef union _maxq20_op maxq20_opcode; /* For handling optional L/S in Maxq20. */ -#ifdef BFD_ASSEMBLER /* Exposed For Linker - maps indirectly to the liker relocations. */ #define LONG_PREFIX MAXQ_LONGJUMP /* BFD_RELOC_16 */ @@ -100,16 +99,6 @@ typedef union _maxq20_op maxq20_opcode; #define NO_PREFIX 0 #define EXPLICT_LONG_PREFIX 14 -#else - -#define EXPLICT_LONG_PREFIX 14 -#define LONG_PREFIX 5 -#define SHORT_PREFIX 1 -#define ABSOLUTE_ADDR_FOR_DATA 0 -#define NO_PREFIX 0 - -#endif - /* The main instruction structure containing fields to describe instrn */ typedef struct _maxq20_insn { @@ -229,7 +218,6 @@ md_show_usage (FILE * stream) ")); } -#ifdef BFD_ASSEMBLER unsigned long maxq20_mach (void) { @@ -298,8 +286,6 @@ tc_gen_reloc (asection *section ATTRIBUT return rel; } -#endif - /* md_estimate_size_before_relax() Called just before relax() for rs_machine_dependent frags. The MAXQ @@ -464,35 +450,13 @@ maxq20_cons_fix_new (fragS * frag, unsig return; } -short -tc_coff_fix2rtype (fixS * fixP) -{ - return fixP->fx_r_type; -} - -int -tc_coff_sizemachdep (fragS *fragP) -{ - if (fragP->fr_next) - return (fragP->fr_next->fr_address - fragP->fr_address); - - return 0; -} - /* GAS will call this for every rs_machine_dependent fragment. The instruction is compleated using the data from the relaxation pass. It may also create any necessary relocations. */ -#ifdef BFD_ASSEMBLER void md_convert_frag (bfd * headers ATTRIBUTE_UNUSED, segT seg ATTRIBUTE_UNUSED, fragS * fragP) -#else -void -md_convert_frag (object_headers * headers ATTRIBUTE_UNUSED, - segT sec ATTRIBUTE_UNUSED, - fragS * fragP) -#endif { char *opcode; offsetT target_address; @@ -619,18 +583,10 @@ md_apply_fix (fixS *fixP, valueT *valT, maxq_number_to_chars (p + 1, PFX0, 1); } -#ifdef BFD_ASSEMBLER /* Remember value for tc_gen_reloc. */ fixP->fx_addnumber = *valT; -#endif } - /* This prob can be fixed by defining tc_fix_adjustable. */ -#ifndef BFD_ASSEMBLER - if (fixP->fx_addsy && S_GET_SEGMENT (fixP->fx_addsy)) - segment_info[S_GET_SEGMENT (fixP->fx_addsy)].dot = NULL; -#endif - /* Some fixups generated by GAS which gets resovled before this this func. is called need to be wriiten to the frag as here we are going to go away with the relocations fx_done=1. */ @@ -728,16 +684,6 @@ const pseudo_typeS md_pseudo_table[] = {NULL, 0, 0}, }; -#if defined(BFD_HEADERS) -#ifdef RELSZ -const int md_reloc_size = RELSZ; /* Coff headers. */ -#else -const int md_reloc_size = 12; /* Something else headers. */ -#endif -#else -const int md_reloc_size = 12; /* Not bfdized. */ -#endif - #define SET_PFX_ARG(x) (PFX_INSN[1] = x) @@ -1512,22 +1458,8 @@ maxq20_data (char *op_string) if (symbolP != NULL && S_GET_SEGMENT (symbolP) != now_seg - && S_GET_SEGMENT (symbolP) != -#ifdef BFD_ASSEMBLER - bfd_und_section_ptr -#else - SEG_UNKNOWN -#endif - ) + && S_GET_SEGMENT (symbolP) != bfd_und_section_ptr) { - int val_pfx; - -#ifdef BFD_ASSEMBLER - val_pfx = 0; -#else - val_pfx = (symbolP->sy_value.X_add_number) >> 8; -#endif - /* In case we do not want to always include the prefix instruction and let the loader handle the job or in case of a 8 bit addressing mode, we will just check for val_pfx to be equal to zero and then load the @@ -1535,7 +1467,7 @@ maxq20_data (char *op_string) loaded. */ /* The prefix register will have to be loaded automatically as we have a 16 bit addressing field. */ - pfx_for_imm_val (val_pfx); + pfx_for_imm_val (0); return symbolP; } @@ -1592,23 +1524,14 @@ maxq20_displacement (char *disp_start, c #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)) if (exp->X_op != O_constant -#ifdef BFD_ASSEMBLER && OUTPUT_FLAVOR == bfd_target_aout_flavour -#endif && exp_seg != absolute_section && exp_seg != text_section && exp_seg != data_section && exp_seg != bss_section && exp_seg != undefined_section -#ifdef BFD_ASSEMBLER - && !bfd_is_com_section (exp_seg) -#endif - ) + && !bfd_is_com_section (exp_seg)) { -#ifdef BFD_ASSEMBLER as_bad (_("unimplemented segment %s in operand"), exp_seg->name); -#else - as_bad (_("unimplemented segment type %d in operand"), exp_seg); -#endif return 0; } #endif diff -uprN binutils-2.16.91.0.2/gas/config/tc-maxq.h binutils-2.16.91.0.3/gas/config/tc-maxq.h --- binutils-2.16.91.0.2/gas/config/tc-maxq.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-maxq.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,6 +1,6 @@ /* tc-maxq.h -- Header file for the asssembler(MAXQ) - Copyright 2004 Free Software Foundation, Inc. + Copyright 2004, 2005 Free Software Foundation, Inc. Contributed by HCL Technologies Pvt. Ltd. @@ -50,10 +50,6 @@ typedef enum _RELOC_ENUM } RELOC_ENUM; -#ifndef NEED_FX_R_TYPE -#define NEED_FX_R_TYPE /* For defining our own rloc type. */ -#endif - #ifndef MAX_STACK #define MAX_STACK 0xf #endif @@ -86,9 +82,6 @@ RELOC_ENUM; /* Locally defined symbol shoudnot be adjusted to section symbol. */ #define tc_fix_adjustable(FIX) 0 -#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag) -extern int tc_coff_sizemachdep (fragS * frag); - /* This specifies that the target has been defined as little endian - default. */ #define TARGET_BYTES_BIG_ENDIAN 0 @@ -107,23 +100,6 @@ extern int tc_coff_sizemachdep (fragS * #define TARGET_MACH maxq20_mach () extern unsigned long maxq20_mach (void); -/* COFF format. */ -#ifndef BFD_ASSEMBLER - -/* Defines the magic number we are using for the maxq-coff. defined in coff.h. */ -#define COFF_MAGIC MAXQ20MAGIC -#define BFD_ARCH bfd_arch_maxq - -/* Whether the reloc should be outputted to the file or not. This - is only true if the symbol we are relocating for is not empty. */ -#define TC_COUNT_RELOC(fixp) ((fixp) -> fx_addsy != NULL) - -/* This macro translates between an internal fix and an coff reloc type. */ -#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype (fixP) -extern short tc_coff_fix2rtype (struct fix *); - -#endif /* BFD_ASSEMBLER */ - #ifndef LEX_AT /* We define this macro to generate a fixup for a data allocation pseudo-op. */ #define TC_CONS_FIX_NEW(FRAG,OFF,LEN,EXP) maxq20_cons_fix_new (FRAG,OFF,LEN,EXP) diff -uprN binutils-2.16.91.0.2/gas/config/tc-mcore.c binutils-2.16.91.0.3/gas/config/tc-mcore.c --- binutils-2.16.91.0.2/gas/config/tc-mcore.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-mcore.c 2005-08-22 12:27:42.000000000 -0700 @@ -49,8 +49,6 @@ const char comment_chars[] = "#/"; const char line_separator_chars[] = ";"; const char line_comment_chars[] = "#/"; -const int md_reloc_size = 8; - static int do_jsri2bsr = 0; /* Change here from 1 by Cruess 19 August 97. */ static int sifilter_mode = 0; diff -uprN binutils-2.16.91.0.2/gas/config/tc-mcore.h binutils-2.16.91.0.3/gas/config/tc-mcore.h --- binutils-2.16.91.0.2/gas/config/tc-mcore.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-mcore.h 2005-08-22 12:27:42.000000000 -0700 @@ -23,37 +23,21 @@ #ifndef TC_MCORE #define TC_MCORE 1 -#ifndef BFD_ASSEMBLER - #error MCORE support requires BFD_ASSEMBLER -#endif - #define TARGET_ARCH bfd_arch_mcore /* Used to initialise target_big_endian. */ #define TARGET_BYTES_BIG_ENDIAN 0 -/* Don't write out relocs for pcrel stuff. */ -#define TC_COUNT_RELOC(x) (((x)->fx_addsy || (x)->fx_subsy) && \ - (x)->fx_r_type < BFD_RELOC_MCORE_PCREL_IMM8BY4) - #define IGNORE_NONSTANDARD_ESCAPES -#define TC_RELOC_MANGLE(a,b,c) tc_reloc_mangle (a, b, c) - /* Some pseudo-op semantic extensions. */ #define PSEUDO_LCOMM_OPTIONAL_ALIGN #define LISTING_HEADER "M.CORE GAS Version 2.9.4" #define LISTING_LHS_CONT_LINES 4 -#define NEED_FX_R_TYPE 1 -#define COFF_FLAGS 1 - /* We want local label support. */ #define LOCAL_LABELS_FB 1 -#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag) -int tc_coff_sizemachdep (struct frag *); - extern const struct relax_type md_relax_table[]; #define TC_GENERIC_RELAX_TABLE md_relax_table #define md_end md_mcore_end diff -uprN binutils-2.16.91.0.2/gas/config/tc-mips.c binutils-2.16.91.0.3/gas/config/tc-mips.c --- binutils-2.16.91.0.2/gas/config/tc-mips.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-mips.c 2005-08-22 12:27:42.000000000 -0700 @@ -11407,35 +11407,50 @@ s_mips_globl (int x ATTRIBUTE_UNUSED) symbolS *symbolP; flagword flag; - name = input_line_pointer; - c = get_symbol_end (); - symbolP = symbol_find_or_make (name); - *input_line_pointer = c; - SKIP_WHITESPACE (); - - /* On Irix 5, every global symbol that is not explicitly labelled as - being a function is apparently labelled as being an object. */ - flag = BSF_OBJECT; - - if (! is_end_of_line[(unsigned char) *input_line_pointer]) + do { - char *secname; - asection *sec; - - secname = input_line_pointer; + name = input_line_pointer; c = get_symbol_end (); - sec = bfd_get_section_by_name (stdoutput, secname); - if (sec == NULL) - as_bad (_("%s: no such section"), secname); + symbolP = symbol_find_or_make (name); + S_SET_EXTERNAL (symbolP); + *input_line_pointer = c; + SKIP_WHITESPACE (); - if (sec != NULL && (sec->flags & SEC_CODE) != 0) - flag = BSF_FUNCTION; - } + /* On Irix 5, every global symbol that is not explicitly labelled as + being a function is apparently labelled as being an object. */ + flag = BSF_OBJECT; + + if (!is_end_of_line[(unsigned char) *input_line_pointer] + && (*input_line_pointer != ',')) + { + char *secname; + asection *sec; + + secname = input_line_pointer; + c = get_symbol_end (); + sec = bfd_get_section_by_name (stdoutput, secname); + if (sec == NULL) + as_bad (_("%s: no such section"), secname); + *input_line_pointer = c; + + if (sec != NULL && (sec->flags & SEC_CODE) != 0) + flag = BSF_FUNCTION; + } - symbol_get_bfdsym (symbolP)->flags |= flag; + symbol_get_bfdsym (symbolP)->flags |= flag; + + c = *input_line_pointer; + if (c == ',') + { + input_line_pointer++; + SKIP_WHITESPACE (); + if (is_end_of_line[(unsigned char) *input_line_pointer]) + c = '\n'; + } + } + while (c == ','); - S_SET_EXTERNAL (symbolP); demand_empty_rest_of_line (); } diff -uprN binutils-2.16.91.0.2/gas/config/tc-mn10200.h binutils-2.16.91.0.3/gas/config/tc-mn10200.h --- binutils-2.16.91.0.2/gas/config/tc-mn10200.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-mn10200.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* tc-mn10200.h -- Header file for tc-mn10200.c. - Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + Copyright 1996, 1997, 2000, 2001, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -22,10 +22,6 @@ #define TARGET_BYTES_BIG_ENDIAN 0 -#ifndef BFD_ASSEMBLER - #error MN10200 support requires BFD_ASSEMBLER -#endif - /* The target BFD architecture. */ #define TARGET_ARCH bfd_arch_mn10200 diff -uprN binutils-2.16.91.0.2/gas/config/tc-mn10300.c binutils-2.16.91.0.3/gas/config/tc-mn10300.c --- binutils-2.16.91.0.2/gas/config/tc-mn10300.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-mn10300.c 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* tc-mn10300.c -- Assembler code for the Matsushita 10300 - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -2468,11 +2468,10 @@ md_apply_fix (fixP, valP, seg) abort (); /* The value we are passed in *valuep includes the symbol values. - Since we are using BFD_ASSEMBLER, if we are doing this relocation - the code in write.c is going to call bfd_install_relocation, which - is also going to use the symbol value. That means that if the - reloc is fully resolved we want to use *valuep since - bfd_install_relocation is not being used. + If we are doing this relocation the code in write.c is going to + call bfd_install_relocation, which is also going to use the symbol + value. That means that if the reloc is fully resolved we want to + use *valuep since bfd_install_relocation is not being used. However, if the reloc is not fully resolved we do not want to use *valuep, and must use fx_offset instead. However, if the reloc diff -uprN binutils-2.16.91.0.2/gas/config/tc-mn10300.h binutils-2.16.91.0.3/gas/config/tc-mn10300.h --- binutils-2.16.91.0.2/gas/config/tc-mn10300.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-mn10300.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* tc-mn10300.h -- Header file for tc-mn10300.c. - Copyright 1996, 1997, 2000, 2001, 2002, 2003, 2004 + Copyright 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -23,10 +23,6 @@ #define TARGET_BYTES_BIG_ENDIAN 0 -#ifndef BFD_ASSEMBLER - #error MN10300 support requires BFD_ASSEMBLER -#endif - #define DIFF_EXPR_OK #define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_" diff -uprN binutils-2.16.91.0.2/gas/config/tc-ms1.h binutils-2.16.91.0.3/gas/config/tc-ms1.h --- binutils-2.16.91.0.2/gas/config/tc-ms1.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-ms1.h 2005-08-22 12:27:42.000000000 -0700 @@ -20,11 +20,6 @@ #define TC_MS1 -#ifndef BFD_ASSEMBLER -/* Leading space so will compile with cc. */ - #error MS1 support requires BFD_ASSEMBLER -#endif - #define LISTING_HEADER "MS1 GAS " /* The target BFD architecture. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-msp430.c binutils-2.16.91.0.3/gas/config/tc-msp430.c --- binutils-2.16.91.0.2/gas/config/tc-msp430.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-msp430.c 2005-08-22 12:27:42.000000000 -0700 @@ -31,6 +31,49 @@ #include "opcode/msp430.h" #include "safe-ctype.h" +/* + We will disable polymorphs by default because it is dangerous. + The potencial problem here is the following: assume we got the + following code: + + jump .l1 + nop + jump subroutine ; external symbol + .l1: + nop + ret + + In case of assembly time relaxation we'll get: + 0: jmp .l1 <.text +0x08> (reloc deleted) + 2: nop + 4: br subroutine + .l1: + 8: nop + 10: ret + + If the 'subroutine' wiys thin +-1024 bytes range then linker + will produce + 0: jmp .text +0x08 + 2: nop + 4: jmp subroutine + .l1: + 6: nop + 8: ret ; 'jmp .text +0x08' will land here. WRONG!!! + + + The workaround is the following: + 1. Declare global var enable_polymorphs which set to 1 via option -mP. + 2. Declare global var enable_relax which set to 1 via option -mQ. + + If polymorphs are enabled, and relax isn't, treat all jumps as long jumps, + do not delete any relocs and leave them for linker. + + If relax is enabled, relax at assembly time and kill relocs as necessary. + */ + +int msp430_enable_relax; +int msp430_enable_polys; + /* GCC uses the some condition codes which we'll implement as new polymorph instructions. @@ -205,6 +248,7 @@ struct mcu_type_s #define MSP430_ISA_14 14 #define MSP430_ISA_15 15 #define MSP430_ISA_16 16 +#define MSP430_ISA_21 21 #define MSP430_ISA_31 31 #define MSP430_ISA_32 32 #define MSP430_ISA_33 33 @@ -251,6 +295,11 @@ static struct mcu_type_s mcu_types[] = {"msp430x1611", MSP430_ISA_16, bfd_mach_msp16}, {"msp430x1612", MSP430_ISA_16, bfd_mach_msp16}, + {"msp430x2101", MSP430_ISA_21, bfd_mach_msp21}, + {"msp430x2111", MSP430_ISA_21, bfd_mach_msp21}, + {"msp430x2121", MSP430_ISA_21, bfd_mach_msp21}, + {"msp430x2131", MSP430_ISA_21, bfd_mach_msp21}, + {"msp430x311", MSP430_ISA_31, bfd_mach_msp31}, {"msp430x312", MSP430_ISA_31, bfd_mach_msp31}, {"msp430x313", MSP430_ISA_31, bfd_mach_msp31}, @@ -654,6 +703,8 @@ extract_word (char * from, char * to, in } #define OPTION_MMCU 'm' +#define OPTION_RELAX 'Q' +#define OPTION_POLYMORPHS 'P' static void msp430_set_arch (int dummy ATTRIBUTE_UNUSED) @@ -703,6 +754,17 @@ md_parse_option (int c, char * arg) as_fatal (_("redefinition of mcu type %s' to %s'"), msp430_mcu->name, mcu_types[i].name); return 1; + break; + + case OPTION_RELAX: + msp430_enable_relax = 1; + return 1; + break; + + case OPTION_POLYMORPHS: + msp430_enable_polys = 1; + return 1; + break; } return 0; @@ -721,6 +783,8 @@ const char *md_shortopts = "m:"; struct option md_longopts[] = { {"mmcu", required_argument, NULL, OPTION_MMCU}, + {"mP", no_argument, NULL, OPTION_POLYMORPHS}, + {"mQ", no_argument, NULL, OPTION_RELAX}, {NULL, no_argument, NULL, 0} }; @@ -752,6 +816,9 @@ md_show_usage (FILE * stream) " msp430xG437 msp430xG438 msp430G439\n" " msp430x435 msp430x436 msp430x437\n" " msp430x447 msp430x448 msp430x449\n")); + fprintf (stream, + _(" -mQ - enable relaxation at assembly time. DANGEROUS!\n" + " -mP - enable polymorph instructions\n")); show_mcu_list (stream); } @@ -1677,6 +1744,12 @@ msp430_operands (struct msp430_opcode_s break; case 4: /* Extended jumps. */ + if (!msp430_enable_polys) + { + as_bad(_("polymorphs are not enabled. Use -mP option to enable.")); + break; + } + line = extract_operand (line, l1, sizeof (l1)); if (l1[0]) { @@ -1708,6 +1781,11 @@ msp430_operands (struct msp430_opcode_s break; case 5: /* Emulated extended branches. */ + if (!msp430_enable_polys) + { + as_bad(_("polymorphs are not enabled. Use -mP option to enable.")); + break; + } line = extract_operand (line, l1, sizeof (l1)); if (l1[0]) { @@ -1814,9 +1892,24 @@ md_pcrel_from_section (fixS * fixp, segT return fixp->fx_frag->fr_address + fixp->fx_where; } +/* Replaces standard TC_FORCE_RELOCATION_LOCAL. + Now it handles the situation when relocations + have to be passed to linker. */ +int +msp430_force_relocation_local(fixS *fixp) +{ + if (msp430_enable_polys + && !msp430_enable_relax) + return 1; + else + return (!fixp->fx_pcrel + || fixp->fx_plt + || generic_force_reloc(fixp)); +} + + /* GAS will call this for each fixup. It should store the correct value in the object file. */ - void md_apply_fix (fixS * fixp, valueT * valuep, segT seg) { @@ -1873,13 +1966,18 @@ md_apply_fix (fixS * fixp, valueT * valu } } - switch (fixp->fx_r_type) - { - default: - fixp->fx_no_overflow = 1; - break; - case BFD_RELOC_MSP430_10_PCREL: - break; + fixp->fx_no_overflow = 1; + + /* if polymorphs are enabled and relax disabled. + do not kill any relocs and pass them to linker. */ + if (msp430_enable_polys + && !msp430_enable_relax) + { + if (!fixp->fx_addsy || (fixp->fx_addsy + && S_GET_SEGMENT (fixp->fx_addsy) == absolute_section)) + fixp->fx_done = 1; /* it is ok to kill 'abs' reloc */ + else + fixp->fx_done = 0; } if (fixp->fx_done) @@ -1958,12 +2056,11 @@ md_apply_fix (fixS * fixp, valueT * valu } } -/* A `BFD_ASSEMBLER' GAS will call this to generate a reloc. GAS - will pass the resulting reloc to `bfd_install_relocation'. This - currently works poorly, as `bfd_install_relocation' often does the - wrong thing, and instances of `tc_gen_reloc' have been written to - work around the problems, which in turns makes it difficult to fix - `bfd_install_relocation'. */ +/* GAS will call this to generate a reloc, passing the resulting reloc + to `bfd_install_relocation'. This currently works poorly, as + `bfd_install_relocation' often does the wrong thing, and instances of + `tc_gen_reloc' have been written to work around the problems, which + in turns makes it difficult to fix `bfd_install_relocation'. */ /* If while processing a fixup, a reloc really needs to be created then it is done here. */ @@ -2180,6 +2277,13 @@ msp430_relax_frag (segT seg ATTRIBUTE_UN aim = S_GET_VALUE (symbolP) - fragP->fr_address - fragP->fr_fix; } + if (!msp430_enable_relax) + { + /* Relaxation is not enabled. So, make all jump as long ones + by setting 'aim' to quite high value. */ + aim = 0x7fff; + } + this_state = fragP->fr_subtype; start_type = this_type = table + this_state; diff -uprN binutils-2.16.91.0.2/gas/config/tc-msp430.h binutils-2.16.91.0.3/gas/config/tc-msp430.h --- binutils-2.16.91.0.2/gas/config/tc-msp430.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-msp430.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* This file is tc-msp430.h - Copyright (C) 2002, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. Contributed by Dmitry Diky @@ -20,10 +20,6 @@ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef BFD_ASSEMBLER - #error MSP430 support requires BFD_ASSEMBLER -#endif - #define TC_MSP430 /* By convention, you should define this macro in the `.h' file. For example, `tc-m68k.h' defines `TC_M68K'. You might have to use this @@ -116,3 +112,11 @@ extern long md_pcrel_from_section (struc #define md_relax_frag(SEG, FRAGP, STRETCH) \ msp430_relax_frag (SEG, FRAGP, STRETCH) extern long msp430_relax_frag (segT, fragS *, long); + +#define TC_FORCE_RELOCATION_LOCAL(FIX) \ + msp430_force_relocation_local(FIX) +extern int msp430_force_relocation_local(struct fix *); + + +extern int msp430_enable_relax; +extern int msp430_enable_polys; diff -uprN binutils-2.16.91.0.2/gas/config/tc-ns32k.c binutils-2.16.91.0.3/gas/config/tc-ns32k.c --- binutils-2.16.91.0.2/gas/config/tc-ns32k.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-ns32k.c 2005-08-22 12:27:42.000000000 -0700 @@ -1243,7 +1243,6 @@ parse (const char *line, int recursive_l return recursive_level; } -#ifdef BFD_ASSEMBLER /* This functionality should really be in the bfd library. */ static bfd_reloc_code_real_type @@ -1307,7 +1306,6 @@ reloc (int size, int pcrel, int type) return BFD_RELOC_NONE; } -#endif static void fix_new_ns32k (fragS *frag, /* Which frag? */ @@ -1327,11 +1325,7 @@ fix_new_ns32k (fragS *frag, /* Which fr { fixS *fixP = fix_new (frag, where, size, add_symbol, offset, pcrel, -#ifdef BFD_ASSEMBLER bit_fixP ? NO_RELOC : reloc (size, pcrel, im_disp) -#else - NO_RELOC -#endif ); fix_opcode_frag (fixP) = opcode_frag; @@ -1359,11 +1353,7 @@ fix_new_ns32k_exp (fragS *frag, /* Whic unsigned int opcode_offset) { fixS *fixP = fix_new_exp (frag, where, size, exp, pcrel, -#ifdef BFD_ASSEMBLER bit_fixP ? NO_RELOC : reloc (size, pcrel, im_disp) -#else - NO_RELOC -#endif ); fix_opcode_frag (fixP) = opcode_frag; @@ -2047,17 +2037,10 @@ md_apply_fix (fixS *fixP, valueT * valP, /* Convert a relaxed displacement to ditto in final output. */ -#ifndef BFD_ASSEMBLER -void -md_convert_frag (object_headers *headers, - segT sec, - fragS *fragP) -#else void md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT sec ATTRIBUTE_UNUSED, fragS *fragP) -#endif { long disp; long ext = 0; @@ -2137,7 +2120,6 @@ md_estimate_size_before_relax (fragS *fr int md_short_jump_size = 3; int md_long_jump_size = 5; -const int md_reloc_size = 8; /* Size of relocation record. */ void md_create_short_jump (char *ptr, @@ -2275,8 +2257,6 @@ md_pcrel_from (fixS *fixP) return res; } -#ifdef BFD_ASSEMBLER - arelent * tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp) { @@ -2308,39 +2288,3 @@ tc_gen_reloc (asection *section ATTRIBUT return rel; } -#else /* BFD_ASSEMBLER */ - -#ifdef OBJ_AOUT -void -cons_fix_new_ns32k (char *where, - struct fix *fixP, - relax_addressT segment_address_in_file) -{ - /* In: Length of relocation (or of address) in chars: 1, 2 or 4. - Out: GNU LD relocation length code: 0, 1, or 2. */ - - static unsigned char nbytes_r_length[] = { 42, 0, 1, 42, 2 }; - long r_symbolnum; - - know (fixP->fx_addsy != NULL); - - md_number_to_chars (where, - fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file, - 4); - - r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy) - ? S_GET_TYPE (fixP->fx_addsy) - : fixP->fx_addsy->sy_number); - - md_number_to_chars (where + 4, - ((long) (r_symbolnum) - | (long) (fixP->fx_pcrel << 24) - | (long) (nbytes_r_length[fixP->fx_size] << 25) - | (long) ((!S_IS_DEFINED (fixP->fx_addsy)) << 27) - | (long) (fix_bsr (fixP) << 28) - | (long) (fix_im_disp (fixP) << 29)), - 4); -} - -#endif /* OBJ_AOUT */ -#endif /* BFD_ASSEMBLER */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-ns32k.h binutils-2.16.91.0.3/gas/config/tc-ns32k.h --- binutils-2.16.91.0.2/gas/config/tc-ns32k.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-ns32k.h 2005-08-22 12:27:42.000000000 -0700 @@ -26,7 +26,6 @@ #define TC_PCREL_ADJUST(F) md_pcrel_adjust(F) extern int md_pcrel_adjust (fragS *); -#ifdef BFD_ASSEMBLER #define NO_RELOC BFD_RELOC_NONE #define TARGET_ARCH bfd_arch_ns32k @@ -34,18 +33,11 @@ extern int md_pcrel_adjust (fragS *); #ifndef TARGET_FORMAT /* Maybe defined in te-*.h. */ #define TARGET_FORMAT "a.out-pc532-mach" #endif -#else -#define NO_RELOC 0 -#endif #define LOCAL_LABELS_FB 1 #include "bit_fix.h" -#define tc_aout_pre_write_hook(x) {;} /* not used */ -#define tc_crawl_symbol_chain(a) {;} /* not used */ -#define tc_headers_hook(a) {;} /* not used */ - #ifdef SEQUENT_COMPATABILITY #define DEF_MODEC 20 #define DEF_MODEL 21 diff -uprN binutils-2.16.91.0.2/gas/config/tc-openrisc.h binutils-2.16.91.0.3/gas/config/tc-openrisc.h --- binutils-2.16.91.0.2/gas/config/tc-openrisc.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-openrisc.h 2005-08-22 12:27:42.000000000 -0700 @@ -20,11 +20,6 @@ #define TC_OPENRISC -#ifndef BFD_ASSEMBLER -/* leading space so will compile with cc */ -# error OPENRISC support requires BFD_ASSEMBLER -#endif - #define LISTING_HEADER "OpenRISC GAS " /* The target BFD architecture. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-or32.c binutils-2.16.91.0.3/gas/config/tc-or32.c --- binutils-2.16.91.0.2/gas/config/tc-or32.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-or32.c 2005-08-22 12:27:42.000000000 -0700 @@ -26,10 +26,7 @@ #include "safe-ctype.h" #include "as.h" #include "opcode/or32.h" - -#ifdef BFD_ASSEMBLER #include "elf/or32.h" -#endif #define DEBUG 0 @@ -74,16 +71,6 @@ const pseudo_typeS md_pseudo_table[] = int md_short_jump_size = 4; int md_long_jump_size = 4; -#if defined(BFD_HEADERS) -#ifdef RELSZ -const int md_reloc_size = RELSZ; /* Coff headers. */ -#else -const int md_reloc_size = 12; /* Something else headers. */ -#endif -#else -const int md_reloc_size = 12; /* Not bfdized. */ -#endif - /* This array holds the chars that always start a comment. If the pre-processor is disabled, these aren't very useful. */ const char comment_chars[] = "#"; @@ -254,11 +241,7 @@ md_assemble (char *str) md_number_to_chars (toP, the_insn.opcode, 4); /* Put out the symbol-dependent stuff. */ -#ifdef BFD_ASSEMBLER if (the_insn.reloc != BFD_RELOC_NONE) -#else - if (the_insn.reloc != NO_RELOC) -#endif { fix_new_exp (frag_now, (toP - frag_now->fr_literal + the_insn.reloc_offset), @@ -274,7 +257,6 @@ static int waiting_for_shift = 0; static int mask_or_shift = 0; -#ifdef BFD_ASSEMBLER static char * parse_operand (char *s, expressionS *operandp, int opt) { @@ -338,83 +320,11 @@ parse_operand (char *s, expressionS *ope return new; } -#else - -static char * -parse_operand (char *s, expressionS *operandp, int opt) -{ - char *save = input_line_pointer; - char *new; - -#if DEBUG - printf (" PROCESS NEW OPERAND(%s) == %c (%d)\n", s, opt ? opt : '!', opt); -#endif - - input_line_pointer = s; - - if (strncasecmp (s, "HI(", 3) == 0) - { - waiting_for_shift = 1; - mask_or_shift = RELOC_CONSTH; - - input_line_pointer += 3; - } - else if (strncasecmp (s, "LO(", 3) == 0) - { - mask_or_shift = RELOC_CONST; - - input_line_pointer += 3; - } - else - mask_or_shift = 0; - - expression (operandp); - - if (operandp->X_op == O_absent) - { - if (! opt) - as_bad (_("missing operand")); - else - { - operandp->X_add_number = 0; - operandp->X_op = O_constant; - } - } - - new = input_line_pointer; - input_line_pointer = save; - - if ((operandp->X_op == O_symbol) && (*s != '_')) - { -#if DEBUG - printf ("symbol: '%s'\n", save); -#endif - - for (save = s; s < new; s++) - if ((*s == REGISTER_PREFIX) && (*(s + 1) == 'r')) /* Register prefix. */ - s++; - - if ((*s == 'r') && ISDIGIT (*(s + 1))) - { - operandp->X_add_number = strtol (s + 1, NULL, 10); - operandp->X_op = O_register; - } - s = save; - } - -#if DEBUG - printf (" %s=parse_operand(%s): operandp->X_op = %u\n", new, s, operandp->X_op); -#endif - - return new; -} -#endif /* Instruction parsing. Takes a string containing the opcode. Operands are at input_line_pointer. Output is in the_insn. Warnings or errors are generated. */ -#ifdef BFD_ASSEMBLER static void machine_ip (char *str) { @@ -619,214 +529,6 @@ machine_ip (char *str) } } -#else - -static void -machine_ip (char *str) -{ - char *s; - const char *args; - const struct machine_opcode *insn; - char *argsStart; - unsigned long opcode; - expressionS the_operand; - expressionS *operand = &the_operand; - unsigned int regno; - int reloc = NO_RELOC; - -#if DEBUG - printf ("machine_ip(%s)\n", str); -#endif - - s = str; - for (; ISALNUM (*s) || *s == '.'; ++s) - if (ISUPPER (*s)) - *s = TOLOWER (*s); - - switch (*s) - { - case '\0': - break; - - case ' ': /* FIXME-SOMEDAY more whitespace. */ - *s++ = '\0'; - break; - - default: - as_bad (_("unknown opcode1: `%s'"), str); - return; - } - - if ((insn = (struct machine_opcode *) hash_find (op_hash, str)) == NULL) - { - as_bad (_("unknown opcode2 `%s'."), str); - return; - } - - argsStart = s; - opcode = 0; - memset (&the_insn, '\0', sizeof (the_insn)); - the_insn.reloc = NO_RELOC; - - reloc = NO_RELOC; - - /* Build the opcode, checking as we go to make sure that the - operands match. - - If an operand matches, we modify the_insn or opcode appropriately, - and do a "continue". If an operand fails to match, we "break". */ - if (insn->args[0] != '\0') - /* Prime the pump. */ - s = parse_operand (s, operand, - insn->args[0] == 'I' - || strcmp (insn->name, "l.nop") == 0); - - for (args = insn->args;; ++args) - { -#if DEBUG - printf (" args = %s\n", args); -#endif - switch (*args) - { - case '\0': /* End of args. */ - /* We have have 0 args, do the bazoooka! */ - if (args == insn->args) - encode (insn, &opcode, 0, 0); - - if (*s == '\0') - { - /* We are truly done. */ - the_insn.opcode = opcode; - if (check_invalid_opcode (opcode)) - as_bad (_("instruction not allowed: %s"), str); - return; - } - as_bad (_("too many operands: %s"), s); - break; - - case ',': /* Must match a comma. */ - if (*s++ == ',') - { - reloc = NO_RELOC; - - /* Parse next operand. */ - s = parse_operand (s, operand, args[1] == 'I'); -#if DEBUG - printf (" ',' case: operand->X_add_number = %d, *args = %s, *s = %s\n", - operand->X_add_number, args, s); -#endif - continue; - } - break; - - case '(': /* Must match a (. */ - s = parse_operand (s, operand, args[1] == 'I'); - continue; - - case ')': /* Must match a ). */ - continue; - - case 'r': /* A general register. */ - args++; - - if (operand->X_op != O_register) - break; /* Only registers. */ - - know (operand->X_add_symbol == 0); - know (operand->X_op_symbol == 0); - regno = operand->X_add_number; - encode (insn, &opcode, regno, *args); -#if DEBUG - printf (" r: operand->X_op = %d\n", operand->X_op); -#endif - continue; - - default: - /* if (! ISALPHA (*args)) - break; */ /* Only immediate values. */ - - if (mask_or_shift) - { -#if DEBUG - printf ("mask_or_shift = %d\n", mask_or_shift); -#endif - reloc = mask_or_shift; - } - mask_or_shift = 0; - - if (strncasecmp (args, "LO(", 3) == 0) - { -#if DEBUG - printf ("reloc_const\n"); -#endif - reloc = RELOC_CONST; - } - else if (strncasecmp (args, "HI(", 3) == 0) - { -#if DEBUG - printf ("reloc_consth\n"); -#endif - reloc = RELOC_CONSTH; - } - - if (*s == '(') - operand->X_op = O_constant; - else if (*s == ')') - s += 1; -#if DEBUG - printf (" default case: operand->X_add_number = %d, *args = %s, *s = %s\n", - operand->X_add_number, args, s); -#endif - if (operand->X_op == O_constant) - { - if (reloc == NO_RELOC) - { - unsigned long v, mask; - - mask = 0x3ffffff; - v = abs (operand->X_add_number) & ~ mask; - if (v) - as_bad (_("call/jmp target out of range (1)")); - } - - if (reloc == RELOC_CONSTH) - operand->X_add_number = ((operand->X_add_number>>16) & 0xffff); - - the_insn.pcrel = 0; - encode (insn, &opcode, operand->X_add_number, *args); - /* the_insn.reloc = NO_RELOC; */ - continue; - } - - if (reloc == NO_RELOC) - the_insn.reloc = RELOC_JUMPTARG; - else - the_insn.reloc = reloc; -#if DEBUG - printf (" reloc sym=%d\n", the_insn.reloc); - printf (" NO_RELOC=%d\n", NO_RELOC); -#endif - the_insn.exp = *operand; - - /* the_insn.reloc_offset = 1; */ - the_insn.pcrel = 1; /* Assume PC-relative jump. */ - - /* FIXME-SOON, Do we figure out whether abs later, after - know sym val? */ - if (reloc == RELOC_CONST || reloc == RELOC_CONSTH) - the_insn.pcrel = 0; - - encode (insn, &opcode, operand->X_add_number, *args); - continue; - } - - /* Types or values of args don't match. */ - as_bad (_("invalid operands")); - return; - } -} -#endif - /* This is identical to the md_atof in m68k.c. I think this is right, but I'm not sure. @@ -900,7 +602,6 @@ md_number_to_chars (char *buf, valueT va number_to_chars_bigendian (buf, val, n); } -#ifdef BFD_ASSEMBLER void md_apply_fix (fixS * fixP, valueT * val, segT seg ATTRIBUTE_UNUSED) { @@ -996,153 +697,6 @@ md_apply_fix (fixS * fixP, valueT * val, if (fixP->fx_addsy == (symbolS *) NULL) fixP->fx_done = 1; } -#else -void -md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) -{ - long val = *valP; - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - -#if DEBUG - printf ("md_apply_fix val:%x\n", val); -#endif - - fixP->fx_addnumber = val; /* Remember value for emit_reloc. */ - - know (fixP->fx_size == 4); - know (fixP->fx_r_type < NO_RELOC); - - /* This is a hack. There should be a better way to handle this. */ - if (fixP->fx_r_type == RELOC_WDISP30 && fixP->fx_addsy) - val += fixP->fx_where + fixP->fx_frag->fr_address; - - switch (fixP->fx_r_type) - { - case RELOC_32: - buf[0] = val >> 24; - buf[1] = val >> 16; - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_8: - buf[0] = val; - break; - - case RELOC_WDISP30: - val = (val >> 2) + 1; - buf[0] |= (val >> 24) & 0x3f; - buf[1] = (val >> 16); - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_HI22: - buf[1] |= (val >> 26) & 0x3f; - buf[2] = val >> 18; - buf[3] = val >> 10; - break; - - case RELOC_LO10: - buf[2] |= (val >> 8) & 0x03; - buf[3] = val; - break; - - case RELOC_BASE13: - buf[2] |= (val >> 8) & 0x1f; - buf[3] = val; - break; - - case RELOC_WDISP22: - val = (val >> 2) + 1; - /* FALLTHROUGH */ - case RELOC_BASE22: - buf[1] |= (val >> 16) & 0x3f; - buf[2] = val >> 8; - buf[3] = val; - break; - - case RELOC_JUMPTARG: /* 0000XXXX pattern in a word. */ - if (!fixP->fx_done) - { - /* The linker tries to support both AMD and old GNU style - R_IREL relocs. That means that if the addend is exactly - the negative of the address within the section, the - linker will not handle it correctly. */ - } - else if (fixP->fx_pcrel) - { - long v = val >> 28; - if (v != 0 && v != -1) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("call/jmp target out of range (2)")); - } - else - /* This case was supposed to be handled in machine_ip. */ - abort (); - - buf[0] |= (val >> 26) & 0x03; /* Holds bits 0FFFFFFC of address. */ - buf[1] = val >> 18; - buf[2] = val >> 10; - buf[3] = val >> 2; - break; - - case RELOC_CONST: /* 0000XXXX pattern in a word. */ -#if DEBUG - printf ("reloc_const: val=%x\n", val); -#endif - buf[2] = val >> 8; /* Holds bits 0000XXXX. */ - buf[3] = val; - break; - - case RELOC_CONSTH: /* 0000XXXX pattern in a word. */ -#if DEBUG - printf ("reloc_consth: val=%x\n", val); -#endif - buf[2] = val >> 24; /* Holds bits XXXX0000. */ - buf[3] = val >> 16; - break; - - case BFD_RELOC_VTABLE_INHERIT: - case BFD_RELOC_VTABLE_ENTRY: - fixP->fx_done = 0; - break; - - case NO_RELOC: - default: - as_bad (_("bad relocation type: 0x%02x"), fixP->fx_r_type); - break; - } - - if (fixP->fx_addsy == (symbolS *) NULL) - fixP->fx_done = 1; -} -#endif - -#ifdef OBJ_COFF -short -tc_coff_fix2rtype (fixS *fixP) -{ -#if DEBUG - printf ("tc_coff_fix2rtype\n"); -#endif - - switch (fixP->fx_r_type) - { - case RELOC_32: return R_WORD; - case RELOC_8: return R_BYTE; - case RELOC_CONST: return R_ILOHALF; - case RELOC_CONSTH: return R_IHIHALF; - case RELOC_JUMPTARG: return R_IREL; - default: - printf ("need %d\n", fixP->fx_r_type); - abort (); - } - - return 0; -} - -#endif /* OBJ_COFF */ /* Should never be called for or32. */ @@ -1158,16 +712,6 @@ md_create_short_jump (char * ptr /* Should never be called for or32. */ -#ifndef BFD_ASSEMBLER -void -md_convert_frag (object_headers * headers ATTRIBUTE_UNUSED, - segT seg ATTRIBUTE_UNUSED, - register fragS * fragP ATTRIBUTE_UNUSED) -{ - as_fatal ("or32_convert_frag\n"); -} - -#else void md_convert_frag (bfd * headers ATTRIBUTE_UNUSED, segT seg ATTRIBUTE_UNUSED, @@ -1175,7 +719,6 @@ md_convert_frag (bfd * headers ATTRIBU { as_fatal ("or32_convert_frag\n"); } -#endif /* Should never be called for or32. */ @@ -1307,34 +850,6 @@ or32_unrecognized_line (int c) symbolS * md_undefined_symbol (char *name ATTRIBUTE_UNUSED) { -#ifndef BFD_ASSEMBLER - long regnum; - char testbuf[5 + /*SLOP*/ 5]; - -#if DEBUG - printf ("md_undefined_symbol(%s)\n", name); -#endif - - /* Register name. */ - if (name[0] == 'r' || name[0] == 'R' || name[0] == 'a' || name[0] == 'b') - { - /* Parse the number, make sure it has no extra zeroes or - trailing chars. */ - regnum = atol (& name[1]); - - if (regnum > 31) - as_fatal (_("register out of range")); - - sprintf (testbuf, "%ld", regnum); - - if (strcmp (testbuf, &name[1]) != 0) - return NULL; /* gr007 or lr7foo or whatever. */ - - /* We have a wiener! Define and return a new symbol for it. */ - return (symbol_new (name, SEG_REGISTER, (valueT) regnum, - &zero_address_frag)); - } -#endif return NULL; } @@ -1486,7 +1001,6 @@ md_pcrel_from (fixS *fixP) /* Generate a reloc for a fixup. */ -#ifdef BFD_ASSEMBLER arelent * tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp) { @@ -1513,4 +1027,3 @@ tc_gen_reloc (asection *seg ATTRIBUTE_UN reloc->addend = fixp->fx_addnumber; return reloc; } -#endif diff -uprN binutils-2.16.91.0.2/gas/config/tc-or32.h binutils-2.16.91.0.3/gas/config/tc-or32.h --- binutils-2.16.91.0.2/gas/config/tc-or32.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-or32.h 2005-08-22 12:27:42.000000000 -0700 @@ -40,14 +40,8 @@ extern int or32_unrecognized_line (int); -#define tc_headers_hook(a) ; /* Not used. */ -#define tc_headers_hook(a) ; /* Not used. */ -#define tc_crawl_symbol_chain(a) ; /* Not used. */ #define tc_coff_symbol_emit_hook(a) ; /* Not used. */ -#define AOUT_MACHTYPE 80 -#define TC_COFF_FIX2RTYPE(fix_ptr) tc_coff_fix2rtype (fix_ptr) -#define BFD_ARCH bfd_arch_or32 #define COFF_MAGIC SIPFBOMAGIC /* No shared lib support, so we don't need to ensure externally @@ -59,13 +53,4 @@ extern int or32_unrecognized_line (int); #define MD_APPLY_SYM_VALUE(FIX) 0 #endif -/* Should the reloc be output ? - on the 29k, this is true only if there is a symbol attached. - on the h8, this is always true, since no fixup is done. */ -#define TC_COUNT_RELOC(x) (x->fx_addsy) -#define TC_CONS_RELOC RELOC_32 - -#define COFF_FLAGS F_AR32W -#define NEED_FX_R_TYPE - #define ZERO_BASED_SEGMENTS diff -uprN binutils-2.16.91.0.2/gas/config/tc-ppc.c binutils-2.16.91.0.3/gas/config/tc-ppc.c --- binutils-2.16.91.0.2/gas/config/tc-ppc.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-ppc.c 2005-08-22 12:27:42.000000000 -0700 @@ -858,6 +858,9 @@ parse_cpu (const char *arg) || strcmp (arg, "7455") == 0) ppc_cpu = (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_ALTIVEC | PPC_OPCODE_32); + else if (strcmp (arg, "e300") == 0) + ppc_cpu = (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_32 + | PPC_OPCODE_E300); else if (strcmp (arg, "altivec") == 0) { if (ppc_cpu == 0) @@ -1111,6 +1114,7 @@ PowerPC options:\n\ -many generate code for any architecture (PWR/PWRX/PPC)\n")); fprintf (stream, _("\ -maltivec generate code for AltiVec\n\ +-me300 generate code for PowerPC e300 family\n\ -me500, -me500x2 generate code for Motorola e500 core complex\n\ -mspe generate code for Motorola SPE instructions\n\ -mregnames Allow symbolic names for registers\n\ @@ -1151,12 +1155,7 @@ ppc_set_cpu () else if (strcmp (default_cpu, "rs6000") == 0) ppc_cpu |= PPC_OPCODE_POWER | PPC_OPCODE_32; else if (strncmp (default_cpu, "powerpc", 7) == 0) - { - if (default_cpu[7] == '6' && default_cpu[8] == '4') - ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_64; - else - ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_32; - } + ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_32; else as_fatal (_("Unknown default cpu = %s, os = %s"), default_cpu, default_os); @@ -5532,11 +5531,11 @@ md_apply_fix (fixP, valP, seg) fixP->fx_done = 1; #else /* FIXME FIXME FIXME: The value we are passed in *valP includes - the symbol values. Since we are using BFD_ASSEMBLER, if we are - doing this relocation the code in write.c is going to call - bfd_install_relocation, which is also going to use the symbol - value. That means that if the reloc is fully resolved we want to - use *valP since bfd_install_relocation is not being used. + the symbol values. If we are doing this relocation the code in + write.c is going to call bfd_install_relocation, which is also + going to use the symbol value. That means that if the reloc is + fully resolved we want to use *valP since bfd_install_relocation is + not being used. However, if the reloc is not fully resolved we do not want to use *valP, and must use fx_offset instead. However, if the reloc is PC relative, we do want to use *valP since it includes the @@ -6014,6 +6013,13 @@ md_apply_fix (fixP, valP, seg) #ifdef OBJ_ELF fixP->fx_addnumber = value; + + /* PowerPC uses RELA relocs, ie. the reloc addend is stored separately + from the section contents. If we are going to be emitting a reloc + then the section contents are immaterial, so don't warn if they + happen to overflow. Leave such warnings to ld. */ + if (!fixP->fx_done) + fixP->fx_no_overflow = 1; #else if (fixP->fx_r_type != BFD_RELOC_PPC_TOC16) fixP->fx_addnumber = 0; diff -uprN binutils-2.16.91.0.2/gas/config/tc-ppc.h binutils-2.16.91.0.3/gas/config/tc-ppc.h --- binutils-2.16.91.0.2/gas/config/tc-ppc.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-ppc.h 2005-08-22 12:27:42.000000000 -0700 @@ -29,10 +29,6 @@ struct fix; #define TARGET_BYTES_BIG_ENDIAN 1 #endif -#ifndef BFD_ASSEMBLER - #error PowerPC support requires BFD_ASSEMBLER -#endif - /* If OBJ_COFF is defined, and TE_PE is not defined, we are assembling XCOFF for AIX or PowerMac. If TE_PE is defined, we are assembling COFF for Windows NT. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-s390.c binutils-2.16.91.0.3/gas/config/tc-s390.c --- binutils-2.16.91.0.2/gas/config/tc-s390.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-s390.c 2005-08-22 12:27:42.000000000 -0700 @@ -410,6 +410,8 @@ md_parse_option (c, arg) current_cpu = S390_OPCODE_Z900; else if (strcmp (arg + 5, "z990") == 0) current_cpu = S390_OPCODE_Z990; + else if (strcmp (arg + 5, "z9-109") == 0) + current_cpu = S390_OPCODE_Z9_109; else { as_bad (_("invalid switch -m%s"), arg); @@ -1353,8 +1355,19 @@ md_gather_operands (str, insn, opcode) /* If there is a next operand it must be separated by a comma. */ if (opindex_ptr[1] != '\0') { - if (*str++ != ',') - as_bad (_("syntax error; expected ,")); + if (*str != ',') + { + while (opindex_ptr[1] != '\0') + { + operand = s390_operands + *(++opindex_ptr); + if (operand->flags & S390_OPERAND_OPTIONAL) + continue; + as_bad (_("syntax error; expected ,")); + break; + } + } + else + str++; } } else @@ -1386,8 +1399,19 @@ md_gather_operands (str, insn, opcode) /* If there is a next operand it must be separated by a comma. */ if (opindex_ptr[1] != '\0') { - if (*str++ != ',') - as_bad (_("syntax error; expected ,")); + if (*str != ',') + { + while (opindex_ptr[1] != '\0') + { + operand = s390_operands + *(++opindex_ptr); + if (operand->flags & S390_OPERAND_OPTIONAL) + continue; + as_bad (_("syntax error; expected ,")); + break; + } + } + else + str++; } } else @@ -1405,8 +1429,19 @@ md_gather_operands (str, insn, opcode) /* If there is a next operand it must be separated by a comma. */ if (opindex_ptr[1] != '\0') { - if (*str++ != ',') - as_bad (_("syntax error; expected ,")); + if (*str != ',') + { + while (opindex_ptr[1] != '\0') + { + operand = s390_operands + *(++opindex_ptr); + if (operand->flags & S390_OPERAND_OPTIONAL) + continue; + as_bad (_("syntax error; expected ,")); + break; + } + } + else + str++; } } } diff -uprN binutils-2.16.91.0.2/gas/config/tc-s390.h binutils-2.16.91.0.3/gas/config/tc-s390.h --- binutils-2.16.91.0.2/gas/config/tc-s390.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-s390.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,6 @@ /* tc-s390.h -- Header file for tc-s390.c. - Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. Written by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of GAS, the GNU Assembler. @@ -23,10 +24,6 @@ struct fix; -#ifndef BFD_ASSEMBLER - #error S390 support requires BFD_ASSEMBLER -#endif - #define TC_FORCE_RELOCATION(FIX) tc_s390_force_relocation(FIX) extern int tc_s390_force_relocation PARAMS ((struct fix *)); diff -uprN binutils-2.16.91.0.2/gas/config/tc-sh64.c binutils-2.16.91.0.3/gas/config/tc-sh64.c --- binutils-2.16.91.0.2/gas/config/tc-sh64.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-sh64.c 2005-08-22 12:27:42.000000000 -0700 @@ -2928,14 +2928,14 @@ sh64_target_format (void) { #ifdef TE_NetBSD /* For NetBSD, if the ISA is unspecified, always use SHmedia. */ - if (sh64_isa_mode == sh64_isa_unspecified) + if (preset_target_arch == 0 && sh64_isa_mode == sh64_isa_unspecified) sh64_isa_mode = sh64_isa_shmedia; /* If the ABI is unspecified, select a default: based on how we were configured: sh64 == sh64_abi_64, else sh64_abi_32. */ if (sh64_abi == sh64_abi_unspecified) { - if (sh64_isa_mode == sh64_isa_shcompact) + if (preset_target_arch != 0 || sh64_isa_mode == sh64_isa_shcompact) sh64_abi = sh64_abi_32; else if (strncmp (TARGET_CPU, "sh64", 4) == 0) sh64_abi = sh64_abi_64; @@ -2945,7 +2945,7 @@ sh64_target_format (void) #endif #ifdef TE_LINUX - if (sh64_isa_mode == sh64_isa_unspecified) + if (preset_target_arch == 0 && sh64_isa_mode == sh64_isa_unspecified) sh64_isa_mode = sh64_isa_shmedia; if (sh64_abi == sh64_abi_unspecified) diff -uprN binutils-2.16.91.0.2/gas/config/tc-sh.c binutils-2.16.91.0.3/gas/config/tc-sh.c --- binutils-2.16.91.0.2/gas/config/tc-sh.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-sh.c 2005-08-22 12:27:42.000000000 -0700 @@ -124,8 +124,6 @@ const pseudo_typeS md_pseudo_table[] = {0, 0, 0} }; -/*int md_reloc_size; */ - int sh_relax; /* set if -relax seen */ /* Whether -small was seen. */ @@ -2871,9 +2869,7 @@ md_assemble (char *str) } } -#ifdef BFD_ASSEMBLER dwarf2_emit_insn (size); -#endif } /* This routine is called each time a label definition is seen. It @@ -2922,24 +2918,6 @@ md_undefined_symbol (char *name ATTRIBUT return 0; } -#ifdef OBJ_COFF -#ifndef BFD_ASSEMBLER - -void -tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_crawl_symbol_chain \n")); -} - -void -tc_headers_hook (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_headers_hook \n")); -} - -#endif -#endif - /* Various routines to kill one day. */ /* Equal to MAX_PRECISION in atof-ieee.c. */ #define MAX_LITTLENUMS 6 @@ -3245,8 +3223,7 @@ struct sh_count_relocs }; /* Count the number of fixups in a section which refer to a particular - symbol. When using BFD_ASSEMBLER, this is called via - bfd_map_over_sections. */ + symbol. This is called via bfd_map_over_sections. */ static void sh_count_relocs (bfd *abfd ATTRIBUTE_UNUSED, segT sec, void *data) @@ -3271,8 +3248,8 @@ sh_count_relocs (bfd *abfd ATTRIBUTE_UNU } } -/* Handle the count relocs for a particular section. When using - BFD_ASSEMBLER, this is called via bfd_map_over_sections. */ +/* Handle the count relocs for a particular section. + This is called via bfd_map_over_sections. */ static void sh_frob_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec, @@ -3302,9 +3279,6 @@ sh_frob_section (bfd *abfd ATTRIBUTE_UNU || fix->fx_subsy != NULL || fix->fx_addnumber != 0 || S_GET_SEGMENT (sym) != sec -#if ! defined (BFD_ASSEMBLER) && defined (OBJ_COFF) - || S_GET_STORAGE_CLASS (sym) == C_EXT -#endif || S_IS_EXTERNAL (sym)) { as_warn_where (fix->fx_file, fix->fx_line, @@ -3344,9 +3318,6 @@ sh_frob_section (bfd *abfd ATTRIBUTE_UNU || fscan->fx_subsy != NULL || fscan->fx_addnumber != 0 || S_GET_SEGMENT (sym) != sec -#if ! defined (BFD_ASSEMBLER) && defined (OBJ_COFF) - || S_GET_STORAGE_CLASS (sym) == C_EXT -#endif || S_IS_EXTERNAL (sym)) { as_warn_where (fix->fx_file, fix->fx_line, @@ -3358,16 +3329,7 @@ sh_frob_section (bfd *abfd ATTRIBUTE_UNU counting the number of times we find a reference to sym. */ info.sym = sym; info.count = 0; -#ifdef BFD_ASSEMBLER bfd_map_over_sections (stdoutput, sh_count_relocs, &info); -#else - { - int iscan; - - for (iscan = SEG_E0; iscan < SEG_UNKNOWN; iscan++) - sh_count_relocs ((bfd *) NULL, iscan, &info); - } -#endif if (info.count < 1) abort (); @@ -3402,28 +3364,14 @@ sh_frob_file (void) if (! sh_relax) return; -#ifdef BFD_ASSEMBLER bfd_map_over_sections (stdoutput, sh_frob_section, NULL); -#else - { - int iseg; - - for (iseg = SEG_E0; iseg < SEG_UNKNOWN; iseg++) - sh_frob_section ((bfd *) NULL, iseg, NULL); - } -#endif } /* Called after relaxing. Set the correct sizes of the fragments, and create relocs so that md_apply_fix will fill in the correct values. */ void -#ifdef BFD_ASSEMBLER md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT seg, fragS *fragP) -#else -md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, segT seg, - fragS *fragP) -#endif { int donerelax = 0; @@ -3496,12 +3444,7 @@ md_convert_frag (object_headers *headers /* Build a relocation to six / four bytes farther on. */ subseg_change (seg, 0); - fix_new (fragP, fragP->fr_fix, 2, -#ifdef BFD_ASSEMBLER - section_symbol (seg), -#else - seg_info (seg)->dot, -#endif + fix_new (fragP, fragP->fr_fix, 2, section_symbol (seg), fragP->fr_address + fragP->fr_fix + (delay ? 4 : 6), 1, BFD_RELOC_SH_PCDISP8BY2); @@ -3568,17 +3511,12 @@ md_convert_frag (object_headers *headers valueT md_section_align (segT seg ATTRIBUTE_UNUSED, valueT size) { -#ifdef BFD_ASSEMBLER #ifdef OBJ_ELF return size; #else /* ! OBJ_ELF */ return ((size + (1 << bfd_get_section_alignment (stdoutput, seg)) - 1) & (-1 << bfd_get_section_alignment (stdoutput, seg))); #endif /* ! OBJ_ELF */ -#else /* ! BFD_ASSEMBLER */ - return ((size + (1 << section_alignment[(int) seg]) - 1) - & (-1 << section_alignment[(int) seg])); -#endif /* ! BFD_ASSEMBLER */ } /* This static variable is set by s_uacons to tell sh_cons_align that @@ -3803,7 +3741,6 @@ md_apply_fix (fixS *fixP, valueT *valP, long max, min; int shift; -#ifdef BFD_ASSEMBLER /* A difference between two symbols, the second of which is in the current section, is transformed in a PC-relative relocation to the other symbol. We have to adjust the relocation type here. */ @@ -3849,24 +3786,9 @@ md_apply_fix (fixS *fixP, valueT *valP, && fixP->fx_addsy != NULL && S_IS_WEAK (fixP->fx_addsy)) val -= S_GET_VALUE (fixP->fx_addsy); -#endif -#ifdef BFD_ASSEMBLER if (SWITCH_TABLE (fixP)) val -= S_GET_VALUE (fixP->fx_subsy); -#else - if (fixP->fx_r_type == 0) - { - if (fixP->fx_size == 2) - fixP->fx_r_type = BFD_RELOC_16; - else if (fixP->fx_size == 4) - fixP->fx_r_type = BFD_RELOC_32; - else if (fixP->fx_size == 1) - fixP->fx_r_type = BFD_RELOC_8; - else - abort (); - } -#endif max = min = 0; shift = 0; @@ -4015,7 +3937,7 @@ md_apply_fix (fixS *fixP, valueT *valP, break; case BFD_RELOC_SH_USES: - /* Pass the value into sh_coff_reloc_mangle. */ + /* Pass the value into sh_reloc(). */ fixP->fx_addnumber = val; break; @@ -4207,8 +4129,7 @@ md_number_to_chars (char *ptr, valueT us number_to_chars_bigendian (ptr, use, nbytes); } -/* This version is used in obj-coff.c when not using BFD_ASSEMBLER. - eg for the sh-hms target. */ +/* This version is used in obj-coff.c eg. for the sh-hms target. */ long md_pcrel_from (fixS *fixP) @@ -4234,167 +4155,6 @@ md_pcrel_from_section (fixS *fixP, segT return md_pcrel_from (fixP); } -#ifdef OBJ_COFF - -int -tc_coff_sizemachdep (fragS *frag) -{ - return md_relax_table[frag->fr_subtype].rlx_length; -} - -#endif /* OBJ_COFF */ - -#ifndef BFD_ASSEMBLER -#ifdef OBJ_COFF - -/* Map BFD relocs to SH COFF relocs. */ - -struct reloc_map -{ - bfd_reloc_code_real_type bfd_reloc; - int sh_reloc; -}; - -static const struct reloc_map coff_reloc_map[] = -{ - { BFD_RELOC_32, R_SH_IMM32 }, - { BFD_RELOC_16, R_SH_IMM16 }, - { BFD_RELOC_8, R_SH_IMM8 }, - { BFD_RELOC_SH_PCDISP8BY2, R_SH_PCDISP8BY2 }, - { BFD_RELOC_SH_PCDISP12BY2, R_SH_PCDISP }, - { BFD_RELOC_SH_IMM4, R_SH_IMM4 }, - { BFD_RELOC_SH_IMM4BY2, R_SH_IMM4BY2 }, - { BFD_RELOC_SH_IMM4BY4, R_SH_IMM4BY4 }, - { BFD_RELOC_SH_IMM8, R_SH_IMM8 }, - { BFD_RELOC_SH_IMM8BY2, R_SH_IMM8BY2 }, - { BFD_RELOC_SH_IMM8BY4, R_SH_IMM8BY4 }, - { BFD_RELOC_SH_PCRELIMM8BY2, R_SH_PCRELIMM8BY2 }, - { BFD_RELOC_SH_PCRELIMM8BY4, R_SH_PCRELIMM8BY4 }, - { BFD_RELOC_8_PCREL, R_SH_SWITCH8 }, - { BFD_RELOC_SH_SWITCH16, R_SH_SWITCH16 }, - { BFD_RELOC_SH_SWITCH32, R_SH_SWITCH32 }, - { BFD_RELOC_SH_USES, R_SH_USES }, - { BFD_RELOC_SH_COUNT, R_SH_COUNT }, - { BFD_RELOC_SH_ALIGN, R_SH_ALIGN }, - { BFD_RELOC_SH_CODE, R_SH_CODE }, - { BFD_RELOC_SH_DATA, R_SH_DATA }, - { BFD_RELOC_SH_LABEL, R_SH_LABEL }, - { BFD_RELOC_UNUSED, 0 } -}; - -/* Adjust a reloc for the SH. This is similar to the generic code, - but does some minor tweaking. */ - -void -sh_coff_reloc_mangle (segment_info_type *seg, fixS *fix, - struct internal_reloc *intr, unsigned int paddr) -{ - symbolS *symbol_ptr = fix->fx_addsy; - symbolS *dot; - - intr->r_vaddr = paddr + fix->fx_frag->fr_address + fix->fx_where; - - if (! SWITCH_TABLE (fix)) - { - const struct reloc_map *rm; - - for (rm = coff_reloc_map; rm->bfd_reloc != BFD_RELOC_UNUSED; rm++) - if (rm->bfd_reloc == (bfd_reloc_code_real_type) fix->fx_r_type) - break; - if (rm->bfd_reloc == BFD_RELOC_UNUSED) - as_bad_where (fix->fx_file, fix->fx_line, - _("Can not represent %s relocation in this object file format"), - bfd_get_reloc_code_name (fix->fx_r_type)); - intr->r_type = rm->sh_reloc; - intr->r_offset = 0; - } - else - { - know (sh_relax); - - if (fix->fx_r_type == BFD_RELOC_16) - intr->r_type = R_SH_SWITCH16; - else if (fix->fx_r_type == BFD_RELOC_8) - intr->r_type = R_SH_SWITCH8; - else if (fix->fx_r_type == BFD_RELOC_32) - intr->r_type = R_SH_SWITCH32; - else - abort (); - - /* For a switch reloc, we set r_offset to the difference between - the reloc address and the subtrahend. When the linker is - doing relaxing, it can use the determine the starting and - ending points of the switch difference expression. */ - intr->r_offset = intr->r_vaddr - S_GET_VALUE (fix->fx_subsy); - } - - /* PC relative relocs are always against the current section. */ - if (symbol_ptr == NULL) - { - switch (fix->fx_r_type) - { - case BFD_RELOC_SH_PCRELIMM8BY2: - case BFD_RELOC_SH_PCRELIMM8BY4: - case BFD_RELOC_SH_PCDISP8BY2: - case BFD_RELOC_SH_PCDISP12BY2: - case BFD_RELOC_SH_USES: - symbol_ptr = seg->dot; - break; - default: - break; - } - } - - if (fix->fx_r_type == BFD_RELOC_SH_USES) - { - /* We can't store the offset in the object file, since this - reloc does not take up any space, so we store it in r_offset. - The fx_addnumber field was set in md_apply_fix. */ - intr->r_offset = fix->fx_addnumber; - } - else if (fix->fx_r_type == BFD_RELOC_SH_COUNT) - { - /* We can't store the count in the object file, since this reloc - does not take up any space, so we store it in r_offset. The - fx_offset field was set when the fixup was created in - sh_coff_frob_file. */ - intr->r_offset = fix->fx_offset; - /* This reloc is always absolute. */ - symbol_ptr = NULL; - } - else if (fix->fx_r_type == BFD_RELOC_SH_ALIGN) - { - /* Store the alignment in the r_offset field. */ - intr->r_offset = fix->fx_offset; - /* This reloc is always absolute. */ - symbol_ptr = NULL; - } - else if (fix->fx_r_type == BFD_RELOC_SH_CODE - || fix->fx_r_type == BFD_RELOC_SH_DATA - || fix->fx_r_type == BFD_RELOC_SH_LABEL) - { - /* These relocs are always absolute. */ - symbol_ptr = NULL; - } - - /* Turn the segment of the symbol into an offset. */ - if (symbol_ptr != NULL) - { - dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot; - if (dot != NULL) - intr->r_symndx = dot->sy_number; - else - intr->r_symndx = symbol_ptr->sy_number; - } - else - intr->r_symndx = -1; -} - -#endif /* OBJ_COFF */ -#endif /* ! BFD_ASSEMBLER */ - -#ifdef BFD_ASSEMBLER - /* Create a reloc. */ arelent * @@ -4610,4 +4370,3 @@ sh_regname_to_dw2regnum (const char *reg return regnum; } #endif /* OBJ_ELF */ -#endif /* BFD_ASSEMBLER */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-sh.h binutils-2.16.91.0.3/gas/config/tc-sh.h --- binutils-2.16.91.0.2/gas/config/tc-sh.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-sh.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,6 +1,6 @@ /* This file is tc-sh.h Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004 Free Software Foundation, Inc. + 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -60,16 +60,6 @@ extern int sh_force_relocation (struct f to know about all such entries so that it can adjust them if necessary. */ -#ifdef BFD_ASSEMBLER -#define SWITCH_TABLE_CONS(FIX) (0) -#else -#define SWITCH_TABLE_CONS(FIX) \ - ((FIX)->fx_r_type == 0 \ - && ((FIX)->fx_size == 2 \ - || (FIX)->fx_size == 1 \ - || (FIX)->fx_size == 4)) -#endif - #define SWITCH_TABLE(FIX) \ ((FIX)->fx_addsy != NULL \ && (FIX)->fx_subsy != NULL \ @@ -77,8 +67,7 @@ extern int sh_force_relocation (struct f && S_GET_SEGMENT ((FIX)->fx_subsy) == text_section \ && ((FIX)->fx_r_type == BFD_RELOC_32 \ || (FIX)->fx_r_type == BFD_RELOC_16 \ - || (FIX)->fx_r_type == BFD_RELOC_8 \ - || SWITCH_TABLE_CONS (FIX))) + || (FIX)->fx_r_type == BFD_RELOC_8)) #define TC_FORCE_RELOCATION_SUB_SAME(FIX, SEC) \ (! SEG_NORMAL (SEC) \ @@ -122,47 +111,20 @@ extern void sh_frob_label (void); extern void sh_flush_pending_output (void); #define md_flush_pending_output() sh_flush_pending_output () -#ifdef BFD_ASSEMBLER #define tc_frob_file_before_adjust sh_frob_file -#else -#define tc_frob_file sh_frob_file -#endif extern void sh_frob_file (void); #ifdef OBJ_COFF /* COFF specific definitions. */ -/* This macro translates between an internal fix and a coff reloc type. */ -#define TC_COFF_FIX2RTYPE(fix) ((fix)->fx_r_type) - -#define BFD_ARCH TARGET_ARCH - #define COFF_MAGIC (!target_big_endian ? SH_ARCH_MAGIC_LITTLE : SH_ARCH_MAGIC_BIG) -/* We need to write out relocs which have not been completed. */ -#define TC_COUNT_RELOC(fix) ((fix)->fx_addsy != NULL) - -#define TC_RELOC_MANGLE(seg, fix, int, paddr) \ - sh_coff_reloc_mangle ((seg), (fix), (int), (paddr)) -extern void sh_coff_reloc_mangle - (struct segment_info_struct *, struct fix *, - struct internal_reloc *, unsigned int); - #define tc_coff_symbol_emit_hook(a) ; /* not used */ -#define NEED_FX_R_TYPE 1 - #define TC_KEEP_FX_OFFSET 1 -#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag) -extern int tc_coff_sizemachdep (fragS *); - -#ifdef BFD_ASSEMBLER #define SEG_NAME(SEG) segment_name (SEG) -#else -#define SEG_NAME(SEG) obj_segment_name (SEG) -#endif /* We align most sections to a 16 byte boundary. */ #define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ diff -uprN binutils-2.16.91.0.2/gas/config/tc-sparc.c binutils-2.16.91.0.3/gas/config/tc-sparc.c --- binutils-2.16.91.0.2/gas/config/tc-sparc.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-sparc.c 2005-08-22 12:27:42.000000000 -0700 @@ -174,9 +174,6 @@ const pseudo_typeS md_pseudo_table[] = {NULL, 0, 0}, }; -/* Size of relocation record. */ -const int md_reloc_size = 12; - /* This array holds the chars that always start a comment. If the pre-processor is disabled, these aren't very useful. */ const char comment_chars[] = "!"; /* JF removed '|' from @@ -3961,9 +3958,7 @@ s_common (ignore) goto allocate_common; } -#ifdef BFD_ASSEMBLER symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT; -#endif demand_empty_rest_of_line (); return; diff -uprN binutils-2.16.91.0.2/gas/config/tc-tahoe.c binutils-2.16.91.0.3/gas/config/tc-tahoe.c --- binutils-2.16.91.0.2/gas/config/tc-tahoe.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tahoe.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,1892 +0,0 @@ -/* This file is tc-tahoe.c - - Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1995, 2000, 2001, 2002, - 2003, 2004, 2005 Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#include "as.h" -#include "safe-ctype.h" -#include "obstack.h" - -/* This bit glommed from tahoe-inst.h. */ - -typedef unsigned char byte; -typedef byte tahoe_opcodeT; - -/* This is part of tahoe-ins-parse.c & friends. - We want to parse a tahoe instruction text into a tree defined here. */ - -#define TIT_MAX_OPERANDS 4 /* Maximum number of operands in one - single tahoe instruction. */ - -struct top /* Tahoe instruction operand. */ - { - int top_ndx; /* -1, or index register. eg 7=[R7]. */ - int top_reg; /* -1, or register number. eg 7 = R7 or (R7). */ - byte top_mode; /* Addressing mode byte. This byte, defines - which of the 11 modes opcode is. */ - - char top_access; /* Access type wanted for this operand - 'b'branch ' 'no-instruction 'amrvw'. */ - char top_width; /* Operand width expected, one of "bwlq?-:!". */ - - char * top_error; /* Say if operand is inappropriate. */ - - segT seg_of_operand; /* Segment as returned by expression(). */ - - expressionS exp_of_operand; /* The expression as parsed by expression(). */ - - byte top_dispsize; /* Number of bytes in the displacement if we - can figure it out. */ - }; - -/* The addressing modes for an operand. These numbers are the actual values - for certain modes, so be careful if you screw with them. */ -#define TAHOE_DIRECT_REG 0x50 -#define TAHOE_REG_DEFERRED 0x60 - -#define TAHOE_REG_DISP 0xE0 -#define TAHOE_REG_DISP_DEFERRED 0xF0 - -#define TAHOE_IMMEDIATE 0x8F -#define TAHOE_IMMEDIATE_BYTE 0x88 -#define TAHOE_IMMEDIATE_WORD 0x89 -#define TAHOE_IMMEDIATE_LONGWORD 0x8F -#define TAHOE_ABSOLUTE_ADDR 0x9F - -#define TAHOE_DISPLACED_RELATIVE 0xEF -#define TAHOE_DISP_REL_DEFERRED 0xFF - -#define TAHOE_AUTO_DEC 0x7E -#define TAHOE_AUTO_INC 0x8E -#define TAHOE_AUTO_INC_DEFERRED 0x9E -/* INDEXED_REG is decided by the existence or lack of a [reg]. */ - -/* These are encoded into top_width when top_access=='b' - and it's a psuedo op. */ -#define TAHOE_WIDTH_ALWAYS_JUMP '-' -#define TAHOE_WIDTH_CONDITIONAL_JUMP '?' -#define TAHOE_WIDTH_BIG_REV_JUMP '!' -#define TAHOE_WIDTH_BIG_NON_REV_JUMP ':' - -/* The hex code for certain tahoe commands and modes. - This is just for readability. */ -#define TAHOE_JMP 0x71 -#define TAHOE_PC_REL_LONG 0xEF -#define TAHOE_BRB 0x11 -#define TAHOE_BRW 0x13 -/* These, when 'ored' with, or added to, a register number, - set up the number for the displacement mode. */ -#define TAHOE_PC_OR_BYTE 0xA0 -#define TAHOE_PC_OR_WORD 0xC0 -#define TAHOE_PC_OR_LONG 0xE0 - -struct tit /* Get it out of the sewer, it stands for - tahoe instruction tree (Geeze!). */ -{ - tahoe_opcodeT tit_opcode; /* The opcode. */ - byte tit_operands; /* How many operands are here. */ - struct top tit_operand[TIT_MAX_OPERANDS]; /* Operands. */ - char *tit_error; /* "" or fatal error text. */ -}; - -/* end: tahoe-inst.h */ - -/* tahoe.c - tahoe-specific - - Not part of gas yet. */ - -#include "opcode/tahoe.h" - -/* This is the number to put at the beginning of the a.out file. */ -long omagic = OMAGIC; - -/* These chars start a comment anywhere in a source file (except inside - another comment or a quoted string. */ -const char comment_chars[] = "#;"; - -/* These chars only start a comment at the beginning of a line. */ -const char line_comment_chars[] = "#"; - -/* Chars that can be used to separate mant from exp in floating point nums. */ -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant - as in 0f123.456 - or 0d1.234E-12 (see exp chars above) - Note: The Tahoe port doesn't support floating point constants. This is - consistent with 'as' If it's needed, I can always add it later. */ -const char FLT_CHARS[] = "df"; - -/* Also be aware that MAXIMUM_NUMBER_OF_CHARS_FOR_FLOAT may have to be - changed in read.c . Ideally it shouldn't have to know about it at all, - but nothing is ideal around here. - (The tahoe has plenty of room, so the change currently isn't needed.) */ - -static struct tit t; /* A tahoe instruction after decoding. */ - -void float_cons (); -/* A table of pseudo ops (sans .), the function called, and an integer op - that the function is called with. */ - -const pseudo_typeS md_pseudo_table[] = -{ - {"dfloat", float_cons, 'd'}, - {"ffloat", float_cons, 'f'}, - {0} -}; - -/* For Tahoe, relative addresses of "just the right length" are pretty easy. - The branch displacement is always the last operand, even in - synthetic instructions. - For Tahoe, we encode the relax_substateTs (in e.g. fr_substate) as: - - 4 3 2 1 0 bit number - ---/ /--+-------+-------+-------+-------+-------+ - | what state ? | how long ? | - ---/ /--+-------+-------+-------+-------+-------+ - - The "how long" bits are 00=byte, 01=word, 10=long. - This is a Un*x convention. - Not all lengths are legit for a given value of (what state). - The four states are listed below. - The "how long" refers merely to the displacement length. - The address usually has some constant bytes in it as well. - - States for Tahoe address relaxing. - 1. TAHOE_WIDTH_ALWAYS_JUMP (-) - Format: "b-" - Tahoe opcodes are: (Hex) - jr 11 - jbr 11 - Simple branch. - Always, 1 byte opcode, then displacement/absolute. - If word or longword, change opcode to brw or jmp. - - 2. TAHOE_WIDTH_CONDITIONAL_JUMP (?) - J where is a simple flag test. - Format: "b?" - Tahoe opcodes are: (Hex) - jneq/jnequ 21 - jeql/jeqlu 31 - jgtr 41 - jleq 51 - jgeq 81 - jlss 91 - jgtru a1 - jlequ b1 - jvc c1 - jvs d1 - jlssu/jcs e1 - jgequ/jcc f1 - Always, you complement 4th bit to reverse the condition. - Always, 1-byte opcode, then 1-byte displacement. - - 3. TAHOE_WIDTH_BIG_REV_JUMP (!) - Jbc/Jbs where cond tests a memory bit. - Format: "rlvlb!" - Tahoe opcodes are: (Hex) - jbs 0e - jbc 1e - Always, you complement 4th bit to reverse the condition. - Always, 1-byte opcde, longword, longword-address, 1-word-displacement - - 4. TAHOE_WIDTH_BIG_NON_REV_JUMP (:) - JaoblXX/Jbssi - Format: "rlmlb:" - Tahoe opcodes are: (Hex) - aojlss 2f - jaoblss 2f - aojleq 3f - jaobleq 3f - jbssi 5f - Always, we cannot reverse the sense of the branch; we have a word - displacement. - - We need to modify the opcode is for class 1, 2 and 3 instructions. - After relax() we may complement the 4th bit of 2 or 3 to reverse sense of - branch. - - We sometimes store context in the operand literal. This way we can figure out - after relax() what the original addressing mode was. (Was is pc_rel, or - pc_rel_disp? That sort of thing.) */ - -/* These displacements are relative to the START address of the - displacement which is at the start of the displacement, not the end of - the instruction. The hardware pc_rel is at the end of the instructions. - That's why all the displacements have the length of the displacement added - to them. (WF + length(word)) - - The first letter is Byte, Word. - 2nd letter is Forward, Backward. */ -#define BF (1 + 127) -#define BB (1 + -128) -#define WF (2 + 32767) -#define WB (2 + -32768) -/* Dont need LF, LB because they always reach. [They are coded as 0.] */ - -#define C(a,b) ENCODE_RELAX(a, b) -/* This macro has no side-effects. */ -#define ENCODE_RELAX(what,length) (((what) << 2) + (length)) -#define RELAX_STATE(s) ((s) >> 2) -#define RELAX_LENGTH(s) ((s) & 3) - -#define STATE_ALWAYS_BRANCH 1 -#define STATE_CONDITIONAL_BRANCH 2 -#define STATE_BIG_REV_BRANCH 3 -#define STATE_BIG_NON_REV_BRANCH 4 -#define STATE_PC_RELATIVE 5 - -#define STATE_BYTE 0 -#define STATE_WORD 1 -#define STATE_LONG 2 -#define STATE_UNDF 3 /* Symbol undefined in pass1. */ - -/* This is the table used by gas to figure out relaxing modes. The fields are - forward_branch reach, backward_branch reach, number of bytes it would take, - where the next biggest branch is. */ -const relax_typeS md_relax_table[] = -{ - { - 1, 1, 0, 0 - }, /* Error sentinel 0,0 */ - { - 1, 1, 0, 0 - }, /* Unused 0,1 */ - { - 1, 1, 0, 0 - }, /* Unused 0,2 */ - { - 1, 1, 0, 0 - }, /* Unused 0,3 */ -/* Unconditional branch cases "jrb" - The relax part is the actual displacement */ - { - BF, BB, 1, C (1, 1) - }, /* Brb B`foo 1,0 */ - { - WF, WB, 2, C (1, 2) - }, /* Brw W`foo 1,1 */ - { - 0, 0, 5, 0 - }, /* Jmp L`foo 1,2 */ - { - 1, 1, 0, 0 - }, /* Unused 1,3 */ -/* Reversible Conditional Branch. If the branch won't reach, reverse - it, and jump over a brw or a jmp that will reach. The relax part is the - actual address. */ - { - BF, BB, 1, C (2, 1) - }, /* b B`foo 2,0 */ - { - WF + 2, WB + 2, 4, C (2, 2) - }, /* brev over, brw W`foo, over: 2,1 */ - { - 0, 0, 7, 0 - }, /* brev over, jmp L`foo, over: 2,2 */ - { - 1, 1, 0, 0 - }, /* Unused 2,3 */ -/* Another type of reversible branch. But this only has a word - displacement. */ - { - 1, 1, 0, 0 - }, /* Unused 3,0 */ - { - WF, WB, 2, C (3, 2) - }, /* jbX W`foo 3,1 */ - { - 0, 0, 8, 0 - }, /* jrevX over, jmp L`foo, over: 3,2 */ - { - 1, 1, 0, 0 - }, /* Unused 3,3 */ -/* These are the non reversible branches, all of which have a word - displacement. If I can't reach, branch over a byte branch, to a - jump that will reach. The jumped branch jumps over the reaching - branch, to continue with the flow of the program. It's like playing - leap frog. */ - { - 1, 1, 0, 0 - }, /* Unused 4,0 */ - { - WF, WB, 2, C (4, 2) - }, /* aobl_ W`foo 4,1 */ - { - 0, 0, 10, 0 - }, /*aobl_ W`hop,br over,hop: jmp L^foo,over 4,2*/ - { - 1, 1, 0, 0 - }, /* Unused 4,3 */ -/* Normal displacement mode, no jumping or anything like that. - The relax points to one byte before the address, thats why all - the numbers are up by one. */ - { - BF + 1, BB + 1, 2, C (5, 1) - }, /* B^"foo" 5,0 */ - { - WF + 1, WB + 1, 3, C (5, 2) - }, /* W^"foo" 5,1 */ - { - 0, 0, 5, 0 - }, /* L^"foo" 5,2 */ - { - 1, 1, 0, 0 - }, /* Unused 5,3 */ -}; - -#undef C -#undef BF -#undef BB -#undef WF -#undef WB -/* End relax stuff. */ - -/* Handle of the OPCODE hash table. NULL means any use before - md_begin() will crash. */ -static struct hash_control *op_hash; - -/* Init function. Build the hash table. */ - -void -md_begin (void) -{ - struct tot *tP; - char *errorval = 0; - int synthetic_too = 1; /* If 0, just use real opcodes. */ - - op_hash = hash_new (); - - for (tP = totstrs; *tP->name && !errorval; tP++) - errorval = hash_insert (op_hash, tP->name, &tP->detail); - - if (synthetic_too) - for (tP = synthetic_totstrs; *tP->name && !errorval; tP++) - errorval = hash_insert (op_hash, tP->name, &tP->detail); - - if (errorval) - as_fatal (errorval); -} - -const char *md_shortopts = "ad:STt:V"; - -struct option md_longopts[] = -{ - {NULL, no_argument, NULL, 0} -}; - -size_t md_longopts_size = sizeof (md_longopts); - -int -md_parse_option (int c, char *arg) -{ - switch (c) - { - case 'a': - as_warn (_("The -a option doesn't exist. (Despite what the man page says!")); - break; - - case 'd': - as_warn (_("Displacement length %s ignored!"), arg); - break; - - case 'S': - as_warn (_("SYMBOL TABLE not implemented")); - break; - - case 'T': - as_warn (_("TOKEN TRACE not implemented")); - break; - - case 't': - as_warn (_("I don't need or use temp. file \"%s\"."), arg); - break; - - case 'V': - as_warn (_("I don't use an interpass file! -V ignored")); - break; - - default: - return 0; - } - - return 1; -} - -void -md_show_usage (FILE *stream) -{ - fprintf (stream, _("\ -Tahoe options:\n\ --a ignored\n\ --d LENGTH ignored\n\ --J ignored\n\ --S ignored\n\ --t FILE ignored\n\ --T ignored\n\ --V ignored\n")); -} - -/* The functions in this section take numbers in the machine format, and - munges them into Tahoe byte order. - They exist primarily for cross assembly purpose. - Knows about order of bytes in address. */ - -void -md_number_to_chars (char con[], /* Return 'nbytes' of chars here. */ - valueT value, /* The value of the bits. */ - int nbytes) /* Number of bytes in the output. */ -{ - number_to_chars_bigendian (con, value, nbytes); -} - -void -md_apply_fix (fixS *fixP ATTRIBUTE_UNUSED, - valueT * valP ATTRIBUTE_UNUSED, - segT seg ATTRIBUTE_UNUSED) -{ - /* Should never be called. */ - know (0); -} - -void -md_number_to_disp (char con[]m /* Return 'nbytes' of chars here. */ - long int value, /* The value of the bits. */ - int nbytes) /* Number of bytes in the output. */ -{ - md_number_to_chars (con, value, nbytes); -} - -void -md_number_to_field (char con[], /* Return 'nbytes' of chars here. */ - long int value, /* The value of the bits. */ - int nbytes) /* Number of bytes in the output. */ -{ - md_number_to_chars (con, value, nbytes); -} - -/* Put the bits in an order that a tahoe will understand, despite the ordering - of the native machine. - On Tahoe: first 4 bytes are normal unsigned big endian long, - next three bytes are symbolnum, in kind of 3 byte big endian (least sig. byte last). - The last byte is broken up with bit 7 as pcrel, - bits 6 & 5 as length, - bit 4 as extern and the last nibble as 'undefined'. */ - -void -tc_aout_fix_to_chars (char *where, - fixS *fixP, - relax_addressT segment_address_in_file) -{ - long r_symbolnum; - - know (fixP->fx_addsy != NULL); - - md_number_to_chars (where, - fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file, - 4); - - r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy) - ? S_GET_TYPE (fixP->fx_addsy) - : fixP->fx_addsy->sy_number); - - where[4] = (r_symbolnum >> 16) & 0x0ff; - where[5] = (r_symbolnum >> 8) & 0x0ff; - where[6] = r_symbolnum & 0x0ff; - where[7] = (((is_pcrel (fixP) << 7) & 0x80) - | ((((fixP->fx_type == FX_8 || fixP->fx_type == FX_PCREL8 - ? 0 - : (fixP->fx_type == FX_16 || fixP->fx_type == FX_PCREL16 - ? 1 - : (fixP->fx_type == FX_32 || fixP->fx_type == FX_PCREL32 - ? 2 - : 42)))) << 5) & 0x60) - | ((!S_IS_DEFINED (fixP->fx_addsy) << 4) & 0x10)); -} - -/* Relocate byte stuff. */ - -/* This is for broken word. */ -int md_short_jump_size = 3; - -void -md_create_short_jump (char *ptr, - addressT from_addr, - addressT to_addr, - fragS *frag, - symbolS *to_symbol) -{ - valueT offset; - - offset = to_addr - (from_addr + 1); - *ptr++ = TAHOE_BRW; - md_number_to_chars (ptr, offset, 2); -} - -int md_long_jump_size = 6; -const int md_reloc_size = 8; /* Size of relocation record. */ - -void -md_create_long_jump (char *ptr, - addressT from_addr, - addressT to_addr, - fragS *frag, - symbolS *to_symbol) -{ - valueT offset; - - offset = to_addr - (from_addr + 4); - *ptr++ = TAHOE_JMP; - *ptr++ = TAHOE_PC_REL_LONG; - md_number_to_chars (ptr, offset, 4); -} - -/* md_estimate_size_before_relax(), called just before relax(). - Any symbol that is now undefined will not become defined. - Return the correct fr_subtype in the frag and the growth beyond - fr_fix. */ - -int -md_estimate_size_before_relax (fragS *fragP, segT segment_type) -{ - if (RELAX_LENGTH (fragP->fr_subtype) == STATE_UNDF) - { - if (S_GET_SEGMENT (fragP->fr_symbol) != segment) - { - /* Non-relaxable cases. */ - char *p; - int old_fr_fix; - - old_fr_fix = fragP->fr_fix; - p = fragP->fr_literal + old_fr_fix; - switch (RELAX_STATE (fragP->fr_subtype)) - { - case STATE_PC_RELATIVE: - *p |= TAHOE_PC_OR_LONG; - /* We now know how big it will be, one long word. */ - fragP->fr_fix += 1 + 4; - fix_new (fragP, old_fr_fix + 1, fragP->fr_symbol, - fragP->fr_offset, FX_PCREL32, NULL); - break; - - case STATE_CONDITIONAL_BRANCH: - *fragP->fr_opcode ^= 0x10; /* Reverse sense of branch. */ - *p++ = 6; - *p++ = TAHOE_JMP; - *p++ = TAHOE_PC_REL_LONG; - fragP->fr_fix += 1 + 1 + 1 + 4; - fix_new (fragP, old_fr_fix + 3, fragP->fr_symbol, - fragP->fr_offset, FX_PCREL32, NULL); - break; - - case STATE_BIG_REV_BRANCH: - *fragP->fr_opcode ^= 0x10; /* Reverse sense of branch. */ - *p++ = 0; - *p++ = 6; - *p++ = TAHOE_JMP; - *p++ = TAHOE_PC_REL_LONG; - fragP->fr_fix += 2 + 2 + 4; - fix_new (fragP, old_fr_fix + 4, fragP->fr_symbol, - fragP->fr_offset, FX_PCREL32, NULL); - break; - - case STATE_BIG_NON_REV_BRANCH: - *p++ = 2; - *p++ = 0; - *p++ = TAHOE_BRB; - *p++ = 6; - *p++ = TAHOE_JMP; - *p++ = TAHOE_PC_REL_LONG; - fragP->fr_fix += 2 + 2 + 2 + 4; - fix_new (fragP, old_fr_fix + 6, fragP->fr_symbol, - fragP->fr_offset, FX_PCREL32, NULL); - break; - - case STATE_ALWAYS_BRANCH: - *fragP->fr_opcode = TAHOE_JMP; - *p++ = TAHOE_PC_REL_LONG; - fragP->fr_fix += 1 + 4; - fix_new (fragP, old_fr_fix + 1, fragP->fr_symbol, - fragP->fr_offset, FX_PCREL32, NULL); - break; - - default: - abort (); - } - frag_wane (fragP); - - /* Return the growth in the fixed part of the frag. */ - return fragP->fr_fix - old_fr_fix; - } - - /* Relaxable cases. Set up the initial guess for the variable - part of the frag. */ - switch (RELAX_STATE (fragP->fr_subtype)) - { - case STATE_PC_RELATIVE: - fragP->fr_subtype = ENCODE_RELAX (STATE_PC_RELATIVE, STATE_BYTE); - break; - case STATE_CONDITIONAL_BRANCH: - fragP->fr_subtype = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE); - break; - case STATE_BIG_REV_BRANCH: - fragP->fr_subtype = ENCODE_RELAX (STATE_BIG_REV_BRANCH, STATE_WORD); - break; - case STATE_BIG_NON_REV_BRANCH: - fragP->fr_subtype = ENCODE_RELAX (STATE_BIG_NON_REV_BRANCH, STATE_WORD); - break; - case STATE_ALWAYS_BRANCH: - fragP->fr_subtype = ENCODE_RELAX (STATE_ALWAYS_BRANCH, STATE_BYTE); - break; - } - } - - if (fragP->fr_subtype >= sizeof (md_relax_table) / sizeof (md_relax_table[0])) - abort (); - - /* Return the size of the variable part of the frag. */ - return md_relax_table[fragP->fr_subtype].rlx_length; -} - -/* Called after relax() is finished. - In: Address of frag. - fr_type == rs_machine_dependent. - fr_subtype is what the address relaxed to. - - Out: Any fixSs and constants are set up. - Caller will turn frag into a ".space 0". */ - -void -md_convert_frag (object_headers *headers, segT seg, fragS *fragP) -{ - char *addressP; /* -> _var to change. */ - char *opcodeP; /* -> opcode char(s) to change. */ - short int extension = 0; /* Size of relaxed address. - Added to fr_fix: incl. ALL var chars. */ - symbolS *symbolP; - long int where; - long int address_of_var; - /* Where, in file space, is _var of *fragP? */ - long int target_address; - /* Where, in file space, does addr point? */ - - know (fragP->fr_type == rs_machine_dependent); - where = fragP->fr_fix; - addressP = fragP->fr_literal + where; - opcodeP = fragP->fr_opcode; - symbolP = fragP->fr_symbol; - know (symbolP); - target_address = S_GET_VALUE (symbolP) + fragP->fr_offset; - address_of_var = fragP->fr_address + where; - - switch (fragP->fr_subtype) - { - case ENCODE_RELAX (STATE_PC_RELATIVE, STATE_BYTE): - /* *addressP holds the registers number, plus 0x10, if it's deferred - mode. To set up the right mode, just OR the size of this displacement. */ - /* Byte displacement. */ - *addressP++ |= TAHOE_PC_OR_BYTE; - *addressP = target_address - (address_of_var + 2); - extension = 2; - break; - - case ENCODE_RELAX (STATE_PC_RELATIVE, STATE_WORD): - /* Word displacement. */ - *addressP++ |= TAHOE_PC_OR_WORD; - md_number_to_chars (addressP, target_address - (address_of_var + 3), 2); - extension = 3; - break; - - case ENCODE_RELAX (STATE_PC_RELATIVE, STATE_LONG): - /* Long word displacement. */ - *addressP++ |= TAHOE_PC_OR_LONG; - md_number_to_chars (addressP, target_address - (address_of_var + 5), 4); - extension = 5; - break; - - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE): - *addressP = target_address - (address_of_var + 1); - extension = 1; - break; - - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_WORD): - *opcodeP ^= 0x10; /* Reverse sense of test. */ - *addressP++ = 3; /* Jump over word branch. */ - *addressP++ = TAHOE_BRW; - md_number_to_chars (addressP, target_address - (address_of_var + 4), 2); - extension = 4; - break; - - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_LONG): - *opcodeP ^= 0x10; /* Reverse sense of test. */ - *addressP++ = 6; - *addressP++ = TAHOE_JMP; - *addressP++ = TAHOE_PC_REL_LONG; - md_number_to_chars (addressP, target_address, 4); - extension = 7; - break; - - case ENCODE_RELAX (STATE_ALWAYS_BRANCH, STATE_BYTE): - *addressP = target_address - (address_of_var + 1); - extension = 1; - break; - - case ENCODE_RELAX (STATE_ALWAYS_BRANCH, STATE_WORD): - *opcodeP = TAHOE_BRW; - md_number_to_chars (addressP, target_address - (address_of_var + 2), 2); - extension = 2; - break; - - case ENCODE_RELAX (STATE_ALWAYS_BRANCH, STATE_LONG): - *opcodeP = TAHOE_JMP; - *addressP++ = TAHOE_PC_REL_LONG; - md_number_to_chars (addressP, target_address - (address_of_var + 5), 4); - extension = 5; - break; - - case ENCODE_RELAX (STATE_BIG_REV_BRANCH, STATE_WORD): - md_number_to_chars (addressP, target_address - (address_of_var + 2), 2); - extension = 2; - break; - - case ENCODE_RELAX (STATE_BIG_REV_BRANCH, STATE_LONG): - *opcodeP ^= 0x10; - *addressP++ = 0; - *addressP++ = 6; - *addressP++ = TAHOE_JMP; - *addressP++ = TAHOE_PC_REL_LONG; - md_number_to_chars (addressP, target_address, 4); - extension = 8; - break; - - case ENCODE_RELAX (STATE_BIG_NON_REV_BRANCH, STATE_WORD): - md_number_to_chars (addressP, target_address - (address_of_var + 2), 2); - extension = 2; - break; - - case ENCODE_RELAX (STATE_BIG_NON_REV_BRANCH, STATE_LONG): - *addressP++ = 0; - *addressP++ = 2; - *addressP++ = TAHOE_BRB; - *addressP++ = 6; - *addressP++ = TAHOE_JMP; - *addressP++ = TAHOE_PC_REL_LONG; - md_number_to_chars (addressP, target_address, 4); - extension = 10; - break; - - default: - BAD_CASE (fragP->fr_subtype); - break; - } - fragP->fr_fix += extension; -} - - -/* This is the stuff for md_assemble. */ -#define FP_REG 13 -#define SP_REG 14 -#define PC_REG 15 -#define BIGGESTREG PC_REG - -/* Parse the string pointed to by START - If it represents a valid register, point START to the character after - the last valid register char, and return the register number (0-15). - If invalid, leave START alone, return -1. - The format has to be exact. I don't do things like eat leading zeros - or the like. - Note: This doesn't check for the next character in the string making - this invalid. Ex: R123 would return 12, it's the callers job to check - what start is point to apon return. - - Valid registers are R1-R15, %1-%15, FP (13), SP (14), PC (15) - Case doesn't matter. */ - -int -tahoe_reg_parse (char **start) /* A pointer to the string to parse. */ -{ - char *regpoint = *start; - int regnum = -1; - - switch (*regpoint++) - { - case '%': /* Registers can start with a %, - R or r, and then a number. */ - case 'R': - case 'r': - if (ISDIGIT (*regpoint)) - { - /* Got the first digit. */ - regnum = *regpoint++ - '0'; - if ((regnum == 1) && ISDIGIT (*regpoint)) - { - /* Its a two digit number. */ - regnum = 10 + (*regpoint++ - '0'); - if (regnum > BIGGESTREG) - regnum = -1; - } - } - break; - case 'F': /* Is it the FP. */ - case 'f': - switch (*regpoint++) - { - case 'p': - case 'P': - regnum = FP_REG; - } - break; - case 's': /* How about the SP. */ - case 'S': - switch (*regpoint++) - { - case 'p': - case 'P': - regnum = SP_REG; - } - break; - case 'p': /* Or the PC even. */ - case 'P': - switch (*regpoint++) - { - case 'c': - case 'C': - regnum = PC_REG; - } - break; - } - - if (regnum != -1) - /* No error, so move string pointer. */ - *start = regpoint; - - return regnum; -} - -/* This chops up an operand and figures out its modes and stuff. - It's a little touchy about extra characters. - Optex to start with one extra character so it can be overwritten for - the backward part of the parsing. - You can't put a bunch of extra characters in side to - make the command look cute. ie: * foo ( r1 ) [ r0 ] - If you like doing a lot of typing, try COBOL! - Actually, this parser is a little weak all around. It's designed to be - used with compliers, so I emphasize correct decoding of valid code quickly - rather that catching every possible error. - Note: This uses the expression function, so save input_line_pointer before - calling. - - Sperry defines the semantics of address modes (and values) - by a two-letter code, explained here. - - letter 1: access type - - a address calculation - no data access, registers forbidden - b branch displacement - m read - let go of bus - write back "modify" - r read - w write - v bit field address: like 'a' but registers are OK - - letter 2: data type (i.e. width, alignment) - - b byte - w word - l longword - q quadword (Even regs < 14 allowed) (if 12, you get a warning) - - unconditional synthetic jbr operand - ? simple synthetic reversible branch operand - ! complex synthetic reversible branch operand - : complex synthetic non-reversible branch operand - - The '-?!:' letter 2's are not for external consumption. They are used - by GAS for psuedo ops relaxing code. - - After parsing topP has: - - top_ndx: -1, or the index register. eg 7=[R7] - top_reg: -1, or register number. eg 7 = R7 or (R7) - top_mode: The addressing mode byte. This byte, defines which of - the 11 modes opcode is. - top_access: Access type wanted for this operand 'b'branch ' ' - no-instruction 'amrvw' - top_width: Operand width expected, one of "bwlq?-:!" - exp_of_operand: The expression as parsed by expression() - top_dispsize: Number of bytes in the displacement if we can figure it - out and it's relevant. - - Need syntax checks built. */ - -void -tip_op (char *optex, /* The users text input, with one leading character. */ - struct top *topP) /* The tahoe instruction with some fields already set: - in: access, width - out: ndx, reg, mode, error, dispsize. */ -{ - int mode = 0; /* This operand's mode. */ - char segfault = *optex; /* To keep the back parsing from freaking. */ - char *point = optex + 1; /* Parsing from front to back. */ - char *end; /* Parsing from back to front. */ - int reg = -1; /* major register, -1 means absent. */ - int imreg = -1; /* Major register in immediate mode. */ - int ndx = -1; /* index register number, -1 means absent. */ - char dec_inc = ' '; /* Is the SP auto-incremented '+' or - auto-decremented '-' or neither ' '. */ - int immediate = 0; /* 1 if '$' immediate mode. */ - int call_width = 0; /* If the caller casts the displacement. */ - int abs_width = 0; /* The width of the absolute displacement. */ - int com_width = 0; /* Displacement width required by branch. */ - int deferred = 0; /* 1 if '*' deferral is used. */ - byte disp_size = 0; /* How big is this operand. 0 == don't know. */ - char *op_bad = ""; /* Bad operand error. */ - char *tp, *temp, c; /* Temporary holders. */ - char access = topP->top_access;/* Save on a deref. */ - char width = topP->top_width; - int really_none = 0; /* Empty expressions evaluate to 0 - but I need to know if it's there or not. */ - expressionS *expP; /* -> expression values for this operand. */ - - /* Does this command restrict the displacement size. */ - if (access == 'b') - com_width = (width == 'b' ? 1 : - (width == 'w' ? 2 : - (width == 'l' ? 4 : 0))); - - *optex = '\0'; /* This is kind of a back stop for all - the searches to fail on if needed. */ - if (*point == '*') - { - /* A dereference? */ - deferred = 1; - point++; - } - - /* Force words into a certain mode. */ - /* Using the ^ operator is ambiguous. If I have an absolute label - called 'w' set to, say 2, and I have the expression 'w^1', do I get - 1, forced to be in word displacement mode, or do I get the value of - 'w' or'ed with 1 (3 in this case). - The default is 'w' as an offset, so that's what I use. - Stick with `, it does the same, and isn't ambig. */ - - if (*point != '\0' && ((point[1] == '^') || (point[1] == '`'))) - switch (*point) - { - case 'b': - case 'B': - case 'w': - case 'W': - case 'l': - case 'L': - if (com_width) - as_warn (_("Casting a branch displacement is bad form, and is ignored.")); - else - { - c = TOLOWER (*point); - call_width = ((c == 'b') ? 1 : - ((c == 'w') ? 2 : 4)); - } - point += 2; - break; - } - - /* Setting immediate mode. */ - if (*point == '$') - { - immediate = 1; - point++; - } - - /* I've pulled off all the easy stuff off the front, move to the end and - yank. */ - - for (end = point; *end != '\0'; end++) /* Move to the end. */ - ; - - if (end != point) /* Null string? */ - end--; - - if (end > point && *end == ' ' && end[-1] != '\'') - end--; /* Hop white space. */ - - /* Is this an index reg. */ - if ((*end == ']') && (end[-1] != '\'')) - { - temp = end; - - /* Find opening brace. */ - for (--end; (*end != '[' && end != point); end--) - ; - - /* If I found the opening brace, get the index register number. */ - if (*end == '[') - { - tp = end + 1; /* tp should point to the start of a reg. */ - ndx = tahoe_reg_parse (&tp); - if (tp != temp) - /* Reg. parse error. */ - ndx = -1; - else - /* Found it, move past brace. */ - end--; - - if (ndx == -1) - { - op_bad = _("Couldn't parse the [index] in this operand."); - end = point; /* Force all the rest of the tests to fail. */ - } - } - else - { - op_bad = _("Couldn't find the opening '[' for the index of this operand."); - end = point; /* Force all the rest of the tests to fail. */ - } - } - - /* Post increment? */ - if (*end == '+') - { - dec_inc = '+'; - /* was: *end--; */ - end--; - } - - /* Register in parens? */ - if ((*end == ')') && (end[-1] != '\'')) - { - temp = end; - - /* Find opening paren. */ - for (--end; (*end != '(' && end != point); end--) - ; - - /* If I found the opening paren, get the register number. */ - if (*end == '(') - { - tp = end + 1; - reg = tahoe_reg_parse (&tp); - if (tp != temp) - { - /* Not a register, but could be part of the expression. */ - reg = -1; - /* Rest the pointer back. */ - end = temp; - } - else - /* Found the reg. move before opening paren. */ - end--; - } - else - { - op_bad = _("Couldn't find the opening '(' for the deref of this operand."); - /* Force all the rest of the tests to fail. */ - end = point; - } - } - - /* Pre decrement? */ - if (*end == '-') - { - if (dec_inc != ' ') - { - op_bad = _("Operand can't be both pre-inc and post-dec."); - end = point; - } - else - { - dec_inc = '-'; - end--; - } - } - - /* Everything between point and end is the 'expression', unless it's - a register name. */ - c = end[1]; - end[1] = '\0'; - - tp = point; - /* Get the immediate register if it is there. */ - imreg = tahoe_reg_parse (&point); - if (*point != '\0') - { - /* If there is junk after point, then the it's not immediate reg. */ - point = tp; - imreg = -1; - } - - if (imreg != -1 && reg != -1) - op_bad = _("I parsed 2 registers in this operand."); - - /* Evaluate whats left of the expression to see if it's valid. - Note again: This assumes that the calling expression has saved - input_line_pointer. (Nag, nag, nag!). */ - if (*op_bad == '\0') - { - /* Statement has no syntax goofs yet: let's sniff the expression. */ - input_line_pointer = point; - expP = &(topP->exp_of_operand); - topP->seg_of_operand = expression (expP); - switch (expP->X_op) - { - case O_absent: - /* No expression. For BSD4.2 compatibility, missing expression is - absolute 0. */ - expP->X_op = O_constant; - expP->X_add_number = 0; - really_none = 1; - case O_constant: - /* For SEG_ABSOLUTE, we shouldn't need to set X_op_symbol, - X_add_symbol to any particular value. */ - /* But, we will program defensively. Since this situation occurs - rarely so it costs us little to do so. */ - expP->X_add_symbol = NULL; - expP->X_op_symbol = NULL; - /* How many bytes are needed to express this abs value? */ - abs_width = - ((((expP->X_add_number & 0xFFFFFF80) == 0) - || ((expP->X_add_number & 0xFFFFFF80) == 0xFFFFFF80)) ? 1 : - (((expP->X_add_number & 0xFFFF8000) == 0) - || ((expP->X_add_number & 0xFFFF8000) == 0xFFFF8000)) ? 2 : 4); - - case O_symbol: - break; - - default: - /* Major bug. We can't handle the case of an operator - expression in a synthetic opcode variable-length - instruction. We don't have a frag type that is smart - enough to relax an operator, and so we just force all - operators to behave like SEG_PASS1s. Clearly, if there is - a demand we can invent a new or modified frag type and - then coding up a frag for this case will be easy. */ - need_pass_2 = 1; - op_bad = _("Can't relocate expression error."); - break; - - case O_big: - /* This is an error. Tahoe doesn't allow any expressions - bigger that a 32 bit long word. Any bigger has to be referenced - by address. */ - op_bad = _("Expression is too large for a 32 bits."); - break; - } - - if (*input_line_pointer != '\0') - op_bad = _("Junk at end of expression."); - } - - end[1] = c; - - /* I'm done, so restore optex. */ - *optex = segfault; - - /* At this point in the game, we (in theory) have all the components of - the operand at least parsed. Now it's time to check for syntax/semantic - errors, and build the mode. - This is what I have: - deferred = 1 if '*' - call_width = 0,1,2,4 - abs_width = 0,1,2,4 - com_width = 0,1,2,4 - immediate = 1 if '$' - ndx = -1 or reg num - dec_inc = '-' or '+' or ' ' - reg = -1 or reg num - imreg = -1 or reg num - topP->exp_of_operand - really_none. */ - /* Is there a displacement size? */ - disp_size = (call_width ? call_width : - (com_width ? com_width : - abs_width ? abs_width : 0)); - - if (*op_bad == '\0') - { - if (imreg != -1) - { - /* Rn */ - mode = TAHOE_DIRECT_REG; - if (deferred - || immediate - || (dec_inc != ' ') - || (reg != -1) - || !really_none) - op_bad = _("Syntax error in direct register mode."); - else if (ndx != -1) - op_bad = _("You can't index a register in direct register mode."); - else if (imreg == SP_REG && access == 'r') - op_bad = - _("SP can't be the source operand with direct register addressing."); - else if (access == 'a') - op_bad = _("Can't take the address of a register."); - else if (access == 'b') - op_bad = _("Direct Register can't be used in a branch."); - else if (width == 'q' && ((imreg % 2) || (imreg > 13))) - op_bad = _("For quad access, the register must be even and < 14."); - else if (call_width) - op_bad = _("You can't cast a direct register."); - - if (*op_bad == '\0') - { - /* No errors, check for warnings. */ - if (width == 'q' && imreg == 12) - as_warn (_("Using reg 14 for quadwords can tromp the FP register.")); - - reg = imreg; - } - - /* We know: imm = -1. */ - } - else if (dec_inc == '-') - { - /* -(SP) */ - mode = TAHOE_AUTO_DEC; - if (deferred || immediate || !really_none) - op_bad = _("Syntax error in auto-dec mode."); - else if (ndx != -1) - op_bad = _("You can't have an index auto dec mode."); - else if (access == 'r') - op_bad = _("Auto dec mode cant be used for reading."); - else if (reg != SP_REG) - op_bad = _("Auto dec only works of the SP register."); - else if (access == 'b') - op_bad = _("Auto dec can't be used in a branch."); - else if (width == 'q') - op_bad = _("Auto dec won't work with quadwords."); - - /* We know: imm = -1, dec_inc != '-'. */ - } - else if (dec_inc == '+') - { - if (immediate || !really_none) - op_bad = _("Syntax error in one of the auto-inc modes."); - else if (deferred) - { - /* *(SP)+ */ - mode = TAHOE_AUTO_INC_DEFERRED; - if (reg != SP_REG) - op_bad = _("Auto inc deferred only works of the SP register."); - else if (ndx != -1) - op_bad = _("You can't have an index auto inc deferred mode."); - else if (access == 'b') - op_bad = _("Auto inc can't be used in a branch."); - } - else - { - /* (SP)+ */ - mode = TAHOE_AUTO_INC; - if (access == 'm' || access == 'w') - op_bad = _("You can't write to an auto inc register."); - else if (reg != SP_REG) - op_bad = _("Auto inc only works of the SP register."); - else if (access == 'b') - op_bad = _("Auto inc can't be used in a branch."); - else if (width == 'q') - op_bad = _("Auto inc won't work with quadwords."); - else if (ndx != -1) - op_bad = _("You can't have an index in auto inc mode."); - } - - /* We know: imm = -1, dec_inc == ' '. */ - } - else if (reg != -1) - { - if ((ndx != -1) && (reg == SP_REG)) - op_bad = _("You can't index the sp register."); - if (deferred) - { - /* *(Rn) */ - mode = TAHOE_REG_DISP_DEFERRED; - if (immediate) - op_bad = _("Syntax error in register displaced mode."); - } - else if (really_none) - /* (Rn) */ - mode = TAHOE_REG_DEFERRED; - else - /* (Rn) */ - mode = TAHOE_REG_DISP; - - /* We know: imm = -1, dec_inc == ' ', Reg = -1 */ - } - else - { - if (really_none) - op_bad = _("An offest is needed for this operand."); - if (deferred && immediate) - { - /* *$ */ - mode = TAHOE_ABSOLUTE_ADDR; - disp_size = 4; - } - else if (immediate) - { - /* $ */ - mode = TAHOE_IMMEDIATE; - if (ndx != -1) - op_bad = _("You can't index a register in immediate mode."); - if (access == 'a') - op_bad = _("Immediate access can't be used as an address."); - /* ponder the wisdom of a cast because it doesn't do any good. */ - } - else if (deferred) - /* * */ - mode = TAHOE_DISP_REL_DEFERRED; - else - /* */ - mode = TAHOE_DISPLACED_RELATIVE; - } - } - - /* At this point, all the errors we can do have be checked for. - We can build the 'top'. */ - topP->top_ndx = ndx; - topP->top_reg = reg; - topP->top_mode = mode; - topP->top_error = op_bad; - topP->top_dispsize = disp_size; -} - -/* This converts a string into a tahoe instruction. - The string must be a bare single instruction in tahoe (with BSD4 frobs) - format. - It provides at most one fatal error message (which stops the scan) - some warning messages as it finds them. - The tahoe instruction is returned in exploded form. - - The exploded instruction is returned to a struct tit of your choice. - #include "tahoe-inst.h" to know what a struct tit is. */ - -static void -tip (struct tit *titP, /* We build an exploded instruction here. */ - char *instring) /* Text of a vax instruction: we modify. */ -{ - struct tot_wot *twP = NULL; /* How to bit-encode this opcode. */ - char *p; /* 1/skip whitespace.2/scan vot_how. */ - char *q; - unsigned char count; /* Counts number of operands seen. */ - struct top *operandp; /* Scan operands in struct tit. */ - char *alloperr = ""; /* Error over all operands. */ - char c; /* Remember char, (we clobber it with '\0' temporarily). */ - char *save_input_line_pointer; - - if (*instring == ' ') - ++instring; /* Skip leading whitespace. */ - for (p = instring; *p && *p != ' '; p++) - ; - - /* Scanned up to end of operation-code. */ - /* Operation-code is ended with whitespace. */ - if (p == instring) - { - titP->tit_error = _("No operator"); - count = 0; - titP->tit_opcode = 0; - } - else - { - c = *p; - *p = '\0'; - - /* Here with instring pointing to what better be an op-name, and p - pointing to character just past that. - We trust instring points to an op-name, with no whitespace. */ - twP = (struct tot_wot *) hash_find (op_hash, instring); - /* Restore char after op-code. */ - *p = c; - if (twP == 0) - { - titP->tit_error = _("Unknown operator"); - count = 0; - titP->tit_opcode = 0; - } - else - { - /* We found a match! So let's pick up as many operands as the - instruction wants, and even gripe if there are too many. - We expect comma to separate each operand. - We let instring track the text, while p tracks a part of the - struct tot. */ - - /* No operands seen yet. */ - count = 0; - /* Point past the operation code. */ - instring = p + (*p != '\0'); - /* tip_op() screws with the input_line_pointer, so save it before - I jump in. */ - save_input_line_pointer = input_line_pointer; - - for (p = twP->args, operandp = titP->tit_operand; - !*alloperr && *p; - operandp++, p += 2) - { - /* Here to parse one operand. Leave instring pointing just - past any one ',' that marks the end of this operand. */ - if (!p[1]) - as_fatal (_("Compiler bug: ODD number of bytes in arg structure %s."), - twP->args); - else if (*instring) - { - for (q = instring; (*q != ',' && *q != '\0'); q++) - /* Jump quoted characters. */ - if (*q == '\'' && q[1] != '\0') - q++; - - c = *q; - /* Q points to ',' or '\0' that ends argument. C is that - character. */ - *q = '\0'; - operandp->top_access = p[0]; - operandp->top_width = p[1]; - tip_op (instring - 1, operandp); - /* Restore input text. */ - *q = c; - - if (*(operandp->top_error)) - alloperr = operandp->top_error; - - /* Next operand (if any). */ - instring = q + (c ? 1 : 0); - /* Won another argument, may have an operr. */ - count++; - } - else - alloperr = _("Not enough operands"); - } - /* Restore the pointer. */ - input_line_pointer = save_input_line_pointer; - - if (!*alloperr) - { - /* Skip whitespace. */ - if (*instring == ' ') - instring ++; - - if (*instring) - alloperr = _("Too many operands"); - } - - titP->tit_error = alloperr; - } - } - - titP->tit_opcode = twP->code; - titP->tit_operands = count; -} - -void -md_assemble (char *instruction_string) -{ - char *p; - struct top *operandP; /* An operand. Scans all operands. */ - expressionS *expP; /* -> expression values for this operand. */ - /* These refer to an instruction operand expression. */ - segT to_seg; /* Target segment of the address. */ - valueT this_add_number; - symbolS *this_add_symbol; /* +ve (minuend) symbol. */ - char *opcodeP; /* Where it is in a frag. */ - int dispsize; /* From top_dispsize: tahoe_operand_width (in bytes). */ - int is_undefined; /* 1 if operand expression's segment not known yet. */ - int pc_rel; /* Is this operand pc relative? */ - - /* Decode the operand. */ - tip (&t, instruction_string); - - /* Check to see if this operand decode properly. - Notice that we haven't made any frags yet. - If it goofed, then this instruction will wedge in any pass, - and we can safely flush it, without causing interpass symbol phase - errors. That is, without changing label values in different passes. */ - - if (*t.tit_error) - as_warn (_("Ignoring statement due to \"%s\""), t.tit_error); - else - { - /* We saw no errors in any operands - try to make frag(s). */ - /* Emit op-code. */ - /* Remember where it is, in case we want to modify the op-code later. */ - opcodeP = frag_more (1); - *opcodeP = t.tit_opcode; - /* Now do each operand. */ - for (operandP = t.tit_operand; - operandP < t.tit_operand + t.tit_operands; - operandP++) - { /* for each operand */ - expP = &(operandP->exp_of_operand); - if (operandP->top_ndx >= 0) - { - /* Indexed addressing byte - Legality of indexed mode already checked: it is OK. */ - FRAG_APPEND_1_CHAR (0x40 + operandP->top_ndx); - } /* if(top_ndx>=0) */ - - /* Here to make main operand frag(s). */ - this_add_number = expP->X_add_number; - this_add_symbol = expP->X_add_symbol; - to_seg = operandP->seg_of_operand; - know (to_seg == SEG_UNKNOWN \ - || to_seg == SEG_ABSOLUTE \ - || to_seg == SEG_DATA \ - || to_seg == SEG_TEXT \ - || to_seg == SEG_BSS); - is_undefined = (to_seg == SEG_UNKNOWN); - /* Do we know how big this operand is? */ - dispsize = operandP->top_dispsize; - pc_rel = 0; - /* Deal with the branch possibilities. (Note, this doesn't include jumps.) */ - if (operandP->top_access == 'b') - { - /* Branches must be expressions. A psuedo branch can also jump to - an absolute address. */ - if (to_seg == now_seg || is_undefined) - { - /* If is_undefined, then it might BECOME now_seg by relax time. */ - if (dispsize) - { - /* I know how big the branch is supposed to be (it's a normal - branch), so I set up the frag, and let GAS do the rest. */ - p = frag_more (dispsize); - fix_new (frag_now, p - frag_now->fr_literal, - this_add_symbol, this_add_number, - size_to_fx (dispsize, 1), - NULL); - } - else - { - /* If we don't know how big it is, then its a synthetic branch, - so we set up a simple relax state. */ - switch (operandP->top_width) - { - case TAHOE_WIDTH_CONDITIONAL_JUMP: - /* Simple (conditional) jump. I may have to reverse the - condition of opcodeP, and then jump to my destination. - I set 1 byte aside for the branch off set, and could need 6 - more bytes for the pc_rel jump. */ - frag_var (rs_machine_dependent, 7, 1, - ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, - is_undefined ? STATE_UNDF : STATE_BYTE), - this_add_symbol, this_add_number, opcodeP); - break; - case TAHOE_WIDTH_ALWAYS_JUMP: - /* Simple (unconditional) jump. I may have to convert this to - a word branch, or an absolute jump. */ - frag_var (rs_machine_dependent, 5, 1, - ENCODE_RELAX (STATE_ALWAYS_BRANCH, - is_undefined ? STATE_UNDF : STATE_BYTE), - this_add_symbol, this_add_number, opcodeP); - break; - /* The smallest size for the next 2 cases is word. */ - case TAHOE_WIDTH_BIG_REV_JUMP: - frag_var (rs_machine_dependent, 8, 2, - ENCODE_RELAX (STATE_BIG_REV_BRANCH, - is_undefined ? STATE_UNDF : STATE_WORD), - this_add_symbol, this_add_number, - opcodeP); - break; - case TAHOE_WIDTH_BIG_NON_REV_JUMP: - frag_var (rs_machine_dependent, 10, 2, - ENCODE_RELAX (STATE_BIG_NON_REV_BRANCH, - is_undefined ? STATE_UNDF : STATE_WORD), - this_add_symbol, this_add_number, - opcodeP); - break; - default: - as_fatal (_("Compliler bug: Got a case (%d) I wasn't expecting."), - operandP->top_width); - } - } - } - else - { - /* to_seg != now_seg && to_seg != seg_unknown (still in branch) - In other words, I'm jumping out of my segment so extend the - branches to jumps, and let GAS fix them. */ - - /* These are "branches" what will always be branches around a jump - to the correct address in real life. - If to_seg is SEG_ABSOLUTE, just encode the branch in, - else let GAS fix the address. */ - - switch (operandP->top_width) - { - /* The theory: - For SEG_ABSOLUTE, then mode is ABSOLUTE_ADDR, jump - to that address (not pc_rel). - For other segs, address is a long word PC rel jump. */ - case TAHOE_WIDTH_CONDITIONAL_JUMP: - /* b */ - /* To reverse the condition in a TAHOE branch, - complement bit 4 */ - *opcodeP ^= 0x10; - p = frag_more (7); - *p++ = 6; - *p++ = TAHOE_JMP; - *p++ = (operandP->top_mode == - TAHOE_ABSOLUTE_ADDR ? TAHOE_ABSOLUTE_ADDR : - TAHOE_PC_REL_LONG); - fix_new (frag_now, p - frag_now->fr_literal, - this_add_symbol, this_add_number, - (to_seg != SEG_ABSOLUTE) ? FX_PCREL32 : FX_32, NULL); - - /* Now (eg) BLEQ 1f - JMP foo - 1: */ - break; - - case TAHOE_WIDTH_ALWAYS_JUMP: - /* Br, just turn it into a jump. */ - *opcodeP = TAHOE_JMP; - p = frag_more (5); - *p++ = (operandP->top_mode == - TAHOE_ABSOLUTE_ADDR ? TAHOE_ABSOLUTE_ADDR : - TAHOE_PC_REL_LONG); - fix_new (frag_now, p - frag_now->fr_literal, - this_add_symbol, this_add_number, - (to_seg != SEG_ABSOLUTE) ? FX_PCREL32 : FX_32, NULL); - /* Now (eg) JMP foo. */ - break; - - case TAHOE_WIDTH_BIG_REV_JUMP: - p = frag_more (8); - *opcodeP ^= 0x10; - *p++ = 0; - *p++ = 6; - *p++ = TAHOE_JMP; - *p++ = (operandP->top_mode == - TAHOE_ABSOLUTE_ADDR ? TAHOE_ABSOLUTE_ADDR : - TAHOE_PC_REL_LONG); - fix_new (frag_now, p - frag_now->fr_literal, - this_add_symbol, this_add_number, - (to_seg != SEG_ABSOLUTE) ? FX_PCREL32 : FX_32, NULL); - /* Now (eg) ACBx 1f - JMP foo - 1: */ - break; - - case TAHOE_WIDTH_BIG_NON_REV_JUMP: - p = frag_more (10); - *p++ = 0; - *p++ = 2; - *p++ = TAHOE_BRB; - *p++ = 6; - *p++ = TAHOE_JMP; - *p++ = (operandP->top_mode == - TAHOE_ABSOLUTE_ADDR ? TAHOE_ABSOLUTE_ADDR : - TAHOE_PC_REL_LONG); - fix_new (frag_now, p - frag_now->fr_literal, - this_add_symbol, this_add_number, - (to_seg != SEG_ABSOLUTE) ? FX_PCREL32 : FX_32, NULL); - /* Now (eg) xOBxxx 1f - BRB 2f - 1: JMP @#foo - 2: */ - break; - case 'b': - case 'w': - as_warn (_("Real branch displacements must be expressions.")); - break; - default: - as_fatal (_("Complier error: I got an unknown synthetic branch :%c"), - operandP->top_width); - break; - } - } - } - else - { - /* It ain't a branch operand. */ - switch (operandP->top_mode) - { - /* Auto-foo access, only works for one reg (SP) - so the only thing needed is the mode. */ - case TAHOE_AUTO_DEC: - case TAHOE_AUTO_INC: - case TAHOE_AUTO_INC_DEFERRED: - FRAG_APPEND_1_CHAR (operandP->top_mode); - break; - - /* Numbered Register only access. Only thing needed is the - mode + Register number. */ - case TAHOE_DIRECT_REG: - case TAHOE_REG_DEFERRED: - FRAG_APPEND_1_CHAR (operandP->top_mode + operandP->top_reg); - break; - - /* An absolute address. It's size is always 5 bytes. - (mode_type + 4 byte address). */ - case TAHOE_ABSOLUTE_ADDR: - know ((this_add_symbol == NULL)); - p = frag_more (5); - *p = TAHOE_ABSOLUTE_ADDR; - md_number_to_chars (p + 1, this_add_number, 4); - break; - - /* Immediate data. If the size isn't known, then it's an address - + and offset, which is 4 bytes big. */ - case TAHOE_IMMEDIATE: - if (this_add_symbol != NULL) - { - p = frag_more (5); - *p++ = TAHOE_IMMEDIATE_LONGWORD; - fix_new (frag_now, p - frag_now->fr_literal, - this_add_symbol, this_add_number, - FX_32, NULL); - } - else - { - /* It's an integer, and I know it's size. */ - if ((unsigned) this_add_number < 0x40) - /* Will it fit in a literal? */ - FRAG_APPEND_1_CHAR ((byte) this_add_number); - else - { - p = frag_more (dispsize + 1); - switch (dispsize) - { - case 1: - *p++ = TAHOE_IMMEDIATE_BYTE; - *p = (byte) this_add_number; - break; - case 2: - *p++ = TAHOE_IMMEDIATE_WORD; - md_number_to_chars (p, this_add_number, 2); - break; - case 4: - *p++ = TAHOE_IMMEDIATE_LONGWORD; - md_number_to_chars (p, this_add_number, 4); - break; - } - } - } - break; - - /* Distance from the PC. If the size isn't known, we have to relax - into it. The difference between this and disp(sp) is that - this offset is pc_rel, and disp(sp) isn't. - Note the drop through code. */ - - case TAHOE_DISPLACED_RELATIVE: - case TAHOE_DISP_REL_DEFERRED: - operandP->top_reg = PC_REG; - pc_rel = 1; - - /* Register, plus a displacement mode. Save the register number, - and weather its deffered or not, and relax the size if it isn't - known. */ - case TAHOE_REG_DISP: - case TAHOE_REG_DISP_DEFERRED: - if (operandP->top_mode == TAHOE_DISP_REL_DEFERRED - || operandP->top_mode == TAHOE_REG_DISP_DEFERRED) - /* Deffered mode is always 0x10 higher than it's non-deffered sibling. */ - operandP->top_reg += 0x10; - - /* Is this a value out of this segment? - The first part of this conditional is a cludge to make gas - produce the same output as 'as' when there is a lable, in - the current segment, displacing a register. It's strange, - and no one in their right mind would do it, but it's easy - to cludge. */ - if ((dispsize == 0 && !pc_rel) - || (to_seg != now_seg && !is_undefined && to_seg != SEG_ABSOLUTE)) - dispsize = 4; - - if (dispsize == 0) - { - /* We have a SEG_UNKNOWN symbol, or the size isn't cast. - It might turn out to be in the same segment as - the instruction, permitting relaxation. */ - p = frag_var (rs_machine_dependent, 5, 2, - ENCODE_RELAX (STATE_PC_RELATIVE, - is_undefined ? STATE_UNDF : STATE_BYTE), - this_add_symbol, this_add_number, 0); - *p = operandP->top_reg; - } - else - { - /* Either this is an abs, or a cast. */ - p = frag_more (dispsize + 1); - switch (dispsize) - { - case 1: - *p = TAHOE_PC_OR_BYTE + operandP->top_reg; - break; - case 2: - *p = TAHOE_PC_OR_WORD + operandP->top_reg; - break; - case 4: - *p = TAHOE_PC_OR_LONG + operandP->top_reg; - break; - }; - fix_new (frag_now, p + 1 - frag_now->fr_literal, - this_add_symbol, this_add_number, - size_to_fx (dispsize, pc_rel), NULL); - } - break; - default: - as_fatal (_("Barf, bad mode %x\n"), operandP->top_mode); - } - } - } - } -} - -/* We have no need to default values of symbols. */ - -symbolS * -md_undefined_symbol (char *name) -{ - return 0; -} - -/* Round up a section size to the appropriate boundary. */ - -valueT -md_section_align (segT segment, valueT size) -{ - /* Round all sects to multiple of 8. */ - return ((size + 7) & ~7); -} - -/* Exactly what point is a PC-relative offset relative TO? - On the sparc, they're relative to the address of the offset, plus - its size. This gets us to the following instruction. - (??? Is this right? FIXME-SOON) */ - -long -md_pcrel_from (fixS *fixP) -{ - return (((fixP->fx_type == FX_8 - || fixP->fx_type == FX_PCREL8) - ? 1 - : ((fixP->fx_type == FX_16 - || fixP->fx_type == FX_PCREL16) - ? 2 - : ((fixP->fx_type == FX_32 - || fixP->fx_type == FX_PCREL32) - ? 4 - : 0))) + fixP->fx_where + fixP->fx_frag->fr_address); -} - -int -tc_is_pcrel (fixS *fixP) -{ - /* Should never be called. */ - know (0); - return 0; -} diff -uprN binutils-2.16.91.0.2/gas/config/tc-tahoe.h binutils-2.16.91.0.3/gas/config/tc-tahoe.h --- binutils-2.16.91.0.2/gas/config/tc-tahoe.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tahoe.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,43 +0,0 @@ -/* This file is tc-tahoe.h - - Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1995, 2000 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#define TC_TAHOE 1 - -#define TARGET_BYTES_BIG_ENDIAN 1 - -#define NO_LISTING - -#define tc_headers_hook(a) {;} /* don't need it. */ -#define tc_crawl_symbol_chain(a) {;} /* don't need it. */ -#define tc_aout_pre_write_hook(a) {;} - -#define md_operand(x) - -extern const struct relax_type md_relax_table[]; -#define TC_GENERIC_RELAX_TABLE md_relax_table - -/* - * Local Variables: - * comment-column: 0 - * fill-column: 131 - * End: - */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-tic30.c binutils-2.16.91.0.3/gas/config/tc-tic30.c --- binutils-2.16.91.0.2/gas/config/tc-tic30.c 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tic30.c 2005-08-22 12:27:43.000000000 -0700 @@ -38,8 +38,6 @@ static char *ordinal_names[] = "first", "second", "third", "fourth", "fifth" }; -const int md_reloc_size = 0; - const char comment_chars[] = ";"; const char line_comment_chars[] = "*"; const char line_separator_chars[] = ""; diff -uprN binutils-2.16.91.0.2/gas/config/tc-tic30.h binutils-2.16.91.0.3/gas/config/tc-tic30.h --- binutils-2.16.91.0.2/gas/config/tc-tic30.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tic30.h 2005-08-22 12:27:43.000000000 -0700 @@ -48,6 +48,4 @@ extern int tic30_unrecognized_line (int); -#define tc_aout_pre_write_hook {} - #endif diff -uprN binutils-2.16.91.0.2/gas/config/tc-tic4x.c binutils-2.16.91.0.3/gas/config/tc-tic4x.c --- binutils-2.16.91.0.2/gas/config/tc-tic4x.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tic4x.c 2005-08-22 12:27:43.000000000 -0700 @@ -257,7 +257,6 @@ const pseudo_typeS int md_short_jump_size = 4; int md_long_jump_size = 4; -const int md_reloc_size = RELSZ; /* Coff headers. */ /* This array holds the chars that always start a comment. If the pre-processor is disabled, these aren't very useful. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-tic4x.h binutils-2.16.91.0.3/gas/config/tc-tic4x.h --- binutils-2.16.91.0.2/gas/config/tc-tic4x.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tic4x.h 2005-08-22 12:27:43.000000000 -0700 @@ -22,10 +22,6 @@ #define TC_TIC4X #define TIC4X -#ifndef BFD_ASSEMBLER -#error TMS320C4x requires BFD_ASSEMBLER -#endif - #define TARGET_ARCH bfd_arch_tic4x #define WORKING_DOT_WORD @@ -57,13 +53,6 @@ #define OCTETS_PER_BYTE_POWER 2 #define TARGET_ARCH bfd_arch_tic4x -#define BFD_ARCH TARGET_ARCH - -#define TC_COUNT_RELOC(x) (x->fx_addsy) -#define TC_CONS_RELOC RELOC_32 -#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype (fixP) -#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag) -#define NEED_FX_R_TYPE #define TIC_NOP_OPCODE 0x0c800000 diff -uprN binutils-2.16.91.0.2/gas/config/tc-tic54x.c binutils-2.16.91.0.3/gas/config/tc-tic54x.c --- binutils-2.16.91.0.2/gas/config/tc-tic54x.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tic54x.c 2005-08-22 12:27:43.000000000 -0700 @@ -5549,17 +5549,6 @@ md_pcrel_from (fixP) return 0; } -#if defined OBJ_COFF - -short -tc_coff_fix2rtype (fixP) - fixS *fixP; -{ - return (fixP->fx_r_type); -} - -#endif /* OBJ_COFF */ - /* Mostly little-endian, but longwords (4 octets) get MS word stored first. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-tic54x.h binutils-2.16.91.0.3/gas/config/tc-tic54x.h --- binutils-2.16.91.0.2/gas/config/tc-tic54x.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tic54x.h 2005-08-22 12:27:43.000000000 -0700 @@ -29,7 +29,6 @@ #define OCTETS_PER_BYTE_POWER 1 #define TARGET_ARCH bfd_arch_tic54x -#define BFD_ARCH TARGET_ARCH #define WORKING_DOT_WORD 1 @@ -48,10 +47,6 @@ /* affects preprocessor */ #define KEEP_WHITE_AROUND_COLON 1 -/* We need the extra field in the fixup struct to put the relocation in. */ - -#define NEED_FX_R_TYPE - struct bit_info { segT seg; diff -uprN binutils-2.16.91.0.2/gas/config/tc-tic80.c binutils-2.16.91.0.3/gas/config/tc-tic80.c --- binutils-2.16.91.0.2/gas/config/tc-tic80.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tic80.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,894 +0,0 @@ -/* tc-tic80.c -- Assemble for the TI TMS320C80 (MV) - Copyright 1996, 1997, 2000, 2001, 2002, 2005 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#include "as.h" -#include "safe-ctype.h" -#include "opcode/tic80.h" - -#define internal_error(what) \ - as_fatal (_("internal error:%s:%d: %s\n"), __FILE__, __LINE__, what) - -#define internal_error_a(what,arg) \ - as_fatal (_("internal error:%s:%d: %s %ld\n"), __FILE__, __LINE__, what, arg) - -/* Generic assembler global variables which must be defined by all - targets. */ - -/* Characters which always start a comment. */ -const char comment_chars[] = ";"; - -/* Characters which start a comment at the beginning of a line. */ -const char line_comment_chars[] = ";*#"; - -/* Characters which may be used to separate multiple commands on a single - line. The semicolon is such a character by default and should not be - explicitly listed. */ -const char line_separator_chars[] = ""; - -/* Characters which are used to indicate an exponent in a floating - point number. */ -const char EXP_CHARS[] = "eE"; - -/* Characters which mean that a number is a floating point constant, - as in 0f1.0. */ -const char FLT_CHARS[] = "fF"; - -/* This table describes all the machine specific pseudo-ops the assembler - has to support. The fields are: - - pseudo-op name without dot - function to call to execute this pseudo-op - integer arg to pass to the function */ - -const pseudo_typeS md_pseudo_table[] = -{ - { "align", s_align_bytes, 4 }, /* Do byte alignment, default is a 4 byte boundary. */ - { "word", cons, 4 }, /* FIXME: Should this be machine independent? */ - { "bss", s_lcomm_bytes, 1 }, - { "sect", obj_coff_section, 0}, /* For compatibility with TI tools. */ - { "section", obj_coff_section, 0}, /* Standard COFF .section pseudo-op. */ - { NULL, NULL, 0 } -}; - -/* Opcode hash table. */ -static struct hash_control *tic80_hash; - -/* Replace short PC relative instructions with long form when - necessary. Currently this is off by default or when given the - -no-relax option. Turning it on by using the -relax option forces - all PC relative instructions to use the long form, which is why it - is currently not the default. */ -static int tic80_relax = 0; - -int -md_estimate_size_before_relax (fragS *fragP ATTRIBUTE_UNUSED, - segT segment_type ATTRIBUTE_UNUSED) -{ - internal_error (_("Relaxation is a luxury we can't afford")); - return -1; -} - -/* We have no need to default values of symbols. */ - -symbolS * -md_undefined_symbol (char *name ATTRIBUTE_UNUSED) -{ - return NULL; -} - -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -#define MAX_LITTLENUMS 4 - -char * -md_atof (int type, char *litP, int *sizeP) -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - default: - *sizeP = 0; - return _("bad call to md_atof ()"); - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * sizeof (LITTLENUM_TYPE); - - for (wordP = words; prec--;) - { - md_number_to_chars (litP, (valueT) (*wordP++), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - - return NULL; -} - -/* Check to see if the constant value in NUM will fit in a field of - width BITS if it has flags FLAGS. */ - -static int -const_overflow (unsigned long num, int bits, int flags) -{ - long min, max; - int retval = 0; - - /* Only need to check fields less than 32 bits wide. */ - if (bits >= 32) - return retval; - - if (flags & TIC80_OPERAND_SIGNED) - { - max = (1 << (bits - 1)) - 1; - min = - (1 << (bits - 1)); - retval = (long) num > max || (long) num < min; - } - else - { - max = (1 << bits) - 1; - retval = num > (unsigned long) max; - } - return retval; -} - -/* get_operands () parses a string of operands and fills in a passed - array of expressions in EXP. - - Note that we use O_absent expressions to record additional information - about the previous non-O_absent expression, such as ":m" or ":s" - modifiers or register numbers enclosed in parens like "(r10)". - - Returns the number of expressions that were placed in EXP. */ - -static int -get_operands (expressionS exp[]) -{ - char *p = input_line_pointer; - int numexp = 0; - int parens = 0; - - while (*p) - { - /* Skip leading whitespace. */ - while (*p == ' ' || *p == '\t' || *p == ',') - p++; - - /* Check to see if we have any operands left to parse. */ - if (*p == 0 || *p == '\n' || *p == '\r') - break; - - /* Notice scaling or direct memory operand modifiers and save them in - an O_absent expression after the expression that they modify. */ - - if (*p == ':') - { - p++; - exp[numexp].X_op = O_absent; - if (*p == 'm') - { - p++; - /* This is a ":m" modifier. */ - exp[numexp].X_add_number = TIC80_OPERAND_M_SI | TIC80_OPERAND_M_LI; - } - else if (*p == 's') - { - p++; - /* This is a ":s" modifier. */ - exp[numexp].X_add_number = TIC80_OPERAND_SCALED; - } - else - as_bad (_("':' not followed by 'm' or 's'")); - - numexp++; - continue; - } - - /* Handle leading '(' on operands that use them, by recording that we - have entered a paren nesting level and then continuing. We complain - about multiple nesting. */ - - if (*p == '(') - { - if (++parens != 1) - as_bad (_("paren nesting")); - - p++; - continue; - } - - /* Handle trailing ')' on operands that use them, by reducing the - nesting level and then continuing. We complain if there were too - many closures. */ - - if (*p == ')') - { - /* Record that we have left a paren group and continue. */ - if (--parens < 0) - as_bad (_("mismatched parenthesis")); - - p++; - continue; - } - - /* Begin operand parsing at the current scan point. */ - input_line_pointer = p; - expression (&exp[numexp]); - - if (exp[numexp].X_op == O_illegal) - as_bad (_("illegal operand")); - else if (exp[numexp].X_op == O_absent) - as_bad (_("missing operand")); - - numexp++; - p = input_line_pointer; - } - - if (parens) - { - exp[numexp].X_op = O_absent; - exp[numexp++].X_add_number = TIC80_OPERAND_PARENS; - } - - /* Mark the end of the valid operands with an illegal expression. */ - exp[numexp].X_op = O_illegal; - - return numexp; -} - -/* find_opcode() gets a pointer to the entry in the opcode table that - matches the instruction being assembled, or returns NULL if no such match - is found. - - First it parses all the operands and save them as expressions. Note that - we use O_absent expressions to record additional information about the - previous non-O_absent expression, such as ":m" or ":s" modifiers or - register numbers enclosed in parens like "(r10)". - - It then looks at all opcodes with the same name and uses the operands to - choose the correct opcode. */ - -static struct tic80_opcode * -find_opcode (struct tic80_opcode *opcode, expressionS myops[]) -{ - int numexp; /* Number of expressions from parsing operands. */ - int expi; /* Index of current expression to match. */ - int opi; /* Index of current operand to match. */ - int match = 0; /* Set to 1 when an operand match is found. */ - struct tic80_opcode *opc = opcode; /* Pointer to current opcode table entry. */ - const struct tic80_opcode *end; /* Pointer to end of opcode table. */ - - /* First parse all the operands so we only have to do it once. There may - be more expressions generated than there are operands. */ - numexp = get_operands (myops); - - /* For each opcode with the same name, try to match it against the parsed - operands. */ - end = tic80_opcodes + tic80_num_opcodes; - while (!match && (opc < end) && (strcmp (opc->name, opcode->name) == 0)) - { - /* Start off assuming a match. If we find a mismatch, then this is - reset and the operand/expr matching loop terminates with match - equal to zero, which allows us to try the next opcode. */ - match = 1; - - /* For each expression, try to match it against the current operand - for the current opcode. Upon any mismatch, we abandon further - matching for the current opcode table entry. */ - for (expi = 0, opi = -1; (expi < numexp) && match; expi++) - { - int bits, flags, X_op, num; - - X_op = myops[expi].X_op; - num = myops[expi].X_add_number; - - /* The O_absent expressions apply to the same operand as the most - recent non O_absent expression. So only increment the operand - index when the current expression is not one of these special - expressions. */ - if (X_op != O_absent) - opi++; - - flags = tic80_operands[opc->operands[opi]].flags; - bits = tic80_operands[opc->operands[opi]].bits; - - switch (X_op) - { - case O_register: - /* Also check that registers that are supposed to be - even actually are even. */ - if (((flags & TIC80_OPERAND_GPR) != (num & TIC80_OPERAND_GPR)) || - ((flags & TIC80_OPERAND_FPA) != (num & TIC80_OPERAND_FPA)) || - ((flags & TIC80_OPERAND_CR) != (num & TIC80_OPERAND_CR)) || - ((flags & TIC80_OPERAND_EVEN) && (num & 1)) || - const_overflow (num & ~TIC80_OPERAND_MASK, bits, flags)) - match = 0; - break; - - case O_constant: - if ((flags & TIC80_OPERAND_ENDMASK) && (num == 32)) - /* Endmask values of 0 and 32 give identical - results. */ - num = 0; - - if ((flags & (TIC80_OPERAND_FPA | TIC80_OPERAND_GPR)) || - const_overflow (num, bits, flags)) - match = 0; - break; - - case O_symbol: - if ((bits < 32) && (flags & TIC80_OPERAND_PCREL) - && !tic80_relax) - { - /* The default is to prefer the short form of PC - relative relocations. This is the only form that - the TI assembler supports. If the -relax option - is given, we never use the short forms. - FIXME: Should be able to choose "best-fit". */ - } - else if ((bits == 32)) - { - /* The default is to prefer the long form of base - relative relocations. This is the only form that - the TI assembler supports. If the -no-relax - option is given, we always use the long form of - PC relative relocations. - FIXME: Should be able to choose "best-fit". */ - } - else - { - /* Symbols that don't match one of the above cases are - rejected as an operand. */ - match = 0; - } - break; - - case O_absent: - /* If this is an O_absent expression, then it may be an - expression that supplies additional information about - the operand, such as ":m" or ":s" modifiers. Check to - see that the operand matches this requirement. */ - if (!((num & flags & TIC80_OPERAND_M_SI) - || (num & flags & TIC80_OPERAND_M_LI) - || (num & flags & TIC80_OPERAND_SCALED))) - match = 0; - break; - - case O_big: - if ((num > 0) || !(flags & TIC80_OPERAND_FLOAT)) - match = 0; - break; - - case O_illegal: - case O_symbol_rva: - case O_uminus: - case O_bit_not: - case O_logical_not: - case O_multiply: - case O_divide: - case O_modulus: - case O_left_shift: - case O_right_shift: - case O_bit_inclusive_or: - case O_bit_or_not: - case O_bit_exclusive_or: - case O_bit_and: - case O_add: - case O_subtract: - case O_eq: - case O_ne: - case O_lt: - case O_le: - case O_ge: - case O_gt: - case O_logical_and: - case O_logical_or: - case O_max: - default: - internal_error_a (_("unhandled expression type"), (long) X_op); - } - } - if (!match) - opc++; - } - - return match ? opc : NULL; - -} - -/* build_insn takes a pointer to the opcode entry in the opcode table - and the array of operand expressions and writes out the instruction. - - Note that the opcode word and extended word may be written to different - frags, with the opcode at the end of one frag and the extension at the - beginning of the next. */ - -static void -build_insn (struct tic80_opcode *opcode, expressionS *opers) -{ - int expi; /* Index of current expression to match. */ - int opi; /* Index of current operand to match. */ - unsigned long insn[2]; /* Instruction and long immediate (if any). */ - char *f; /* Pointer to frag location for insn[0]. */ - fragS *ffrag; /* Frag containing location f. */ - char *fx = NULL; /* Pointer to frag location for insn[1]. */ - fragS *fxfrag; /* Frag containing location fx. */ - - /* Start with the raw opcode bits from the opcode table. */ - insn[0] = opcode->opcode; - insn[1] = 0; - - /* We are going to insert at least one 32 bit opcode so get the - frag now. */ - f = frag_more (4); - ffrag = frag_now; - - /* For each operand expression, insert the appropriate bits into the - instruction. */ - for (expi = 0, opi = -1; opers[expi].X_op != O_illegal; expi++) - { - int bits, shift, flags, X_op, num; - - X_op = opers[expi].X_op; - num = opers[expi].X_add_number; - - /* The O_absent expressions apply to the same operand as the most - recent non O_absent expression. So only increment the operand - index when the current expression is not one of these special - expressions. */ - if (X_op != O_absent) - opi++; - - flags = tic80_operands[opcode->operands[opi]].flags; - bits = tic80_operands[opcode->operands[opi]].bits; - shift = tic80_operands[opcode->operands[opi]].shift; - - switch (X_op) - { - case O_register: - num &= ~TIC80_OPERAND_MASK; - insn[0] = insn[0] | (num << shift); - break; - - case O_constant: - if ((flags & TIC80_OPERAND_ENDMASK) && (num == 32)) - /* Endmask values of 0 and 32 give identical results. */ - num = 0; - else if ((flags & TIC80_OPERAND_BITNUM)) - /* BITNUM values are stored in one's complement form. */ - num = (~num & 0x1F); - - /* Mask off upper bits, just it case it is signed and is - negative. */ - if (bits < 32) - { - num &= (1 << bits) - 1; - insn[0] = insn[0] | (num << shift); - } - else - { - fx = frag_more (4); - fxfrag = frag_now; - insn[1] = num; - } - break; - - case O_symbol: - if (bits == 32) - { - fx = frag_more (4); - fxfrag = frag_now; - insn[1] = 0; - - if (flags & TIC80_OPERAND_PCREL) - fix_new_exp (fxfrag, fx - (fxfrag->fr_literal), - 4, &opers[expi], 1, R_MPPCR); - else - fix_new_exp (fxfrag, fx - (fxfrag->fr_literal), - 4, &opers[expi], 0, R_RELLONGX); - } - else if (flags & TIC80_OPERAND_PCREL) - fix_new_exp (ffrag, f - (ffrag->fr_literal), - 4, /* FIXME! how is this used? */ - &opers[expi], 1, R_MPPCR15W); - else - internal_error (_("symbol reloc that is not PC relative or 32 bits")); - break; - - case O_absent: - /* Each O_absent expression can indicate exactly one - possible modifier. */ - if ((num & TIC80_OPERAND_M_SI) - && (flags & TIC80_OPERAND_M_SI)) - insn[0] = insn[0] | (1 << 17); - else if ((num & TIC80_OPERAND_M_LI) - && (flags & TIC80_OPERAND_M_LI)) - insn[0] = insn[0] | (1 << 15); - else if ((num & TIC80_OPERAND_SCALED) - && (flags & TIC80_OPERAND_SCALED)) - insn[0] = insn[0] | (1 << 11); - else if ((num & TIC80_OPERAND_PARENS) - && (flags & TIC80_OPERAND_PARENS)) - /* No code to generate, just accept and discard this - expression. */ - ; - else - internal_error_a (_("unhandled operand modifier"), - (long) opers[expi].X_add_number); - break; - - case O_big: - fx = frag_more (4); - fxfrag = frag_now; - - { - int precision = 2; - long exponent_bits = 8L; - LITTLENUM_TYPE words[2]; - - /* Value is still in generic_floating_point_number. */ - gen_to_words (words, precision, exponent_bits); - insn[1] = (words[0] << 16) | words[1]; - } - break; - - case O_illegal: - case O_symbol_rva: - case O_uminus: - case O_bit_not: - case O_logical_not: - case O_multiply: - case O_divide: - case O_modulus: - case O_left_shift: - case O_right_shift: - case O_bit_inclusive_or: - case O_bit_or_not: - case O_bit_exclusive_or: - case O_bit_and: - case O_add: - case O_subtract: - case O_eq: - case O_ne: - case O_lt: - case O_le: - case O_ge: - case O_gt: - case O_logical_and: - case O_logical_or: - case O_max: - default: - internal_error_a (_("unhandled expression"), (long) X_op); - break; - } - } - - /* Write out the instruction, either 4 or 8 bytes. */ - - md_number_to_chars (f, insn[0], 4); - if (fx != NULL) - md_number_to_chars (fx, insn[1], 4); -} - -/* This is the main entry point for the machine-dependent assembler. Gas - calls this function for each input line which does not contain a - pseudoop. - - STR points to a NULL terminated machine dependent instruction. This - function is supposed to emit the frags/bytes it assembles to. */ - -void -md_assemble (char *str) -{ - char *scan; - char *input_line_save; - struct tic80_opcode *opcode; - expressionS myops[16]; - - /* Ensure there is something there to assemble. */ - assert (str); - - /* Drop any leading whitespace. */ - while (ISSPACE (*str)) - str++; - - /* Isolate the mnemonic from the rest of the string by finding the first - whitespace character and zapping it to a null byte. */ - for (scan = str; *scan != '\000' && !ISSPACE (*scan); scan++) - ; - - if (*scan != '\000') - *scan++ = '\000'; - - /* Try to find this mnemonic in the hash table. */ - if ((opcode = (struct tic80_opcode *) hash_find (tic80_hash, str)) == NULL) - { - as_bad (_("Invalid mnemonic: '%s'"), str); - return; - } - - str = scan; - while (ISSPACE (*scan)) - scan++; - - input_line_save = input_line_pointer; - input_line_pointer = str; - - opcode = find_opcode (opcode, myops); - if (opcode == NULL) - as_bad (_("Invalid operands: '%s'"), input_line_save); - - input_line_pointer = input_line_save; - build_insn (opcode, myops); -} - -/* This function is called once at the start of assembly, after the command - line arguments have been parsed and all the machine independent - initializations have been completed. - - It should set up all the tables, etc., that the machine dependent part of - the assembler will need. */ - -void -md_begin (void) -{ - char *prev_name = ""; - register const struct tic80_opcode *op; - register const struct tic80_opcode *op_end; - const struct predefined_symbol *pdsp; - extern int coff_flags; /* Defined in obj-coff.c */ - - /* Set F_AR32WR in coff_flags, which will end up in the file header - f_flags field. */ - - coff_flags |= F_AR32WR; /* TIc80 is 32 bit little endian. */ - - /* Insert unique names into hash table. The TIc80 instruction set - has many identical opcode names that have different opcodes based - on the operands. This hash table then provides a quick index to - the first opcode with a particular name in the opcode table. */ - - tic80_hash = hash_new (); - op_end = tic80_opcodes + tic80_num_opcodes; - for (op = tic80_opcodes; op < op_end; op++) - { - if (strcmp (prev_name, op->name) != 0) - { - prev_name = (char *) op->name; - hash_insert (tic80_hash, op->name, (char *) op); - } - } - - /* Insert the predefined symbols into the symbol table. We use - symbol_create rather than symbol_new so that these symbols don't - end up in the object files' symbol table. Note that the values - of the predefined symbols include some upper bits that - distinguish the type of the symbol (register, bitnum, condition - code, etc) and these bits must be masked away before actually - inserting the values into the instruction stream. For registers - we put these bits in the symbol table since we use them later and - there is no question that they aren't part of the register - number. For constants we can't do that since the constant can be - any value, so they are masked off before putting them into the - symbol table. */ - - pdsp = NULL; - while ((pdsp = tic80_next_predefined_symbol (pdsp)) != NULL) - { - segT segment; - valueT valu; - int symtype; - - symtype = PDS_VALUE (pdsp) & TIC80_OPERAND_MASK; - switch (symtype) - { - case TIC80_OPERAND_GPR: - case TIC80_OPERAND_FPA: - case TIC80_OPERAND_CR: - segment = reg_section; - valu = PDS_VALUE (pdsp); - break; - case TIC80_OPERAND_CC: - case TIC80_OPERAND_BITNUM: - segment = absolute_section; - valu = PDS_VALUE (pdsp) & ~TIC80_OPERAND_MASK; - break; - default: - internal_error_a (_("unhandled predefined symbol bits"), - (long) symtype); - break; - } - symbol_table_insert (symbol_create (PDS_NAME (pdsp), segment, valu, - &zero_address_frag)); - } -} - -/* The assembler adds md_shortopts to the string passed to getopt. */ - -const char *md_shortopts = ""; - -/* The assembler adds md_longopts to the machine independent long options - that are passed to getopt. */ - -struct option md_longopts[] = -{ -#define OPTION_RELAX (OPTION_MD_BASE) - {"relax", no_argument, NULL, OPTION_RELAX}, - -#define OPTION_NO_RELAX (OPTION_RELAX + 1) - {"no-relax", no_argument, NULL, OPTION_NO_RELAX}, - - {NULL, no_argument, NULL, 0} -}; - -size_t md_longopts_size = sizeof (md_longopts); - -/* The md_parse_option function will be called whenever getopt returns an - unrecognized code, presumably indicating a special code value which - appears in md_longopts for machine specific command line options. */ - -int -md_parse_option (int c, char *arg ATTRIBUTE_UNUSED) -{ - switch (c) - { - case OPTION_RELAX: - tic80_relax = 1; - break; - case OPTION_NO_RELAX: - tic80_relax = 0; - break; - default: - return 0; - } - return 1; -} - -/* The md_show_usage function will be called whenever a usage message is - printed. It should print a description of the machine specific options - found in md_longopts. */ - -void -md_show_usage (FILE *stream) -{ - fprintf (stream, "\ -TIc80 options:\n\ --relax alter PC relative branch instructions to use long form when needed\n\ --no-relax always use short PC relative branch instructions, error on overflow\n"); -} - -/* Attempt to simplify or even eliminate a fixup. The return value is - ignored; perhaps it was once meaningful, but now it is historical. - To indicate that a fixup has been eliminated, set fixP->fx_done. */ - -void -md_apply_fix (fixS *fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED) -{ - long val = * (long *) valP; - char *dest = fixP->fx_frag->fr_literal + fixP->fx_where; - int overflow; - - switch (fixP->fx_r_type) - { - case R_RELLONGX: - md_number_to_chars (dest, (valueT) val, 4); - break; - case R_MPPCR: - val >>= 2; - val += 1; /* Target address computed from inst start. */ - md_number_to_chars (dest, (valueT) val, 4); - break; - case R_MPPCR15W: - overflow = (val < -65536L) || (val > 65532L); - if (overflow) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("PC offset 0x%lx outside range 0x%lx-0x%lx"), - val, -65536L, 65532L); - else - { - val >>= 2; - *dest++ = val & 0xFF; - val >>= 8; - *dest = (*dest & 0x80) | (val & 0x7F); - } - break; - - case R_ABS: - md_number_to_chars (dest, (valueT) val, fixP->fx_size); - break; - - default: - internal_error_a (_("unhandled relocation type in fixup"), - (long) fixP->fx_r_type); - break; - } - - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - fixP->fx_done = 1; -} - -/* Functions concerning relocs. */ - -/* The location from which a PC relative jump should be calculated, - given a PC relative reloc. - - For the TIc80, this is the address of the 32 bit opcode containing - the PC relative field. */ - -long -md_pcrel_from (fixS *fixP) -{ - return (fixP->fx_frag->fr_address + fixP->fx_where); -} - -/* Called after relax() is finished. - In: Address of frag. - fr_type == rs_machine_dependent. - fr_subtype is what the address relaxed to. - - Out: Any fixSs and constants are set up. - Caller will turn frag into a ".space 0". */ - -void -md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, - segT seg ATTRIBUTE_UNUSED, - fragS *fragP ATTRIBUTE_UNUSED) -{ - internal_error (_("md_convert_frag() not implemented yet")); - abort (); -} - -void -tc_coff_symbol_emit_hook (symbolS *ignore ATTRIBUTE_UNUSED) -{ -} - -#if defined OBJ_COFF - -short -tc_coff_fix2rtype (fixS *fixP) -{ - return (fixP->fx_r_type); -} - -#endif /* OBJ_COFF */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-tic80.h binutils-2.16.91.0.3/gas/config/tc-tic80.h --- binutils-2.16.91.0.2/gas/config/tc-tic80.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-tic80.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,61 +0,0 @@ -/* This file is tc-tic80.h - Copyright 1996, 1997, 2000, 2002, 2005 Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#define TC_TIC80 - -#define TARGET_BYTES_BIG_ENDIAN 0 - -#define TARGET_ARCH bfd_arch_tic80 -#define TARGET_FORMAT "coff-tic80" -#define BFD_ARCH TARGET_ARCH - -/* We need the extra field in the fixup struct to put the relocation in. */ - -#define NEED_FX_R_TYPE - -/* Define md_number_to_chars as the appropriate standard big endian or - little endian function. Should we someday support endianness as a - runtime decision, this will need to change. */ - -#define md_number_to_chars number_to_chars_littleendian - -/* Define away the call to md_operand in the expression parsing code. - This is called whenever the expression parser can't parse the input - and gives the assembler backend a chance to deal with it instead. */ - -#define md_operand(x) - -#ifdef OBJ_COFF - -/* COFF specific definitions. */ - -#define COFF_MAGIC TIC80_ARCH_MAGIC - -/* Whether a reloc should be output. */ - -#define TC_COUNT_RELOC(fixp) ((fixp) -> fx_addsy != NULL) - -/* This macro translates between an internal fix and a coff reloc type. */ - -#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype(fixP) - -extern short tc_coff_fix2rtype (struct fix *); - -#endif /* OBJ_COFF */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-v850.h binutils-2.16.91.0.3/gas/config/tc-v850.h --- binutils-2.16.91.0.2/gas/config/tc-v850.h 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-v850.h 2005-08-22 12:27:43.000000000 -0700 @@ -25,10 +25,6 @@ #define TARGET_BYTES_BIG_ENDIAN 0 -#ifndef BFD_ASSEMBLER - #error V850 support requires BFD_ASSEMBLER -#endif - /* The target BFD architecture. */ #define TARGET_ARCH bfd_arch_v850 diff -uprN binutils-2.16.91.0.2/gas/config/tc-vax.c binutils-2.16.91.0.3/gas/config/tc-vax.c --- binutils-2.16.91.0.2/gas/config/tc-vax.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-vax.c 2005-08-22 12:27:43.000000000 -0700 @@ -30,10 +30,6 @@ #include "elf/vax.h" #endif -#if defined (OBJ_AOUT) && !defined (BFD_ASSEMBLER) && defined (TE_NetBSD) -#include -#endif - /* These chars start a comment anywhere in a source file (except inside another comment */ const char comment_chars[] = "#"; @@ -322,12 +318,11 @@ md_apply_fix (fixP, valueP, seg) segT seg ATTRIBUTE_UNUSED; { valueT value = * valueP; -#ifdef BFD_ASSEMBLER + if (((fixP->fx_addsy == NULL && fixP->fx_subsy == NULL) && fixP->fx_r_type != BFD_RELOC_32_PLT_PCREL && fixP->fx_r_type != BFD_RELOC_32_GOT_PCREL) || fixP->fx_r_type == NO_RELOC) -#endif number_to_chars_littleendian (fixP->fx_where + fixP->fx_frag->fr_literal, value, fixP->fx_size); @@ -751,13 +746,8 @@ md_assemble (instruction_string) this_add_number = expP->X_add_number; this_add_symbol = expP->X_add_symbol; to_seg = *segP; -#ifdef BFD_ASSEMBLER is_undefined = (to_seg == undefined_section); is_absolute = (to_seg == absolute_section); -#else - is_undefined = (to_seg == SEG_UNKNOWN); - is_absolute = (to_seg == SEG_ABSOLUTE); -#endif at = operandP->vop_mode & 1; length = (operandP->vop_short == 'b' ? 1 : (operandP->vop_short == 'w' @@ -834,11 +824,7 @@ md_assemble (instruction_string) p = frag_more (nbytes); /* Conventional relocation. */ fix_new (frag_now, p - frag_now->fr_literal, nbytes, -#ifdef BFD_ASSEMBLER section_symbol (absolute_section), -#else - &abs_symbol, -#endif this_add_number, 1, NO_RELOC); } else @@ -922,11 +908,7 @@ md_assemble (instruction_string) know (!(opcode_as_number & VIT_OPCODE_SYNTHETIC)); p = frag_more (nbytes); fix_new (frag_now, p - frag_now->fr_literal, nbytes, -#ifdef BFD_ASSEMBLER section_symbol (absolute_section), -#else - &abs_symbol, -#endif this_add_number, 1, NO_RELOC); } else @@ -1442,19 +1424,11 @@ md_estimate_size_before_relax (fragP, se * Out: Any fixSs and constants are set up. * Caller will turn frag into a ".space 0". */ -#ifdef BFD_ASSEMBLER void md_convert_frag (headers, seg, fragP) bfd *headers ATTRIBUTE_UNUSED; segT seg ATTRIBUTE_UNUSED; fragS *fragP; -#else -void -md_convert_frag (headers, seg, fragP) - object_headers *headers ATTRIBUTE_UNUSED; - segT seg ATTRIBUTE_UNUSED; - fragS *fragP; -#endif { char *addressP; /* -> _var to change. */ char *opcodeP; /* -> opcode char(s) to change. */ @@ -1619,42 +1593,6 @@ md_ri_to_chars (the_bytes, ri) #endif /* comment */ -#ifdef OBJ_AOUT -#ifndef BFD_ASSEMBLER -void -tc_aout_fix_to_chars (where, fixP, segment_address_in_file) - char *where; - fixS *fixP; - relax_addressT segment_address_in_file; -{ - /* - * In: length of relocation (or of address) in chars: 1, 2 or 4. - * Out: GNU LD relocation length code: 0, 1, or 2. - */ - - static const unsigned char nbytes_r_length[] = {42, 0, 1, 42, 2}; - long r_symbolnum; - - know (fixP->fx_addsy != NULL); - - md_number_to_chars (where, - fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file, - 4); - - r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy) - ? S_GET_TYPE (fixP->fx_addsy) - : fixP->fx_addsy->sy_number); - - where[6] = (r_symbolnum >> 16) & 0x0ff; - where[5] = (r_symbolnum >> 8) & 0x0ff; - where[4] = r_symbolnum & 0x0ff; - where[7] = ((((!S_IS_DEFINED (fixP->fx_addsy)) << 3) & 0x08) - | ((nbytes_r_length[fixP->fx_size] << 1) & 0x06) - | (((fixP->fx_pcrel << 0) & 0x01) & 0x0f)); -} -#endif /* !BFD_ASSEMBLER */ -#endif /* OBJ_AOUT */ - /* * BUGS, GRIPES, APOLOGIA, etc. * @@ -3279,7 +3217,6 @@ mumble (text, value) int md_short_jump_size = 3; int md_long_jump_size = 6; -const int md_reloc_size = 8; /* Size of relocation record */ void md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol) @@ -3462,21 +3399,6 @@ md_pcrel_from (fixP) return fixP->fx_size + fixP->fx_where + fixP->fx_frag->fr_address; } -#ifdef OBJ_AOUT -#ifndef BFD_ASSEMBLER -void -tc_headers_hook(headers) - object_headers *headers; -{ -#ifdef TE_NetBSD - N_SET_INFO(headers->header, OMAGIC, M_VAX4K_NETBSD, 0); - headers->header.a_info = htonl (headers->header.a_info); -#endif -} -#endif /* !BFD_ASSEMBLER */ -#endif /* OBJ_AOUT */ - -#ifdef BFD_ASSEMBLER arelent * tc_gen_reloc (section, fixp) asection *section ATTRIBUTE_UNUSED; @@ -3552,6 +3474,5 @@ tc_gen_reloc (section, fixp) return reloc; } -#endif /* BFD_ASSEMBLER */ /* end of tc-vax.c */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-vax.h binutils-2.16.91.0.3/gas/config/tc-vax.h --- binutils-2.16.91.0.2/gas/config/tc-vax.h 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-vax.h 2005-08-22 12:27:43.000000000 -0700 @@ -1,5 +1,5 @@ /* tc-vax.h -- Header file for tc-vax.c. - Copyright 1987, 1991, 1992, 1993, 1995, 1996, 1997, 2000, 2002 + Copyright 1987, 1991, 1992, 1993, 1995, 1996, 1997, 2000, 2002, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -40,18 +40,11 @@ #define TARGET_FORMAT "elf32-vax" #endif -#define BFD_ARCH bfd_arch_vax /* for non-BFD_ASSEMBLER */ -#define TARGET_ARCH bfd_arch_vax /* BFD_ASSEMBLER */ +#define TARGET_ARCH bfd_arch_vax -#ifdef BFD_ASSEMBLER #define NO_RELOC BFD_RELOC_NONE -#else -#define NO_RELOC 0 -#endif #define NOP_OPCODE 0x01 -#define tc_aout_pre_write_hook(x) {;} /* not used */ -#define tc_crawl_symbol_chain(a) {;} /* not used */ #define md_operand(x) long md_chars_to_number PARAMS ((unsigned char *, int)); @@ -59,7 +52,6 @@ long md_chars_to_number PARAMS ((unsigne extern const struct relax_type md_relax_table[]; #define TC_GENERIC_RELAX_TABLE md_relax_table -#ifdef BFD_ASSEMBLER /* Values passed to md_apply_fix don't include symbol values. */ #define MD_APPLY_SYM_VALUE(FIX) 0 @@ -73,7 +65,6 @@ extern const struct relax_type md_relax_ && (S_GET_SEGMENT ((FIX)->fx_subsy) \ == S_GET_SEGMENT ((FIX)->fx_addsy))) \ || S_IS_LOCAL ((FIX)->fx_addsy))) -#endif /* * Local Variables: diff -uprN binutils-2.16.91.0.2/gas/config/tc-w65.c binutils-2.16.91.0.3/gas/config/tc-w65.c --- binutils-2.16.91.0.2/gas/config/tc-w65.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-w65.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,1080 +0,0 @@ -/* tc-w65.c -- Assemble code for the W65816 - Copyright 1995, 1998, 2000, 2001, 2002, 2005 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -/* Written By Steve Chamberlain . */ - -#include -#include "as.h" -#include "bfd.h" -#include "subsegs.h" -#define DEFINE_TABLE -#include "../opcodes/w65-opc.h" - -const char comment_chars[] = "!"; -const char line_separator_chars[] = ";"; -const char line_comment_chars[] = "!#"; - -/* This table describes all the machine specific pseudo-ops the assembler - has to support. The fields are: - - pseudo-op name without dot - function to call to execute this pseudo-op - Integer arg to pass to the function. */ - -#define OP_BCC 0x90 -#define OP_BCS 0xB0 -#define OP_BEQ 0xF0 -#define OP_BMI 0x30 -#define OP_BNE 0xD0 -#define OP_BPL 0x10 -#define OP_BRA 0x80 -#define OP_BRL 0x82 -#define OP_BVC 0x50 -#define OP_BVS 0x70 - -static int M; /* M flag. */ -static int X; /* X flag. */ - -/* This function is called once, at assembler startup time. This - should set up all the tables, etc that the MD part of the assembler - needs. */ - -static void -s_longa (int xmode) -{ - int *p = xmode ? &X : &M; - - while (*input_line_pointer == ' ') - input_line_pointer++; - if (strncmp (input_line_pointer, "on", 2) == 0) - { - input_line_pointer += 2; - *p = 0; - } - else if (strncmp (input_line_pointer, "off", 3) == 0) - { - *p = 1; - input_line_pointer += 3; - } - else - as_bad (_("need on or off.")); - demand_empty_rest_of_line (); -} - -const pseudo_typeS md_pseudo_table[] = -{ - {"int", cons, 2}, - {"word", cons, 2}, - {"longa", s_longa, 0}, - {"longi", s_longa, 1}, - {0, 0, 0} -}; - -const char EXP_CHARS[] = "eE"; - -/* Chars that mean this number is a floating point constant. */ -/* As in 0f12.456 */ -/* or 0d1.2345e12 */ -const char FLT_CHARS[] = "rRsSfFdDxXpP"; - -/* Opcode mnemonics */ -static struct hash_control *opcode_hash_control; - -#define C(a, b) ENCODE_RELAX(a,b) -#define ENCODE_RELAX(what, length) (((what) << 2) + (length)) - -#define GET_WHAT(x) (((x) >> 2)) - -#define BYTE_DISP 1 -#define WORD_DISP 2 -#define UNDEF_BYTE_DISP 0 -#define UNDEF_WORD_DISP 3 -#define COND_BRANCH 1 -#define UNCOND_BRANCH 2 -#define END 3 - -#define BYTE_F 127 /* How far we can branch forwards. */ -#define BYTE_B -126 /* How far we can branch backwards. */ -#define WORD_F 32767 -#define WORD_B 32768 - -relax_typeS md_relax_table[C (END, 0)] = -{ - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, - - /* COND_BRANCH */ - { 0, 0, 0, 0 }, /* UNDEF_BYTE_DISP */ - { BYTE_F, BYTE_B, 2, C (COND_BRANCH, WORD_DISP) }, /* BYTE_DISP */ - { WORD_F, WORD_B, 5, 0 }, /* WORD_DISP */ - { 0, 0, 5, 0 }, /* UNDEF_WORD_DISP */ - - /* UNCOND_BRANCH */ - { 0, 0, 0, 0 }, /* UNDEF_BYTE_DISP */ - { BYTE_F, BYTE_B, 2, C (UNCOND_BRANCH, WORD_DISP) }, /* BYTE_DISP */ - { WORD_F, WORD_B, 3, 0 }, /* WORD_DISP */ - { 0, 0, 3, 0 } /* UNDEF_WORD_DISP */ -}; - -void -md_begin (void) -{ - const struct opinfo *opcode; - char *prev_name = ""; - - opcode_hash_control = hash_new (); - - /* Insert unique names into hash table. */ - for (opcode = optable; opcode->name; opcode++) - { - if (strcmp (prev_name, opcode->name)) - { - prev_name = opcode->name; - hash_insert (opcode_hash_control, opcode->name, (char *) opcode); - } - } - - flag_signed_overflow_ok = 1; -} - -static expressionS immediate; /* Absolute expression. */ -static expressionS immediate1; /* Absolute expression. */ -int expr_size; -int expr_shift; -int tc_cons_reloc; - -void -w65_expression (expressionS *dest) -{ - expr_size = 0; - expr_shift = 0; - tc_cons_reloc = 0; - while (*input_line_pointer == ' ') - input_line_pointer++; - - if (*input_line_pointer == '<') - { - expr_size = 1; - input_line_pointer++; - } - else if (*input_line_pointer == '>') - { - expr_shift = 1; - input_line_pointer++; - } - else if (*input_line_pointer == '^') - { - expr_shift = 2; - input_line_pointer++; - } - - expr (0, dest); -} - -int amode; - -static char * -parse_exp (char *s) -{ - char *save; - char *new; - - save = input_line_pointer; - input_line_pointer = s; - w65_expression (&immediate); - if (immediate.X_op == O_absent) - as_bad (_("missing operand")); - new = input_line_pointer; - input_line_pointer = save; - return new; -} - -static char * -get_operands (const struct opinfo *info, char *ptr) -{ - int override_len = 0; - int bytes = 0; - - while (*ptr == ' ') - ptr++; - - if (ptr[0] == '#') - { - ptr++; - switch (info->amode) - { - case ADDR_IMMTOI: - bytes = X ? 1 : 2; - amode = ADDR_IMMTOI; - break; - case ADDR_IMMTOA: - bytes = M ? 1 : 2; - amode = ADDR_IMMTOA; - break; - case ADDR_IMMCOP: - bytes = 1; - amode = ADDR_IMMCOP; - break; - case ADDR_DIR: - bytes = 2; - amode = ADDR_ABS; - break; - default: - abort (); - break; - } - ptr = parse_exp (ptr); - } - else if (ptr[0] == '!') - { - ptr = parse_exp (ptr + 1); - if (ptr[0] == ',') - { - if (ptr[1] == 'y') - { - amode = ADDR_ABS_IDX_Y; - bytes = 2; - ptr += 2; - } - else if (ptr[1] == 'x') - { - amode = ADDR_ABS_IDX_X; - bytes = 2; - ptr += 2; - } - else - as_bad (_("syntax error after ') - { - ptr = parse_exp (ptr + 1); - if (ptr[0] == ',' && ptr[1] == 'x') - { - amode = ADDR_ABS_LONG_IDX_X; - bytes = 3; - ptr += 2; - } - else - { - amode = ADDR_ABS_LONG; - bytes = 3; - } - } - else if (ptr[0] == '<') - { - ptr = parse_exp (ptr + 1); - if (ptr[0] == ',') - { - if (ptr[1] == 'y') - { - amode = ADDR_DIR_IDX_Y; - ptr += 2; - bytes = 2; - } - else if (ptr[1] == 'x') - { - amode = ADDR_DIR_IDX_X; - ptr += 2; - bytes = 2; - } - else - as_bad (_("syntax error after ') - { - override_len = 3; - ptr++; - } - else - override_len = 0; - - ptr = parse_exp (ptr); - - if (ptr[0] == ',') - { - ptr++; - if (ptr[0] == 'x' && ptr[1] == ')') - { - ptr += 2; - - if (override_len == 1) - { - amode = ADDR_DIR_IDX_IND_X; - bytes = 2; - } - else - { - amode = ADDR_ABS_IND_IDX; - bytes = 2; - } - } - else if (ptr[0] == 's' && ptr[1] == ')' - && ptr[2] == ',' && ptr[3] == 'y') - { - amode = ADDR_STACK_REL_INDX_IDX; - bytes = 1; - ptr += 4; - } - } - else if (ptr[0] == ')') - { - if (ptr[1] == ',' && ptr[2] == 'y') - { - amode = ADDR_DIR_IND_IDX_Y; - ptr += 3; - bytes = 2; - } - else - { - if (override_len == 1) - { - amode = ADDR_DIR_IND; - bytes = 1; - } - else - { - amode = ADDR_ABS_IND; - bytes = 2; - } - ptr++; - } - } - } - else if (ptr[0] == '[') - { - ptr = parse_exp (ptr + 1); - - if (ptr[0] == ']') - { - ptr++; - if (ptr[0] == ',' && ptr[1] == 'y') - { - bytes = 1; - amode = ADDR_DIR_IND_IDX_Y_LONG; - ptr += 2; - } - else - { - if (info->code == O_jmp) - { - bytes = 2; - amode = ADDR_ABS_IND_LONG; - } - else - { - bytes = 1; - amode = ADDR_DIR_IND_LONG; - } - } - } - } - else - { - ptr = parse_exp (ptr); - if (ptr[0] == ',') - { - if (ptr[1] == 'y') - { - if (override_len == 1) - { - bytes = 1; - amode = ADDR_DIR_IDX_Y; - } - else - { - amode = ADDR_ABS_IDX_Y; - bytes = 2; - } - ptr += 2; - } - else if (ptr[1] == 'x') - { - if (override_len == 1) - { - amode = ADDR_DIR_IDX_X; - bytes = 1; - } - else - { - amode = ADDR_ABS_IDX_X; - bytes = 2; - } - ptr += 2; - } - else if (ptr[1] == 's') - { - bytes = 1; - amode = ADDR_STACK_REL; - ptr += 2; - } - else - { - bytes = 1; - immediate1 = immediate; - ptr = parse_exp (ptr + 1); - amode = ADDR_BLOCK_MOVE; - } - } - else - { - switch (info->amode) - { - case ADDR_PC_REL: - amode = ADDR_PC_REL; - bytes = 1; - break; - case ADDR_PC_REL_LONG: - amode = ADDR_PC_REL_LONG; - bytes = 2; - break; - default: - if (override_len == 1) - { - amode = ADDR_DIR; - bytes = 1; - } - else if (override_len == 3) - { - bytes = 3; - amode = ADDR_ABS_LONG; - } - else - { - amode = ADDR_ABS; - bytes = 2; - } - } - } - } - - switch (bytes) - { - case 1: - switch (expr_shift) - { - case 0: - if (amode == ADDR_DIR) - tc_cons_reloc = R_W65_DP; - else - tc_cons_reloc = R_W65_ABS8; - break; - case 1: - tc_cons_reloc = R_W65_ABS8S8; - break; - case 2: - tc_cons_reloc = R_W65_ABS8S16; - break; - } - break; - case 2: - switch (expr_shift) - { - case 0: - tc_cons_reloc = R_W65_ABS16; - break; - case 1: - tc_cons_reloc = R_W65_ABS16S8; - break; - case 2: - tc_cons_reloc = R_W65_ABS16S16; - break; - } - } - return ptr; -} - -/* Passed a pointer to a list of opcodes which use different - addressing modes, return the opcode which matches the opcodes - provided. */ - -static const struct opinfo * -get_specific (const struct opinfo *opcode) -{ - int ocode = opcode->code; - - for (; opcode->code == ocode; opcode++) - if (opcode->amode == amode) - return opcode; - - return 0; -} - -/* Now we know what sort of opcodes it is, let's build the bytes. */ - -static void -build_Mytes (const struct opinfo *opcode) -{ - int size; - int type; - int pcrel; - char *output; - - if (opcode->amode == ADDR_IMPLIED) - output = frag_more (1); - - else if (opcode->amode == ADDR_PC_REL) - { - int type; - - /* This is a relaxable insn, so we do some special handling. */ - type = opcode->val == OP_BRA ? UNCOND_BRANCH : COND_BRANCH; - output = frag_var (rs_machine_dependent, - md_relax_table[C (type, WORD_DISP)].rlx_length, - md_relax_table[C (type, BYTE_DISP)].rlx_length, - C (type, UNDEF_BYTE_DISP), - immediate.X_add_symbol, - immediate.X_add_number, - 0); - } - else - { - switch (opcode->amode) - { - GETINFO (size, type, pcrel); - default: - abort (); - } - - /* If something special was done in the expression modify the - reloc type. */ - if (tc_cons_reloc) - type = tc_cons_reloc; - - /* 1 byte for the opcode + the bytes for the addrmode. */ - output = frag_more (size + 1); - - if (opcode->amode == ADDR_BLOCK_MOVE) - { - /* Two relocs for this one. */ - fix_new_exp (frag_now, - output + 1 - frag_now->fr_literal, - 1, - &immediate, - 0, - R_W65_ABS8S16); - - fix_new_exp (frag_now, - output + 2 - frag_now->fr_literal, - 1, - &immediate1, - 0, - R_W65_ABS8S16); - } - else if (type >= 0 - && opcode->amode != ADDR_IMPLIED - && opcode->amode != ADDR_ACC - && opcode->amode != ADDR_STACK) - { - fix_new_exp (frag_now, - output + 1 - frag_now->fr_literal, - size, - &immediate, - pcrel, - type); - } - } - output[0] = opcode->val; -} - -/* This is the guts of the machine-dependent assembler. STR points to - a machine dependent instruction. This function is supposed to emit - the frags/bytes it assembles to. */ - -void -md_assemble (char *str) -{ - const struct opinfo *opcode; - char name[20]; - - /* Drop leading whitespace */ - while (*str == ' ') - str++; - - /* All opcodes are three letters. */ - name[0] = str[0]; - name[1] = str[1]; - name[2] = str[2]; - name[3] = 0; - - tc_cons_reloc = 0; - str += 3; - opcode = (struct opinfo *) hash_find (opcode_hash_control, name); - - if (opcode == NULL) - { - as_bad (_("unknown opcode")); - return; - } - - if (opcode->amode != ADDR_IMPLIED - && opcode->amode != ADDR_STACK) - { - get_operands (opcode, str); - opcode = get_specific (opcode); - } - - if (opcode == 0) - { - /* Couldn't find an opcode which matched the operands. */ - - char *where = frag_more (1); - - where[0] = 0x0; - where[1] = 0x0; - as_bad (_("invalid operands for opcode")); - return; - } - - build_Mytes (opcode); -} - -symbolS * -md_undefined_symbol (char *name ATTRIBUTE_UNUSED) -{ - return 0; -} - -/* Various routines to kill one day. */ -/* Equal to MAX_PRECISION in atof-ieee.c. */ -#define MAX_LITTLENUMS 6 - -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - -char * -md_atof (int type, char *litP, int *sizeP) -{ - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - LITTLENUM_TYPE *wordP; - char *t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - case 'x': - case 'X': - prec = 6; - break; - - case 'p': - case 'P': - prec = 6; - break; - - default: - *sizeP = 0; - return _("Bad call to MD_NTOF()"); - } - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizeP = prec * sizeof (LITTLENUM_TYPE); - for (wordP = words + prec - 1; prec--;) - { - md_number_to_chars (litP, (valueT) (*wordP--), sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - return 0; -} - -int -md_parse_option (int c ATTRIBUTE_UNUSED, char *a ATTRIBUTE_UNUSED) -{ - return 0; -} - -/* Called after relaxing, change the frags so they know how big they - are. */ - -void -md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, - segT seg ATTRIBUTE_UNUSED, - fragS *fragP) -{ - int disp_size = 0; - int inst_size = 0; - unsigned char *buffer = - (unsigned char *) (fragP->fr_fix + fragP->fr_literal); - - switch (fragP->fr_subtype) - { - case C (COND_BRANCH, BYTE_DISP): - case C (UNCOND_BRANCH, BYTE_DISP): - disp_size = 1; - inst_size = 1; - break; - - /* Conditional branches to a known 16 bit displacement. */ - case C (COND_BRANCH, WORD_DISP): - switch (buffer[0]) - { - case OP_BCC: - case OP_BCS: - case OP_BEQ: - case OP_BMI: - case OP_BNE: - case OP_BPL: - case OP_BVS: - case OP_BVC: - /* Invert the sense of the test. */ - buffer[0] ^= 0x20; - buffer[1] = 3; /* Jump over following brl. */ - buffer[2] = OP_BRL; - buffer[3] = 0; - buffer[4] = 0; - disp_size = 2; - inst_size = 3; - break; - default: - abort (); - } - break; - case C (UNCOND_BRANCH, WORD_DISP): - /* Unconditional branches to a known 16 bit displacement. */ - - switch (buffer[0]) - { - case OP_BRA: - buffer[0] = OP_BRL; - disp_size = 2; - inst_size = 1; - break; - default: - abort (); - } - break; - /* Got to create a branch over a reloc here. */ - case C (COND_BRANCH, UNDEF_WORD_DISP): - buffer[0] ^= 0x20; /* Invert test. */ - buffer[1] = 3; - buffer[2] = OP_BRL; - buffer[3] = 0; - buffer[4] = 0; - fix_new (fragP, - fragP->fr_fix + 3, - 4, - fragP->fr_symbol, - fragP->fr_offset, - 0, - R_W65_PCR16); - - fragP->fr_fix += disp_size + inst_size; - fragP->fr_var = 0; - break; - case C (UNCOND_BRANCH, UNDEF_WORD_DISP): - buffer[0] = OP_BRL; - buffer[1] = 0; - buffer[2] = 0; - fix_new (fragP, - fragP->fr_fix + 1, - 4, - fragP->fr_symbol, - fragP->fr_offset, - 0, - R_W65_PCR16); - - fragP->fr_fix += disp_size + inst_size; - fragP->fr_var = 0; - break; - default: - abort (); - } - if (inst_size) - { - /* Get the address of the end of the instruction. */ - int next_inst = (fragP->fr_fix + fragP->fr_address - + disp_size + inst_size); - int targ_addr = (S_GET_VALUE (fragP->fr_symbol) + - fragP->fr_offset); - int disp = targ_addr - next_inst; - - md_number_to_chars ((char *) buffer + inst_size, disp, disp_size); - fragP->fr_fix += disp_size + inst_size; - fragP->fr_var = 0; - } -} - -valueT -md_section_align (segT seg, valueT size) -{ - return ((size + (1 << section_alignment[(int) seg]) - 1) - & (-1 << section_alignment[(int) seg])); -} - -void -md_apply_fix (fixS *fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED) -{ - long val = * (long *) valP; - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - int addr = fixP->fx_frag->fr_address + fixP->fx_where; - - if (fixP->fx_r_type == 0) - { - if (fixP->fx_size == 1) - fixP->fx_r_type = R_W65_ABS8; - else - fixP->fx_r_type = R_W65_ABS16; - } - - switch (fixP->fx_r_type) - { - case R_W65_ABS8S16: - val >>= 8; - case R_W65_ABS8S8: - val >>= 8; - case R_W65_ABS8: - *buf++ = val; - break; - case R_W65_ABS16S16: - val >>= 8; - case R_W65_ABS16S8: - val >>= 8; - case R_W65_ABS16: - *buf++ = val >> 0; - *buf++ = val >> 8; - break; - case R_W65_ABS24: - *buf++ = val >> 0; - *buf++ = val >> 8; - *buf++ = val >> 16; - break; - case R_W65_PCR8: - *buf++ = val - addr - 1; - break; - case R_W65_PCR16: - val = val - addr - 1; - *buf++ = val; - *buf++ = val >> 8; - break; - case R_W65_DP: - *buf++ = val; - break; - - default: - abort (); - } - - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - fixP->fx_done = 1; -} - -/* Put number into target byte order. */ - -void -md_number_to_chars (char *ptr, valueT use, int nbytes) -{ - number_to_chars_littleendian (ptr, use, nbytes); -} - -long -md_pcrel_from (fixS *fixP) -{ - int gap = fixP->fx_size + fixP->fx_where + fixP->fx_frag->fr_address - 1; - return gap; -} - -void -tc_coff_symbol_emit_hook (symbolS *x ATTRIBUTE_UNUSED) -{ -} - -short -tc_coff_fix2rtype (fixS *fix_ptr) -{ - return fix_ptr->fx_r_type; -} - -void -tc_reloc_mangle (fixS *fix_ptr, - struct internal_reloc *intr, - bfd_vma base) - -{ - symbolS *symbol_ptr; - - symbol_ptr = fix_ptr->fx_addsy; - - /* If this relocation is attached to a symbol then it's ok - to output it */ - if (fix_ptr->fx_r_type == RELOC_32) - { - /* Cons likes to create reloc32's whatever the size of the reloc. */ - switch (fix_ptr->fx_size) - { - case 2: - intr->r_type = R_IMM16; - break; - case 1: - intr->r_type = R_IMM8; - break; - default: - abort (); - } - } - else - { - if (fix_ptr->fx_size == 4) - intr->r_type = R_W65_ABS24; - else - intr->r_type = fix_ptr->fx_r_type; - } - - intr->r_vaddr = fix_ptr->fx_frag->fr_address + fix_ptr->fx_where + base; - intr->r_offset = fix_ptr->fx_offset; - - /* Turn the segment of the symbol into an offset. */ - if (symbol_ptr) - { - symbolS *dot; - - dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot; - if (dot) - { - intr->r_offset += S_GET_VALUE (symbol_ptr); - intr->r_symndx = dot->sy_number; - } - else - intr->r_symndx = symbol_ptr->sy_number; - } - else - intr->r_symndx = -1; -} - -int -tc_coff_sizemachdep (fragS *frag) -{ - return md_relax_table[frag->fr_subtype].rlx_length; -} - -/* Called just before address relaxation, return the length by which a - fragment must grow to reach it's destination. */ - -int -md_estimate_size_before_relax (fragS *fragP, segT segment_type) -{ - int what; - - switch (fragP->fr_subtype) - { - default: - abort (); - - case C (COND_BRANCH, UNDEF_BYTE_DISP): - case C (UNCOND_BRANCH, UNDEF_BYTE_DISP): - what = GET_WHAT (fragP->fr_subtype); - /* Used to be a branch to somewhere which was unknown. */ - if (S_GET_SEGMENT (fragP->fr_symbol) == segment_type) - /* Got a symbol and it's defined in this segment, become byte - sized - maybe it will fix up. */ - fragP->fr_subtype = C (what, BYTE_DISP); - else - /* Its got a segment, but its not ours, so it will always be - long. */ - fragP->fr_subtype = C (what, UNDEF_WORD_DISP); - break; - - case C (COND_BRANCH, BYTE_DISP): - case C (COND_BRANCH, WORD_DISP): - case C (COND_BRANCH, UNDEF_WORD_DISP): - case C (UNCOND_BRANCH, BYTE_DISP): - case C (UNCOND_BRANCH, WORD_DISP): - case C (UNCOND_BRANCH, UNDEF_WORD_DISP): - /* When relaxing a section for the second time, we don't need to - do anything besides return the current size. */ - break; - } - - fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; - return fragP->fr_var; -} - -const char *md_shortopts = ""; -struct option md_longopts[] = -{ -#define OPTION_RELAX (OPTION_MD_BASE) - {NULL, no_argument, NULL, 0} -}; - -void -md_show_usage (FILE *stream ATTRIBUTE_UNUSED) -{ -} - -size_t md_longopts_size = sizeof (md_longopts); diff -uprN binutils-2.16.91.0.2/gas/config/tc-w65.h binutils-2.16.91.0.3/gas/config/tc-w65.h --- binutils-2.16.91.0.2/gas/config/tc-w65.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-w65.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,60 +0,0 @@ -/* This file is tc-w65.h - Copyright 1995, 1997, 1998, 2000, 2001, 2002, 2005 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#define TC_W65 - -#define TARGET_BYTES_BIG_ENDIAN 0 - -struct internal_reloc; -struct fix; - -#define WORKING_DOT_WORD - -/* This macro translates between an internal fix and a coff reloc type. */ -#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype (fixP) - -#define BFD_ARCH bfd_arch_w65 -#define COFF_MAGIC 0x6500 - -#define IGNORE_NONSTANDARD_ESCAPES - -#define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle (a,b,c) -extern void tc_reloc_mangle (struct fix *, struct internal_reloc *, bfd_vma); - -#define LISTING_HEADER "W65816 GAS " -#define NEED_FX_R_TYPE 1 -#define RELOC_32 1234 - -#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag) -int tc_coff_sizemachdep (fragS *); - -#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) w65_expression (EXP) -void w65_expression (expressionS *); - -#define TC_COUNT_RELOC(x) (1) -#define TC_CONS_RELOC tc_cons_reloc -#define DONT_OVERFLOW -int tc_cons_reloc; - -#define md_operand(x) - -extern struct relax_type md_relax_table[]; -#define TC_GENERIC_RELAX_TABLE md_relax_table diff -uprN binutils-2.16.91.0.2/gas/config/tc-xstormy16.h binutils-2.16.91.0.3/gas/config/tc-xstormy16.h --- binutils-2.16.91.0.2/gas/config/tc-xstormy16.h 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-xstormy16.h 2005-08-22 12:27:43.000000000 -0700 @@ -20,11 +20,6 @@ #define TC_XSTORMY16 -#ifndef BFD_ASSEMBLER -/* Leading space so will compile with cc. */ - #error XSTORMY16 support requires BFD_ASSEMBLER -#endif - #define LISTING_HEADER "XSTORMY16 GAS " /* The target BFD architecture. */ diff -uprN binutils-2.16.91.0.2/gas/config/tc-xtensa.h binutils-2.16.91.0.3/gas/config/tc-xtensa.h --- binutils-2.16.91.0.2/gas/config/tc-xtensa.h 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-xtensa.h 2005-08-22 12:27:43.000000000 -0700 @@ -1,5 +1,5 @@ /* tc-xtensa.h -- Header file for tc-xtensa.c. - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -23,10 +23,6 @@ struct fix; -#ifndef BFD_ASSEMBLER -#error Xtensa support requires BFD_ASSEMBLER -#endif - #ifndef OBJ_ELF #error Xtensa support requires ELF object format #endif diff -uprN binutils-2.16.91.0.2/gas/config/tc-z8k.c binutils-2.16.91.0.3/gas/config/tc-z8k.c --- binutils-2.16.91.0.2/gas/config/tc-z8k.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-z8k.c 2005-08-22 12:27:43.000000000 -0700 @@ -36,7 +36,6 @@ const char line_separator_chars[] = ";"; extern int machine; extern int coff_flags; int segmented_mode; -const int md_reloc_size; /* This is non-zero if target was set from the command line. */ static int z8k_target_from_cmdline; @@ -1260,12 +1259,6 @@ md_assemble (char *str) } } -void -tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_crawl_symbol_chain \n")); -} - /* We have no need to default values of symbols. */ symbolS * @@ -1274,12 +1267,6 @@ md_undefined_symbol (char *name ATTRIBUT return 0; } -void -tc_headers_hook (object_headers *headers ATTRIBUTE_UNUSED) -{ - printf (_("call to tc_headers_hook \n")); -} - /* Various routines to kill one day. */ /* Equal to MAX_PRECISION in atof-ieee.c. */ #define MAX_LITTLENUMS 6 @@ -1553,60 +1540,3 @@ void tc_coff_symbol_emit_hook (symbolS *s ATTRIBUTE_UNUSED) { } - -void -tc_reloc_mangle (fixS *fix_ptr, struct internal_reloc *intr, bfd_vma base) -{ - symbolS *symbol_ptr; - - if (fix_ptr->fx_addsy - && fix_ptr->fx_subsy) - { - symbolS *add = fix_ptr->fx_addsy; - symbolS *sub = fix_ptr->fx_subsy; - - if (S_GET_SEGMENT (add) != S_GET_SEGMENT (sub)) - as_bad (_("Can't subtract symbols in different sections %s %s"), - S_GET_NAME (add), S_GET_NAME (sub)); - else - { - int diff = S_GET_VALUE (add) - S_GET_VALUE (sub); - - fix_ptr->fx_addsy = 0; - fix_ptr->fx_subsy = 0; - fix_ptr->fx_offset += diff; - } - } - symbol_ptr = fix_ptr->fx_addsy; - - /* If this relocation is attached to a symbol then it's ok - to output it. */ - if (fix_ptr->fx_r_type == 0) - { - /* cons likes to create reloc32's whatever the size of the reloc. */ - switch (fix_ptr->fx_size) - { - case 2: - intr->r_type = R_IMM16; - break; - case 1: - intr->r_type = R_IMM8; - break; - case 4: - intr->r_type = R_IMM32; - break; - default: - abort (); - } - } - else - intr->r_type = fix_ptr->fx_r_type; - - intr->r_vaddr = fix_ptr->fx_frag->fr_address + fix_ptr->fx_where + base; - intr->r_offset = fix_ptr->fx_offset; - - if (symbol_ptr) - intr->r_symndx = symbol_ptr->sy_number; - else - intr->r_symndx = -1; -} diff -uprN binutils-2.16.91.0.2/gas/config/tc-z8k.h binutils-2.16.91.0.3/gas/config/tc-z8k.h --- binutils-2.16.91.0.2/gas/config/tc-z8k.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/tc-z8k.h 2005-08-22 12:27:43.000000000 -0700 @@ -1,6 +1,6 @@ /* This file is tc-z8k.h Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1997, 1998, - 2000, 2002, 2003 + 2000, 2002, 2003, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -27,25 +27,11 @@ struct internal_reloc; #define WORKING_DOT_WORD -#ifndef BFD_ASSEMBLER -#define LOCAL_LABEL(x) 0 -#endif - -/* This macro translates between an internal fix and a coff reloc type. */ -#define TC_COFF_FIX2RTYPE(fixP) abort (); - -#define BFD_ARCH bfd_arch_z8k #define COFF_MAGIC 0x8000 -#define TC_COUNT_RELOC(x) (1) #define IGNORE_NONSTANDARD_ESCAPES #undef WARN_SIGNED_OVERFLOW_WORD -#define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle(a,b,c) -extern void tc_reloc_mangle - PARAMS ((struct fix *, struct internal_reloc *, bfd_vma)); - #define LISTING_HEADER "Zilog Z8000 GAS " -#define NEED_FX_R_TYPE 1 #define RELOC_32 1234 #define md_operand(x) diff -uprN binutils-2.16.91.0.2/gas/config/te-aux.h binutils-2.16.91.0.3/gas/config/te-aux.h --- binutils-2.16.91.0.2/gas/config/te-aux.h 2000-05-18 14:21:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/te-aux.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,17 +0,0 @@ -#define TE_AUX - -/* From obj-coff.h: - This internal_lineno crap is to stop namespace pollution from the - bfd internal coff headerfile. */ -#define internal_lineno bfd_internal_lineno -#include "coff/aux-coff.h" /* override bits in coff/internal.h */ -#undef internal_lineno - -#define COFF_NOLOAD_PROBLEM -#define KEEP_RELOC_INFO - -#include "obj-format.h" - -#ifndef LOCAL_LABELS_FB -#define LOCAL_LABELS_FB 1 -#endif diff -uprN binutils-2.16.91.0.2/gas/config/te-delt88.h binutils-2.16.91.0.3/gas/config/te-delt88.h --- binutils-2.16.91.0.2/gas/config/te-delt88.h 2004-01-14 13:07:46.000000000 -0800 +++ binutils-2.16.91.0.3/gas/config/te-delt88.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,13 +0,0 @@ -/* This file is te-delta88.h. */ - -#define TE_DELTA88 1 - -#define COFF_NOLOAD_PROBLEM 1 - -/* Added these, because if we don't know what we're targeting we may - need an assembler version of libgcc, and that will use local - labels. */ -#define LOCAL_LABELS_DOLLAR 1 -#define LOCAL_LABELS_FB 1 - -#include "obj-format.h" diff -uprN binutils-2.16.91.0.2/gas/config/te-delta.h binutils-2.16.91.0.3/gas/config/te-delta.h --- binutils-2.16.91.0.2/gas/config/te-delta.h 2004-01-14 13:07:46.000000000 -0800 +++ binutils-2.16.91.0.3/gas/config/te-delta.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,14 +0,0 @@ -#define TE_DELTA - -#include "obj-format.h" - -#define COFF_NOLOAD_PROBLEM 1 -#define COFF_COMMON_ADDEND 1 - -/* Added these, because if we don't know what we're targeting we may - need an assembler version of libgcc, and that will use local - labels. */ -#define LOCAL_LABELS_DOLLAR 1 -#define LOCAL_LABELS_FB 1 - -/* end of te-delta.h */ diff -uprN binutils-2.16.91.0.2/gas/config/te-dpx2.h binutils-2.16.91.0.3/gas/config/te-dpx2.h --- binutils-2.16.91.0.2/gas/config/te-dpx2.h 2000-05-18 14:21:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/te-dpx2.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,12 +0,0 @@ -/* Machine specific defines for the dpx2 machine. */ - -/* The magic number is not the usual MC68MAGIC. */ -#define COFF_MAGIC MC68KBCSMAGIC - -#define REGISTER_PREFIX_OPTIONAL 1 - -#define TARGET_FORMAT "coff-m68k-un" - -#include "obj-format.h" - -/* end of te-dpx2.h */ diff -uprN binutils-2.16.91.0.2/gas/config/te-hp300.h binutils-2.16.91.0.3/gas/config/te-hp300.h --- binutils-2.16.91.0.2/gas/config/te-hp300.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/te-hp300.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,27 +0,0 @@ -/* te-hp300.h -- hpux 9000/300 target environment declarations. - Copyright 1987, 1990, 1991, 1992, 1993, 1995, 2000 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#define LOCAL_LABELS_DOLLAR 1 -#define LOCAL_LABELS_FB 1 - -#include "obj-format.h" - -/* end of te-hp300.h */ diff -uprN binutils-2.16.91.0.2/gas/config/te-ic960.h binutils-2.16.91.0.3/gas/config/te-ic960.h --- binutils-2.16.91.0.2/gas/config/te-ic960.h 2005-05-10 15:46:45.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/te-ic960.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,37 +0,0 @@ -/* This file is te-ic960.h - Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1997, 2000 - Free Software Foundation, Inc. - - 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, 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -/* This file is te-ic960.h and is intended to define ic960 environment - specific differences. */ - -#define OBJ_COFF_OMIT_OPTIONAL_HEADER - -#ifndef BFD_ASSEMBLER -#define LOCAL_LABEL(name) ((name[0] =='L') \ - || (name[0] =='.' \ - && (name[1]=='C' \ - || name[1]=='I' \ - || name[1]=='.'))) -#endif - -#include "obj-format.h" - -/* end of te-ic960.h */ diff -uprN binutils-2.16.91.0.2/gas/config/vms-a-conf.h binutils-2.16.91.0.3/gas/config/vms-a-conf.h --- binutils-2.16.91.0.2/gas/config/vms-a-conf.h 1999-06-03 11:02:02.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config/vms-a-conf.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,129 +0,0 @@ -/* vms-alpha-conf.h. Generated manually from conf.in, - and used by config-gas-alpha.com when constructing config.h. */ - -/* Define if using alloca.c. */ -#ifdef __GNUC__ -#undef C_ALLOCA -#else -#define C_ALLOCA -#endif - -/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. - This function is required for alloca.c support on those systems. */ -#undef CRAY_STACKSEG_END - -/* Define if you have and it should be used (not on Ultrix). */ -#undef HAVE_ALLOCA_H - -/* Define as __inline if that's what the C compiler calls it. */ -#ifdef __GNUC__ -#undef inline -#else -#define inline -#endif - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown - */ -#define STACK_DIRECTION (-1) - -/* Should gas use high-level BFD interfaces? */ -#define BFD_ASSEMBLER - -/* Some assert/preprocessor combinations are incapable of handling - certain kinds of constructs in the argument of assert. For example, - quoted strings (if requoting isn't done right) or newlines. */ -#ifdef __GNUC__ -#undef BROKEN_ASSERT -#else -#define BROKEN_ASSERT -#endif - -/* If we aren't doing cross-assembling, some operations can be optimized, - since byte orders and value sizes don't need to be adjusted. */ -#undef CROSS_COMPILE - -/* Some gas code wants to know these parameters. */ -#define TARGET_ALIAS "alpha-vms" -#define TARGET_CPU "alpha" -#define TARGET_CANONICAL "alpha-dec-vms" -#define TARGET_OS "openVMS/Alpha" -#define TARGET_VENDOR "dec" - -/* Sometimes the system header files don't declare malloc and realloc. */ -#undef NEED_DECLARATION_MALLOC - -/* Sometimes the system header files don't declare free. */ -#undef NEED_DECLARATION_FREE - -/* Sometimes errno.h doesn't declare errno itself. */ -#undef NEED_DECLARATION_ERRNO - -#undef MANY_SEGMENTS - -/* Needed only for sparc configuration */ -#undef sparcv9 - -/* Define if you have the remove function. */ -#define HAVE_REMOVE - -/* Define if you have the unlink function. */ -#undef HAVE_UNLINK - -/* Define if you have the header file. */ -#define HAVE_ERRNO_H - -/* Define if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define if you have the header file. */ -#define HAVE_STDARG_H - -/* Define if you have the header file. */ -#define HAVE_STDLIB_H - -/* Define if you have the header file. */ -#define HAVE_STRING_H - -/* Define if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define if you have the header file. */ -#ifdef __GNUC__ -#define HAVE_SYS_TYPES_H -#else -#undef HAVE_SYS_TYPES_H -#endif - -/* Define if you have the header file. */ -#define HAVE_UNISTD_H /* config-gas.com will make one if necessary */ - -/* Define if you have the header file. */ -#undef HAVE_VARARGS_H - -/* VMS-specific: we need to set up EXIT_xxx here because the default - values in as.h are inappropriate for VMS, but we also want to prevent - as.h's inclusion of from triggering redefinition warnings. - guards itself against multiple inclusion, so including it - here turns as.h's later #include into a no-op. (We can't simply use - #ifndef HAVE_STDLIB_H here, because the in several older - gcc-vms distributions neglects to define these two required macros.) */ -#ifdef HAVE_STDLIB_H -#include -#endif -#if __DECC -#undef EXIT_SUCCESS -#undef EXIT_FAILURE -#define EXIT_SUCCESS 1 /* SS$_NORMAL, STS$K_SUCCESS */ -#define EXIT_FAILURE 0x10000002 /* (STS$K_ERROR | STS$M_INHIB_MSG) */ -#endif - -#include -#if __DECC -extern int strcasecmp (); -extern int strncasecmp (); -#endif diff -uprN binutils-2.16.91.0.2/gas/config-gas.com binutils-2.16.91.0.3/gas/config-gas.com --- binutils-2.16.91.0.2/gas/config-gas.com 2005-04-09 12:03:03.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config-gas.com 1969-12-31 16:00:00.000000000 -0800 @@ -1,189 +0,0 @@ -$!config-gas.com -$! This file sets things up to build gas on a VMS system to generate object -$! files for a VMS system. We do not use the configure script, since we -$! do not have /bin/sh to execute it. -$! -$! Note: Only this script contains vax-vms and alpha-vms support, but vax-vms -$! is no longer supported. -$! -$! -$ gas_host="vms" -$ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2 -$ arch = f$element(arch_indx,"|","|VAX|Alpha|") -$ if arch.eqs."VAX" -$ then -$ cpu_type="vax" -$ obj_format="vms" -$ atof="vax" -$ else -$ cpu_type="alpha" -$ obj_format="evax" -$ atof="ieee" -$ endif -$ emulation="generic" -$! -$ DELETE = "delete/noConfirm" -$ ECHO = "write sys$output" -$! -$! Target specific information -$ call make "targ-cpu.h" "[.config]tc-''cpu_type'.h" -$ call make "targ-env.h" "[.config]te-''emulation'.h" -$! -$! Code to handle the object file format. -$ call make "obj-format.h" "[.config]obj-''obj_format'.h" -$! -$! (not currently used for vax or alpha) -$ call make "itbl-cpu.h" "[.config]itbl-''cpu_type'.h" -$! -$! -$! Create the file version.opt, which helps identify the executable. -$! -$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$ -$search CONFIGURE.IN "AM_INIT_AUTOMAKE"/Exact/Output=config-gas-tmp.tmp -$open ifile$ config-gas-tmp.tmp -$read ifile$ line -$close ifile$ -$DELETE config-gas-tmp.tmp;* -$! Discard "AM_INIT_AUTOMAKE(gas, " and ")" parts. -$ijk=f$locate(",",line)+2 -$line=f$extract(ijk,f$length(line)-ijk,line) -$ijk=f$locate(")",line) -$line=f$extract(0,ijk,line) -$! -$ if f$search("version.opt").nes."" then DELETE version.opt;* -$copy _NL: version.opt -$open/Append ifile$ version.opt -$write ifile$ "identification="+""""+line+"""" -$close ifile$ -$! -$! Now write config.h. -$! -$ if f$search("config.h").nes."" then DELETE config.h;* -$copy _NL: config.h -$open/Append ifile$ config.h -$write ifile$ "/* config.h. Generated by config-gas.com. */ -$write ifile$ "#ifndef VERSION" -$write ifile$ "#define VERSION """,line,"""" -$write ifile$ "#endif" -$write ifile$ "/*--*/" -$if arch .eqs. "VAX" -$then -$append [.config]vms-conf.h ifile$: -$else -$ append [.config]vms-a-conf.h ifile$: -$endif -$close ifile$ -$ECHO "Created config.h." -$! -$! Check for, and possibly make, header file . -$! -$ if f$search("tmp-chk-h.*").nes."" then DELETE tmp-chk-h.*;* -$!can't use simple `#include HDR' with `gcc /Define="HDR="' -$!because the 2.6.[0-3] preprocessor handles it wrong (VMS-specific gcc bug) -$ create tmp-chk-h.c -int tmp_chk_h; /* guarantee non-empty output */ -#ifdef HAVE_STDIO_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_UNIXIO_H -#include -#endif -#ifdef HAVE_UNIXLIB_H -#include -#endif -$ on warning then continue -$ CHECK = "call tmp_chk_h" -$ CHECK "HAVE_STDIO_H" -$ if .not.$status -$ then type sys$input: - -? could not compile . - - If you're compiling with DEC C or VAX C, create config.status as an - empty file and start gnu make again. - - If you're compiling with GNU C, there is some setup problem and - gas configuration cannot proceed. - -$ DELETE tmp-chk-h.c;* -$ exit %x002C -$ endif -$! -$ CHECK "HAVE_UNISTD_H" -$ if .not.$status -$ then -$ if f$trnlnm("HFILE$").nes."" then close/noLog hfile$ -$ CHECK "HAVE_UNIXIO_H" -$ got_unixio = ($status .and. 1) -$ CHECK "HAVE_UNIXLIB_H" -$ got_unixlib = ($status .and. 1) -$ create []unistd.h !with rudimentary contents -/* substitute for building gas */ -#ifndef UNISTD_H -#define UNISTD_H - -$ open/Append hfile$ []unistd.h -$ if got_unixio -$ then write hfile$ "#include " -$ else append sys$input: hfile$: -/* some of the routines normally prototyped in */ -extern int creat(), open(), close(), read(), write(); -extern int access(), dup(), dup2(), fstat(), stat(); -extern long lseek(); -$ endif -$ write hfile$ "" -$ if got_unixlib -$ then write hfile$ "#include " -$ else append sys$input: hfile$: -/* some of the routines normally prototyped in */ -extern char *sbrk(), *getcwd(), *cuserid(); -extern int brk(), chdir(), chmod(), chown(), mkdir(); -extern unsigned getuid(), umask(); -$ endif -$ append sys$input: hfile$: - -#endif /*UNISTD_H*/ -$ close hfile$ -$ ECHO "Created ""[]unistd.h""." -$ endif !gcc '#include ' failed -$ DELETE tmp-chk-h.c;* -$ -$tmp_chk_h: subroutine -$ set noOn -$ hname = f$edit("<" + (p1 - "HAVE_" - "_H") + ".h>","LOWERCASE") -$ write sys$output "Checking for ''hname'." -$ if f$search("tmp-chk-h.obj").nes."" then DELETE tmp-chk-h.obj;* -$ define/noLog sys$error _NL: !can't use /User_Mode here due to gcc -$ define/noLog sys$output _NL: ! driver's use of multiple image activation -$ gcc /Include=([],[-.include]) /Define=("''p1'") tmp-chk-h.c -$!can't just check $status; gcc 2.6.[0-3] preprocessor doesn't set it correctly -$ ok = (($status.and.1).and.(f$search("tmp-chk-h.obj").nes."")) .or. %x10000000 -$ deassign sys$error !restore, more or less -$ deassign sys$output -$ if ok then DELETE tmp-chk-h.obj;* -$ exit ok -$ endsubroutine !tmp_chk_h -$ -$! -$! Done -$! -$ if f$search("config.status") .nes. "" then DELETE config.status;* -$ open/write cfile []config.status -$ write cfile "Links are now set up for use with a "+arch+" running VMS." -$ close cfile -$ type []config.status -$exit -$! -$! -$make: subroutine -$ if f$search(p1).nes."" then DELETE 'p1';* -$ create 'p1' -$ if f$trnlnm("IFILE$").nes."" then close/noLog ifile$ -$ open/Append ifile$ 'p1' -$ write ifile$ "#include ""''f$string(p2 - "[.config]")'""" -$ close ifile$ -$ ECHO "Created ''p1' for ''p2'." -$endsubroutine !make diff -uprN binutils-2.16.91.0.2/gas/config.in binutils-2.16.91.0.3/gas/config.in --- binutils-2.16.91.0.2/gas/config.in 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/config.in 2005-08-22 12:27:41.000000000 -0700 @@ -3,9 +3,6 @@ /* Define if using AIX 5.2 value for C_WEAKEXT. */ #undef AIX_WEAK_SUPPORT -/* Use BFD interface? */ -#undef BFD_ASSEMBLER - /* assert broken? */ #undef BROKEN_ASSERT @@ -168,9 +165,6 @@ /* Using m88k COFF? */ #undef M88KCOFF -/* old COFF support? */ -#undef MANY_SEGMENTS - /* Default CPU for MIPS targets. */ #undef MIPS_CPU_STRING_DEFAULT @@ -219,9 +213,6 @@ /* generic support? */ #undef OBJ_MAYBE_GENERIC -/* HP300 support? */ -#undef OBJ_MAYBE_HP300 - /* IEEE support? */ #undef OBJ_MAYBE_IEEE diff -uprN binutils-2.16.91.0.2/gas/configure binutils-2.16.91.0.3/gas/configure --- binutils-2.16.91.0.2/gas/configure 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/configure 2005-08-22 12:27:41.000000000 -0700 @@ -856,7 +856,6 @@ Optional Features: --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) - --enable-bfd-assembler use BFD back end for writing object files targets alternative target configurations besides the primary --enable-commonbfdlib build shared BFD/opcodes/libiberty library --enable-werror treat compile warnings as errors @@ -3812,7 +3811,7 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 3815 "configure"' > conftest.$ac_ext + echo '#line 3814 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -4053,18 +4052,7 @@ exec 5>>./config.log -user_bfd_gas= -# Check whether --enable-bfd-assembler or --disable-bfd-assembler was given. -if test "${enable_bfd_assembler+set}" = set; then - enableval="$enable_bfd_assembler" - case "${enableval}" in - yes) need_bfd=yes user_bfd_gas=yes ;; - no) user_bfd_gas=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} given for bfd-assembler option" >&5 -echo "$as_me: error: bad value ${enableval} given for bfd-assembler option" >&2;} - { (exit 1); exit 1; }; } ;; -esac -fi; # Check whether --enable-targets or --disable-targets was given. +# Check whether --enable-targets or --disable-targets was given. if test "${enable_targets+set}" = set; then enableval="$enable_targets" case "${enableval}" in @@ -4648,10 +4636,6 @@ _ACEOF *opcodes*) shared_opcodes=true ;; *) shared_opcodes=false ;; esac - if test "${shared_opcodes}" = "true"; then - # A shared libopcodes must be linked against libbfd. - need_bfd=yes - fi ;; esac @@ -4730,17 +4714,8 @@ _ACEOF # See if we really can support this configuration with the emulation code. if test $this_target = $target ; then - primary_bfd_gas=$bfd_gas obj_format=$fmt te_file=$em - - if test $bfd_gas = no ; then - # Can't support other configurations this way. - break - fi - elif test $bfd_gas = no ; then - # Can't support this configuration. - break fi # From target name and format, produce a list of supported emulations. @@ -4841,28 +4816,6 @@ echo "$as_me: error: GAS does not have s { (exit 1); exit 1; }; } fi -case ${user_bfd_gas}-${primary_bfd_gas} in - yes-yes | no-no) - # We didn't override user's choice. - ;; - no-yes) - { echo "$as_me:$LINENO: WARNING: Use of BFD is required for ${target}; overriding config options." >&5 -echo "$as_me: WARNING: Use of BFD is required for ${target}; overriding config options." >&2;} - ;; - no-preferred) - primary_bfd_gas=no - ;; - *-preferred) - primary_bfd_gas=yes - ;; - yes-*) - primary_bfd_gas=yes - ;; - -*) - # User specified nothing. - ;; -esac - # Some COFF configurations want these random other flags set. case ${obj_format} in coff) @@ -4887,8 +4840,8 @@ _ACEOF esac # Getting this done right is going to be a bitch. Each configuration specified -# with --enable-targets=... should be checked for environment, format, cpu, and -# bfd_gas setting. +# with --enable-targets=... should be checked for environment, format, cpu +# setting. # # For each configuration, the necessary object file support code must be linked # in. This might be only one, it might be up to four. The necessary emulation @@ -4991,11 +4944,6 @@ cat >>confdefs.h <<\_ACEOF #define OBJ_MAYBE_GENERIC 1 _ACEOF ;; - hp300) -cat >>confdefs.h <<\_ACEOF -#define OBJ_MAYBE_HP300 1 -_ACEOF - ;; ieee) cat >>confdefs.h <<\_ACEOF #define OBJ_MAYBE_IEEE 1 @@ -5038,16 +4986,6 @@ cat >>confdefs.h <<_ACEOF _ACEOF -case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in - yes-*-coff) need_bfd=yes ;; - no-*-coff) need_bfd=yes - -cat >>confdefs.h <<\_ACEOF -#define MANY_SEGMENTS 1 -_ACEOF - ;; -esac - reject_dev_configs=yes case ${reject_dev_configs}-${dev} in @@ -5064,15 +5002,6 @@ esac -case "${primary_bfd_gas}" in - yes) -cat >>confdefs.h <<\_ACEOF -#define BFD_ASSEMBLER 1 -_ACEOF - - need_bfd=yes ;; -esac - # do we need the opcodes library? case "${need_opcodes}" in yes) @@ -5080,13 +5009,9 @@ yes) ;; esac -case "${need_bfd}" in -yes) - BFDLIB=../bfd/libbfd.la - BFDVER_H=../bfd/bfdver.h - ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h' - ;; -esac +BFDLIB=../bfd/libbfd.la +BFDVER_H=../bfd/bfdver.h +ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h' diff -uprN binutils-2.16.91.0.2/gas/configure.in binutils-2.16.91.0.3/gas/configure.in --- binutils-2.16.91.0.2/gas/configure.in 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/configure.in 2005-08-22 12:27:41.000000000 -0700 @@ -22,14 +22,6 @@ AM_INIT_AUTOMAKE(gas, ${BFD_VERSION}) AM_PROG_LIBTOOL -user_bfd_gas= -AC_ARG_ENABLE(bfd-assembler, -[ --enable-bfd-assembler use BFD back end for writing object files], -[case "${enableval}" in - yes) need_bfd=yes user_bfd_gas=yes ;; - no) user_bfd_gas=no ;; - *) AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;; -esac])dnl AC_ARG_ENABLE(targets, [ targets alternative target configurations besides the primary], [case "${enableval}" in @@ -277,10 +269,6 @@ changequote([,])dnl *opcodes*) shared_opcodes=true ;; *) shared_opcodes=false ;; esac - if test "${shared_opcodes}" = "true"; then - # A shared libopcodes must be linked against libbfd. - need_bfd=yes - fi ;; esac @@ -355,17 +343,8 @@ changequote([,])dnl # See if we really can support this configuration with the emulation code. if test $this_target = $target ; then - primary_bfd_gas=$bfd_gas obj_format=$fmt te_file=$em - - if test $bfd_gas = no ; then - # Can't support other configurations this way. - break - fi - elif test $bfd_gas = no ; then - # Can't support this configuration. - break fi # From target name and format, produce a list of supported emulations. @@ -459,27 +438,6 @@ if test ! -r ${srcdir}/config/obj-${obj_ AC_MSG_ERROR(GAS does not have support for object file format ${obj_format}) fi -case ${user_bfd_gas}-${primary_bfd_gas} in - yes-yes | no-no) - # We didn't override user's choice. - ;; - no-yes) - AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.) - ;; - no-preferred) - primary_bfd_gas=no - ;; - *-preferred) - primary_bfd_gas=yes - ;; - yes-*) - primary_bfd_gas=yes - ;; - -*) - # User specified nothing. - ;; -esac - # Some COFF configurations want these random other flags set. case ${obj_format} in coff) @@ -492,8 +450,8 @@ case ${obj_format} in esac # Getting this done right is going to be a bitch. Each configuration specified -# with --enable-targets=... should be checked for environment, format, cpu, and -# bfd_gas setting. +# with --enable-targets=... should be checked for environment, format, cpu +# setting. # # For each configuration, the necessary object file support code must be linked # in. This might be only one, it might be up to four. The necessary emulation @@ -536,7 +494,6 @@ if test `set . $formats ; shift ; echo $ ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF, 1, [ECOFF support?]) ;; elf) AC_DEFINE(OBJ_MAYBE_ELF, 1, [ELF support?]) ;; generic) AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;; - hp300) AC_DEFINE(OBJ_MAYBE_HP300, 1, [HP300 support?]) ;; ieee) AC_DEFINE(OBJ_MAYBE_IEEE, 1, [IEEE support?]) ;; som) AC_DEFINE(OBJ_MAYBE_SOM, 1, [SOM support?]) ;; esac @@ -560,12 +517,6 @@ AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIO AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION", [Default emulation.]) -case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in - yes-*-coff) need_bfd=yes ;; - no-*-coff) need_bfd=yes - AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;; -esac - reject_dev_configs=yes case ${reject_dev_configs}-${dev} in @@ -581,11 +532,6 @@ AC_SUBST(install_tooldir) AC_SUBST(atof) dnl AC_SUBST(emulation) -case "${primary_bfd_gas}" in - yes) AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?]) - need_bfd=yes ;; -esac - # do we need the opcodes library? case "${need_opcodes}" in yes) @@ -593,13 +539,9 @@ yes) ;; esac -case "${need_bfd}" in -yes) - BFDLIB=../bfd/libbfd.la - BFDVER_H=../bfd/bfdver.h - ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h' - ;; -esac +BFDLIB=../bfd/libbfd.la +BFDVER_H=../bfd/bfdver.h +ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h' AC_SUBST(BFDLIB) AC_SUBST(OPCODES_LIB) diff -uprN binutils-2.16.91.0.2/gas/configure.tgt binutils-2.16.91.0.3/gas/configure.tgt --- binutils-2.16.91.0.2/gas/configure.tgt 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/configure.tgt 2005-08-22 12:27:41.000000000 -0700 @@ -11,7 +11,6 @@ # cpu_type canonical gas cpu type; identifies the config/tc-* files # fmt output format; identifies the config/obj-* files # em emulation; identifies the config/te-* files -# bfd_gas set to "yes" if BFD_ASSEMBLER is required # Optional output shell variables; these are not always set: # arch the default architecture; sets DEFAULT_ARCH on some systems @@ -50,7 +49,6 @@ case ${cpu} in m680[012346]0) cpu_type=m68k ;; m6811|m6812|m68hc12) cpu_type=m68hc11 ;; m683??) cpu_type=m68k ;; - m8*) cpu_type=m88k ;; maxq) cpu_type=maxq ;; mips*el) cpu_type=mips endian=little ;; mips*) cpu_type=mips endian=big ;; @@ -90,12 +88,6 @@ esac generic_target=${cpu_type}-$vendor-$os # Note: This table is alpha-sorted, please try to keep it that way. case ${generic_target} in - a29k-*-coff) fmt=coff ;; - a29k-amd-udi) fmt=coff ;; - a29k-amd-ebmon) fmt=coff ;; - a29k-nyu-sym1) fmt=coff ;; - a29k-*-vxworks*) fmt=coff ;; - alpha-*-*vms*) fmt=evax ;; alpha-*-osf*) fmt=ecoff ;; alpha-*-linuxecoff*) fmt=ecoff ;; @@ -161,11 +153,7 @@ case ${generic_target} in hppa-*-bsd*) fmt=som em=hppa ;; hppa-*-hiux*) fmt=som em=hppa ;; - h8300-*-rtemscoff*) fmt=coff ;; - h8300-*-coff) fmt=coff ;; h8300-*-elf | h8300-*-rtems*) fmt=elf ;; - h8500-*-rtems*) fmt=coff ;; - h8500-*-coff) fmt=coff ;; i370-*-elf* | i370-*-linux*) fmt=elf ;; @@ -210,7 +198,6 @@ case ${generic_target} in i386-*-vsta) fmt=aout ;; i386-*-msdosdjgpp* \ | i386-*-go32*) fmt=coff em=go32 ;; - i386-*-rtemself*) fmt=elf ;; i386-*-rtems*) fmt=elf ;; i386-*-gnu*) fmt=elf ;; i386-*-mach*) fmt=aout em=mach ;; @@ -226,13 +213,6 @@ case ${generic_target} in i860-*-*) fmt=elf endian=little ;; - i960-*-bout) fmt=bout ;; - i960-*-coff) fmt=coff em=ic960 ;; - i960-*-rtems*) fmt=coff em=ic960 ;; - i960-*-nindy*) fmt=bout ;; - i960-*-vxworks5.0) fmt=bout ;; - i960-*-vxworks5.*) fmt=coff em=ic960 ;; - i960-*-vxworks*) fmt=bout ;; i960-*-elf*) fmt=elf ;; ia64-*-elf*) fmt=elf ;; @@ -253,31 +233,17 @@ case ${generic_target} in m68hc11-*-* | m6811-*-*) fmt=elf ;; m68hc12-*-* | m6812-*-*) fmt=elf ;; - m68k-*-vxworks*) fmt=aout em=sun3 ;; - m68k-ericsson-ose) fmt=aout em=sun3 ;; - m68k-*-sunos*) fmt=aout em=sun3 ;; - m68k-motorola-sysv*) fmt=coff em=delta ;; - m68k-bull-sysv3*) fmt=coff em=dpx2 ;; - m68k-apollo-*) fmt=coff em=apollo ;; m68k-*-elf*) fmt=elf ;; m68k-*-sysv4*) fmt=elf em=svr4 ;; - m68k-*-sysv*) fmt=coff ;; - m68k-*-coff | m68k-*-rtemscoff*) fmt=coff ;; m68k-*-rtems*) fmt=elf ;; - m68k-*-hpux*) fmt=hp300 em=hp300 ;; - m68k-*-linux*aout*) fmt=aout em=linux ;; m68k-*-linux-*) fmt=elf em=linux ;; m68k-*-uclinux*) fmt=elf ;; m68k-*-gnu*) fmt=elf ;; m68k-*-netbsdelf*) fmt=elf em=nbsd ;; m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; - m68k-apple-aux*) fmt=coff em=aux ;; m68k-*-psos*) fmt=elf em=psos;; - m88k-motorola-sysv3*) fmt=coff em=delt88 ;; - m88k-*-coff*) fmt=coff ;; - maxq-*-coff) fmt=coff bfd_gas=yes ;; mcore-*-elf) fmt=elf ;; @@ -321,7 +287,6 @@ case ${generic_target} in openrisc-*-*) fmt=elf ;; or32-*-rtems*) fmt=elf ;; - or32-*-coff) fmt=coff ;; or32-*-elf) fmt=elf ;; pj*) fmt=elf ;; @@ -364,7 +329,6 @@ case ${generic_target} in shle*-*-kaos*) fmt=elf ;; sh64-*-elf*) fmt=elf ;; - sparc-*-rtemself*) fmt=elf ;; sparc-*-rtems*) fmt=elf ;; sparc-*-sunos4*) fmt=aout em=sun3 ;; sparc-*-aout | sparc*-*-vxworks*) fmt=aout em=sparcaout ;; @@ -393,19 +357,14 @@ case ${generic_target} in tic30-*-*coff*) fmt=coff bfd_gas=yes ;; tic4x-*-* | c4x-*-*) fmt=coff bfd_gas=yes ;; tic54x-*-* | c54x*-*-*) fmt=coff bfd_gas=yes need_libm=yes;; - tic80-*-*) fmt=coff ;; v850-*-*) fmt=elf ;; v850e-*-*) fmt=elf ;; v850ea-*-*) fmt=elf ;; vax-*-netbsdelf*) fmt=elf em=nbsd ;; - vax-*-netbsd*) fmt=aout em=nbsd ;; - vax-*-bsd* | vax-*-ultrix*) fmt=aout ;; vax-*-linux-*) fmt=elf em=linux ;; - w65-*-*) fmt=coff ;; - xscale-*-coff) fmt=coff ;; xscale-*-elf) fmt=elf ;; @@ -417,7 +376,6 @@ case ${generic_target} in *-*-aout | *-*-scout) fmt=aout ;; *-*-freebsd* | *-*-kfreebsd*-gnu) fmt=elf em=freebsd ;; - *-*-nindy*) fmt=bout ;; *-*-bsd*) fmt=aout em=sun3 ;; *-*-generic) fmt=generic ;; *-*-xray | *-*-hms) fmt=coff ;; @@ -438,3 +396,8 @@ case ${fmt} in bfd_gas=yes ;; esac + +if test $bfd_gas != yes; then + echo This target is no longer supported in gas + exit 1 +fi diff -uprN binutils-2.16.91.0.2/gas/doc/all.texi binutils-2.16.91.0.3/gas/doc/all.texi --- binutils-2.16.91.0.2/gas/doc/all.texi 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/all.texi 2005-08-22 12:27:43.000000000 -0700 @@ -20,14 +20,12 @@ @c Object formats of interest @c ========================== @set AOUT -@set BOUT @set COFF @set ELF @set SOM @c CPUs of interest @c ================ -@set A29K @set ALPHA @set ARC @set ARM @@ -35,7 +33,6 @@ @set D10V @set D30V @set H8/300 -@set H8/500 @set HPPA @set I370 @set I80386 @@ -47,7 +44,6 @@ @set M32R @set M68HC11 @set M680X0 -@set M880X0 @set MCORE @set MIPS @set MMIX @@ -60,7 +56,6 @@ @set TIC54X @set V850 @set VAX -@set VXWORKS @set XTENSA @set Z8000 diff -uprN binutils-2.16.91.0.2/gas/doc/as.texinfo binutils-2.16.91.0.3/gas/doc/as.texinfo --- binutils-2.16.91.0.2/gas/doc/as.texinfo 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/as.texinfo 2005-08-22 12:27:43.000000000 -0700 @@ -45,9 +45,6 @@ @ifset H8/300 @set H8 @end ifset -@ifset H8/500 -@set H8 -@end ifset @ifset SH @set H8 @end ifset @@ -239,9 +236,6 @@ gcc(1), ld(1), and the Info entries for @c @c Target dependent options are listed below. Keep the list sorted. @c Add an empty line for separation. -@ifset A29K -@c am29k has no machine-dependent assembler options -@end ifset @ifset ALPHA @emph{Target Alpha options:} @@ -1177,10 +1171,6 @@ For information on the H8/300 machine in Series Programming Manual}. For the H8/300H, see @cite{H8/300H Series Programming Manual} (Renesas). @end ifset -@ifset H8/500 -For information on the H8/500 machine instruction set, see @cite{H8/500 -Series Programming Manual} (Renesas M21T001). -@end ifset @ifset SH For information on the Renesas (formerly Hitachi) / SuperH SH machine instruction set, see @cite{SH-Microcomputer User's Manual} (Renesas) or @@ -1270,10 +1260,6 @@ For the @value{TARGET} target, @command{ @value{OBJ-NAME} format object files. @end ifclear @c The following should exhaust all configs that set MULTI-OBJ, ideally -@ifset A29K -On the @value{TARGET}, @command{@value{AS}} can be configured to produce either -@code{a.out} or COFF format object files. -@end ifset @ifset I960 On the @value{TARGET}, @command{@value{AS}} can be configured to produce either @code{b.out} or COFF format object files. @@ -1440,14 +1426,6 @@ the current input file is used. If a lo @ifset GENERIC (@pxref{Line,,@code{.line}}) @end ifset -@ifclear GENERIC -@ifclear A29K -(@pxref{Line,,@code{.line}}) -@end ifclear -@ifset A29K -(@pxref{Ln,,@code{.ln}}) -@end ifset -@end ifclear then it is used to calculate the number printed, otherwise the actual line in the current source file is printed. The message text is intended to be self explanatory (in the grand Unix @@ -2087,9 +2065,6 @@ This means you may not nest these commen @cindex line comment character Anything from the @dfn{line comment} character to the next newline is considered a comment and is ignored. The line comment character is -@ifset A29K -@samp{;} for the AMD 29K family; -@end ifset @ifset ARC @samp{;} on the ARC; @end ifset @@ -2099,9 +2074,6 @@ is considered a comment and is ignored. @ifset H8/300 @samp{;} for the H8/300 family; @end ifset -@ifset H8/500 -@samp{!} for the H8/500 family; -@end ifset @ifset HPPA @samp{;} for the HPPA; @end ifset @@ -2141,9 +2113,6 @@ is considered a comment and is ignored. @ifset M68HC11 @samp{#} on the 68HC11 and 68HC12; @end ifset -@ifset M880X0 -@samp{;} on the M880x0; -@end ifset @ifset VAX @samp{#} on the Vax; @end ifset @@ -2236,12 +2205,6 @@ the preceding statement. Newlines and s constants are an exception: they do not end statements. @end ifclear @ifset abnormal-separator -@ifset A29K -A @dfn{statement} ends at a newline character (@samp{\n}) or an ``at'' -sign (@samp{@@}). The newline or at sign is considered part of the -preceding statement. Newlines and at signs within character constants -are an exception: they do not end statements. -@end ifset @ifset HPPA A @dfn{statement} ends at a newline character (@samp{\n}) or an exclamation point (@samp{!}). The newline or exclamation point is considered part of the @@ -2250,9 +2213,7 @@ constants are an exception: they do not @end ifset @ifset H8 A @dfn{statement} ends at a newline character (@samp{\n}); or (for the -H8/300) a dollar sign (@samp{$}); or (for the -Renesas-SH or the -H8/500) a semicolon +H8/300) a dollar sign (@samp{$}); or (for the Renesas-SH) a semicolon (@samp{;}). The newline or separator character is considered part of the preceding statement. Newlines and separators within character constants are an exception: they do not end statements. @@ -2471,12 +2432,9 @@ grave accent. A newline (or semicolon @samp{;}) @end ifclear @ifset abnormal-separator -@ifset A29K -(or at sign @samp{@@}) -@end ifset @ifset H8 (or dollar sign @samp{$}, for the H8/300; or semicolon @samp{;} for the -Renesas SH or H8/500) +Renesas SH) @end ifset @end ifset @end ifclear @@ -2579,8 +2537,7 @@ A letter, to tell @command{@value{AS}} t 4.2 assembler seems to allow any of @samp{defghDEFGH}.) @end ignore -On the H8/300, H8/500, -Renesas / SuperH SH, +On the H8/300, Renesas / SuperH SH, and AMD 29K architectures, the letter must be one of the letters @samp{DFPRSX} (in upper or lower case). @@ -2593,9 +2550,6 @@ one of the letters @samp{DFT} (in upper On the HPPA architecture, the letter must be @samp{E} (upper case only). @end ifset @ifclear GENERIC -@ifset A29K -One of the letters @samp{DFPRSX} (in upper or lower case). -@end ifset @ifset ARC One of the letters @samp{DFRS} (in upper or lower case). @end ifset @@ -2716,8 +2670,7 @@ run-time addresses to sections is called the task of adjusting mentions of object-file addresses so they refer to the proper run-time addresses. @ifset H8 -For the H8/300 and H8/500, -and for the Renesas / SuperH SH, +For the H8/300, and for the Renesas / SuperH SH, @command{@value{AS}} pads sections if needed to ensure they end on a word (sixteen bit) boundary. @end ifset @@ -3009,7 +2962,7 @@ of @command{@value{AS}}.) @end ifset @ifclear GENERIC @ifset H8 -On the H8/300 and H8/500 platforms, each subsection is zero-padded to a word +On the H8/300 platform, each subsection is zero-padded to a word boundary (two bytes). The same is true on the Renesas SH. @end ifset @@ -3021,10 +2974,6 @@ The same is true on the Renesas SH. @c these paragraphs might need to vanish from this manual, and be @c discussed in BFD chapter of binutils (or some such). @end ifset -@ifset A29K -On the AMD 29K family, no particular padding is added to section or -subsection sizes; @value{AS} forces no alignment on this platform. -@end ifset @end ifclear Subsections appear in your object file in numeric order, lowest numbered @@ -3170,15 +3119,10 @@ noted in @ref{Machine Dependencies}. Th string of digits, letters, dollar signs (unless otherwise noted in @ref{Machine Dependencies}), and underscores. @end ifclear -@ifset A29K -For the AMD 29K family, @samp{?} is also allowed in the -body of a symbol name, though not at its beginning. -@end ifset - @ifset SPECIAL-SYMS @ifset H8 Symbol names begin with a letter or with one of @samp{._}. On the -Renesas SH or the H8/500, you can also use @code{$} in symbol names. That +Renesas SH you can also use @code{$} in symbol names. That character may be followed by any string of digits, letters, dollar signs (save on the H8/300), and underscores. @end ifset @@ -3300,11 +3244,6 @@ directive. Thus, the expression @samp{. @ifclear no-space-dir @samp{.space 4}. @end ifclear -@ifset no-space-dir -@ifset A29K -@samp{.block 4}. -@end ifset -@end ifset @node Symbol Attributes @section Symbol Attributes @@ -3937,7 +3876,7 @@ required alignment; this can be useful i with no-op instructions when appropriate. The way the required alignment is specified varies from system to system. -For the a29k, arc, hppa, i386 using ELF, i860, iq2000, m68k, m88k, or32, +For the arc, hppa, i386 using ELF, i860, iq2000, m68k, or32, s390, sparc, tic4x, tic80 and xtensa, the first expression is the alignment request in bytes. For example @samp{.align 8} advances the location counter until it is a multiple of 8. If the location counter @@ -4329,10 +4268,6 @@ recognized whether or not it is surround to specify an empty file name, you must give the quotes--@code{""}. This statement may go away in future: it is only recognized to be compatible with old @command{@value{AS}} programs. -@ifset A29K -In some configurations of @command{@value{AS}}, @code{.file} has already been -removed to avoid conflicts with other assemblers. @xref{Machine Dependencies}. -@end ifset @end ifclear @node Fill @@ -4588,7 +4523,7 @@ of target the assembly is for. @ifclear GENERIC @ifset H8 -On the H8/500 and most forms of the H8/300, @code{.int} emits 16-bit +On most forms of the H8/300, @code{.int} emits 16-bit integers. On the H8/300H and the Renesas SH, however, @code{.int} emits 32-bit integers. @end ifset @@ -4724,12 +4659,6 @@ reported as on logical line number @var{ @command{@value{AS}} will no longer support this directive: it is recognized only for compatibility with existing assembler programs. -@ifset GENERIC -@ifset A29K -@emph{Warning:} In the AMD29K configuration of @value{AS}, this command is -not available; use the synonym @code{.ln} in that context. -@end ifset -@end ifset @end ifset @ifclear no-line-dir @@ -5625,21 +5554,6 @@ for a summary. @end ifset @end ifclear -@ifset A29K -@ifclear GENERIC -@node Space -@section @code{.space} -@cindex @code{space} directive -@end ifclear -On the AMD 29K, this directive is ignored; it is accepted for -compatibility with other AMD 29K assemblers. - -@quotation -@emph{Warning:} In most versions of the @sc{gnu} assembler, the directive -@code{.space} has the effect of @code{.block} @xref{Machine Dependencies}. -@end quotation -@end ifset - @ifset have-stabs @node Stab @section @code{.stabd, .stabn, .stabs} @@ -6088,9 +6002,6 @@ include details on any machine's instruc subject, see the hardware manufacturer's manual. @menu -@ifset A29K -* AMD29K-Dependent:: AMD 29K Dependent Features -@end ifset @ifset ALPHA * Alpha-Dependent:: Alpha Dependent Features @end ifset @@ -6112,9 +6023,6 @@ subject, see the hardware manufacturer's @ifset H8/300 * H8/300-Dependent:: Renesas H8/300 Dependent Features @end ifset -@ifset H8/500 -* H8/500-Dependent:: Renesas H8/500 Dependent Features -@end ifset @ifset HPPA * HPPA-Dependent:: HPPA Dependent Features @end ifset @@ -6148,9 +6056,6 @@ subject, see the hardware manufacturer's @ifset M68HC11 * M68HC11-Dependent:: M68HC11 and 68HC12 Dependent Features @end ifset -@ifset M880X0 -* M88K-Dependent:: M880x0 Dependent Features -@end ifset @ifset MIPS * MIPS-Dependent:: MIPS Dependent Features @end ifset @@ -6204,10 +6109,6 @@ subject, see the hardware manufacturer's @c node and sectioning commands; hence the repetition of @chapter BLAH @c in both conditional blocks. -@ifset A29K -@include c-a29k.texi -@end ifset - @ifset ALPHA @include c-alpha.texi @end ifset @@ -6236,7 +6137,6 @@ family. @menu * H8/300-Dependent:: Renesas H8/300 Dependent Features -* H8/500-Dependent:: Renesas H8/500 Dependent Features * SH-Dependent:: Renesas SH Dependent Features @end menu @lowersections @@ -6255,10 +6155,6 @@ family. @include c-h8300.texi @end ifset -@ifset H8/500 -@include c-h8500.texi -@end ifset - @ifset HPPA @include c-hppa.texi @end ifset @@ -6303,10 +6199,6 @@ family. @include c-m68hc11.texi @end ifset -@ifset M880X0 -@include c-m88k.texi -@end ifset - @ifset MIPS @include c-mips.texi @end ifset @@ -6616,8 +6508,8 @@ Keith Knowles at the Open Software Found (which hasn't been merged in yet). Ralph Campbell worked with the MIPS code to support a.out format. -Support for the Zilog Z8k and Renesas H8/300 and H8/500 processors (tc-z8k, -tc-h8300, tc-h8500), and IEEE 695 object file format (obj-ieee), was written by +Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k, +tc-h8300), and IEEE 695 object file format (obj-ieee), was written by Steve Chamberlain of Cygnus Support. Steve also modified the COFF back end to use BFD for some low-level operations, for use with the H8/300 and AMD 29k targets. diff -uprN binutils-2.16.91.0.2/gas/doc/c-a29k.texi binutils-2.16.91.0.3/gas/doc/c-a29k.texi --- binutils-2.16.91.0.2/gas/doc/c-a29k.texi 2001-03-09 11:17:14.000000000 -0800 +++ binutils-2.16.91.0.3/gas/doc/c-a29k.texi 1969-12-31 16:00:00.000000000 -0800 @@ -1,182 +0,0 @@ -@c Copyright 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. -@c This is part of the GAS manual. -@c For copying conditions, see the file as.texinfo. -@ifset GENERIC -@page -@node AMD29K-Dependent -@chapter AMD 29K Dependent Features -@end ifset -@ifclear GENERIC -@node Machine Dependencies -@chapter AMD 29K Dependent Features -@end ifclear - -@cindex AMD 29K support -@cindex 29K support -@menu -* AMD29K Options:: Options -* AMD29K Syntax:: Syntax -* AMD29K Floating Point:: Floating Point -* AMD29K Directives:: AMD 29K Machine Directives -* AMD29K Opcodes:: Opcodes -@end menu - -@node AMD29K Options -@section Options -@cindex AMD 29K options (none) -@cindex options for AMD29K (none) -@code{@value{AS}} has no additional command-line options for the AMD -29K family. - -@node AMD29K Syntax -@section Syntax -@menu -* AMD29K-Macros:: Macros -* AMD29K-Chars:: Special Characters -* AMD29K-Regs:: Register Names -@end menu - -@node AMD29K-Macros -@subsection Macros - -@cindex Macros, AMD 29K -@cindex AMD 29K macros -The macro syntax used on the AMD 29K is like that described in the AMD -29K Family Macro Assembler Specification. Normal @code{@value{AS}} -macros should still work. - -@node AMD29K-Chars -@subsection Special Characters - -@cindex line comment character, AMD 29K -@cindex AMD 29K line comment character -@samp{;} is the line comment character. - -@cindex identifiers, AMD 29K -@cindex AMD 29K identifiers -The character @samp{?} is permitted in identifiers (but may not begin -an identifier). - -@node AMD29K-Regs -@subsection Register Names - -@cindex AMD 29K register names -@cindex register names, AMD 29K -General-purpose registers are represented by predefined symbols of the -form @samp{GR@var{nnn}} (for global registers) or @samp{LR@var{nnn}} -(for local registers), where @var{nnn} represents a number between -@code{0} and @code{127}, written with no leading zeros. The leading -letters may be in either upper or lower case; for example, @samp{gr13} -and @samp{LR7} are both valid register names. - -You may also refer to general-purpose registers by specifying the -register number as the result of an expression (prefixed with @samp{%%} -to flag the expression as a register number): -@smallexample -%%@var{expression} -@end smallexample -@noindent ----where @var{expression} must be an absolute expression evaluating to a -number between @code{0} and @code{255}. The range [0, 127] refers to -global registers, and the range [128, 255] to local registers. - -@cindex special purpose registers, AMD 29K -@cindex AMD 29K special purpose registers -@cindex protected registers, AMD 29K -@cindex AMD 29K protected registers -In addition, @code{@value{AS}} understands the following protected -special-purpose register names for the AMD 29K family: - -@smallexample - vab chd pc0 - ops chc pc1 - cps rbp pc2 - cfg tmc mmu - cha tmr lru -@end smallexample - -These unprotected special-purpose register names are also recognized: -@smallexample - ipc alu fpe - ipa bp inte - ipb fc fps - q cr exop -@end smallexample - -@node AMD29K Floating Point -@section Floating Point - -@cindex floating point, AMD 29K (@sc{ieee}) -@cindex AMD 29K floating point (@sc{ieee}) -The AMD 29K family uses @sc{ieee} floating-point numbers. - -@node AMD29K Directives -@section AMD 29K Machine Directives - -@cindex machine directives, AMD 29K -@cindex AMD 29K machine directives -@table @code -@cindex @code{block} directive, AMD 29K -@item .block @var{size} , @var{fill} -This directive emits @var{size} bytes, each of value @var{fill}. Both -@var{size} and @var{fill} are absolute expressions. If the comma -and @var{fill} are omitted, @var{fill} is assumed to be zero. - -In other versions of the @sc{gnu} assembler, this directive is called -@samp{.space}. -@end table - -@table @code -@cindex @code{cputype} directive, AMD 29K -@item .cputype -This directive is ignored; it is accepted for compatibility with other -AMD 29K assemblers. - -@cindex @code{file} directive, AMD 29K -@item .file -This directive is ignored; it is accepted for compatibility with other -AMD 29K assemblers. - -@quotation -@emph{Warning:} in other versions of the @sc{gnu} assembler, @code{.file} is -used for the directive called @code{.app-file} in the AMD 29K support. -@end quotation - -@cindex @code{line} directive, AMD 29K -@item .line -This directive is ignored; it is accepted for compatibility with other -AMD 29K assemblers. - -@ignore -@c since we're ignoring .lsym... -@cindex @code{reg} directive, AMD 29K -@item .reg @var{symbol}, @var{expression} -@code{.reg} has the same effect as @code{.lsym}; @pxref{Lsym,,@code{.lsym}}. -@end ignore - -@cindex @code{sect} directive, AMD 29K -@item .sect -This directive is ignored; it is accepted for compatibility with other -AMD 29K assemblers. - -@cindex @code{use} directive, AMD 29K -@item .use @var{section name} -Establishes the section and subsection for the following code; -@var{section name} may be one of @code{.text}, @code{.data}, -@code{.data1}, or @code{.lit}. With one of the first three @var{section -name} options, @samp{.use} is equivalent to the machine directive -@var{section name}; the remaining case, @samp{.use .lit}, is the same as -@samp{.data 200}. -@end table - -@node AMD29K Opcodes -@section Opcodes - -@cindex AMD 29K opcodes -@cindex opcodes for AMD 29K -@code{@value{AS}} implements all the standard AMD 29K opcodes. No -additional pseudo-instructions are needed on this family. - -For information on the 29K machine instruction set, see @cite{Am29000 -User's Manual}, Advanced Micro Devices, Inc. - diff -uprN binutils-2.16.91.0.2/gas/doc/c-h8500.texi binutils-2.16.91.0.3/gas/doc/c-h8500.texi --- binutils-2.16.91.0.2/gas/doc/c-h8500.texi 2005-04-09 12:03:10.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/c-h8500.texi 1969-12-31 16:00:00.000000000 -0800 @@ -1,273 +0,0 @@ -@c Copyright (C) 1991, 1992, 1993, 1994, 1995, 2003 -@c Free Software Foundation, Inc. -@c This is part of the GAS manual. -@c For copying conditions, see the file as.texinfo. -@page -@node H8/500-Dependent -@chapter H8/500 Dependent Features - -@cindex H8/500 support -@menu -* H8/500 Options:: Options -* H8/500 Syntax:: Syntax -* H8/500 Floating Point:: Floating Point -* H8/500 Directives:: H8/500 Machine Directives -* H8/500 Opcodes:: Opcodes -@end menu - -@node H8/500 Options -@section Options - -@cindex H8/500 options (none) -@cindex options, H8/500 (none) -@code{@value{AS}} has no additional command-line options for the -Renesas (formerly Hitachi) H8/500 family. - -@node H8/500 Syntax -@section Syntax - -@menu -* H8/500-Chars:: Special Characters -* H8/500-Regs:: Register Names -* H8/500-Addressing:: Addressing Modes -@end menu - -@node H8/500-Chars -@subsection Special Characters - -@cindex line comment character, H8/500 -@cindex H8/500 line comment character -@samp{!} is the line comment character. - -@cindex line separator, H8/500 -@cindex statement separator, H8/500 -@cindex H8/500 line separator -@samp{;} can be used instead of a newline to separate statements. - -@cindex symbol names, @samp{$} in -@cindex @code{$} in symbol names -Since @samp{$} has no special meaning, you may use it in symbol names. - -@node H8/500-Regs -@subsection Register Names - -@cindex H8/500 registers -@cindex registers, H8/500 -You can use the predefined symbols @samp{r0}, @samp{r1}, @samp{r2}, -@samp{r3}, @samp{r4}, @samp{r5}, @samp{r6}, and @samp{r7} to refer to -the H8/500 registers. - -The H8/500 also has these control registers: - -@table @code -@item cp -code pointer - -@item dp -data pointer - -@item bp -base pointer - -@item tp -stack top pointer - -@item ep -extra pointer - -@item sr -status register - -@item ccr -condition code register -@end table - -All registers are 16 bits long. To represent 32 bit numbers, use two -adjacent registers; for distant memory addresses, use one of the segment -pointers (@code{cp} for the program counter; @code{dp} for -@code{r0}--@code{r3}; @code{ep} for @code{r4} and @code{r5}; and -@code{tp} for @code{r6} and @code{r7}. - -@node H8/500-Addressing -@subsection Addressing Modes - -@cindex addressing modes, H8/500 -@cindex H8/500 addressing modes -@value{AS} understands the following addressing modes for the H8/500: -@table @code -@item R@var{n} -Register direct - -@item @@R@var{n} -Register indirect - -@item @@(d:8, R@var{n}) -Register indirect with 8 bit signed displacement - -@item @@(d:16, R@var{n}) -Register indirect with 16 bit signed displacement - -@item @@-R@var{n} -Register indirect with pre-decrement - -@item @@R@var{n}+ -Register indirect with post-increment - -@item @@@var{aa}:8 -8 bit absolute address - -@item @@@var{aa}:16 -16 bit absolute address - -@item #@var{xx}:8 -8 bit immediate - -@item #@var{xx}:16 -16 bit immediate -@end table - -@node H8/500 Floating Point -@section Floating Point - -@cindex floating point, H8/500 (@sc{ieee}) -@cindex H8/500 floating point (@sc{ieee}) -The H8/500 family has no hardware floating point, but the @code{.float} -directive generates @sc{ieee} floating-point numbers for compatibility -with other development tools. - -@node H8/500 Directives -@section H8/500 Machine Directives - -@cindex H8/500 machine directives (none) -@cindex machine directives, H8/500 (none) -@cindex @code{word} directive, H8/500 -@cindex @code{int} directive, H8/500 -@code{@value{AS}} has no machine-dependent directives for the H8/500. -However, on this platform the @samp{.int} and @samp{.word} directives -generate 16-bit numbers. - -@node H8/500 Opcodes -@section Opcodes - -@cindex H8/500 opcode summary -@cindex opcode summary, H8/500 -@cindex mnemonics, H8/500 -@cindex instruction summary, H8/500 -For detailed information on the H8/500 machine instruction set, see -@cite{H8/500 Series Programming Manual} (Renesas M21T001). - -@code{@value{AS}} implements all the standard H8/500 opcodes. No additional -pseudo-instructions are needed on this family. - -@ifset SMALL -@c this table, due to the multi-col faking and hardcoded order, looks silly -@c except in smallbook. See comments below "@set SMALL" near top of this file. - -The following table summarizes H8/500 opcodes and their operands: - -@c Use @group if it ever works, instead of @page -@page -@smallexample -@i{Legend:} -abs8 @r{8-bit absolute address} -abs16 @r{16-bit absolute address} -abs24 @r{24-bit absolute address} -crb @r{@code{ccr}, @code{br}, @code{ep}, @code{dp}, @code{tp}, @code{dp}} -disp8 @r{8-bit displacement} -ea @r{@code{rn}, @code{@@rn}, @code{@@(d:8, rn)}, @code{@@(d:16, rn)},} - @r{@code{@@-rn}, @code{@@rn+}, @code{@@aa:8}, @code{@@aa:16},} - @r{@code{#xx:8}, @code{#xx:16}} -ea_mem @r{@code{@@rn}, @code{@@(d:8, rn)}, @code{@@(d:16, rn)},} - @r{@code{@@-rn}, @code{@@rn+}, @code{@@aa:8}, @code{@@aa:16}} -ea_noimm @r{@code{rn}, @code{@@rn}, @code{@@(d:8, rn)}, @code{@@(d:16, rn)},} - @r{@code{@@-rn}, @code{@@rn+}, @code{@@aa:8}, @code{@@aa:16}} -fp r6 -imm4 @r{4-bit immediate data} -imm8 @r{8-bit immediate data} -imm16 @r{16-bit immediate data} -pcrel8 @r{8-bit offset from program counter} -pcrel16 @r{16-bit offset from program counter} -qim @r{@code{-2}, @code{-1}, @code{1}, @code{2}} -rd @r{any register} -rs @r{a register distinct from rd} -rlist @r{comma-separated list of registers in parentheses;} - @r{register ranges @code{rd-rs} are allowed} -sp @r{stack pointer (@code{r7})} -sr @r{status register} -sz @r{size; @samp{.b} or @samp{.w}. If omitted, default @samp{.w}} - -ldc[.b] ea,crb bcc[.w] pcrel16 -ldc[.w] ea,sr bcc[.b] pcrel8 -add[:q] sz qim,ea_noimm bhs[.w] pcrel16 -add[:g] sz ea,rd bhs[.b] pcrel8 -adds sz ea,rd bcs[.w] pcrel16 -addx sz ea,rd bcs[.b] pcrel8 -and sz ea,rd blo[.w] pcrel16 -andc[.b] imm8,crb blo[.b] pcrel8 -andc[.w] imm16,sr bne[.w] pcrel16 -bpt bne[.b] pcrel8 -bra[.w] pcrel16 beq[.w] pcrel16 -bra[.b] pcrel8 beq[.b] pcrel8 -bt[.w] pcrel16 bvc[.w] pcrel16 -bt[.b] pcrel8 bvc[.b] pcrel8 -brn[.w] pcrel16 bvs[.w] pcrel16 -brn[.b] pcrel8 bvs[.b] pcrel8 -bf[.w] pcrel16 bpl[.w] pcrel16 -bf[.b] pcrel8 bpl[.b] pcrel8 -bhi[.w] pcrel16 bmi[.w] pcrel16 -bhi[.b] pcrel8 bmi[.b] pcrel8 -bls[.w] pcrel16 bge[.w] pcrel16 -bls[.b] pcrel8 bge[.b] pcrel8 -@page -blt[.w] pcrel16 mov[:g][.b] imm8,ea_mem -blt[.b] pcrel8 mov[:g][.w] imm16,ea_mem -bgt[.w] pcrel16 movfpe[.b] ea,rd -bgt[.b] pcrel8 movtpe[.b] rs,ea_noimm -ble[.w] pcrel16 mulxu sz ea,rd -ble[.b] pcrel8 neg sz ea -bclr sz imm4,ea_noimm nop -bclr sz rs,ea_noimm not sz ea -bnot sz imm4,ea_noimm or sz ea,rd -bnot sz rs,ea_noimm orc[.b] imm8,crb -bset sz imm4,ea_noimm orc[.w] imm16,sr -bset sz rs,ea_noimm pjmp abs24 -bsr[.b] pcrel8 pjmp @@rd -bsr[.w] pcrel16 pjsr abs24 -btst sz imm4,ea_noimm pjsr @@rd -btst sz rs,ea_noimm prtd imm8 -clr sz ea prtd imm16 -cmp[:e][.b] imm8,rd prts -cmp[:i][.w] imm16,rd rotl sz ea -cmp[:g].b imm8,ea_noimm rotr sz ea -cmp[:g][.w] imm16,ea_noimm rotxl sz ea -Cmp[:g] sz ea,rd rotxr sz ea -dadd rs,rd rtd imm8 -divxu sz ea,rd rtd imm16 -dsub rs,rd rts -exts[.b] rd scb/f rs,pcrel8 -extu[.b] rd scb/ne rs,pcrel8 -jmp @@rd scb/eq rs,pcrel8 -jmp @@(imm8,rd) shal sz ea -jmp @@(imm16,rd) shar sz ea -jmp abs16 shll sz ea -jsr @@rd shlr sz ea -jsr @@(imm8,rd) sleep -jsr @@(imm16,rd) stc[.b] crb,ea_noimm -jsr abs16 stc[.w] sr,ea_noimm -ldm @@sp+,(rlist) stm (rlist),@@-sp -link fp,imm8 sub sz ea,rd -link fp,imm16 subs sz ea,rd -mov[:e][.b] imm8,rd subx sz ea,rd -mov[:i][.w] imm16,rd swap[.b] rd -mov[:l][.w] abs8,rd tas[.b] ea -mov[:l].b abs8,rd trapa imm4 -mov[:s][.w] rs,abs8 trap/vs -mov[:s].b rs,abs8 tst sz ea -mov[:f][.w] @@(disp8,fp),rd unlk fp -mov[:f][.w] rs,@@(disp8,fp) xch[.w] rs,rd -mov[:f].b @@(disp8,fp),rd xor sz ea,rd -mov[:f].b rs,@@(disp8,fp) xorc.b imm8,crb -mov[:g] sz rs,ea_mem xorc.w imm16,sr -mov[:g] sz ea,rd -@end smallexample -@end ifset diff -uprN binutils-2.16.91.0.2/gas/doc/c-m32c.texi binutils-2.16.91.0.3/gas/doc/c-m32c.texi --- binutils-2.16.91.0.2/gas/doc/c-m32c.texi 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/c-m32c.texi 2005-08-22 12:27:43.000000000 -0700 @@ -21,6 +21,7 @@ change the default to the M32C microproc @menu * M32C-Opts:: M32C Options +* M32C-Modifiers:: Symbolic Operand Modifiers @end menu @node M32C-Opts @@ -46,3 +47,70 @@ Assemble M32C instructions. Assemble M16C instructions (default). @end table + +@node M32C-Modifiers +@section Symbolic Operand Modifiers + +@cindex M32C modifiers +@cindex syntax, M32C + +The assembler supports several modifiers when using symbol addresses +in M32C instruction operands. The general syntax is the following: + +@smallexample +%modifier(symbol) +@end smallexample + +@table @code +@cindex symbol modifiers + +@item %dsp8 +@itemx %dsp16 + +These modifiers override the assembler's assumptions about how big a +symbol's address is. Normally, when it sees an operand like +@samp{sym[a0]} it assumes @samp{sym} may require the widest +displacement field (16 bits for @samp{-m16c}, 24 bits for +@samp{-m32c}). These modifiers tell it to assume the address will fit +in an 8 or 16 bit (respectively) unsigned displacement. Note that, of +course, if it doesn't actually fit you will get linker errors. Example: + +@smallexample +mov.w %dsp8(sym)[a0],r1 +mov.b #0,%dsp8(sym)[a0] +@end smallexample + +@item %hi8 + +This modifier allows you to load bits 16 through 23 of a 24 bit +address into an 8 bit register. This is useful with, for example, the +M16C @samp{smovf} instruction, which expects a 20 bit address in +@samp{r1h} and @samp{a0}. Example: + +@smallexample +mov.b #%hi8(sym),r1h +mov.w #%lo16(sym),a0 +smovf.b +@end smallexample + +@item %lo16 + +Likewise, this modifier allows you to load bits 0 through 15 of a 24 +bit address into a 16 bit register. + +@item %hi16 + +This modifier allows you to load bits 16 through 31 of a 32 bit +address into a 16 bit register. While the M32C family only has 24 +bits of address space, it does support addresses in pairs of 16 bit +registers (like @samp{a1a0} for the @samp{lde} instruction). This +modifier is for loading the upper half in such cases. Example: + +@smallexample +mov.w #%hi16(sym),a1 +mov.w #%lo16(sym),a0 +@dots{} +lde.w [a1a0],r1 +@end smallexample + +@end table diff -uprN binutils-2.16.91.0.2/gas/doc/c-m88k.texi binutils-2.16.91.0.3/gas/doc/c-m88k.texi --- binutils-2.16.91.0.2/gas/doc/c-m88k.texi 2001-07-06 09:26:11.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/c-m88k.texi 1969-12-31 16:00:00.000000000 -0800 @@ -1,66 +0,0 @@ -@c Copyright 2001 Free Software Foundation, Inc. -@c This is part of the GAS manual. -@c For copying conditions, see the file as.texinfo. -@page -@node M88K-Dependent -@chapter Motorola M88K Dependent Features - -@cindex M88K support -@menu -* M88K Directives:: M88K Machine Directives -@end menu - -@node M88K Directives -@section M88K Machine Directives - -The M88K version of the assembler supports the following machine -directives: - -@table @code -@cindex @code{align} directive, M88K -@item .align -This directive aligns the section program counter on the next 4-byte -boundary. - -@cindex @code{dfloat} directive, M88K -@item .dfloat @var{expr} -This assembles a double precision (64-bit) floating point constant. - -@cindex @code{ffloat} directive, M88K -@item .ffloat @var{expr} -This assembles a single precision (32-bit) floating point constant. - -@cindex @code{half} directive, M88K -@item .half @var{expr} -This directive assembles a half-word (16-bit) constant. - -@cindex @code{word} directive, M88K -@item .word @var{expr} -This assembles a word (32-bit) constant. - -@cindex @code{string} directive, M88K -@item .string "@var{str}" -This directive behaves like the standard @code{.ascii} directive for -copying @var{str} into the object file. The string is not terminated -with a null byte. - -@cindex @code{set} directive, M88K -@item .set @var{symbol}, @var{value} -This directive creates a symbol named @var{symbol} which is an alias for -another symbol (possibly not yet defined). This should not be confused -with the mnemonic @code{set}, which is a legitimate M88K instruction. - -@cindex @code{def} directive, M88K -@item .def @var{symbol}, @var{value} -This directive is synonymous with @code{.set} and is presumably provided -for compatibility with other M88K assemblers. - -@cindex @code{bss} directive, M88K -@item .bss @var{symbol}, @var{length}, @var{align} -Reserve @var{length} bytes in the bss section for a local @var{symbol}, -aligned to the power of two specified by @var{align}. @var{length} and -@var{align} must be positive absolute expressions. This directive -differs from @samp{.lcomm} only in that it permits you to specify -an alignment. @xref{Lcomm,,@code{.lcomm}}. - -@end table diff -uprN binutils-2.16.91.0.2/gas/doc/c-msp430.texi binutils-2.16.91.0.3/gas/doc/c-msp430.texi --- binutils-2.16.91.0.2/gas/doc/c-msp430.texi 2004-09-15 12:05:03.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/c-msp430.texi 2005-08-22 12:27:43.000000000 -0700 @@ -26,8 +26,17 @@ @section Options @cindex MSP 430 options (none) @cindex options for MSP430 (none) -@code{@value{AS}} has only -m flag which selects the mpu arch. Currently has -no effect. +@table @code + +@item -m +select the mpu arch. Currently has no effect. +@item -mP +enables polymorph instructions handler. + +@item -mQ +enables relaxation at assembly time. DANGEROUS! + +@end table @node MSP430 Syntax @section Syntax @@ -214,7 +223,7 @@ This directive instructs assembler to ad additional pseudo-instructions are needed on this family. For information on the 430 machine instruction set, see @cite{MSP430 -User's Manual, document slau049b}, Texas Instrument, Inc. +User's Manual, document slau049d}, Texas Instrument, Inc. @node MSP430 Profiling Capability @section Profiling Capability diff -uprN binutils-2.16.91.0.2/gas/doc/c-ppc.texi binutils-2.16.91.0.3/gas/doc/c-ppc.texi --- binutils-2.16.91.0.2/gas/doc/c-ppc.texi 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/c-ppc.texi 2005-08-22 12:27:43.000000000 -0700 @@ -1,4 +1,4 @@ -@c Copyright 2001, 2002, 2003 +@c Copyright 2001, 2002, 2003, 2005 @c Free Software Foundation, Inc. @c This is part of the GAS manual. @c For copying conditions, see the file as.texinfo. @@ -67,6 +67,9 @@ Generate code for 64-bit BookE. @item -mbooke, mbooke32 Generate code for 32-bit BookE. +@item -me300 +Generate code for PowerPC e300 family. + @item -maltivec Generate code for processors with AltiVec instructions. diff -uprN binutils-2.16.91.0.2/gas/doc/internals.texi binutils-2.16.91.0.3/gas/doc/internals.texi --- binutils-2.16.91.0.2/gas/doc/internals.texi 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/internals.texi 2005-08-22 12:27:43.000000000 -0700 @@ -14,7 +14,6 @@ it may help a bit. This chapter is not updated regularly, and it may be out of date. @menu -* GAS versions:: GAS versions * Data types:: Data types * GAS processing:: What GAS does when it runs * Porting GAS:: Porting GAS @@ -24,80 +23,6 @@ This chapter is not updated regularly, a * Test suite:: Test suite @end menu -@node GAS versions -@section GAS versions - -GAS has acquired layers of code over time. The original GAS only supported the -a.out object file format, with three sections. Support for multiple sections -has been added in two different ways. - -The preferred approach is to use the version of GAS created when the symbol -@code{BFD_ASSEMBLER} is defined. The other versions of GAS are documented for -historical purposes, and to help anybody who has to debug code written for -them. - -The type @code{segT} is used to represent a section in code which must work -with all versions of GAS. - -@menu -* Original GAS:: Original GAS version -* MANY_SEGMENTS:: MANY_SEGMENTS gas version -* BFD_ASSEMBLER:: BFD_ASSEMBLER gas version -@end menu - -@node Original GAS -@subsection Original GAS - -The original GAS only supported the a.out object file format with three -sections: @samp{.text}, @samp{.data}, and @samp{.bss}. This is the version of -GAS that is compiled if neither @code{BFD_ASSEMBLER} nor @code{MANY_SEGMENTS} -is defined. This version of GAS is still used for the m68k-aout target, and -perhaps others. - -This version of GAS should not be used for any new development. - -There is still code that is specific to this version of GAS, notably in -@file{write.c}. There is no way for this code to loop through all the -sections; it simply looks at global variables like @code{text_frag_root} and -@code{data_frag_root}. - -The type @code{segT} is an enum. - -@node MANY_SEGMENTS -@subsection MANY_SEGMENTS gas version -@cindex MANY_SEGMENTS - -The @code{MANY_SEGMENTS} version of gas is only used for COFF. It uses the BFD -library, but it writes out all the data itself using @code{bfd_write}. This -version of gas supports up to 40 normal sections. The section names are stored -in the @code{seg_name} array. Other information is stored in the -@code{segment_info} array. - -The type @code{segT} is an enum. Code that wants to examine all the sections -can use a @code{segT} variable as loop index from @code{SEG_E0} up to but not -including @code{SEG_UNKNOWN}. - -Most of the code specific to this version of GAS is in the file -@file{config/obj-coff.c}, in the portion of that file that is compiled when -@code{BFD_ASSEMBLER} is not defined. - -This version of GAS is still used for several COFF targets. - -@node BFD_ASSEMBLER -@subsection BFD_ASSEMBLER gas version -@cindex BFD_ASSEMBLER - -The preferred version of GAS is the @code{BFD_ASSEMBLER} version. In this -version of GAS, the output file is a normal BFD, and the BFD routines are used -to generate the output. - -@code{BFD_ASSEMBLER} will automatically be used for certain targets, including -those that use the ELF, ECOFF, and SOM object file formats, and also all Alpha, -MIPS, PowerPC, and SPARC targets. You can force the use of -@code{BFD_ASSEMBLER} for other targets with the configure option -@samp{--enable-bfd-assembler}; however, it has not been tested for many -targets, and can not be assumed to work. - @node Data types @section Data types @cindex internals, data types @@ -152,10 +77,8 @@ symbol list. @item sy_next @itemx sy_previous -These pointers to other @code{symbolS} structures describe a singly or doubly -linked list. (If @code{SYMBOLS_NEED_BACKPOINTERS} is not defined, the -@code{sy_previous} field will be omitted; @code{SYMBOLS_NEED_BACKPOINTERS} is -always defined if @code{BFD_ASSEMBLER}.) These fields should be accessed with +These pointers to other @code{symbolS} structures describe a doubly +linked list. These fields should be accessed with the @code{symbol_next} and @code{symbol_previous} macros. @item sy_frag @@ -171,23 +94,9 @@ Whether the symbol is an MRI common symb pseudo-op when assembling in MRI mode. @item bsym -If @code{BFD_ASSEMBLER} is defined, this points to the BFD @code{asymbol} that +This points to the BFD @code{asymbol} that will be used in writing the object file. -@item sy_name_offset -(Only used if @code{BFD_ASSEMBLER} is not defined.) This is the position of -the symbol's name in the string table of the object file. On some formats, -this will start at position 4, with position 0 reserved for unnamed symbols. -This field is not used until @code{write_object_file} is called. - -@item sy_symbol -(Only used if @code{BFD_ASSEMBLER} is not defined.) This is the -format-specific symbol structure, as it would be written into the object file. - -@item sy_number -(Only used if @code{BFD_ASSEMBLER} is not defined.) This is a 24-bit symbol -number, for use in constructing relocation table entries. - @item sy_obj This format-specific data is of type @code{OBJ_SYMFIELD_TYPE}. If no macro by that name is defined in @file{obj-format.h}, this field is not defined. @@ -415,7 +324,7 @@ Set the @code{TC_SYMFIELD_TYPE} field of @end table -When @code{BFD_ASSEMBLER} is defined, GAS attempts to store local +GAS attempts to store local symbols--symbols which will not be written to the output file--using a different structure, @code{struct local_symbol}. This structure can only represent symbols whose value is an offset within a frag. @@ -484,8 +393,8 @@ the fixup becomes a relocation entry in @cindex fix_new_exp A fixup is created by a call to @code{fix_new} or @code{fix_new_exp}. Both take a frag (@pxref{Frags}), a position within the frag, a size, an indication -of whether the fixup is PC relative, and a type. In a @code{BFD_ASSEMBLER} -GAS, the type is nominally a @code{bfd_reloc_code_real_type}, but several +of whether the fixup is PC relative, and a type. +The type is nominally a @code{bfd_reloc_code_real_type}, but several targets use other type codes to represent fixups that can not be described as relocations. @@ -519,8 +428,7 @@ not use it. The next fixup in the section. @item fx_r_type -The type of the fixup. This field is only defined if @code{BFD_ASSEMBLER}, or -if the target defines @code{NEED_FX_R_TYPE}. +The type of the fixup. @item fx_size The size of the fixup. This is mostly used for error checking. @@ -683,8 +591,7 @@ Indicates the section this frag chain be @item frch_subseg Subsection (subsegment) number of this frag chain. @item fix_root, fix_tail -(Defined only if @code{BFD_ASSEMBLER} is defined). Point to first and last -@code{fixS} structures associated with this subsection. +Point to first and last @code{fixS} structures associated with this subsection. @item frch_obstack Not currently used. Intended to be used for frag allocation for this subsection. This should reduce frag generation caused by switching sections. @@ -748,8 +655,7 @@ store relaxation information (@pxref{Rel When the input file is finished, the @code{write_object_file} routine is called. It assigns addresses to all the frags (@code{relax_segment}), resolves all the fixups (@code{fixup_segment}), resolves all the symbol values (using -@code{resolve_symbol_value}), and finally writes out the file (in the -@code{BFD_ASSEMBLER} case, this is done by simply calling @code{bfd_close}). +@code{resolve_symbol_value}), and finally writes out the file. @end itemize @node Porting GAS @@ -1181,12 +1087,6 @@ single precision, @samp{D_PRECISION} for The macro has a default definition which returns 0 for all cases. -@item md_reloc_size -@cindex md_reloc_size -This variable is only used in the original version of gas (not -@code{BFD_ASSEMBLER} and not @code{MANY_SEGMENTS}). It holds the size of a -relocation entry. - @item WORKING_DOT_WORD @itemx md_short_jump_size @itemx md_long_jump_size @@ -1347,7 +1247,7 @@ symbol value will be included. For ELF, @item S_FORCE_RELOC (@var{sym}, @var{strict}) @cindex S_FORCE_RELOC -This macro (or function, for @code{BFD_ASSEMBLER} gas) returns true for symbols +This function returns true for symbols that should not be reduced to section symbols or eliminated from expressions, because they may be overridden by the linker. ie. for symbols that are undefined or common, and when @var{strict} is set, weak, or global (for ELF @@ -1361,7 +1261,7 @@ symbols. If undefined, the default is @ @item tc_gen_reloc @cindex tc_gen_reloc -A @code{BFD_ASSEMBLER} GAS will call this to generate a reloc. GAS will pass +GAS will call this to generate a reloc. GAS will pass the resulting reloc to @code{bfd_install_relocation}. This currently works poorly, as @code{bfd_install_relocation} often does the wrong thing, and instances of @code{tc_gen_reloc} have been written to work around the problems, @@ -1446,7 +1346,7 @@ whitespace, or concatenated if there is @item tc_frob_section @cindex tc_frob_section -If you define this macro, a @code{BFD_ASSEMBLER} GAS will call it for each +If you define this macro, GAS will call it for each section at the end of the assembly. @item tc_frob_file_before_adjust @@ -1562,11 +1462,6 @@ defining a number of pseudo-ops. The object format @file{.h} file must include @file{targ-cpu.h}. -This section will only define the @code{BFD_ASSEMBLER} version of GAS. It is -impossible to support a new object file format using any other version anyhow, -as the original GAS version only supports a.out, and the @code{MANY_SEGMENTS} -GAS version only supports COFF. - @table @code @item OBJ_@var{format} @cindex OBJ_@var{format} @@ -1651,8 +1546,7 @@ generated. @cindex SET_SECTION_RELOCS If you define this, it will be called after the relocations have been set for the section @var{sec}. The list of relocations is in @var{relocs}, and the -number of relocations is in @var{n}. This is only used with -@code{BFD_ASSEMBLER}. +number of relocations is in @var{n}. @end table @node Emulations diff -uprN binutils-2.16.91.0.2/gas/doc/Makefile.am binutils-2.16.91.0.3/gas/doc/Makefile.am --- binutils-2.16.91.0.2/gas/doc/Makefile.am 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/Makefile.am 2005-08-22 12:27:43.000000000 -0700 @@ -24,14 +24,12 @@ asconfig.texi: $(CONFIG).texi || cp $(srcdir)/$(CONFIG).texi ./asconfig.texi CPU_DOCS = \ - c-a29k.texi \ c-alpha.texi \ c-arc.texi \ c-arm.texi \ c-d10v.texi \ c-cris.texi \ c-h8300.texi \ - c-h8500.texi \ c-hppa.texi \ c-i370.texi \ c-i386.texi \ @@ -42,7 +40,6 @@ CPU_DOCS = \ c-m32r.texi \ c-m68hc11.texi \ c-m68k.texi \ - c-m88k.texi \ c-mips.texi \ c-mmix.texi \ c-msp430.texi \ diff -uprN binutils-2.16.91.0.2/gas/doc/Makefile.in binutils-2.16.91.0.3/gas/doc/Makefile.in --- binutils-2.16.91.0.2/gas/doc/Makefile.in 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/doc/Makefile.in 2005-08-22 12:27:43.000000000 -0700 @@ -215,14 +215,12 @@ POD2MAN = pod2man --center="GNU Developm man_MANS = as.1 info_TEXINFOS = as.texinfo CPU_DOCS = \ - c-a29k.texi \ c-alpha.texi \ c-arc.texi \ c-arm.texi \ c-d10v.texi \ c-cris.texi \ c-h8300.texi \ - c-h8500.texi \ c-hppa.texi \ c-i370.texi \ c-i386.texi \ @@ -233,7 +231,6 @@ CPU_DOCS = \ c-m32r.texi \ c-m68hc11.texi \ c-m68k.texi \ - c-m88k.texi \ c-mips.texi \ c-mmix.texi \ c-msp430.texi \ diff -uprN binutils-2.16.91.0.2/gas/dw2gencfi.c binutils-2.16.91.0.3/gas/dw2gencfi.c --- binutils-2.16.91.0.2/gas/dw2gencfi.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/dw2gencfi.c 2005-08-22 12:27:41.000000000 -0700 @@ -42,11 +42,7 @@ #endif #ifndef EH_FRAME_ALIGNMENT -# ifdef BFD_ASSEMBLER -# define EH_FRAME_ALIGNMENT (bfd_get_arch_size (stdoutput) == 64 ? 3 : 2) -# else -# define EH_FRAME_ALIGNMENT 2 -# endif +# define EH_FRAME_ALIGNMENT (bfd_get_arch_size (stdoutput) == 64 ? 3 : 2) #endif #ifndef tc_cfi_frame_initial_instructions @@ -1032,10 +1028,8 @@ cfi_finish (void) /* Open .eh_frame section. */ cfi_seg = subseg_new (".eh_frame", 0); -#ifdef BFD_ASSEMBLER bfd_set_section_flags (stdoutput, cfi_seg, SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_READONLY); -#endif subseg_set (cfi_seg, 0); record_alignment (cfi_seg, EH_FRAME_ALIGNMENT); diff -uprN binutils-2.16.91.0.2/gas/dwarf2dbg.c binutils-2.16.91.0.3/gas/dwarf2dbg.c --- binutils-2.16.91.0.2/gas/dwarf2dbg.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/dwarf2dbg.c 2005-08-22 12:27:41.000000000 -0700 @@ -53,8 +53,6 @@ # define DWARF2_ADDR_SIZE(bfd) (bfd_arch_bits_per_address (bfd) / 8) #endif -#ifdef BFD_ASSEMBLER - #include "subsegs.h" #include "elf/dwarf2.h" @@ -1424,54 +1422,3 @@ dwarf2_finish (void) out_debug_info (info_seg, abbrev_seg, line_seg); } } - -#else -void -dwarf2_finish () -{ -} - -int -dwarf2dbg_estimate_size_before_relax (frag) - fragS *frag ATTRIBUTE_UNUSED; -{ - as_fatal (_("dwarf2 is not supported for this object file format")); - return 0; -} - -int -dwarf2dbg_relax_frag (frag) - fragS *frag ATTRIBUTE_UNUSED; -{ - as_fatal (_("dwarf2 is not supported for this object file format")); - return 0; -} - -void -dwarf2dbg_convert_frag (frag) - fragS *frag ATTRIBUTE_UNUSED; -{ - as_fatal (_("dwarf2 is not supported for this object file format")); -} - -void -dwarf2_emit_insn (size) - int size ATTRIBUTE_UNUSED; -{ -} - -char * -dwarf2_directive_file (dummy) - int dummy ATTRIBUTE_UNUSED; -{ - s_app_file (0); - return NULL; -} - -void -dwarf2_directive_loc (dummy) - int dummy ATTRIBUTE_UNUSED; -{ - as_fatal (_("dwarf2 is not supported for this object file format")); -} -#endif /* BFD_ASSEMBLER */ diff -uprN binutils-2.16.91.0.2/gas/ehopt.c binutils-2.16.91.0.3/gas/ehopt.c --- binutils-2.16.91.0.2/gas/ehopt.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/ehopt.c 2005-08-22 12:27:41.000000000 -0700 @@ -1,5 +1,5 @@ /* ehopt.c--optimize gcc exception frame information. - Copyright 1998, 2000, 2001, 2003 Free Software Foundation, Inc. + Copyright 1998, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. Written by Ian Lance Taylor . This file is part of GAS, the GNU Assembler. @@ -111,16 +111,8 @@ get_cie_info (struct cie_info *info) /* We should find the CIE at the start of the section. */ -#if defined (BFD_ASSEMBLER) || defined (MANY_SEGMENTS) f = seg_info (now_seg)->frchainP->frch_root; -#else - f = frchain_now->frch_root; -#endif -#ifdef BFD_ASSEMBLER fix = seg_info (now_seg)->frchainP->fix_root; -#else - fix = *seg_fix_rootP; -#endif /* Look through the frags of the section to find the code alignment. */ diff -uprN binutils-2.16.91.0.2/gas/input-file.c binutils-2.16.91.0.3/gas/input-file.c --- binutils-2.16.91.0.2/gas/input-file.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/input-file.c 2005-08-22 12:27:41.000000000 -0700 @@ -143,9 +143,7 @@ input_file_open (char *filename, /* "" m if (f_in == NULL) { -#ifdef BFD_ASSEMBLER bfd_set_error (bfd_error_system_call); -#endif as_perror (_("Can't open %s for reading"), file_name); return; } @@ -154,9 +152,7 @@ input_file_open (char *filename, /* "" m if (ferror (f_in)) { -#ifdef BFD_ASSEMBLER bfd_set_error (bfd_error_system_call); -#endif as_perror (_("Can't open %s for reading"), file_name); fclose (f_in); @@ -219,9 +215,7 @@ input_file_get (char *buf, int buflen) size = fread (buf, sizeof (char), buflen, f_in); if (size < 0) { -#ifdef BFD_ASSEMBLER bfd_set_error (bfd_error_system_call); -#endif as_perror (_("Can't read from %s"), file_name); size = 0; } @@ -248,9 +242,7 @@ input_file_give_next_buffer (char *where size = fread (where, sizeof (char), BUFFER_SIZE, f_in); if (size < 0) { -#ifdef BFD_ASSEMBLER bfd_set_error (bfd_error_system_call); -#endif as_perror (_("Can't read from %s"), file_name); size = 0; } @@ -260,9 +252,7 @@ input_file_give_next_buffer (char *where { if (fclose (f_in)) { -#ifdef BFD_ASSEMBLER bfd_set_error (bfd_error_system_call); -#endif as_perror (_("Can't close %s"), file_name); } f_in = (FILE *) 0; diff -uprN binutils-2.16.91.0.2/gas/listing.c binutils-2.16.91.0.3/gas/listing.c --- binutils-2.16.91.0.2/gas/listing.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/listing.c 2005-08-22 12:27:42.000000000 -0700 @@ -749,11 +749,10 @@ list_symbol_table (void) if (SEG_NORMAL (S_GET_SEGMENT (ptr)) || S_GET_SEGMENT (ptr) == absolute_section) { -#ifdef BFD_ASSEMBLER /* Don't report section symbols. They are not interesting. */ if (symbol_section_p (ptr)) continue; -#endif + if (S_GET_NAME (ptr)) { char buf[30], fmt[8]; @@ -1086,9 +1085,7 @@ listing_print (char *name) using_stdout = 0; else { -#ifdef BFD_ASSEMBLER - bfd_set_error (bfd_error_system_call); -#endif + bfd_set_error (bfd_error_system_call); as_perror (_("can't open list file: %s"), name); list_file = stdout; using_stdout = 1; @@ -1108,9 +1105,7 @@ listing_print (char *name) { if (fclose (list_file) == EOF) { -#ifdef BFD_ASSEMBLER bfd_set_error (bfd_error_system_call); -#endif as_perror (_("error closing list file: %s"), name); } } diff -uprN binutils-2.16.91.0.2/gas/literal.c binutils-2.16.91.0.3/gas/literal.c --- binutils-2.16.91.0.2/gas/literal.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/literal.c 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ -/* as.c - GAS literal pool management. - Copyright 1994, 2000 Free Software Foundation, Inc. +/* literal.c - GAS literal pool management. + Copyright 1994, 2000, 2005 Free Software Foundation, Inc. Written by Ken Raeburn (raeburn@cygnus.com). This file is part of GAS, the GNU Assembler. @@ -39,7 +39,7 @@ #include "as.h" #include "subsegs.h" -#if defined (BFD_ASSEMBLER) && defined (NEED_LITERAL_POOL) +#ifdef NEED_LITERAL_POOL valueT add_to_literal_pool (sym, addend, sec, size) @@ -92,4 +92,4 @@ add_to_literal_pool (sym, addend, sec, s seginfo->literal_pool_size += size; return offset; } -#endif /* BFD_ASSEMBLER */ +#endif diff -uprN binutils-2.16.91.0.2/gas/macro.c binutils-2.16.91.0.3/gas/macro.c --- binutils-2.16.91.0.2/gas/macro.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/macro.c 2005-08-22 12:27:42.000000000 -0700 @@ -306,14 +306,18 @@ getstring (int idx, sb *in, sb *acc) { while (idx < in->len && (in->ptr[idx] == '"' + || in->ptr[idx] == '(' || (in->ptr[idx] == '<' && (macro_alternate || macro_mri)) || (in->ptr[idx] == '\'' && macro_alternate))) { if (in->ptr[idx] == '<') { int nest = 0; + char start_char = '>'; + char end_char = '>'; + idx++; - while ((in->ptr[idx] != '>' || nest) + while ((in->ptr[idx] != end_char || nest) && idx < in->len) { if (in->ptr[idx] == '!') @@ -323,15 +327,37 @@ getstring (int idx, sb *in, sb *acc) } else { - if (in->ptr[idx] == '>') + if (in->ptr[idx] == end_char) nest--; - if (in->ptr[idx] == '<') + if (in->ptr[idx] == start_char) nest++; sb_add_char (acc, in->ptr[idx++]); } } idx++; } + else if (in->ptr[idx] == '(') + { + int nest = 0; + char c; + + do + { + c = in->ptr[idx]; + + if (c == '!') + c = in->ptr[++idx]; + else if (c == ')') + nest--; + else if (c == '(') + nest++; + + sb_add_char (acc, c); + idx++; + } + while ((c != ')' || nest) + && idx < in->len); + } else if (in->ptr[idx] == '"' || in->ptr[idx] == '\'') { char tchar = in->ptr[idx]; @@ -382,10 +408,10 @@ getstring (int idx, sb *in, sb *acc) /* Fetch string from the input stream, rules: 'Bxyx -> return 'Bxyza - % -> return string of decimal value of x - "" -> return string - xyx -> return xyz -*/ + % -> return string of decimal value of + "string" -> return string + (string) -> return (string-including-whitespaces) + xyx -> return xyz. */ static int get_any_string (int idx, sb *in, sb *out) @@ -404,6 +430,7 @@ get_any_string (int idx, sb *in, sb *out { int val; char buf[20]; + /* Turns the next expression into a string. */ /* xgettext: no-c-format */ idx = (*macro_expr) (_("% operator needs absolute expression"), @@ -414,6 +441,7 @@ get_any_string (int idx, sb *in, sb *out sb_add_string (out, buf); } else if (in->ptr[idx] == '"' + || in->ptr[idx] == '(' || (in->ptr[idx] == '<' && (macro_alternate || macro_mri)) || (macro_alternate && in->ptr[idx] == '\'')) { @@ -443,6 +471,7 @@ get_any_string (int idx, sb *in, sb *out || in->ptr[idx] == '\'') { char tchar = in->ptr[idx]; + sb_add_char (out, in->ptr[idx++]); while (idx < in->len && in->ptr[idx] != tchar) diff -uprN binutils-2.16.91.0.2/gas/Makefile.am binutils-2.16.91.0.3/gas/Makefile.am --- binutils-2.16.91.0.2/gas/Makefile.am 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/Makefile.am 2005-08-22 12:27:41.000000000 -0700 @@ -41,7 +41,6 @@ IT_OBJS=itbl-parse.o itbl-lex.o itbl-ops # CPU types. This is only used for dependency information. CPU_TYPES = \ - a29k \ alpha \ arc \ arm \ @@ -54,7 +53,6 @@ CPU_TYPES = \ fr30 \ frv \ h8300 \ - h8500 \ hppa \ ia64 \ i370 \ @@ -66,7 +64,6 @@ CPU_TYPES = \ m32r \ m68hc11 \ m68k \ - m88k \ mcore \ mips \ mmix \ @@ -83,13 +80,10 @@ CPU_TYPES = \ sh \ sh64 \ sparc \ - tahoe \ tic30 \ tic4x \ tic54x \ - tic80 \ vax \ - w65 \ v850 \ xstormy16 \ xtensa \ @@ -100,12 +94,10 @@ CPU_TYPES = \ OBJ_FORMATS = \ aout \ - bout \ coff \ ecoff \ elf \ evax \ - hp300 \ ieee \ vms @@ -119,13 +111,9 @@ CPU_OBJ_VALID = \ case $$o in \ aout) \ case $$c in \ - a29k | arm | cris | i386 | m68k | ns32k | pdp11 | sparc | tahoe | tic30 | vax) \ + arm | cris | i386 | m68k | ns32k | pdp11 | sparc | tic30 | vax) \ valid=yes ;; \ esac ;; \ - bout) \ - case $$c in \ - i960) valid=yes ;; \ - esac ;; \ coff) valid=yes; \ case $$c in \ cris | i860 | mmix | sh64) \ @@ -140,10 +128,6 @@ CPU_OBJ_VALID = \ case $$c in \ alpha) valid=yes ;; \ esac ;; \ - hp300) \ - case $$c in \ - m68k) valid=yes ;; \ - esac ;; \ vms) \ case $$c in \ vax) valid=yes ;; \ @@ -239,7 +223,6 @@ HFILES = \ # CPU files in config. TARGET_CPU_CFILES = \ - config/tc-a29k.c \ config/tc-alpha.c \ config/tc-arc.c \ config/tc-arm.c \ @@ -252,7 +235,6 @@ TARGET_CPU_CFILES = \ config/tc-fr30.c \ config/tc-frv.c \ config/tc-h8300.c \ - config/tc-h8500.c \ config/tc-hppa.c \ config/tc-ia64.c \ config/tc-i370.c \ @@ -264,7 +246,6 @@ TARGET_CPU_CFILES = \ config/tc-m32r.c \ config/tc-m68hc11.c \ config/tc-m68k.c \ - config/tc-m88k.c \ config/tc-mcore.c \ config/tc-mips.c \ config/tc-mmix.c \ @@ -281,19 +262,15 @@ TARGET_CPU_CFILES = \ config/tc-sh.c \ config/tc-sh64.c \ config/tc-sparc.c \ - config/tc-tahoe.c \ config/tc-tic30.c \ config/tc-tic54x.c \ - config/tc-tic80.c \ config/tc-vax.c \ - config/tc-w65.c \ config/tc-v850.c \ config/tc-xstormy16.c \ config/tc-xtensa.c \ config/tc-z8k.c TARGET_CPU_HFILES = \ - config/tc-a29k.h \ config/tc-alpha.h \ config/tc-arc.h \ config/tc-arm.h \ @@ -306,7 +283,6 @@ TARGET_CPU_HFILES = \ config/tc-fr30.h \ config/tc-frv.h \ config/tc-h8300.h \ - config/tc-h8500.h \ config/tc-hppa.h \ config/tc-ia64.h \ config/tc-i370.h \ @@ -318,7 +294,6 @@ TARGET_CPU_HFILES = \ config/tc-m32r.h \ config/tc-m68hc11.h \ config/tc-m68k.h \ - config/tc-m88k.h \ config/tc-mcore.h \ config/tc-mips.h \ config/tc-mmix.h \ @@ -335,12 +310,9 @@ TARGET_CPU_HFILES = \ config/tc-sh.h \ config/tc-sh64.h \ config/tc-sparc.h \ - config/tc-tahoe.h \ config/tc-tic30.h \ config/tc-tic54x.h \ - config/tc-tic80.h \ config/tc-vax.h \ - config/tc-w65.h \ config/tc-v850.h \ config/tc-xstormy16.h \ config/tc-xtensa.h \ @@ -350,23 +322,19 @@ TARGET_CPU_HFILES = \ OBJ_FORMAT_CFILES = \ config/obj-aout.c \ - config/obj-bout.c \ config/obj-coff.c \ config/obj-ecoff.c \ config/obj-elf.c \ config/obj-evax.c \ - config/obj-hp300.c \ config/obj-ieee.c \ config/obj-som.c OBJ_FORMAT_HFILES = \ config/obj-aout.h \ - config/obj-bout.h \ config/obj-coff.h \ config/obj-ecoff.h \ config/obj-elf.h \ config/obj-evax.h \ - config/obj-hp300.h \ config/obj-ieee.h \ config/obj-som.h @@ -383,7 +351,6 @@ TARG_ENV_HFILES = \ config/te-epoc-pe.h \ config/te-generic.h \ config/te-go32.h \ - config/te-hp300.h \ config/te-hppa.h \ config/te-hppa64.h \ config/te-hppalinux64.h \ @@ -470,13 +437,7 @@ noinst_PROGRAMS = as-new noinst_SCRIPTS = $(GDBINIT) EXTRA_SCRIPTS = .gdbinit -$(srcdir)/make-gas.com: stamp-mk.com -stamp-mk.com: vmsconf.sh Makefile - sh $(srcdir)/vmsconf.sh $(GENERIC_OBJS) > new-make.com - $(SHELL) $(srcdir)/../move-if-change new-make.com $(srcdir)/make-gas.com - touch stamp-mk.com - -EXTRA_DIST = make-gas.com m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c +EXTRA_DIST = m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c diststuff: $(EXTRA_DIST) info all: info @@ -501,7 +462,7 @@ INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) # in a subdirectory. DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../../intl -DLOCALEDIR="\"$(datadir)/locale\"" -DEP_FLAGS = -DBFD_ASSEMBLER -DOBJ_MAYBE_ELF \ +DEP_FLAGS = -DOBJ_MAYBE_ELF \ -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) # How to link with both our special library facilities @@ -571,8 +532,6 @@ ecoff.o : ecoff.c ecoff.h $(INCDIR)/coff obj-aout.o : $(srcdir)/config/obj-aout.c $(COMPILE) -c $(srcdir)/config/obj-aout.c -obj-bout.o : $(srcdir)/config/obj-bout.c - $(COMPILE) -c $(srcdir)/config/obj-bout.c obj-coff.o: $(srcdir)/config/obj-coff.c $(COMPILE) -c $(srcdir)/config/obj-coff.c obj-ecoff.o : $(srcdir)/config/obj-ecoff.c @@ -581,8 +540,6 @@ obj-elf.o : $(srcdir)/config/obj-elf.c $(COMPILE) -c $(srcdir)/config/obj-elf.c obj-evax.o : $(srcdir)/config/obj-evax.c $(COMPILE) -c $(srcdir)/config/obj-evax.c -obj-hp300.o : $(srcdir)/config/obj-hp300.c - $(COMPILE) -c $(srcdir)/config/obj-hp300.c obj-ieee.o : $(srcdir)/config/obj-ieee.c $(COMPILE) -c $(srcdir)/config/obj-ieee.c obj-multi.o : $(srcdir)/config/obj-multi.c @@ -681,7 +638,7 @@ cgen.o: cgen.c cgen.h cgen-desc.h subseg # Remake the info files. -MOSTLYCLEANFILES = $(STAGESTUFF) core stamp-mk.com \ +MOSTLYCLEANFILES = $(STAGESTUFF) core \ testsuite/*.o testsuite/*.out testsuite/gas.log testsuite/gas.sum \ testsuite/site.exp site.bak site.exp stage stage1 stage2 @@ -974,17 +931,6 @@ dep-am: DEP .PHONY: dep dep-in dep-am AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -DEPTC_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h -DEPTC_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h -DEPTC_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h DEPTC_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ @@ -1125,16 +1071,6 @@ DEPTC_h8300_elf = $(INCDIR)/symcat.h $(s $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/h8300.h \ $(INCDIR)/safe-ctype.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h -DEPTC_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ - $(INCDIR)/safe-ctype.h -DEPTC_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ - $(INCDIR)/safe-ctype.h DEPTC_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ @@ -1188,9 +1124,6 @@ DEPTC_i860_elf = $(INCDIR)/symcat.h $(sr $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h -DEPTC_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/i960.h DEPTC_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ @@ -1272,21 +1205,6 @@ DEPTC_m68k_elf = $(INCDIR)/symcat.h $(sr dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h \ $(srcdir)/config/m68k-parse.h $(INCDIR)/elf/m68k.h \ $(INCDIR)/elf/reloc-macros.h -DEPTC_m68k_hp300 = $(INCDIR)/symcat.h $(srcdir)/config/obj-hp300.h \ - $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h subsegs.h dwarf2dbg.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h -DEPTC_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h -DEPTC_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/config/m88k-opcode.h DEPTC_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ @@ -1467,17 +1385,6 @@ DEPTC_sparc_elf = $(INCDIR)/symcat.h $(s $(INCDIR)/opcode/sparc.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \ $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \ dwarf2dbg.h -DEPTC_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h -DEPTC_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h -DEPTC_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h DEPTC_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h @@ -1511,14 +1418,6 @@ DEPTC_tic54x_elf = $(INCDIR)/symcat.h $( struc-symbol.h $(INCDIR)/opcode/tic54x.h $(srcdir)/config/obj-coff.h \ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ $(BFDDIR)/libcoff.h -DEPTC_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h -DEPTC_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h DEPTC_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \ @@ -1534,14 +1433,6 @@ DEPTC_vax_elf = $(INCDIR)/symcat.h $(src $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \ $(INCDIR)/elf/vax.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/vax.h \ $(INCDIR)/safe-ctype.h -DEPTC_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h -DEPTC_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h DEPTC_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ @@ -1587,18 +1478,6 @@ DEPTC_i386_multi = $(DEPTC_i386_aout) $( DEPTC_mips_multi = $(DEPTC_mips_coff) $(DEPTC_mips_ecoff) \ $(DEPTC_mips_elf) DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf) -DEPOBJ_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h DEPOBJ_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ @@ -1717,15 +1596,6 @@ DEPOBJ_h8300_elf = $(INCDIR)/symcat.h $( $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h DEPOBJ_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ @@ -1775,8 +1645,6 @@ DEPOBJ_i860_elf = $(INCDIR)/symcat.h $(s $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h DEPOBJ_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ @@ -1834,19 +1702,6 @@ DEPOBJ_m68k_elf = $(INCDIR)/symcat.h $(s $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h DEPOBJ_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ @@ -2000,18 +1855,6 @@ DEPOBJ_sparc_elf = $(INCDIR)/symcat.h $( $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h -DEPOBJ_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h DEPOBJ_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h @@ -2042,15 +1885,6 @@ DEPOBJ_tic54x_elf = $(INCDIR)/symcat.h $ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h DEPOBJ_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h @@ -2063,15 +1897,6 @@ DEPOBJ_vax_elf = $(INCDIR)/symcat.h $(sr $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h DEPOBJ_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ @@ -2114,14 +1939,6 @@ DEPOBJ_i386_multi = $(DEPOBJ_i386_aout) DEPOBJ_mips_multi = $(DEPOBJ_mips_coff) $(DEPOBJ_mips_ecoff) \ $(DEPOBJ_mips_elf) DEPOBJ_cris_multi = $(DEPOBJ_cris_aout) $(DEPOBJ_cris_elf) -DEP_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h DEP_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h @@ -2198,12 +2015,6 @@ DEP_h8300_coff = $(srcdir)/config/obj-co DEP_h8300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h -DEP_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h @@ -2237,7 +2048,6 @@ DEP_i386_elf = $(srcdir)/config/obj-elf. DEP_i860_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h -DEP_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h DEP_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h @@ -2276,14 +2086,6 @@ DEP_m68k_coff = $(srcdir)/config/obj-cof DEP_m68k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h -DEP_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h DEP_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h \ $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h @@ -2384,14 +2186,6 @@ DEP_sparc_coff = $(srcdir)/config/obj-co DEP_sparc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h -DEP_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h DEP_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \ @@ -2412,12 +2206,6 @@ DEP_tic54x_coff = $(srcdir)/config/obj-c DEP_tic54x_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h -DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h DEP_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \ @@ -2426,12 +2214,6 @@ DEP_vax_coff = $(srcdir)/config/obj-coff DEP_vax_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h -DEP_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_w65_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h DEP_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/symcat.h \ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h diff -uprN binutils-2.16.91.0.2/gas/Makefile.in binutils-2.16.91.0.3/gas/Makefile.in --- binutils-2.16.91.0.2/gas/Makefile.in 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/Makefile.in 2005-08-22 12:27:41.000000000 -0700 @@ -270,7 +270,6 @@ IT_OBJS = itbl-parse.o itbl-lex.o itbl-o # CPU types. This is only used for dependency information. CPU_TYPES = \ - a29k \ alpha \ arc \ arm \ @@ -283,7 +282,6 @@ CPU_TYPES = \ fr30 \ frv \ h8300 \ - h8500 \ hppa \ ia64 \ i370 \ @@ -295,7 +293,6 @@ CPU_TYPES = \ m32r \ m68hc11 \ m68k \ - m88k \ mcore \ mips \ mmix \ @@ -312,13 +309,10 @@ CPU_TYPES = \ sh \ sh64 \ sparc \ - tahoe \ tic30 \ tic4x \ tic54x \ - tic80 \ vax \ - w65 \ v850 \ xstormy16 \ xtensa \ @@ -329,12 +323,10 @@ CPU_TYPES = \ # We deliberately omit SOM, since it does not work as a cross assembler. OBJ_FORMATS = \ aout \ - bout \ coff \ ecoff \ elf \ evax \ - hp300 \ ieee \ vms @@ -348,13 +340,9 @@ CPU_OBJ_VALID = \ case $$o in \ aout) \ case $$c in \ - a29k | arm | cris | i386 | m68k | ns32k | pdp11 | sparc | tahoe | tic30 | vax) \ + arm | cris | i386 | m68k | ns32k | pdp11 | sparc | tic30 | vax) \ valid=yes ;; \ esac ;; \ - bout) \ - case $$c in \ - i960) valid=yes ;; \ - esac ;; \ coff) valid=yes; \ case $$c in \ cris | i860 | mmix | sh64) \ @@ -369,10 +357,6 @@ CPU_OBJ_VALID = \ case $$c in \ alpha) valid=yes ;; \ esac ;; \ - hp300) \ - case $$c in \ - m68k) valid=yes ;; \ - esac ;; \ vms) \ case $$c in \ vax) valid=yes ;; \ @@ -466,7 +450,6 @@ HFILES = \ # CPU files in config. TARGET_CPU_CFILES = \ - config/tc-a29k.c \ config/tc-alpha.c \ config/tc-arc.c \ config/tc-arm.c \ @@ -479,7 +462,6 @@ TARGET_CPU_CFILES = \ config/tc-fr30.c \ config/tc-frv.c \ config/tc-h8300.c \ - config/tc-h8500.c \ config/tc-hppa.c \ config/tc-ia64.c \ config/tc-i370.c \ @@ -491,7 +473,6 @@ TARGET_CPU_CFILES = \ config/tc-m32r.c \ config/tc-m68hc11.c \ config/tc-m68k.c \ - config/tc-m88k.c \ config/tc-mcore.c \ config/tc-mips.c \ config/tc-mmix.c \ @@ -508,19 +489,15 @@ TARGET_CPU_CFILES = \ config/tc-sh.c \ config/tc-sh64.c \ config/tc-sparc.c \ - config/tc-tahoe.c \ config/tc-tic30.c \ config/tc-tic54x.c \ - config/tc-tic80.c \ config/tc-vax.c \ - config/tc-w65.c \ config/tc-v850.c \ config/tc-xstormy16.c \ config/tc-xtensa.c \ config/tc-z8k.c TARGET_CPU_HFILES = \ - config/tc-a29k.h \ config/tc-alpha.h \ config/tc-arc.h \ config/tc-arm.h \ @@ -533,7 +510,6 @@ TARGET_CPU_HFILES = \ config/tc-fr30.h \ config/tc-frv.h \ config/tc-h8300.h \ - config/tc-h8500.h \ config/tc-hppa.h \ config/tc-ia64.h \ config/tc-i370.h \ @@ -545,7 +521,6 @@ TARGET_CPU_HFILES = \ config/tc-m32r.h \ config/tc-m68hc11.h \ config/tc-m68k.h \ - config/tc-m88k.h \ config/tc-mcore.h \ config/tc-mips.h \ config/tc-mmix.h \ @@ -562,12 +537,9 @@ TARGET_CPU_HFILES = \ config/tc-sh.h \ config/tc-sh64.h \ config/tc-sparc.h \ - config/tc-tahoe.h \ config/tc-tic30.h \ config/tc-tic54x.h \ - config/tc-tic80.h \ config/tc-vax.h \ - config/tc-w65.h \ config/tc-v850.h \ config/tc-xstormy16.h \ config/tc-xtensa.h \ @@ -577,23 +549,19 @@ TARGET_CPU_HFILES = \ # OBJ files in config OBJ_FORMAT_CFILES = \ config/obj-aout.c \ - config/obj-bout.c \ config/obj-coff.c \ config/obj-ecoff.c \ config/obj-elf.c \ config/obj-evax.c \ - config/obj-hp300.c \ config/obj-ieee.c \ config/obj-som.c OBJ_FORMAT_HFILES = \ config/obj-aout.h \ - config/obj-bout.h \ config/obj-coff.h \ config/obj-ecoff.h \ config/obj-elf.h \ config/obj-evax.h \ - config/obj-hp300.h \ config/obj-ieee.h \ config/obj-som.h @@ -610,7 +578,6 @@ TARG_ENV_HFILES = \ config/te-epoc-pe.h \ config/te-generic.h \ config/te-go32.h \ - config/te-hp300.h \ config/te-hppa.h \ config/te-hppa64.h \ config/te-hppalinux64.h \ @@ -689,7 +656,7 @@ POTFILES = $(MULTI_CFILES) $(TARGET_ENV_ noinst_SCRIPTS = $(GDBINIT) EXTRA_SCRIPTS = .gdbinit -EXTRA_DIST = make-gas.com m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c +EXTRA_DIST = m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c DISTCLEANFILES = targ-cpu.h obj-format.h targ-env.h itbl-cpu.h cgen-desc.h # Now figure out from those variables how to compile and link. @@ -709,7 +676,7 @@ INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) # when building dependencies, because the dependency building is done # in a subdirectory. DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../../intl -DLOCALEDIR="\"$(datadir)/locale\"" -DEP_FLAGS = -DBFD_ASSEMBLER -DOBJ_MAYBE_ELF \ +DEP_FLAGS = -DOBJ_MAYBE_ELF \ -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) @@ -739,7 +706,7 @@ itbl_test_LDADD = itbl-tops.o itbl-test. CGEN_CPU_PREFIX = @cgen_cpu_prefix@ # Remake the info files. -MOSTLYCLEANFILES = $(STAGESTUFF) core stamp-mk.com \ +MOSTLYCLEANFILES = $(STAGESTUFF) core \ testsuite/*.o testsuite/*.out testsuite/gas.log testsuite/gas.sum \ testsuite/site.exp site.bak site.exp stage stage1 stage2 @@ -750,20 +717,6 @@ DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TA CONFIG_STATUS_DEPENDENCIES = $(BFDDIR)/configure.in $(srcdir)/configure.tgt AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -DEPTC_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h - -DEPTC_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h - -DEPTC_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h - DEPTC_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ @@ -931,18 +884,6 @@ DEPTC_h8300_elf = $(INCDIR)/symcat.h $(s subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/h8300.h \ $(INCDIR)/safe-ctype.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h -DEPTC_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ - $(INCDIR)/safe-ctype.h - -DEPTC_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ - $(INCDIR)/safe-ctype.h - DEPTC_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ @@ -1006,10 +947,6 @@ DEPTC_i860_elf = $(INCDIR)/symcat.h $(sr $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h -DEPTC_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/i960.h - DEPTC_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ @@ -1104,24 +1041,6 @@ DEPTC_m68k_elf = $(INCDIR)/symcat.h $(sr $(srcdir)/config/m68k-parse.h $(INCDIR)/elf/m68k.h \ $(INCDIR)/elf/reloc-macros.h -DEPTC_m68k_hp300 = $(INCDIR)/symcat.h $(srcdir)/config/obj-hp300.h \ - $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h subsegs.h dwarf2dbg.h dw2gencfi.h \ - $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h - -DEPTC_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h - -DEPTC_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - $(srcdir)/config/m88k-opcode.h - DEPTC_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ @@ -1336,20 +1255,6 @@ DEPTC_sparc_elf = $(INCDIR)/symcat.h $(s $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \ dwarf2dbg.h -DEPTC_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h - -DEPTC_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h - -DEPTC_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h - DEPTC_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h @@ -1390,16 +1295,6 @@ DEPTC_tic54x_elf = $(INCDIR)/symcat.h $( $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ $(BFDDIR)/libcoff.h -DEPTC_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h - -DEPTC_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h - DEPTC_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \ @@ -1418,16 +1313,6 @@ DEPTC_vax_elf = $(INCDIR)/symcat.h $(src $(INCDIR)/elf/vax.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/vax.h \ $(INCDIR)/safe-ctype.h -DEPTC_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h - -DEPTC_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ - subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h - DEPTC_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ @@ -1483,21 +1368,6 @@ DEPTC_mips_multi = $(DEPTC_mips_coff) $( $(DEPTC_mips_elf) DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf) -DEPOBJ_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - DEPOBJ_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ @@ -1643,17 +1513,6 @@ DEPOBJ_h8300_elf = $(INCDIR)/symcat.h $( $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - DEPOBJ_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ @@ -1713,9 +1572,6 @@ DEPOBJ_i860_elf = $(INCDIR)/symcat.h $(s $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ - $(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h - DEPOBJ_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ @@ -1786,22 +1642,6 @@ DEPOBJ_m68k_elf = $(INCDIR)/symcat.h $(s $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/symcat.h \ - $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h - -DEPOBJ_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - DEPOBJ_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ @@ -1989,21 +1829,6 @@ DEPOBJ_sparc_elf = $(INCDIR)/symcat.h $( $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h - -DEPOBJ_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h - -DEPOBJ_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - DEPOBJ_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h @@ -2041,17 +1866,6 @@ DEPOBJ_tic54x_elf = $(INCDIR)/symcat.h $ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - DEPOBJ_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h @@ -2067,17 +1881,6 @@ DEPOBJ_vax_elf = $(INCDIR)/symcat.h $(sr $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h -DEPOBJ_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ - $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h - -DEPOBJ_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ - struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h - DEPOBJ_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ @@ -2130,17 +1933,6 @@ DEPOBJ_mips_multi = $(DEPOBJ_mips_coff) $(DEPOBJ_mips_elf) DEPOBJ_cris_multi = $(DEPOBJ_cris_aout) $(DEPOBJ_cris_elf) -DEP_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h - DEP_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h @@ -2243,14 +2035,6 @@ DEP_h8300_elf = $(srcdir)/config/obj-elf $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h -DEP_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h - DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h @@ -2294,7 +2078,6 @@ DEP_i860_elf = $(srcdir)/config/obj-elf. $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h -DEP_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h DEP_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h @@ -2346,17 +2129,6 @@ DEP_m68k_elf = $(srcdir)/config/obj-elf. $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h -DEP_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h - DEP_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h \ $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h @@ -2491,17 +2263,6 @@ DEP_sparc_elf = $(srcdir)/config/obj-elf $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h -DEP_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h - -DEP_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h - -DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h - DEP_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h @@ -2529,14 +2290,6 @@ DEP_tic54x_elf = $(srcdir)/config/obj-el $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h -DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h - DEP_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h @@ -2548,14 +2301,6 @@ DEP_vax_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h -DEP_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h \ - $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h - -DEP_w65_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ - $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h - DEP_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/symcat.h \ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h @@ -2968,12 +2713,6 @@ uninstall-info: uninstall-info-recursive po/POTFILES.in: @MAINT@ Makefile for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \ && mv tmp $(srcdir)/po/POTFILES.in - -$(srcdir)/make-gas.com: stamp-mk.com -stamp-mk.com: vmsconf.sh Makefile - sh $(srcdir)/vmsconf.sh $(GENERIC_OBJS) > new-make.com - $(SHELL) $(srcdir)/../move-if-change new-make.com $(srcdir)/make-gas.com - touch stamp-mk.com diststuff: $(EXTRA_DIST) info all: info @@ -3024,8 +2763,6 @@ ecoff.o : ecoff.c ecoff.h $(INCDIR)/coff obj-aout.o : $(srcdir)/config/obj-aout.c $(COMPILE) -c $(srcdir)/config/obj-aout.c -obj-bout.o : $(srcdir)/config/obj-bout.c - $(COMPILE) -c $(srcdir)/config/obj-bout.c obj-coff.o: $(srcdir)/config/obj-coff.c $(COMPILE) -c $(srcdir)/config/obj-coff.c obj-ecoff.o : $(srcdir)/config/obj-ecoff.c @@ -3034,8 +2771,6 @@ obj-elf.o : $(srcdir)/config/obj-elf.c $(COMPILE) -c $(srcdir)/config/obj-elf.c obj-evax.o : $(srcdir)/config/obj-evax.c $(COMPILE) -c $(srcdir)/config/obj-evax.c -obj-hp300.o : $(srcdir)/config/obj-hp300.c - $(COMPILE) -c $(srcdir)/config/obj-hp300.c obj-ieee.o : $(srcdir)/config/obj-ieee.c $(COMPILE) -c $(srcdir)/config/obj-ieee.c obj-multi.o : $(srcdir)/config/obj-multi.c diff -uprN binutils-2.16.91.0.2/gas/makefile.vms binutils-2.16.91.0.3/gas/makefile.vms --- binutils-2.16.91.0.2/gas/makefile.vms 2005-04-29 10:50:28.000000000 -0700 +++ binutils-2.16.91.0.3/gas/makefile.vms 1969-12-31 16:00:00.000000000 -0800 @@ -1,115 +0,0 @@ -# -# makefile for gas -# -# Created by Klaus K"ampf, kkaempf@progis.de -# -CC=gcc -ifeq ($(ARCH),ALPHA) -ifeq ($(CC),gcc) -DEFS= -CFLAGS=/include=([],[-.bfd],[.config],[-.include],[-])$(DEFS) -LFLAGS= -LIBS=,GNU_CC_LIBRARY:libgcc/lib,sys$$library:vaxcrtl.olb/lib,GNU_CC_LIBRARY:crt0.obj -else -DEFS=/define=("table_size_of_flonum_powers_of_ten"="tabsiz_flonum_powers_of_ten",\ -"_bfd_generic_get_section_contents_in_window"="_bfd_generic_get_win_section_cont",\ -"_elf_section_from_bfd_section"="_bfd_elf_sec_from_bfd_sec","const=") -CFLAGS=/noopt/nodebug/include=([],[-.bfd],[.config],[-.include],[-])$(DEFS)\ -/warnings=disable=(missingreturn,implicitfunc,ptrmismatch,undefescap,longextern,duptypespec) -LFLAGS= -LIBS=,sys$$library:vaxcrtl.olb/lib -endif - -else # ARCH not ALPHA - -ifeq ($(CC),gcc) -DEFS= -CFLAGS=/include=([],[.config],[-.include],[-])$(DEFS) -LFLAGS= -LIBS=,GNU_CC_LIBRARY:libgcc/lib,sys$$library:vaxcrtl.olb/lib,GNU_CC_LIBRARY:crtbegin.obj,GNU_CC_LIBRARY:crtend.obj -#LIBS=,gnu_cc:[000000]gcclib.olb/lib,sys$$library:vaxcrtl.olb/lib -else -error DECC is broken on VAX -DEFS=/define=("table_size_of_flonum_powers_of_ten"="tabsiz_flonum_powers_of_ten","const=") -CFLAGS=/noopt/debug/include=([],[.config],[-.include],[-])$(DEFS)\ -/warnings=disable=(missingreturn,implicitfunc,ptrmismatch,undefescap,longextern,duptypespec) -LFLAGS= -LIBS=,sys$$library:vaxcrtl.olb/lib -endif -endif - - -OBJS=targ-cpu.obj,obj-format.obj,atof-targ.obj,app.obj,as.obj,atof-generic.obj,\ - cond.obj,depend.obj,expr.obj,flonum-konst.obj,flonum-copy.obj,\ - flonum-mult.obj,frags.obj,hash.obj,input-file.obj,input-scrub.obj,\ - literal.obj,messages.obj,output-file.obj,read.obj,subsegs.obj,symbols.obj,\ - write.obj,listing.obj,ecoff.obj,stabs.obj,sb.obj,macro.obj,ehopt.obj - -LIBIBERTY = [-.libiberty]libiberty.olb - -ifeq ($(ARCH),ALPHA) -LIBBFD = [-.bfd]libbfd.olb -LIBOPCODES = [-.opcodes]libopcodes.olb -BFDDEP = [-.bfd]bfd.h -else -LIBBFD = -LIBOPCODES = -BFDDEP = -endif - -all: config.status $(BFDDEP) as.exe - -as.exe: $(OBJS) $(LIBOPCODES) $(LIBBFD) $(LIBIBERTY) -ifeq ($(ARCH),ALPHA) - link$(LFLAGS)/exe=$@ $(OBJS),$(LIBOPCODES)/lib,$(LIBBFD)/lib,$(LIBIBERTY)/lib$(LIBS) -else - link$(LFLAGS)/exe=$@ $(OBJS),$(LIBIBERTY)/lib$(LIBS) -endif - -config.status: - $$ @config-gas - -ifeq ($(ARCH),ALPHA) -CPU=alpha -OBJFORMAT=evax -FLTFORMAT=ieee -else -CPU=vax -OBJFORMAT=vms -FLTFORMAT=vax -endif - -targ-cpu.c: [.config]tc-$(CPU).c - copy $< $@ -targ-cpu.h: [.config]tc-$(CPU).h - copy $< $@ -targ-env.h: [.config]te-generic.h - copy $< $@ -obj-format.h: [.config]obj-$(OBJFORMAT).h - copy $< $@ -obj-format.c: [.config]obj-$(OBJFORMAT).c - copy $< $@ -atof-targ.c: [.config]atof-$(FLTFORMAT).c - copy $< $@ - -targ-cpu.obj: targ-cpu.c targ-cpu.h [.config]atof-vax.c - -[-.bfd]bfd.h: - $(CD) [-.bfd] - gmake -f makefile.vms "CC=$(CC)" - $(CD) [-.gas] - -install: as.exe - $(CP) $^ GNU_ROOT\:[BIN] - -clean: - $$ purge - $(RM) *.obj; - $(RM) *.exe; - $(RM) atof-targ.c; - $(RM) obj-format.c; - $(RM) obj-format.h; - $(RM) targ-env.h; - $(RM) targ-cpu.h; - $(RM) targ-cpu.c; - $(RM) config.status; diff -uprN binutils-2.16.91.0.2/gas/messages.c binutils-2.16.91.0.3/gas/messages.c --- binutils-2.16.91.0.2/gas/messages.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/messages.c 2005-08-22 12:27:42.000000000 -0700 @@ -1,6 +1,6 @@ /* messages.c - error reporter - Copyright 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001, - 2003, 2004 + 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -150,16 +150,10 @@ as_perror (const char *gripe, /* Unpunc as_show_where (); fprintf (stderr, gripe, filename); errno = saved_errno; -#ifdef BFD_ASSEMBLER errtxt = bfd_errmsg (bfd_get_error ()); -#else - errtxt = xstrerror (errno); -#endif fprintf (stderr, ": %s\n", errtxt); errno = 0; -#ifdef BFD_ASSEMBLER bfd_set_error (bfd_error_no_error); -#endif } /* Send to stderr a string as a warning, and locate warning @@ -233,7 +227,7 @@ as_warn (const char *format, ...) if (!flag_no_warnings) { va_start (args, format); - vsprintf (buffer, format, args); + vsnprintf (buffer, sizeof (buffer), format, args); va_end (args); as_warn_internal ((char *) NULL, 0, buffer); } @@ -250,7 +244,7 @@ as_warn (format, va_alist) if (!flag_no_warnings) { va_start (args); - vsprintf (buffer, format, args); + vsnprintf (buffer, sizeof (buffer), format, args); va_end (args); as_warn_internal ((char *) NULL, 0, buffer); } @@ -271,7 +265,7 @@ as_warn_where (char *file, unsigned int if (!flag_no_warnings) { va_start (args, format); - vsprintf (buffer, format, args); + vsnprintf (buffer, sizeof (buffer), format, args); va_end (args); as_warn_internal (file, line, buffer); } @@ -290,7 +284,7 @@ as_warn_where (file, line, format, va_al if (!flag_no_warnings) { va_start (args); - vsprintf (buffer, format, args); + vsnprintf (buffer, sizeof (buffer), format, args); va_end (args); as_warn_internal (file, line, buffer); } @@ -332,7 +326,7 @@ as_bad (const char *format, ...) char buffer[2000]; va_start (args, format); - vsprintf (buffer, format, args); + vsnprintf (buffer, sizeof (buffer), format, args); va_end (args); as_bad_internal ((char *) NULL, 0, buffer); @@ -348,7 +342,7 @@ as_bad (format, va_alist) char buffer[2000]; va_start (args); - vsprintf (buffer, format, args); + vsnprintf (buffer, sizeof (buffer), format, args); va_end (args); as_bad_internal ((char *) NULL, 0, buffer); @@ -367,7 +361,7 @@ as_bad_where (char *file, unsigned int l char buffer[2000]; va_start (args, format); - vsprintf (buffer, format, args); + vsnprintf (buffer, sizeof (buffer), format, args); va_end (args); as_bad_internal (file, line, buffer); @@ -385,7 +379,7 @@ as_bad_where (file, line, format, va_ali char buffer[2000]; va_start (args); - vsprintf (buffer, format, args); + vsnprintf (buffer, sizeof (buffer), format, args); va_end (args); as_bad_internal (file, line, buffer); @@ -477,13 +471,11 @@ sprint_value (char *buf, valueT val) sprintf (buf, "%ld", (long) val); return; } -#ifdef BFD_ASSEMBLER if (sizeof (val) <= sizeof (bfd_vma)) { sprintf_vma (buf, val); return; } -#endif abort (); } @@ -504,14 +496,12 @@ as_internal_value_out_of_range (char * if (prefix == NULL) prefix = ""; -#ifdef BFD_ASSEMBLER if ( val < HEX_MAX_THRESHOLD && min < HEX_MAX_THRESHOLD && max < HEX_MAX_THRESHOLD && val > HEX_MIN_THRESHOLD && min > HEX_MIN_THRESHOLD && max > HEX_MIN_THRESHOLD) -#endif { /* xgettext:c-format */ err = _("%s out of range (%d is not between %d and %d)"); @@ -523,7 +513,6 @@ as_internal_value_out_of_range (char * as_warn_where (file, line, err, prefix, (int) val, (int) min, (int) max); } -#ifdef BFD_ASSEMBLER else { char val_buf [sizeof (val) * 3 + 2]; @@ -545,7 +534,6 @@ as_internal_value_out_of_range (char * else as_warn_where (file, line, err, prefix, val_buf, min_buf, max_buf); } -#endif } void diff -uprN binutils-2.16.91.0.2/gas/obj.h binutils-2.16.91.0.3/gas/obj.h --- binutils-2.16.91.0.2/gas/obj.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/obj.h 2005-08-22 12:27:42.000000000 -0700 @@ -2,7 +2,7 @@ format backends. Copyright 1987, 1990, 1991, 1992, 1993, 1995, 1996, 1997, 1999, 2000, - 2002, 2003, 2004 Free Software Foundation, Inc. + 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -29,13 +29,6 @@ void obj_emit_symbols (char **where, sym #ifndef obj_read_begin_hook void obj_read_begin_hook (void); #endif -#ifndef BFD_ASSEMBLER -void obj_crawl_symbol_chain (object_headers * headers); -void obj_header_append (char **where, object_headers * headers); -#ifndef obj_pre_write_hook -void obj_pre_write_hook (object_headers * headers); -#endif -#endif #ifndef obj_symbol_new_hook void obj_symbol_new_hook (symbolS * symbolP); @@ -45,7 +38,6 @@ void obj_symbol_to_chars (char **where, extern const pseudo_typeS obj_pseudo_table[]; -#ifdef BFD_ASSEMBLER struct format_ops { int flavor; unsigned dfl_leading_underscore : 1; @@ -89,6 +81,5 @@ extern const struct format_ops aout_form #ifndef this_format COMMON const struct format_ops *this_format; #endif -#endif /* end of obj.h */ diff -uprN binutils-2.16.91.0.2/gas/output-file.c binutils-2.16.91.0.3/gas/output-file.c --- binutils-2.16.91.0.2/gas/output-file.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/output-file.c 2005-08-22 12:27:42.000000000 -0700 @@ -1,6 +1,6 @@ /* output-file.c - Deal with the output file Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1996, 1998, 1999, 2001, - 2003, 2004 Free Software Foundation, Inc. + 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -25,18 +25,10 @@ #include "output-file.h" -#ifdef BFD_HEADERS -#define USE_BFD -#endif - -#ifdef BFD_ASSEMBLER -#define USE_BFD #ifndef TARGET_MACH #define TARGET_MACH 0 #endif -#endif -#ifdef USE_BFD #include "bfd.h" bfd *stdoutput; @@ -56,9 +48,7 @@ output_file_create (char *name) } bfd_set_format (stdoutput, bfd_object); -#ifdef BFD_ASSEMBLER bfd_set_arch_mach (stdoutput, TARGET_ARCH, TARGET_MACH); -#endif if (flag_traditional_format) stdoutput->flags |= BFD_TRADITIONAL_FORMAT; } @@ -66,7 +56,6 @@ output_file_create (char *name) void output_file_close (char *filename) { -#ifdef BFD_ASSEMBLER /* Close the bfd. */ if (bfd_close (stdoutput) == 0) { @@ -74,84 +63,5 @@ output_file_close (char *filename) as_perror (_("FATAL: can't close %s\n"), filename); exit (EXIT_FAILURE); } -#else - /* Close the bfd without getting bfd to write out anything by itself. */ - if (bfd_close_all_done (stdoutput) == 0) - { - as_perror (_("FATAL: can't close %s\n"), filename); - exit (EXIT_FAILURE); - } -#endif stdoutput = NULL; /* Trust nobody! */ } - -#ifndef BFD_ASSEMBLER -void -output_file_append (char *where ATTRIBUTE_UNUSED, - long length ATTRIBUTE_UNUSED, - char *filename ATTRIBUTE_UNUSED) -{ - abort (); -} -#endif - -#else - -static FILE *stdoutput; - -void -output_file_create (char *name) -{ - if (name[0] == '-' && name[1] == '\0') - { - stdoutput = stdout; - return; - } - - stdoutput = fopen (name, FOPEN_WB); - if (stdoutput == NULL) - { -#ifdef BFD_ASSEMBLER - bfd_set_error (bfd_error_system_call); -#endif - as_perror (_("FATAL: can't create %s"), name); - exit (EXIT_FAILURE); - } -} - -void -output_file_close (char *filename) -{ - if (EOF == fclose (stdoutput)) - { -#ifdef BFD_ASSEMBLER - bfd_set_error (bfd_error_system_call); -#endif - as_perror (_("FATAL: can't close %s"), filename); - exit (EXIT_FAILURE); - } - - /* Trust nobody! */ - stdoutput = NULL; -} - -void -output_file_append (char * where, long length, char * filename) -{ - for (; length; length--, where++) - { - (void) putc (*where, stdoutput); - - if (ferror (stdoutput)) - { -#ifdef BFD_ASSEMBLER - bfd_set_error (bfd_error_system_call); -#endif - as_perror (_("Failed to emit an object byte"), filename); - as_fatal (_("can't continue")); - } - } -} - -#endif - diff -uprN binutils-2.16.91.0.2/gas/po/POTFILES.in binutils-2.16.91.0.3/gas/po/POTFILES.in --- binutils-2.16.91.0.2/gas/po/POTFILES.in 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/po/POTFILES.in 2005-08-22 12:27:43.000000000 -0700 @@ -16,8 +16,6 @@ config/e-mipsecoff.c config/e-mipself.c config/obj-aout.c config/obj-aout.h -config/obj-bout.c -config/obj-bout.h config/obj-coff.c config/obj-coff.h config/obj-ecoff.c @@ -26,14 +24,10 @@ config/obj-elf.c config/obj-elf.h config/obj-evax.c config/obj-evax.h -config/obj-hp300.c -config/obj-hp300.h config/obj-ieee.c config/obj-ieee.h config/obj-som.c config/obj-som.h -config/tc-a29k.c -config/tc-a29k.h config/tc-alpha.c config/tc-alpha.h config/tc-arc.c @@ -58,8 +52,6 @@ config/tc-frv.c config/tc-frv.h config/tc-h8300.c config/tc-h8300.h -config/tc-h8500.c -config/tc-h8500.h config/tc-hppa.c config/tc-hppa.h config/tc-i370.c @@ -82,8 +74,6 @@ config/tc-m68hc11.c config/tc-m68hc11.h config/tc-m68k.c config/tc-m68k.h -config/tc-m88k.c -config/tc-m88k.h config/tc-mcore.c config/tc-mcore.h config/tc-mips.c @@ -116,20 +106,14 @@ config/tc-sh.c config/tc-sh.h config/tc-sparc.c config/tc-sparc.h -config/tc-tahoe.c -config/tc-tahoe.h config/tc-tic30.c config/tc-tic30.h config/tc-tic54x.c config/tc-tic54x.h -config/tc-tic80.c -config/tc-tic80.h config/tc-v850.c config/tc-v850.h config/tc-vax.c config/tc-vax.h -config/tc-w65.c -config/tc-w65.h config/tc-xstormy16.c config/tc-xstormy16.h config/tc-xtensa.c diff -uprN binutils-2.16.91.0.2/gas/read.c binutils-2.16.91.0.3/gas/read.c --- binutils-2.16.91.0.2/gas/read.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/read.c 2005-08-22 12:27:42.000000000 -0700 @@ -72,7 +72,6 @@ die horribly; #endif #ifndef LEX_AT -/* The m88k unfortunately uses @ as a label beginner. */ #define LEX_AT 0 #endif @@ -98,7 +97,6 @@ die horribly; #endif #ifndef LEX_DOLLAR -/* The a29k assembler does not permits labels to start with $. */ #define LEX_DOLLAR 3 #endif @@ -246,7 +244,6 @@ read_begin (void) } #ifndef TC_ADDRESS_BYTES -#ifdef BFD_ASSEMBLER #define TC_ADDRESS_BYTES address_bytes static inline int @@ -261,7 +258,6 @@ address_bytes (void) return n; } #endif -#endif /* Set up pseudo-op tables. */ @@ -823,8 +819,8 @@ read_a_source_file (char *name) #endif if (NO_PSEUDO_DOT || flag_m68k_mri) { - /* The MRI assembler and the m88k use pseudo-ops - without a period. */ + /* The MRI assembler uses pseudo-ops without + a period. */ pop = (pseudo_typeS *) hash_find (po_hash, s); if (pop != NULL && pop->poc_handler == NULL) pop = NULL; @@ -1265,11 +1261,7 @@ do_align (int n, char *fill, int len, in fill pattern. BYTES_P is non-zero if the alignment value should be interpreted as the byte boundary, rather than the power of 2. */ -#ifdef BFD_ASSEMBLER #define ALIGN_LIMIT (stdoutput->arch_info->bits_per_address - 1) -#else -#define ALIGN_LIMIT 15 -#endif static void s_align (int arg, int bytes_p) @@ -1449,9 +1441,7 @@ s_comm_internal (int param, temp = get_absolute_expr (&exp); size = temp; -#ifdef BFD_ASSEMBLER size &= ((offsetT) 2 << (stdoutput->arch_info->bits_per_address - 1)) - 1; -#endif if (exp.X_op == O_absent) { as_bad (_("missing size expression")); @@ -1698,9 +1688,17 @@ s_app_line (int ignore ATTRIBUTE_UNUSED) /* The given number is that of the next line. */ l = get_absolute_expression () - 1; - if (l < 0) + + if (l < -1) /* Some of the back ends can't deal with non-positive line numbers. - Besides, it's silly. */ + Besides, it's silly. GCC however will generate a line number of + zero when it is pre-processing builtins for assembler-with-cpp files: + + # 0 "" + + We do not want to barf on this, especially since such files are used + in the GCC and GDB testsuites. So we check for negative line numbers + rather than non-positive line numbers. */ as_warn (_("line numbers must be positive; line number %d rejected"), l + 1); else @@ -2007,7 +2005,6 @@ s_linkonce (int ignore ATTRIBUTE_UNUSED) #ifdef obj_handle_link_once obj_handle_link_once (type); #else /* ! defined (obj_handle_link_once) */ -#ifdef BFD_ASSEMBLER { flagword flags; @@ -2037,9 +2034,6 @@ s_linkonce (int ignore ATTRIBUTE_UNUSED) as_bad (_("bfd_set_section_flags: %s"), bfd_errmsg (bfd_get_error ())); } -#else /* ! defined (BFD_ASSEMBLER) */ - as_warn (_(".linkonce is not supported for this object file format")); -#endif /* ! defined (BFD_ASSEMBLER) */ #endif /* ! defined (obj_handle_link_once) */ demand_empty_rest_of_line (); @@ -2062,11 +2056,9 @@ bss_alloc (symbolS *symbolP, addressT si { bss_seg = subseg_new (".sbss", 1); seg_info (bss_seg)->bss = 1; -#ifdef BFD_ASSEMBLER if (!bfd_set_section_flags (stdoutput, bss_seg, SEC_ALLOC)) as_warn (_("error setting flags for \".sbss\": %s"), bfd_errmsg (bfd_get_error ())); -#endif } } #endif @@ -2479,8 +2471,7 @@ s_org (int ignore ATTRIBUTE_UNUSED) called by the obj-format routine which handles section changing when in MRI mode. It will create a new section, and return it. It will set *TYPE to the section type: one of 'C' (code), 'D' (data), - 'M' (mixed), or 'R' (romable). If BFD_ASSEMBLER is defined, the - flags will be set in the section. */ + 'M' (mixed), or 'R' (romable). The flags will be set in the section. */ void s_mri_sect (char *type ATTRIBUTE_UNUSED) @@ -2534,7 +2525,6 @@ s_mri_sect (char *type ATTRIBUTE_UNUSED) as_bad (_("unrecognized section type")); ++input_line_pointer; -#ifdef BFD_ASSEMBLER { flagword flags; @@ -2553,7 +2543,6 @@ s_mri_sect (char *type ATTRIBUTE_UNUSED) bfd_errmsg (bfd_get_error ())); } } -#endif } /* Ignore the HP type. */ @@ -3193,9 +3182,6 @@ pseudo_set (symbolS *symbolP) { expressionS exp; segT seg; -#if (defined (OBJ_AOUT) || defined (OBJ_BOUT)) && ! defined (BFD_ASSEMBLER) - int ext; -#endif /* OBJ_AOUT or OBJ_BOUT */ know (symbolP); /* NULL pointer is logic error. */ @@ -3227,9 +3213,6 @@ pseudo_set (symbolS *symbolP) as_bad ("attempt to set value of section symbol"); return; } -#if (defined (OBJ_AOUT) || defined (OBJ_BOUT)) && ! defined (BFD_ASSEMBLER) - ext = S_IS_EXTERNAL (symbolP); -#endif /* OBJ_AOUT or OBJ_BOUT */ switch (exp.X_op) { @@ -3286,13 +3269,6 @@ pseudo_set (symbolS *symbolP) set_zero_frag (symbolP); break; } - -#if (defined (OBJ_AOUT) || defined (OBJ_BOUT)) && ! defined (BFD_ASSEMBLER) - if (ext) - S_SET_EXTERNAL (symbolP); - else - S_CLEAR_EXTERNAL (symbolP); -#endif /* OBJ_AOUT or OBJ_BOUT */ } /* cons() @@ -3712,16 +3688,8 @@ emit_expr (expressionS *exp, unsigned in { memset (p, 0, nbytes); - /* Now we need to generate a fixS to record the symbol value. - This is easy for BFD. For other targets it can be more - complex. For very complex cases (currently, the HPPA and - NS32K), you can define TC_CONS_FIX_NEW to do whatever you - want. For simpler cases, you can define TC_CONS_RELOC to be - the name of the reloc code that should be stored in the fixS. - If neither is defined, the code uses NO_RELOC if it is - defined, and otherwise uses 0. */ + /* Now we need to generate a fixS to record the symbol value. */ -#ifdef BFD_ASSEMBLER #ifdef TC_CONS_FIX_NEW TC_CONS_FIX_NEW (frag_now, p - frag_now->fr_literal, nbytes, exp); #else @@ -3751,24 +3719,6 @@ emit_expr (expressionS *exp, unsigned in 0, r); } #endif -#else -#ifdef TC_CONS_FIX_NEW - TC_CONS_FIX_NEW (frag_now, p - frag_now->fr_literal, nbytes, exp); -#else - /* Figure out which reloc number to use. Use TC_CONS_RELOC if - it is defined, otherwise use NO_RELOC if it is defined, - otherwise use 0. */ -#ifndef TC_CONS_RELOC -#ifdef NO_RELOC -#define TC_CONS_RELOC NO_RELOC -#else -#define TC_CONS_RELOC 0 -#endif -#endif - fix_new_exp (frag_now, p - frag_now->fr_literal, (int) nbytes, exp, 0, - TC_CONS_RELOC); -#endif /* TC_CONS_FIX_NEW */ -#endif /* BFD_ASSEMBLER */ } } @@ -5199,10 +5149,7 @@ do_s_func (int end_p, const char *defaul asprintf (&label, "%s%s", default_prefix, name); else { - char leading_char = 0; -#ifdef BFD_ASSEMBLER - leading_char = bfd_get_symbol_leading_char (stdoutput); -#endif + char leading_char = bfd_get_symbol_leading_char (stdoutput); /* Missing entry point, use function's name with the leading char prepended. */ if (leading_char) diff -uprN binutils-2.16.91.0.2/gas/README binutils-2.16.91.0.3/gas/README --- binutils-2.16.91.0.2/gas/README 2004-01-14 13:07:45.000000000 -0800 +++ binutils-2.16.91.0.3/gas/README 2005-08-22 12:27:41.000000000 -0700 @@ -57,14 +57,6 @@ facility to list all supported host and abbreviations to full names; you can read the script, if you wish, or you can use it to test your guesses on abbreviations--for example: - % sh config.sub sun4 - sparc-sun-sunos411 - % sh config.sub sun3 - m68k-sun-sunos411 - % sh config.sub decstation - mips-dec-ultrix42 - % sh config.sub hp300bsd - m68k-hp-bsd % sh config.sub i386v i386-unknown-sysv % sh config.sub i786v @@ -139,75 +131,6 @@ The `--enable' options recognized by sof been done, it's already the default. So generally you won't need to use this option. -Supported platforms -=================== - -At this point I believe gas to be ANSI only code for most target cpu's. That -is, there should be relatively few, if any host system dependencies. So -porting (as a cross-assembler) to hosts not yet supported should be fairly -easy. Porting to a new target shouldn't be too tough if it's a variant of one -already supported. - -Native assembling should work on: - - sun3 - sun4 - 386bsd - bsd/386 - delta (m68k-sysv from Motorola) - delta88 (m88k-sysv from Motorola) - GNU/linux - m68k hpux 8.0 (hpux 7.0 may be a problem) - vax bsd, ultrix, vms - hp9000s300 - decstation - irix 4 - irix 5 - miniframe (m68k-sysv from Convergent Technologies) - i386-aix (ps/2) - hppa (hpux 4.3bsd, osf1) - AIX - unixware - sco 3.2v4.2 - sco openserver 5.0 (a.k.a. 3.2v5.0 ) - sparc solaris - ns32k (netbsd, lites) - -I believe that gas as a cross-assembler can currently be targeted for -most of the above hosts, plus - - arm - decstation-bsd (a.out format, to be used in BSD 4.4) - ebmon29k - go32 (DOS on i386, with DJGPP -- old a.out version) - H8/300, H8/500 (Hitachi) - i386-aix (ps/2) - i960-coff - mips ecoff (decstation-ultrix, iris, mips magnum, mips-idt-ecoff) - Mitsubishi d10v and d30v - nindy960 - powerpc EABI - SH (Hitachi) - sco386 - TI tic30 and tic80 - vax bsd or ultrix? - vms - vxworks68k - vxworks960 - z8000 (Zilog) - -MIPS ECOFF support has been added, but GAS will not run a C-style -preprocessor. If you want that, rename your file to have a ".S" suffix, and -run gcc on it. Or run "gcc -xassembler-with-cpp foo.s". - -Support for ELF should work now for sparc, hppa, i386, alpha, m68k, -MIPS, powerpc. - -Support for sequent (ns32k), tahoe, i860 may be suffering from bitrot. - -If you try out gas on some host or target not listed above, please let me know -the results, so I can update the list. - Compiler Support Hacks ====================== diff -uprN binutils-2.16.91.0.2/gas/README-vms binutils-2.16.91.0.3/gas/README-vms --- binutils-2.16.91.0.2/gas/README-vms 2004-01-14 13:07:45.000000000 -0800 +++ binutils-2.16.91.0.3/gas/README-vms 1969-12-31 16:00:00.000000000 -0800 @@ -1,248 +0,0 @@ - This document explains a couple of things that are specific to VMS. -There are currently two "chapters", the first deals with cross-assembly -issues, and the second deals with the VMS debugger and GNU-CC. - - -*********************************************************************** -****************** Notes for Cross Assembly with VMS ****************** -*********************************************************************** - - If you wish to build gas on a non-VMS system to cross-assemble, -you should use: - -configure ${hosttype} -target=vms - -and then follow the usual procedure. The object files generated on -Unix will be correct from a binary point of view, but the real trick is -getting them to the VMS machine. The format of the object file is -a variable-length record, but each record contains binary data. gas -writes the records in the same format that VMS would expect, -namely a two-byte count followed by that number of bytes. - - If you try to copy the file to a VMS system using ftp, the ftp -protocol will screw up the file by looking for nulls (record terminator for -unix) and it will insert it's own record terminators at that point. This -will obviously corrupt the file. - - If you try to transfer the file with ftp in binary mode, the -file itself will not be corrupt, but VMS will think that the file contains -fixed-length records of 512 bytes. You can use the public-domain FILE -utility to change this with a command like: - -$FILE foo.o/type=variable - -If you do not have this utility available, the following program can be -used to perform this task: - - #include - - #define RME$C_SETRFM 1 - - struct FAB * fab; - - main(int argc, char * argv[]){ - int i, status; - fab = (struct FAB*) malloc(sizeof(struct FAB)); - *fab = cc$rms_fab; /* initialize FAB*/ - fab->fab$b_fac = FAB$M_PUT; - fab->fab$l_fop |= FAB$M_ESC; - fab->fab$l_ctx = RME$C_SETRFM; - fab->fab$w_ifi = 0; - for(i=1;ifab$l_fna = argv[i]; - fab->fab$b_fns = strlen(argv[i]); - status = sys$open(fab,0,0); - if((status & 7) != 1) lib$signal(status); - fab->fab$b_rfm = FAB$C_VAR; - status = sys$modify(fab,0,0); - if((status & 7) != 1) lib$signal(status); - status = sys$close(fab,0,0); - if((status & 7) != 1) lib$signal(status); - }; - } - - If you have NFS running on the VMS system, what you need to do -depends upon which NFS software you are running on the VMS system. There -are a number of different TCP/IP packages for VMS available, and only very -limited testing has been performed. In the tests that has been done so -far, the contents of the file will always be correct when transferring the -file via NFS, but the record attributes may or may not be correct. - - One proprietary TCP/IP/NFS package for VMS is known to -automatically fix the record attributes of the object file if you NFS mount -a unix disk from the VMS system, and if the file has a ".obj" extension on -the unix system. Other TCP/IP packages might do this for you as well, but -they have not been checked. - -No matter what method you use to get the file to the VMS system, it is -always a good idea to check to make sure that it is the correct type by -doing a "$dir/full" on the object file. The desired record attributes will -be "None". Undesirable record attributes will be "Stream-LF" or anything -else. - -Once you get the files on the VMS system, you can check their integrity -with the "$anal/obj" command. (Naturally at some point you should rename -the .o files to .obj). As far as the debugger is concerned, the records -will be correct, but the debugger will not be able to find the source files, -since it only has the file name, and not the full directory specification. -You must give the debugger some help by telling it which directories to -search for the individual files - once you have done this you should be -able to proceed normally. - - It is a good idea to use names for your files which will be valid -under VMS, since otherwise you will have no way of getting the debugger to -find the source file when deugging. - -The reason for this is that the object file normally contins specific -information that the debugger can use to positively identify a file, and if -you are assembling on a unix system this information simply does not exist -in a meaningful way. You must help the debugger by using the "SET FILE=" -command to tell the debugger where to look for source files. The debugger -records will be correct, except that the debugger will not be initially -able to find the source files. You can use the "SET FILE" command to tell -the debugger where to look for the source files. - -I have only tested this with a SVr4 i486 machine, and everything seems to -work OK, with the limited testing that I have done. Other machines may -or may not work. You should read the chapters on cross-compilers in the gcc -manual before fooling with this. Since gas does not need to do any floating -point arithmetic, the floating point constants that are generated here should -be correct - the only concern is with constant folding in the main compiler. -The range and precision of floats and doubles are similar on the 486 (with -a builtin 80387) and the VAX, although there is a factor of 2 to 4 -difference in the range. The double, as implemented on the 486, is quite -similar to the G_FLOAT on the VAX. - -*********************************************************************** -****************** Notes for using GNU CC with the VMS debugger******** -*********************************************************************** - - - 1) You should be aware that GNU-C, as with any other decent compiler, -will do things when optimization is turned on that you may not expect. -Sometimes intermediate results are not written to variables, if they are only -used in one place, and sometimes variables that are not used at all will not be -written to the symbol table. Also, parameters to inline functions are often -inaccessible. You can see the assembly code equivalent by using KP7 in the -debugger, and from this you can tell if in fact a variable should have the -value that you expect. You can find out if a variable lives withing a register -by doing a 'show symbol/addr'. - - 2) Overly complex data types, such as: - -int (*(*(*(*(*(* sarr6)[1])[1])[2])[3])[4])[5]; - -will not be debugged properly, since the debugging record overflows an internal -debugger buffer. gcc-as will convert these to *void as far as the debugger -symbol table is concerned, which will avoid any problems, and the assembler -will give you a message informing you that this has happened. - - 3) You must, of course, compile and link with /debug. If you link -without debug, you still get traceback table in the executable, but there is no -symbol table for variables. - - 4) Included in the patches to VMS.C are fixes to two bugs that are -unrelated to the changes that I have made. One of these made it impossible to -debug small programs sometimes, and the other caused the debugger to become -confused about which routine it was in, and give this incorrect info in -tracebacks. - - 5) If you are using the GNU-C++ compiler, you should modify the -compiler driver file GNU_CC:[000000]GCC.COM (or GXX.COM). If you have a -separate GXX.COM, then you need to change one line in GXX.COM to: -$ if f$locate("D",p2) .ne. P2_Length then Debug = " ""-G0""" - Notice zero---> ^ -If you are using a GCC.COM that does both C and C++, add the following lines to -GCC.COM: - -$! -$! Use old style debugging records for VMS -$! -$ if (Debug.nes."" ).and. Plus then Debug = " ""-G0""" - -after the variables Plus and Debug are set. The reason for this, is that C++ -compiler by default generates debugging records that are more complex, -with many new syntactical elements that allow for the new features of the -language. The -G0 switch tells the C++ compiler to use the old style debugging -records. Until the debugger understands C++ there is not any point to try and -use the expanded syntax. - - 6) When you have nested scopes, i.e.: -main(){ - int i; - {int i; - {int i; -};};} -and you say "EXAM i" the debugger needs to figure out which variable you -actually want to reference. I have arranged things to define a block to the -debugger when you use brackets to enter a new scope, so in the example above, -the variables would be described as: -TEST\main\i -TEST\main\$0\i -TEST\main\$0\$0\i -At each level, the block name is a number with a dollar sign prefix, the -numbers start with 0 and count upward. When you say EXAM i, the debugger looks -at the current PC, and decides which block it is currently in. It works from -the innermost level outward until it finds a block that has the variable "i" -defined. You can always specify the scope explicitly. - - 7) With C++, there can be a lot of inline functions, and it would be -rather restrictive to force the user to debug the program by converting all of -the inline functions to normal functions. What I have done is to essentially -"add" (with the debugger) source lines from the include files that contain the -inline functions. Thus when you step into an inline function it appears as if -you have called the function, and you can examine variables and so forth. -There are several *very* important differences, however. First of all, since -there is no function call involved, you cannot step over the inline function -call - you always step into it. Secondly, since the same source lines are used -in many locations, there is a separate copy of the source for *each* usage. -Without this, breakpoints do not work, since we must have a 1-to-1 mapping -between source lines and PC. - Since you cannot step over inline function calls, it can be a real pain -if you are not really interested in what is going on for that function call. -What I have done is to use the "-D" switch for the assembler to toggle the -following behavior. With the "-D" switch, all inline functions are included in -the object file, and you can debug everything. Without the "-D" switch -(default case with VMS implementation), inline functions are included *only* if -they did not come from system header files (i.e. from GNU_CC_INCLUDE: or -GNU_GXX_INCLUDE:). Thus, without the switch the user only debugs his/her own -inline functions, and not the system ones. (This is especially useful if you do -a lot of stream I/O in C++). This probably will not provide enough granularity -for many users, but for now this is still somewhat experimental, and I would -like to reflect upon it and get some feedback before I go any further. -Possible solutions include an interactive prompting, a logical name, or a new -command line option in gcc.c (which is then passed through somehow to the guts -of the assembler). - The inline functions from header files appear after the source code -for the source file. This has the advantage that the source file itself is -numbered with the same line numbers that you get with an editor. In addition, -the entire header file is not included, since the assembler makes a list of -the min and max source lines that are used, and only includes those lines from -the first to the last actually used. (It is easy to change it to include the -whole file). - - 8) When you are debugging C++ objects, the object "this" is refered to -as "$this". Actually, the compiler writes it as ".this", but the period is -not good for the debugger, so I have a routine to convert it to a $. (It -actually converts all periods to $, but only for variables, since this was -intended to allow us to access "this". - - 9) If you use the asm("...") keyword for global symbols, you will not -be able to see that symbol with the debugger. The reason is that there are two -records for the symbol stored in the data structures of the assembler. One -contains the info such as psect number and offset, and the other one contains -the information having to do with the data type of the variable. In order to -debug as symbol, you need to be able to coorelate these records, and the only -way to do this is by name. The record with the storage attributes will take -the name used in the asm directive, and the record that specifies the data type -has the actual variable name, and thus when you use the asm directive to change -a variable name, the symbol becomes invisible. - - 10) Older versions of the compiler ( GNU-C 1.37.92 and earlier) place -global constants in the text psect. This is unfortunate, since to the linker -this appears to be an entry point. I sent a patch to the compiler to RMS, -which will generate a .const section for these variables, and patched the -assembler to put these variables into a psect just like that for normal -variables, except that they are marked NOWRT. static constants are still -placed in the text psect, since there is no need for any external access. diff -uprN binutils-2.16.91.0.2/gas/stabs.c binutils-2.16.91.0.3/gas/stabs.c --- binutils-2.16.91.0.2/gas/stabs.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/stabs.c 2005-08-22 12:27:42.000000000 -0700 @@ -107,11 +107,9 @@ get_stab_string_offset (const char *stri p = frag_more (1); *p = 0; retval = seg_info (seg)->stabu.stab_string_size = 1; -#ifdef BFD_ASSEMBLER bfd_set_section_flags (stdoutput, seg, SEC_READONLY | SEC_DEBUGGING); if (seg->name == stabstr_secname) seg->name = xstrdup (stabstr_secname); -#endif } if (length > 0) @@ -331,10 +329,8 @@ s_stab_generic (int what, char *stab_sec if (! seg_info (seg)->hadone) { -#ifdef BFD_ASSEMBLER bfd_set_section_flags (stdoutput, seg, SEC_READONLY | SEC_RELOC | SEC_DEBUGGING); -#endif #ifdef INIT_STAB_SECTION INIT_STAB_SECTION (seg); #endif diff -uprN binutils-2.16.91.0.2/gas/struc-symbol.h binutils-2.16.91.0.3/gas/struc-symbol.h --- binutils-2.16.91.0.2/gas/struc-symbol.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/struc-symbol.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,5 +1,5 @@ /* struct_symbol.h - Internal symbol structure - Copyright 1987, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001 + Copyright 1987, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -22,43 +22,21 @@ #ifndef __struc_symbol_h__ #define __struc_symbol_h__ -#ifdef BFD_ASSEMBLER -/* The BFD code wants to walk the list in both directions. */ -#undef SYMBOLS_NEED_BACKPOINTERS -#define SYMBOLS_NEED_BACKPOINTERS -#endif - /* The information we keep for a symbol. Note that the symbol table holds pointers both to this and to local_symbol structures. See below. */ struct symbol { -#ifdef BFD_ASSEMBLER /* BFD symbol */ asymbol *bsym; -#else - /* The (4-origin) position of sy_name in the symbol table of the object - file. This will be 0 for (nameless) .stabd symbols. - - Not used until write_object_file() time. */ - unsigned long sy_name_offset; - - /* What we write in .o file (if permitted). */ - obj_symbol_type sy_symbol; - - /* The 24 bit symbol number. Symbol numbers start at 0 and are unsigned. */ - long sy_number; -#endif /* The value of the symbol. */ expressionS sy_value; /* Forwards and (optionally) backwards chain pointers. */ struct symbol *sy_next; -#ifdef SYMBOLS_NEED_BACKPOINTERS struct symbol *sy_previous; -#endif /* SYMBOLS_NEED_BACKPOINTERS */ /* Pointer to the frag this symbol is attached to, if any. Otherwise, NULL. */ @@ -101,8 +79,6 @@ struct symbol #endif }; -#ifdef BFD_ASSEMBLER - /* A pointer in the symbol may point to either a complete symbol (struct symbol above) or to a local symbol (struct local_symbol defined here). The symbol code can detect the case by examining @@ -154,6 +130,4 @@ struct local_symbol #define local_symbol_get_real_symbol(l) ((l)->u.lsy_sym) #define local_symbol_set_real_symbol(l, s) ((l)->u.lsy_sym = (s)) -#endif /* BFD_ASSEMBLER */ - #endif /* __struc_symbol_h__ */ diff -uprN binutils-2.16.91.0.2/gas/subsegs.c binutils-2.16.91.0.3/gas/subsegs.c --- binutils-2.16.91.0.2/gas/subsegs.c 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/subsegs.c 2005-08-22 12:27:42.000000000 -0700 @@ -31,45 +31,11 @@ frchainS *frchain_root, *frchain_now; static struct obstack frchains; -#ifndef BFD_ASSEMBLER -#ifdef MANY_SEGMENTS -segment_info_type segment_info[SEG_MAXIMUM_ORDINAL]; - -#else -/* Commented in "subsegs.h". */ -frchainS *data0_frchainP, *bss0_frchainP; - -#endif /* MANY_SEGMENTS */ -char const *const seg_name[] = { - "absolute", -#ifdef MANY_SEGMENTS - "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", - "e10", "e11", "e12", "e13", "e14", "e15", "e16", "e17", "e18", "e19", - "e20", "e21", "e22", "e23", "e24", "e25", "e26", "e27", "e28", "e29", - "e30", "e31", "e32", "e33", "e34", "e35", "e36", "e37", "e38", "e39", -#else - "text", - "data", - "bss", -#endif /* MANY_SEGMENTS */ - "unknown", - "ASSEMBLER-INTERNAL-LOGIC-ERROR!", - "expr", - "debug", - "transfert vector preload", - "transfert vector postload", - "register", - "", -}; /* Used by error reporters, dumpers etc. */ -#else /* BFD_ASSEMBLER */ - /* Gas segment information for bfd_abs_section_ptr and bfd_und_section_ptr. */ static segment_info_type *abs_seg_info; static segment_info_type *und_seg_info; -#endif /* BFD_ASSEMBLER */ - static void subseg_set_rest (segT, subsegT); static fragS dummy_frag; @@ -79,22 +45,6 @@ static frchainS absolute_frchain; void subsegs_begin (void) { - /* Check table(s) seg_name[], seg_N_TYPE[] is in correct order */ -#if !defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER) - know (SEG_ABSOLUTE == 0); - know (SEG_TEXT == 1); - know (SEG_DATA == 2); - know (SEG_BSS == 3); - know (SEG_UNKNOWN == 4); - know (SEG_GOOF == 5); - know (SEG_EXPR == 6); - know (SEG_DEBUG == 7); - know (SEG_NTV == 8); - know (SEG_PTV == 9); - know (SEG_REGISTER == 10); - know (SEG_MAXIMUM_ORDINAL == SEG_REGISTER); -#endif - obstack_begin (&frchains, chunksize); #if __GNUC__ >= 2 obstack_alignment_mask (&frchains) = __alignof__ (frchainS) - 1; @@ -105,32 +55,9 @@ subsegs_begin (void) frag_now = &dummy_frag; -#ifndef BFD_ASSEMBLER - now_subseg = 42; /* Lie for 1st call to subseg_new. */ -#ifdef MANY_SEGMENTS - { - int i; - for (i = SEG_E0; i < SEG_UNKNOWN; i++) - { - subseg_set (i, 0); - segment_info[i].frchainP = frchain_now; - } - } -#else - subseg_set (SEG_DATA, 0); /* .data 0 */ - data0_frchainP = frchain_now; - - subseg_set (SEG_BSS, 0); - bss0_frchainP = frchain_now; - -#endif /* ! MANY_SEGMENTS */ -#endif /* ! BFD_ASSEMBLER */ - absolute_frchain.frch_seg = absolute_section; absolute_frchain.frch_subseg = 0; -#ifdef BFD_ASSEMBLER absolute_frchain.fix_root = absolute_frchain.fix_tail = 0; -#endif absolute_frchain.frch_frag_now = &zero_address_frag; absolute_frchain.frch_root = absolute_frchain.frch_last = &zero_address_frag; } @@ -148,56 +75,29 @@ subsegs_begin (void) void subseg_change (register segT seg, register int subseg) { + segment_info_type *seginfo; now_seg = seg; now_subseg = subseg; if (now_seg == absolute_section) return; -#ifdef BFD_ASSEMBLER - { - segment_info_type *seginfo; - seginfo = (segment_info_type *) bfd_get_section_userdata (stdoutput, seg); - if (! seginfo) - { - seginfo = (segment_info_type *) xmalloc (sizeof (*seginfo)); - memset ((PTR) seginfo, 0, sizeof (*seginfo)); - seginfo->fix_root = NULL; - seginfo->fix_tail = NULL; - seginfo->bfd_section = seg; - seginfo->sym = 0; - if (seg == bfd_abs_section_ptr) - abs_seg_info = seginfo; - else if (seg == bfd_und_section_ptr) - und_seg_info = seginfo; - else - bfd_set_section_userdata (stdoutput, seg, (PTR) seginfo); - } - } -#else -#ifdef MANY_SEGMENTS - seg_fix_rootP = &segment_info[seg].fix_root; - seg_fix_tailP = &segment_info[seg].fix_tail; -#else - if (seg == SEG_DATA) - { - seg_fix_rootP = &data_fix_root; - seg_fix_tailP = &data_fix_tail; - } - else if (seg == SEG_TEXT) - { - seg_fix_rootP = &text_fix_root; - seg_fix_tailP = &text_fix_tail; - } - else + seginfo = (segment_info_type *) bfd_get_section_userdata (stdoutput, seg); + if (! seginfo) { - know (seg == SEG_BSS); - seg_fix_rootP = &bss_fix_root; - seg_fix_tailP = &bss_fix_tail; + seginfo = (segment_info_type *) xmalloc (sizeof (*seginfo)); + memset ((PTR) seginfo, 0, sizeof (*seginfo)); + seginfo->fix_root = NULL; + seginfo->fix_tail = NULL; + seginfo->bfd_section = seg; + seginfo->sym = 0; + if (seg == bfd_abs_section_ptr) + abs_seg_info = seginfo; + else if (seg == bfd_und_section_ptr) + und_seg_info = seginfo; + else + bfd_set_section_userdata (stdoutput, seg, (PTR) seginfo); } - -#endif -#endif } static void @@ -274,13 +174,13 @@ subseg_set_rest (segT seg, subsegT subse /* * This should be the only code that creates a frchainS. */ + segment_info_type *seginfo; + newP = (frchainS *) obstack_alloc (&frchains, sizeof (frchainS)); newP->frch_subseg = subseg; newP->frch_seg = seg; -#ifdef BFD_ASSEMBLER newP->fix_root = NULL; newP->fix_tail = NULL; -#endif obstack_begin (&newP->frch_obstack, chunksize); #if __GNUC__ >= 2 obstack_alignment_mask (&newP->frch_obstack) = __alignof__ (fragS) - 1; @@ -293,14 +193,9 @@ subseg_set_rest (segT seg, subsegT subse *lastPP = newP; newP->frch_next = frcP; /* perhaps NULL */ -#ifdef BFD_ASSEMBLER - { - segment_info_type *seginfo; - seginfo = seg_info (seg); - if (seginfo && seginfo->frchainP == frcP) - seginfo->frchainP = newP; - } -#endif + seginfo = seg_info (seg); + if (seginfo && seginfo->frchainP == frcP) + seginfo->frchainP = newP; frcP = newP; } @@ -329,73 +224,6 @@ subseg_set_rest (segT seg, subsegT subse * Frchain_root updated if needed. */ -#ifndef BFD_ASSEMBLER - -segT -subseg_new (segname, subseg) - const char *segname; - subsegT subseg; -{ - int i; - - for (i = 0; i < (int) SEG_MAXIMUM_ORDINAL; i++) - { - const char *s; - - s = segment_name ((segT) i); - if (strcmp (segname, s) == 0 - || (segname[0] == '.' - && strcmp (segname + 1, s) == 0)) - { - subseg_set ((segT) i, subseg); - return (segT) i; - } -#ifdef obj_segment_name - s = obj_segment_name ((segT) i); - if (strcmp (segname, s) == 0 - || (segname[0] == '.' - && strcmp (segname + 1, s) == 0)) - { - subseg_set ((segT) i, subseg); - return (segT) i; - } -#endif - } - -#ifdef obj_add_segment - { - segT new_seg; - new_seg = obj_add_segment (segname); - subseg_set (new_seg, subseg); - return new_seg; - } -#else - as_bad (_("attempt to switch to nonexistent segment \"%s\""), segname); - return now_seg; -#endif -} - -void -subseg_set (seg, subseg) /* begin assembly for a new sub-segment */ - register segT seg; /* SEG_DATA or SEG_TEXT */ - register subsegT subseg; -{ -#ifndef MANY_SEGMENTS - know (seg == SEG_DATA - || seg == SEG_TEXT - || seg == SEG_BSS - || seg == SEG_ABSOLUTE); -#endif - - if (seg != now_seg || subseg != now_subseg) - { /* we just changed sub-segments */ - subseg_set_rest (seg, subseg); - } - mri_common_symbol = NULL; -} - -#else /* BFD_ASSEMBLER */ - segT subseg_get (const char *segname, int force_new) { @@ -550,49 +378,12 @@ section_symbol (segT sec) return s; } -#endif /* BFD_ASSEMBLER */ - /* Return whether the specified segment is thought to hold text. */ -#ifndef BFD_ASSEMBLER -const char * const nontext_section_names[] = { - ".eh_frame", - ".gcc_except_table", -#ifdef OBJ_COFF -#ifndef COFF_LONG_SECTION_NAMES - ".eh_fram", - ".gcc_exc", -#endif -#endif - NULL -}; -#endif /* ! BFD_ASSEMBLER */ - int subseg_text_p (segT sec) { -#ifdef BFD_ASSEMBLER return (bfd_get_section_flags (stdoutput, sec) & SEC_CODE) != 0; -#else /* ! BFD_ASSEMBLER */ - const char * const *p; - - if (sec == data_section || sec == bss_section || sec == absolute_section) - return 0; - - for (p = nontext_section_names; *p != NULL; ++p) - { - if (strcmp (segment_name (sec), *p) == 0) - return 0; - -#ifdef obj_segment_name - if (strcmp (obj_segment_name (sec), *p) == 0) - return 0; -#endif - } - - return 1; - -#endif /* ! BFD_ASSEMBLER */ } /* Return non zero if SEC has at least one byte of data. It is diff -uprN binutils-2.16.91.0.2/gas/subsegs.h binutils-2.16.91.0.3/gas/subsegs.h --- binutils-2.16.91.0.2/gas/subsegs.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/subsegs.h 2005-08-22 12:27:42.000000000 -0700 @@ -47,10 +47,8 @@ struct frchain /* control building of struct frchain *frch_next; /* next in chain of struct frchain-s */ segT frch_seg; /* SEG_TEXT or SEG_DATA. */ subsegT frch_subseg; /* subsegment number of this chain */ -#ifdef BFD_ASSEMBLER fixS *fix_root; /* Root of fixups for this subsegment. */ fixS *fix_tail; /* Last fixup for this subsegment. */ -#endif struct obstack frch_obstack; /* for objects in this frag chain */ fragS *frch_frag_now; /* frag_now for this subsegment */ }; @@ -77,30 +75,22 @@ typedef struct segment_info_struct { int user_stuff; - /* Fixups for this segment. If BFD_ASSEMBLER, this is only valid - after the frchains are run together. */ + /* Fixups for this segment. This is only valid after the frchains + are run together. */ fixS *fix_root; fixS *fix_tail; -#if defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER) - struct internal_scnhdr scnhdr; - enum linkonce_type linkonce; - const char *name; -#endif - symbolS *dot; struct lineno_list *lineno_list_head; struct lineno_list *lineno_list_tail; -#ifdef BFD_ASSEMBLER /* Which BFD section does this gas segment correspond to? */ asection *bfd_section; /* NULL, or pointer to the gas symbol that is the section symbol for this section. sym->bsym and bfd_section->symbol should be the same. */ symbolS *sym; -#endif union { /* Current size of section holding stabs strings. */ @@ -119,30 +109,7 @@ typedef struct segment_info_struct { #endif } segment_info_type; -#ifdef BFD_ASSEMBLER - extern segment_info_type *seg_info (segT); extern symbolS *section_symbol (segT); -#else /* ! BFD_ASSEMBLER */ - -#ifdef MANY_SEGMENTS - -extern segment_info_type segment_info[]; - -#define seg_info(SEC) (&segment_info[SEC]) - -#else - -/* Sentinel for frchain crawling. Points to the 1st data-segment - frchain. (Which is pointed to by the last text-segment frchain.) */ -extern frchainS *data0_frchainP; -extern frchainS *bss0_frchainP; - -#define seg_info(S) (abort (), (segment_info_type *) 0) - -#endif - -#endif /* ! BFD_ASSEMBLER */ - extern void subsegs_print_statistics (FILE *); diff -uprN binutils-2.16.91.0.2/gas/symbols.c binutils-2.16.91.0.3/gas/symbols.c --- binutils-2.16.91.0.2/gas/symbols.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/symbols.c 2005-08-22 12:27:42.000000000 -0700 @@ -88,13 +88,11 @@ symbol_new (const char *name, segT segme symbolS *symbolP = symbol_create (name, segment, valu, frag); /* Link to end of symbol chain. */ -#ifdef BFD_ASSEMBLER { extern int symbol_table_frozen; if (symbol_table_frozen) abort (); } -#endif symbol_append (symbolP, symbol_lastP, &symbol_rootP, &symbol_lastP); return symbolP; @@ -144,12 +142,10 @@ symbol_create (const char *name, /* It i /* symbol must be born in some fixed state. This seems as good as any. */ memset (symbolP, 0, sizeof (symbolS)); -#ifdef BFD_ASSEMBLER symbolP->bsym = bfd_make_empty_symbol (stdoutput); if (symbolP->bsym == NULL) as_perror ("%s", "bfd_make_empty_symbol"); symbolP->bsym->udata.p = (PTR) symbolP; -#endif S_SET_NAME (symbolP, preserved_copy_of_name); S_SET_SEGMENT (symbolP, segment); @@ -157,10 +153,6 @@ symbol_create (const char *name, /* It i symbol_clear_list_pointers (symbolP); symbolP->sy_frag = frag; -#ifndef BFD_ASSEMBLER - symbolP->sy_number = ~0; - symbolP->sy_name_offset = (unsigned int) ~0; -#endif obj_symbol_new_hook (symbolP); @@ -171,7 +163,6 @@ symbol_create (const char *name, /* It i return symbolP; } -#ifdef BFD_ASSEMBLER /* Local symbol support. If we can get away with it, we keep only a small amount of information for local symbols. */ @@ -255,13 +246,6 @@ local_symbol_convert (struct local_symbo return ret; } - -#else /* ! BFD_ASSEMBLER */ - -#define LOCAL_SYMBOL_CHECK(s) 0 -#define local_symbol_convert(s) ((symbolS *) s) - -#endif /* ! BFD_ASSEMBLER */ /* We have just seen ":". Creates a struct symbol unless it already exists. @@ -277,19 +261,9 @@ colon (/* Just seen "x:" - rattle symbol /* Sun local labels go out of scope whenever a non-local symbol is defined. */ - if (LOCAL_LABELS_DOLLAR) - { - int local; - -#ifdef BFD_ASSEMBLER - local = bfd_is_local_label_name (stdoutput, sym_name); -#else - local = LOCAL_LABEL (sym_name); -#endif - - if (! local) - dollar_label_clear (); - } + if (LOCAL_LABELS_DOLLAR + && !bfd_is_local_label_name (stdoutput, sym_name)) + dollar_label_clear (); #ifndef WORKING_DOT_WORD if (new_broken_words) @@ -342,7 +316,6 @@ colon (/* Just seen "x:" - rattle symbol /* Now check for undefined symbols. */ if (LOCAL_SYMBOL_CHECK (symbolP)) { -#ifdef BFD_ASSEMBLER struct local_symbol *locsym = (struct local_symbol *) symbolP; if (locsym->lsy_section != undefined_section @@ -357,7 +330,6 @@ colon (/* Just seen "x:" - rattle symbol locsym->lsy_section = now_seg; local_symbol_set_frag (locsym, frag_now); locsym->lsy_value = frag_now_fix (); -#endif } else if (!S_IS_DEFINED (symbolP) || S_IS_COMMON (symbolP)) { @@ -428,9 +400,7 @@ colon (/* Just seen "x:" - rattle symbol #else char od_buf[100]; od_buf[0] = '\0'; -#ifdef BFD_ASSEMBLER if (OUTPUT_FLAVOR == bfd_target_aout_flavour) -#endif sprintf (od_buf, "%d.%d.", S_GET_OTHER (symbolP), S_GET_DESC (symbolP)); @@ -453,14 +423,12 @@ colon (/* Just seen "x:" - rattle symbol } } -#ifdef BFD_ASSEMBLER else if (! flag_keep_locals && bfd_is_local_label_name (stdoutput, sym_name)) { symbolP = (symbolS *) local_symbol_make (sym_name, now_seg, (valueT) frag_now_fix (), frag_now); } -#endif /* BFD_ASSEMBLER */ else { symbolP = symbol_new (sym_name, now_seg, (valueT) frag_now_fix (), @@ -535,7 +503,6 @@ symbol_find_or_make (const char *name) if (symbolP == NULL) { -#ifdef BFD_ASSEMBLER if (! flag_keep_locals && bfd_is_local_label_name (stdoutput, name)) { symbolP = md_undefined_symbol ((char *) name); @@ -547,7 +514,6 @@ symbol_find_or_make (const char *name) &zero_address_frag); return symbolP; } -#endif symbolP = symbol_make (name); @@ -597,15 +563,11 @@ symbol_temp_make (void) symbolS * symbol_find_exact (const char *name) { -#ifdef BFD_ASSEMBLER - { - struct local_symbol *locsym; + struct local_symbol *locsym; - locsym = (struct local_symbol *) hash_find (local_hash, name); - if (locsym != NULL) - return (symbolS *) locsym; - } -#endif + locsym = (struct local_symbol *) hash_find (local_hash, name); + if (locsym != NULL) + return (symbolS *) locsym; return ((symbolS *) hash_find (sy_hash, name)); } @@ -665,9 +627,7 @@ symbol_append (symbolS *addme, symbolS * know (*rootPP == NULL); know (*lastPP == NULL); addme->sy_next = NULL; -#ifdef SYMBOLS_NEED_BACKPOINTERS addme->sy_previous = NULL; -#endif *rootPP = addme; *lastPP = addme; return; @@ -675,9 +635,7 @@ symbol_append (symbolS *addme, symbolS * if (target->sy_next != NULL) { -#ifdef SYMBOLS_NEED_BACKPOINTERS target->sy_next->sy_previous = addme; -#endif /* SYMBOLS_NEED_BACKPOINTERS */ } else { @@ -687,10 +645,7 @@ symbol_append (symbolS *addme, symbolS * addme->sy_next = target->sy_next; target->sy_next = addme; - -#ifdef SYMBOLS_NEED_BACKPOINTERS addme->sy_previous = target; -#endif /* SYMBOLS_NEED_BACKPOINTERS */ debug_verify_symchain (symbol_rootP, symbol_lastP); } @@ -703,12 +658,9 @@ symbol_clear_list_pointers (symbolS *sym if (LOCAL_SYMBOL_CHECK (symbolP)) abort (); symbolP->sy_next = NULL; -#ifdef SYMBOLS_NEED_BACKPOINTERS symbolP->sy_previous = NULL; -#endif } -#ifdef SYMBOLS_NEED_BACKPOINTERS /* Remove SYMBOLP from the list. */ void @@ -768,8 +720,6 @@ symbol_insert (symbolS *addme, symbolS * debug_verify_symchain (*rootPP, *lastPP); } -#endif /* SYMBOLS_NEED_BACKPOINTERS */ - void verify_symbol_chain (symbolS *rootP, symbolS *lastP) { @@ -780,15 +730,8 @@ verify_symbol_chain (symbolS *rootP, sym for (; symbol_next (symbolP) != NULL; symbolP = symbol_next (symbolP)) { -#ifdef BFD_ASSEMBLER assert (symbolP->bsym != NULL); -#endif -#ifdef SYMBOLS_NEED_BACKPOINTERS assert (symbolP->sy_next->sy_previous == symbolP); -#else - /* Walk the list anyways, to make sure pointers are still good. */ - ; -#endif /* SYMBOLS_NEED_BACKPOINTERS */ } assert (lastP == symbolP); @@ -860,7 +803,6 @@ resolve_symbol_value (symbolS *symp) valueT final_val = 0; segT final_seg; -#ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (symp)) { struct local_symbol *locsym = (struct local_symbol *) symp; @@ -879,7 +821,6 @@ resolve_symbol_value (symbolS *symp) return final_val; } -#endif if (symp->sy_resolved) { @@ -965,7 +906,7 @@ resolve_symbol_value (symbolS *symp) relocation to be against the symbol to which this symbol is equated. */ if (! S_IS_DEFINED (add_symbol) -#if defined (OBJ_COFF) && defined (TE_PE) && (defined(BFD_ASSEMBLER) || defined(S_IS_WEAK)) +#if defined (OBJ_COFF) && defined (TE_PE) || S_IS_WEAK (add_symbol) #endif || S_IS_COMMON (add_symbol)) @@ -1211,11 +1152,6 @@ resolve_symbol_value (symbolS *symp) exit_dont_set_value: /* Always set the segment, even if not finalizing the value. The segment is used to determine whether a symbol is defined. */ -#if defined (OBJ_AOUT) && ! defined (BFD_ASSEMBLER) - /* The old a.out backend does not handle S_SET_SEGMENT correctly - for a stab symbol, so we use this bad hack. */ - if (final_seg != S_GET_SEGMENT (symp)) -#endif S_SET_SEGMENT (symp, final_seg); /* Don't worry if we can't resolve an expr_section symbol. */ @@ -1234,8 +1170,6 @@ exit_dont_set_value: return final_val; } -#ifdef BFD_ASSEMBLER - static void resolve_local_symbol (const char *, PTR); /* A static function passed to hash_traverse. */ @@ -1247,16 +1181,12 @@ resolve_local_symbol (const char *key AT resolve_symbol_value (value); } -#endif - /* Resolve all local symbols. */ void resolve_local_symbol_values (void) { -#ifdef BFD_ASSEMBLER hash_traverse (local_hash, resolve_local_symbol); -#endif } /* Dollar labels look like a number followed by a dollar sign. Eg, "42$". @@ -1625,10 +1555,8 @@ decode_local_label_name (char *s) valueT S_GET_VALUE (symbolS *s) { -#ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (s)) return resolve_symbol_value (s); -#endif if (!s->sy_resolved) { @@ -1661,13 +1589,11 @@ S_GET_VALUE (symbolS *s) void S_SET_VALUE (symbolS *s, valueT val) { -#ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (s)) { ((struct local_symbol *) s)->lsy_value = val; return; } -#endif s->sy_value.X_op = O_constant; s->sy_value.X_add_number = (offsetT) val; @@ -1682,20 +1608,16 @@ copy_symbol_attributes (symbolS *dest, s if (LOCAL_SYMBOL_CHECK (src)) src = local_symbol_convert ((struct local_symbol *) src); -#ifdef BFD_ASSEMBLER /* In an expression, transfer the settings of these flags. The user can override later, of course. */ #define COPIED_SYMFLAGS (BSF_FUNCTION | BSF_OBJECT) dest->bsym->flags |= src->bsym->flags & COPIED_SYMFLAGS; -#endif #ifdef OBJ_COPY_SYMBOL_ATTRIBUTES OBJ_COPY_SYMBOL_ATTRIBUTES (dest, src); #endif } -#ifdef BFD_ASSEMBLER - int S_IS_FUNCTION (symbolS *s) { @@ -1949,9 +1871,6 @@ S_SET_NAME (symbolS *s, const char *name } s->bsym->name = name; } -#endif /* BFD_ASSEMBLER */ - -#ifdef SYMBOLS_NEED_BACKPOINTERS /* Return the previous symbol in a chain. */ @@ -1963,8 +1882,6 @@ symbol_previous (symbolS *s) return s->sy_previous; } -#endif /* SYMBOLS_NEED_BACKPOINTERS */ - /* Return the next symbol in a chain. */ symbolS * @@ -2000,10 +1917,8 @@ symbol_set_value_expression (symbolS *s, offsetT * symbol_X_add_number (symbolS *s) { -#ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (s)) return (offsetT *) &((struct local_symbol *) s)->lsy_value; -#endif return &s->sy_value.X_add_number; } @@ -2023,13 +1938,11 @@ symbol_set_value_now (symbolS *sym) void symbol_set_frag (symbolS *s, fragS *f) { -#ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (s)) { local_symbol_set_frag ((struct local_symbol *) s, f); return; } -#endif s->sy_frag = f; } @@ -2038,10 +1951,8 @@ symbol_set_frag (symbolS *s, fragS *f) fragS * symbol_get_frag (symbolS *s) { -#ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (s)) return local_symbol_get_frag ((struct local_symbol *) s); -#endif return s->sy_frag; } @@ -2170,13 +2081,11 @@ symbol_written_p (symbolS *s) void symbol_mark_resolved (symbolS *s) { -#ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (s)) { local_symbol_mark_resolved ((struct local_symbol *) s); return; } -#endif s->sy_resolved = 1; } @@ -2185,10 +2094,8 @@ symbol_mark_resolved (symbolS *s) int symbol_resolved_p (symbolS *s) { -#ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (s)) return local_symbol_resolved_p ((struct local_symbol *) s); -#endif return s->sy_resolved; } @@ -2199,12 +2106,7 @@ symbol_section_p (symbolS *s ATTRIBUTE_U { if (LOCAL_SYMBOL_CHECK (s)) return 0; -#ifdef BFD_ASSEMBLER return (s->bsym->flags & BSF_SECTION_SYM) != 0; -#else - /* FIXME. */ - return 0; -#endif } /* Return whether a symbol is equated to another symbol. */ @@ -2229,7 +2131,7 @@ symbol_equated_reloc_p (symbolS *s) resolve_symbol_value to flag expression syms that have been equated. */ return (s->sy_value.X_op == O_symbol -#if defined (OBJ_COFF) && defined (TE_PE) && (defined(BFD_ASSEMBLER) || defined(S_IS_WEAK)) +#if defined (OBJ_COFF) && defined (TE_PE) && ! S_IS_WEAK (s) #endif && ((s->sy_resolved && s->sy_value.X_op_symbol != NULL) @@ -2247,8 +2149,6 @@ symbol_constant_p (symbolS *s) return s->sy_value.X_op == O_constant; } -#ifdef BFD_ASSEMBLER - /* Return the BFD symbol for a symbol. */ asymbol * @@ -2278,8 +2178,6 @@ symbol_set_bfdsym (symbolS *s, asymbol * /* else XXX - What do we do now ? */ } -#endif /* BFD_ASSEMBLER */ - #ifdef OBJ_SYMFIELD_TYPE /* Get a pointer to the object format information for a symbol. */ @@ -2334,19 +2232,12 @@ symbol_begin (void) symbol_lastP = NULL; symbol_rootP = NULL; /* In case we have 0 symbols (!!) */ sy_hash = hash_new (); -#ifdef BFD_ASSEMBLER local_hash = hash_new (); -#endif memset ((char *) (&abs_symbol), '\0', sizeof (abs_symbol)); -#ifdef BFD_ASSEMBLER #if defined (EMIT_SECTION_SYMBOLS) || !defined (RELOC_REQUIRES_SYMBOL) abs_symbol.bsym = bfd_abs_section.symbol; #endif -#else - /* Can't initialise a union. Sigh. */ - S_SET_SEGMENT (&abs_symbol, absolute_section); -#endif abs_symbol.sy_value.X_op = O_constant; abs_symbol.sy_frag = &zero_address_frag; @@ -2370,7 +2261,6 @@ print_symbol_value_1 (FILE *file, symbol if (LOCAL_SYMBOL_CHECK (sym)) { -#ifdef BFD_ASSEMBLER struct local_symbol *locsym = (struct local_symbol *) sym; if (local_symbol_get_frag (locsym) != &zero_address_frag && local_symbol_get_frag (locsym) != NULL) @@ -2378,7 +2268,6 @@ print_symbol_value_1 (FILE *file, symbol if (local_symbol_resolved_p (locsym)) fprintf (file, " resolved"); fprintf (file, " local"); -#endif } else { @@ -2417,12 +2306,10 @@ print_symbol_value_1 (FILE *file, symbol { indent_level++; fprintf (file, "\n%*s<", indent_level * 4, ""); -#ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (sym)) fprintf (file, "constant %lx", (long) ((struct local_symbol *) sym)->lsy_value); else -#endif print_expr_1 (file, &sym->sy_value); fprintf (file, ">"); indent_level--; @@ -2573,9 +2460,7 @@ void symbol_print_statistics (FILE *file) { hash_print_statistics (file, "symbol table", sy_hash); -#ifdef BFD_ASSEMBLER hash_print_statistics (file, "mini local symbol table", local_hash); fprintf (file, "%lu mini local symbols created, %lu converted\n", local_symbol_count, local_symbol_conversion_count); -#endif } diff -uprN binutils-2.16.91.0.2/gas/symbols.h binutils-2.16.91.0.3/gas/symbols.h --- binutils-2.16.91.0.2/gas/symbols.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/symbols.h 2005-08-22 12:27:42.000000000 -0700 @@ -19,18 +19,6 @@ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifdef BFD_ASSEMBLER -/* The BFD code wants to walk the list in both directions. */ -#undef SYMBOLS_NEED_BACKPOINTERS -#define SYMBOLS_NEED_BACKPOINTERS -#endif - -#ifndef BFD_ASSEMBLER -/* The non-BFD code expects to be able to manipulate the symbol fields - directly. */ -#include "struc-symbol.h" -#endif - extern struct obstack notes; /* eg FixS live here. */ extern struct obstack cond_obstack; /* this is where we track .ifdef/.endif @@ -87,7 +75,6 @@ extern void copy_symbol_attributes (symb extern valueT S_GET_VALUE (symbolS *); extern void S_SET_VALUE (symbolS *, valueT); -#ifdef BFD_ASSEMBLER extern int S_IS_FUNCTION (symbolS *); extern int S_IS_EXTERNAL (symbolS *); extern int S_IS_WEAK (symbolS *); @@ -105,7 +92,6 @@ extern void S_SET_NAME (symbolS *, const extern void S_CLEAR_EXTERNAL (symbolS *); extern void S_SET_WEAK (symbolS *); extern void S_SET_THREAD_LOCAL (symbolS *); -#endif #ifndef WORKING_DOT_WORD struct broken_word @@ -150,8 +136,6 @@ extern const short seg_N_TYPE[];/* subse void symbol_clear_list_pointers (symbolS * symbolP); -#ifdef SYMBOLS_NEED_BACKPOINTERS - void symbol_insert (symbolS * addme, symbolS * target, symbolS ** rootP, symbolS ** lastP); void symbol_remove (symbolS * symbolP, symbolS ** rootP, @@ -159,8 +143,6 @@ void symbol_remove (symbolS * symbolP, s extern symbolS *symbol_previous (symbolS *); -#endif /* SYMBOLS_NEED_BACKPOINTERS */ - void verify_symbol_chain (symbolS * rootP, symbolS * lastP); void symbol_append (symbolS * addme, symbolS * target, @@ -192,11 +174,8 @@ extern int symbol_section_p (symbolS *); extern int symbol_equated_p (symbolS *); extern int symbol_equated_reloc_p (symbolS *); extern int symbol_constant_p (symbolS *); - -#ifdef BFD_ASSEMBLER extern asymbol *symbol_get_bfdsym (symbolS *); extern void symbol_set_bfdsym (symbolS *, asymbol *); -#endif #ifdef OBJ_SYMFIELD_TYPE OBJ_SYMFIELD_TYPE *symbol_get_obj (symbolS *); diff -uprN binutils-2.16.91.0.2/gas/tc.h binutils-2.16.91.0.3/gas/tc.h --- binutils-2.16.91.0.2/gas/tc.h 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/tc.h 2005-08-22 12:27:42.000000000 -0700 @@ -25,12 +25,9 @@ extern const pseudo_typeS md_pseudo_table[]; -extern const int md_reloc_size; /* Size of a relocation record. */ - char * md_atof (int, char *, int *); int md_parse_option (int, char *); void md_show_usage (FILE *); -short tc_coff_fix2rtype (fixS *); void md_assemble (char *); void md_begin (void); void md_number_to_chars (char *, valueT, int); @@ -69,30 +66,11 @@ valueT md_section_align (segT, valueT); symbolS *md_undefined_symbol (char *); #endif -#ifdef BFD_ASSEMBLER - #ifndef md_convert_frag void md_convert_frag (bfd *, segT, fragS *); #endif -#ifndef tc_headers_hook -void tc_headers_hook (segT *, fixS *); -#endif #ifndef RELOC_EXPANSION_POSSIBLE extern arelent *tc_gen_reloc (asection *, fixS *); #else extern arelent **tc_gen_reloc (asection *, fixS *); #endif - -#else /* not BFD_ASSEMBLER */ - -#ifndef md_convert_frag -void md_convert_frag (object_headers *, segT, fragS *); -#endif -#ifndef tc_crawl_symbol_chain -void tc_crawl_symbol_chain (object_headers *); -#endif -#ifndef tc_headers_hook -void tc_headers_hook (object_headers *); -#endif - -#endif /* BFD_ASSEMBLER */ diff -uprN binutils-2.16.91.0.2/gas/testsuite/ChangeLog binutils-2.16.91.0.3/gas/testsuite/ChangeLog --- binutils-2.16.91.0.2/gas/testsuite/ChangeLog 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/ChangeLog 2005-08-22 12:27:43.000000000 -0700 @@ -1,3 +1,158 @@ +2005-08-15 Paul Brook + + * gas/arm/thumb2_it.s: Add more instruction variants. + * gas/arm/thumb2_it.d: Ditto. + +2005-08-12 Martin Schwidefsky + + * gas/testsuite/gas/s390/s390.exp: Reorganize gas testsuite for s390 + and add tests for new cpu type z9-109. + * gas/testsuite/gas/s390/esa-g5.d: New. + * gas/testsuite/gas/s390/esa-g5.s: New. + * gas/testsuite/gas/s390/esa-operands.d: New. + * gas/testsuite/gas/s390/esa-operands.s: New. + * gas/testsuite/gas/s390/esa-reloc.d: New. + * gas/testsuite/gas/s390/esa-reloc.s: New. + * gas/testsuite/gas/s390/esa-z9-109.d: New. + * gas/testsuite/gas/s390/esa-z9-109.s: New. + * gas/testsuite/gas/s390/esa-z900.d: New. + * gas/testsuite/gas/s390/esa-z900.s: New. + * gas/testsuite/gas/s390/esa-z990.d: New. + * gas/testsuite/gas/s390/esa-z990.s: New. + * gas/testsuite/gas/s390/zarch-operands.d: New. + * gas/testsuite/gas/s390/zarch-operands.s: New. + * gas/testsuite/gas/s390/zarch-reloc.d: New. + * gas/testsuite/gas/s390/zarch-reloc.s: New. + * gas/testsuite/gas/s390/zarch-z9-109.d: New. + * gas/testsuite/gas/s390/zarch-z9-109.s: New. + * gas/testsuite/gas/s390/zarch-z900.d: New. + * gas/testsuite/gas/s390/zarch-z900.s: New. + * gas/testsuite/gas/s390/zarch-z990.d: New. + * gas/testsuite/gas/s390/zarch-z990.s: New. + * gas/testsuite/gas/s390/opcode.d: Delete. + * gas/testsuite/gas/s390/opcode.s: Delete. + * gas/testsuite/gas/s390/opcode64.d: Delete. + * gas/testsuite/gas/s390/opcode64.s: Delete. + * gas/testsuite/gas/s390/operands.d: Delete. + * gas/testsuite/gas/s390/operands.s: Delete. + * gas/testsuite/gas/s390/operands64.d: Delete. + * gas/testsuite/gas/s390/operands64.s: Delete. + * gas/testsuite/gas/s390/reloc.d: Likewise. + * gas/testsuite/gas/s390/reloc.s: Likewise. + * gas/testsuite/gas/s390/reloc64.d: Likewise. + * gas/testsuite/gas/s390/reloc64.s: Likewise. + +2005-08-11 Alan Modra + + * gas/all/gas.exp: Remove a29k and m88k support. + * gas/m88k/allinsn.d: Delete. + * gas/m88k/allinsn.s: Delete. + * gas/m88k/init.d: Delete. + * gas/m88k/init.s: Delete. + * gas/m88k/m88k.exp: Delete. + * gas/tic80/add.d: Delete. + * gas/tic80/add.lst: Delete. + * gas/tic80/add.s: Delete. + * gas/tic80/align.d: Delete. + * gas/tic80/align.lst: Delete. + * gas/tic80/align.s: Delete. + * gas/tic80/bitnum.d: Delete. + * gas/tic80/bitnum.lst: Delete. + * gas/tic80/bitnum.s: Delete. + * gas/tic80/ccode.d: Delete. + * gas/tic80/ccode.lst: Delete. + * gas/tic80/ccode.s: Delete. + * gas/tic80/cregops.d: Delete. + * gas/tic80/cregops.lst: Delete. + * gas/tic80/cregops.s: Delete. + * gas/tic80/endmask.d: Delete. + * gas/tic80/endmask.lst: Delete. + * gas/tic80/endmask.s: Delete. + * gas/tic80/float.d: Delete. + * gas/tic80/float.lst: Delete. + * gas/tic80/float.s: Delete. + * gas/tic80/regops.d: Delete. + * gas/tic80/regops.lst: Delete. + * gas/tic80/regops.s: Delete. + * gas/tic80/regops2.d: Delete. + * gas/tic80/regops2.lst: Delete. + * gas/tic80/regops2.s: Delete. + * gas/tic80/regops3.d: Delete. + * gas/tic80/regops3.lst: Delete. + * gas/tic80/regops3.s: Delete. + * gas/tic80/regops4.d: Delete. + * gas/tic80/regops4.lst: Delete. + * gas/tic80/regops4.s: Delete. + * gas/tic80/relocs1.c: Delete. + * gas/tic80/relocs1.d: Delete. + * gas/tic80/relocs1.lst: Delete. + * gas/tic80/relocs1.s: Delete. + * gas/tic80/relocs1b.d: Delete. + * gas/tic80/relocs2.c: Delete. + * gas/tic80/relocs2.d: Delete. + * gas/tic80/relocs2.lst: Delete. + * gas/tic80/relocs2.s: Delete. + * gas/tic80/relocs2b.d: Delete. + * gas/tic80/tic80.exp: Delete. + +2005-08-05 John David Anglin + + * gas/hppa/reloc/reloc.exp (do_function_reloc_bug): Add "L%" to regexp. + +2005-08-05 Paul Brook + + * gas/arm/thumb32.s: Use correct conditional suffixes inside IT + blocks. + * gas/arm/thumb2_it.d, gas/arm/thumb2_it.s: New test. + +2005-08-05 Paul Brook + + * gas/arm/thumb32.d: Update ldm/stm dests. + * gas/arm/thumb32.s: Ditto. + +2005-08-03 Nick Clifton + + * gas/arm/iwmmxt-bad2.s: New file: Check for error messages about + erroneous offsets in iwmmxt instructions. Cannot be part of + iwmmxt-bad.s because the errors there stop the assembler before it + gets to check the offsets in instructions. + * gas/arm/iwmmxt-bad2.d: New file. + * gas/arm/iwmmxt-bad2.l: New file: Expected error messages. + +2005-08-02 Khem Raj + + * gas/arm/iwmmxt.s: Change the offset values of the WLDRD, WSTRD + and WSTRW instructions to be larger than +/-255. + * gas/arm/iwmmxt.d: Fix the expected results for these + instructions. + +2005-07-29 Paul Brook + + * gas/arm/thumb32.d: Fix expected output for writeback addressing + modes. Add single high reg push/pop test. + * gas/asm/thumb32.s: Add single high reg push/pop test. + +2005-07-29 Paul Brook + + * gas/arm/thumb32.s: Add tests for addw, subw, tbb and tbh. + * gas/arm/thumb32.d: Ditto. + +2005-07-27 Jan Beulich + + * gas/ia64/unwind-bad.l: Uncomment patterns matching new warnings. + * gas/ia64/unwind-ok.d: Correct expectations. + +2005-07-26 Jan Beulich + + * gas/i386/immed32.[sd]: New. + * gas/i386/immed64.[sd]: New. + * gas/i386/i386.exp: Run new tests. + +2005-07-21 Paul Brook + + * gas/arm/thumb32.s: Add tests for [pc, #imm] addressing modes. + * gas/arm/thumb32.d: Ditto. + 2005-07-20 Kazuhiro Inaoka * gas/m32r/rel32.exp: New file. diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/all/gas.exp binutils-2.16.91.0.3/gas/testsuite/gas/all/gas.exp --- binutils-2.16.91.0.2/gas/testsuite/gas/all/gas.exp 2005-04-29 10:50:29.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/all/gas.exp 2005-08-22 12:27:43.000000000 -0700 @@ -116,7 +116,6 @@ case $target_triplet in { # '<' and '>' appear to have special meanings on the excluded targets case $target_triplet in { - { a29k-*-* } { } { frv-*-* } { } { hppa*-*-* } { } { m32r-*-* } { } @@ -134,16 +133,11 @@ case $target_triplet in { } # This test is for any COFF target. -# We omit m88k COFF because it uses weird pseudo-op names. # We omit the ARM toolchains because they define locals to # start with '.', which eliminates .eos, .text etc from the output. # Omit c54x, since .tag and .def mean something different on that target -if { ([istarget *-*-coff*] && ![istarget m88*-*-*] && ![istarget *arm*-*-coff] && ![istarget thumb*-*-coff] && ![istarget xscale-*-coff] && ![istarget *c4x*-*-coff] && ![istarget *c54x*-*-coff]) \ +if { ([istarget *-*-coff*] && ![istarget *arm*-*-coff] && ![istarget thumb*-*-coff] && ![istarget xscale-*-coff] && ![istarget *c4x*-*-coff] && ![istarget *c54x*-*-coff]) \ ||([istarget *-*-pe*] && ![istarget arm*-*-pe*] && ![istarget thumb*-*-pe*]) \ - || [istarget a29k-*-udi*] \ - || [istarget a29k-*-ebmon*] \ - || [istarget a29k-*-sym*] \ - || [istarget a29k-*-vxworks*] \ || [istarget i*86-*-aix*] \ || [istarget i*86-*-sco*] \ || [istarget i*86-*-isc*] \ diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt-bad2.d binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt-bad2.d --- binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt-bad2.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt-bad2.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,3 @@ +#name: iWMMXt CoProcessor offset errors +#as: -mcpu=iwmmxt +#error-output: iwmmxt-bad2.l diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt-bad2.l binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt-bad2.l --- binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt-bad2.l 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt-bad2.l 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,3 @@ +[^:]*: Assembler messages: +[^:]*:1: Error: co-processor offset out of range +[^:]*:2: Error: co-processor offset out of range diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt-bad2.s binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt-bad2.s --- binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt-bad2.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt-bad2.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,2 @@ + wldrd wr1, [r0, #3] + wstrd wr1, [r0, #0x400] diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt.d binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt.d --- binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt.d 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt.d 2005-08-22 12:27:43.000000000 -0700 @@ -74,7 +74,7 @@ Disassembly of section .text: 0+108 <[^>]*> ed901024[ ]+wldrb[ ]+wr1, \[r0, #36\] 0+10c <[^>]*> 0df12018[ ]+wldrheq[ ]+wr2, \[r1, #24\]! 0+110 <[^>]*> 1cb23104[ ]+wldrwne[ ]+wr3, \[r2\], #16 -0+114 <[^>]*> 6dd34102[ ]+wldrdvs[ ]+wr4, \[r3, #8\] +0+114 <[^>]*> 6d534153[ ]+wldrdvs[ ]+wr4, \[r3, #-332\] 0+118 <[^>]*> fdb12105[ ]+wldrw[ ]+wcssf, \[r1, #20\]! 0+11c <[^>]*> ee474109[ ]+wmacu[ ]+wr4, wr7, wr9 0+120 <[^>]*> 2e6a810e[ ]+wmacscs[ ]+wr8, wr10, wr14 @@ -138,8 +138,8 @@ Disassembly of section .text: 0+208 <[^>]*> ed811004[ ]+wstrb[ ]+wr1, \[r1, #4\] 0+20c <[^>]*> ede11004[ ]+wstrh[ ]+wr1, \[r1, #4\]! 0+210 <[^>]*> eca11101[ ]+wstrw[ ]+wr1, \[r1\], #4 -0+214 <[^>]*> edc11101[ ]+wstrd[ ]+wr1, \[r1, #4\] -0+218 <[^>]*> fca13101[ ]+wstrw[ ]+wcasf, \[r1\], #4 +0+214 <[^>]*> edc111ff[ ]+wstrd[ ]+wr1, \[r1, #1020\] +0+218 <[^>]*> fca1314b[ ]+wstrw[ ]+wcasf, \[r1\], #300 0+21c <[^>]*> 3e1311ae[ ]+wsubbuscc[ ]+wr1, wr3, wr14 0+220 <[^>]*> ee5311ae[ ]+wsubhus[ ]+wr1, wr3, wr14 0+224 <[^>]*> 3e9311ae[ ]+wsubwuscc[ ]+wr1, wr3, wr14 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt.s binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt.s --- binutils-2.16.91.0.2/gas/testsuite/gas/arm/iwmmxt.s 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/arm/iwmmxt.s 2005-08-22 12:27:43.000000000 -0700 @@ -88,7 +88,7 @@ iwmmxt: wldrb wr1, [r0, #36] wldrheq wr2, [r1, #24]! wldrwne wr3, [r2], #16 - wldrdvs wr4, [r3, #8] + wldrdvs wr4, [r3, #-332] wldrw wcssf, [r1, #20]! wmacu wr4, wr7, wr9 @@ -167,8 +167,8 @@ iwmmxt: wstrb wr1, [r1, #4] wstrh wr1, [r1, #4]! wstrw wr1, [r1], #4 - wstrd wr1, [r1, #4] - wstrw wcasf, [r1], #4 + wstrd wr1, [r1, #0x3FC] + wstrw wcasf, [r1], #300 wsubbusul wr1, wr3, wr14 wsubhus wr1, wr3, wr14 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/arm/thumb2_it.d binutils-2.16.91.0.3/gas/testsuite/gas/arm/thumb2_it.d --- binutils-2.16.91.0.2/gas/testsuite/gas/arm/thumb2_it.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/arm/thumb2_it.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,62 @@ +# name: Mixed 16 and 32-bit Thumb conditional instructions +# as: -march=armv6kt2 +# objdump: -dr --prefix-addresses --show-raw-insn +# Many of these patterns use "(eq|s)". These should be changed to just "eq" +# once the disassembler is fixed. Likewise for "(eq)?" + +.*: +file format .*arm.* + +Disassembly of section .text: +0+000 <[^>]+> bf05 ittet eq +0+002 <[^>]+> 1880 add(eq|s) r0, r0, r2 +0+004 <[^>]+> 4440 add(eq)? r0, r8 +0+006 <[^>]+> 1888 add(ne|s) r0, r1, r2 +0+008 <[^>]+> eb11 0002 adds(eq)?.w r0, r1, r2 +0+00c <[^>]+> 4410 add r0, r2 +0+00e <[^>]+> 4440 add r0, r8 +0+010 <[^>]+> 1880 adds r0, r0, r2 +0+012 <[^>]+> eb10 0008 adds.w r0, r0, r8 +0+016 <[^>]+> 1888 adds r0, r1, r2 +0+018 <[^>]+> bf0a itet eq +0+01a <[^>]+> 4310 orr(eq|s) r0, r2 +0+01c <[^>]+> ea40 0008 orr(ne)?.w r0, r0, r8 +0+020 <[^>]+> ea50 0002 orrs(eq)?.w r0, r0, r2 +0+024 <[^>]+> ea40 0002 orr.w r0, r0, r2 +0+028 <[^>]+> ea40 0008 orr.w r0, r0, r8 +0+02c <[^>]+> 4310 orrs r0, r2 +0+02e <[^>]+> bf01 itttt eq +0+030 <[^>]+> 4090 lsl(eq|s) r0, r2 +0+032 <[^>]+> fa00 f008 lsl(eq)?.w r0, r0, r8 +0+036 <[^>]+> fa01 f002 lsl(eq)?.w r0, r1, r2 +0+03a <[^>]+> fa10 f002 lsls(eq)?.w r0, r0, r2 +0+03e <[^>]+> bf02 ittt eq +0+040 <[^>]+> 0048 lsl(eq|s) r0, r1, #1 +0+042 <[^>]+> ea4f 0048 mov(eq)?.w r0, r8, lsl #1 +0+046 <[^>]+> ea5f 0040 movs(eq)?.w r0, r0, lsl #1 +0+04a <[^>]+> fa00 f002 lsl.w r0, r0, r2 +0+04e <[^>]+> 4090 lsls r0, r2 +0+050 <[^>]+> ea4f 0041 mov.w r0, r1, lsl #1 +0+054 <[^>]+> 0048 lsls r0, r1, #1 +0+056 <[^>]+> bf01 itttt eq +0+058 <[^>]+> 4288 cmp(eq)? r0, r1 +0+05a <[^>]+> 4540 cmp(eq)? r0, r8 +0+05c <[^>]+> 4608 mov(eq)? r0, r1 +0+05e <[^>]+> ea5f 0001 movs(eq)?.w r0, r1 +0+062 <[^>]+> bf08 it eq +0+064 <[^>]+> 4640 mov(eq)? r0, r8 +0+066 <[^>]+> 4608 mov(eq)? r0, r1 +0+068 <[^>]+> 1c08 adds r0, r1, #0 +0+06a <[^>]+> ea5f 0008 movs.w r0, r8 +0+06e <[^>]+> bf01 itttt eq +0+070 <[^>]+> 43c8 mvn(eq|s) r0, r1 +0+072 <[^>]+> ea6f 0008 mvn(eq)?.w r0, r8 +0+076 <[^>]+> ea7f 0001 mvns(eq)?.w r0, r1 +0+07a <[^>]+> 42c8 cmn(eq)? r0, r1 +0+07c <[^>]+> ea6f 0001 mvn.w r0, r1 +0+080 <[^>]+> 43c8 mvns r0, r1 +0+082 <[^>]+> bf02 ittt eq +0+084 <[^>]+> 4248 neg(eq|s) r0, r1 +0+086 <[^>]+> f1c8 0000 rsb(eq)? r0, r8, #0 ; 0x0 +0+08a <[^>]+> f1d1 0000 rsbs(eq)? r0, r1, #0 ; 0x0 +0+08e <[^>]+> f1c1 0000 rsb r0, r1, #0 ; 0x0 +0+092 <[^>]+> 4248 negs r0, r1 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/arm/thumb2_it.s binutils-2.16.91.0.3/gas/testsuite/gas/arm/thumb2_it.s --- binutils-2.16.91.0.2/gas/testsuite/gas/arm/thumb2_it.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/arm/thumb2_it.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,64 @@ + .text + .thumb + .syntax unified + .thumb_func +foo: + ittet eq + addeq r0, r0, r2 + addeq r0, r0, r8 + addne r0, r1, r2 + addseq r0, r1, r2 + add r0, r0, r2 + add r0, r0, r8 + adds r0, r0, r2 + adds r0, r0, r8 + adds r0, r1, r2 + + itet eq + orreq r0, r0, r2 + orrne r0, r0, r8 + orrseq r0, r0, r2 + orr r0, r0, r2 + orr r0, r0, r8 + orrs r0, r0, r2 + + itttt eq + lsleq r0, r0, r2 + lsleq r0, r0, r8 + lsleq r0, r1, r2 + lslseq r0, r0, r2 + ittt eq + lsleq r0, r1, #1 + lsleq r0, r8, #1 + lslseq r0, r0, #1 + lsl r0, r0, r2 + lsls r0, r0, r2 + lsl r0, r1, #1 + lsls r0, r1, #1 + + itttt eq + cmpeq r0, r1 + cmpeq r0, r8 + moveq r0, r1 + movseq r0, r1 + it eq + moveq r0, r8 + mov r0, r1 + movs r0, r1 + movs r0, r8 + + itttt eq + mvneq r0, r1 + mvneq r0, r8 + mvnseq r0, r1 + cmneq r0, r1 + mvn r0, r1 + mvns r0, r1 + + ittt eq + negeq r0, r1 + negeq r0, r8 + negseq r0, r1 + neg r0, r1 + negs r0, r1 + diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/arm/thumb32.d binutils-2.16.91.0.3/gas/testsuite/gas/arm/thumb32.d --- binutils-2.16.91.0.2/gas/testsuite/gas/arm/thumb32.d 2005-07-20 12:27:27.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/arm/thumb32.d 2005-08-22 12:27:43.000000000 -0700 @@ -500,10 +500,10 @@ Disassembly of section .text: 0+59a <[^>]+> f895 1000 ldrb\.w r1, \[r5\] 0+59e <[^>]+> f895 1330 ldrb\.w r1, \[r5, #816\] 0+5a2 <[^>]+> f815 1c30 ldrb\.w r1, \[r5, #-48\] -0+5a6 <[^>]+> f815 1b30 ldrb\.w r1, \[r5, #48\]! -0+5aa <[^>]+> f815 1930 ldrb\.w r1, \[r5, #-48\]! -0+5ae <[^>]+> f815 1f30 ldrb\.w r1, \[r5\], #48 -0+5b2 <[^>]+> f815 1d30 ldrb\.w r1, \[r5\], #-48 +0+5a6 <[^>]+> f815 1b30 ldrb\.w r1, \[r5\], #48 +0+5aa <[^>]+> f815 1930 ldrb\.w r1, \[r5\], #-48 +0+5ae <[^>]+> f815 1f30 ldrb\.w r1, \[r5, #48\]! +0+5b2 <[^>]+> f815 1d30 ldrb\.w r1, \[r5, #-48\]! 0+5b6 <[^>]+> 5d29 ldrb r1, \[r5, r4\] 0+5b8 <[^>]+> f819 100c ldrb\.w r1, \[r9, ip\] 0+5bc <[^>]+> f89f 10ac ldrb\.w r1, \[pc, #172\] ; 0+66c <[^>]+> @@ -511,10 +511,10 @@ Disassembly of section .text: 0+5c4 <[^>]+> f995 1000 ldrsb\.w r1, \[r5\] 0+5c8 <[^>]+> f995 1330 ldrsb\.w r1, \[r5, #816\] 0+5cc <[^>]+> f915 1c30 ldrsb\.w r1, \[r5, #-48\] -0+5d0 <[^>]+> f915 1b30 ldrsb\.w r1, \[r5, #48\]! -0+5d4 <[^>]+> f915 1930 ldrsb\.w r1, \[r5, #-48\]! -0+5d8 <[^>]+> f915 1f30 ldrsb\.w r1, \[r5\], #48 -0+5dc <[^>]+> f915 1d30 ldrsb\.w r1, \[r5\], #-48 +0+5d0 <[^>]+> f915 1b30 ldrsb\.w r1, \[r5\], #48 +0+5d4 <[^>]+> f915 1930 ldrsb\.w r1, \[r5\], #-48 +0+5d8 <[^>]+> f915 1f30 ldrsb\.w r1, \[r5, #48\]! +0+5dc <[^>]+> f915 1d30 ldrsb\.w r1, \[r5, #-48\]! 0+5e0 <[^>]+> 5729 ldrsb r1, \[r5, r4\] 0+5e2 <[^>]+> f919 100c ldrsb\.w r1, \[r9, ip\] 0+5e6 <[^>]+> f99f 1084 ldrsb\.w r1, \[pc, #132\] ; 0+66c <[^>]+> @@ -522,10 +522,10 @@ Disassembly of section .text: 0+5ee <[^>]+> f8b5 1000 ldrh\.w r1, \[r5\] 0+5f2 <[^>]+> f8b5 1330 ldrh\.w r1, \[r5, #816\] 0+5f6 <[^>]+> f835 1c30 ldrh\.w r1, \[r5, #-48\] -0+5fa <[^>]+> f835 1b30 ldrh\.w r1, \[r5, #48\]! -0+5fe <[^>]+> f835 1930 ldrh\.w r1, \[r5, #-48\]! -0+602 <[^>]+> f835 1f30 ldrh\.w r1, \[r5\], #48 -0+606 <[^>]+> f835 1d30 ldrh\.w r1, \[r5\], #-48 +0+5fa <[^>]+> f835 1b30 ldrh\.w r1, \[r5\], #48 +0+5fe <[^>]+> f835 1930 ldrh\.w r1, \[r5\], #-48 +0+602 <[^>]+> f835 1f30 ldrh\.w r1, \[r5, #48\]! +0+606 <[^>]+> f835 1d30 ldrh\.w r1, \[r5, #-48\]! 0+60a <[^>]+> 5b29 ldrh r1, \[r5, r4\] 0+60c <[^>]+> f839 100c ldrh\.w r1, \[r9, ip\] 0+610 <[^>]+> f8bf 1058 ldrh\.w r1, \[pc, #88\] ; 0+66c <[^>]+> @@ -533,10 +533,10 @@ Disassembly of section .text: 0+618 <[^>]+> f9b5 1000 ldrsh\.w r1, \[r5\] 0+61c <[^>]+> f9b5 1330 ldrsh\.w r1, \[r5, #816\] 0+620 <[^>]+> f935 1c30 ldrsh\.w r1, \[r5, #-48\] -0+624 <[^>]+> f935 1b30 ldrsh\.w r1, \[r5, #48\]! -0+628 <[^>]+> f935 1930 ldrsh\.w r1, \[r5, #-48\]! -0+62c <[^>]+> f935 1f30 ldrsh\.w r1, \[r5\], #48 -0+630 <[^>]+> f935 1d30 ldrsh\.w r1, \[r5\], #-48 +0+624 <[^>]+> f935 1b30 ldrsh\.w r1, \[r5\], #48 +0+628 <[^>]+> f935 1930 ldrsh\.w r1, \[r5\], #-48 +0+62c <[^>]+> f935 1f30 ldrsh\.w r1, \[r5, #48\]! +0+630 <[^>]+> f935 1d30 ldrsh\.w r1, \[r5, #-48\]! 0+634 <[^>]+> 5f29 ldrsh r1, \[r5, r4\] 0+636 <[^>]+> f939 100c ldrsh\.w r1, \[r9, ip\] 0+63a <[^>]+> f9bf 1030 ldrsh\.w r1, \[pc, #48\] ; 0+66c <[^>]+> @@ -544,10 +544,10 @@ Disassembly of section .text: 0+642 <[^>]+> f8d5 1000 ldr\.w r1, \[r5\] 0+646 <[^>]+> f8d5 1330 ldr\.w r1, \[r5, #816\] 0+64a <[^>]+> f855 1c30 ldr\.w r1, \[r5, #-48\] -0+64e <[^>]+> f855 1b30 ldr\.w r1, \[r5, #48\]! -0+652 <[^>]+> f855 1930 ldr\.w r1, \[r5, #-48\]! -0+656 <[^>]+> f855 1f30 ldr\.w r1, \[r5\], #48 -0+65a <[^>]+> f855 1d30 ldr\.w r1, \[r5\], #-48 +0+64e <[^>]+> f855 1b30 ldr\.w r1, \[r5\], #48 +0+652 <[^>]+> f855 1930 ldr\.w r1, \[r5\], #-48 +0+656 <[^>]+> f855 1f30 ldr\.w r1, \[r5, #48\]! +0+65a <[^>]+> f855 1d30 ldr\.w r1, \[r5, #-48\]! 0+65e <[^>]+> 5929 ldr r1, \[r5, r4\] 0+660 <[^>]+> f859 100c ldr\.w r1, \[r9, ip\] 0+664 <[^>]+> f8df 1004 ldr\.w r1, \[pc, #4\] ; 0+66c <[^>]+> @@ -555,10 +555,10 @@ Disassembly of section .text: 0+66c <[^>]+> f885 1000 strb\.w r1, \[r5\] 0+670 <[^>]+> f885 1330 strb\.w r1, \[r5, #816\] 0+674 <[^>]+> f805 1c30 strb\.w r1, \[r5, #-48\] -0+678 <[^>]+> f805 1b30 strb\.w r1, \[r5, #48\]! -0+67c <[^>]+> f805 1930 strb\.w r1, \[r5, #-48\]! -0+680 <[^>]+> f805 1f30 strb\.w r1, \[r5\], #48 -0+684 <[^>]+> f805 1d30 strb\.w r1, \[r5\], #-48 +0+678 <[^>]+> f805 1b30 strb\.w r1, \[r5\], #48 +0+67c <[^>]+> f805 1930 strb\.w r1, \[r5\], #-48 +0+680 <[^>]+> f805 1f30 strb\.w r1, \[r5, #48\]! +0+684 <[^>]+> f805 1d30 strb\.w r1, \[r5, #-48\]! 0+688 <[^>]+> 5529 strb r1, \[r5, r4\] 0+68a <[^>]+> f809 100c strb\.w r1, \[r9, ip\] 0+68e <[^>]+> f88f 1086 strb\.w r1, \[pc, #134\] ; 0+716 <[^>]+> @@ -566,10 +566,10 @@ Disassembly of section .text: 0+696 <[^>]+> f8a5 1000 strh\.w r1, \[r5\] 0+69a <[^>]+> f8a5 1330 strh\.w r1, \[r5, #816\] 0+69e <[^>]+> f825 1c30 strh\.w r1, \[r5, #-48\] -0+6a2 <[^>]+> f825 1b30 strh\.w r1, \[r5, #48\]! -0+6a6 <[^>]+> f825 1930 strh\.w r1, \[r5, #-48\]! -0+6aa <[^>]+> f825 1f30 strh\.w r1, \[r5\], #48 -0+6ae <[^>]+> f825 1d30 strh\.w r1, \[r5\], #-48 +0+6a2 <[^>]+> f825 1b30 strh\.w r1, \[r5\], #48 +0+6a6 <[^>]+> f825 1930 strh\.w r1, \[r5\], #-48 +0+6aa <[^>]+> f825 1f30 strh\.w r1, \[r5, #48\]! +0+6ae <[^>]+> f825 1d30 strh\.w r1, \[r5, #-48\]! 0+6b2 <[^>]+> 5329 strh r1, \[r5, r4\] 0+6b4 <[^>]+> f829 100c strh\.w r1, \[r9, ip\] 0+6b8 <[^>]+> f8af 105a strh\.w r1, \[pc, #90\] ; 0+716 <[^>]+> @@ -577,10 +577,10 @@ Disassembly of section .text: 0+6c0 <[^>]+> f8c5 1000 str\.w r1, \[r5\] 0+6c4 <[^>]+> f8c5 1330 str\.w r1, \[r5, #816\] 0+6c8 <[^>]+> f845 1c30 str\.w r1, \[r5, #-48\] -0+6cc <[^>]+> f845 1b30 str\.w r1, \[r5, #48\]! -0+6d0 <[^>]+> f845 1930 str\.w r1, \[r5, #-48\]! -0+6d4 <[^>]+> f845 1f30 str\.w r1, \[r5\], #48 -0+6d8 <[^>]+> f845 1d30 str\.w r1, \[r5\], #-48 +0+6cc <[^>]+> f845 1b30 str\.w r1, \[r5\], #48 +0+6d0 <[^>]+> f845 1930 str\.w r1, \[r5\], #-48 +0+6d4 <[^>]+> f845 1f30 str\.w r1, \[r5, #48\]! +0+6d8 <[^>]+> f845 1d30 str\.w r1, \[r5, #-48\]! 0+6dc <[^>]+> 5129 str r1, \[r5, r4\] 0+6de <[^>]+> f849 100c str\.w r1, \[r9, ip\] 0+6e2 <[^>]+> f8cf 1032 str\.w r1, \[pc, #50\] ; 0+716 <[^>]+> @@ -588,10 +588,10 @@ Disassembly of section .text: 0+6ea <[^>]+> f895 f000 pld \[r5\] 0+6ee <[^>]+> f895 f330 pld \[r5, #816\] 0+6f2 <[^>]+> f815 fc30 pld \[r5, #-48\] -0+6f6 <[^>]+> f815 fb30 pld \[r5, #48\]! -0+6fa <[^>]+> f815 f930 pld \[r5, #-48\]! -0+6fe <[^>]+> f815 ff30 pld \[r5\], #48 -0+702 <[^>]+> f815 fd30 pld \[r5\], #-48 +0+6f6 <[^>]+> f815 fb30 pld \[r5\], #48 +0+6fa <[^>]+> f815 f930 pld \[r5\], #-48 +0+6fe <[^>]+> f815 ff30 pld \[r5, #48\]! +0+702 <[^>]+> f815 fd30 pld \[r5, #-48\]! 0+706 <[^>]+> f815 f000 pld \[r5, r0\] 0+70a <[^>]+> f819 f000 pld \[r9, r0\] 0+70e <[^>]+> f89f f006 pld \[pc, #6\] ; 0+716 <[^>]+> @@ -634,8 +634,8 @@ Disassembly of section .text: 0+79a <[^>]+> e889 0007 stmia\.w r9, \{r0, r1, r2\} 0+79e <[^>]+> e880 0580 stmia\.w r0, \{r7, r8, sl\} 0+7a2 <[^>]+> e8a0 0580 stmia\.w r0!, \{r7, r8, sl\} -0+7a6 <[^>]+> e900 0580 stmdb r0, \{r7, r8, sl\} -0+7aa <[^>]+> e910 0580 ldmdb r0, \{r7, r8, sl\} +0+7a6 <[^>]+> e910 0580 ldmdb r0, \{r7, r8, sl\} +0+7aa <[^>]+> e900 0580 stmdb r0, \{r7, r8, sl\} 0+7ae <[^>]+> fb00 0000 mla r0, r0, r0, r0 0+7b2 <[^>]+> fb00 0010 mls r0, r0, r0, r0 0+7b6 <[^>]+> fb00 0900 mla r9, r0, r0, r0 @@ -758,8 +758,8 @@ Disassembly of section .text: 0+956 <[^>]+> bc01 pop \{r0\} 0+958 <[^>]+> b502 push \{r1, lr\} 0+95a <[^>]+> bd02 pop \{r1, pc\} -0+95c <[^>]+> e8bd 1f00 ldmia\.w sp!, \{r8, r9, sl, fp, ip\} -0+960 <[^>]+> e8ad 1f00 stmia\.w sp!, \{r8, r9, sl, fp, ip\} +0+95c <[^>]+> e92d 1f00 stmdb sp!, \{r8, r9, sl, fp, ip\} +0+960 <[^>]+> e8bd 1f00 ldmia\.w sp!, \{r8, r9, sl, fp, ip\} 0+964 <[^>]+> fa92 f113 qadd16 r1, r2, r3 0+968 <[^>]+> fa82 f113 qadd8 r1, r2, r3 0+96c <[^>]+> faa2 f113 qaddsubx r1, r2, r3 @@ -991,3 +991,35 @@ Disassembly of section .text: 0+ca4 <[^>]+> fa52 f183 uxtab r1, r2, r3 0+ca8 <[^>]+> fa32 f183 uxtab16 r1, r2, r3 0+cac <[^>]+> fa12 f183 uxtah r1, r2, r3 +0+cb0 <[^>]+> f89f 12aa ldrb\.w r1, \[pc, #682\] ; 0+f5e <[^>]+> +0+cb4 <[^>]+> f89f 1155 ldrb\.w r1, \[pc, #341\] ; 0+e0d <[^>]+> +0+cb8 <[^>]+> f81f 12aa ldrb\.w r1, \[pc, #-682\] ; 0+a12 <[^>]+> +0+cbc <[^>]+> f81f 1155 ldrb\.w r1, \[pc, #-341\] ; 0+b6b <[^>]+> +0+cc0 <[^>]+> f99f 12aa ldrsb\.w r1, \[pc, #682\] ; 0+f6e <[^>]+> +0+cc4 <[^>]+> f99f 1155 ldrsb\.w r1, \[pc, #341\] ; 0+e1d <[^>]+> +0+cc8 <[^>]+> f91f 12aa ldrsb\.w r1, \[pc, #-682\] ; 0+a22 <[^>]+> +0+ccc <[^>]+> f91f 1155 ldrsb\.w r1, \[pc, #-341\] ; 0+b7b <[^>]+> +0+cd0 <[^>]+> f8bf 12aa ldrh\.w r1, \[pc, #682\] ; 0+f7e <[^>]+> +0+cd4 <[^>]+> f8bf 1155 ldrh\.w r1, \[pc, #341\] ; 0+e2d <[^>]+> +0+cd8 <[^>]+> f83f 12aa ldrh\.w r1, \[pc, #-682\] ; 0+a32 <[^>]+> +0+cdc <[^>]+> f83f 1155 ldrh\.w r1, \[pc, #-341\] ; 0+b8b <[^>]+> +0+ce0 <[^>]+> f9bf 12aa ldrsh\.w r1, \[pc, #682\] ; 0+f8e <[^>]+> +0+ce4 <[^>]+> f9bf 1155 ldrsh\.w r1, \[pc, #341\] ; 0+e3d <[^>]+> +0+ce8 <[^>]+> f93f 12aa ldrsh\.w r1, \[pc, #-682\] ; 0+a42 <[^>]+> +0+cec <[^>]+> f93f 1155 ldrsh\.w r1, \[pc, #-341\] ; 0+b9b <[^>]+> +0+cf0 <[^>]+> f8df 12aa ldr\.w r1, \[pc, #682\] ; 0+f9e <[^>]+> +0+cf4 <[^>]+> f8df 1155 ldr\.w r1, \[pc, #341\] ; 0+e4d <[^>]+> +0+cf8 <[^>]+> f85f 12aa ldr\.w r1, \[pc, #-682\] ; 0+a52 <[^>]+> +0+cfc <[^>]+> f85f 1155 ldr\.w r1, \[pc, #-341\] ; 0+bab <[^>]+> +0+d00 <[^>]+> f200 0900 addw r9, r0, #0 ; 0x0 +0+d04 <[^>]+> f60f 76ff addw r6, pc, #4095 ; 0xfff +0+d08 <[^>]+> f6a9 2685 subw r6, r9, #2693 ; 0xa85 +0+d0c <[^>]+> f2a9 567a subw r6, r9, #1402 ; 0x57a +0+d10 <[^>]+> e8df f006 tbb \[pc, r6\] +0+d14 <[^>]+> e8d0 f009 tbb \[r0, r9\] +0+d18 <[^>]+> e8df f017 tbh \[pc, r7, lsl #1\] +0+d1c <[^>]+> e8d0 f018 tbh \[r0, r8, lsl #1\] +0+d20 <[^>]+> f84d 8d04 str.w r8, \[sp, #-4\]! +0+d24 <[^>]+> f85d 8b04 ldr.w r8, \[sp\], #4 +0+d28 <[^>]+> e930 0580 ldmdb r0!, \{r7, r8, sl\} +0+d2c <[^>]+> e920 0580 stmdb r0!, \{r7, r8, sl\} diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/arm/thumb32.s binutils-2.16.91.0.3/gas/testsuite/gas/arm/thumb32.s --- binutils-2.16.91.0.2/gas/testsuite/gas/arm/thumb32.s 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/arm/thumb32.s 2005-08-22 12:27:43.000000000 -0700 @@ -275,62 +275,76 @@ nop_hint: nop {129} it: - .macro itx opc cond n - \opc \cond - .rept \n - nop - .endr + .macro nop1 cond ncond a + .ifc \a,t + nop\cond + .else + nop\ncond + .endif + .endm + .macro it0 cond m= + it\m \cond + nop\cond + .endm + .macro it1 cond ncond a m= + it0 \cond \a\m + nop1 \cond \ncond \a + .endm + .macro it2 cond ncond a b m= + it1 \cond \ncond \a \b\m + nop1 \cond \ncond \b + .endm + .macro it3 cond ncond a b c + it2 \cond \ncond \a \b \c + nop1 \cond \ncond \c .endm - itx it eq 1 - itx it ne 1 - itx it cs 1 - itx it hs 1 - itx it cc 1 - itx it ul 1 - itx it lo 1 - itx it mi 1 - itx it pl 1 - itx it vs 1 - itx it vc 1 - itx it hi 1 - itx it ge 1 - itx it lt 1 - itx it gt 1 - itx it le 1 - itx it al 1 - - itx itt eq 2 - itx ite eq 2 - itx ittt eq 3 - itx itet eq 3 - itx itte eq 3 - itx itee eq 3 - itx itttt eq 4 - itx itett eq 4 - itx ittet eq 4 - itx ittte eq 4 - itx ittee eq 4 - itx itete eq 4 - itx iteet eq 4 - itx iteee eq 4 - - itx itt ne 2 - itx ite ne 2 - itx ittt ne 3 - itx itet ne 3 - itx itte ne 3 - itx itee ne 3 - itx itttt ne 4 - itx itett ne 4 - itx ittet ne 4 - itx ittte ne 4 - itx ittee ne 4 - itx itete ne 4 - itx iteet ne 4 - itx iteee ne 4 - - .purgem itx + it0 eq + it0 ne + it0 cs + it0 hs + it0 cc + it0 ul + it0 lo + it0 mi + it0 pl + it0 vs + it0 vc + it0 hi + it0 ge + it0 lt + it0 gt + it0 le + it0 al + it1 eq ne t + it1 eq ne e + it2 eq ne t t + it2 eq ne e t + it2 eq ne t e + it2 eq ne e e + it3 eq ne t t t + it3 eq ne e t t + it3 eq ne t e t + it3 eq ne t t e + it3 eq ne t e e + it3 eq ne e t e + it3 eq ne e e t + it3 eq ne e e e + + it1 ne eq t + it1 ne eq e + it2 ne eq t t + it2 ne eq e t + it2 ne eq t e + it2 ne eq e e + it3 ne eq t t t + it3 ne eq e t t + it3 ne eq t e t + it3 ne eq t t e + it3 ne eq t e e + it3 ne eq e t e + it3 ne eq e e t + it3 ne eq e e e ldst: .macro ls op @@ -733,3 +747,29 @@ xta: uxtab r1, r2, r3 uxtab16 r1, r2, r3 uxtah r1, r2, r3 + + .macro ldpcimm op + \op r1, [pc, #0x2aa] + \op r1, [pc, #0x155] + \op r1, [pc, #-0x2aa] + \op r1, [pc, #-0x155] + .endm + ldpcimm ldrb + ldpcimm ldrsb + ldpcimm ldrh + ldpcimm ldrsh + ldpcimm ldr + addw r9, r0, #0 + addw r6, pc, #0xfff + subw r6, r9, #0xa85 + subw r6, r9, #0x57a + tbb [pc, r6] + tbb [r0, r9] + tbh [pc, r7, lsl #1] + tbh [r0, r8, lsl #1] + + push {r8} + pop {r8} + + ldmdb r0!, {r7,r8,r10} + stmdb r0!, {r7,r8,r10} diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/hppa/reloc/reloc.exp binutils-2.16.91.0.3/gas/testsuite/gas/hppa/reloc/reloc.exp --- binutils-2.16.91.0.2/gas/testsuite/gas/hppa/reloc/reloc.exp 2005-05-10 15:46:46.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/hppa/reloc/reloc.exp 2005-08-22 12:27:43.000000000 -0700 @@ -545,7 +545,7 @@ proc do_function_reloc_bug {} { # Make sure we didn't put anything in the instruction itself! while 1 { expect { - -re "^0+cc\[^\n\]*ldil 0,r20\[^\n\]*\n" + -re "^0+cc\[^\n\]*ldil L%0,r20\[^\n\]*\n" { set x [expr $x+1] } -re "^0+d0\[^\n\]*ldo 0\[\(\]+r20\[\)\]+,r19\[^\n\]*\n" { set x [expr $x+1] } diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/i386/i386.exp binutils-2.16.91.0.3/gas/testsuite/gas/i386/i386.exp --- binutils-2.16.91.0.2/gas/testsuite/gas/i386/i386.exp 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/i386/i386.exp 2005-08-22 12:27:43.000000000 -0700 @@ -62,6 +62,7 @@ if [expr ([istarget "i*86-*-*"] || [ist run_dump_test "sib" run_dump_test "vmx" run_dump_test "suffix" + run_dump_test "immed32" if {![istarget "*-*-aix*"] && (![is_elf_format] || [istarget "*-*-linux*"] @@ -135,6 +136,7 @@ if [expr ([istarget "i*86-*-*"] || [ista run_dump_test "x86-64-branch" run_dump_test "svme64" run_dump_test "x86-64-vmx" + run_dump_test "immed64" # For ELF targets verify that @unwind works. if { ([istarget "*-*-elf*"] || [istarget "*-*-linux*"] diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/i386/immed32.d binutils-2.16.91.0.3/gas/testsuite/gas/i386/immed32.d --- binutils-2.16.91.0.2/gas/testsuite/gas/i386/immed32.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/i386/immed32.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,50 @@ +#objdump: -dw +#name: i386 immed + +.*: +file format .* + +Disassembly of section \.text: + +0+000 <_start>: +[ ]*[0-9a-fA-F]+:[ ]+ff 50 04[ ]+calll? +\*0x4\(%eax\) +[ ]*[0-9a-fA-F]+:[ ]+ff 90 08 00 00 00[ ]+calll? +\*0x8\(%eax\) +[ ]*[0-9a-fA-F]+:[ ]+ff 90 00 00 00 00[ ]+calll? +\*0x0\(%eax\) +[ ]*[0-9a-fA-F]+:[ ]+67 ff 57 04[ ]+(addr16 )?calll? +\*4\(%bx\) +[ ]*[0-9a-fA-F]+:[ ]+67 ff 97 08 00[ ]+(addr16 )?calll? +\*8\(%bx\) +[ ]*[0-9a-fA-F]+:[ ]+67 ff 97 00 00[ ]+(addr16 )?calll? +\*0\(%bx\) +[ ]*[0-9a-fA-F]+:[ ]+b0 04[ ]+movb? +\$0x4,%al +[ ]*[0-9a-fA-F]+:[ ]+b0 08[ ]+movb? +\$0x8,%al +[ ]*[0-9a-fA-F]+:[ ]+b0 00[ ]+movb? +\$0x0,%al +[ ]*[0-9a-fA-F]+:[ ]+66 b8 04 00[ ]+movw? +\$0x4,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 b8 08 00[ ]+movw? +\$0x8,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 b8 00 00[ ]+movw? +\$0x0,%ax +[ ]*[0-9a-fA-F]+:[ ]+b8 04 00 00 00[ ]+movl? +\$0x4,%eax +[ ]*[0-9a-fA-F]+:[ ]+b8 08 00 00 00[ ]+movl? +\$0x8,%eax +[ ]*[0-9a-fA-F]+:[ ]+b8 00 00 00 00[ ]+movl? +\$0x0,%eax +[ ]*[0-9a-fA-F]+:[ ]+04 04[ ]+addb? +\$0x4,%al +[ ]*[0-9a-fA-F]+:[ ]+04 08[ ]+addb? +\$0x8,%al +[ ]*[0-9a-fA-F]+:[ ]+04 00[ ]+addb? +\$0x0,%al +[ ]*[0-9a-fA-F]+:[ ]+66 83 c0 04[ ]+addw? +\$0x4,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 05 08 00[ ]+addw? +\$0x8,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 05 00 00[ ]+addw? +\$0x0,%ax +[ ]*[0-9a-fA-F]+:[ ]+83 c0 04[ ]+addl? +\$0x4,%eax +[ ]*[0-9a-fA-F]+:[ ]+05 08 00 00 00[ ]+addl? +\$0x8,%eax +[ ]*[0-9a-fA-F]+:[ ]+05 00 00 00 00[ ]+addl? +\$0x0,%eax +[ ]*[0-9a-fA-F]+:[ ]+c0 e0 04[ ]+shlb? +\$0x4,%al +[ ]*[0-9a-fA-F]+:[ ]+c0 e0 08[ ]+shlb? +\$0x8,%al +[ ]*[0-9a-fA-F]+:[ ]+c0 e0 00[ ]+shlb? +\$0x0,%al +[ ]*[0-9a-fA-F]+:[ ]+66 c1 e0 04[ ]+shlw? +\$0x4,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 c1 e0 08[ ]+shlw? +\$0x8,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 c1 e0 00[ ]+shlw? +\$0x0,%ax +[ ]*[0-9a-fA-F]+:[ ]+c1 e0 04[ ]+shll? +\$0x4,%eax +[ ]*[0-9a-fA-F]+:[ ]+c1 e0 08[ ]+shll? +\$0x8,%eax +[ ]*[0-9a-fA-F]+:[ ]+c1 e0 00[ ]+shll? +\$0x0,%eax +[ ]*[0-9a-fA-F]+:[ ]+e4 04[ ]+inb? +\$0x4,%al +[ ]*[0-9a-fA-F]+:[ ]+e4 08[ ]+inb? +\$0x8,%al +[ ]*[0-9a-fA-F]+:[ ]+e4 00[ ]+inb? +\$0x0,%al +[ ]*[0-9a-fA-F]+:[ ]+66 e5 04[ ]+inw? +\$0x4,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 e5 08[ ]+inw? +\$0x8,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 e5 00[ ]+inw? +\$0x0,%ax +[ ]*[0-9a-fA-F]+:[ ]+e5 04[ ]+inl? +\$0x4,%eax +[ ]*[0-9a-fA-F]+:[ ]+e5 08[ ]+inl? +\$0x8,%eax +[ ]*[0-9a-fA-F]+:[ ]+e5 00[ ]+inl? +\$0x0,%eax diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/i386/immed32.s binutils-2.16.91.0.3/gas/testsuite/gas/i386/immed32.s --- binutils-2.16.91.0.2/gas/testsuite/gas/i386/immed32.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/i386/immed32.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,47 @@ + .equiv early, 4 + +_start: + calll *early(%eax) + calll *late(%eax) + calll *xtrn(%eax) + calll *early(%bx) + calll *late(%bx) + calll *xtrn(%bx) + movb $early, %al + movb $late, %al + movb $xtrn, %al + movw $early, %ax + movw $late, %ax + movw $xtrn, %ax + movl $early, %eax + movl $late, %eax + movl $xtrn, %eax + addb $early, %al + addb $late, %al + addb $xtrn, %al + addw $early, %ax + addw $late, %ax + addw $xtrn, %ax + addl $early, %eax + addl $late, %eax + addl $xtrn, %eax + shlb $early, %al + shlb $late, %al + shlb $xtrn, %al + shlw $early, %ax + shlw $late, %ax + shlw $xtrn, %ax + shll $early, %eax + shll $late, %eax + shll $xtrn, %eax + inb $early, %al + inb $late, %al + inb $xtrn, %al + inw $early, %ax + inw $late, %ax + inw $xtrn, %ax + inl $early, %eax + inl $late, %eax + inl $xtrn, %eax + + .equiv late, 8 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/i386/immed64.d binutils-2.16.91.0.3/gas/testsuite/gas/i386/immed64.d --- binutils-2.16.91.0.2/gas/testsuite/gas/i386/immed64.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/i386/immed64.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,59 @@ +#objdump: -dw +#name: x86-64 immed + +.*: +file format .* + +Disassembly of section \.text: + +0+000 <_start>: +[ ]*[0-9a-fA-F]+:[ ]+ff 50 04[ ]+callq? +\*0x4\(%rax\) +[ ]*[0-9a-fA-F]+:[ ]+ff 90 08 00 00 00[ ]+callq? +\*0x8\(%rax\) +[ ]*[0-9a-fA-F]+:[ ]+ff 90 00 00 00 00[ ]+callq? +\*0x0\(%rax\) +[ ]*[0-9a-fA-F]+:[ ]+67 ff 50 04[ ]+(addr32 )?callq? +\*0x4\(%eax\) +[ ]*[0-9a-fA-F]+:[ ]+67 ff 90 08 00 00 00[ ]+(addr32 )?callq? +\*0x8\(%eax\) +[ ]*[0-9a-fA-F]+:[ ]+67 ff 90 00 00 00 00[ ]+(addr32 )?callq? +\*0x0\(%eax\) +[ ]*[0-9a-fA-F]+:[ ]+b0 04[ ]+movb? +\$0x4,%al +[ ]*[0-9a-fA-F]+:[ ]+b0 08[ ]+movb? +\$0x8,%al +[ ]*[0-9a-fA-F]+:[ ]+b0 00[ ]+movb? +\$0x0,%al +[ ]*[0-9a-fA-F]+:[ ]+66 b8 04 00[ ]+movw? +\$0x4,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 b8 08 00[ ]+movw? +\$0x8,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 b8 00 00[ ]+movw? +\$0x0,%ax +[ ]*[0-9a-fA-F]+:[ ]+b8 04 00 00 00[ ]+movl? +\$0x4,%eax +[ ]*[0-9a-fA-F]+:[ ]+b8 08 00 00 00[ ]+movl? +\$0x8,%eax +[ ]*[0-9a-fA-F]+:[ ]+b8 00 00 00 00[ ]+movl? +\$0x0,%eax +[ ]*[0-9a-fA-F]+:[ ]+48 b8 04 00 00 00 00 00 00 00[ ]+movq? +\$0x4,%rax +[ ]*[0-9a-fA-F]+:[ ]+48 b8 08 00 00 00 00 00 00 00[ ]+movq? +\$0x8,%rax +[ ]*[0-9a-fA-F]+:[ ]+48 b8 00 00 00 00 00 00 00 00[ ]+movq? +\$0x0,%rax +[ ]*[0-9a-fA-F]+:[ ]+04 04[ ]+addb? +\$0x4,%al +[ ]*[0-9a-fA-F]+:[ ]+04 08[ ]+addb? +\$0x8,%al +[ ]*[0-9a-fA-F]+:[ ]+04 00[ ]+addb? +\$0x0,%al +[ ]*[0-9a-fA-F]+:[ ]+66 83 c0 04[ ]+addw? +\$0x4,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 05 08 00[ ]+addw? +\$0x8,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 05 00 00[ ]+addw? +\$0x0,%ax +[ ]*[0-9a-fA-F]+:[ ]+83 c0 04[ ]+addl? +\$0x4,%eax +[ ]*[0-9a-fA-F]+:[ ]+05 08 00 00 00[ ]+addl? +\$0x8,%eax +[ ]*[0-9a-fA-F]+:[ ]+05 00 00 00 00[ ]+addl? +\$0x0,%eax +[ ]*[0-9a-fA-F]+:[ ]+48 83 c0 04[ ]+addq? +\$0x4,%rax +[ ]*[0-9a-fA-F]+:[ ]+48 05 08 00 00 00[ ]+addq? +\$0x8,%rax +[ ]*[0-9a-fA-F]+:[ ]+48 05 00 00 00 00[ ]+addq? +\$0x0,%rax +[ ]*[0-9a-fA-F]+:[ ]+c0 e0 04[ ]+shlb? +\$0x4,%al +[ ]*[0-9a-fA-F]+:[ ]+c0 e0 08[ ]+shlb? +\$0x8,%al +[ ]*[0-9a-fA-F]+:[ ]+c0 e0 00[ ]+shlb? +\$0x0,%al +[ ]*[0-9a-fA-F]+:[ ]+66 c1 e0 04[ ]+shlw? +\$0x4,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 c1 e0 08[ ]+shlw? +\$0x8,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 c1 e0 00[ ]+shlw? +\$0x0,%ax +[ ]*[0-9a-fA-F]+:[ ]+c1 e0 04[ ]+shll? +\$0x4,%eax +[ ]*[0-9a-fA-F]+:[ ]+c1 e0 08[ ]+shll? +\$0x8,%eax +[ ]*[0-9a-fA-F]+:[ ]+c1 e0 00[ ]+shll? +\$0x0,%eax +[ ]*[0-9a-fA-F]+:[ ]+48 c1 e0 04[ ]+shlq? +\$0x4,%rax +[ ]*[0-9a-fA-F]+:[ ]+48 c1 e0 08[ ]+shlq? +\$0x8,%rax +[ ]*[0-9a-fA-F]+:[ ]+48 c1 e0 00[ ]+shlq? +\$0x0,%rax +[ ]*[0-9a-fA-F]+:[ ]+e4 04[ ]+inb? +\$0x4,%al +[ ]*[0-9a-fA-F]+:[ ]+e4 08[ ]+inb? +\$0x8,%al +[ ]*[0-9a-fA-F]+:[ ]+e4 00[ ]+inb? +\$0x0,%al +[ ]*[0-9a-fA-F]+:[ ]+66 e5 04[ ]+inw? +\$0x4,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 e5 08[ ]+inw? +\$0x8,%ax +[ ]*[0-9a-fA-F]+:[ ]+66 e5 00[ ]+inw? +\$0x0,%ax +[ ]*[0-9a-fA-F]+:[ ]+e5 04[ ]+inl? +\$0x4,%eax +[ ]*[0-9a-fA-F]+:[ ]+e5 08[ ]+inl? +\$0x8,%eax +[ ]*[0-9a-fA-F]+:[ ]+e5 00[ ]+inl? +\$0x0,%eax diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/i386/immed64.s binutils-2.16.91.0.3/gas/testsuite/gas/i386/immed64.s --- binutils-2.16.91.0.2/gas/testsuite/gas/i386/immed64.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/i386/immed64.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,56 @@ + .equiv early, 4 + +_start: + callq *early(%rax) + callq *late(%rax) + callq *xtrn(%rax) + callq *early(%eax) + callq *late(%eax) + callq *xtrn(%eax) + movb $early, %al + movb $late, %al + movb $xtrn, %al + movw $early, %ax + movw $late, %ax + movw $xtrn, %ax + movl $early, %eax + movl $late, %eax + movl $xtrn, %eax + movabsq $early, %rax + movabsq $late, %rax + movabsq $xtrn, %rax + addb $early, %al + addb $late, %al + addb $xtrn, %al + addw $early, %ax + addw $late, %ax + addw $xtrn, %ax + addl $early, %eax + addl $late, %eax + addl $xtrn, %eax + addq $early, %rax + addq $late, %rax + addq $xtrn, %rax + shlb $early, %al + shlb $late, %al + shlb $xtrn, %al + shlw $early, %ax + shlw $late, %ax + shlw $xtrn, %ax + shll $early, %eax + shll $late, %eax + shll $xtrn, %eax + shlq $early, %rax + shlq $late, %rax + shlq $xtrn, %rax + inb $early, %al + inb $late, %al + inb $xtrn, %al + inw $early, %ax + inw $late, %ax + inw $xtrn, %ax + inl $early, %eax + inl $late, %eax + inl $xtrn, %eax + + .equiv late, 8 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/ia64/unwind-bad.l binutils-2.16.91.0.3/gas/testsuite/gas/ia64/unwind-bad.l --- binutils-2.16.91.0.2/gas/testsuite/gas/ia64/unwind-bad.l 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/ia64/unwind-bad.l 2005-08-22 12:27:43.000000000 -0700 @@ -2,17 +2,17 @@ .*:8: Error: First operand to \.save\.g must be a positive 4-bit constant .*:10: Error: First operand to \.save\.g must be a positive 4-bit constant .*:12: Error: First operand to \.save\.g must be a positive 4-bit constant -#FIXME .*:16: Error: Previous spill incomplete +.*:16: Warning: Previous .save incomplete #FIXME .*:18: Error: Register r4 was already saved .*:20: Error: Operand to \.save\.f must be a positive 20-bit constant .*:22: Error: Operand to \.save\.f must be a positive 20-bit constant .*:24: Error: Operand to \.save\.f must be a positive 20-bit constant -#FIXME .*:28: Error: Previous spill incomplete +.*:28: Warning: Previous .save incomplete #FIXME .*:30: Error: Register f2 was already saved .*:32: Error: First operand to \.save\.b must be a positive 5-bit constant .*:34: Error: First operand to \.save\.b must be a positive 5-bit constant .*:36: Error: First operand to \.save\.b must be a positive 5-bit constant -#FIXME .*:40: Error: Previous spill incomplete +.*:40: Warning: Previous .save incomplete #FIXME .*:42: Error: Register b1 was already saved .*:44: Error: Operand 2 to \.spillreg must be a writable register .*:46: Error: Operand 1 to \.spillreg must be a preserved register @@ -32,7 +32,7 @@ .*:82: Error: Second operand to \.save\.gf must be a non-negative 20-bit constant .*:84: Error: First operand to \.save\.gf must be a non-negative 4-bit constant .*:86: Error: Second operand to \.save\.gf must be a non-negative 20-bit constant -#FIXME .*:90: Error: Previous spill incomplete +.*:90: Warning: Previous .save incomplete #FIXME .*:92: Error: Register r4 was already saved #FIXME .*:94: Error: Register f2 was already saved .*:98: Error: Epilogue count of 2 exceeds number of nested prologues \(1\) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/ia64/unwind-ok.d binutils-2.16.91.0.3/gas/testsuite/gas/ia64/unwind-ok.d --- binutils-2.16.91.0.2/gas/testsuite/gas/ia64/unwind-ok.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/ia64/unwind-ok.d 2005-08-22 12:27:43.000000000 -0700 @@ -13,7 +13,7 @@ Unwind section '\.IA_64\.unwind' at offs [[:space:]]*P7:spill_base\(pspoff=0x10-0x10\) [[:space:]]*P3:rp_br\(reg=b7\) [[:space:]]*P10:unwabi\(abi=@svr4,context=0x00\) -[[:space:]]*R1:body\(rlen=[[:digit:]]+\) +[[:space:]]*R1:body\(rlen=25\) [[:space:]]*X2:spill_reg\(t=0,reg=r4,treg=r2\) [[:space:]]*X4:spill_reg_p\(qp=p1,t=1,reg=r7,treg=r31\) [[:space:]]*X1:spill_sprel\(reg=b1,t=2,spoff=0x8\) @@ -41,7 +41,7 @@ Unwind section '\.IA_64\.unwind' at offs [[:space:]]*v[[:digit:]]+, flags=0x0( \(\))?, len=[[:digit:]]+ bytes [[:space:]]*R2:prologue_gr\(mask=\[rp,psp,pr\],grsave=r8,rlen=14\) [[:space:]]*P5:frgr_mem\(grmask=\[r4,r7\],frmask=\[f2,f31\]\) -[[:space:]]*P4:spill_mask\(imask=\[b-b,bb-,---,---,--\]\) +[[:space:]]*P4:spill_mask\(imask=\[frb,bfr,---,---,--\]\) [[:space:]]*P7:spill_base\(pspoff=0x10-0x10\) [[:space:]]*P2:br_gr\(brmask=\[b1,b5\],gr=r32\) [[:space:]]*X2:spill_reg\(t=6,reg=f31,treg=f31\) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/m88k/allinsn.d binutils-2.16.91.0.3/gas/testsuite/gas/m88k/allinsn.d --- binutils-2.16.91.0.2/gas/testsuite/gas/m88k/allinsn.d 2001-07-06 09:26:11.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/m88k/allinsn.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,369 +0,0 @@ -#as: -#objdump: -dr -#name: allinsn - -.*: +file format .* - -Disassembly of section .text: - -00000000 <.text>: - 0: f4 01 70 02 add r0,r1,r2 - 4: f4 22 72 03 add.ci r1,r2,r3 - 8: f4 43 71 04 add.co r2,r3,r4 - c: f4 64 73 05 add.cio r3,r4,r5 - 10: 70 85 00 00 add r4,r5,0 - 14: 70 85 10 00 add r4,r5,0x1000 - 18: f4 01 60 02 addu r0,r1,r2 - 1c: f4 22 62 03 addu.ci r1,r2,r3 - 20: f4 43 61 04 addu.co r2,r3,r4 - 24: f4 64 63 05 addu.cio r3,r4,r5 - 28: 60 85 00 00 addu r4,r5,0 - 2c: 60 85 10 00 addu r4,r5,0x1000 - 30: f4 01 40 02 and r0,r1,r2 - 34: f4 22 44 03 and.c r1,r2,r3 - 38: 40 43 00 00 and r2,r3,0 - 3c: 40 43 10 00 and r2,r3,0x1000 - 40: 44 43 00 00 and.u r2,r3,0 - 44: 44 43 10 00 and.u r2,r3,0x1000 - 48: d0 01 00 00 bb0 0,r1,48 <.text\+0x48> - 4a: PCR16L \*ABS\* - 4c: d0 01 ff fd bb0 0,r1,40 <.text\+0x40> - 4e: PCR16L \*ABS\* - 50: d0 01 00 02 bb0 0,r1,58 <.text\+0x58> - 52: PCR16L \*ABS\* - 54: d3 e1 00 00 bb0 0x1f,r1,54 <.text\+0x54> - 56: PCR16L \*ABS\* - 58: d3 e1 ff fd bb0 0x1f,r1,4c <.text\+0x4c> - 5a: PCR16L \*ABS\* - 5c: d3 e1 00 02 bb0 0x1f,r1,64 <.text\+0x64> - 5e: PCR16L \*ABS\* - 60: d4 01 00 00 bb0.n 0,r1,60 <.text\+0x60> - 62: PCR16L \*ABS\* - 64: d8 01 00 00 bb1 0,r1,64 <.text\+0x64> - 66: PCR16L \*ABS\* - 68: d8 01 ff fd bb1 0,r1,5c <.text\+0x5c> - 6a: PCR16L \*ABS\* - 6c: d8 01 00 02 bb1 0,r1,74 <.text\+0x74> - 6e: PCR16L \*ABS\* - 70: db e1 00 00 bb1 0x1f,r1,70 <.text\+0x70> - 72: PCR16L \*ABS\* - 74: db e1 ff fd bb1 0x1f,r1,68 <.text\+0x68> - 76: PCR16L \*ABS\* - 78: db e1 00 02 bb1 0x1f,r1,80 <.text\+0x80> - 7a: PCR16L \*ABS\* - 7c: dc 01 00 00 bb1.n 0,r1,7c <.text\+0x7c> - 7e: PCR16L \*ABS\* - 80: e8 41 00 00 bcnd eq0,r1,80 <.text\+0x80> - 82: PCR16L \*ABS\* - 84: e8 41 00 02 bcnd eq0,r1,8c <.text\+0x8c> - 86: PCR16L \*ABS\* - 88: e8 41 ff fd bcnd eq0,r1,7c <.text\+0x7c> - 8a: PCR16L \*ABS\* - 8c: ec 41 00 00 bcnd.n eq0,r1,8c <.text\+0x8c> - 8e: PCR16L \*ABS\* - 90: ec 41 00 02 bcnd.n eq0,r1,98 <.text\+0x98> - 92: PCR16L \*ABS\* - 94: ec 41 ff fd bcnd.n eq0,r1,88 <.text\+0x88> - 96: PCR16L \*ABS\* - 98: e9 a1 00 00 bcnd ne0,r1,98 <.text\+0x98> - 9a: PCR16L \*ABS\* - 9c: e9 a1 00 02 bcnd ne0,r1,a4 <.text\+0xa4> - 9e: PCR16L \*ABS\* - a0: e9 a1 ff fd bcnd ne0,r1,94 <.text\+0x94> - a2: PCR16L \*ABS\* - a4: ed a1 00 00 bcnd.n ne0,r1,a4 <.text\+0xa4> - a6: PCR16L \*ABS\* - a8: ed a1 00 02 bcnd.n ne0,r1,b0 <.text\+0xb0> - aa: PCR16L \*ABS\* - ac: ed a1 ff fd bcnd.n ne0,r1,a0 <.text\+0xa0> - ae: PCR16L \*ABS\* - b0: e8 21 00 00 bcnd gt0,r1,b0 <.text\+0xb0> - b2: PCR16L \*ABS\* - b4: e8 21 00 02 bcnd gt0,r1,bc <.text\+0xbc> - b6: PCR16L \*ABS\* - b8: e8 21 ff fd bcnd gt0,r1,ac <.text\+0xac> - ba: PCR16L \*ABS\* - bc: ec 21 00 00 bcnd.n gt0,r1,bc <.text\+0xbc> - be: PCR16L \*ABS\* - c0: ec 21 00 02 bcnd.n gt0,r1,c8 <.text\+0xc8> - c2: PCR16L \*ABS\* - c4: ec 21 ff fd bcnd.n gt0,r1,b8 <.text\+0xb8> - c6: PCR16L \*ABS\* - c8: e9 81 00 00 bcnd lt0,r1,c8 <.text\+0xc8> - ca: PCR16L \*ABS\* - cc: e9 81 00 02 bcnd lt0,r1,d4 <.text\+0xd4> - ce: PCR16L \*ABS\* - d0: e9 81 ff fd bcnd lt0,r1,c4 <.text\+0xc4> - d2: PCR16L \*ABS\* - d4: ed 81 00 00 bcnd.n lt0,r1,d4 <.text\+0xd4> - d6: PCR16L \*ABS\* - d8: ed 81 00 02 bcnd.n lt0,r1,e0 <.text\+0xe0> - da: PCR16L \*ABS\* - dc: ed 81 ff fd bcnd.n lt0,r1,d0 <.text\+0xd0> - de: PCR16L \*ABS\* - e0: e8 61 00 00 bcnd ge0,r1,e0 <.text\+0xe0> - e2: PCR16L \*ABS\* - e4: e8 61 00 02 bcnd ge0,r1,ec <.text\+0xec> - e6: PCR16L \*ABS\* - e8: e8 61 ff fd bcnd ge0,r1,dc <.text\+0xdc> - ea: PCR16L \*ABS\* - ec: ec 61 00 00 bcnd.n ge0,r1,ec <.text\+0xec> - ee: PCR16L \*ABS\* - f0: ec 61 00 02 bcnd.n ge0,r1,f8 <.text\+0xf8> - f2: PCR16L \*ABS\* - f4: ec 61 ff fd bcnd.n ge0,r1,e8 <.text\+0xe8> - f6: PCR16L \*ABS\* - f8: e9 c1 00 00 bcnd le0,r1,f8 <.text\+0xf8> - fa: PCR16L \*ABS\* - fc: e9 c1 00 02 bcnd le0,r1,104 <.text\+0x104> - fe: PCR16L \*ABS\* - 100: e9 c1 ff fd bcnd le0,r1,f4 <.text\+0xf4> - 102: PCR16L \*ABS\* - 104: ed c1 00 00 bcnd.n le0,r1,104 <.text\+0x104> - 106: PCR16L \*ABS\* - 108: ed c1 00 02 bcnd.n le0,r1,110 <.text\+0x110> - 10a: PCR16L \*ABS\* - 10c: ed c1 ff fd bcnd.n le0,r1,100 <.text\+0x100> - 10e: PCR16L \*ABS\* - 110: e8 61 00 00 bcnd ge0,r1,110 <.text\+0x110> - 112: PCR16L \*ABS\* - 114: e8 61 00 02 bcnd ge0,r1,11c <.text\+0x11c> - 116: PCR16L \*ABS\* - 118: e8 61 ff fd bcnd ge0,r1,10c <.text\+0x10c> - 11a: PCR16L \*ABS\* - 11c: ec 61 00 00 bcnd.n ge0,r1,11c <.text\+0x11c> - 11e: PCR16L \*ABS\* - 120: ec 61 00 02 bcnd.n ge0,r1,128 <.text\+0x128> - 122: PCR16L \*ABS\* - 124: ec 61 ff fd bcnd.n ge0,r1,118 <.text\+0x118> - 126: PCR16L \*ABS\* - 128: c0 00 00 00 br 128 <.text\+0x128> - 128: PCR26L \*ABS\* - 12c: c3 ff ff fd br 120 <.text\+0x120> - 12c: PCR26L \*ABS\* - 130: c0 00 00 02 br 138 <.text\+0x138> - 130: PCR26L \*ABS\* - 134: c4 00 00 00 br.n 134 <.text\+0x134> - 134: PCR26L \*ABS\* - 138: c7 ff ff fd br.n 12c <.text\+0x12c> - 138: PCR26L \*ABS\* - 13c: c4 00 00 02 br.n 144 <.text\+0x144> - 13c: PCR26L \*ABS\* - 140: c8 00 00 00 bsr 140 <.text\+0x140> - 140: PCR26L \*ABS\* - 144: cb ff ff fd bsr 138 <.text\+0x138> - 144: PCR26L \*ABS\* - 148: c8 00 00 02 bsr 150 <.text\+0x150> - 148: PCR26L \*ABS\* - 14c: cc 00 00 00 bsr.n 14c <.text\+0x14c> - 14c: PCR26L \*ABS\* - 150: cf ff ff fd bsr.n 144 <.text\+0x144> - 150: PCR26L \*ABS\* - 154: cc 00 00 02 bsr.n 15c <.text\+0x15c> - 154: PCR26L \*ABS\* - 158: f0 22 80 af clr r1,r2,5<15> - 15c: f4 22 80 03 clr r1,r2,r3 - 160: f0 22 80 06 clr r1,r2,0<6> - 164: f0 22 80 06 clr r1,r2,0<6> - 168: f4 01 7c 02 cmp r0,r1,r2 - 16c: 7c 02 00 00 cmp r0,r2,0 - 170: 7c 02 10 00 cmp r0,r2,0x1000 - 174: f4 01 78 02 divs r0,r1,r2 - 178: 78 01 00 00 divs r0,r1,0 - 17c: 78 01 10 00 divs r0,r1,0x1000 - 180: f4 01 68 02 divu r0,r1,r2 - 184: 68 01 00 00 divu r0,r1,0 - 188: 68 01 00 0a divu r0,r1,0x0a - 18c: f0 01 91 45 ext r0,r1,10<5> - 190: f4 22 90 03 ext r1,r2,r3 - 194: f0 43 90 06 ext r2,r3,0<6> - 198: f0 43 90 06 ext r2,r3,0<6> - 19c: f0 01 99 45 extu r0,r1,10<5> - 1a0: f4 22 98 03 extu r1,r2,r3 - 1a4: f0 22 98 06 extu r1,r2,0<6> - 1a8: f0 22 98 06 extu r1,r2,0<6> - 1ac: 84 01 28 02 fadd.sss r0,r1,r2 - 1b0: 84 01 28 82 fadd.ssd r0,r1,r2 - 1b4: 84 01 2a 02 fadd.sds r0,r1,r2 - 1b8: 84 01 2a 82 fadd.sdd r0,r1,r2 - 1bc: 84 01 28 22 fadd.dss r0,r1,r2 - 1c0: 84 01 28 a2 fadd.dsd r0,r1,r2 - 1c4: 84 01 2a 22 fadd.dds r0,r1,r2 - 1c8: 84 01 2a a2 fadd.ddd r0,r1,r2 - 1cc: 84 01 38 02 fcmp.ss r0,r1,r2 - 1d0: 84 01 38 82 fcmp.sd r0,r1,r2 - 1d4: 84 01 3a 02 fcmp.ds r0,r1,r2 - 1d8: 84 01 3a 82 fcmp.dd r0,r1,r2 - 1dc: 84 01 70 02 fdiv.sss r0,r1,r2 - 1e0: 84 01 70 82 fdiv.ssd r0,r1,r2 - 1e4: 84 01 72 02 fdiv.sds r0,r1,r2 - 1e8: 84 01 72 82 fdiv.sdd r0,r1,r2 - 1ec: 84 01 70 22 fdiv.dss r0,r1,r2 - 1f0: 84 01 70 a2 fdiv.dsd r0,r1,r2 - 1f4: 84 01 72 22 fdiv.dds r0,r1,r2 - 1f8: 84 01 72 a2 fdiv.ddd r0,r1,r2 - 1fc: f4 20 ec 07 ff0 r1,r7 - 200: f4 60 e8 08 ff1 r3,r8 - 204: 80 00 4e 40 fldcr r0,fcr50 - 208: 84 00 20 03 flt.s r0,r3 - 20c: 84 00 20 2a flt.d r0,r10 - 210: 84 01 00 02 fmul.sss r0,r1,r2 - 214: 84 01 00 82 fmul.ssd r0,r1,r2 - 218: 84 01 02 02 fmul.sds r0,r1,r2 - 21c: 84 01 02 82 fmul.sdd r0,r1,r2 - 220: 84 01 00 22 fmul.dss r0,r1,r2 - 224: 84 01 00 a2 fmul.dsd r0,r1,r2 - 228: 84 01 02 22 fmul.dds r0,r1,r2 - 22c: 84 01 02 a2 fmul.ddd r0,r1,r2 - 230: 80 00 8e 40 fstcr r0,fcr50 - 234: 84 01 30 02 fsub.sss r0,r1,r2 - 238: 84 01 30 82 fsub.ssd r0,r1,r2 - 23c: 84 01 32 02 fsub.sds r0,r1,r2 - 240: 84 01 32 82 fsub.sdd r0,r1,r2 - 244: 84 01 30 22 fsub.dss r0,r1,r2 - 248: 84 01 30 a2 fsub.dsd r0,r1,r2 - 24c: 84 01 32 22 fsub.dds r0,r1,r2 - 250: 84 01 32 a2 fsub.ddd r0,r1,r2 - 254: 80 01 ce 41 fxcr r0,r1,fcr50 - 258: 84 00 48 01 int.s r0,r1 - 25c: 85 40 48 82 int.d r10,r2 - 260: f4 00 c0 00 jmp r0 - 264: f4 00 c4 0a jmp.n r10 - 268: f4 00 c8 0a jsr r10 - 26c: f4 00 cc 0d jsr.n r13 - 270: 1c 01 00 00 ld.b r0,r1,0 - 274: 1c 01 10 00 ld.b r0,r1,0x1000 - 278: 0c 01 00 00 ld.bu r0,r1,0 - 27c: 0c 01 10 00 ld.bu r0,r1,0x1000 - 280: 18 01 00 00 ld.h r0,r1,0 - 284: 18 01 10 00 ld.h r0,r1,0x1000 - 288: 08 01 00 00 ld.hu r0,r1,0 - 28c: 08 01 10 00 ld.hu r0,r1,0x1000 - 290: 14 01 00 00 ld r0,r1,0 - 294: 14 01 10 00 ld r0,r1,0x1000 - 298: 10 01 00 00 ld.d r0,r1,0 - 29c: 10 01 10 00 ld.d r0,r1,0x1000 - 2a0: f4 01 1c 02 ld.b r0,r1,r2 - 2a4: f4 22 0c 03 ld.bu r1,r2,r3 - 2a8: f4 43 18 04 ld.h r2,r3,r4 - 2ac: f4 64 08 05 ld.hu r3,r4,r5 - 2b0: f4 85 14 06 ld r4,r5,r6 - 2b4: f4 a6 10 07 ld.d r5,r6,r7 - 2b8: f4 c7 1d 08 word f4c71d08 - 2bc: f4 e8 0d 09 word f4e80d09 - 2c0: f5 09 19 01 word f5091901 - 2c4: f5 21 09 02 word f5210902 - 2c8: f4 22 15 03 ld.usr r1,r2,r3 - 2cc: f4 43 11 04 word f4431104 - 2d0: f4 01 1e 02 word f4011e02 - 2d4: f4 22 0e 03 word f4220e03 - 2d8: f4 43 1a 04 ld.h r2,r3\[r4\] - 2dc: f4 64 0a 05 ld.hu r3,r4\[r5\] - 2e0: f4 85 16 06 ld r4,r5\[r6\] - 2e4: f4 a6 12 07 ld.d r5,r6\[r7\] - 2e8: f4 c7 1f 08 word f4c71f08 - 2ec: f4 e8 0f 09 word f4e80f09 - 2f0: f5 09 1b 01 word f5091b01 - 2f4: f5 21 0b 02 word f5210b02 - 2f8: f4 22 17 03 ld.usr r1,r2\[r3\] - 2fc: f4 43 13 04 word f4431304 - 300: f4 01 3a 02 lda.h r0,r1\[r2\] - 304: f4 22 36 03 lda r1,r2\[r3\] - 308: f4 43 32 04 lda.d r2,r3\[r4\] - 30c: 80 00 41 40 ldcr r0,cr10 - 310: f0 01 a1 45 mak r0,r1,10<5> - 314: f4 01 a0 02 mak r0,r1,r2 - 318: f0 01 a0 06 mak r0,r1,0<6> - 31c: f0 01 a0 06 mak r0,r1,0<6> - 320: 48 01 00 00 mask r0,r1,0 - 324: 48 01 10 00 mask r0,r1,0x1000 - 328: 4c 01 00 00 mask.u r0,r1,0 - 32c: 4c 01 10 00 mask.u r0,r1,0x1000 - 330: f4 01 6c 02 mulu r0,r1,r2 - 334: 6c 01 00 00 mulu r0,r1,0 - 338: 6c 01 10 00 mulu r0,r1,0x1000 - 33c: 84 00 50 0a nint.s r0,r10 - 340: 85 40 50 8c nint.d r10,r12 - 344: f4 01 58 02 or r0,r1,r2 - 348: f4 27 5c 0a or.c r1,r7,r10 - 34c: 58 04 00 00 or r0,r4,0 - 350: 58 04 10 00 or r0,r4,0x1000 - 354: 5c 01 00 00 or.u r0,r1,0 - 358: 5c 44 10 00 or.u r2,r4,0x1000 - 35c: f0 01 a8 05 rot r0,r1,0<5> - 360: f4 44 a8 06 rot r2,r4,r6 - 364: f4 00 fc 00 rte - 368: f0 01 89 45 set r0,r1,10<5> - 36c: f4 44 88 06 set r2,r4,r6 - 370: f0 67 88 06 set r3,r7,0<6> - 374: f0 67 88 06 set r3,r7,0<6> - 378: 2c 01 00 00 st.b r0,r1,0 - 37c: 2c 01 10 00 st.b r0,r1,0x1000 - 380: 28 01 00 00 st.h r0,r1,0 - 384: 28 01 10 00 st.h r0,r1,0x1000 - 388: 24 01 00 00 st r0,r1,0 - 38c: 24 01 10 00 st r0,r1,0x1000 - 390: 20 01 00 00 st.d r0,r1,0 - 394: 20 01 10 00 st.d r0,r1,0x1000 - 398: f4 01 2c 02 st.b r0,r1,r2 - 39c: f4 43 28 04 st.h r2,r3,r4 - 3a0: f4 85 24 06 st r4,r5,r6 - 3a4: f4 a6 20 07 st.d r5,r6,r7 - 3a8: f4 c7 2d 08 word f4c72d08 - 3ac: f5 09 29 01 word f5092901 - 3b0: f4 22 25 03 st.usr r1,r2,r3 - 3b4: f4 43 21 04 word f4432104 - 3b8: f4 01 2e 02 word f4012e02 - 3bc: f4 43 2a 04 st.h r2,r3\[r4\] - 3c0: f4 85 26 06 st r4,r5\[r6\] - 3c4: f4 a6 22 07 st.d r5,r6\[r7\] - 3c8: f4 c7 2f 08 word f4c72f08 - 3cc: f5 09 2b 01 word f5092b01 - 3d0: f4 22 27 03 st.usr r1,r2\[r3\] - 3d4: f4 43 23 04 word f4432304 - 3d8: 80 00 81 40 stcr r0,cr10 - 3dc: f4 01 74 02 sub r0,r1,r2 - 3e0: f4 22 76 03 sub.ci r1,r2,r3 - 3e4: f4 43 75 04 sub.co r2,r3,r4 - 3e8: f4 64 77 05 sub.cio r3,r4,r5 - 3ec: 74 85 00 00 sub r4,r5,0 - 3f0: 74 85 10 00 sub r4,r5,0x1000 - 3f4: f4 01 64 02 subu r0,r1,r2 - 3f8: f4 22 66 03 subu.ci r1,r2,r3 - 3fc: f4 64 65 05 subu.co r3,r4,r5 - 400: f4 85 67 06 subu.cio r4,r5,r6 - 404: 64 a6 00 00 subu r5,r6,0 - 408: 64 a6 10 00 subu r5,r6,0x1000 - 40c: f0 0a d0 0a tb0 0,r10,0x0a - 410: f3 eb d0 0a tb0 0x1f,r11,0x0a - 414: f0 0a d8 0a tb1 0,r10,0x0a - 418: f3 eb d8 0a tb1 0x1f,r11,0x0a - 41c: f4 00 f8 01 tbnd r0,r1 - 420: f8 07 00 00 tbnd r7,0 - 424: f8 07 10 00 tbnd r7,0x1000 - 428: f0 4a e8 0c tcnd eq0,r10,0x0c - 42c: f1 a9 e8 0c tcnd ne0,r9,0x0c - 430: f0 28 e8 07 tcnd gt0,r8,0x07 - 434: f1 87 e8 01 tcnd lt0,r7,0x01 - 438: f0 66 e8 23 tcnd ge0,r6,0x23 - 43c: f1 c5 e8 21 tcnd le0,r5,0x21 - 440: f1 44 e8 0c tcnd a,r4,0x0c - 444: 84 00 58 01 trnc.s r0,r1 - 448: 84 20 58 83 trnc.d r1,r3 - 44c: 80 03 c1 43 xcr r0,r3,cr10 - 450: f4 01 00 02 xmem.bu r0,r1,r2 - 454: f4 22 04 03 xmem r1,r2,r3 - 458: f4 85 01 06 word f4850106 - 45c: f4 a6 05 07 xmem.usr r5,r6,r7 - 460: f4 43 02 04 word f4430204 - 464: f4 64 06 05 xmem r3,r4\[r5\] - 468: f4 85 03 09 word f4850309 - 46c: f4 a6 07 0a xmem.usr r5,r6\[r10\] - 470: f4 01 50 02 xor r0,r1,r2 - 474: f4 22 54 03 xor.c r1,r2,r3 - 478: 50 43 00 00 xor r2,r3,0 - 47c: 50 44 10 00 xor r2,r4,0x1000 - 480: 54 22 00 00 xor.u r1,r2,0 - 484: 54 43 10 00 xor.u r2,r3,0x1000 - 488: f4 00 58 00 or r0,r0,r0 - 48c: f4 00 58 00 or r0,r0,r0 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/m88k/allinsn.s binutils-2.16.91.0.3/gas/testsuite/gas/m88k/allinsn.s --- binutils-2.16.91.0.2/gas/testsuite/gas/m88k/allinsn.s 2001-07-06 09:26:11.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/m88k/allinsn.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,460 +0,0 @@ - ;; Test all instructions in the m88k instruction set. - ;; Copyright 2001 Free Software Foundation, Inc. - ;; Contributed by Ben Elliston (bje at redhat.com). - -.text - ;; integer add - - add r0, r1, r2 - add.ci r1, r2, r3 - add.co r2, r3, r4 - add.cio r3, r4, r5 - add r4, r5, 0 - add r4, r5, 4096 - - ;; unsigned integer add - - addu r0, r1, r2 - addu.ci r1, r2, r3 - addu.co r2, r3, r4 - addu.cio r3, r4, r5 - addu r4, r5, 0 - addu r4, r5, 4096 - - ;; logical and - - and r0, r1, r2 - and.c r1, r2, r3 - and r2, r3, 0 - and r2, r3, 4096 - and.u r2, r3, 0 - and.u r2, r3, 4096 - - ;; branch on bit clear - - bb0 0, r1, 0 - bb0 0, r1, -10 - bb0 0, r1, 10 - bb0 31, r1, 0 - bb0 31, r1, -10 - bb0 31, r1, 10 - bb0.n 0, r1, 0 - - ;; branch on bit set - - bb1 0, r1, 0 - bb1 0, r1, -10 - bb1 0, r1, 10 - bb1 31, r1, 0 - bb1 31, r1, -10 - bb1 31, r1, 10 - bb1.n 0, r1, 0 - - ;; conditional branch - - bcnd eq0, r1, 0 - bcnd eq0, r1, 10 - bcnd eq0, r1, -10 - bcnd.n eq0, r1, 0 - bcnd.n eq0, r1, 10 - bcnd.n eq0, r1, -10 - bcnd ne0, r1, 0 - bcnd ne0, r1, 10 - bcnd ne0, r1, -10 - bcnd.n ne0, r1, 0 - bcnd.n ne0, r1, 10 - bcnd.n ne0, r1, -10 - bcnd gt0, r1, 0 - bcnd gt0, r1, 10 - bcnd gt0, r1, -10 - bcnd.n gt0, r1, 0 - bcnd.n gt0, r1, 10 - bcnd.n gt0, r1, -10 - bcnd lt0, r1, 0 - bcnd lt0, r1, 10 - bcnd lt0, r1, -10 - bcnd.n lt0, r1, 0 - bcnd.n lt0, r1, 10 - bcnd.n lt0, r1, -10 - bcnd ge0, r1, 0 - bcnd ge0, r1, 10 - bcnd ge0, r1, -10 - bcnd.n ge0, r1, 0 - bcnd.n ge0, r1, 10 - bcnd.n ge0, r1, -10 - bcnd le0, r1, 0 - bcnd le0, r1, 10 - bcnd le0, r1, -10 - bcnd.n le0, r1, 0 - bcnd.n le0, r1, 10 - bcnd.n le0, r1, -10 - ;; using m5 field - bcnd 3, r1, 0 - bcnd 3, r1, 10 - bcnd 3, r1, -10 - bcnd.n 3, r1, 0 - bcnd.n 3, r1, 10 - bcnd.n 3, r1, -10 - - ;; uncoditional branch - - br 0 - br -10 - br 10 - br.n 0 - br.n -10 - br.n 10 - - ;; branch to subroutine - - bsr 0 - bsr -10 - bsr 10 - bsr.n 0 - bsr.n -10 - bsr.n 10 - - ;; clear bit field - - clr r1, r2, 5<15> - clr r1, r2, r3 - clr r1, r2, 6 - clr r1, r2, <6> - - ;; integer compare - - cmp r0, r1, r2 - cmp r0, r2, 0 - cmp r0, r2, 4096 - - ;; signed integer divide - - div r0, r1, r2 - div r0, r1, 0 - div r0, r1, 4096 - - ;; unsigned integer divide - - divu r0, r1, r2 - divu r0, r1, 0 - divu r0, r1, 10 - - ;; extract signed bit field - - ext r0, r1, 10<5> - ext r1, r2, r3 - ext r2, r3, 6 - ext r2, r3, <6> - - ;; extract unsigned bit field - - extu r0, r1, 10<5> - extu r1, r2, r3 - extu r1, r2, 6 - extu r1, r2, <6> - - ;; floating point add - - fadd.sss r0, r1, r2 - fadd.ssd r0, r1, r2 - fadd.sds r0, r1, r2 - fadd.sdd r0, r1, r2 - fadd.dss r0, r1, r2 - fadd.dsd r0, r1, r2 - fadd.dds r0, r1, r2 - fadd.ddd r0, r1, r2 - - ;; floating point compare - - fcmp.sss r0, r1, r2 - fcmp.ssd r0, r1, r2 - fcmp.sds r0, r1, r2 - fcmp.sdd r0, r1, r2 - - ;; floating point divide - - fdiv.sss r0, r1, r2 - fdiv.ssd r0, r1, r2 - fdiv.sds r0, r1, r2 - fdiv.sdd r0, r1, r2 - fdiv.dss r0, r1, r2 - fdiv.dsd r0, r1, r2 - fdiv.dds r0, r1, r2 - fdiv.ddd r0, r1, r2 - - ;; find first bit clear - - ff0 r1, r7 - - ;; find first bit set - - ff1 r3, r8 - - ;; load from floating-point control register - - fldcr r0, fcr50 - - ;; convert integer to floating point - - flt.ss r0, r3 - flt.ds r0, r10 - - ;; floating point multiply - - fmul.sss r0, r1, r2 - fmul.ssd r0, r1, r2 - fmul.sds r0, r1, r2 - fmul.sdd r0, r1, r2 - fmul.dss r0, r1, r2 - fmul.dsd r0, r1, r2 - fmul.dds r0, r1, r2 - fmul.ddd r0, r1, r2 - - ;; store to floating point control register - - fstcr r0, fcr50 - - ;; floating point subtract - - fsub.sss r0, r1, r2 - fsub.ssd r0, r1, r2 - fsub.sds r0, r1, r2 - fsub.sdd r0, r1, r2 - fsub.dss r0, r1, r2 - fsub.dsd r0, r1, r2 - fsub.dds r0, r1, r2 - fsub.ddd r0, r1, r2 - - ;; exchange floating point control register - - fxcr r0, r1, fcr50 - - ;; round floating point to integer - - int.ss r0, r1 - int.sd r10, r2 - - ;; unconditional jump - - jmp r0 - jmp.n r10 - - ;; jump to subroutine - - jsr r10 - jsr.n r13 - - ;; load register from memory - - ;; unscaled - ld.b r0, r1, 0 - ld.b r0, r1, 4096 - ld.bu r0, r1, 0 - ld.bu r0, r1, 4096 - ld.h r0, r1, 0 - ld.h r0, r1, 4096 - ld.hu r0, r1, 0 - ld.hu r0, r1, 4096 - ld r0, r1, 0 - ld r0, r1, 4096 - ld.d r0, r1, 0 - ld.d r0, r1, 4096 - ;; unscaled - ld.b r0, r1, r2 - ld.bu r1, r2, r3 - ld.h r2, r3, r4 - ld.hu r3, r4, r5 - ld r4, r5, r6 - ld.d r5, r6, r7 - ld.b.usr r6, r7, r8 - ld.bu.usr r7, r8, r9 - ld.h.usr r8, r9, r1 - ld.hu.usr r9, r1, r2 - ld.usr r1, r2, r3 - ld.d.usr r2, r3, r4 - ;; scaled - ld.b r0, r1[r2] - ld.bu r1, r2[r3] - ld.h r2, r3[r4] - ld.hu r3, r4[r5] - ld r4, r5[r6] - ld.d r5, r6[r7] - ld.b.usr r6, r7[r8] - ld.bu.usr r7, r8[r9] - ld.h.usr r8, r9[r1] - ld.hu.usr r9, r1[r2] - ld.usr r1, r2[r3] - ld.d.usr r2, r3[r4] - - ;; load address - - lda.h r0, r1[r2] - lda r1,r2[r3] - lda.d r2,r3[r4] - - ;; load from control register - - ldcr r0, cr10 - - ;; make bit field - - mak r0, r1, 10<5> - mak r0, r1, r2 - mak r0, r1, 6 - mak r0, r1, <6> - - ;; logical mask immediate - - mask r0, r1, 0 - mask r0, r1, 4096 - mask.u r0, r1, 0 - mask.u r0, r1, 4096 - - ;; integer multiply - - mul r0, r1, r2 - mul r0, r1, 0 - mul r0, r1, 4096 - - ;; floating point round to nearest integer - - nint.ss r0, r10 - nint.sd r10, r12 - - ;; logical or - - or r0, r1, r2 - or.c r1, r7, r10 - or r0, r4, 0 - or r0, r4, 4096 - or.u r0, r1, 0 - or.u r2, r4, 4096 - - ;; rotate register - - rot r0, r1,<5> - rot r2, r4, r6 - - ;; return from exception - - rte - - ;; set bit field - - set r0, r1, 10<5> - set r2, r4, r6 - set r3, r7, 6 - set r3, r7, <6> - - ;; store register to memory - - ;; unscaled - st.b r0, r1, 0 - st.b r0, r1, 4096 - st.h r0, r1, 0 - st.h r0, r1, 4096 - st r0, r1, 0 - st r0, r1, 4096 - st.d r0, r1, 0 - st.d r0, r1, 4096 - ;; unscaled - st.b r0, r1, r2 - st.h r2, r3, r4 - st r4, r5, r6 - st.d r5, r6, r7 - st.b.usr r6, r7, r8 - st.h.usr r8, r9, r1 - st.usr r1, r2, r3 - st.d.usr r2, r3, r4 - ;; scaled - st.b r0, r1[r2] - st.h r2, r3[r4] - st r4, r5[r6] - st.d r5, r6[r7] - st.b.usr r6, r7[r8] - st.h.usr r8, r9[r1] - st.usr r1, r2[r3] - st.d.usr r2, r3[r4] - - ;; store to control register - - stcr r0, cr10 - - ;; integer subtract - - sub r0, r1, r2 - sub.ci r1, r2, r3 - sub.co r2, r3, r4 - sub.cio r3, r4, r5 - sub r4, r5, 0 - sub r4, r5, 4096 - - ;; unsigned integer subtract - - subu r0, r1, r2 - subu.ci r1, r2, r3 - subu.co r3, r4, r5 - subu.cio r4, r5, r6 - subu r5, r6, 0 - subu r5, r6, 4096 - - ;; trap on bit clear - - tb0 0, r10, 10 - tb0 31, r11, 10 - - ;; trap on bit set - - tb1 0, r10, 10 - tb1 31, r11, 10 - - ;; trap on bounds check - - tbnd r0, r1 - tbnd r7, 0 - tbnd r7, 4096 - - ;; conditional trap - - tcnd eq0, r10, 12 - tcnd ne0, r9, 12 - tcnd gt0, r8, 7 - tcnd lt0, r7, 1 - tcnd ge0, r6, 35 - tcnd le0, r5, 33 - tcnd 10, r4, 12 - - ;; truncate floating point to integer - - trnc.ss r0, r1 - trnc.sd r1, r3 - - ;; exchange control register - - xcr r0, r3, cr10 - - ;; exchange register with memory - - ;; FIXME: these should assemble! - ;; xmem.bu r0, r1, 0 - ;; xmem.bu r0, r1, 10 - ;; xmem r0, r1, 0 - ;; xmem r1, r2, 4096 - xmem.bu r0, r1, r2 - xmem r1, r2, r3 - xmem.bu.usr r4, r5, r6 - xmem.usr r5, r6, r7 - xmem.bu r2, r3[r4] - xmem r3, r4[r5] - xmem.bu.usr r4, r5[r9] - xmem.usr r5, r6[r10] - - ;; logical exclusive or - - xor r0, r1, r2 - xor.c r1, r2, r3 - xor r2, r3, 0 - xor r2, r4, 4096 - xor.u r1, r2, 0 - xor.u r2, r3, 4096 - diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/m88k/init.d binutils-2.16.91.0.3/gas/testsuite/gas/m88k/init.d --- binutils-2.16.91.0.2/gas/testsuite/gas/m88k/init.d 2004-01-14 13:07:47.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/m88k/init.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,10 +0,0 @@ -#objdump: -d --prefix-addresses -#name: padding of .init section - -.*: +file format .* - -Disassembly of section .init: -00000000 <.init> subu r31,r31,0x10 -00000004 <.init\+0x4> st r13,r31,0x20 -00000008 <.init\+0x8> or r0,r0,r0 -0000000c <.init\+0xc> or r0,r0,r0 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/m88k/init.s binutils-2.16.91.0.3/gas/testsuite/gas/m88k/init.s --- binutils-2.16.91.0.2/gas/testsuite/gas/m88k/init.s 1999-06-03 11:02:03.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/m88k/init.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,5 +0,0 @@ -; Test proper padding of the .init section - section .init,"x" - align 4 - subu r31,r31,16 - st r13,r31,32 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/m88k/m88k.exp binutils-2.16.91.0.3/gas/testsuite/gas/m88k/m88k.exp --- binutils-2.16.91.0.2/gas/testsuite/gas/m88k/m88k.exp 2005-05-10 15:46:47.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/m88k/m88k.exp 1969-12-31 16:00:00.000000000 -0800 @@ -1,26 +0,0 @@ -# Copyright 2001 Free Software Foundation, Inc. - -# 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - -# Tests for m88k svr3 targets - -if { [istarget m88*-*-sysv3] || [istarget m88*-*-coff* ] } then { - set testname "Proper padding of .init section" - run_dump_test init - set testname "All m88k instructions assemble and disassemble" - run_dump_test allinsn -} - -if [info exists errorInfo] then { unset errorInfo } diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-g5.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-g5.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-g5.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-g5.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,477 @@ +#name: s390 opcode +#objdump: -drw + +.*: +file format .* + +Disassembly of section .text: + +.* : +.*: 5a 65 af ff [ ]*a %r6,4095\(%r5,%r10\) +.*: 6a 65 af ff [ ]*ad %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 1a [ ]*adb %f6,4095\(%r5,%r10\) +.*: b3 1a 00 69 [ ]*adbr %f6,%f9 +.*: 2a 69 [ ]*adr %f6,%f9 +.*: 7a 65 af ff [ ]*ae %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 0a [ ]*aeb %f6,4095\(%r5,%r10\) +.*: b3 0a 00 69 [ ]*aebr %f6,%f9 +.*: 3a 69 [ ]*aer %f6,%f9 +.*: 4a 65 af ff [ ]*ah %r6,4095\(%r5,%r10\) +.*: a7 6a 80 01 [ ]*ahi %r6,-32767 +.*: 5e 65 af ff [ ]*al %r6,4095\(%r5,%r10\) +.*: 1e 69 [ ]*alr %r6,%r9 +.*: fa 58 5f ff af ff [ ]*ap 4095\(6,%r5\),4095\(9,%r10\) +.*: 1a 69 [ ]*ar %r6,%r9 +.*: 7e 65 af ff [ ]*au %f6,4095\(%r5,%r10\) +.*: 3e 69 [ ]*aur %f6,%f9 +.*: 6e 65 af ff [ ]*aw %f6,4095\(%r5,%r10\) +.*: 2e 69 [ ]*awr %f6,%f9 +.*: b3 4a 00 69 [ ]*axbr %f6,%f9 +.*: 36 69 [ ]*axr %f6,%f9 +.*: 47 f5 af ff [ ]*b 4095\(%r5,%r10\) +.*: b2 40 00 69 [ ]*bakr %r6,%r9 +.*: 45 65 af ff [ ]*bal %r6,4095\(%r5,%r10\) +.*: 05 69 [ ]*balr %r6,%r9 +.*: 4d 65 af ff [ ]*bas %r6,4095\(%r5,%r10\) +.*: 0d 69 [ ]*basr %r6,%r9 +.*: 0c 69 [ ]*bassm %r6,%r9 +.*: 47 65 af ff [ ]*blh 4095\(%r5,%r10\) +.*: 07 69 [ ]*blhr %r9 +.*: 46 65 af ff [ ]*bct %r6,4095\(%r5,%r10\) +.*: 06 69 [ ]*bctr %r6,%r9 +.*: 47 85 af ff [ ]*be 4095\(%r5,%r10\) +.*: 07 89 [ ]*ber %r9 +.*: 47 25 af ff [ ]*bh 4095\(%r5,%r10\) +.*: 47 a5 af ff [ ]*bhe 4095\(%r5,%r10\) +.*: 07 a9 [ ]*bher %r9 +.*: 07 29 [ ]*bhr %r9 +.*: 47 45 af ff [ ]*bl 4095\(%r5,%r10\) +.*: 47 c5 af ff [ ]*ble 4095\(%r5,%r10\) +.*: 07 c9 [ ]*bler %r9 +.*: 47 65 af ff [ ]*blh 4095\(%r5,%r10\) +.*: 07 69 [ ]*blhr %r9 +.*: 07 49 [ ]*blr %r9 +.*: 47 45 af ff [ ]*bl 4095\(%r5,%r10\) +.*: 07 49 [ ]*blr %r9 +.*: 47 75 af ff [ ]*bne 4095\(%r5,%r10\) +.*: 07 79 [ ]*bner %r9 +.*: 47 d5 af ff [ ]*bnh 4095\(%r5,%r10\) +.*: 47 55 af ff [ ]*bnhe 4095\(%r5,%r10\) +.*: 07 59 [ ]*bnher %r9 +.*: 07 d9 [ ]*bnhr %r9 +.*: 47 b5 af ff [ ]*bnl 4095\(%r5,%r10\) +.*: 47 35 af ff [ ]*bnle 4095\(%r5,%r10\) +.*: 07 39 [ ]*bnler %r9 +.*: 47 95 af ff [ ]*bnlh 4095\(%r5,%r10\) +.*: 07 99 [ ]*bnlhr %r9 +.*: 07 b9 [ ]*bnlr %r9 +.*: 47 b5 af ff [ ]*bnl 4095\(%r5,%r10\) +.*: 07 b9 [ ]*bnlr %r9 +.*: 47 e5 af ff [ ]*bno 4095\(%r5,%r10\) +.*: 07 e9 [ ]*bnor %r9 +.*: 47 d5 af ff [ ]*bnh 4095\(%r5,%r10\) +.*: 07 d9 [ ]*bnhr %r9 +.*: 47 75 af ff [ ]*bne 4095\(%r5,%r10\) +.*: 07 79 [ ]*bner %r9 +.*: 47 15 af ff [ ]*bo 4095\(%r5,%r10\) +.*: 07 19 [ ]*bor %r9 +.*: 47 25 af ff [ ]*bh 4095\(%r5,%r10\) +.*: 07 29 [ ]*bhr %r9 +.*: 07 f9 [ ]*br %r9 +.*: a7 95 00 00 [ ]*bras %r9,e2 +.*: a7 64 00 00 [ ]*jlh e6 +.*: a7 66 00 00 [ ]*brct %r6,ea +.*: 84 69 00 00 [ ]*brxh %r6,%r9,ee +.*: 85 69 00 00 [ ]*brxle %r6,%r9,f2 +.*: b2 5a 00 69 [ ]*bsa %r6,%r9 +.*: b2 58 00 69 [ ]*bsg %r6,%r9 +.*: 0b 69 [ ]*bsm %r6,%r9 +.*: 86 69 5f ff [ ]*bxh %r6,%r9,4095\(%r5\) +.*: 87 69 5f ff [ ]*bxle %r6,%r9,4095\(%r5\) +.*: 47 85 af ff [ ]*be 4095\(%r5,%r10\) +.*: 07 89 [ ]*ber %r9 +.*: 59 65 af ff [ ]*c %r6,4095\(%r5,%r10\) +.*: 69 65 af ff [ ]*cd %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 19 [ ]*cdb %f6,4095\(%r5,%r10\) +.*: b3 19 00 69 [ ]*cdbr %f6,%f9 +.*: b3 95 00 69 [ ]*cdfbr %r6,%f9 +.*: b3 b5 00 69 [ ]*cdfr %r6,%f9 +.*: 29 69 [ ]*cdr %f6,%f9 +.*: bb 69 5f ff [ ]*cds %r6,%r9,4095\(%r5\) +.*: 79 65 af ff [ ]*ce %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 09 [ ]*ceb %f6,4095\(%r5,%r10\) +.*: b3 09 00 69 [ ]*cebr %f6,%f9 +.*: b3 94 00 69 [ ]*cefbr %r6,%f9 +.*: b3 b4 00 69 [ ]*cefr %r6,%f9 +.*: 39 69 [ ]*cer %f6,%f9 +.*: b2 1a 5f ff [ ]*cfc 4095\(%r5\) +.*: b3 99 50 69 [ ]*cfdbr %f6,5,%r9 +.*: b3 98 50 69 [ ]*cfebr %f6,5,%r9 +.*: b3 9a 50 69 [ ]*cfxbr %f6,5,%r9 +.*: 49 65 af ff [ ]*ch %r6,4095\(%r5,%r10\) +.*: a7 6e 80 01 [ ]*chi %r6,-32767 +.*: b2 41 00 69 [ ]*cksm %r6,%r9 +.*: 55 65 af ff [ ]*cl %r6,4095\(%r5,%r10\) +.*: d5 ff 5f ff af ff [ ]*clc 4095\(256,%r5\),4095\(%r10\) +.*: 0f 69 [ ]*clcl %r6,%r9 +.*: a9 69 5f ff [ ]*clcle %r6,%r9,4095\(%r5\) +.*: 95 ff 5f ff [ ]*cli 4095\(%r5\),255 +.*: bd 6a 5f ff [ ]*clm %r6,10,4095\(%r5\) +.*: 15 69 [ ]*clr %r6,%r9 +.*: b2 5d 00 69 [ ]*clst %r6,%r9 +.*: b2 63 00 69 [ ]*cmpsc %r6,%r9 +.*: f9 58 5f ff af ff [ ]*cp 4095\(6,%r5\),4095\(9,%r10\) +.*: b2 4d 00 69 [ ]*cpya %a6,%a9 +.*: 19 69 [ ]*cr %r6,%r9 +.*: ba 69 5f ff [ ]*cs %r6,%r9,4095\(%r5\) +.*: b2 30 00 00 [ ]*csch +.*: b2 50 00 69 [ ]*csp %r6,%r9 +.*: b2 57 00 69 [ ]*cuse %r6,%r9 +.*: b2 a7 00 69 [ ]*cutfu %r6,%r9 +.*: b2 a6 00 69 [ ]*cuutf %r6,%r9 +.*: 4f 65 af ff [ ]*cvb %r6,4095\(%r5,%r10\) +.*: 4e 65 af ff [ ]*cvd %r6,4095\(%r5,%r10\) +.*: b3 49 00 69 [ ]*cxbr %f6,%f9 +.*: b3 96 00 69 [ ]*cxfbr %r6,%f9 +.*: b3 b6 00 69 [ ]*cxfr %r6,%f9 +.*: b3 69 00 69 [ ]*cxr %f6,%f9 +.*: 5d 65 af ff [ ]*d %r6,4095\(%r5,%r10\) +.*: 6d 65 af ff [ ]*dd %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 1d [ ]*ddb %f6,4095\(%r5,%r10\) +.*: b3 1d 00 69 [ ]*ddbr %f6,%f9 +.*: 2d 69 [ ]*ddr %f6,%f9 +.*: 7d 65 af ff [ ]*de %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 0d [ ]*deb %f6,4095\(%r5,%r10\) +.*: b3 0d 00 69 [ ]*debr %f6,%f9 +.*: 3d 69 [ ]*der %f6,%f9 +.*: 83 69 5f ff [ ]*diag %r6,%r9,4095\(%r5\) +.*: b3 5b 9a 65 [ ]*didbr %f6,%f9,%f5,10 +.*: b3 53 9a 65 [ ]*diebr %f6,%f9,%f5,10 +.*: fd 58 5f ff af ff [ ]*dp 4095\(6,%r5\),4095\(9,%r10\) +.*: 1d 69 [ ]*dr %r6,%r9 +.*: b3 4d 00 69 [ ]*dxbr %f6,%f9 +.*: b2 2d 00 60 [ ]*dxr %f6 +.*: b2 4f 00 69 [ ]*ear %r6,%a9 +.*: de ff 5f ff af ff [ ]*ed 4095\(256,%r5\),4095\(%r10\) +.*: df ff 5f ff af ff [ ]*edmk 4095\(256,%r5\),4095\(%r10\) +.*: b3 8c 00 69 [ ]*efpc %r6,%r9 +.*: b2 26 00 60 [ ]*epar %r6 +.*: b2 49 00 69 [ ]*ereg %r6,%r9 +.*: b2 27 00 60 [ ]*esar %r6 +.*: b2 4a 00 69 [ ]*esta %r6,%r9 +.*: 44 65 af ff [ ]*ex %r6,4095\(%r5,%r10\) +.*: b3 5f 50 69 [ ]*fidbr %f6,5,%f9 +.*: b3 7f 50 69 [ ]*fidr %f6,5,%f9 +.*: b3 57 50 69 [ ]*fiebr %f6,5,%f9 +.*: b3 77 50 69 [ ]*fier %f6,5,%f9 +.*: b3 47 50 69 [ ]*fixbr %f6,5,%f9 +.*: b3 67 50 69 [ ]*fixr %f6,5,%f9 +.*: 24 69 [ ]*hdr %f6,%f9 +.*: 34 69 [ ]*her %f6,%f9 +.*: b2 31 00 00 [ ]*hsch +.*: b2 24 00 60 [ ]*iac %r6 +.*: 43 65 af ff [ ]*ic %r6,4095\(%r5,%r10\) +.*: bf 6a 5f ff [ ]*icm %r6,10,4095\(%r5\) +.*: b2 0b 00 00 [ ]*ipk +.*: b2 22 00 60 [ ]*ipm %r6 +.*: b2 21 00 69 [ ]*ipte %r6,%r9 +.*: b2 29 00 69 [ ]*iske %r6,%r9 +.*: b2 23 00 69 [ ]*ivsk %r6,%r9 +.*: a7 f4 00 00 [ ]*j 268 +.*: a7 84 00 00 [ ]*je 26c +.*: a7 24 00 00 [ ]*jh 270 +.*: a7 a4 00 00 [ ]*jhe 274 +.*: a7 44 00 00 [ ]*jl 278 +.*: a7 c4 00 00 [ ]*jle 27c +.*: a7 64 00 00 [ ]*jlh 280 +.*: a7 44 00 00 [ ]*jl 284 +.*: a7 74 00 00 [ ]*jne 288 +.*: a7 d4 00 00 [ ]*jnh 28c +.*: a7 54 00 00 [ ]*jnhe 290 +.*: a7 b4 00 00 [ ]*jnl 294 +.*: a7 34 00 00 [ ]*jnle 298 +.*: a7 94 00 00 [ ]*jnlh 29c +.*: a7 b4 00 00 [ ]*jnl 2a0 +.*: a7 e4 00 00 [ ]*jno 2a4 +.*: a7 d4 00 00 [ ]*jnh 2a8 +.*: a7 74 00 00 [ ]*jne 2ac +.*: a7 14 00 00 [ ]*jo 2b0 +.*: a7 24 00 00 [ ]*jh 2b4 +.*: a7 84 00 00 [ ]*je 2b8 +.*: ed 65 af ff 00 18 [ ]*kdb %f6,4095\(%r5,%r10\) +.*: b3 18 00 69 [ ]*kdbr %f6,%f9 +.*: ed 65 af ff 00 08 [ ]*keb %f6,4095\(%r5,%r10\) +.*: b3 08 00 69 [ ]*kebr %f6,%f9 +.*: b3 48 00 69 [ ]*kxbr %f6,%f9 +.*: 58 65 af ff [ ]*l %r6,4095\(%r5,%r10\) +.*: 41 65 af ff [ ]*la %r6,4095\(%r5,%r10\) +.*: 51 65 af ff [ ]*lae %r6,4095\(%r5,%r10\) +.*: 9a 69 5f ff [ ]*lam %a6,%a9,4095\(%r5\) +.*: e5 00 5f ff af ff [ ]*lasp 4095\(%r5\),4095\(%r10\) +.*: b3 13 00 69 [ ]*lcdbr %f6,%f9 +.*: 23 69 [ ]*lcdr %f6,%f9 +.*: b3 03 00 69 [ ]*lcebr %f6,%f9 +.*: 33 69 [ ]*lcer %f6,%f9 +.*: 13 69 [ ]*lcr %r6,%r9 +.*: b7 69 5f ff [ ]*lctl %c6,%c9,4095\(%r5\) +.*: b3 43 00 69 [ ]*lcxbr %f6,%f9 +.*: b3 63 00 69 [ ]*lcxr %f6,%f9 +.*: 68 65 af ff [ ]*ld %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 24 [ ]*lde %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 04 [ ]*ldeb %f6,4095\(%r5,%r10\) +.*: b3 04 00 69 [ ]*ldebr %f6,%f9 +.*: b3 24 00 69 [ ]*lder %f6,%f9 +.*: 28 69 [ ]*ldr %f6,%f9 +.*: b3 45 00 69 [ ]*ldxbr %f6,%f9 +.*: 25 69 [ ]*lrdr %f6,%f9 +.*: 78 65 af ff [ ]*le %f6,4095\(%r5,%r10\) +.*: b3 44 00 69 [ ]*ledbr %f6,%f9 +.*: 35 69 [ ]*lrer %f6,%f9 +.*: 38 69 [ ]*ler %f6,%f9 +.*: b3 46 00 69 [ ]*lexbr %f6,%f9 +.*: b3 66 00 69 [ ]*lexr %f6,%f9 +.*: b2 9d 5f ff [ ]*lfpc 4095\(%r5\) +.*: 48 65 af ff [ ]*lh %r6,4095\(%r5,%r10\) +.*: a7 68 80 01 [ ]*lhi %r6,-32767 +.*: 98 69 5f ff [ ]*lm %r6,%r9,4095\(%r5\) +.*: b3 11 00 69 [ ]*lndbr %f6,%f9 +.*: 21 69 [ ]*lndr %f6,%f9 +.*: b3 01 00 69 [ ]*lnebr %f6,%f9 +.*: 31 69 [ ]*lner %f6,%f9 +.*: 11 69 [ ]*lnr %r6,%r9 +.*: b3 41 00 69 [ ]*lnxbr %f6,%f9 +.*: b3 61 00 69 [ ]*lnxr %f6,%f9 +.*: b3 10 00 69 [ ]*lpdbr %f6,%f9 +.*: 20 69 [ ]*lpdr %f6,%f9 +.*: b3 00 00 69 [ ]*lpebr %f6,%f9 +.*: 30 69 [ ]*lper %f6,%f9 +.*: 10 69 [ ]*lpr %r6,%r9 +.*: 82 00 5f ff [ ]*lpsw 4095\(%r5\) +.*: b3 40 00 69 [ ]*lpxbr %f6,%f9 +.*: b3 60 00 69 [ ]*lpxr %f6,%f9 +.*: 18 69 [ ]*lr %r6,%r9 +.*: b1 65 af ff [ ]*lra %r6,4095\(%r5,%r10\) +.*: 25 69 [ ]*lrdr %f6,%f9 +.*: 35 69 [ ]*lrer %f6,%f9 +.*: b3 12 00 69 [ ]*ltdbr %f6,%f9 +.*: 22 69 [ ]*ltdr %f6,%f9 +.*: b3 02 00 69 [ ]*ltebr %f6,%f9 +.*: 32 69 [ ]*lter %f6,%f9 +.*: 12 69 [ ]*ltr %r6,%r9 +.*: b3 42 00 69 [ ]*ltxbr %f6,%f9 +.*: b3 62 00 69 [ ]*ltxr %f6,%f9 +.*: b2 4b 00 69 [ ]*lura %r6,%r9 +.*: ed 65 af ff 00 25 [ ]*lxd %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 05 [ ]*lxdb %f6,4095\(%r5,%r10\) +.*: b3 05 00 69 [ ]*lxdbr %f6,%f9 +.*: b3 25 00 69 [ ]*lxdr %f6,%f9 +.*: ed 65 af ff 00 26 [ ]*lxe %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 06 [ ]*lxeb %f6,4095\(%r5,%r10\) +.*: b3 06 00 69 [ ]*lxebr %f6,%f9 +.*: b3 26 00 69 [ ]*lxer %f6,%f9 +.*: b3 65 00 69 [ ]*lxr %r6,%r9 +.*: b3 75 00 60 [ ]*lzdr %r6 +.*: b3 74 00 60 [ ]*lzer %r6 +.*: b3 76 00 60 [ ]*lzxr %r6 +.*: 5c 65 af ff [ ]*m %r6,4095\(%r5,%r10\) +.*: ed 95 af ff 60 1e [ ]*madb %f6,%f9,4095\(%r5,%r10\) +.*: b3 1e 60 95 [ ]*madbr %f6,%f9,%f5 +.*: ed 95 af ff 60 0e [ ]*maeb %f6,%f9,4095\(%r5,%r10\) +.*: b3 0e 60 95 [ ]*maebr %f6,%f9,%f5 +.*: af ff 5f ff [ ]*mc 4095\(%r5\),255 +.*: 6c 65 af ff [ ]*md %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 1c [ ]*mdb %f6,4095\(%r5,%r10\) +.*: b3 1c 00 69 [ ]*mdbr %f6,%f9 +.*: 7c 65 af ff [ ]*me %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 0c [ ]*mdeb %f6,4095\(%r5,%r10\) +.*: b3 0c 00 69 [ ]*mdebr %f6,%f9 +.*: 3c 69 [ ]*mer %f6,%f9 +.*: 2c 69 [ ]*mdr %f6,%f9 +.*: 7c 65 af ff [ ]*me %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 37 [ ]*mee %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 17 [ ]*meeb %f6,4095\(%r5,%r10\) +.*: b3 17 00 69 [ ]*meebr %f6,%f9 +.*: b3 37 00 69 [ ]*meer %f6,%f9 +.*: 3c 69 [ ]*mer %f6,%f9 +.*: 4c 65 af ff [ ]*mh %r6,4095\(%r5,%r10\) +.*: a7 6c 80 01 [ ]*mhi %r6,-32767 +.*: fc 58 5f ff af ff [ ]*mp 4095\(6,%r5\),4095\(9,%r10\) +.*: 1c 69 [ ]*mr %r6,%r9 +.*: 71 65 af ff [ ]*ms %r6,4095\(%r5,%r10\) +.*: b2 32 5f ff [ ]*msch 4095\(%r5\) +.*: ed 95 af ff 60 1f [ ]*msdb %f6,%f9,4095\(%r5,%r10\) +.*: b3 1f 60 95 [ ]*msdbr %f6,%f9,%f5 +.*: ed 95 af ff 60 0f [ ]*mseb %f6,%f9,4095\(%r5,%r10\) +.*: b3 0f 60 95 [ ]*msebr %f6,%f9,%f5 +.*: b2 52 00 69 [ ]*msr %r6,%r9 +.*: b2 47 00 60 [ ]*msta %r6 +.*: d2 ff 5f ff af ff [ ]*mvc 4095\(256,%r5\),4095\(%r10\) +.*: e5 0f 5f ff af ff [ ]*mvcdk 4095\(%r5\),4095\(%r10\) +.*: e8 ff 5f ff af ff [ ]*mvcin 4095\(256,%r5\),4095\(%r10\) +.*: d9 69 5f ff af ff [ ]*mvck 4095\(%r6,%r5\),4095\(%r10\),%r9 +.*: 0e 69 [ ]*mvcl %r6,%r9 +.*: a8 69 5f ff [ ]*mvcle %r6,%r9,4095\(%r5\) +.*: eb 69 5f ff 00 8e [ ]*mvclu %r6,%r9,4095\(%r5\) +.*: da 69 5f ff af ff [ ]*mvcp 4095\(%r6,%r5\),4095\(%r10\),%r9 +.*: db 69 5f ff af ff [ ]*mvcs 4095\(%r6,%r5\),4095\(%r10\),%r9 +.*: e5 0e 5f ff af ff [ ]*mvcsk 4095\(%r5\),4095\(%r10\) +.*: 92 ff 5f ff [ ]*mvi 4095\(%r5\),255 +.*: d1 ff 5f ff af ff [ ]*mvn 4095\(256,%r5\),4095\(%r10\) +.*: f1 58 5f ff af ff [ ]*mvo 4095\(6,%r5\),4095\(9,%r10\) +.*: b2 54 00 69 [ ]*mvpg %r6,%r9 +.*: b2 55 00 69 [ ]*mvst %r6,%r9 +.*: d3 ff 5f ff af ff [ ]*mvz 4095\(256,%r5\),4095\(%r10\) +.*: b3 4c 00 69 [ ]*mxbr %f6,%f9 +.*: 67 65 af ff [ ]*mxd %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 07 [ ]*mxdb %f6,4095\(%r5,%r10\) +.*: b3 07 00 69 [ ]*mxdbr %f6,%f9 +.*: 27 69 [ ]*mxdr %f6,%f9 +.*: 26 69 [ ]*mxr %f6,%f9 +.*: 54 65 af ff [ ]*n %r6,4095\(%r5,%r10\) +.*: d4 ff 5f ff af ff [ ]*nc 4095\(256,%r5\),4095\(%r10\) +.*: 94 ff 5f ff [ ]*ni 4095\(%r5\),255 +.*: 47 05 af ff [ ]*bc 0,4095\(%r5,%r10\) +.*: 07 09 [ ]*bcr 0,%r9 +.*: 14 69 [ ]*nr %r6,%r9 +.*: 56 65 af ff [ ]*o %r6,4095\(%r5,%r10\) +.*: d6 ff 5f ff af ff [ ]*oc 4095\(256,%r5\),4095\(%r10\) +.*: 96 ff 5f ff [ ]*oi 4095\(%r5\),255 +.*: 16 69 [ ]*or %r6,%r9 +.*: f2 58 5f ff af ff [ ]*pack 4095\(6,%r5\),4095\(9,%r10\) +.*: b2 48 00 00 [ ]*palb +.*: b2 18 5f ff [ ]*pc 4095\(%r5\) +.*: b2 2e 00 69 [ ]*pgin %r6,%r9 +.*: b2 2f 00 69 [ ]*pgout %r6,%r9 +.*: e9 ff 5f ff af ff [ ]*pka 4095\(256,%r5\),4095\(%r10\) +.*: e1 ff 5f ff af ff [ ]*pku 4095\(256,%r5\),4095\(%r10\) +.*: ee 69 5f ff af ff [ ]*plo %r6,4095\(%r5\),%r9,4095\(%r10\) +.*: 01 01 [ ]*pr +.*: b2 28 00 69 [ ]*pt %r6,%r9 +.*: b2 0d 00 00 [ ]*ptlb +.*: b2 3b 00 00 [ ]*rchp +.*: b2 77 5f ff [ ]*rp 4095\(%r5\) +.*: b2 2a 00 69 [ ]*rrbe %r6,%r9 +.*: b2 38 00 00 [ ]*rsch +.*: 5b 65 af ff [ ]*s %r6,4095\(%r5,%r10\) +.*: b2 19 5f ff [ ]*sac 4095\(%r5\) +.*: b2 79 5f ff [ ]*sacf 4095\(%r5\) +.*: b2 37 00 00 [ ]*sal +.*: b2 4e 00 69 [ ]*sar %a6,%r9 +.*: b2 3c 00 00 [ ]*schm +.*: b2 04 5f ff [ ]*sck 4095\(%r5\) +.*: b2 06 5f ff [ ]*sckc 4095\(%r5\) +.*: 01 07 [ ]*sckpf +.*: 6b 65 af ff [ ]*sd %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 1b [ ]*sdb %f6,4095\(%r5,%r10\) +.*: b3 1b 00 69 [ ]*sdbr %f6,%f9 +.*: 2b 69 [ ]*sdr %f6,%f9 +.*: 7b 65 af ff [ ]*se %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 0b [ ]*seb %f6,4095\(%r5,%r10\) +.*: b3 0b 00 69 [ ]*sebr %f6,%f9 +.*: 3b 69 [ ]*ser %f6,%f9 +.*: b3 84 00 69 [ ]*sfpc %r6,%r9 +.*: 4b 65 af ff [ ]*sh %r6,4095\(%r5,%r10\) +.*: b2 14 5f ff [ ]*sie 4095\(%r5\) +.*: b2 74 5f ff [ ]*siga 4095\(%r5\) +.*: ae 69 5f ff [ ]*sigp %r6,%r9,4095\(%r5\) +.*: 5f 65 af ff [ ]*sl %r6,4095\(%r5,%r10\) +.*: 8b 60 5f ff [ ]*sla %r6,4095\(%r5\) +.*: 8f 60 5f ff [ ]*slda %r6,4095\(%r5\) +.*: 8d 60 5f ff [ ]*sldl %r6,4095\(%r5\) +.*: 89 60 5f ff [ ]*sll %r6,4095\(%r5\) +.*: 1f 69 [ ]*slr %r6,%r9 +.*: fb 58 5f ff af ff [ ]*sp 4095\(6,%r5\),4095\(9,%r10\) +.*: b2 0a 5f ff [ ]*spka 4095\(%r5\) +.*: 04 60 [ ]*spm %r6 +.*: b2 08 5f ff [ ]*spt 4095\(%r5\) +.*: b2 10 5f ff [ ]*spx 4095\(%r5\) +.*: ed 65 af ff 00 15 [ ]*sqdb %f6,4095\(%r5,%r10\) +.*: b3 15 00 69 [ ]*sqdbr %f6,%f9 +.*: b2 44 00 60 [ ]*sqdr %f6 +.*: ed 65 af ff 00 34 [ ]*sqe %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 14 [ ]*sqeb %f6,4095\(%r5,%r10\) +.*: b3 14 00 69 [ ]*sqebr %f6,%f9 +.*: b2 45 00 60 [ ]*sqer %f6 +.*: b3 16 00 69 [ ]*sqxbr %f6,%f9 +.*: b3 36 00 69 [ ]*sqxr %f6,%f9 +.*: 1b 69 [ ]*sr %r6,%r9 +.*: 8a 60 5f ff [ ]*sra %r6,4095\(%r5\) +.*: 8e 60 5f ff [ ]*srda %r6,4095\(%r5\) +.*: 8c 60 5f ff [ ]*srdl %r6,4095\(%r5\) +.*: 88 60 5f ff [ ]*srl %r6,4095\(%r5\) +.*: b2 99 5f ff [ ]*srnm 4095\(%r5\) +.*: f0 fa 5f ff af ff [ ]*srp 4095\(16,%r5\),4095\(%r10\),10 +.*: b2 5e 00 69 [ ]*srst %r6,%r9 +.*: b2 25 00 60 [ ]*ssar %r6 +.*: b2 33 5f ff [ ]*ssch 4095\(%r5\) +.*: b2 2b 00 69 [ ]*sske %r6,%r9 +.*: 80 00 5f ff [ ]*ssm 4095\(%r5\) +.*: 50 65 af ff [ ]*st %r6,4095\(%r5,%r10\) +.*: 9b 69 5f ff [ ]*stam %a6,%a9,4095\(%r5\) +.*: b2 12 5f ff [ ]*stap 4095\(%r5\) +.*: 42 65 af ff [ ]*stc %r6,4095\(%r5,%r10\) +.*: b2 05 5f ff [ ]*stck 4095\(%r5\) +.*: b2 07 5f ff [ ]*stckc 4095\(%r5\) +.*: b2 78 5f ff [ ]*stcke 4095\(%r5\) +.*: be 6a 5f ff [ ]*stcm %r6,10,4095\(%r5\) +.*: b2 3a 5f ff [ ]*stcps 4095\(%r5\) +.*: b2 39 5f ff [ ]*stcrw 4095\(%r5\) +.*: b6 69 5f ff [ ]*stctl %c6,%c9,4095\(%r5\) +.*: 60 65 af ff [ ]*std %f6,4095\(%r5,%r10\) +.*: 70 65 af ff [ ]*ste %f6,4095\(%r5,%r10\) +.*: b2 9c 5f ff [ ]*stfpc 4095\(%r5\) +.*: 40 65 af ff [ ]*sth %r6,4095\(%r5,%r10\) +.*: b2 02 5f ff [ ]*stidp 4095\(%r5\) +.*: 90 69 5f ff [ ]*stm %r6,%r9,4095\(%r5\) +.*: ac ff 5f ff [ ]*stnsm 4095\(%r5\),255 +.*: ad ff 5f ff [ ]*stosm 4095\(%r5\),255 +.*: b2 09 5f ff [ ]*stpt 4095\(%r5\) +.*: b2 11 5f ff [ ]*stpx 4095\(%r5\) +.*: b2 34 5f ff [ ]*stsch 4095\(%r5\) +.*: b2 7d 5f ff [ ]*stsi 4095\(%r5\) +.*: b2 46 00 69 [ ]*stura %r6,%r9 +.*: 7f 65 af ff [ ]*su %f6,4095\(%r5,%r10\) +.*: 3f 69 [ ]*sur %f6,%f9 +.*: 0a ff [ ]*svc 255 +.*: 6f 65 af ff [ ]*sw %f6,4095\(%r5,%r10\) +.*: 2f 69 [ ]*swr %f6,%f9 +.*: b3 4b 00 69 [ ]*sxbr %f6,%f9 +.*: 37 69 [ ]*sxr %f6,%f9 +.*: b2 4c 00 69 [ ]*tar %a6,%r9 +.*: b2 2c 00 06 [ ]*tb %r6 +.*: b3 51 50 69 [ ]*tbdr %f6,5,%f9 +.*: b3 50 50 69 [ ]*tbedr %f6,5,%f9 +.*: ed 65 af ff 00 11 [ ]*tcdb %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 10 [ ]*tceb %f6,4095\(%r5,%r10\) +.*: ed 65 af ff 00 12 [ ]*tcxb %f6,4095\(%r5,%r10\) +.*: b3 58 00 69 [ ]*thder %r6,%r9 +.*: b3 59 00 69 [ ]*thdr %r6,%r9 +.*: 91 ff 5f ff [ ]*tm 4095\(%r5\),255 +.*: a7 60 ff ff [ ]*tmh %r6,65535 +.*: a7 61 ff ff [ ]*tml %r6,65535 +.*: a7 60 ff ff [ ]*tmh %r6,65535 +.*: a7 61 ff ff [ ]*tml %r6,65535 +.*: eb 60 5f ff 00 c0 [ ]*tp %r6,4095\(%r5\) +.*: b2 36 5f ff [ ]*tpi 4095\(%r5\) +.*: e5 01 5f ff af ff [ ]*tprot 4095\(%r5\),4095\(%r10\) +.*: dc ff 5f ff af ff [ ]*tr 4095\(256,%r5\),4095\(%r10\) +.*: 99 69 5f ff [ ]*trace %r6,%r9,4095\(%r5\) +.*: 01 ff [ ]*trap2 +.*: b2 ff 5f ff [ ]*trap4 4095\(%r5\) +.*: b2 a5 00 69 [ ]*tre %r6,%r9 +.*: b9 93 00 69 [ ]*troo %r6,%r9,0 +.*: b9 92 00 69 [ ]*trot %r6,%r9,0 +.*: dd ff 5f ff af ff [ ]*trt 4095\(256,%r5\),4095\(%r10\) +.*: b9 91 00 69 [ ]*trto %r6,%r9,0 +.*: b9 90 00 69 [ ]*trtt %r6,%r9,0 +.*: 93 00 5f ff [ ]*ts 4095\(%r5\) +.*: b2 35 5f ff [ ]*tsch 4095\(%r5\) +.*: f3 58 5f ff af ff [ ]*unpk 4095\(6,%r5\),4095\(9,%r10\) +.*: ea ff 5f ff af ff [ ]*unpka 4095\(256,%r5\),4095\(%r10\) +.*: e2 ff 5f ff af ff [ ]*unpku 4095\(256,%r5\),4095\(%r10\) +.*: 01 02 [ ]*upt +.*: 57 65 af ff [ ]*x %r6,4095\(%r5,%r10\) +.*: d7 ff 5f ff af ff [ ]*xc 4095\(256,%r5\),4095\(%r10\) +.*: 97 ff 5f ff [ ]*xi 4095\(%r5\),255 +.*: 17 69 [ ]*xr %r6,%r9 +.*: b2 76 00 00 [ ]*xsch +.*: f8 58 5f ff af ff [ ]*zap 4095\(6,%r5\),4095\(9,%r10\) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-g5.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-g5.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-g5.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-g5.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,471 @@ +.text +foo: + a %r6,4095(%r5,%r10) + ad %f6,4095(%r5,%r10) + adb %f6,4095(%r5,%r10) + adbr %f6,%f9 + adr %f6,%f9 + ae %f6,4095(%r5,%r10) + aeb %f6,4095(%r5,%r10) + aebr %f6,%f9 + aer %f6,%f9 + ah %r6,4095(%r5,%r10) + ahi %r6,-32767 + al %r6,4095(%r5,%r10) + alr %r6,%r9 + ap 4095(6,%r5),4095(9,%r10) + ar %r6,%r9 + au %f6,4095(%r5,%r10) + aur %f6,%f9 + aw %f6,4095(%r5,%r10) + awr %f6,%f9 + axbr %f6,%f9 + axr %f6,%f9 + b 4095(%r5,%r10) + bakr %r6,%r9 + bal %r6,4095(%r5,%r10) + balr %r6,%r9 + bas %r6,4095(%r5,%r10) + basr %r6,%r9 + bassm %r6,%r9 + bc 6,4095(%r5,%r10) + bcr 6,%r9 + bct %r6,4095(%r5,%r10) + bctr %r6,%r9 + be 4095(%r5,%r10) + ber %r9 + bh 4095(%r5,%r10) + bhe 4095(%r5,%r10) + bher %r9 + bhr %r9 + bl 4095(%r5,%r10) + ble 4095(%r5,%r10) + bler %r9 + blh 4095(%r5,%r10) + blhr %r9 + blr %r9 + bm 4095(%r5,%r10) + bmr %r9 + bne 4095(%r5,%r10) + bner %r9 + bnh 4095(%r5,%r10) + bnhe 4095(%r5,%r10) + bnher %r9 + bnhr %r9 + bnl 4095(%r5,%r10) + bnle 4095(%r5,%r10) + bnler %r9 + bnlh 4095(%r5,%r10) + bnlhr %r9 + bnlr %r9 + bnm 4095(%r5,%r10) + bnmr %r9 + bno 4095(%r5,%r10) + bnor %r9 + bnp 4095(%r5,%r10) + bnpr %r9 + bnz 4095(%r5,%r10) + bnzr %r9 + bo 4095(%r5,%r10) + bor %r9 + bp 4095(%r5,%r10) + bpr %r9 + br %r9 + bras %r9,. + brc 6,. + brct 6,. + brxh %r6,%r9,. + brxle %r6,%r9,. + bsa %r6,%r9 + bsg %r6,%r9 + bsm %r6,%r9 + bxh %r6,%r9,4095(%r5) + bxle %r6,%r9,4095(%r5) + bz 4095(%r5,%r10) + bzr %r9 + c %r6,4095(%r5,%r10) + cd %f6,4095(%r5,%r10) + cdb %f6,4095(%r5,%r10) + cdbr %f6,%f9 + cdfbr %r6,%f9 + cdfr %r6,%f9 + cdr %f6,%f9 + cds %r6,%r9,4095(%r5) + ce %f6,4095(%r5,%r10) + ceb %f6,4095(%r5,%r10) + cebr %f6,%f9 + cefbr %r6,%f9 + cefr %r6,%f9 + cer %f6,%f9 + cfc 4095(%r5) + cfdbr %r6,5,%r9 + cfebr %r6,5,%r9 + cfxbr %r6,5,%r9 + ch %r6,4095(%r5,%r10) + chi %r6,-32767 + cksm %r6,%r9 + cl %r6,4095(%r5,%r10) + clc 4095(256,%r5),4095(%r10) + clcl %r6,%r9 + clcle %r6,%r9,4095(%r5) + cli 4095(%r5),255 + clm %r6,10,4095(%r5) + clr %r6,%r9 + clst %r6,%r9 + cmpsc %r6,%r9 + cp 4095(6,%r5),4095(9,%r10) + cpya %a6,%a9 + cr %r6,%r9 + cs %r6,%r9,4095(%r5) + csch + csp %r6,%r9 + cuse %r6,%r9 + cutfu %r6,%r9 + cuutf %r6,%r9 + cvb %r6,4095(%r5,%r10) + cvd %r6,4095(%r5,%r10) + cxbr %f6,%f9 + cxfbr %r6,%f9 + cxfr %r6,%f9 + cxr %f6,%f9 + d %r6,4095(%r5,%r10) + dd %f6,4095(%r5,%r10) + ddb %f6,4095(%r5,%r10) + ddbr %f6,%f9 + ddr %f6,%f9 + de %f6,4095(%r5,%r10) + deb %f6,4095(%r5,%r10) + debr %f6,%f9 + der %f6,%f9 + diag %r6,%r9,4095(%r5) + didbr %f6,%r9,%r5,10 + diebr %f6,%r9,%r5,10 + dp 4095(6,%r5),4095(9,%r10) + dr %r6,%r9 + dxbr %f6,%f9 + dxr %f6 + ear %r6,%a9 + ed 4095(256,%r5),4095(%r10) + edmk 4095(256,%r5),4095(%r10) + efpc %r6,%r9 + epar %r6 + ereg %r6,%r9 + esar %r6 + esta %r6,%r9 + ex %r6,4095(%r5,%r10) + fidbr %f6,5,%f9 + fidr %f6,5,%f9 + fiebr %f6,5,%f9 + fier %f6,5,%f9 + fixbr %f6,5,%f9 + fixr %f6,5,%f9 + hdr %f6,%f9 + her %f6,%f9 + hsch + iac %r6 + ic %r6,4095(%r5,%r10) + icm %r6,10,4095(%r5) + ipk + ipm %r6 + ipte %r6,%r9 + iske %r6,%r9 + ivsk %r6,%r9 + j . + je . + jh . + jhe . + jl . + jle . + jlh . + jm . + jne . + jnh . + jnhe . + jnl . + jnle . + jnlh . + jnm . + jno . + jnp . + jnz . + jo . + jp . + jz . + kdb %f6,4095(%r5,%r10) + kdbr %f6,%f9 + keb %f6,4095(%r5,%r10) + kebr %f6,%f9 + kxbr %f6,%f9 + l %r6,4095(%r5,%r10) + la %r6,4095(%r5,%r10) + lae %r6,4095(%r5,%r10) + lam %a6,%a9,4095(%r5) + lasp 4095(%r5),4095(%r10) + lcdbr %f6,%f9 + lcdr %f6,%f9 + lcebr %f6,%f9 + lcer %f6,%f9 + lcr %r6,%r9 + lctl %c6,%c9,4095(%r5) + lcxbr %f6,%f9 + lcxr %f6,%f9 + ld %f6,4095(%r5,%r10) + lde %f6,4095(%r5,%r10) + ldeb %f6,4095(%r5,%r10) + ldebr %f6,%f9 + lder %f6,%f9 + ldr %f6,%f9 + ldxbr %f6,%f9 + ldxr %f6,%f9 + le %f6,4095(%r5,%r10) + ledbr %f6,%f9 + ledr %f6,%f9 + ler %f6,%f9 + lexbr %f6,%f9 + lexr %f6,%f9 + lfpc 4095(%r5) + lh %r6,4095(%r5,%r10) + lhi %r6,-32767 + lm %r6,%r9,4095(%r5) + lndbr %f6,%f9 + lndr %f6,%f9 + lnebr %f6,%f9 + lner %f6,%f9 + lnr %r6,%r9 + lnxbr %f6,%f9 + lnxr %f6,%f9 + lpdbr %f6,%f9 + lpdr %f6,%f9 + lpebr %f6,%f9 + lper %f6,%f9 + lpr %r6,%r9 + lpsw 4095(%r5) + lpxbr %f6,%f9 + lpxr %f6,%f9 + lr %r6,%r9 + lra %r6,4095(%r5,%r10) + lrdr %f6,%f9 + lrer %f6,%f9 + ltdbr %f6,%f9 + ltdr %f6,%f9 + ltebr %f6,%f9 + lter %f6,%f9 + ltr %r6,%r9 + ltxbr %f6,%f9 + ltxr %f6,%f9 + lura %r6,%r9 + lxd %f6,4095(%r5,%r10) + lxdb %f6,4095(%r5,%r10) + lxdbr %f6,%f9 + lxdr %f6,%f9 + lxe %f6,4095(%r5,%r10) + lxeb %f6,4095(%r5,%r10) + lxebr %f6,%f9 + lxer %f6,%f9 + lxr %r6,%r9 + lzdr %r6 + lzer %r6 + lzxr %r6 + m %r6,4095(%r5,%r10) + madb %f6,%f9,4095(%r5,%r10) + madbr %f6,%f9,%f5 + maeb %f6,%f9,4095(%r5,%r10) + maebr %f6,%f9,%f5 + mc 4095(%r5),255 + md %f6,4095(%r5,%r10) + mdb %f6,4095(%r5,%r10) + mdbr %f6,%f9 + mde %f6,4095(%r5,%r10) + mdeb %f6,4095(%r5,%r10) + mdebr %f6,%f9 + mder %f6,%f9 + mdr %f6,%f9 + me %f6,4095(%r5,%r10) + mee %f6,4095(%r5,%r10) + meeb %f6,4095(%r5,%r10) + meebr %f6,%f9 + meer %f6,%f9 + mer %f6,%f9 + mh %r6,4095(%r5,%r10) + mhi %r6,-32767 + mp 4095(6,%r5),4095(9,%r10) + mr %r6,%r9 + ms %r6,4095(%r5,%r10) + msch 4095(%r5) + msdb %f6,%f9,4095(%r5,%r10) + msdbr %f6,%f9,%f5 + mseb %f6,%f9,4095(%r5,%r10) + msebr %f6,%f9,%f5 + msr %r6,%r9 + msta %r6 + mvc 4095(256,%r5),4095(%r10) + mvcdk 4095(%r5),4095(%r10) + mvcin 4095(256,%r5),4095(%r10) + mvck 4095(%r6,%r5),4095(%r10),%r9 + mvcl %r6,%r9 + mvcle %r6,%r9,4095(%r5) + mvclu %r6,%r9,4095(%r5) + mvcp 4095(%r6,%r5),4095(%r10),%r9 + mvcs 4095(%r6,%r5),4095(%r10),%r9 + mvcsk 4095(%r5),4095(%r10) + mvi 4095(%r5),255 + mvn 4095(256,%r5),4095(%r10) + mvo 4095(6,%r5),4095(9,%r10) + mvpg %r6,%r9 + mvst %r6,%r9 + mvz 4095(256,%r5),4095(%r10) + mxbr %f6,%f9 + mxd %f6,4095(%r5,%r10) + mxdb %f6,4095(%r5,%r10) + mxdbr %f6,%f9 + mxdr %f6,%f9 + mxr %f6,%f9 + n %r6,4095(%r5,%r10) + nc 4095(256,%r5),4095(%r10) + ni 4095(%r5),255 + nop 4095(%r5,%r10) + nopr %r9 + nr %r6,%r9 + o %r6,4095(%r5,%r10) + oc 4095(256,%r5),4095(%r10) + oi 4095(%r5),255 + or %r6,%r9 + pack 4095(6,%r5),4095(9,%r10) + palb + pc 4095(%r5) + pgin %r6,%r9 + pgout %r6,%r9 + pka 4095(256,%r5),4095(%r10) + pku 4095(256,%r5),4095(%r10) + plo %r6,4095(%r5),%r9,4095(%r10) + pr + pt %r6,%r9 + ptlb + rchp + rp 4095(%r5) + rrbe %r6,%r9 + rsch + s %r6,4095(%r5,%r10) + sac 4095(%r5) + sacf 4095(%r5) + sal + sar %a6,%r9 + schm + sck 4095(%r5) + sckc 4095(%r5) + sckpf + sd %f6,4095(%r5,%r10) + sdb %f6,4095(%r5,%r10) + sdbr %f6,%f9 + sdr %f6,%f9 + se %f6,4095(%r5,%r10) + seb %f6,4095(%r5,%r10) + sebr %f6,%f9 + ser %f6,%f9 + sfpc %r6,%r9 + sh %r6,4095(%r5,%r10) + sie 4095(%r5) + siga 4095(%r5) + sigp %r6,%r9,4095(%r5) + sl %r6,4095(%r5,%r10) + sla %r6,4095(%r5) + slda %r6,4095(%r5) + sldl %r6,4095(%r5) + sll %r6,4095(%r5) + slr %r6,%r9 + sp 4095(6,%r5),4095(9,%r10) + spka 4095(%r5) + spm %r6 + spt 4095(%r5) + spx 4095(%r5) + sqdb %f6,4095(%r5,%r10) + sqdbr %f6,%f9 + sqdr %f6 + sqe %f6,4095(%r5,%r10) + sqeb %f6,4095(%r5,%r10) + sqebr %f6,%f9 + sqer %f6 + sqxbr %f6,%f9 + sqxr %f6,%f9 + sr %r6,%r9 + sra %r6,4095(%r5) + srda %r6,4095(%r5) + srdl %r6,4095(%r5) + srl %r6,4095(%r5) + srnm 4095(%r5) + srp 4095(16,%r5),4095(%r10),10 + srst %r6,%r9 + ssar %r6 + ssch 4095(%r5) + sske %r6,%r9 + ssm 4095(%r5) + st %r6,4095(%r5,%r10) + stam %a6,%a9,4095(%r5) + stap 4095(%r5) + stc %r6,4095(%r5,%r10) + stck 4095(%r5) + stckc 4095(%r5) + stcke 4095(%r5) + stcm %r6,10,4095(%r5) + stcps 4095(%r5) + stcrw 4095(%r5) + stctl %c6,%c9,4095(%r5) + std %f6,4095(%r5,%r10) + ste %f6,4095(%r5,%r10) + stfpc 4095(%r5) + sth %r6,4095(%r5,%r10) + stidp 4095(%r5) + stm %r6,%r9,4095(%r5) + stnsm 4095(%r5),255 + stosm 4095(%r5),255 + stpt 4095(%r5) + stpx 4095(%r5) + stsch 4095(%r5) + stsi 4095(%r5) + stura %r6,%r9 + su %f6,4095(%r5,%r10) + sur %f6,%f9 + svc 255 + sw %f6,4095(%r5,%r10) + swr %f6,%f9 + sxbr %f6,%f9 + sxr %f6,%f9 + tar %a6,%r9 + tb %r6 + tbdr %r6,5,%r9 + tbedr %r6,5,%r9 + tcdb %f6,4095(%r5,%r10) + tceb %f6,4095(%r5,%r10) + tcxb %f6,4095(%r5,%r10) + thder %r6,%r9 + thdr %r6,%r9 + tm 4095(%r5),255 + tmh %r6,65535 + tml %r6,65535 + tmlh %r6,65535 + tmll %r6,65535 + tp %r6,4095(%r5) + tpi 4095(%r5) + tprot 4095(%r5),4095(%r10) + tr 4095(256,%r5),4095(%r10) + trace %r6,%r9,4095(%r5) + trap2 + trap4 4095(%r5) + tre %r6,%r9 + troo %r6,%r9 + trot %r6,%r9 + trt 4095(256,%r5),4095(%r10) + trto %r6,%r9 + trtt %r6,%r9 + ts 4095(%r5) + tsch 4095(%r5) + unpk 4095(6,%r5),4095(9,%r10) + unpka 4095(256,%r5),4095(%r10) + unpku 4095(256,%r5),4095(%r10) + upt + x %r6,4095(%r5,%r10) + xc 4095(256,%r5),4095(%r10) + xi 4095(%r5),255 + xr %r6,%r9 + xsch + zap 4095(6,%r5),4095(9,%r10) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-operands.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-operands.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-operands.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-operands.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,23 @@ +#name: s390 operands +#objdump: -dr + +.*: +file format .* + +Disassembly of section .text: + +.* : + 0: 01 01 [ ]*pr + 2: a7 1a 80 01 [ ]*ahi %r1,-32767 + 6: 18 12 [ ]*lr %r1,%r2 + 8: b2 5e 00 12 [ ]*srst %r1,%r2 + c: b3 5b 93 12 [ ]*didbr %f1,%f9,%f2,3 + 10: ba 12 40 03 [ ]*cs %r1,%r2,3\(%r4\) + 14: 84 12 00 00 [ ]*brxh %r1,%r2,14 +[ ]*16: R_390_PC16DBL test_rsi\+0x2 + 18: 58 13 40 02 [ ]*l %r1,2\(%r3,%r4\) + 1c: ed 10 30 02 00 1a [ ]*adb %f1,2\(%r3\) + 22: ed 24 50 03 10 1e [ ]*madb %f1,%f2,3\(%r4,%r5\) + 28: b2 33 20 01 [ ]*ssch 1\(%r2\) + 2c: 92 03 20 01 [ ]*mvi 1\(%r2\),3 + 30: d2 26 30 01 50 04 [ ]*mvc 1\(39,%r3\),4\(%r5\) + 36: e5 01 20 01 40 03 [ ]*tprot 1\(%r2\),3\(%r4\) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-operands.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-operands.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-operands.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-operands.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,16 @@ +.text +foo: + .insn e,0x0101 + .insn ri,0xa70a0000,%r1,-32767 + .insn rr,0x1800,%r1,%r2 + .insn rre,0xb25e0000,%r1,%r2 + .insn rrf,0xb35b0000,%f1,%f2,9,%f3 + .insn rs,0xba000000,%r1,%r2,3(%r4) + .insn rsi,0x84000000,%r1,%r2,test_rsi + .insn rx,0x58000000,%r1,2(%r3,%r4) + .insn rxe,0xed000000001a,%f1,2(%r3) + .insn rxf,0xed000000001e,%f1,%f2,3(%r4,%r5) + .insn s,0xb2330000,1(%r2) + .insn si,0x92000000,1(%r2),3 + .insn ss,0xd20000000000,1(2,%r3),4(%r5),6 + .insn sse,0xe50100000000,1(%r2),3(%r4) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-reloc.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-reloc.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-reloc.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-reloc.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,51 @@ +#name: s390 reloc +#objdump: -dr + +.*: +file format .* + +Disassembly of section .text: + +.* : + 0: d2 00 10 00 20 00 [ ]*mvc 0\(1,%r1\),0\(%r2\) +[ ]*1: R_390_8 test_R_390_8 + 6: 58 01 20 00 [ ]*l %r0,0\(%r1,%r2\) +[ ]*8: R_390_12 test_R_390_12 + a: a7 08 00 00 [ ]*lhi %r0,0 +[ ]*c: R_390_16 test_R_390_16 +[ ]*... +[ ]*e: R_390_32 test_R_390_32 +[ ]*12: R_390_PC32 test_R_390_PC32\+0x12 + 16: 58 01 20 00 [ ]*l %r0,0\(%r1,%r2\) +[ ]*18: R_390_GOT12 test_R_390_GOT12 +[ ]*... +[ ]*1a: R_390_GOT32 test_R_390_GOT32 +[ ]*1e: R_390_PLT32 test_R_390_PLT32 + 22: a7 08 00 00 [ ]*lhi %r0,0 +[ ]*24: R_390_GOT16 test_R_390_GOT16 + 26: a7 08 00 00 [ ]*lhi %r0,0 +[ ]*28: R_390_16 test_R_390_PC16\+0x26 + 2a: a7 e5 00 00 [ ]*bras %r14,2a +[ ]*2c: R_390_PC16DBL test_R_390_PC16DBL\+0x2 + 2e: a7 e5 00 00 [ ]*bras %r14,2e +[ ]*30: R_390_PC16DBL test_R_390_PLT16DBL\+0x2 + 32: a7 08 00 00 [ ]*lhi %r0,0 +[ ]*34: R_390_GOTOFF16 test_R_390_GOTOFF16 + 36: 00 00 00 00 [ ]*.long 0x00000000 +[ ]*36: R_390_GOTOFF32 test_R_390_GOTOFF32 + 3a: a7 08 00 00 [ ]*lhi %r0,0 +[ ]*3c: R_390_PLTOFF16 test_R_390_PLTOFF16 + 3e: 00 00 00 00 [ ]*.long 0x00000000 +[ ]*3e: R_390_PLTOFF32 test_R_390_PLTOFF32 + 42: 58 01 20 00 [ ]*l %r0,0\(%r1,%r2\) +[ ]*44: R_390_GOTPLT12 test_R_390_GOTPLT12 + 46: a7 08 00 00 [ ]*lhi %r0,0 +[ ]*48: R_390_GOTPLT16 test_R_390_GOTPLT16 + 4a: 00 00 00 00 [ ]*.long 0x00000000 +[ ]*4a: R_390_GOTPLT32 test_R_390_GOTPLT32 + +.* : + 4e: a7 e5 00 00 [ ]*bras %r14,4e +[ ]*50: R_390_PLT16DBL foo\+0x2 + 52: 00 00 00 00 [ ]*.long 0x00000000 +[ ]*52: R_390_PLT32 foo\+0x4 + 56: 07 07 [ ]*bcr 0,%r7 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-reloc.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-reloc.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-reloc.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-reloc.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,26 @@ + .text + .globl foo +foo: + mvc 0(test_R_390_8,%r1),0(%r2) + l %r0,test_R_390_12(%r1,%r2) + lhi %r0,test_R_390_16 + .long test_R_390_32 + .long test_R_390_PC32-foo + l %r0,test_R_390_GOT12@GOT(%r1,%r2) + .long test_R_390_GOT32@GOT + .long test_R_390_PLT32@PLT + lhi %r0,test_R_390_GOT16@GOT + lhi %r0,test_R_390_PC16-foo + bras %r14,test_R_390_PC16DBL + bras %r14,test_R_390_PLT16DBL + lhi %r0,test_R_390_GOTOFF16@GOTOFF + .long test_R_390_GOTOFF32@GOTOFF + lhi %r0,test_R_390_PLTOFF16@PLTOFF + .long test_R_390_PLTOFF32@PLTOFF + l %r0,test_R_390_GOTPLT12@GOTPLT(%r1,%r2) + lhi %r0,test_R_390_GOTPLT16@GOTPLT + .long test_R_390_GOTPLT32@GOTPLT + +bar: + bras %r14,foo@PLT + .long foo@PLT-bar diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z900.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z900.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z900.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z900.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,51 @@ +#name: s390 opcode +#objdump: -drw + +.*: +file format .* + +Disassembly of section .text: + +.* : +.*: c0 f4 00 00 00 00 [ ]*jg 0 \ +.*: c0 14 00 00 00 00 [ ]*jgo 6 \ +.*: c0 24 00 00 00 00 [ ]*jgh c \ +.*: c0 24 00 00 00 00 [ ]*jgh 12 \ +.*: c0 34 00 00 00 00 [ ]*jgnle 18 \ +.*: c0 44 00 00 00 00 [ ]*jgl 1e \ +.*: c0 44 00 00 00 00 [ ]*jgl 24 \ +.*: c0 54 00 00 00 00 [ ]*jgnhe 2a \ +.*: c0 64 00 00 00 00 [ ]*jglh 30 \ +.*: c0 74 00 00 00 00 [ ]*jgne 36 \ +.*: c0 74 00 00 00 00 [ ]*jgne 3c \ +.*: c0 84 00 00 00 00 [ ]*jge 42 \ +.*: c0 84 00 00 00 00 [ ]*jge 48 \ +.*: c0 94 00 00 00 00 [ ]*jgnlh 4e \ +.*: c0 a4 00 00 00 00 [ ]*jghe 54 \ +.*: c0 b4 00 00 00 00 [ ]*jgnl 5a \ +.*: c0 b4 00 00 00 00 [ ]*jgnl 60 \ +.*: c0 c4 00 00 00 00 [ ]*jgle 66 \ +.*: c0 d4 00 00 00 00 [ ]*jgnh 6c \ +.*: c0 d4 00 00 00 00 [ ]*jgnh 72 \ +.*: c0 e4 00 00 00 00 [ ]*jgno 78 \ +.*: c0 f4 00 00 00 00 [ ]*jg 7e \ +.*: c0 65 00 00 00 00 [ ]*brasl %r6,84 \ +.*: 01 0b [ ]*tam +.*: 01 0c [ ]*sam24 +.*: 01 0d [ ]*sam31 +.*: b2 b1 5f ff [ ]*stfl 4095\(%r5\) +.*: b9 1f 00 69 [ ]*lrvr %r6,%r9 +.*: b9 8d 00 69 [ ]*epsw %r6,%r9 +.*: b9 96 00 69 [ ]*mlr %r6,%r9 +.*: b9 97 00 69 [ ]*dlr %r6,%r9 +.*: b9 98 00 69 [ ]*alcr %r6,%r9 +.*: b9 99 00 69 [ ]*slbr %r6,%r9 +.*: c0 60 00 00 00 00 [ ]*larl %r6,ac \ +.*: e3 65 af ff 00 1e [ ]*lrv %r6,4095\(%r5,%r10\) +.*: e3 65 af ff 00 1f [ ]*lrvh %r6,4095\(%r5,%r10\) +.*: e3 65 af ff 00 3e [ ]*strv %r6,4095\(%r5,%r10\) +.*: e3 65 af ff 00 3f [ ]*strvh %r6,4095\(%r5,%r10\) +.*: e3 65 af ff 00 96 [ ]*ml %r6,4095\(%r5,%r10\) +.*: e3 65 af ff 00 97 [ ]*dl %r6,4095\(%r5,%r10\) +.*: e3 65 af ff 00 98 [ ]*alc %r6,4095\(%r5,%r10\) +.*: e3 65 af ff 00 99 [ ]*slb %r6,4095\(%r5,%r10\) +.*: eb 69 5f ff 00 1d [ ]*rll %r6,%r9,4095\(%r5\) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z900.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z900.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z900.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z900.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,45 @@ +.text +foo: + brcl 15,. + jgo . + jgh . + jgp . + jgnle . + jgl . + jgm . + jgnhe . + jglh . + jgne . + jgnz . + jge . + jgz . + jgnlh . + jghe . + jgnl . + jgnm . + jgle . + jgnh . + jgnp . + jgno . + jg . + brasl %r6,. + tam + sam24 + sam31 + stfl 4095(%r5) + lrvr %r6,%r9 + epsw %r6,%r9 + mlr %r6,%r9 + dlr %r6,%r9 + alcr %r6,%r9 + slbr %r6,%r9 + larl %r6,. + lrv %r6,4095(%r5,%r10) + lrvh %r6,4095(%r5,%r10) + strv %r6,4095(%r5,%r10) + strvh %r6,4095(%r5,%r10) + ml %r6,4095(%r5,%r10) + dl %r6,4095(%r5,%r10) + alc %r6,4095(%r5,%r10) + slb %r6,4095(%r5,%r10) + rll %r6,%r9,4095(%r5) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z9-109.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z9-109.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z9-109.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z9-109.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,12 @@ +#name: s390 opcode +#objdump: -drw + +.*: +file format .* + +Disassembly of section .text: + +.* : +.*: b9 93 f0 69 [ ]*troo %r6,%r9,15 +.*: b9 92 f0 69 [ ]*trot %r6,%r9,15 +.*: b9 91 f0 69 [ ]*trto %r6,%r9,15 +.*: b9 90 f0 69 [ ]*trtt %r6,%r9,15 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z9-109.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z9-109.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z9-109.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z9-109.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,6 @@ +.text +foo: + troo %r6,%r9,15 + trot %r6,%r9,15 + trto %r6,%r9,15 + trtt %r6,%r9,15 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z990.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z990.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z990.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z990.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,13 @@ +#name: s390 opcode +#objdump: -drw + +.*: +file format .* + +Disassembly of section .text: + +.* : +.*: b9 2e 00 69 [ ]*km %r6,%r9 +.*: b9 2f 00 69 [ ]*kmc %r6,%r9 +.*: b9 3e 00 69 [ ]*kimd %r6,%r9 +.*: b9 3f 00 69 [ ]*klmd %r6,%r9 +.*: b9 1e 00 69 [ ]*kmac %r6,%r9 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z990.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z990.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/esa-z990.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/esa-z990.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,7 @@ +.text +foo: + km %r6,%r9 + kmc %r6,%r9 + kimd %r6,%r9 + klmd %r6,%r9 + kmac %r6,%r9 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/opcode64.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/opcode64.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/opcode64.d 2001-10-01 15:25:25.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/opcode64.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,211 +0,0 @@ -#name: s390x opcode -#objdump: -drw - -.*: +file format .* - -Disassembly of section .text: - -.* : - 0: e3 95 af ff 00 08 [ ]*ag %r9,4095\(%r5,%r10\) - 6: e3 95 af ff 00 18 [ ]*agf %r9,4095\(%r5,%r10\) - c: b9 18 00 96 [ ]*agfr %r9,%r6 - 10: a7 9b 80 01 [ ]*aghi %r9,-32767 - 14: b9 08 00 96 [ ]*agr %r9,%r6 - 18: e3 95 af ff 00 98 [ ]*alc %r9,4095\(%r5,%r10\) - 1e: e3 95 af ff 00 88 [ ]*alcg %r9,4095\(%r5,%r10\) - 24: b9 88 00 96 [ ]*alcgr %r9,%r6 - 28: b9 98 00 96 [ ]*alcr %r9,%r6 - 2c: e3 95 af ff 00 0a [ ]*alg %r9,4095\(%r5,%r10\) - 32: e3 95 af ff 00 1a [ ]*algf %r9,4095\(%r5,%r10\) - 38: b9 1a 00 96 [ ]*algfr %r9,%r6 - 3c: b9 0a 00 96 [ ]*algr %r9,%r6 - 40: e3 65 af ff 00 46 [ ]*bctg %r6,4095\(%r5,%r10\) - 46: b9 46 00 69 [ ]*bctgr %r6,%r9 - 4a: c0 65 00 00 00 00 [ ]*brasl %r6,4a - 50: c0 f4 00 00 00 00 [ ]*jg 50 - 56: a7 67 00 00 [ ]*brctg %r6,56 - 5a: ec 69 00 00 00 44 [ ]*brxhg %r6,%r9,5a - 60: ec 69 00 00 00 45 [ ]*brxlg %r6,%r9,60 - 66: eb 69 5f ff 00 44 [ ]*bxhg %r6,%r9,4095\(%r5\) - 6c: eb 69 5f ff 00 45 [ ]*bxleg %r6,%r9,4095\(%r5\) - 72: b3 a5 00 69 [ ]*cdgbr %r6,%r9 - 76: b3 c5 00 69 [ ]*cdgr %r6,%r9 - 7a: eb 69 5f ff 00 3e [ ]*cdsg %r6,%r9,4095\(%r5\) - 80: b3 a4 00 69 [ ]*cegbr %r6,%r9 - 84: b3 c4 00 69 [ ]*cegr %r6,%r9 - 88: e3 65 af ff 00 20 [ ]*cg %r6,4095\(%r5,%r10\) - 8e: b3 a9 f0 69 [ ]*cgdbr %f6,15,%r9 - 92: b3 c9 90 65 [ ]*cgdr %f6,9,%r5 - 96: b3 a8 f0 69 [ ]*cgebr %f6,15,%r9 - 9a: b3 c8 90 65 [ ]*cger %f6,9,%r5 - 9e: e3 65 af ff 00 30 [ ]*cgf %r6,4095\(%r5,%r10\) - a4: b9 30 00 69 [ ]*cgfr %r6,%r9 - a8: a7 6f 80 01 [ ]*cghi %r6,-32767 - ac: b9 20 00 69 [ ]*cgr %r6,%r9 - b0: b3 aa f0 69 [ ]*cgxbr %f6,15,%r9 - b4: b3 ca 90 65 [ ]*cgxr %f6,9,%r5 - b8: e3 65 af ff 00 21 [ ]*clg %r6,4095\(%r5,%r10\) - be: e3 65 af ff 00 31 [ ]*clgf %r6,4095\(%r5,%r10\) - c4: b9 31 00 69 [ ]*clgfr %r6,%r9 - c8: b9 21 00 69 [ ]*clgr %r6,%r9 - cc: eb 6a 5f ff 00 20 [ ]*clmh %r6,10,4095\(%r5\) - d2: eb 69 5f ff 00 30 [ ]*csg %r6,%r9,4095\(%r5\) - d8: e3 65 af ff 00 0e [ ]*cvbg %r6,4095\(%r5,%r10\) - de: e3 65 af ff 00 2e [ ]*cvdg %r6,4095\(%r5,%r10\) - e4: b3 a6 00 69 [ ]*cxgbr %r6,%r9 - e8: b3 c6 00 69 [ ]*cxgr %r6,%r9 - ec: e3 65 af ff 00 97 [ ]*dl %r6,4095\(%r5,%r10\) - f2: e3 65 af ff 00 87 [ ]*dlg %r6,4095\(%r5,%r10\) - f8: b9 87 00 69 [ ]*dlgr %r6,%r9 - fc: b9 97 00 69 [ ]*dlr %r6,%r9 - 100: e3 65 af ff 00 0d [ ]*dsg %r6,4095\(%r5,%r10\) - 106: e3 65 af ff 00 1d [ ]*dsgf %r6,4095\(%r5,%r10\) - 10c: b9 1d 00 69 [ ]*dsgfr %r6,%r9 - 110: b9 0d 00 69 [ ]*dsgr %r6,%r9 - 114: b9 8d 00 69 [ ]*epsw %r6,%r9 - 118: b9 0e 00 69 [ ]*eregg %r6,%r9 - 11c: b9 9d 00 60 [ ]*esea %r6 - 120: eb 6a 5f ff 00 80 [ ]*icmh %r6,10,4095\(%r5\) - 126: a5 60 ff ff [ ]*iihh %r6,65535 - 12a: a5 61 ff ff [ ]*iihl %r6,65535 - 12e: a5 62 ff ff [ ]*iilh %r6,65535 - 132: a5 63 ff ff [ ]*iill %r6,65535 - 136: c0 f4 00 00 00 00 [ ]*jg 136 - 13c: c0 84 00 00 00 00 [ ]*jge 13c - 142: c0 24 00 00 00 00 [ ]*jgh 142 - 148: c0 a4 00 00 00 00 [ ]*jghe 148 - 14e: c0 44 00 00 00 00 [ ]*jgl 14e - 154: c0 c4 00 00 00 00 [ ]*jgle 154 - 15a: c0 64 00 00 00 00 [ ]*jglh 15a - 160: c0 44 00 00 00 00 [ ]*jgl 160 - 166: c0 74 00 00 00 00 [ ]*jgne 166 - 16c: c0 d4 00 00 00 00 [ ]*jgnh 16c - 172: c0 54 00 00 00 00 [ ]*jgnhe 172 - 178: c0 b4 00 00 00 00 [ ]*jgnl 178 - 17e: c0 34 00 00 00 00 [ ]*jgnle 17e - 184: c0 94 00 00 00 00 [ ]*jgnlh 184 - 18a: c0 b4 00 00 00 00 [ ]*jgnl 18a - 190: c0 e4 00 00 00 00 [ ]*jgno 190 - 196: c0 d4 00 00 00 00 [ ]*jgnh 196 - 19c: c0 74 00 00 00 00 [ ]*jgne 19c - 1a2: c0 14 00 00 00 00 [ ]*jgo 1a2 - 1a8: c0 24 00 00 00 00 [ ]*jgh 1a8 - 1ae: c0 84 00 00 00 00 [ ]*jge 1ae - 1b4: c0 60 00 00 00 00 [ ]*larl %r6,1b4 - 1ba: b9 13 00 69 [ ]*lcgfr %r6,%r9 - 1be: b9 03 00 69 [ ]*lcgr %r6,%r9 - 1c2: eb 69 5f ff 00 2f [ ]*lctlg %r6,%r9,4095\(%r5\) - 1c8: e3 65 af ff 00 04 [ ]*lg %r6,4095\(%r5,%r10\) - 1ce: e3 65 af ff 00 14 [ ]*lgf %r6,4095\(%r5,%r10\) - 1d4: b9 14 00 69 [ ]*lgfr %r6,%r9 - 1d8: e3 65 af ff 00 15 [ ]*lgh %r6,4095\(%r5,%r10\) - 1de: a7 69 80 01 [ ]*lghi %r6,-32767 - 1e2: b9 04 00 69 [ ]*lgr %r6,%r9 - 1e6: e3 65 af ff 00 90 [ ]*llgc %r6,4095\(%r5,%r10\) - 1ec: e3 65 af ff 00 16 [ ]*llgf %r6,4095\(%r5,%r10\) - 1f2: b9 16 00 69 [ ]*llgfr %r6,%r9 - 1f6: e3 65 af ff 00 91 [ ]*llgh %r6,4095\(%r5,%r10\) - 1fc: e3 65 af ff 00 17 [ ]*llgt %r6,4095\(%r5,%r10\) - 202: b9 17 00 69 [ ]*llgtr %r6,%r9 - 206: a5 6c ff ff [ ]*llihh %r6,65535 - 20a: a5 6d ff ff [ ]*llihl %r6,65535 - 20e: a5 6e ff ff [ ]*llilh %r6,65535 - 212: a5 6f ff ff [ ]*llill %r6,65535 - 216: ef 69 5f ff af ff [ ]*lmd %r6,%r9,4095\(%r5\),4095\(%r10\) - 21c: eb 69 5f ff 00 04 [ ]*lmg %r6,%r9,4095\(%r5\) - 222: eb 69 5f ff 00 96 [ ]*lmh %r6,%r9,4095\(%r5\) - 228: b9 11 00 69 [ ]*lngfr %r6,%r9 - 22c: b9 01 00 69 [ ]*lngr %r6,%r9 - 230: b9 10 00 69 [ ]*lpgfr %r6,%r9 - 234: b9 00 00 69 [ ]*lpgr %r6,%r9 - 238: e3 65 af ff 00 8f [ ]*lpq %r6,4095\(%r5,%r10\) - 23e: b2 b2 5f ff [ ]*lpswe 4095\(%r5\) - 242: e3 65 af ff 00 03 [ ]*lrag %r6,4095\(%r5,%r10\) - 248: e3 65 af ff 00 1e [ ]*lrv %r6,4095\(%r5,%r10\) - 24e: e3 65 af ff 00 0f [ ]*lrvg %r6,4095\(%r5,%r10\) - 254: b9 0f 00 69 [ ]*lrvgr %r6,%r9 - 258: e3 65 af ff 00 1f [ ]*lrvh %r6,4095\(%r5,%r10\) - 25e: b9 1f 00 69 [ ]*lrvr %r6,%r9 - 262: b9 12 00 69 [ ]*ltgfr %r6,%r9 - 266: b9 02 00 69 [ ]*ltgr %r6,%r9 - 26a: b9 05 00 69 [ ]*lurag %r6,%r9 - 26e: b3 75 00 60 [ ]*lzdr %r6 - 272: b3 74 00 60 [ ]*lzer %r6 - 276: b3 76 00 60 [ ]*lzxr %r6 - 27a: a7 6d 80 01 [ ]*mghi %r6,-32767 - 27e: e3 65 af ff 00 96 [ ]*ml %r6,4095\(%r5,%r10\) - 284: e3 65 af ff 00 86 [ ]*mlg %r6,4095\(%r5,%r10\) - 28a: b9 86 00 69 [ ]*mlgr %r6,%r9 - 28e: b9 96 00 69 [ ]*mlr %r6,%r9 - 292: e3 65 af ff 00 0c [ ]*msg %r6,4095\(%r5,%r10\) - 298: e3 65 af ff 00 1c [ ]*msgf %r6,4095\(%r5,%r10\) - 29e: b9 1c 00 69 [ ]*msgfr %r6,%r9 - 2a2: b9 0c 00 69 [ ]*msgr %r6,%r9 - 2a6: eb 69 5f ff 00 8e [ ]*mvclu %r6,%r9,4095\(%r5\) - 2ac: e3 65 af ff 00 80 [ ]*ng %r6,4095\(%r5,%r10\) - 2b2: b9 80 00 69 [ ]*ngr %r6,%r9 - 2b6: a5 64 ff ff [ ]*nihh %r6,65535 - 2ba: a5 65 ff ff [ ]*nihl %r6,65535 - 2be: a5 66 ff ff [ ]*nilh %r6,65535 - 2c2: a5 67 ff ff [ ]*nill %r6,65535 - 2c6: e3 65 af ff 00 81 [ ]*og %r6,4095\(%r5,%r10\) - 2cc: b9 81 00 69 [ ]*ogr %r6,%r9 - 2d0: a5 68 ff ff [ ]*oihh %r6,65535 - 2d4: a5 69 ff ff [ ]*oihl %r6,65535 - 2d8: a5 6a ff ff [ ]*oilh %r6,65535 - 2dc: a5 6b ff ff [ ]*oill %r6,65535 - 2e0: e9 ff 5f ff af ff [ ]*pka 4095\(256,%r5\),4095\(%r10\) - 2e6: e1 ff 5f ff af ff [ ]*pku 4095\(256,%r5\),4095\(%r10\) - 2ec: eb 69 5f ff 00 1d [ ]*rll %r6,%r9,4095\(%r5\) - 2f2: eb 69 5f ff 00 1c [ ]*rllg %r6,%r9,4095\(%r5\) - 2f8: 01 0c [ ]*sam24 - 2fa: 01 0d [ ]*sam31 - 2fc: 01 0e [ ]*sam64 - 2fe: e3 65 af ff 00 09 [ ]*sg %r6,4095\(%r5,%r10\) - 304: e3 65 af ff 00 19 [ ]*sgf %r6,4095\(%r5,%r10\) - 30a: b9 19 00 69 [ ]*sgfr %r6,%r9 - 30e: b9 09 00 69 [ ]*sgr %r6,%r9 - 312: eb 69 5f ff 00 0b [ ]*slag %r6,%r9,4095\(%r5\) - 318: e3 65 af ff 00 99 [ ]*slb %r6,4095\(%r5,%r10\) - 31e: e3 65 af ff 00 89 [ ]*slbg %r6,4095\(%r5,%r10\) - 324: b9 89 00 69 [ ]*slbgr %r6,%r9 - 328: b9 99 00 69 [ ]*slbr %r6,%r9 - 32c: e3 65 af ff 00 0b [ ]*slg %r6,4095\(%r5,%r10\) - 332: e3 65 af ff 00 1b [ ]*slgf %r6,4095\(%r5,%r10\) - 338: b9 1b 00 69 [ ]*slgfr %r6,%r9 - 33c: b9 0b 00 69 [ ]*slgr %r6,%r9 - 340: eb 69 5f ff 00 0d [ ]*sllg %r6,%r9,4095\(%r5\) - 346: eb 69 5f ff 00 0a [ ]*srag %r6,%r9,4095\(%r5\) - 34c: eb 69 5f ff 00 0c [ ]*srlg %r6,%r9,4095\(%r5\) - 352: b2 78 5f ff [ ]*stcke 4095\(%r5\) - 356: eb 6a 5f ff 00 2c [ ]*stcmh %r6,10,4095\(%r5\) - 35c: eb 69 5f ff 00 25 [ ]*stctg %r6,%r9,4095\(%r5\) - 362: b2 b1 5f ff [ ]*stfl 4095\(%r5\) - 366: e3 65 af ff 00 24 [ ]*stg %r6,4095\(%r5,%r10\) - 36c: eb 69 5f ff 00 24 [ ]*stmg %r6,%r9,4095\(%r5\) - 372: eb 69 5f ff 00 26 [ ]*stmh %r6,%r9,4095\(%r5\) - 378: e3 65 af ff 00 8e [ ]*stpq %r6,4095\(%r5,%r10\) - 37e: e5 00 5f ff 9f ff [ ]*lasp 4095\(%r5\),4095\(%r9\) - 384: e3 65 af ff 00 3e [ ]*strv %r6,4095\(%r5,%r10\) - 38a: e3 65 af ff 00 2f [ ]*strvg %r6,4095\(%r5,%r10\) - 390: e3 65 af ff 00 3f [ ]*strvh %r6,4095\(%r5,%r10\) - 396: b9 25 00 69 [ ]*sturg %r6,%r9 - 39a: 01 0b [ ]*tam - 39c: b3 51 f0 69 [ ]*tbdr %f6,15,%f9 - 3a0: b3 50 f0 69 [ ]*tbedr %f6,15,%f9 - 3a4: b3 58 00 69 [ ]*thder %r6,%r9 - 3a8: b3 59 00 69 [ ]*thdr %r6,%r9 - 3ac: a7 62 ff ff [ ]*tmhh %r6,65535 - 3b0: a7 63 ff ff [ ]*tmhl %r6,65535 - 3b4: a7 60 ff ff [ ]*tmh %r6,65535 - 3b8: a7 61 ff ff [ ]*tml %r6,65535 - 3bc: eb 69 5f ff 00 0f [ ]*tracg %r6,%r9,4095\(%r5\) - 3c2: b2 a5 00 69 [ ]*tre %r6,%r9 - 3c6: b9 93 00 69 [ ]*troo %r6,%r9 - 3ca: b9 92 00 69 [ ]*trot %r6,%r9 - 3ce: b9 91 00 69 [ ]*trto %r6,%r9 - 3d2: b9 90 00 69 [ ]*trtt %r6,%r9 - 3d6: ea ff 5f ff af ff [ ]*unpka 4095\(256,%r5\),4095\(%r10\) - 3dc: e2 ff 5f ff af ff [ ]*unpku 4095\(256,%r5\),4095\(%r10\) - 3e2: e3 65 af ff 00 82 [ ]*xg %r6,4095\(%r5,%r10\) - 3e8: b9 82 00 69 [ ]*xgr %r6,%r9 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/opcode64.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/opcode64.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/opcode64.s 2001-10-01 15:25:25.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/opcode64.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,205 +0,0 @@ -.text -foo: - ag %r9,4095(%r5,%r10) - agf %r9,4095(%r5,%r10) - agfr %r9,%r6 - aghi %r9,-32767 - agr %r9,%r6 - alc %r9,4095(%r5,%r10) - alcg %r9,4095(%r5,%r10) - alcgr %r9,%r6 - alcr %r9,%r6 - alg %r9,4095(%r5,%r10) - algf %r9,4095(%r5,%r10) - algfr %r9,%r6 - algr %r9,%r6 - bctg %r6,4095(%r5,%r10) - bctgr %r6,%r9 - brasl %r6,. - brcl 15,. - brctg %r6,. - brxhg %r6,%r9,. - brxlg %r6,%r9,. - bxhg %r6,%r9,4095(%r5) - bxleg %r6,%r9,4095(%r5) - cdgbr %r6,%r9 - cdgr %r6,%r9 - cdsg %r6,%r9,4095(%r5) - cegbr %r6,%r9 - cegr %r6,%r9 - cg %r6,4095(%r5,%r10) - cgdbr %r6,15,%r9 - cgdr %f6,9,%r5 - cgebr %r6,15,%r9 - cger %f6,9,%r5 - cgf %r6,4095(%r5,%r10) - cgfr %r6,%r9 - cghi %r6,-32767 - cgr %r6,%r9 - cgxbr %r6,15,%r9 - cgxr %f6,9,%r5 - clg %r6,4095(%r5,%r10) - clgf %r6,4095(%r5,%r10) - clgfr %r6,%r9 - clgr %r6,%r9 - clmh %r6,10,4095(%r5) - csg %r6,%r9,4095(%r5) - cvbg %r6,4095(%r5,%r10) - cvdg %r6,4095(%r5,%r10) - cxgbr %r6,%r9 - cxgr %r6,%r9 - dl %r6,4095(%r5,%r10) - dlg %r6,4095(%r5,%r10) - dlgr %r6,%r9 - dlr %r6,%r9 - dsg %r6,4095(%r5,%r10) - dsgf %r6,4095(%r5,%r10) - dsgfr %r6,%r9 - dsgr %r6,%r9 - epsw %r6,%r9 - eregg %r6,%r9 - esea %r6 - icmh %r6,10,4095(%r5) - iihh %r6,65535 - iihl %r6,65535 - iilh %r6,65535 - iill %r6,65535 - jg . - jge . - jgh . - jghe . - jgl . - jgle . - jglh . - jgm . - jgne . - jgnh . - jgnhe . - jgnl . - jgnle . - jgnlh . - jgnm . - jgno . - jgnp . - jgnz . - jgo . - jgp . - jgz . - larl %r6,. - lcgfr %r6,%r9 - lcgr %r6,%r9 - lctlg %r6,%r9,4095(%r5) - lg %r6,4095(%r5,%r10) - lgf %r6,4095(%r5,%r10) - lgfr %r6,%r9 - lgh %r6,4095(%r5,%r10) - lghi %r6,-32767 - lgr %r6,%r9 - llgc %r6,4095(%r5,%r10) - llgf %r6,4095(%r5,%r10) - llgfr %r6,%r9 - llgh %r6,4095(%r5,%r10) - llgt %r6,4095(%r5,%r10) - llgtr %r6,%r9 - llihh %r6,65535 - llihl %r6,65535 - llilh %r6,65535 - llill %r6,65535 - lmd %r6,%r9,4095(%r5),4095(%r10) - lmg %r6,%r9,4095(%r5) - lmh %r6,%r9,4095(%r5) - lngfr %r6,%r9 - lngr %r6,%r9 - lpgfr %r6,%r9 - lpgr %r6,%r9 - lpq %r6,4095(%r5,%r10) - lpswe 4095(%r5) - lrag %r6,4095(%r5,%r10) - lrv %r6,4095(%r5,%r10) - lrvg %r6,4095(%r5,%r10) - lrvgr %r6,%r9 - lrvh %r6,4095(%r5,%r10) - lrvr %r6,%r9 - ltgfr %r6,%r9 - ltgr %r6,%r9 - lurag %r6,%r9 - lzdr %r6 - lzer %r6 - lzxr %r6 - mghi %r6,-32767 - ml %r6,4095(%r5,%r10) - mlg %r6,4095(%r5,%r10) - mlgr %r6,%r9 - mlr %r6,%r9 - msg %r6,4095(%r5,%r10) - msgf %r6,4095(%r5,%r10) - msgfr %r6,%r9 - msgr %r6,%r9 - mvclu %r6,%r9,4095(%r5) - ng %r6,4095(%r5,%r10) - ngr %r6,%r9 - nihh %r6,65535 - nihl %r6,65535 - nilh %r6,65535 - nill %r6,65535 - og %r6,4095(%r5,%r10) - ogr %r6,%r9 - oihh %r6,65535 - oihl %r6,65535 - oilh %r6,65535 - oill %r6,65535 - pka 4095(256,%r5),4095(%r10) - pku 4095(256,%r5),4095(%r10) - rll %r6,%r9,4095(%r5) - rllg %r6,%r9,4095(%r5) - sam24 - sam31 - sam64 - sg %r6,4095(%r5,%r10) - sgf %r6,4095(%r5,%r10) - sgfr %r6,%r9 - sgr %r6,%r9 - slag %r6,%r9,4095(%r5) - slb %r6,4095(%r5,%r10) - slbg %r6,4095(%r5,%r10) - slbgr %r6,%r9 - slbr %r6,%r9 - slg %r6,4095(%r5,%r10) - slgf %r6,4095(%r5,%r10) - slgfr %r6,%r9 - slgr %r6,%r9 - sllg %r6,%r9,4095(%r5) - srag %r6,%r9,4095(%r5) - srlg %r6,%r9,4095(%r5) - stcke 4095(%r5) - stcmh %r6,10,4095(%r5) - stctg %r6,%r9,4095(%r5) - stfl 4095(%r5) - stg %r6,4095(%r5,%r10) - stmg %r6,%r9,4095(%r5) - stmh %r6,%r9,4095(%r5) - stpq %r6,4095(%r5,%r10) - strag 4095(%r5),4095(%r9) - strv %r6,4095(%r5,%r10) - strvg %r6,4095(%r5,%r10) - strvh %r6,4095(%r5,%r10) - sturg %r6,%r9 - tam - tbdr %r6,15,%r9 - tbedr %r6,15,%r9 - thder %r6,%r9 - thdr %r6,%r9 - tmhh %r6,65535 - tmhl %r6,65535 - tmlh %r6,65535 - tmll %r6,65535 - tracg %r6,%r9,4095(%r5) - tre %r6,%r9 - troo %r6,%r9 - trot %r6,%r9 - trto %r6,%r9 - trtt %r6,%r9 - unpka 4095(256,%r5),4095(%r10) - unpku 4095(256,%r5),4095(%r10) - xg %r6,4095(%r5,%r10) - xgr %r6,%r9 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/opcode.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/opcode.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/opcode.d 2001-10-01 15:25:25.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/opcode.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,425 +0,0 @@ -#name: s390 opcode -#objdump: -drw - -.*: +file format .* - -Disassembly of section .text: - -.* : - 0: 5a 65 af ff [ ]*a %r6,4095\(%r5,%r10\) - 4: 6a 65 af ff [ ]*ad %f6,4095\(%r5,%r10\) - 8: ed 65 af ff 00 1a [ ]*adb %f6,4095\(%r5,%r10\) - e: b3 1a 00 69 [ ]*adbr %f6,%f9 - 12: 2a 69 [ ]*adr %f6,%f9 - 14: 7a 65 af ff [ ]*ae %f6,4095\(%r5,%r10\) - 18: ed 65 af ff 00 0a [ ]*aeb %f6,4095\(%r5,%r10\) - 1e: b3 0a 00 69 [ ]*aebr %f6,%f9 - 22: 3a 69 [ ]*aer %f6,%f9 - 24: 4a 65 af ff [ ]*ah %r6,4095\(%r5,%r10\) - 28: a7 6a 80 01 [ ]*ahi %r6,-32767 - 2c: 5e 65 af ff [ ]*al %r6,4095\(%r5,%r10\) - 30: 1e 69 [ ]*alr %r6,%r9 - 32: fa 58 5f ff af ff [ ]*ap 4095\(6,%r5\),4095\(9,%r10\) - 38: 1a 69 [ ]*ar %r6,%r9 - 3a: 7e 65 af ff [ ]*au %f6,4095\(%r5,%r10\) - 3e: 3e 69 [ ]*aur %f6,%f9 - 40: 6e 65 af ff [ ]*aw %f6,4095\(%r5,%r10\) - 44: 2e 69 [ ]*awr %f6,%f9 - 46: b3 4a 00 69 [ ]*axbr %f6,%f9 - 4a: 36 69 [ ]*axr %f6,%f9 - 4c: 47 f5 af ff [ ]*b 4095\(%r5,%r10\) - 50: b2 40 00 69 [ ]*bakr %r6,%r9 - 54: 45 65 af ff [ ]*bal %r6,4095\(%r5,%r10\) - 58: 05 69 [ ]*balr %r6,%r9 - 5a: 4d 65 af ff [ ]*bas %r6,4095\(%r5,%r10\) - 5e: 0d 69 [ ]*basr %r6,%r9 - 60: 0c 69 [ ]*bassm %r6,%r9 - 62: 47 65 af ff [ ]*blh 4095\(%r5,%r10\) - 66: 07 69 [ ]*blhr %r9 - 68: 46 65 af ff [ ]*bct %r6,4095\(%r5,%r10\) - 6c: 06 69 [ ]*bctr %r6,%r9 - 6e: 47 85 af ff [ ]*be 4095\(%r5,%r10\) - 72: 07 89 [ ]*ber %r9 - 74: 47 25 af ff [ ]*bh 4095\(%r5,%r10\) - 78: 47 a5 af ff [ ]*bhe 4095\(%r5,%r10\) - 7c: 07 a9 [ ]*bher %r9 - 7e: 07 29 [ ]*bhr %r9 - 80: 47 45 af ff [ ]*bl 4095\(%r5,%r10\) - 84: 47 c5 af ff [ ]*ble 4095\(%r5,%r10\) - 88: 07 c9 [ ]*bler %r9 - 8a: 47 65 af ff [ ]*blh 4095\(%r5,%r10\) - 8e: 07 69 [ ]*blhr %r9 - 90: 07 49 [ ]*blr %r9 - 92: 47 45 af ff [ ]*bl 4095\(%r5,%r10\) - 96: 07 49 [ ]*blr %r9 - 98: 47 75 af ff [ ]*bne 4095\(%r5,%r10\) - 9c: 07 79 [ ]*bner %r9 - 9e: 47 d5 af ff [ ]*bnh 4095\(%r5,%r10\) - a2: 47 55 af ff [ ]*bnhe 4095\(%r5,%r10\) - a6: 07 59 [ ]*bnher %r9 - a8: 07 d9 [ ]*bnhr %r9 - aa: 47 b5 af ff [ ]*bnl 4095\(%r5,%r10\) - ae: 47 35 af ff [ ]*bnle 4095\(%r5,%r10\) - b2: 07 39 [ ]*bnler %r9 - b4: 47 95 af ff [ ]*bnlh 4095\(%r5,%r10\) - b8: 07 99 [ ]*bnlhr %r9 - ba: 07 b9 [ ]*bnlr %r9 - bc: 47 b5 af ff [ ]*bnl 4095\(%r5,%r10\) - c0: 07 b9 [ ]*bnlr %r9 - c2: 47 e5 af ff [ ]*bno 4095\(%r5,%r10\) - c6: 07 e9 [ ]*bnor %r9 - c8: 47 d5 af ff [ ]*bnh 4095\(%r5,%r10\) - cc: 07 d9 [ ]*bnhr %r9 - ce: 47 75 af ff [ ]*bne 4095\(%r5,%r10\) - d2: 07 79 [ ]*bner %r9 - d4: 47 15 af ff [ ]*bo 4095\(%r5,%r10\) - d8: 07 19 [ ]*bor %r9 - da: 47 25 af ff [ ]*bh 4095\(%r5,%r10\) - de: 07 29 [ ]*bhr %r9 - e0: 07 f9 [ ]*br %r9 - e2: a7 95 00 00 [ ]*bras %r9,e2 - e6: a7 64 00 00 [ ]*jlh e6 - ea: a7 66 00 00 [ ]*brct %r6,ea - ee: 84 69 00 00 [ ]*brxh %r6,%r9,ee - f2: 85 69 00 00 [ ]*brxle %r6,%r9,f2 - f6: b2 5a 00 69 [ ]*bsa %r6,%r9 - fa: b2 58 00 69 [ ]*bsg %r6,%r9 - fe: 0b 69 [ ]*bsm %r6,%r9 - 100: 86 69 5f ff [ ]*bxh %r6,%r9,4095\(%r5\) - 104: 87 69 5f ff [ ]*bxle %r6,%r9,4095\(%r5\) - 108: 47 85 af ff [ ]*be 4095\(%r5,%r10\) - 10c: 07 89 [ ]*ber %r9 - 10e: 59 65 af ff [ ]*c %r6,4095\(%r5,%r10\) - 112: 69 65 af ff [ ]*cd %f6,4095\(%r5,%r10\) - 116: ed 65 af ff 00 19 [ ]*cdb %f6,4095\(%r5,%r10\) - 11c: b3 19 00 69 [ ]*cdbr %f6,%f9 - 120: b3 95 00 69 [ ]*cdfbr %r6,%f9 - 124: 29 69 [ ]*cdr %f6,%f9 - 126: bb 69 5f ff [ ]*cds %r6,%r9,4095\(%r5\) - 12a: 79 65 af ff [ ]*ce %f6,4095\(%r5,%r10\) - 12e: ed 65 af ff 00 09 [ ]*ceb %f6,4095\(%r5,%r10\) - 134: b3 09 00 69 [ ]*cebr %f6,%f9 - 138: b3 94 00 69 [ ]*cefbr %r6,%f9 - 13c: 39 69 [ ]*cer %f6,%f9 - 13e: b2 1a 5f ff [ ]*cfc 4095\(%r5\) - 142: b3 99 50 69 [ ]*cfdbr %f6,5,%r9 - 146: b3 98 50 69 [ ]*cfebr %f6,5,%r9 - 14a: b3 9a 50 69 [ ]*cfxbr %f6,5,%r9 - 14e: 49 65 af ff [ ]*ch %r6,4095\(%r5,%r10\) - 152: a7 6e 80 01 [ ]*chi %r6,-32767 - 156: b2 41 00 69 [ ]*cksm %r6,%r9 - 15a: 55 65 af ff [ ]*cl %r6,4095\(%r5,%r10\) - 15e: d5 ff 5f ff af ff [ ]*clc 4095\(256,%r5\),4095\(%r10\) - 164: 0f 69 [ ]*clcl %r6,%r9 - 166: a9 69 00 0a [ ]*clcle %r6,%r9,10 - 16a: 95 ff 5f ff [ ]*cli 4095\(%r5\),255 - 16e: bd 6a 5f ff [ ]*clm %r6,10,4095\(%r5\) - 172: 15 69 [ ]*clr %r6,%r9 - 174: b2 5d 00 69 [ ]*clst %r6,%r9 - 178: b2 63 00 69 [ ]*cmpsc %r6,%r9 - 17c: f9 58 5f ff af ff [ ]*cp 4095\(6,%r5\),4095\(9,%r10\) - 182: b2 4d 00 69 [ ]*cpya %a6,%a9 - 186: 19 69 [ ]*cr %r6,%r9 - 188: ba 69 5f ff [ ]*cs %r6,%r9,4095\(%r5\) - 18c: b2 30 00 00 [ ]*csch - 190: b2 50 00 69 [ ]*csp %r6,%r9 - 194: b2 57 00 69 [ ]*cuse %r6,%r9 - 198: b2 a7 00 69 [ ]*cutfu %r6,%r9 - 19c: b2 a6 00 69 [ ]*cuutf %r6,%r9 - 1a0: 4f 65 af ff [ ]*cvb %r6,4095\(%r5,%r10\) - 1a4: 4e 65 af ff [ ]*cvd %r6,4095\(%r5,%r10\) - 1a8: b3 49 00 69 [ ]*cxbr %f6,%f9 - 1ac: b3 96 00 69 [ ]*cxfbr %r6,%f9 - 1b0: 5d 65 af ff [ ]*d %r6,4095\(%r5,%r10\) - 1b4: 6d 65 af ff [ ]*dd %f6,4095\(%r5,%r10\) - 1b8: ed 65 af ff 00 1d [ ]*ddb %f6,4095\(%r5,%r10\) - 1be: b3 1d 00 69 [ ]*ddbr %f6,%f9 - 1c2: 2d 69 [ ]*ddr %f6,%f9 - 1c4: 7d 65 af ff [ ]*de %f6,4095\(%r5,%r10\) - 1c8: ed 65 af ff 00 0d [ ]*deb %f6,4095\(%r5,%r10\) - 1ce: b3 0d 00 69 [ ]*debr %f6,%f9 - 1d2: 3d 69 [ ]*der %f6,%f9 - 1d4: 83 69 5f ff [ ]*diag %r6,%r9,4095\(%r5\) - 1d8: b3 5b 9a 65 [ ]*didbr %f6,%f9,%f5,10 - 1dc: b3 53 9a 65 [ ]*diebr %f6,%f9,%f5,10 - 1e0: fd 58 5f ff af ff [ ]*dp 4095\(6,%r5\),4095\(9,%r10\) - 1e6: 1d 69 [ ]*dr %r6,%r9 - 1e8: b3 4d 00 69 [ ]*dxbr %f6,%f9 - 1ec: b2 2d 00 60 [ ]*dxr %f6 - 1f0: b2 4f 00 69 [ ]*ear %r6,%a9 - 1f4: de ff 5f ff af ff [ ]*ed 4095\(256,%r5\),4095\(%r10\) - 1fa: df ff 5f ff af ff [ ]*edmk 4095\(256,%r5\),4095\(%r10\) - 200: b3 8c 00 69 [ ]*efpc %r6,%r9 - 204: b2 26 00 60 [ ]*epar %r6 - 208: b2 49 00 69 [ ]*ereg %r6,%r9 - 20c: b2 27 00 60 [ ]*esar %r6 - 210: b2 4a 00 69 [ ]*esta %r6,%r9 - 214: 44 60 5f ff [ ]*ex %r6,4095\(%r5\) - 218: b3 5f 50 69 [ ]*fidbr %f6,5,%f9 - 21c: b3 57 50 69 [ ]*fiebr %f6,5,%f9 - 220: b3 47 50 69 [ ]*fixbr %f6,5,%f9 - 224: 24 69 [ ]*hdr %f6,%f9 - 226: 34 69 [ ]*her %f6,%f9 - 228: b2 31 00 00 [ ]*hsch - 22c: b2 24 00 60 [ ]*iac %r6 - 230: 43 65 af ff [ ]*ic %r6,4095\(%r5,%r10\) - 234: bf 6a 5f ff [ ]*icm %r6,10,4095\(%r5\) - 238: b2 0b 00 00 [ ]*ipk - 23c: b2 22 00 60 [ ]*ipm %r6 - 240: b2 21 00 69 [ ]*ipte %r6,%r9 - 244: b2 29 00 69 [ ]*iske %r6,%r9 - 248: b2 23 00 69 [ ]*ivsk %r6,%r9 - 24c: a7 f4 00 00 [ ]*j 24c - 250: a7 84 00 00 [ ]*je 250 - 254: a7 24 00 00 [ ]*jh 254 - 258: a7 a4 00 00 [ ]*jhe 258 - 25c: a7 44 00 00 [ ]*jl 25c - 260: a7 c4 00 00 [ ]*jle 260 - 264: a7 64 00 00 [ ]*jlh 264 - 268: a7 44 00 00 [ ]*jl 268 - 26c: a7 74 00 00 [ ]*jne 26c - 270: a7 54 00 00 [ ]*jnhe 270 - 274: a7 b4 00 00 [ ]*jnl 274 - 278: a7 34 00 00 [ ]*jnle 278 - 27c: a7 94 00 00 [ ]*jnlh 27c - 280: a7 b4 00 00 [ ]*jnl 280 - 284: a7 e4 00 00 [ ]*jno 284 - 288: a7 d4 00 00 [ ]*jnh 288 - 28c: a7 74 00 00 [ ]*jne 28c - 290: a7 14 00 00 [ ]*jo 290 - 294: a7 24 00 00 [ ]*jh 294 - 298: a7 84 00 00 [ ]*je 298 - 29c: ed 65 af ff 00 18 [ ]*kdb %f6,4095\(%r5,%r10\) - 2a2: b3 18 00 69 [ ]*kdbr %f6,%f9 - 2a6: ed 65 af ff 00 08 [ ]*keb %f6,4095\(%r5,%r10\) - 2ac: b3 08 00 69 [ ]*kebr %f6,%f9 - 2b0: b3 48 00 69 [ ]*kxbr %f6,%f9 - 2b4: 58 65 af ff [ ]*l %r6,4095\(%r5,%r10\) - 2b8: 41 65 af ff [ ]*la %r6,4095\(%r5,%r10\) - 2bc: 51 65 af ff [ ]*lae %r6,4095\(%r5,%r10\) - 2c0: 9a 69 5f ff [ ]*lam %a6,%a9,4095\(%r5\) - 2c4: e5 00 5f ff af ff [ ]*lasp 4095\(%r5\),4095\(%r10\) - 2ca: b3 13 00 69 [ ]*lcdbr %f6,%f9 - 2ce: 23 69 [ ]*lcdr %f6,%f9 - 2d0: b3 03 00 69 [ ]*lcebr %f6,%f9 - 2d4: 33 69 [ ]*lcer %f6,%f9 - 2d6: 13 69 [ ]*lcr %r6,%r9 - 2d8: b7 69 5f ff [ ]*lctl %c6,%c9,4095\(%r5\) - 2dc: b3 43 00 69 [ ]*lcxbr %f6,%f9 - 2e0: 68 60 5f ff [ ]*ld %f6,4095\(%r5\) - 2e4: ed 60 5f ff 00 04 [ ]*ldeb %f6,4095\(%r5\) - 2ea: b3 04 00 69 [ ]*ldebr %f6,%f9 - 2ee: 28 69 [ ]*ldr %f6,%f9 - 2f0: b3 45 00 69 [ ]*ldxbr %f6,%f9 - 2f4: 78 60 5f ff [ ]*le %f6,4095\(%r5\) - 2f8: b3 44 00 69 [ ]*ledbr %f6,%f9 - 2fc: 38 69 [ ]*ler %f6,%f9 - 2fe: b3 46 00 69 [ ]*lexbr %f6,%f9 - 302: b2 9d 5f ff [ ]*lfpc 4095\(%r5\) - 306: 48 60 5f ff [ ]*lh %r6,4095\(%r5\) - 30a: a7 68 80 01 [ ]*lhi %r6,-32767 - 30e: 98 69 5f ff [ ]*lm %r6,%r9,4095\(%r5\) - 312: b3 11 00 69 [ ]*lndbr %f6,%f9 - 316: 21 69 [ ]*lndr %f6,%f9 - 318: b3 01 00 69 [ ]*lnebr %f6,%f9 - 31c: 31 69 [ ]*lner %f6,%f9 - 31e: 11 69 [ ]*lnr %r6,%r9 - 320: b3 41 00 69 [ ]*lnxbr %f6,%f9 - 324: b3 10 00 69 [ ]*lpdbr %f6,%f9 - 328: 20 69 [ ]*lpdr %f6,%f9 - 32a: b3 00 00 69 [ ]*lpebr %f6,%f9 - 32e: 30 69 [ ]*lper %f6,%f9 - 330: 10 69 [ ]*lpr %r6,%r9 - 332: 82 00 5f ff [ ]*lpsw 4095\(%r5\) - 336: b3 40 00 69 [ ]*lpxbr %f6,%f9 - 33a: 18 69 [ ]*lr %r6,%r9 - 33c: b1 65 af ff [ ]*lra %r6,4095\(%r5,%r10\) - 340: 25 69 [ ]*lrdr %f6,%f9 - 342: 35 69 [ ]*lrer %f6,%f9 - 344: b3 12 00 69 [ ]*ltdbr %f6,%f9 - 348: 22 69 [ ]*ltdr %f6,%f9 - 34a: b3 02 00 69 [ ]*ltebr %f6,%f9 - 34e: 32 69 [ ]*lter %f6,%f9 - 350: 12 69 [ ]*ltr %r6,%r9 - 352: b3 42 00 69 [ ]*ltxbr %f6,%f9 - 356: b2 4b 00 69 [ ]*lura %r6,%r9 - 35a: ed 65 af ff 00 05 [ ]*lxdb %f6,4095\(%r5,%r10\) - 360: b3 05 00 69 [ ]*lxdbr %f6,%f9 - 364: ed 65 af ff 00 06 [ ]*lxeb %f6,4095\(%r5,%r10\) - 36a: b3 06 00 69 [ ]*lxebr %f6,%f9 - 36e: 5c 65 af ff [ ]*m %r6,4095\(%r5,%r10\) - 372: ed 95 af ff 60 1e [ ]*madb %f6,%f9,4095\(%r5,%r10\) - 378: b3 1e 60 95 [ ]*madbr %f6,%f9,%f5 - 37c: ed 95 af ff 60 0e [ ]*maeb %f6,%f9,4095\(%r5,%r10\) - 382: b3 0e 60 95 [ ]*maebr %f6,%f9,%f5 - 386: af 06 5f ff [ ]*mc 4095\(%r5\),6 - 38a: 6c 65 af ff [ ]*md %f6,4095\(%r5,%r10\) - 38e: ed 65 af ff 00 1c [ ]*mdb %f6,4095\(%r5,%r10\) - 394: b3 1c 00 69 [ ]*mdbr %f6,%f9 - 398: ed 65 af ff 00 0c [ ]*mdeb %f6,4095\(%r5,%r10\) - 39e: b3 0c 00 69 [ ]*mdebr %f6,%f9 - 3a2: 2c 69 [ ]*mdr %f6,%f9 - 3a4: 7c 65 af ff [ ]*me %f6,4095\(%r5,%r10\) - 3a8: ed 65 af ff 00 17 [ ]*meeb %f6,4095\(%r5,%r10\) - 3ae: b3 17 00 69 [ ]*meebr %f6,%f9 - 3b2: 3c 69 [ ]*mer %f6,%f9 - 3b4: 4c 65 af ff [ ]*mh %r6,4095\(%r5,%r10\) - 3b8: a7 6c 80 01 [ ]*mhi %r6,-32767 - 3bc: fc ff 5f ff af ff [ ]*mp 4095\(16,%r5\),4095\(16,%r10\) - 3c2: 1c 69 [ ]*mr %r6,%r9 - 3c4: 71 65 af ff [ ]*ms %r6,4095\(%r5,%r10\) - 3c8: b2 32 5f ff [ ]*msch 4095\(%r5\) - 3cc: ed 95 af ff 60 1f [ ]*msdb %f6,%f9,4095\(%r5,%r10\) - 3d2: b3 1f 60 95 [ ]*msdbr %f6,%f9,%f5 - 3d6: ed 95 af ff 60 0f [ ]*mseb %f6,%f9,4095\(%r5,%r10\) - 3dc: b3 0f 60 95 [ ]*msebr %f6,%f9,%f5 - 3e0: b2 52 00 69 [ ]*msr %r6,%r9 - 3e4: b2 47 00 60 [ ]*msta %r6 - 3e8: d2 ff 5f ff af ff [ ]*mvc 4095\(256,%r5\),4095\(%r10\) - 3ee: e5 0f 5f ff af ff [ ]*mvcdk 4095\(%r5\),4095\(%r10\) - 3f4: e8 ff 5f ff af ff [ ]*mvcin 4095\(256,%r5\),4095\(%r10\) - 3fa: d9 69 5f ff af ff [ ]*mvck 4095\(%r6,%r5\),4095\(%r10\),%r9 - 400: 0e 69 [ ]*mvcl %r6,%r9 - 402: a8 69 00 0a [ ]*mvcle %r6,%r9,10 - 406: da 69 5f ff af ff [ ]*mvcp 4095\(%r6,%r5\),4095\(%r10\),%r9 - 40c: db 69 5f ff af ff [ ]*mvcs 4095\(%r6,%r5\),4095\(%r10\),%r9 - 412: e5 0e 5f ff af ff [ ]*mvcsk 4095\(%r5\),4095\(%r10\) - 418: 92 ff 5f ff [ ]*mvi 4095\(%r5\),255 - 41c: d1 ff 5f ff af ff [ ]*mvn 4095\(256,%r5\),4095\(%r10\) - 422: f1 ff 5f ff af ff [ ]*mvo 4095\(16,%r5\),4095\(16,%r10\) - 428: b2 54 00 69 [ ]*mvpg %r6,%r9 - 42c: b2 55 00 69 [ ]*mvst %r6,%r9 - 430: d3 ff 5f ff af ff [ ]*mvz 4095\(256,%r5\),4095\(%r10\) - 436: b3 4c 00 69 [ ]*mxbr %f6,%f9 - 43a: 67 65 af ff [ ]*mxd %f6,4095\(%r5,%r10\) - 43e: ed 65 af ff 00 07 [ ]*mxdb %f6,4095\(%r5,%r10\) - 444: b3 07 00 69 [ ]*mxdbr %f6,%f9 - 448: 27 69 [ ]*mxdr %f6,%f9 - 44a: 26 69 [ ]*mxr %f6,%f9 - 44c: 54 65 af ff [ ]*n %r6,4095\(%r5,%r10\) - 450: d4 ff 5f ff af ff [ ]*nc 4095\(256,%r5\),4095\(%r10\) - 456: 94 ff 5f ff [ ]*ni 4095\(%r5\),255 - 45a: 47 05 af ff [ ]*bc 0,4095\(%r5,%r10\) - 45e: 07 06 [ ]*bcr 0,%r6 - 460: 14 69 [ ]*nr %r6,%r9 - 462: 56 65 af ff [ ]*o %r6,4095\(%r5,%r10\) - 466: d6 ff 5f ff af ff [ ]*oc 4095\(256,%r5\),4095\(%r10\) - 46c: 96 ff 5f ff [ ]*oi 4095\(%r5\),255 - 470: 16 69 [ ]*or %r6,%r9 - 472: f2 ff 5f ff af ff [ ]*pack 4095\(16,%r5\),4095\(16,%r10\) - 478: b2 48 00 00 [ ]*palb - 47c: b2 18 5f ff [ ]*pc 4095\(%r5\) - 480: ee 69 5f ff af ff [ ]*plo %r6,4095\(%r5\),%r9,4095\(%r10\) - 486: 01 01 [ ]*pr - 488: b2 28 00 69 [ ]*pt %r6,%r9 - 48c: b2 0d 00 00 [ ]*ptlb - 490: b2 3b 00 00 [ ]*rchp - 494: b2 77 5f ff [ ]*rp 4095\(%r5\) - 498: b2 2a 00 69 [ ]*rrbe %r6,%r9 - 49c: b2 38 00 00 [ ]*rsch - 4a0: 5b 65 af ff [ ]*s %r6,4095\(%r5,%r10\) - 4a4: b2 19 5f ff [ ]*sac 4095\(%r5\) - 4a8: b2 79 5f ff [ ]*sacf 4095\(%r5\) - 4ac: b2 37 00 00 [ ]*sal - 4b0: b2 4e 00 69 [ ]*sar %a6,%r9 - 4b4: b2 3c 00 00 [ ]*schm - 4b8: b2 04 5f ff [ ]*sck 4095\(%r5\) - 4bc: b2 06 5f ff [ ]*sckc 4095\(%r5\) - 4c0: 01 07 [ ]*sckpf - 4c2: 6b 65 af ff [ ]*sd %f6,4095\(%r5,%r10\) - 4c6: ed 65 af ff 00 1b [ ]*sdb %f6,4095\(%r5,%r10\) - 4cc: b3 1b 00 69 [ ]*sdbr %f6,%f9 - 4d0: 2b 69 [ ]*sdr %f6,%f9 - 4d2: 7b 65 af ff [ ]*se %f6,4095\(%r5,%r10\) - 4d6: ed 65 af ff 00 0b [ ]*seb %f6,4095\(%r5,%r10\) - 4dc: b3 0b 00 69 [ ]*sebr %f6,%f9 - 4e0: 3b 69 [ ]*ser %f6,%f9 - 4e2: b3 84 00 69 [ ]*sfpc %r6,%r9 - 4e6: 4b 65 af ff [ ]*sh %r6,4095\(%r5,%r10\) - 4ea: b2 14 5f ff [ ]*sie 4095\(%r5\) - 4ee: b2 74 5f ff [ ]*siga 4095\(%r5\) - 4f2: ae 69 5f ff [ ]*sigp %r6,%r9,4095\(%r5\) - 4f6: 5f 65 af ff [ ]*sl %r6,4095\(%r5,%r10\) - 4fa: 8b 60 5f ff [ ]*sla %r6,4095\(%r5\) - 4fe: 8f 60 5f ff [ ]*slda %r6,4095\(%r5\) - 502: 8d 60 5f ff [ ]*sldl %r6,4095\(%r5\) - 506: 89 60 5f ff [ ]*sll %r6,4095\(%r5\) - 50a: 1f 69 [ ]*slr %r6,%r9 - 50c: fb ff 5f ff af ff [ ]*sp 4095\(16,%r5\),4095\(16,%r10\) - 512: b2 0a 5f ff [ ]*spka 4095\(%r5\) - 516: 04 60 [ ]*spm %r6 - 518: b2 08 5f ff [ ]*spt 4095\(%r5\) - 51c: b2 10 5f ff [ ]*spx 4095\(%r5\) - 520: ed 65 af ff 00 15 [ ]*sqdb %f6,4095\(%r5,%r10\) - 526: b3 15 00 69 [ ]*sqdbr %f6,%f9 - 52a: b2 44 00 60 [ ]*sqdr %f6 - 52e: ed 65 af ff 00 14 [ ]*sqeb %f6,4095\(%r5,%r10\) - 534: b3 14 00 69 [ ]*sqebr %f6,%f9 - 538: b2 45 00 60 [ ]*sqer %f6 - 53c: b3 16 00 69 [ ]*sqxbr %f6,%f9 - 540: 1b 69 [ ]*sr %r6,%r9 - 542: 8a 60 5f ff [ ]*sra %r6,4095\(%r5\) - 546: 8e 60 5f ff [ ]*srda %r6,4095\(%r5\) - 54a: 8c 60 5f ff [ ]*srdl %r6,4095\(%r5\) - 54e: 88 60 5f ff [ ]*srl %r6,4095\(%r5\) - 552: b2 99 5f ff [ ]*srnm 4095\(%r5\) - 556: f0 fa 5f ff af ff [ ]*srp 4095\(16,%r5\),4095\(%r10\),10 - 55c: b2 5e 00 69 [ ]*srst %r6,%r9 - 560: b2 25 00 60 [ ]*ssar %r6 - 564: b2 33 5f ff [ ]*ssch 4095\(%r5\) - 568: b2 2b 00 69 [ ]*sske %r6,%r9 - 56c: 80 00 5f ff [ ]*ssm 4095\(%r5\) - 570: 50 65 af ff [ ]*st %r6,4095\(%r5,%r10\) - 574: 9b 69 5f ff [ ]*stam %a6,%a9,4095\(%r5\) - 578: b2 12 5f ff [ ]*stap 4095\(%r5\) - 57c: 42 65 af ff [ ]*stc %r6,4095\(%r5,%r10\) - 580: b2 05 5f ff [ ]*stck 4095\(%r5\) - 584: b2 07 5f ff [ ]*stckc 4095\(%r5\) - 588: be 6f 5f ff [ ]*stcm %r6,15,4095\(%r5\) - 58c: b2 3a 5f ff [ ]*stcps 4095\(%r5\) - 590: b2 39 5f ff [ ]*stcrw 4095\(%r5\) - 594: b6 69 5f ff [ ]*stctl %c6,%c9,4095\(%r5\) - 598: 60 65 af ff [ ]*std %f6,4095\(%r5,%r10\) - 59c: 70 65 af ff [ ]*ste %f6,4095\(%r5,%r10\) - 5a0: b2 9c 5f ff [ ]*stfpc 4095\(%r5\) - 5a4: 40 65 af ff [ ]*sth %r6,4095\(%r5,%r10\) - 5a8: b2 02 5f ff [ ]*stidp 4095\(%r5\) - 5ac: 90 69 5f ff [ ]*stm %r6,%r9,4095\(%r5\) - 5b0: ac ff 5f ff [ ]*stnsm 4095\(%r5\),255 - 5b4: ad ff 5f ff [ ]*stosm 4095\(%r5\),255 - 5b8: b2 09 5f ff [ ]*stpt 4095\(%r5\) - 5bc: b2 11 5f ff [ ]*stpx 4095\(%r5\) - 5c0: b2 34 5f ff [ ]*stsch 4095\(%r5\) - 5c4: b2 7d 5f ff [ ]*stsi 4095\(%r5\) - 5c8: b2 46 00 69 [ ]*stura %r6,%r9 - 5cc: 7f 65 af ff [ ]*su %f6,4095\(%r5,%r10\) - 5d0: 3f 69 [ ]*sur %f6,%f9 - 5d2: 0a ff [ ]*svc 255 - 5d4: 6f 65 af ff [ ]*sw %f6,4095\(%r5,%r10\) - 5d8: 2f 69 [ ]*swr %f6,%f9 - 5da: b3 4b 00 69 [ ]*sxbr %f6,%f9 - 5de: 37 69 [ ]*sxr %f6,%f9 - 5e0: b2 4c 00 69 [ ]*tar %a6,%r9 - 5e4: b2 2c 00 06 [ ]*tb %r6 - 5e8: ed 65 af ff 00 11 [ ]*tcdb %f6,4095\(%r5,%r10\) - 5ee: ed 65 af ff 00 10 [ ]*tceb %f6,4095\(%r5,%r10\) - 5f4: ed 65 af ff 00 12 [ ]*tcxb %f6,4095\(%r5,%r10\) - 5fa: 91 ff 5f ff [ ]*tm 4095\(%r5\),255 - 5fe: a7 60 ff ff [ ]*tmh %r6,65535 - 602: a7 61 ff ff [ ]*tml %r6,65535 - 606: b2 36 5f ff [ ]*tpi 4095\(%r5\) - 60a: e5 01 5f ff af ff [ ]*tprot 4095\(%r5\),4095\(%r10\) - 610: dc ff 5f ff af ff [ ]*tr 4095\(256,%r5\),4095\(%r10\) - 616: 99 69 5f ff [ ]*trace %r6,%r9,4095\(%r5\) - 61a: 01 ff [ ]*trap2 - 61c: b2 ff 5f ff [ ]*trap4 4095\(%r5\) - 620: dd ff 5f ff af ff [ ]*trt 4095\(256,%r5\),4095\(%r10\) - 626: 93 00 5f ff [ ]*ts 4095\(%r5\) - 62a: b2 35 5f ff [ ]*tsch 4095\(%r5\) - 62e: f3 ff 5f ff af ff [ ]*unpk 4095\(16,%r5\),4095\(16,%r10\) - 634: 01 02 [ ]*upt - 636: 57 65 af ff [ ]*x %r6,4095\(%r5,%r10\) - 63a: d7 ff 5f ff af ff [ ]*xc 4095\(256,%r5\),4095\(%r10\) - 640: 97 ff 5f ff [ ]*xi 4095\(%r5\),255 - 644: 17 69 [ ]*xr %r6,%r9 - 646: f8 ff 5f ff af ff [ ]*zap 4095\(16,%r5\),4095\(16,%r10\) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/opcode.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/opcode.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/opcode.s 2001-10-01 15:25:25.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/opcode.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,419 +0,0 @@ -.text -foo: - a %r6,4095(%r5,%r10) - ad %f6,4095(%r5,%r10) - adb %f6,4095(%r5,%r10) - adbr %f6,%f9 - adr %f6,%f9 - ae %f6,4095(%r5,%r10) - aeb %f6,4095(%r5,%r10) - aebr %f6,%f9 - aer %f6,%f9 - ah %r6,4095(%r5,%r10) - ahi %r6,-32767 - al %r6,4095(%r5,%r10) - alr %r6,%r9 - ap 4095(6,%r5),4095(9,%r10) - ar %r6,%r9 - au %f6,4095(%r5,%r10) - aur %f6,%f9 - aw %f6,4095(%r5,%r10) - awr %f6,%f9 - axbr %f6,%f9 - axr %f6,%f9 - b 4095(%r5,%r10) - bakr %r6,%r9 - bal %r6,4095(%r5,%r10) - balr %r6,%r9 - bas %r6,4095(%r5,%r10) - basr %r6,%r9 - bassm %r6,%r9 - bc 6,4095(%r5,%r10) - bcr 6,%r9 - bct %r6,4095(%r5,%r10) - bctr %r6,%r9 - be 4095(%r5,%r10) - ber %r9 - bh 4095(%r5,%r10) - bhe 4095(%r5,%r10) - bher %r9 - bhr %r9 - bl 4095(%r5,%r10) - ble 4095(%r5,%r10) - bler %r9 - blh 4095(%r5,%r10) - blhr %r9 - blr %r9 - bm 4095(%r5,%r10) - bmr %r9 - bne 4095(%r5,%r10) - bner %r9 - bnh 4095(%r5,%r10) - bnhe 4095(%r5,%r10) - bnher %r9 - bnhr %r9 - bnl 4095(%r5,%r10) - bnle 4095(%r5,%r10) - bnler %r9 - bnlh 4095(%r5,%r10) - bnlhr %r9 - bnlr %r9 - bnm 4095(%r5,%r10) - bnmr %r9 - bno 4095(%r5,%r10) - bnor %r9 - bnp 4095(%r5,%r10) - bnpr %r9 - bnz 4095(%r5,%r10) - bnzr %r9 - bo 4095(%r5,%r10) - bor %r9 - bp 4095(%r5,%r10) - bpr %r9 - br %r9 - bras %r9,. - brc 6,. - brct 6,. - brxh %r6,%r9,. - brxle %r6,%r9,. - bsa %r6,%r9 - bsg %r6,%r9 - bsm %r6,%r9 - bxh %r6,%r9,4095(%r5) - bxle %r6,%r9,4095(%r5) - bz 4095(%r5,%r10) - bzr %r9 - c %r6,4095(%r5,%r10) - cd %f6,4095(%r5,%r10) - cdb %f6,4095(%r5,%r10) - cdbr %f6,%f9 - cdfbr %r6,%f9 - cdr %f6,%f9 - cds %r6,%r9,4095(%r5) - ce %f6,4095(%r5,%r10) - ceb %f6,4095(%r5,%r10) - cebr %f6,%f9 - cefbr %r6,%f9 - cer %f6,%f9 - cfc 4095(%r5) - cfdbr %f6,5,%r9 - cfebr %f6,5,%r9 - cfxbr %f6,5,%r9 - ch %r6,4095(%r5,%r10) - chi %r6,-32767 - cksm %r6,%r9 - cl %r6,4095(%r5,%r10) - clc 4095(256,%r5),4095(%r10) - clcl %r6,%r9 - clcle %r6,%r9,10 - cli 4095(%r5),255 - clm %r6,10,4095(%r5) - clr %r6,%r9 - clst %r6,%r9 - cmpsc %r6,%r9 - cp 4095(6,%r5),4095(9,%r10) - cpya %a6,%a9 - cr %r6,%r9 - cs %r6,%r9,4095(%r5) - csch - csp %r6,%r9 - cuse %r6,%r9 - cutfu %r6,%r9 - cuutf %r6,%r9 - cvb %r6,4095(%r5,%r10) - cvd %r6,4095(%r5,%r10) - cxbr %f6,%f9 - cxfbr %r6,%f9 - d %r6,4095(%r5,%r10) - dd %f6,4095(%r5,%r10) - ddb %f6,4095(%r5,%r10) - ddbr %f6,%f9 - ddr %f6,%f9 - de %f6,4095(%r5,%r10) - deb %f6,4095(%r5,%r10) - debr %f6,%f9 - der %f6,%f9 - diag %r6,%r9,4095(%r5) - didbr %f6,%r9,%r5,10 - diebr %f6,%r9,%r5,10 - dp 4095(6,%r5),4095(9,%r10) - dr %r6,%r9 - dxbr %f6,%f9 - dxr %f6 - ear %r6,%a9 - ed 4095(256,%r5),4095(%r10) - edmk 4095(256,%r5),4095(%r10) - efpc %r6,%r9 - epar %r6 - ereg %r6,%r9 - esar %r6 - esta %r6,%r9 - ex %r6,4095(%r5) - fidbr %r6,5,%r9 - fiebr %r6,5,%r9 - fixbr %r6,5,%r9 - hdr %f6,%f9 - her %f6,%f9 - hsch - iac %r6 - ic %r6,4095(%r5,%r10) - icm %r6,10,4095(%r5) - ipk - ipm %r6 - ipte %r6,%r9 - iske %r6,%r9 - ivsk %r6,%r9 - j . - je . - jh . - jhe . - jl . - jle . - jlh . - jm . - jne . - jnhe . - jnl . - jnle . - jnlh . - jnm . - jno . - jnp . - jnz . - jo . - jp . - jz . - kdb %f6,4095(%r5,%r10) - kdbr %f6,%f9 - keb %f6,4095(%r5,%r10) - kebr %f6,%f9 - kxbr %f6,%f9 - l %r6,4095(%r5,%r10) - la %r6,4095(%r5,%r10) - lae %r6,4095(%r5,%r10) - lam %a6,%a9,4095(%r5) - lasp 4095(%r5),4095(%r10) - lcdbr %f6,%f9 - lcdr %f6,%f9 - lcebr %f6,%f9 - lcer %f6,%f9 - lcr %r6,%r9 - lctl %c6,%c9,4095(%r5) - lcxbr %f6,%f9 - ld %f6,4095(%r5) - ldeb %f6,4095(%r5) - ldebr %f6,%f9 - ldr %f6,%f9 - ldxbr %f6,%f9 - le %f6,4095(%r5) - ledbr %f6,%f9 - ler %f6,%f9 - lexbr %f6,%f9 - lfpc 4095(%r5) - lh %r6,4095(%r5) - lhi %r6,-32767 - lm %r6,%r9,4095(%r5) - lndbr %f6,%f9 - lndr %f6,%f9 - lnebr %f6,%f9 - lner %f6,%f9 - lnr %r6,%r9 - lnxbr %f6,%f9 - lpdbr %f6,%f9 - lpdr %f6,%f9 - lpebr %f6,%f9 - lper %f6,%f9 - lpr %r6,%r9 - lpsw 4095(%r5) - lpxbr %f6,%f9 - lr %r6,%r9 - lra %r6,4095(%r5,%r10) - lrdr %f6,%f9 - lrer %f6,%f9 - ltdbr %f6,%f9 - ltdr %f6,%f9 - ltebr %f6,%f9 - lter %f6,%f9 - ltr %r6,%r9 - ltxbr %f6,%f9 - lura %r6,%r9 - lxdb %f6,4095(%r5,%r10) - lxdbr %f6,%f9 - lxeb %f6,4095(%r5,%r10) - lxebr %f6,%f9 - m %r6,4095(%r5,%r10) - madb %f6,%f9,4095(%r5,%r10) - madbr %f6,%f9,%f5 - maeb %f6,%f9,4095(%r5,%r10) - maebr %f6,%f9,%f5 - mc 4095(%r5),6 - md %f6,4095(%r5,%r10) - mdb %f6,4095(%f5,%f10) - mdbr %f6,%f9 - mdeb %f6,4095(%f5,%f10) - mdebr %f6,%f9 - mdr %f6,%f9 - me %f6,4095(%r5,%r10) - meeb %f6,4095(%r5,%r10) - meebr %f6,%f9 - mer %f6,%f9 - mh %r6,4095(%r5,%r10) - mhi %r6,-32767 - mp 4095(16,%r5),4095(16,%r10) - mr %r6,%r9 - ms %r6,4095(%r5,%r10) - msch 4095(%r5) - msdb %f6,%f9,4095(%r5,%r10) - msdbr %f6,%f9,%f5 - mseb %f6,%f9,4095(%r5,%r10) - msebr %f6,%f9,%f5 - msr %r6,%r9 - msta %r6 - mvc 4095(256,%r5),4095(%r10) - mvcdk 4095(%r5),4095(%r10) - mvcin 4095(256,%r5),4095(%r10) - mvck 4095(%r6,%r5),4095(%r10),%r9 - mvcl %r6,%r9 - mvcle %r6,%r9,10 - mvcp 4095(%r6,%r5),4095(%r10),%r9 - mvcs 4095(%r6,%r5),4095(%r10),%r9 - mvcsk 4095(%r5),4095(%r10) - mvi 4095(%r5),255 - mvn 4095(256,%r5),4095(%r10) - mvo 4095(16,%r5),4095(16,%r10) - mvpg %r6,%r9 - mvst %r6,%r9 - mvz 4095(256,%r5),4095(%r10) - mxbr %f6,%f9 - mxd %f6,4095(%r5,%r10) - mxdb %f6,4095(%r5,%r10) - mxdbr %f6,%f9 - mxdr %r6,%r9 - mxr %r6,%r9 - n %r6,4095(%r5,%r10) - nc 4095(256,%r5),4095(%r10) - ni 4095(%r5),255 - nop 4095(%r5,%r10) - nopr %r6 - nr %r6,%r9 - o %r6,4095(%r5,%r10) - oc 4095(256,%r5),4095(%r10) - oi 4095(%r5),255 - or %r6,%r9 - pack 4095(16,%r5),4095(16,%r10) - palb - pc 4095(%r5) - plo %r6,4095(%r5),%r9,4095(%r10) - pr - pt %r6,%r9 - ptlb - rchp - rp 4095(%r5) - rrbe %r6,%r9 - rsch - s %r6,4095(%r5,%r10) - sac 4095(%r5) - sacf 4095(%r5) - sal - sar %a6,%r9 - schm - sck 4095(%r5) - sckc 4095(%r5) - sckpf - sd %f6,4095(%r5,%r10) - sdb %f6,4095(%r5,%r10) - sdbr %f6,%f9 - sdr %f6,%f9 - se %f6,4095(%r5,%r10) - seb %f6,4095(%r5,%r10) - sebr %f6,%f9 - ser %r6,%r9 - sfpc %r6,%r9 - sh %r6,4095(%r5,%r10) - sie 4095(%r5) - siga 4095(%r5) - sigp %r6,%r9,4095(%r5) - sl %r6,4095(%r5,%r10) - sla %r6,4095(%r5) - slda %r6,4095(%r5) - sldl %r6,4095(%r5) - sll %r6,4095(%r5) - slr %r6,%r9 - sp 4095(16,%r5),4095(16,%r10) - spka 4095(%r5) - spm %r6 - spt 4095(%r5) - spx 4095(%r5) - sqdb %f6,4095(%r5,%r10) - sqdbr %f6,%f9 - sqdr %f6 - sqeb %f6,4095(%r5,%r10) - sqebr %f6,%f9 - sqer %f6 - sqxbr %f6,%f9 - sr %r6,%r9 - sra %r6,4095(%r5) - srda %r6,4095(%r5) - srdl %r6,4095(%r5) - srl %r6,4095(%r5) - srnm 4095(%r5) - srp 4095(16,%r5),4095(%r10),10 - srst %r6,%r9 - ssar %r6 - ssch 4095(%r5) - sske %r6,%r9 - ssm 4095(%r5) - st %r6,4095(%r5,%r10) - stam %a6,%a9,4095(%r5) - stap 4095(%r5) - stc %r6,4095(%r5,%r10) - stck 4095(%r5) - stckc 4095(%r5) - stcm %r6,15,4095(%r5) - stcps 4095(%r5) - stcrw 4095(%r5) - stctl %c6,%c9,4095(%r5) - std %f6,4095(%r5,%r10) - ste %f6,4095(%r5,%r10) - stfpc 4095(%r5) - sth %r6,4095(%r5,%r10) - stidp 4095(%r5) - stm %r6,%r9,4095(%r5) - stnsm 4095(%r5),255 - stosm 4095(%r5),255 - stpt 4095(%r5) - stpx 4095(%r5) - stsch 4095(%r5) - stsi 4095(%r5) - stura %r6,%r9 - su %f6,4095(%r5,%r10) - sur %r6,%r9 - svc 255 - sw %f6,4095(%r5,%r10) - swr %f6,%f9 - sxbr %f6,%f9 - sxr %r6,%r9 - tar %a6,%r9 - tb %r6 - tcdb %f6,4095(%r5,%r10) - tceb %f6,4095(%r5,%r10) - tcxb %f6,4095(%r5,%r10) - tm 4095(%r5),255 - tmh %r6,65535 - tml %r6,65535 - tpi 4095(%r5) - tprot 4095(%r5),4095(%r10) - tr 4095(256,%r5),4095(%r10) - trace %r6,%r9,4095(%r5) - trap2 - trap4 4095(%r5) - trt 4095(256,%r5),4095(%r10) - ts 4095(%r5) - tsch 4095(%r5) - unpk 4095(16,%r5),4095(16,%r10) - upt - x %r6,4095(%r5,%r10) - xc 4095(256,%r5),4095(%r10) - xi 4095(%r5),255 - xr %r6,%r9 - zap 4095(16,%r5),4095(16,%r10) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/reloc64.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/reloc64.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/reloc64.d 2003-03-19 09:19:16.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/reloc64.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,32 +0,0 @@ -#name: s390x reloc -#objdump: -dr - -.*: +file format .* - -Disassembly of section .text: - -.* : - 0: c0 e5 00 00 00 00 [ ]*brasl %r14,0 -[ ]*2: R_390_PC32DBL test_R_390_PC32DBL\+0x2 - 6: c0 e5 00 00 00 00 [ ]*brasl %r14,6 -[ ]*8: R_390_PC32DBL test_R_390_PLT32DBL\+0x2 -[ ]*... -[ ]*c: R_390_64 test_R_390_64 -[ ]*14: R_390_PC64 test_R_390_PC64\+0x14 -[ ]*1c: R_390_GOT64 test_R_390_GOT64 -[ ]*24: R_390_PLT64 test_R_390_PLT64 - 2c: c0 10 00 00 00 00 [ ]*larl %r1,2c -[ ]*2e: R_390_GOTENT test_R_390_GOTENT\+0x2 -[ ]*... -[ ]*32: R_390_GOTOFF64 test_R_390_GOTOFF64 -[ ]*3a: R_390_PLTOFF64 test_R_390_PLTOFF64 -[ ]*42: R_390_GOTPLT64 test_R_390_GOTPLT64 - 4a: c0 10 00 00 00 00 [ ]*larl %r1,4a -[ ]*4c: R_390_GOTPLTENT test_R_390_GOTPLTENT\+0x2 - -.* : - 50: c0 e5 00 00 00 00 [ ]*brasl %r14,50 -[ ]*52: R_390_PLT32DBL foo\+0x2 -[ ]*... -[ ]*56: R_390_PLT64 foo\+0x6 - 5e: 07 07 [ ]*bcr 0,%r7 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/reloc64.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/reloc64.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/reloc64.s 2003-03-19 09:19:16.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/reloc64.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,18 +0,0 @@ - .text - .globl foo -foo: - brasl %r14,test_R_390_PC32DBL - brasl %r14,test_R_390_PLT32DBL - .quad test_R_390_64 - .quad test_R_390_PC64-foo - .quad test_R_390_GOT64@GOT - .quad test_R_390_PLT64@PLT - larl %r1,test_R_390_GOTENT@GOT - .quad test_R_390_GOTOFF64@GOTOFF - .quad test_R_390_PLTOFF64@PLTOFF - .quad test_R_390_GOTPLT64@GOTPLT - larl %r1,test_R_390_GOTPLTENT@GOTPLT - -bar: - brasl %r14,foo@PLT - .quad foo@PLT-bar diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/reloc.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/reloc.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/reloc.d 2003-03-19 09:19:16.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/reloc.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,51 +0,0 @@ -#name: s390 reloc -#objdump: -dr - -.*: +file format .* - -Disassembly of section .text: - -.* : - 0: d2 00 10 00 20 00 [ ]*mvc 0\(1,%r1\),0\(%r2\) -[ ]*1: R_390_8 test_R_390_8 - 6: 58 01 20 00 [ ]*l %r0,0\(%r1,%r2\) -[ ]*8: R_390_12 test_R_390_12 - a: a7 08 00 00 [ ]*lhi %r0,0 -[ ]*c: R_390_16 test_R_390_16 -[ ]*... -[ ]*e: R_390_32 test_R_390_32 -[ ]*12: R_390_PC32 test_R_390_PC32\+0x12 - 16: 58 01 20 00 [ ]*l %r0,0\(%r1,%r2\) -[ ]*18: R_390_GOT12 test_R_390_GOT12 -[ ]*... -[ ]*1a: R_390_GOT32 test_R_390_GOT32 -[ ]*1e: R_390_PLT32 test_R_390_PLT32 - 22: a7 08 00 00 [ ]*lhi %r0,0 -[ ]*24: R_390_GOT16 test_R_390_GOT16 - 26: a7 08 00 00 [ ]*lhi %r0,0 -[ ]*28: R_390_16 test_R_390_PC16\+0x26 - 2a: a7 e5 00 00 [ ]*bras %r14,2a -[ ]*2c: R_390_PC16DBL test_R_390_PC16DBL\+0x2 - 2e: a7 e5 00 00 [ ]*bras %r14,2e -[ ]*30: R_390_PC16DBL test_R_390_PLT16DBL\+0x2 - 32: a7 08 00 00 [ ]*lhi %r0,0 -[ ]*34: R_390_GOTOFF16 test_R_390_GOTOFF16 - 36: 00 00 00 00 [ ]*.long 0x00000000 -[ ]*36: R_390_GOTOFF32 test_R_390_GOTOFF32 - 3a: a7 08 00 00 [ ]*lhi %r0,0 -[ ]*3c: R_390_PLTOFF16 test_R_390_PLTOFF16 - 3e: 00 00 00 00 [ ]*.long 0x00000000 -[ ]*3e: R_390_PLTOFF32 test_R_390_PLTOFF32 - 42: 58 01 20 00 [ ]*l %r0,0\(%r1,%r2\) -[ ]*44: R_390_GOTPLT12 test_R_390_GOTPLT12 - 46: a7 08 00 00 [ ]*lhi %r0,0 -[ ]*48: R_390_GOTPLT16 test_R_390_GOTPLT16 - 4a: 00 00 00 00 [ ]*.long 0x00000000 -[ ]*4a: R_390_GOTPLT32 test_R_390_GOTPLT32 - -.* : - 4e: a7 e5 00 00 [ ]*bras %r14,4e -[ ]*50: R_390_PLT16DBL foo\+0x2 - 52: 00 00 00 00 [ ]*.long 0x00000000 -[ ]*52: R_390_PLT32 foo\+0x4 - 56: 07 07 [ ]*bcr 0,%r7 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/reloc.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/reloc.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/reloc.s 2003-03-19 09:19:16.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/reloc.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,26 +0,0 @@ - .text - .globl foo -foo: - mvc 0(test_R_390_8,%r1),0(%r2) - l %r0,test_R_390_12(%r1,%r2) - lhi %r0,test_R_390_16 - .long test_R_390_32 - .long test_R_390_PC32-foo - l %r0,test_R_390_GOT12@GOT(%r1,%r2) - .long test_R_390_GOT32@GOT - .long test_R_390_PLT32@PLT - lhi %r0,test_R_390_GOT16@GOT - lhi %r0,test_R_390_PC16-foo - bras %r14,test_R_390_PC16DBL - bras %r14,test_R_390_PLT16DBL - lhi %r0,test_R_390_GOTOFF16@GOTOFF - .long test_R_390_GOTOFF32@GOTOFF - lhi %r0,test_R_390_PLTOFF16@PLTOFF - .long test_R_390_PLTOFF32@PLTOFF - l %r0,test_R_390_GOTPLT12@GOTPLT(%r1,%r2) - lhi %r0,test_R_390_GOTPLT16@GOTPLT - .long test_R_390_GOTPLT32@GOTPLT - -bar: - bras %r14,foo@PLT - .long foo@PLT-bar diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/s390.exp binutils-2.16.91.0.3/gas/testsuite/gas/s390/s390.exp --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/s390.exp 2001-10-01 15:25:25.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/s390.exp 2005-08-22 12:27:43.000000000 -0700 @@ -17,19 +17,21 @@ proc run_list_test { name opts } { if [expr [istarget "s390-*-*"] || [istarget "s390x-*-*"]] then { - run_dump_test "opcode" - run_dump_test "reloc" - run_dump_test "operands" + run_dump_test "esa-g5" "{as -m31}" + run_dump_test "esa-z900" "{as -m31} {as -march=z900}" + run_dump_test "esa-z990" "{as -m31} {as -march=z990}" + run_dump_test "esa-z9-109" "{as -m31} {as -march=z9-109}" + run_dump_test "esa-reloc" "{as -m31}" + run_dump_test "esa-operands" "{as -m31}" # # PIC is only supported on ELF targets. # if { ([istarget "*-*-elf*"] || [istarget "*-*-linux*"] ) } then { # run_dump_test "s390pic" # } -} - -if [istarget "s390x-*-*"] then { - run_dump_test "opcode64" - run_dump_test "reloc64" - run_dump_test "operands64" + run_dump_test "zarch-z900" "{as -m64}" + run_dump_test "zarch-z990" "{as -m64} {as -march=z990}" + run_dump_test "zarch-z9-109" "{as -m64} {as -march=z9-109}" + run_dump_test "zarch-reloc" "{as -m64}" + run_dump_test "zarch-operands" "{as -m64} {as -march=z9-109}" } diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-operands.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-operands.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-operands.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-operands.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,14 @@ +#name: s390x operands +#objdump: -dr + +.*: +file format .* + +Disassembly of section .text: + +.* : + 0: ec 12 00 00 00 45 [ ]*brxlg %r1,%r2,0 +[ ]*2: R_390_PC16DBL test_rie\+0x2 + 6: c0 e5 00 00 00 00 [ ]*brasl %r14,6 +[ ]*8: R_390_PC32DBL test_ril\+0x2 + c: eb 12 40 03 00 0d [ ]*sllg %r1,%r2,3\(%r4\) + 12: c8 50 20 01 40 03 [ ]*mvcos 1\(%r2\),3\(%r4\),%r5 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-operands.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-operands.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-operands.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-operands.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,6 @@ +.text +foo: + .insn rie,0xec0000000045,%r1,%r2,test_rie + .insn ril,0xc00500000000,%r14,test_ril + .insn rse,0xeb000000000d,%r1,%r2,3(%r4) + .insn ssf,0xc80000000000,1(%r2),3(%r4),%r5 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-reloc.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-reloc.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-reloc.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-reloc.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,32 @@ +#name: s390x reloc +#objdump: -dr + +.*: +file format .* + +Disassembly of section .text: + +.* : + 0: c0 e5 00 00 00 00 [ ]*brasl %r14,0 +[ ]*2: R_390_PC32DBL test_R_390_PC32DBL\+0x2 + 6: c0 e5 00 00 00 00 [ ]*brasl %r14,6 +[ ]*8: R_390_PC32DBL test_R_390_PLT32DBL\+0x2 +[ ]*... +[ ]*c: R_390_64 test_R_390_64 +[ ]*14: R_390_PC64 test_R_390_PC64\+0x14 +[ ]*1c: R_390_GOT64 test_R_390_GOT64 +[ ]*24: R_390_PLT64 test_R_390_PLT64 + 2c: c0 10 00 00 00 00 [ ]*larl %r1,2c +[ ]*2e: R_390_GOTENT test_R_390_GOTENT\+0x2 +[ ]*... +[ ]*32: R_390_GOTOFF64 test_R_390_GOTOFF64 +[ ]*3a: R_390_PLTOFF64 test_R_390_PLTOFF64 +[ ]*42: R_390_GOTPLT64 test_R_390_GOTPLT64 + 4a: c0 10 00 00 00 00 [ ]*larl %r1,4a +[ ]*4c: R_390_GOTPLTENT test_R_390_GOTPLTENT\+0x2 + +.* : + 50: c0 e5 00 00 00 00 [ ]*brasl %r14,50 +[ ]*52: R_390_PLT32DBL foo\+0x2 +[ ]*... +[ ]*56: R_390_PLT64 foo\+0x6 + 5e: 07 07 [ ]*bcr 0,%r7 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-reloc.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-reloc.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-reloc.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-reloc.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,18 @@ + .text + .globl foo +foo: + brasl %r14,test_R_390_PC32DBL + brasl %r14,test_R_390_PLT32DBL + .quad test_R_390_64 + .quad test_R_390_PC64-foo + .quad test_R_390_GOT64@GOT + .quad test_R_390_PLT64@PLT + larl %r1,test_R_390_GOTENT@GOT + .quad test_R_390_GOTOFF64@GOTOFF + .quad test_R_390_PLTOFF64@PLTOFF + .quad test_R_390_GOTPLT64@GOTPLT + larl %r1,test_R_390_GOTPLTENT@GOTPLT + +bar: + brasl %r14,foo@PLT + .quad foo@PLT-bar diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z900.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z900.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z900.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z900.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,152 @@ +#name: s390x opcode +#objdump: -drw + +.*: +file format .* + +Disassembly of section .text: + +.* : +.*: e3 95 af ff 00 08 [ ]*ag %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 18 [ ]*agf %r9,4095\(%r5,%r10\) +.*: b9 18 00 96 [ ]*agfr %r9,%r6 +.*: a7 9b 80 01 [ ]*aghi %r9,-32767 +.*: b9 08 00 96 [ ]*agr %r9,%r6 +.*: e3 95 af ff 00 88 [ ]*alcg %r9,4095\(%r5,%r10\) +.*: b9 88 00 96 [ ]*alcgr %r9,%r6 +.*: e3 95 af ff 00 0a [ ]*alg %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 1a [ ]*algf %r9,4095\(%r5,%r10\) +.*: b9 1a 00 96 [ ]*algfr %r9,%r6 +.*: b9 0a 00 96 [ ]*algr %r9,%r6 +.*: e3 95 af ff 00 46 [ ]*bctg %r9,4095\(%r5,%r10\) +.*: b9 46 00 96 [ ]*bctgr %r9,%r6 +.*: a7 97 00 00 [ ]*brctg %r9,40 \ +.*: ec 96 00 00 00 44 [ ]*brxhg %r9,%r6,44 +.*: ec 96 00 00 00 45 [ ]*brxlg %r9,%r6,4a +.*: eb 96 5f ff 00 44 [ ]*bxhg %r9,%r6,4095\(%r5\) +.*: eb 96 5f ff 00 45 [ ]*bxleg %r9,%r6,4095\(%r5\) +.*: b3 a5 00 96 [ ]*cdgbr %r9,%r6 +.*: b3 c5 00 96 [ ]*cdgr %r9,%r6 +.*: eb 96 5f ff 00 3e [ ]*cdsg %r9,%r6,4095\(%r5\) +.*: b3 a4 00 96 [ ]*cegbr %r9,%r6 +.*: b3 c4 00 96 [ ]*cegr %r9,%r6 +.*: b3 b9 90 65 [ ]*cfdr %f6,9,%r5 +.*: b3 b8 90 65 [ ]*cfer %f6,9,%r5 +.*: b3 ba 90 65 [ ]*cfxr %f6,9,%r5 +.*: e3 95 af ff 00 20 [ ]*cg %r9,4095\(%r5,%r10\) +.*: b3 a9 f0 65 [ ]*cgdbr %f6,15,%r5 +.*: b3 c9 f0 65 [ ]*cgdr %f6,15,%r5 +.*: b3 a8 f0 65 [ ]*cgebr %f6,15,%r5 +.*: b3 c8 f0 65 [ ]*cger %f6,15,%r5 +.*: e3 95 af ff 00 30 [ ]*cgf %r9,4095\(%r5,%r10\) +.*: b9 30 00 96 [ ]*cgfr %r9,%r6 +.*: a7 9f 80 01 [ ]*cghi %r9,-32767 +.*: b9 20 00 96 [ ]*cgr %r9,%r6 +.*: b3 aa f0 65 [ ]*cgxbr %f6,15,%r5 +.*: b3 ca f0 65 [ ]*cgxr %f6,15,%r5 +.*: e3 95 af ff 00 21 [ ]*clg %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 31 [ ]*clgf %r9,4095\(%r5,%r10\) +.*: b9 31 00 96 [ ]*clgfr %r9,%r6 +.*: b9 21 00 96 [ ]*clgr %r9,%r6 +.*: eb 9a 5f ff 00 20 [ ]*clmh %r9,10,4095\(%r5\) +.*: eb 96 5f ff 00 30 [ ]*csg %r9,%r6,4095\(%r5\) +.*: e3 95 af ff 00 0e [ ]*cvbg %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 2e [ ]*cvdg %r9,4095\(%r5,%r10\) +.*: b3 a6 00 96 [ ]*cxgbr %r9,%r6 +.*: b3 c6 00 96 [ ]*cxgr %r9,%r6 +.*: e3 95 af ff 00 87 [ ]*dlg %r9,4095\(%r5,%r10\) +.*: b9 87 00 96 [ ]*dlgr %r9,%r6 +.*: e3 95 af ff 00 0d [ ]*dsg %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 1d [ ]*dsgf %r9,4095\(%r5,%r10\) +.*: b9 1d 00 96 [ ]*dsgfr %r9,%r6 +.*: b9 0d 00 96 [ ]*dsgr %r9,%r6 +.*: b9 0e 00 96 [ ]*eregg %r9,%r6 +.*: b9 9d 00 90 [ ]*esea %r9 +.*: eb 9a 5f ff 00 80 [ ]*icmh %r9,10,4095\(%r5\) +.*: a5 90 ff ff [ ]*iihh %r9,65535 +.*: a5 91 ff ff [ ]*iihl %r9,65535 +.*: a5 92 ff ff [ ]*iilh %r9,65535 +.*: a5 93 ff ff [ ]*iill %r9,65535 +.*: b9 13 00 96 [ ]*lcgfr %r9,%r6 +.*: b9 03 00 96 [ ]*lcgr %r9,%r6 +.*: eb 96 5f ff 00 2f [ ]*lctlg %c9,%c6,4095\(%r5\) +.*: e3 95 af ff 00 04 [ ]*lg %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 14 [ ]*lgf %r9,4095\(%r5,%r10\) +.*: b9 14 00 96 [ ]*lgfr %r9,%r6 +.*: e3 95 af ff 00 15 [ ]*lgh %r9,4095\(%r5,%r10\) +.*: a7 99 80 01 [ ]*lghi %r9,-32767 +.*: b9 04 00 96 [ ]*lgr %r9,%r6 +.*: e3 95 af ff 00 90 [ ]*llgc %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 16 [ ]*llgf %r9,4095\(%r5,%r10\) +.*: b9 16 00 96 [ ]*llgfr %r9,%r6 +.*: e3 95 af ff 00 91 [ ]*llgh %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 17 [ ]*llgt %r9,4095\(%r5,%r10\) +.*: b9 17 00 96 [ ]*llgtr %r9,%r6 +.*: a5 9c ff ff [ ]*llihh %r9,65535 +.*: a5 9d ff ff [ ]*llihl %r9,65535 +.*: a5 9e ff ff [ ]*llilh %r9,65535 +.*: a5 9f ff ff [ ]*llill %r9,65535 +.*: ef 96 5f ff af ff [ ]*lmd %r9,%r6,4095\(%r5\),4095\(%r10\) +.*: eb 96 5f ff 00 04 [ ]*lmg %r9,%r6,4095\(%r5\) +.*: eb 96 5f ff 00 96 [ ]*lmh %r9,%r6,4095\(%r5\) +.*: b9 11 00 96 [ ]*lngfr %r9,%r6 +.*: b9 01 00 96 [ ]*lngr %r9,%r6 +.*: b9 10 00 96 [ ]*lpgfr %r9,%r6 +.*: b9 00 00 96 [ ]*lpgr %r9,%r6 +.*: e3 95 af ff 00 8f [ ]*lpq %r9,4095\(%r5,%r10\) +.*: b2 b2 5f ff [ ]*lpswe 4095\(%r5\) +.*: e3 95 af ff 00 03 [ ]*lrag %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 0f [ ]*lrvg %r9,4095\(%r5,%r10\) +.*: b9 0f 00 96 [ ]*lrvgr %r9,%r6 +.*: b9 12 00 96 [ ]*ltgfr %r9,%r6 +.*: b9 02 00 96 [ ]*ltgr %r9,%r6 +.*: b9 05 00 96 [ ]*lurag %r9,%r6 +.*: a7 9d 80 01 [ ]*mghi %r9,-32767 +.*: e3 95 af ff 00 86 [ ]*mlg %r9,4095\(%r5,%r10\) +.*: b9 86 00 96 [ ]*mlgr %r9,%r6 +.*: e3 95 af ff 00 0c [ ]*msg %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 1c [ ]*msgf %r9,4095\(%r5,%r10\) +.*: b9 1c 00 96 [ ]*msgfr %r9,%r6 +.*: b9 0c 00 96 [ ]*msgr %r9,%r6 +.*: e3 95 af ff 00 80 [ ]*ng %r9,4095\(%r5,%r10\) +.*: b9 80 00 96 [ ]*ngr %r9,%r6 +.*: a5 94 ff ff [ ]*nihh %r9,65535 +.*: a5 95 ff ff [ ]*nihl %r9,65535 +.*: a5 96 ff ff [ ]*nilh %r9,65535 +.*: a5 97 ff ff [ ]*nill %r9,65535 +.*: e3 95 af ff 00 81 [ ]*og %r9,4095\(%r5,%r10\) +.*: b9 81 00 96 [ ]*ogr %r9,%r6 +.*: a5 98 ff ff [ ]*oihh %r9,65535 +.*: a5 99 ff ff [ ]*oihl %r9,65535 +.*: a5 9a ff ff [ ]*oilh %r9,65535 +.*: a5 9b ff ff [ ]*oill %r9,65535 +.*: eb 96 5f ff 00 1c [ ]*rllg %r9,%r6,4095\(%r5\) +.*: 01 0e [ ]*sam64 +.*: e3 95 af ff 00 09 [ ]*sg %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 19 [ ]*sgf %r9,4095\(%r5,%r10\) +.*: b9 19 00 96 [ ]*sgfr %r9,%r6 +.*: b9 09 00 96 [ ]*sgr %r9,%r6 +.*: eb 96 5f ff 00 0b [ ]*slag %r9,%r6,4095\(%r5\) +.*: e3 95 af ff 00 89 [ ]*slbg %r9,4095\(%r5,%r10\) +.*: b9 89 00 96 [ ]*slbgr %r9,%r6 +.*: e3 95 af ff 00 0b [ ]*slg %r9,4095\(%r5,%r10\) +.*: e3 95 af ff 00 1b [ ]*slgf %r9,4095\(%r5,%r10\) +.*: b9 1b 00 96 [ ]*slgfr %r9,%r6 +.*: b9 0b 00 96 [ ]*slgr %r9,%r6 +.*: eb 96 5f ff 00 0d [ ]*sllg %r9,%r6,4095\(%r5\) +.*: eb 96 5f ff 00 0a [ ]*srag %r9,%r6,4095\(%r5\) +.*: eb 96 5f ff 00 0c [ ]*srlg %r9,%r6,4095\(%r5\) +.*: eb 9a 5f ff 00 2c [ ]*stcmh %r9,10,4095\(%r5\) +.*: eb 96 5f ff 00 25 [ ]*stctg %c9,%c6,4095\(%r5\) +.*: e3 95 af ff 00 24 [ ]*stg %r9,4095\(%r5,%r10\) +.*: eb 96 5f ff 00 24 [ ]*stmg %r9,%r6,4095\(%r5\) +.*: eb 96 5f ff 00 26 [ ]*stmh %r9,%r6,4095\(%r5\) +.*: e3 95 af ff 00 8e [ ]*stpq %r9,4095\(%r5,%r10\) +.*: e5 00 5f ff 9f ff [ ]*lasp 4095\(%r5\),4095\(%r9\) +.*: e3 95 af ff 00 2f [ ]*strvg %r9,4095\(%r5,%r10\) +.*: b9 25 00 96 [ ]*sturg %r9,%r6 +.*: a7 92 ff ff [ ]*tmhh %r9,65535 +.*: a7 93 ff ff [ ]*tmhl %r9,65535 +.*: eb 96 5f ff 00 0f [ ]*tracg %r9,%r6,4095\(%r5\) +.*: e3 95 af ff 00 82 [ ]*xg %r9,4095\(%r5,%r10\) +.*: b9 82 00 96 [ ]*xgr %r9,%r6 +.*: 07 07 [ ]*bcr 0,%r7 \ No newline at end of file diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z900.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z900.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z900.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z900.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,145 @@ +.text +foo: + ag %r9,4095(%r5,%r10) + agf %r9,4095(%r5,%r10) + agfr %r9,%r6 + aghi %r9,-32767 + agr %r9,%r6 + alcg %r9,4095(%r5,%r10) + alcgr %r9,%r6 + alg %r9,4095(%r5,%r10) + algf %r9,4095(%r5,%r10) + algfr %r9,%r6 + algr %r9,%r6 + bctg %r9,4095(%r5,%r10) + bctgr %r9,%r6 + brctg %r9,. + brxhg %r9,%r6,. + brxlg %r9,%r6,. + bxhg %r9,%r6,4095(%r5) + bxleg %r9,%r6,4095(%r5) + cdgbr %r9,%r6 + cdgr %r9,%r6 + cdsg %r9,%r6,4095(%r5) + cegbr %r9,%r6 + cegr %r9,%r6 + cfdr %f6,9,%r5 + cfer %f6,9,%r5 + cfxr %f6,9,%r5 + cg %r9,4095(%r5,%r10) + cgdbr %f6,15,%r5 + cgdr %f6,15,%r5 + cgebr %f6,15,%r5 + cger %f6,15,%r5 + cgf %r9,4095(%r5,%r10) + cgfr %r9,%r6 + cghi %r9,-32767 + cgr %r9,%r6 + cgxbr %f6,15,%r5 + cgxr %f6,15,%r5 + clg %r9,4095(%r5,%r10) + clgf %r9,4095(%r5,%r10) + clgfr %r9,%r6 + clgr %r9,%r6 + clmh %r9,10,4095(%r5) + csg %r9,%r6,4095(%r5) + cvbg %r9,4095(%r5,%r10) + cvdg %r9,4095(%r5,%r10) + cxgbr %r9,%r6 + cxgr %r9,%r6 + dlg %r9,4095(%r5,%r10) + dlgr %r9,%r6 + dsg %r9,4095(%r5,%r10) + dsgf %r9,4095(%r5,%r10) + dsgfr %r9,%r6 + dsgr %r9,%r6 + eregg %r9,%r6 + esea %r9 + icmh %r9,10,4095(%r5) + iihh %r9,65535 + iihl %r9,65535 + iilh %r9,65535 + iill %r9,65535 + lcgfr %r9,%r6 + lcgr %r9,%r6 + lctlg %c9,%c6,4095(%r5) + lg %r9,4095(%r5,%r10) + lgf %r9,4095(%r5,%r10) + lgfr %r9,%r6 + lgh %r9,4095(%r5,%r10) + lghi %r9,-32767 + lgr %r9,%r6 + llgc %r9,4095(%r5,%r10) + llgf %r9,4095(%r5,%r10) + llgfr %r9,%r6 + llgh %r9,4095(%r5,%r10) + llgt %r9,4095(%r5,%r10) + llgtr %r9,%r6 + llihh %r9,65535 + llihl %r9,65535 + llilh %r9,65535 + llill %r9,65535 + lmd %r9,%r6,4095(%r5),4095(%r10) + lmg %r9,%r6,4095(%r5) + lmh %r9,%r6,4095(%r5) + lngfr %r9,%r6 + lngr %r9,%r6 + lpgfr %r9,%r6 + lpgr %r9,%r6 + lpq %r9,4095(%r5,%r10) + lpswe 4095(%r5) + lrag %r9,4095(%r5,%r10) + lrvg %r9,4095(%r5,%r10) + lrvgr %r9,%r6 + ltgfr %r9,%r6 + ltgr %r9,%r6 + lurag %r9,%r6 + mghi %r9,-32767 + mlg %r9,4095(%r5,%r10) + mlgr %r9,%r6 + msg %r9,4095(%r5,%r10) + msgf %r9,4095(%r5,%r10) + msgfr %r9,%r6 + msgr %r9,%r6 + ng %r9,4095(%r5,%r10) + ngr %r9,%r6 + nihh %r9,65535 + nihl %r9,65535 + nilh %r9,65535 + nill %r9,65535 + og %r9,4095(%r5,%r10) + ogr %r9,%r6 + oihh %r9,65535 + oihl %r9,65535 + oilh %r9,65535 + oill %r9,65535 + rllg %r9,%r6,4095(%r5) + sam64 + sg %r9,4095(%r5,%r10) + sgf %r9,4095(%r5,%r10) + sgfr %r9,%r6 + sgr %r9,%r6 + slag %r9,%r6,4095(%r5) + slbg %r9,4095(%r5,%r10) + slbgr %r9,%r6 + slg %r9,4095(%r5,%r10) + slgf %r9,4095(%r5,%r10) + slgfr %r9,%r6 + slgr %r9,%r6 + sllg %r9,%r6,4095(%r5) + srag %r9,%r6,4095(%r5) + srlg %r9,%r6,4095(%r5) + stcmh %r9,10,4095(%r5) + stctg %c9,%c6,4095(%r5) + stg %r9,4095(%r5,%r10) + stmg %r9,%r6,4095(%r5) + stmh %r9,%r6,4095(%r5) + stpq %r9,4095(%r5,%r10) + strag 4095(%r5),4095(%r9) + strvg %r9,4095(%r5,%r10) + sturg %r9,%r6 + tmhh %r9,65535 + tmhl %r9,65535 + tracg %r9,%r6,4095(%r5) + xg %r9,4095(%r5,%r10) + xgr %r9,%r6 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z9-109.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z9-109.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z9-109.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z9-109.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,53 @@ +#name: s390x opcode +#objdump: -drw + +.*: +file format .* + +Disassembly of section .text: + +.* : +.*: c2 69 80 00 00 00 [ ]*afi %r6,-2147483648 +.*: c2 68 80 00 00 00 [ ]*agfi %r6,-2147483648 +.*: c2 6b ff ff ff ff [ ]*alfi %r6,4294967295 +.*: c2 6a ff ff ff ff [ ]*algfi %r6,4294967295 +.*: c0 6a ff ff ff ff [ ]*nihf %r6,4294967295 +.*: c0 6b ff ff ff ff [ ]*nilf %r6,4294967295 +.*: c2 6d 80 00 00 00 [ ]*cfi %r6,-2147483648 +.*: c2 6c 80 00 00 00 [ ]*cgfi %r6,-2147483648 +.*: c2 6f ff ff ff ff [ ]*clfi %r6,4294967295 +.*: c2 6e ff ff ff ff [ ]*clgfi %r6,4294967295 +.*: c0 66 ff ff ff ff [ ]*xihf %r6,4294967295 +.*: c0 67 ff ff ff ff [ ]*xilf %r6,4294967295 +.*: c0 68 ff ff ff ff [ ]*iihf %r6,4294967295 +.*: c0 69 ff ff ff ff [ ]*iilf %r6,4294967295 +.*: b9 83 00 69 [ ]*flogr %r6,%r9 +.*: e3 65 a0 00 80 12 [ ]*lt %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 02 [ ]*ltg %r6,-524288\(%r5,%r10\) +.*: b9 26 00 69 [ ]*lbr %r6,%r9 +.*: b9 06 00 69 [ ]*lgbr %r6,%r9 +.*: b9 27 00 69 [ ]*lhr %r6,%r9 +.*: b9 07 00 69 [ ]*lghr %r6,%r9 +.*: c0 61 80 00 00 00 [ ]*lgfi %r6,-2147483648 +.*: e3 65 a0 00 80 94 [ ]*llc %r6,-524288\(%r5,%r10\) +.*: b9 94 00 69 [ ]*llcr %r6,%r9 +.*: b9 84 00 69 [ ]*llgcr %r6,%r9 +.*: e3 65 a0 00 80 95 [ ]*llh %r6,-524288\(%r5,%r10\) +.*: b9 95 00 69 [ ]*llhr %r6,%r9 +.*: b9 85 00 69 [ ]*llghr %r6,%r9 +.*: c0 6e ff ff ff ff [ ]*llihf %r6,4294967295 +.*: c0 6f ff ff ff ff [ ]*llilf %r6,4294967295 +.*: c0 6c ff ff ff ff [ ]*oihf %r6,4294967295 +.*: c0 6d ff ff ff ff [ ]*oilf %r6,4294967295 +.*: c2 65 ff ff ff ff [ ]*slfi %r6,4294967295 +.*: c2 64 ff ff ff ff [ ]*slgfi %r6,4294967295 +.*: b2 b0 5f ff [ ]*stfle 4095\(%r5\) +.*: b2 7c 5f ff [ ]*stckf 4095\(%r5\) +.*: c8 60 5f ff af ff [ ]*mvcos 4095\(%r5\),4095\(%r10\),%r6 +.*: b9 aa 5f 69 [ ]*lptea %r6,%r9,%r5,15 +.*: b2 2b f0 69 [ ]*sske %r6,%r9,15 +.*: b9 b1 f0 69 [ ]*cu24 %r6,%r9,15 +.*: b2 a6 f0 69 [ ]*cu21 %r6,%r9,15 +.*: b9 b3 f0 69 [ ]*cu42 %r6,%r9,15 +.*: b9 b2 f0 69 [ ]*cu41 %r6,%r9,15 +.*: b2 a7 f0 69 [ ]*cu12 %r6,%r9,15 +.*: b9 b0 f0 69 [ ]*cu14 %r6,%r9,15 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z9-109.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z9-109.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z9-109.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z9-109.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,47 @@ +.text +foo: + afi %r6,-2147483648 + agfi %r6,-2147483648 + alfi %r6,4294967295 + algfi %r6,4294967295 + nihf %r6,4294967295 + nilf %r6,4294967295 + cfi %r6,-2147483648 + cgfi %r6,-2147483648 + clfi %r6,4294967295 + clgfi %r6,4294967295 + xihf %r6,4294967295 + xilf %r6,4294967295 + iihf %r6,4294967295 + iilf %r6,4294967295 + flogr %r6,%r9 + lt %r6,-524288(%r5,%r10) + ltg %r6,-524288(%r5,%r10) + lbr %r6,%r9 + lgbr %r6,%r9 + lhr %r6,%r9 + lghr %r6,%r9 + lgfi %r6,-2147483648 + llc %r6,-524288(%r5,%r10) + llcr %r6,%r9 + llgcr %r6,%r9 + llh %r6,-524288(%r5,%r10) + llhr %r6,%r9 + llghr %r6,%r9 + llihf %r6,4294967295 + llilf %r6,4294967295 + oihf %r6,4294967295 + oilf %r6,4294967295 + slfi %r6,4294967295 + slgfi %r6,4294967295 + stfle 4095(%r5) + stckf 4095(%r5) + mvcos 4095(%r5),4095(%r10),%r6 + lptea %r6,%r9,%r5,15 + sske %r6,%r9,15 + cu24 %r6,%r9,15 + cu21 %r6,%r9,15 + cu42 %r6,%r9,15 + cu41 %r6,%r9,15 + cu12 %r6,%r9,15 + cu14 %r6,%r9,15 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z990.d binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z990.d --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z990.d 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z990.d 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,132 @@ +#name: s390x opcode +#objdump: -drw + +.*: +file format .* + +Disassembly of section .text: + +.* : +.*: e3 65 a0 00 80 08 [ ]*ag %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 18 [ ]*agf %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 7a [ ]*ahy %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 98 [ ]*alc %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 88 [ ]*alcg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 0a [ ]*alg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 1a [ ]*algf %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 5e [ ]*aly %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 5a [ ]*ay %r6,-524288\(%r5,%r10\) +.*: e3 60 50 00 80 46 [ ]*bctg %r6,-524288\(%r5\) +.*: eb 69 50 00 80 44 [ ]*bxhg %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 45 [ ]*bxleg %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 3e [ ]*cdsg %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 31 [ ]*cdsy %r6,%r9,-524288\(%r5\) +.*: e3 65 a0 00 80 20 [ ]*cg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 30 [ ]*cgf %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 79 [ ]*chy %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 8f [ ]*clclu %r6,%r9,-524288\(%r5\) +.*: e3 65 a0 00 80 21 [ ]*clg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 31 [ ]*clgf %r6,-524288\(%r5,%r10\) +.*: eb ff 50 00 80 55 [ ]*cliy -524288\(%r5\),255 +.*: eb 6f 50 00 80 20 [ ]*clmh %r6,15,-524288\(%r5\) +.*: eb 6f 50 00 80 21 [ ]*clmy %r6,15,-524288\(%r5\) +.*: e3 65 a0 00 80 55 [ ]*cly %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 30 [ ]*csg %r6,%r9,-524288\(%r5\) +.*: b9 8a 00 69 [ ]*cspg %r6,%r9 +.*: eb 69 50 00 80 14 [ ]*csy %r6,%r9,-524288\(%r5\) +.*: e3 65 a0 00 80 0e [ ]*cvbg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 06 [ ]*cvby %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 2e [ ]*cvdg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 26 [ ]*cvdy %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 59 [ ]*cy %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 97 [ ]*dl %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 87 [ ]*dlg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 0d [ ]*dsg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 1d [ ]*dsgf %r6,-524288\(%r5,%r10\) +.*: eb 6f 50 00 80 80 [ ]*icmh %r6,15,-524288\(%r5\) +.*: eb 6f 50 00 80 81 [ ]*icmy %r6,15,-524288\(%r5\) +.*: e3 65 a0 00 80 73 [ ]*icy %r6,-524288\(%r5,%r10\) +.*: b9 8e 50 69 [ ]*idte %r6,%r9,%r5 +.*: eb 69 50 00 80 9a [ ]*lamy %a6,%a9,-524288\(%r5\) +.*: e3 65 a0 00 80 71 [ ]*lay %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 76 [ ]*lb %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 2f [ ]*lctlg %c6,%c9,-524288\(%r5\) +.*: ed 65 a0 00 80 65 [ ]*ldy %f6,-524288\(%r5,%r10\) +.*: ed 65 a0 00 80 64 [ ]*ley %f6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 04 [ ]*lg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 77 [ ]*lgb %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 14 [ ]*lgf %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 15 [ ]*lgh %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 78 [ ]*lhy %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 90 [ ]*llgc %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 16 [ ]*llgf %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 91 [ ]*llgh %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 17 [ ]*llgt %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 04 [ ]*lmg %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 96 [ ]*lmh %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 98 [ ]*lmy %r6,%r9,-524288\(%r5\) +.*: e3 65 a0 00 80 8f [ ]*lpq %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 03 [ ]*lrag %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 13 [ ]*lray %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 1e [ ]*lrv %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 0f [ ]*lrvg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 1f [ ]*lrvh %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 58 [ ]*ly %r6,-524288\(%r5,%r10\) +.*: ed 95 af ff 60 3e [ ]*mad %f6,%f9,4095\(%r5,%r10\) +.*: b3 3e 60 95 [ ]*madr %f6,%f9,%f5 +.*: ed 95 af ff 60 2e [ ]*mae %f6,%f9,4095\(%r5,%r10\) +.*: b3 2e 60 95 [ ]*maer %f6,%f9,%f5 +.*: e3 65 a0 00 80 96 [ ]*ml %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 86 [ ]*mlg %r6,-524288\(%r5,%r10\) +.*: ed 95 af ff 60 3f [ ]*msd %f6,%f9,4095\(%r5,%r10\) +.*: b3 3f 60 95 [ ]*msdr %f6,%f9,%f5 +.*: ed 95 af ff 60 2f [ ]*mse %f6,%f9,4095\(%r5,%r10\) +.*: b3 2f 60 95 [ ]*mser %f6,%f9,%f5 +.*: e3 65 a0 00 80 0c [ ]*msg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 1c [ ]*msgf %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 51 [ ]*msy %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 8e [ ]*mvclu %r6,%r9,-524288\(%r5\) +.*: eb ff 50 00 80 52 [ ]*mviy -524288\(%r5\),255 +.*: e3 65 a0 00 80 80 [ ]*ng %r6,-524288\(%r5,%r10\) +.*: eb ff 50 00 80 54 [ ]*niy -524288\(%r5\),255 +.*: e3 65 a0 00 80 54 [ ]*ny %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 81 [ ]*og %r6,-524288\(%r5,%r10\) +.*: eb ff 50 00 80 56 [ ]*oiy -524288\(%r5\),255 +.*: e3 65 a0 00 80 56 [ ]*oy %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 1d [ ]*rll %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 1c [ ]*rllg %r6,%r9,-524288\(%r5\) +.*: e3 65 a0 00 80 09 [ ]*sg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 19 [ ]*sgf %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 7b [ ]*shy %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 0b [ ]*slag %r6,%r9,-524288\(%r5\) +.*: e3 65 a0 00 80 99 [ ]*slb %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 89 [ ]*slbg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 0b [ ]*slg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 1b [ ]*slgf %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 0d [ ]*sllg %r6,%r9,-524288\(%r5\) +.*: e3 65 a0 00 80 5f [ ]*sly %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 0a [ ]*srag %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 0c [ ]*srlg %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 9b [ ]*stamy %a6,%a9,-524288\(%r5\) +.*: eb 6f 50 00 80 2c [ ]*stcmh %r6,15,-524288\(%r5\) +.*: eb 6f 50 00 80 2d [ ]*stcmy %r6,15,-524288\(%r5\) +.*: eb 69 50 00 80 25 [ ]*stctg %c6,%c9,-524288\(%r5\) +.*: e3 65 a0 00 80 72 [ ]*stcy %r6,-524288\(%r5,%r10\) +.*: ed 65 a0 00 80 67 [ ]*stdy %f6,-524288\(%r5,%r10\) +.*: ed 65 a0 00 80 66 [ ]*stey %f6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 24 [ ]*stg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 70 [ ]*sthy %r6,-524288\(%r5,%r10\) +.*: eb 69 50 00 80 24 [ ]*stmg %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 26 [ ]*stmh %r6,%r9,-524288\(%r5\) +.*: eb 69 50 00 80 90 [ ]*stmy %r6,%r9,-524288\(%r5\) +.*: e3 65 a0 00 80 8e [ ]*stpq %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 3e [ ]*strv %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 2f [ ]*strvg %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 3f [ ]*strvh %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 50 [ ]*sty %r6,-524288\(%r5,%r10\) +.*: e3 65 a0 00 80 5b [ ]*sy %r6,-524288\(%r5,%r10\) +.*: eb ff 50 00 80 51 [ ]*tmy -524288\(%r5\),255 +.*: eb 69 50 00 80 0f [ ]*tracg %r6,%r9,-524288\(%r5\) +.*: e3 65 a0 00 80 82 [ ]*xg %r6,-524288\(%r5,%r10\) +.*: eb ff 50 00 80 57 [ ]*xiy -524288\(%r5\),255 +.*: e3 65 a0 00 80 57 [ ]*xy %r6,-524288\(%r5,%r10\) +.*: 07 07 [ ]*bcr 0,%r7 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z990.s binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z990.s --- binutils-2.16.91.0.2/gas/testsuite/gas/s390/zarch-z990.s 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/gas/testsuite/gas/s390/zarch-z990.s 2005-08-22 12:27:43.000000000 -0700 @@ -0,0 +1,125 @@ +.text +foo: + ag %r6,-524288(%r5,%r10) + agf %r6,-524288(%r5,%r10) + ahy %r6,-524288(%r5,%r10) + alc %r6,-524288(%r5,%r10) + alcg %r6,-524288(%r5,%r10) + alg %r6,-524288(%r5,%r10) + algf %r6,-524288(%r5,%r10) + aly %r6,-524288(%r5,%r10) + ay %r6,-524288(%r5,%r10) + bctg %r6,-524288(%r5) + bxhg %r6,%r9,-524288(%r5) + bxleg %r6,%r9,-524288(%r5) + cdsg %r6,%r9,-524288(%r5) + cdsy %r6,%r9,-524288(%r5) + cg %r6,-524288(%r5,%r10) + cgf %r6,-524288(%r5,%r10) + chy %r6,-524288(%r5,%r10) + clclu %r6,%r9,-524288(%r5) + clg %r6,-524288(%r5,%r10) + clgf %r6,-524288(%r5,%r10) + cliy -524288(%r5),255 + clmh %r6,15,-524288(%r5) + clmy %r6,15,-524288(%r5) + cly %r6,-524288(%r5,%r10) + csg %r6,%r9,-524288(%r5) + cspg %r6,%r9 + csy %r6,%r9,-524288(%r5) + cvbg %r6,-524288(%r5,%r10) + cvby %r6,-524288(%r5,%r10) + cvdg %r6,-524288(%r5,%r10) + cvdy %r6,-524288(%r5,%r10) + cy %r6,-524288(%r5,%r10) + dl %r6,-524288(%r5,%r10) + dlg %r6,-524288(%r5,%r10) + dsg %r6,-524288(%r5,%r10) + dsgf %r6,-524288(%r5,%r10) + icmh %r6,15,-524288(%r5) + icmy %r6,15,-524288(%r5) + icy %r6,-524288(%r5,%r10) + idte %r6,%r9,%r5 + lamy %a6,%a9,-524288(%r5) + lay %r6,-524288(%r5,%r10) + lb %r6,-524288(%r5,%r10) + lctlg %c6,%c9,-524288(%r5) + ldy %f6,-524288(%r5,%r10) + ley %f6,-524288(%r5,%r10) + lg %r6,-524288(%r5,%r10) + lgb %r6,-524288(%r5,%r10) + lgf %r6,-524288(%r5,%r10) + lgh %r6,-524288(%r5,%r10) + lhy %r6,-524288(%r5,%r10) + llgc %r6,-524288(%r5,%r10) + llgf %r6,-524288(%r5,%r10) + llgh %r6,-524288(%r5,%r10) + llgt %r6,-524288(%r5,%r10) + lmg %r6,%r9,-524288(%r5) + lmh %r6,%r9,-524288(%r5) + lmy %r6,%r9,-524288(%r5) + lpq %r6,-524288(%r5,%r10) + lrag %r6,-524288(%r5,%r10) + lray %r6,-524288(%r5,%r10) + lrv %r6,-524288(%r5,%r10) + lrvg %r6,-524288(%r5,%r10) + lrvh %r6,-524288(%r5,%r10) + ly %r6,-524288(%r5,%r10) + mad %f6,%f9,4095(%r5,%r10) + madr %f6,%f9,%f5 + mae %f6,%f9,4095(%r5,%r10) + maer %f6,%f9,%f5 + ml %r6,-524288(%r5,%r10) + mlg %r6,-524288(%r5,%r10) + msd %f6,%f9,4095(%r5,%r10) + msdr %f6,%f9,%f5 + mse %f6,%f9,4095(%r5,%r10) + mser %f6,%f9,%f5 + msg %r6,-524288(%r5,%r10) + msgf %r6,-524288(%r5,%r10) + msy %r6,-524288(%r5,%r10) + mvclu %r6,%r9,-524288(%r5) + mviy -524288(%r5),255 + ng %r6,-524288(%r5,%r10) + niy -524288(%r5),255 + ny %r6,-524288(%r5,%r10) + og %r6,-524288(%r5,%r10) + oiy -524288(%r5),255 + oy %r6,-524288(%r5,%r10) + rll %r6,%r9,-524288(%r5) + rllg %r6,%r9,-524288(%r5) + sg %r6,-524288(%r5,%r10) + sgf %r6,-524288(%r5,%r10) + shy %r6,-524288(%r5,%r10) + slag %r6,%r9,-524288(%r5) + slb %r6,-524288(%r5,%r10) + slbg %r6,-524288(%r5,%r10) + slg %r6,-524288(%r5,%r10) + slgf %r6,-524288(%r5,%r10) + sllg %r6,%r9,-524288(%r5) + sly %r6,-524288(%r5,%r10) + srag %r6,%r9,-524288(%r5) + srlg %r6,%r9,-524288(%r5) + stamy %a6,%a9,-524288(%r5) + stcmh %r6,15,-524288(%r5) + stcmy %r6,15,-524288(%r5) + stctg %c6,%c9,-524288(%r5) + stcy %r6,-524288(%r5,%r10) + stdy %f6,-524288(%r5,%r10) + stey %f6,-524288(%r5,%r10) + stg %r6,-524288(%r5,%r10) + sthy %r6,-524288(%r5,%r10) + stmg %r6,%r9,-524288(%r5) + stmh %r6,%r9,-524288(%r5) + stmy %r6,%r9,-524288(%r5) + stpq %r6,-524288(%r5,%r10) + strv %r6,-524288(%r5,%r10) + strvg %r6,-524288(%r5,%r10) + strvh %r6,-524288(%r5,%r10) + sty %r6,-524288(%r5,%r10) + sy %r6,-524288(%r5,%r10) + tmy -524288(%r5),255 + tracg %r6,%r9,-524288(%r5) + xg %r6,-524288(%r5,%r10) + xiy -524288(%r5),255 + xy %r6,-524288(%r5,%r10) diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/add.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/add.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/add.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/add.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,22 +0,0 @@ -#objdump: -d -#name: TIc80 signed and unsigned add instructions - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 0a 00 fb 62.* - 4: ff 3f ac 20.* - 8: 00 40 2c 21.* - c: 00 10 7b 31 00 40 00 00.* - 14: 00 10 fb 41 ff bf ff ff.* - 1c: 00 10 bb 5a ff ff ff 7f.* - 24: 00 10 3b 6b 00 00 00 80.* - 2c: 0a 20 fb 62.* - 30: ff bf ac 20.* - 34: 00 c0 2c 21.* - 38: 00 30 7b 31 00 40 00 00.* - 40: 00 30 fb 41 ff bf ff ff.* - 48: 00 30 bb 5a ff ff ff 7f.* - 50: 00 30 3b 6b 00 00 00 80.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/add.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/add.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/add.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/add.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,34 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Mon Feb 10 20:13:33 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -add.s PAGE 1 - - 1 ; Test signed and unsigned addition instruction. - 2 ; Test boundary conditions to ensure proper handling. - 3 ; Note that unsigned addition still uses signed immediates. - 4 - 5 00000000 62FB000A add r10,r11,r12 ; Register form - 6 00000004 20AC3FFF add 16383,r2,r4 ; Maximum positive short signed immediate - 7 00000008 212C4000 add -16384,r4,r4 ; Minimum negative short signed immediate - 8 0000000C 317B1000 add 16384,r5,r6 ; Minimum positive long signed immediate - 00000010 00004000 - 9 00000014 41FB1000 add -16385,r7,r8 ; Maximum negative short signed immediate - 00000018 FFFFBFFF - 10 0000001C 5ABB1000 add 2147483647,r10,r11 ; Maximum positive long signed immediate - 00000020 7FFFFFFF - 11 00000024 6B3B1000 add -2147483648,r12,r13 ; Minimum positive long signed immediate - 00000028 80000000 - 12 - 13 0000002C 62FB200A addu r10,r11,r12 ; Register form - 14 00000030 20ACBFFF addu 16383,r2,r4 ; Maximum positive short signed immediate - 15 00000034 212CC000 addu -16384,r4,r4 ; Minimum negative short signed immediate - 16 00000038 317B3000 addu 16384,r5,r6 ; Minimum positive long signed immediate - 0000003C 00004000 - 17 00000040 41FB3000 addu -16385,r7,r8 ; Maximum negative short signed immediate - 00000044 FFFFBFFF - 18 00000048 5ABB3000 addu 2147483647,r10,r11 ; Maximum positive long signed immediate - 0000004C 7FFFFFFF - 19 00000050 6B3B3000 addu -2147483648,r12,r13 ; Minimum positive long signed immediate - 00000054 80000000 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/add.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/add.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/add.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/add.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,19 +0,0 @@ -; Test signed and unsigned addition instruction. -; Test boundary conditions to ensure proper handling. -; Note that unsigned addition still uses signed immediates. - - add r10,r11,r12 ; Register form - add 16383,r2,r4 ; Maximum positive short signed immediate - add -16384,r4,r4 ; Minimum negative short signed immediate - add 16384,r5,r6 ; Minimum positive long signed immediate - add -16385,r7,r8 ; Maximum negative long signed immediate - add 2147483647,r10,r11 ; Maximum positive long signed immediate - add -2147483648,r12,r13 ; Minimum negative long signed immediate - - addu r10,r11,r12 ; Register form - addu 16383,r2,r4 ; Maximum positive short signed immediate - addu -16384,r4,r4 ; Minimum negative short signed immediate - addu 16384,r5,r6 ; Minimum positive long signed immediate - addu -16385,r7,r8 ; Maximum negative long signed immediate - addu 2147483647,r10,r11 ; Maximum positive long signed immediate - addu -2147483648,r12,r13 ; Minimum negative long signed immediate diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/align.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/align.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/align.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/align.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,19 +0,0 @@ -#objdump: -d -#name: TIc80 .align pseudo op - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: ab 00 00 00.* - 4: cd 00 ef 00.* - 8: f1 00 00 00.* - c: ee 00 00 00.* - 10: ac 00 00 00.* - 14: 00 00 00 00.* - 18: ab 00 00 00.* - 1c: 00 00 00 00.* - 20: fe 00 00 00.* - \.\.\. - 30: de ad be ef.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/align.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/align.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/align.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/align.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,47 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Thu Feb 27 17:02:23 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -align.s PAGE 1 - - 1 ;; Test the .align directive. - 2 - 3 00000000 .text - 4 - 5 ;; This should generate 0xAB000000 - 6 00000000 AB .byte 0xAB - 7 00000001 .align ; Should default to 4 byte alignment - 8 - 9 ;; This should generate 0xCD00EF00 - 10 00000004 CD .byte 0xCD - 11 .align 2 ; Should align to the next 2-byte boundary (pad with one null byt - 12 00000006 EF .byte 0xEF - 13 .align 1 - 14 - 15 ;; This should generate 0xF1000000 - 16 00000007 .align 4 ; Should not affect alignment (already on 4) - 17 00000008 F1 .byte 0xF1 - 18 00000009 .align 4 ; Should align to next 4 byte boundary - 19 - 20 ;; This should generate 0xEE000000 since we are already on 4 byte alignment - 21 0000000C EE .byte 0xEE - 22 0000000D .align 8 - 23 - 24 ;; This should generate 0xAC000000 0x00000000 - 25 00000010 AC .byte 0xAC - 26 00000011 .align 8 - 27 - 28 ;; This should generate 0xAB000000 0x00000000 since we are at 8 byte alignment - 29 00000018 AB .byte 0xAB - 30 00000019 .align 16 - 31 - 32 ;; This should generate 0xFE000000 0x00000000 0x00000000 0x00000000 - 33 00000020 FE .byte 0xFE - 34 00000021 .align 16 - 35 - 36 ;; This just forces the disassembler to not print ... for trailing nulls - 37 00000030 DE .byte 0xDE, 0xAD, 0xBE, 0xEF - 00000031 AD - 00000032 BE - 00000033 EF - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/align.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/align.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/align.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/align.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,37 +0,0 @@ -;; Test the .align directive. - - .text - - ;; This should generate 0xAB000000 - .byte 0xAB - .align ; Should default to 4 byte alignment - - ;; This should generate 0xCD00EF00 - .byte 0xCD - .align 2 ; Should align to the next 2-byte boundary (pad with one null byte) - .byte 0xEF - .align 1 - - ;; This should generate 0xF1000000 - .align 4 ; Should not affect alignment (already on 4) - .byte 0xF1 - .align 4 ; Should align to next 4 byte boundary - - ;; This should generate 0xEE000000 since we are already on 4 byte alignment - .byte 0xEE - .align 8 - - ;; This should generate 0xAC000000 0x00000000 - .byte 0xAC - .align 8 - - ;; This should generate 0xAB000000 0x00000000 since we are at 8 byte alignment - .byte 0xAB - .align 16 - - ;; This should generate 0xFE000000 0x00000000 0x00000000 0x00000000 - .byte 0xFE - .align 16 - - ;; This just forces the disassembler to not print ... for trailing nulls - .byte 0xDE, 0xAD, 0xBE, 0xEF diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/bitnum.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/bitnum.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/bitnum.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/bitnum.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,82 +0,0 @@ -#objdump: -d -#name: TIc80 coverage of symbolic BITNUM values - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 0a 40 39 fa.* - 4: 0a 40 39 f2.* - 8: 0a 40 39 ea.* - c: 0a 40 39 e2.* - 10: 0a 40 39 da.* - 14: 0a 40 39 d2.* - 18: 0a 40 39 ca.* - 1c: 0a 40 39 c2.* - 20: 0a 40 39 ba.* - 24: 0a 40 39 b2.* - 28: 0a 40 39 aa.* - 2c: 0a 40 39 a2.* - 30: 0a 40 39 9a.* - 34: 0a 40 39 92.* - 38: 0a 40 39 8a.* - 3c: 0a 40 39 82.* - 40: 0a 40 39 7a.* - 44: 0a 40 39 72.* - 48: 0a 40 39 6a.* - 4c: 0a 40 39 62.* - 50: 0a 40 39 5a.* - 54: 0a 40 39 52.* - 58: 0a 40 39 4a.* - 5c: 0a 40 39 42.* - 60: 0a 40 39 3a.* - 64: 0a 40 39 32.* - 68: 0a 40 39 2a.* - 6c: 0a 40 39 22.* - 70: 0a 40 39 1a.* - 74: 0a 40 39 12.* - 78: 0a 40 39 5a.* - 7c: 0a 40 39 52.* - 80: 0a 40 39 4a.* - 84: 0a 40 39 42.* - 88: 0a 40 39 3a.* - 8c: 0a 40 39 32.* - 90: 0a 40 39 2a.* - 94: 0a 40 39 22.* - 98: 0a 40 39 1a.* - 9c: 0a 40 39 12.* - a0: 0a 40 39 0a.* - a4: 0a 40 39 02.* - a8: 0a 40 39 fa.* - ac: 0a 40 39 f2.* - b0: 0a 40 39 ea.* - b4: 0a 40 39 e2.* - b8: 0a 40 39 da.* - bc: 0a 40 39 d2.* - c0: 0a 40 39 ca.* - c4: 0a 40 39 c2.* - c8: 0a 40 39 ba.* - cc: 0a 40 39 b2.* - d0: 0a 40 39 aa.* - d4: 0a 40 39 a2.* - d8: 0a 40 39 9a.* - dc: 0a 40 39 92.* - e0: 0a 40 39 8a.* - e4: 0a 40 39 82.* - e8: 0a 40 39 7a.* - ec: 0a 40 39 72.* - f0: 0a 40 39 6a.* - f4: 0a 40 39 62.* - f8: 0a 40 39 5a.* - fc: 0a 40 39 52.* - 100: 0a 40 39 4a.* - 104: 0a 40 39 42.* - 108: 0a 40 39 3a.* - 10c: 0a 40 39 32.* - 110: 0a 40 39 2a.* - 114: 0a 40 39 22.* - 118: 0a 40 39 1a.* - 11c: 0a 40 39 12.* - 120: 0a 40 39 0a.* - 124: 0a 40 39 02.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/bitnum.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/bitnum.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/bitnum.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/bitnum.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,97 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Sat Feb 22 21:37:15 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -bitnum.s PAGE 1 - - 1 ;; Test that all the predefined symbol names for the BITNUM field - 2 ;; are properly accepted and translated to numeric values. Also - 3 ;; verifies that they are disassembled correctly as symbolics, and - 4 ;; that the raw numeric values are handled correctly (stored as - 5 ;; the one's complement of the operand numeric value. - 6 - 7 00000000 FA39400A bbo r10,r8,eq.b ; (~0 & 0x1F) - 8 00000004 F239400A bbo r10,r8,ne.b ; (~1 & 0x1F) - 9 00000008 EA39400A bbo r10,r8,gt.b ; (~2 & 0x1F) - 10 0000000C E239400A bbo r10,r8,le.b ; (~3 & 0x1F) - 11 00000010 DA39400A bbo r10,r8,lt.b ; (~4 & 0x1F) - 12 00000014 D239400A bbo r10,r8,ge.b ; (~5 & 0x1F) - 13 00000018 CA39400A bbo r10,r8,hi.b ; (~6 & 0x1F) - 14 0000001C C239400A bbo r10,r8,ls.b ; (~7 & 0x1F) - 15 00000020 BA39400A bbo r10,r8,lo.b ; (~8 & 0x1F) - 16 00000024 B239400A bbo r10,r8,hs.b ; (~9 & 0x1F) - 17 - 18 00000028 AA39400A bbo r10,r8,eq.h ; (~10 & 0x1F) - 19 0000002C A239400A bbo r10,r8,ne.h ; (~11 & 0x1F) - 20 00000030 9A39400A bbo r10,r8,gt.h ; (~12 & 0x1F) - 21 00000034 9239400A bbo r10,r8,le.h ; (~13 & 0x1F) - 22 00000038 8A39400A bbo r10,r8,lt.h ; (~14 & 0x1F) - 23 0000003C 8239400A bbo r10,r8,ge.h ; (~15 & 0x1F) - 24 00000040 7A39400A bbo r10,r8,hi.h ; (~16 & 0x1F) - 25 00000044 7239400A bbo r10,r8,ls.h ; (~17 & 0x1F) - 26 00000048 6A39400A bbo r10,r8,lo.h ; (~18 & 0x1F) - 27 0000004C 6239400A bbo r10,r8,hs.h ; (~19 & 0x1F) - 28 - 29 00000050 5A39400A bbo r10,r8,eq.w ; (~20 & 0x1F) - 30 00000054 5239400A bbo r10,r8,ne.w ; (~21 & 0x1F) - 31 00000058 4A39400A bbo r10,r8,gt.w ; (~22 & 0x1F) - 32 0000005C 4239400A bbo r10,r8,le.w ; (~23 & 0x1F) - 33 00000060 3A39400A bbo r10,r8,lt.w ; (~24 & 0x1F) - 34 00000064 3239400A bbo r10,r8,ge.w ; (~25 & 0x1F) - 35 00000068 2A39400A bbo r10,r8,hi.w ; (~26 & 0x1F) - 36 0000006C 2239400A bbo r10,r8,ls.w ; (~27 & 0x1F) - 37 00000070 1A39400A bbo r10,r8,lo.w ; (~28 & 0x1F) - 38 00000074 1239400A bbo r10,r8,hs.w ; (~29 & 0x1F) - 39 - 40 00000078 5A39400A bbo r10,r8,eq.f ; (~20 & 0x1F) - 41 0000007C 5239400A bbo r10,r8,ne.f ; (~21 & 0x1F) - 42 00000080 4A39400A bbo r10,r8,gt.f ; (~22 & 0x1F) - 43 00000084 4239400A bbo r10,r8,le.f ; (~23 & 0x1F) - 44 00000088 3A39400A bbo r10,r8,lt.f ; (~24 & 0x1F) - 45 0000008C 3239400A bbo r10,r8,ge.f ; (~25 & 0x1F) - 46 00000090 2A39400A bbo r10,r8,ou.f ; (~26 & 0x1F) - 47 00000094 2239400A bbo r10,r8,in.f ; (~27 & 0x1F) - 48 00000098 1A39400A bbo r10,r8,ib.f ; (~28 & 0x1F) - 49 0000009C 1239400A bbo r10,r8,ob.f ; (~29 & 0x1F) - 50 000000A0 0A39400A bbo r10,r8,uo.f ; (~30 & 0x1F) - 51 000000A4 0239400A bbo r10,r8,or.f ; (~31 & 0x1F) - 52 - 53 000000A8 FA39400A bbo r10,r8,0 - 54 000000AC F239400A bbo r10,r8,1 - 55 000000B0 EA39400A bbo r10,r8,2 - MVP MP Macro Assembler Version 1.13 Sat Feb 22 21:37:15 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -bitnum.s PAGE 2 - - 56 000000B4 E239400A bbo r10,r8,3 - 57 000000B8 DA39400A bbo r10,r8,4 - 58 000000BC D239400A bbo r10,r8,5 - 59 000000C0 CA39400A bbo r10,r8,6 - 60 000000C4 C239400A bbo r10,r8,7 - 61 000000C8 BA39400A bbo r10,r8,8 - 62 000000CC B239400A bbo r10,r8,9 - 63 000000D0 AA39400A bbo r10,r8,10 - 64 000000D4 A239400A bbo r10,r8,11 - 65 000000D8 9A39400A bbo r10,r8,12 - 66 000000DC 9239400A bbo r10,r8,13 - 67 000000E0 8A39400A bbo r10,r8,14 - 68 000000E4 8239400A bbo r10,r8,15 - 69 000000E8 7A39400A bbo r10,r8,16 - 70 000000EC 7239400A bbo r10,r8,17 - 71 000000F0 6A39400A bbo r10,r8,18 - 72 000000F4 6239400A bbo r10,r8,19 - 73 000000F8 5A39400A bbo r10,r8,20 - 74 000000FC 5239400A bbo r10,r8,21 - 75 00000100 4A39400A bbo r10,r8,22 - 76 00000104 4239400A bbo r10,r8,23 - 77 00000108 3A39400A bbo r10,r8,24 - 78 0000010C 3239400A bbo r10,r8,25 - 79 00000110 2A39400A bbo r10,r8,26 - 80 00000114 2239400A bbo r10,r8,27 - 81 00000118 1A39400A bbo r10,r8,28 - 82 0000011C 1239400A bbo r10,r8,29 - 83 00000120 0A39400A bbo r10,r8,30 - 84 00000124 0239400A bbo r10,r8,31 - 85 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/bitnum.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/bitnum.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/bitnum.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/bitnum.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,85 +0,0 @@ -;; Test that all the predefined symbol names for the BITNUM field -;; are properly accepted and translated to numeric values. Also -;; verifies that they are disassembled correctly as symbolics, and -;; that the raw numeric values are handled correctly (stored as -;; the one's complement of the operand numeric value. - - bbo r10,r8,eq.b ; (~0 & 0x1F) - bbo r10,r8,ne.b ; (~1 & 0x1F) - bbo r10,r8,gt.b ; (~2 & 0x1F) - bbo r10,r8,le.b ; (~3 & 0x1F) - bbo r10,r8,lt.b ; (~4 & 0x1F) - bbo r10,r8,ge.b ; (~5 & 0x1F) - bbo r10,r8,hi.b ; (~6 & 0x1F) - bbo r10,r8,ls.b ; (~7 & 0x1F) - bbo r10,r8,lo.b ; (~8 & 0x1F) - bbo r10,r8,hs.b ; (~9 & 0x1F) - - bbo r10,r8,eq.h ; (~10 & 0x1F) - bbo r10,r8,ne.h ; (~11 & 0x1F) - bbo r10,r8,gt.h ; (~12 & 0x1F) - bbo r10,r8,le.h ; (~13 & 0x1F) - bbo r10,r8,lt.h ; (~14 & 0x1F) - bbo r10,r8,ge.h ; (~15 & 0x1F) - bbo r10,r8,hi.h ; (~16 & 0x1F) - bbo r10,r8,ls.h ; (~17 & 0x1F) - bbo r10,r8,lo.h ; (~18 & 0x1F) - bbo r10,r8,hs.h ; (~19 & 0x1F) - - bbo r10,r8,eq.w ; (~20 & 0x1F) - bbo r10,r8,ne.w ; (~21 & 0x1F) - bbo r10,r8,gt.w ; (~22 & 0x1F) - bbo r10,r8,le.w ; (~23 & 0x1F) - bbo r10,r8,lt.w ; (~24 & 0x1F) - bbo r10,r8,ge.w ; (~25 & 0x1F) - bbo r10,r8,hi.w ; (~26 & 0x1F) - bbo r10,r8,ls.w ; (~27 & 0x1F) - bbo r10,r8,lo.w ; (~28 & 0x1F) - bbo r10,r8,hs.w ; (~29 & 0x1F) - - bbo r10,r8,eq.f ; (~20 & 0x1F) - bbo r10,r8,ne.f ; (~21 & 0x1F) - bbo r10,r8,gt.f ; (~22 & 0x1F) - bbo r10,r8,le.f ; (~23 & 0x1F) - bbo r10,r8,lt.f ; (~24 & 0x1F) - bbo r10,r8,ge.f ; (~25 & 0x1F) - bbo r10,r8,ou.f ; (~26 & 0x1F) - bbo r10,r8,in.f ; (~27 & 0x1F) - bbo r10,r8,ib.f ; (~28 & 0x1F) - bbo r10,r8,ob.f ; (~29 & 0x1F) - bbo r10,r8,uo.f ; (~30 & 0x1F) - bbo r10,r8,or.f ; (~31 & 0x1F) - - bbo r10,r8,0 - bbo r10,r8,1 - bbo r10,r8,2 - bbo r10,r8,3 - bbo r10,r8,4 - bbo r10,r8,5 - bbo r10,r8,6 - bbo r10,r8,7 - bbo r10,r8,8 - bbo r10,r8,9 - bbo r10,r8,10 - bbo r10,r8,11 - bbo r10,r8,12 - bbo r10,r8,13 - bbo r10,r8,14 - bbo r10,r8,15 - bbo r10,r8,16 - bbo r10,r8,17 - bbo r10,r8,18 - bbo r10,r8,19 - bbo r10,r8,20 - bbo r10,r8,21 - bbo r10,r8,22 - bbo r10,r8,23 - bbo r10,r8,24 - bbo r10,r8,25 - bbo r10,r8,26 - bbo r10,r8,27 - bbo r10,r8,28 - bbo r10,r8,29 - bbo r10,r8,30 - bbo r10,r8,31 - diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/ccode.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/ccode.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/ccode.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/ccode.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,32 +0,0 @@ -#objdump: -d -#name: TIc80 coverage of symbolic condition code values - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 07 a0 79 01.* - 4: 07 a0 79 09.* - 8: 07 a0 79 11.* - c: 07 a0 79 19.* - 10: 07 a0 79 21.* - 14: 07 a0 79 29.* - 18: 07 a0 79 31.* - 1c: 07 a0 79 39.* - 20: 07 a0 79 41.* - 24: 07 a0 79 49.* - 28: 07 a0 79 51.* - 2c: 07 a0 79 59.* - 30: 07 a0 79 61.* - 34: 07 a0 79 69.* - 38: 07 a0 79 71.* - 3c: 07 a0 79 79.* - 40: 07 a0 79 81.* - 44: 07 a0 79 89.* - 48: 07 a0 79 91.* - 4c: 07 a0 79 99.* - 50: 07 a0 79 a1.* - 54: 07 a0 79 a9.* - 58: 07 a0 79 b1.* - 5c: 07 a0 79 b9.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/ccode.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/ccode.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/ccode.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/ccode.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,37 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Mon Feb 10 17:00:49 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -ccode.s PAGE 1 - - 1 ;; Test that all the predefined symbol names for the condition - 2 ;; codes are properly accepted and translated to numeric values. - 3 ;; Also verifies that they are disassembled correctly as symbolics. - 4 - 5 00000000 0179A007 bcnd.a r7,r5,nev.b ; 00000 - 6 00000004 0979A007 bcnd.a r7,r5,gt0.b ; 00001 - 7 00000008 1179A007 bcnd.a r7,r5,eq0.b ; 00010 - 8 0000000C 1979A007 bcnd.a r7,r5,ge0.b ; 00011 - 9 00000010 2179A007 bcnd.a r7,r5,lt0.b ; 00100 - 10 00000014 2979A007 bcnd.a r7,r5,ne0.b ; 00101 - 11 00000018 3179A007 bcnd.a r7,r5,le0.b ; 00110 - 12 0000001C 3979A007 bcnd.a r7,r5,alw.b ; 00111 - 13 - 14 00000020 4179A007 bcnd.a r7,r5,nev.h ; 01000 - 15 00000024 4979A007 bcnd.a r7,r5,gt0.h ; 01001 - 16 00000028 5179A007 bcnd.a r7,r5,eq0.h ; 01010 - 17 0000002C 5979A007 bcnd.a r7,r5,ge0.h ; 01011 - 18 00000030 6179A007 bcnd.a r7,r5,lt0.h ; 01100 - 19 00000034 6979A007 bcnd.a r7,r5,ne0.h ; 01101 - 20 00000038 7179A007 bcnd.a r7,r5,le0.h ; 01110 - 21 0000003C 7979A007 bcnd.a r7,r5,alw.h ; 01111 - 22 - 23 00000040 8179A007 bcnd.a r7,r5,nev.w ; 10000 - 24 00000044 8979A007 bcnd.a r7,r5,gt0.w ; 10001 - 25 00000048 9179A007 bcnd.a r7,r5,eq0.w ; 10010 - 26 0000004C 9979A007 bcnd.a r7,r5,ge0.w ; 10011 - 27 00000050 A179A007 bcnd.a r7,r5,lt0.w ; 10100 - 28 00000054 A979A007 bcnd.a r7,r5,ne0.w ; 10101 - 29 00000058 B179A007 bcnd.a r7,r5,le0.w ; 10110 - 30 0000005C B979A007 bcnd.a r7,r5,alw.w ; 10111 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/ccode.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/ccode.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/ccode.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/ccode.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,30 +0,0 @@ -;; Test that all the predefined symbol names for the condition -;; codes are properly accepted and translated to numeric values. -;; Also verifies that they are disassembled correctly as symbolics. - - bcnd.a r7,r5,nev.b ; 00000 - bcnd.a r7,r5,gt0.b ; 00001 - bcnd.a r7,r5,eq0.b ; 00010 - bcnd.a r7,r5,ge0.b ; 00011 - bcnd.a r7,r5,lt0.b ; 00100 - bcnd.a r7,r5,ne0.b ; 00101 - bcnd.a r7,r5,le0.b ; 00110 - bcnd.a r7,r5,alw.b ; 00111 - - bcnd.a r7,r5,nev.h ; 01000 - bcnd.a r7,r5,gt0.h ; 01001 - bcnd.a r7,r5,eq0.h ; 01010 - bcnd.a r7,r5,ge0.h ; 01011 - bcnd.a r7,r5,lt0.h ; 01100 - bcnd.a r7,r5,ne0.h ; 01101 - bcnd.a r7,r5,le0.h ; 01110 - bcnd.a r7,r5,alw.h ; 01111 - - bcnd.a r7,r5,nev.w ; 10000 - bcnd.a r7,r5,gt0.w ; 10001 - bcnd.a r7,r5,eq0.w ; 10010 - bcnd.a r7,r5,ge0.w ; 10011 - bcnd.a r7,r5,lt0.w ; 10100 - bcnd.a r7,r5,ne0.w ; 10101 - bcnd.a r7,r5,le0.w ; 10110 - bcnd.a r7,r5,alw.w ; 10111 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/cregops.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/cregops.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/cregops.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/cregops.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,68 +0,0 @@ -#objdump: -d -#name: TIc80 control register operands - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 34 00 02 10.* - 4: 39 00 02 10.* - 8: 3a 00 02 10.* - c: 02 00 02 10.* - 10: 00 05 02 10.* - 14: 00 04 02 10.* - 18: 01 04 02 10.* - 1c: 0a 04 02 10.* - 20: 0b 04 02 10.* - 24: 0c 04 02 10.* - 28: 0d 04 02 10.* - 2c: 0e 04 02 10.* - 30: 0f 04 02 10.* - 34: 02 04 02 10.* - 38: 03 04 02 10.* - 3c: 04 04 02 10.* - 40: 05 04 02 10.* - 44: 06 04 02 10.* - 48: 07 04 02 10.* - 4c: 08 04 02 10.* - 50: 09 04 02 10.* - 54: 33 00 02 10.* - 58: 01 00 02 10.* - 5c: 00 00 02 10.* - 60: 11 00 02 10.* - 64: 14 00 02 10.* - 68: 13 00 02 10.* - 6c: 10 00 02 10.* - 70: 12 00 02 10.* - 74: 08 00 02 10.* - 78: 06 00 02 10.* - 7c: 00 03 02 10.* - 80: 00 40 02 10.* - 84: 01 40 02 10.* - 88: 04 00 02 10.* - 8c: 00 02 02 10.* - 90: 01 02 02 10.* - 94: 0a 02 02 10.* - 98: 0b 02 02 10.* - 9c: 0c 02 02 10.* - a0: 0d 02 02 10.* - a4: 0e 02 02 10.* - a8: 0f 02 02 10.* - ac: 02 02 02 10.* - b0: 03 02 02 10.* - b4: 04 02 02 10.* - b8: 05 02 02 10.* - bc: 06 02 02 10.* - c0: 07 02 02 10.* - c4: 08 02 02 10.* - c8: 09 02 02 10.* - cc: 31 00 02 10.* - d0: 30 00 02 10.* - d4: 02 40 02 10.* - d8: 0d 00 02 10.* - dc: 0a 00 02 10.* - e0: 20 00 02 10.* - e4: 21 00 02 10.* - e8: 0e 00 02 10.* - ec: 0f 00 02 10.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/cregops.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/cregops.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/cregops.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/cregops.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,76 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Mon Feb 10 17:00:56 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -cregops.s PAGE 1 - - 1 ;; Test that all predefined symbol names for control registers - 2 ;; are properly accepted and translated to numeric values. Also - 3 ;; verifies that they are diassembled correctly as symbolics. - 4 - 5 00000000 10020034 rdcr ANASTAT,r2 - 6 00000004 10020039 rdcr BRK1,r2 - 7 00000008 1002003A rdcr BRK2,r2 - 8 0000000C 10020002 rdcr CONFIG,r2 - 9 00000010 10020500 rdcr DLRU,r2 - 10 00000014 10020400 rdcr DTAG0,r2 - 11 00000018 10020401 rdcr DTAG1,r2 - 12 0000001C 1002040A rdcr DTAG10,r2 - 13 00000020 1002040B rdcr DTAG11,r2 - 14 00000024 1002040C rdcr DTAG12,r2 - 15 00000028 1002040D rdcr DTAG13,r2 - 16 0000002C 1002040E rdcr DTAG14,r2 - 17 00000030 1002040F rdcr DTAG15,r2 - 18 00000034 10020402 rdcr DTAG2,r2 - 19 00000038 10020403 rdcr DTAG3,r2 - 20 0000003C 10020404 rdcr DTAG4,r2 - 21 00000040 10020405 rdcr DTAG5,r2 - 22 00000044 10020406 rdcr DTAG6,r2 - 23 00000048 10020407 rdcr DTAG7,r2 - 24 0000004C 10020408 rdcr DTAG8,r2 - 25 00000050 10020409 rdcr DTAG9,r2 - 26 00000054 10020033 rdcr ECOMCNTL,r2 - 27 00000058 10020001 rdcr EIP,r2 - 28 0000005C 10020000 rdcr EPC,r2 - 29 00000060 10020011 rdcr FLTADR,r2 - 30 00000064 10020014 rdcr FLTDTH,r2 - 31 00000068 10020013 rdcr FLTDTL,r2 - 32 0000006C 10020010 rdcr FLTOP,r2 - 33 00000070 10020012 rdcr FLTTAG,r2 - 34 00000074 10020008 rdcr FPST,r2 - 35 00000078 10020006 rdcr IE,r2 - 36 0000007C 10020300 rdcr ILRU,r2 - 37 00000080 10024000 rdcr IN0P,r2 - 38 00000084 10024001 rdcr IN1P,r2 - 39 00000088 10020004 rdcr INTPEN,r2 - 40 0000008C 10020200 rdcr ITAG0,r2 - 41 00000090 10020201 rdcr ITAG1,r2 - 42 00000094 1002020A rdcr ITAG10,r2 - 43 00000098 1002020B rdcr ITAG11,r2 - 44 0000009C 1002020C rdcr ITAG12,r2 - 45 000000A0 1002020D rdcr ITAG13,r2 - 46 000000A4 1002020E rdcr ITAG14,r2 - 47 000000A8 1002020F rdcr ITAG15,r2 - 48 000000AC 10020202 rdcr ITAG2,r2 - 49 000000B0 10020203 rdcr ITAG3,r2 - 50 000000B4 10020204 rdcr ITAG4,r2 - 51 000000B8 10020205 rdcr ITAG5,r2 - 52 000000BC 10020206 rdcr ITAG6,r2 - 53 000000C0 10020207 rdcr ITAG7,r2 - 54 000000C4 10020208 rdcr ITAG8,r2 - 55 000000C8 10020209 rdcr ITAG9,r2 - MVP MP Macro Assembler Version 1.13 Mon Feb 10 17:00:56 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -cregops.s PAGE 2 - - 56 000000CC 10020031 rdcr MIP,r2 - 57 000000D0 10020030 rdcr MPC,r2 - 58 000000D4 10024002 rdcr OUTP,r2 - 59 000000D8 1002000D rdcr PKTREQ,r2 - 60 000000DC 1002000A rdcr PPERROR,r2 - 61 000000E0 10020020 rdcr SYSSTK,r2 - 62 000000E4 10020021 rdcr SYSTMP,r2 - 63 000000E8 1002000E rdcr TCOUNT,r2 - 64 000000EC 1002000F rdcr TSCALE,r2 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/cregops.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/cregops.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/cregops.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/cregops.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,64 +0,0 @@ -;; Test that all predefined symbol names for control registers -;; are properly accepted and translated to numeric values. Also -;; verifies that they are diassembled correctly as symbolics. - - rdcr ANASTAT,r2 - rdcr BRK1,r2 - rdcr BRK2,r2 - rdcr CONFIG,r2 - rdcr DLRU,r2 - rdcr DTAG0,r2 - rdcr DTAG1,r2 - rdcr DTAG10,r2 - rdcr DTAG11,r2 - rdcr DTAG12,r2 - rdcr DTAG13,r2 - rdcr DTAG14,r2 - rdcr DTAG15,r2 - rdcr DTAG2,r2 - rdcr DTAG3,r2 - rdcr DTAG4,r2 - rdcr DTAG5,r2 - rdcr DTAG6,r2 - rdcr DTAG7,r2 - rdcr DTAG8,r2 - rdcr DTAG9,r2 - rdcr ECOMCNTL,r2 - rdcr EIP,r2 - rdcr EPC,r2 - rdcr FLTADR,r2 - rdcr FLTDTH,r2 - rdcr FLTDTL,r2 - rdcr FLTOP,r2 - rdcr FLTTAG,r2 - rdcr FPST,r2 - rdcr IE,r2 - rdcr ILRU,r2 - rdcr IN0P,r2 - rdcr IN1P,r2 - rdcr INTPEN,r2 - rdcr ITAG0,r2 - rdcr ITAG1,r2 - rdcr ITAG10,r2 - rdcr ITAG11,r2 - rdcr ITAG12,r2 - rdcr ITAG13,r2 - rdcr ITAG14,r2 - rdcr ITAG15,r2 - rdcr ITAG2,r2 - rdcr ITAG3,r2 - rdcr ITAG4,r2 - rdcr ITAG5,r2 - rdcr ITAG6,r2 - rdcr ITAG7,r2 - rdcr ITAG8,r2 - rdcr ITAG9,r2 - rdcr MIP,r2 - rdcr MPC,r2 - rdcr OUTP,r2 - rdcr PKTREQ,r2 - rdcr PPERROR,r2 - rdcr SYSSTK,r2 - rdcr SYSTMP,r2 - rdcr TCOUNT,r2 - rdcr TSCALE,r2 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/endmask.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/endmask.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/endmask.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/endmask.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,41 +0,0 @@ -#objdump: -d -#name: TIc80 coverage of shift instruction ENDMASK field - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 05 00 c7 49.* - 4: 25 00 c7 49.* - 8: 45 00 c7 49.* - c: 65 00 c7 49.* - 10: 85 00 c7 49.* - 14: a5 00 c7 49.* - 18: c5 00 c7 49.* - 1c: e5 00 c7 49.* - 20: 05 01 c7 49.* - 24: 25 01 c7 49.* - 28: 45 01 c7 49.* - 2c: 65 01 c7 49.* - 30: 85 01 c7 49.* - 34: a5 01 c7 49.* - 38: c5 01 c7 49.* - 3c: e5 01 c7 49.* - 40: 05 02 c7 49.* - 44: 25 02 c7 49.* - 48: 45 02 c7 49.* - 4c: 65 02 c7 49.* - 50: 85 02 c7 49.* - 54: a5 02 c7 49.* - 58: c5 02 c7 49.* - 5c: e5 02 c7 49.* - 60: 05 03 c7 49.* - 64: 25 03 c7 49.* - 68: 45 03 c7 49.* - 6c: 65 03 c7 49.* - 70: 85 03 c7 49.* - 74: a5 03 c7 49.* - 78: c5 03 c7 49.* - 7c: e5 03 c7 49.* - 80: 05 00 c7 49.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/endmask.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/endmask.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/endmask.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/endmask.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,45 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Mon Feb 10 17:00:29 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -endmask.s PAGE 1 - - 1 ;; Test all possible combinations of the endmask in bits 5-9. - 2 ;; The mask that is used is computed as 2**bits-1 where bits - 3 ;; are the bits 5-9 from the instruction. Note that 0 and 32 - 4 ;; are treated identically, and disassembled as 0. - 5 - 6 00000000 49C70005 sl.iz 5,0,r7,r9 - 7 00000004 49C70025 sl.iz 5,1,r7,r9 - 8 00000008 49C70045 sl.iz 5,2,r7,r9 - 9 0000000C 49C70065 sl.iz 5,3,r7,r9 - 10 00000010 49C70085 sl.iz 5,4,r7,r9 - 11 00000014 49C700A5 sl.iz 5,5,r7,r9 - 12 00000018 49C700C5 sl.iz 5,6,r7,r9 - 13 0000001C 49C700E5 sl.iz 5,7,r7,r9 - 14 00000020 49C70105 sl.iz 5,8,r7,r9 - 15 00000024 49C70125 sl.iz 5,9,r7,r9 - 16 00000028 49C70145 sl.iz 5,10,r7,r9 - 17 0000002C 49C70165 sl.iz 5,11,r7,r9 - 18 00000030 49C70185 sl.iz 5,12,r7,r9 - 19 00000034 49C701A5 sl.iz 5,13,r7,r9 - 20 00000038 49C701C5 sl.iz 5,14,r7,r9 - 21 0000003C 49C701E5 sl.iz 5,15,r7,r9 - 22 00000040 49C70205 sl.iz 5,16,r7,r9 - 23 00000044 49C70225 sl.iz 5,17,r7,r9 - 24 00000048 49C70245 sl.iz 5,18,r7,r9 - 25 0000004C 49C70265 sl.iz 5,19,r7,r9 - 26 00000050 49C70285 sl.iz 5,20,r7,r9 - 27 00000054 49C702A5 sl.iz 5,21,r7,r9 - 28 00000058 49C702C5 sl.iz 5,22,r7,r9 - 29 0000005C 49C702E5 sl.iz 5,23,r7,r9 - 30 00000060 49C70305 sl.iz 5,24,r7,r9 - 31 00000064 49C70325 sl.iz 5,25,r7,r9 - 32 00000068 49C70345 sl.iz 5,26,r7,r9 - 33 0000006C 49C70365 sl.iz 5,27,r7,r9 - 34 00000070 49C70385 sl.iz 5,28,r7,r9 - 35 00000074 49C703A5 sl.iz 5,29,r7,r9 - 36 00000078 49C703C5 sl.iz 5,30,r7,r9 - 37 0000007C 49C703E5 sl.iz 5,31,r7,r9 - 38 00000080 49C70005 sl.iz 5,32,r7,r9 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/endmask.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/endmask.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/endmask.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/endmask.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,38 +0,0 @@ -;; Test all possible combinations of the endmask in bits 5-9. -;; The mask that is used is computed as 2**bits-1 where bits -;; are the bits 5-9 from the instruction. Note that 0 and 32 -;; are treated identically, and disassembled as 0. - - sl.iz 5,0,r7,r9 - sl.iz 5,1,r7,r9 - sl.iz 5,2,r7,r9 - sl.iz 5,3,r7,r9 - sl.iz 5,4,r7,r9 - sl.iz 5,5,r7,r9 - sl.iz 5,6,r7,r9 - sl.iz 5,7,r7,r9 - sl.iz 5,8,r7,r9 - sl.iz 5,9,r7,r9 - sl.iz 5,10,r7,r9 - sl.iz 5,11,r7,r9 - sl.iz 5,12,r7,r9 - sl.iz 5,13,r7,r9 - sl.iz 5,14,r7,r9 - sl.iz 5,15,r7,r9 - sl.iz 5,16,r7,r9 - sl.iz 5,17,r7,r9 - sl.iz 5,18,r7,r9 - sl.iz 5,19,r7,r9 - sl.iz 5,20,r7,r9 - sl.iz 5,21,r7,r9 - sl.iz 5,22,r7,r9 - sl.iz 5,23,r7,r9 - sl.iz 5,24,r7,r9 - sl.iz 5,25,r7,r9 - sl.iz 5,26,r7,r9 - sl.iz 5,27,r7,r9 - sl.iz 5,28,r7,r9 - sl.iz 5,29,r7,r9 - sl.iz 5,30,r7,r9 - sl.iz 5,31,r7,r9 - sl.iz 5,32,r7,r9 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/float.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/float.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/float.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/float.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,40 +0,0 @@ -#objdump: -d -#name: TIc80 simple floating point operands - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 80 12 be 51 16 68 a9 65.* - 8: 00 12 be 51 16 68 a9 e5.* - 10: 00 10 be 51 9a 6d 41 19.* - 18: 80 b0 3e 52 9a 6d 41 99.* - 20: 00 b0 3e 52 00 00 00 00.* - 28: 80 72 be 51 00 00 00 40.* - 30: 00 72 be 51 00 00 00 3f.* - 38: 00 70 be 51 00 00 80 45.* - 40: 80 52 be 51 00 00 80 c5.* - 48: 00 52 be 51 00 00 00 40.* - 50: 00 50 be 51 00 00 00 40.* - 58: 80 93 3e 40 00 00 00 40.* - 60: 80 95 3e 40 00 00 00 40.* - 68: 80 91 3e 40 00 00 00 40.* - 70: 80 97 3e 40 00 00 00 40.* - 78: 00 92 3e 40 00 00 00 40.* - 80: 00 94 3e 40 00 00 00 40.* - 88: 00 90 3e 40 00 00 00 40.* - 90: 00 96 3e 40 00 00 00 40.* - 98: 00 93 3e 40 00 00 00 40.* - a0: 00 95 3e 40 00 00 00 40.* - a8: 00 91 3e 40 00 00 00 40.* - b0: 00 97 3e 40 00 00 00 40.* - b8: 80 92 3e 40 00 00 00 40.* - c0: 80 94 3e 40 00 00 00 40.* - c8: 80 90 3e 40 00 00 00 40.* - d0: 80 96 3e 40 00 00 00 40.* - d8: 00 f2 3e 50 00 00 00 40.* - e0: 00 f0 3e 50 00 00 00 40.* - e8: 80 32 be 51 00 00 00 40.* - f0: 00 32 be 51 00 00 00 40.* - f8: 00 30 be 51 00 00 00 40.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/float.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/float.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/float.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/float.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,76 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Wed Feb 26 22:09:09 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -float.s PAGE 1 - - 1 00000000 51BE1280 fadd.sdd 1.0E23,r6,r10 ; Immediate form - 00000004 65A96816 - 2 00000008 51BE1200 fadd.ssd -1.0E23,r6,r10 ; Immediate form - 0000000C E5A96816 - 3 00000010 51BE1000 fadd.sss 1.0E-23,r6,r10 ; Immediate form - 00000014 19416D9A - 4 00000018 523EB080 fcmp.sd -1.0E-23,r8,r10 ; Immediate form - 0000001C 99416D9A - 5 00000020 523EB000 fcmp.ss 0.0,r8,r10 ; Immediate form - 00000024 00000000 - 6 00000028 51BE7280 fdiv.sdd 2.0,r6,r10 ; Immediate form - 0000002C 40000000 - 7 00000030 51BE7200 fdiv.ssd 0.5,r6,r10 ; Immediate form - 00000034 3F000000 - 8 00000038 51BE7000 fdiv.sss 4096.0,r6,r10 ; Immediate form - 0000003C 45800000 - 9 00000040 51BE5280 fmpy.sdd -4096.0,r6,r10 ; Immediate form - 00000044 C5800000 - 10 00000048 51BE5200 fmpy.ssd 2.0,r6,r10 ; Immediate form - 0000004C 40000000 - 11 00000050 51BE5000 fmpy.sss 2.0,r6,r10 ; Immediate form - 00000054 40000000 - 12 00000058 403E9380 frndm.sd 2.0,r8 ; Immediate form - 0000005C 40000000 - 13 00000060 403E9580 frndm.si 2.0,r8 ; Immediate form - 00000064 40000000 - 14 00000068 403E9180 frndm.ss 2.0,r8 ; Immediate form - 0000006C 40000000 - 15 00000070 403E9780 frndm.su 2.0,r8 ; Immediate form - 00000074 40000000 - 16 00000078 403E9200 frndn.sd 2.0,r8 ; Immediate form - 0000007C 40000000 - 17 00000080 403E9400 frndn.si 2.0,r8 ; Immediate form - 00000084 40000000 - 18 00000088 403E9000 frndn.ss 2.0,r8 ; Immediate form - 0000008C 40000000 - 19 00000090 403E9600 frndn.su 2.0,r8 ; Immediate form - 00000094 40000000 - 20 00000098 403E9300 frndp.sd 2.0,r8 ; Immediate form - 0000009C 40000000 - 21 000000A0 403E9500 frndp.si 2.0,r8 ; Immediate form - 000000A4 40000000 - 22 000000A8 403E9100 frndp.ss 2.0,r8 ; Immediate form - 000000AC 40000000 - 23 000000B0 403E9700 frndp.su 2.0,r8 ; Immediate form - 000000B4 40000000 - 24 000000B8 403E9280 frndz.sd 2.0,r8 ; Immediate form - 000000BC 40000000 - 25 000000C0 403E9480 frndz.si 2.0,r8 ; Immediate form - 000000C4 40000000 - 26 000000C8 403E9080 frndz.ss 2.0,r8 ; Immediate form - 000000CC 40000000 - 27 000000D0 403E9680 frndz.su 2.0,r8 ; Immediate form - 000000D4 40000000 - 28 000000D8 503EF200 fsqrt.sd 2.0,r10 ; Immediate form - MVP MP Macro Assembler Version 1.13 Wed Feb 26 22:09:09 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -float.s PAGE 2 - - 000000DC 40000000 - 29 000000E0 503EF000 fsqrt.ss 2.0,r10 ; Immediate form - 000000E4 40000000 - 30 000000E8 51BE3280 fsub.sdd 2.0,r6,r10 ; Immediate form - 000000EC 40000000 - 31 000000F0 51BE3200 fsub.ssd 2.0,r6,r10 ; Immediate form - 000000F4 40000000 - 32 000000F8 51BE3000 fsub.sss 2.0,r6,r10 ; Immediate form - 000000FC 40000000 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/float.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/float.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/float.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/float.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,32 +0,0 @@ - fadd.sdd 0f1.0E23,r6,r10 ; Immediate form - fadd.ssd 0f-1.0E23,r6,r10 ; Immediate form - fadd.sss 0f1.0E-23,r6,r10 ; Immediate form - fcmp.sd 0f-1.0E-23,r8,r10 ; Immediate form - fcmp.ss 0f0.0,r8,r10 ; Immediate form - fdiv.sdd 0f2.0,r6,r10 ; Immediate form - fdiv.ssd 0f0.5,r6,r10 ; Immediate form - fdiv.sss 0f4096.0,r6,r10 ; Immediate form - fmpy.sdd 0f-4096.0,r6,r10 ; Immediate form - fmpy.ssd 0f2.0,r6,r10 ; Immediate form - fmpy.sss 0f2.0,r6,r10 ; Immediate form - frndm.sd 0f2.0,r8 ; Immediate form - frndm.si 0f2.0,r8 ; Immediate form - frndm.ss 0f2.0,r8 ; Immediate form - frndm.su 0f2.0,r8 ; Immediate form - frndn.sd 0f2.0,r8 ; Immediate form - frndn.si 0f2.0,r8 ; Immediate form - frndn.ss 0f2.0,r8 ; Immediate form - frndn.su 0f2.0,r8 ; Immediate form - frndp.sd 0f2.0,r8 ; Immediate form - frndp.si 0f2.0,r8 ; Immediate form - frndp.ss 0f2.0,r8 ; Immediate form - frndp.su 0f2.0,r8 ; Immediate form - frndz.sd 0f2.0,r8 ; Immediate form - frndz.si 0f2.0,r8 ; Immediate form - frndz.ss 0f2.0,r8 ; Immediate form - frndz.su 0f2.0,r8 ; Immediate form - fsqrt.sd 0f2.0,r10 ; Immediate form - fsqrt.ss 0f2.0,r10 ; Immediate form - fsub.sdd 0f2.0,r6,r10 ; Immediate form - fsub.ssd 0f2.0,r6,r10 ; Immediate form - fsub.sss 0f2.0,r6,r10 ; Immediate form diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops2.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops2.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops2.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops2.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,68 +0,0 @@ -#objdump: -d -#name: TIc80 register operands with :m modifier - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 08 80 b7 02.* - 4: 04 00 9e 02.* - 8: fc 7f 9e 02.* - c: 00 90 b7 02 78 56 34 12.* - 14: 00 90 b7 02 ef be ad de.* - 1c: 08 80 b7 0a.* - 20: 04 00 9e 0a.* - 24: fc 7f 9e 0a.* - 28: 00 90 b7 0a 78 56 34 12.* - 30: 00 90 b7 0a ef be ad de.* - 38: 04 84 b4 41.* - 3c: 04 a4 b4 41.* - 40: 04 c4 b4 41.* - 44: 04 e4 b4 41.* - 48: 00 94 b4 41 00 00 00 e0.* - 50: 00 b4 b4 41 00 00 00 e0.* - 58: 00 d4 b4 41 00 00 00 e0.* - 60: 00 f4 b4 41 00 00 00 e0.* - 68: 04 84 b5 41.* - 6c: 04 a4 b5 41.* - 70: 00 94 b5 41 00 00 00 e0.* - 78: 00 b4 b5 41 00 00 00 e0.* - 80: 04 84 b6 41.* - 84: 04 a4 b6 41.* - 88: 04 c4 b6 41.* - 8c: 04 e4 b6 41.* - 90: 00 94 b6 41 00 00 00 e0.* - 98: 00 b4 b6 41 00 00 00 e0.* - a0: 00 d4 b6 41 00 00 00 e0.* - a8: 00 f4 b6 41 00 00 00 e0.* - b0: 04 80 b4 41.* - b4: 04 a0 b4 41.* - b8: 04 c0 b4 41.* - bc: 04 e0 b4 41.* - c0: f0 7f 92 41.* - c4: f0 ff 92 41.* - c8: f0 7f 93 41.* - cc: f0 ff 93 41.* - d0: 00 90 b4 41 00 00 00 e0.* - d8: 00 b0 b4 41 00 00 00 e0.* - e0: 00 d0 b4 41 00 00 00 e0.* - e8: 00 f0 b4 41 00 00 00 e0.* - f0: 04 80 b5 41.* - f4: 04 a0 b5 41.* - f8: f0 7f 96 41.* - fc: f0 ff 96 41.* - 100: 00 90 b5 41 00 00 00 e0.* - 108: 00 b0 b5 41 00 00 00 e0.* - 110: 04 80 b6 41.* - 114: 04 a0 b6 41.* - 118: 04 c0 b6 41.* - 11c: 04 e0 b6 41.* - 120: 00 7f 9a 41.* - 124: 00 ff 9a 41.* - 128: 00 7f 9b 41.* - 12c: 00 ff 9b 41.* - 130: 00 90 b6 41 00 00 00 e0.* - 138: 00 b0 b6 41 00 00 00 e0.* - 140: 00 d0 b6 41 00 00 00 e0.* - 148: 00 f0 b6 41 00 00 00 e0.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops2.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops2.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops2.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops2.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,96 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Wed Feb 26 14:32:14 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -regops2.s PAGE 1 - - 1 00000000 02B78008 dcachec r8(r10:m) ; Register form (modified) - 2 00000004 029E0004 dcachec 4(r10:m) ; Short Immediate form (positive offset) (modified) - 3 00000008 029E7FFC dcachec -4(r10:m) ; Short Immediate form (negative offset) (modified) - 4 0000000C 02B79000 dcachec 0x12345678(r10:m) ; Long Immediate form (positive offset) (modified) - 00000010 12345678 - 5 00000014 02B79000 dcachec 0xDEADBEEF(r10:m) ; Long Immediate form (negative offset) (modified) - 00000018 DEADBEEF - 6 0000001C 0AB78008 dcachef r8(r10:m) ; Register form (modified) - 7 00000020 0A9E0004 dcachef 4(r10:m) ; Short Immediate form (positive offset) (modified) - 8 00000024 0A9E7FFC dcachef -4(r10:m) ; Short Immediate form (negative offset) (modified) - 9 00000028 0AB79000 dcachef 0x12345678(r10:m) ; Long Immediate form (positive offset) (modified) - 0000002C 12345678 - 10 00000030 0AB79000 dcachef 0xDEADBEEF(r10:m) ; Long Immediate form (negative offset) (modified) - 00000034 DEADBEEF - 11 00000038 41B48404 dld.b r4(r6:m),r8 ; Register form - 12 0000003C 41B4A404 dld.h r4(r6:m),r8 ; Register form - 13 00000040 41B4C404 dld r4(r6:m),r8 ; Register form - 14 00000044 41B4E404 dld.d r4(r6:m),r8 ; Register form - 15 00000048 41B49400 dld.b 0xE0000000(r6:m),r8 ; Long Immediate form - 0000004C E0000000 - 16 00000050 41B4B400 dld.h 0xE0000000(r6:m),r8 ; Long Immediate form - 00000054 E0000000 - 17 00000058 41B4D400 dld 0xE0000000(r6:m),r8 ; Long Immediate form - 0000005C E0000000 - 18 00000060 41B4F400 dld.d 0xE0000000(r6:m),r8 ; Long Immediate form - 00000064 E0000000 - 19 00000068 41B58404 dld.ub r4(r6:m),r8 ; Register form - 20 0000006C 41B5A404 dld.uh r4(r6:m),r8 ; Register form - 21 00000070 41B59400 dld.ub 0xE0000000(r6:m),r8 ; Long Immediate form - 00000074 E0000000 - 22 00000078 41B5B400 dld.uh 0xE0000000(r6:m),r8 ; Long Immediate form - 0000007C E0000000 - 23 00000080 41B68404 dst.b r4(r6:m),r8 ; Register form - 24 00000084 41B6A404 dst.h r4(r6:m),r8 ; Register form - 25 00000088 41B6C404 dst r4(r6:m),r8 ; Register form - 26 0000008C 41B6E404 dst.d r4(r6:m),r8 ; Register form - 27 00000090 41B69400 dst.b 0xE0000000(r6:m),r8 ; Long Immediate form - 00000094 E0000000 - 28 00000098 41B6B400 dst.h 0xE0000000(r6:m),r8 ; Long Immediate form - 0000009C E0000000 - 29 000000A0 41B6D400 dst 0xE0000000(r6:m),r8 ; Long Immediate form - 000000A4 E0000000 - 30 000000A8 41B6F400 dst.d 0xE0000000(r6:m),r8 ; Long Immediate form - 000000AC E0000000 - 31 000000B0 41B48004 ld.b r4(r6:m),r8 ; Register form - 32 000000B4 41B4A004 ld.h r4(r6:m),r8 ; Register form - 33 000000B8 41B4C004 ld r4(r6:m),r8 ; Register form - 34 000000BC 41B4E004 ld.d r4(r6:m),r8 ; Register form - 35 000000C0 41927FF0 ld.b -16(r6:m),r8 ; Short Immediate form - 36 000000C4 4192FFF0 ld.h -16(r6:m),r8 ; Short Immediate form - 37 000000C8 41937FF0 ld -16(r6:m),r8 ; Short Immediate form - 38 000000CC 4193FFF0 ld.d -16(r6:m),r8 ; Short Immediate form - 39 000000D0 41B49000 ld.b 0xE0000000(r6:m),r8 ; Long Immediate form - 000000D4 E0000000 - 40 000000D8 41B4B000 ld.h 0xE0000000(r6:m),r8 ; Long Immediate form - MVP MP Macro Assembler Version 1.13 Wed Feb 26 14:32:14 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -regops2.s PAGE 2 - - 000000DC E0000000 - 41 000000E0 41B4D000 ld 0xE0000000(r6:m),r8 ; Long Immediate form - 000000E4 E0000000 - 42 000000E8 41B4F000 ld.d 0xE0000000(r6:m),r8 ; Long Immediate form - 000000EC E0000000 - 43 000000F0 41B58004 ld.ub r4(r6:m),r8 ; Register form - 44 000000F4 41B5A004 ld.uh r4(r6:m),r8 ; Register form - 45 000000F8 41967FF0 ld.ub -16(r6:m),r8 ; Short Immediate form - 46 000000FC 4196FFF0 ld.uh -16(r6:m),r8 ; Short Immediate form - 47 00000100 41B59000 ld.ub 0xE0000000(r6:m),r8 ; Long Immediate form - 00000104 E0000000 - 48 00000108 41B5B000 ld.uh 0xE0000000(r6:m),r8 ; Long Immediate form - 0000010C E0000000 - 49 00000110 41B68004 st.b r4(r6:m),r8 ; Register form - 50 00000114 41B6A004 st.h r4(r6:m),r8 ; Register form - 51 00000118 41B6C004 st r4(r6:m),r8 ; Register form - 52 0000011C 41B6E004 st.d r4(r6:m),r8 ; Register form - 53 00000120 419A7F00 st.b -256(r6:m),r8 ; Short Immediate form - 54 00000124 419AFF00 st.h -256(r6:m),r8 ; Short Immediate form - 55 00000128 419B7F00 st -256(r6:m),r8 ; Short Immediate form - 56 0000012C 419BFF00 st.d -256(r6:m),r8 ; Short Immediate form - 57 00000130 41B69000 st.b 0xE0000000(r6:m),r8 ; Long Immediate form - 00000134 E0000000 - 58 00000138 41B6B000 st.h 0xE0000000(r6:m),r8 ; Long Immediate form - 0000013C E0000000 - 59 00000140 41B6D000 st 0xE0000000(r6:m),r8 ; Long Immediate form - 00000144 E0000000 - 60 00000148 41B6F000 st.d 0xE0000000(r6:m),r8 ; Long Immediate form - 0000014C E0000000 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops2.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops2.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops2.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops2.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,60 +0,0 @@ - dcachec r8(r10:m) ; Register form (modified) - dcachec 4(r10:m) ; Short Immediate form (positive offset) (modified) - dcachec -4(r10:m) ; Short Immediate form (negative offset) (modified) - dcachec 0x12345678(r10:m) ; Long Immediate form (positive offset) (modified) - dcachec 0xDEADBEEF(r10:m) ; Long Immediate form (negative offset) (modified) - dcachef r8(r10:m) ; Register form (modified) - dcachef 4(r10:m) ; Short Immediate form (positive offset) (modified) - dcachef -4(r10:m) ; Short Immediate form (negative offset) (modified) - dcachef 0x12345678(r10:m) ; Long Immediate form (positive offset) (modified) - dcachef 0xDEADBEEF(r10:m) ; Long Immediate form (negative offset) (modified) - dld.b r4(r6:m),r8 ; Register form - dld.h r4(r6:m),r8 ; Register form - dld r4(r6:m),r8 ; Register form - dld.d r4(r6:m),r8 ; Register form - dld.b 0xE0000000(r6:m),r8 ; Long Immediate form - dld.h 0xE0000000(r6:m),r8 ; Long Immediate form - dld 0xE0000000(r6:m),r8 ; Long Immediate form - dld.d 0xE0000000(r6:m),r8 ; Long Immediate form - dld.ub r4(r6:m),r8 ; Register form - dld.uh r4(r6:m),r8 ; Register form - dld.ub 0xE0000000(r6:m),r8 ; Long Immediate form - dld.uh 0xE0000000(r6:m),r8 ; Long Immediate form - dst.b r4(r6:m),r8 ; Register form - dst.h r4(r6:m),r8 ; Register form - dst r4(r6:m),r8 ; Register form - dst.d r4(r6:m),r8 ; Register form - dst.b 0xE0000000(r6:m),r8 ; Long Immediate form - dst.h 0xE0000000(r6:m),r8 ; Long Immediate form - dst 0xE0000000(r6:m),r8 ; Long Immediate form - dst.d 0xE0000000(r6:m),r8 ; Long Immediate form - ld.b r4(r6:m),r8 ; Register form - ld.h r4(r6:m),r8 ; Register form - ld r4(r6:m),r8 ; Register form - ld.d r4(r6:m),r8 ; Register form - ld.b -16(r6:m),r8 ; Short Immediate form - ld.h -16(r6:m),r8 ; Short Immediate form - ld -16(r6:m),r8 ; Short Immediate form - ld.d -16(r6:m),r8 ; Short Immediate form - ld.b 0xE0000000(r6:m),r8 ; Long Immediate form - ld.h 0xE0000000(r6:m),r8 ; Long Immediate form - ld 0xE0000000(r6:m),r8 ; Long Immediate form - ld.d 0xE0000000(r6:m),r8 ; Long Immediate form - ld.ub r4(r6:m),r8 ; Register form - ld.uh r4(r6:m),r8 ; Register form - ld.ub -16(r6:m),r8 ; Short Immediate form - ld.uh -16(r6:m),r8 ; Short Immediate form - ld.ub 0xE0000000(r6:m),r8 ; Long Immediate form - ld.uh 0xE0000000(r6:m),r8 ; Long Immediate form - st.b r4(r6:m),r8 ; Register form - st.h r4(r6:m),r8 ; Register form - st r4(r6:m),r8 ; Register form - st.d r4(r6:m),r8 ; Register form - st.b -256(r6:m),r8 ; Short Immediate form - st.h -256(r6:m),r8 ; Short Immediate form - st -256(r6:m),r8 ; Short Immediate form - st.d -256(r6:m),r8 ; Short Immediate form - st.b 0xE0000000(r6:m),r8 ; Long Immediate form - st.h 0xE0000000(r6:m),r8 ; Long Immediate form - st 0xE0000000(r6:m),r8 ; Long Immediate form - st.d 0xE0000000(r6:m),r8 ; Long Immediate form diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops3.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops3.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops3.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops3.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,28 +0,0 @@ -#objdump: -d -#name: TIc80 register operands with :s modifier - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 04 0c b4 41.* - 4: 04 2c b4 41.* - 8: 04 4c b4 41.* - c: 04 6c b4 41.* - 10: 04 0c b5 41.* - 14: 04 2c b5 41.* - 18: 04 0c b6 41.* - 1c: 04 2c b6 41.* - 20: 04 4c b6 41.* - 24: 04 6c b6 41.* - 28: 04 08 b4 41.* - 2c: 04 28 b4 41.* - 30: 04 48 b4 41.* - 34: 04 68 b4 41.* - 38: 04 08 b5 41.* - 3c: 04 28 b5 41.* - 40: 04 08 b6 41.* - 44: 04 28 b6 41.* - 48: 04 48 b6 41.* - 4c: 04 68 b6 41.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops3.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops3.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops3.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops3.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,27 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Wed Feb 26 14:32:19 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -regops3.s PAGE 1 - - 1 00000000 41B40C04 dld.b r4:s(r6),r8 ; Register form - 2 00000004 41B42C04 dld.h r4:s(r6),r8 ; Register form - 3 00000008 41B44C04 dld r4:s(r6),r8 ; Register form - 4 0000000C 41B46C04 dld.d r4:s(r6),r8 ; Register form - 5 00000010 41B50C04 dld.ub r4:s(r6),r8 ; Register form - 6 00000014 41B52C04 dld.uh r4:s(r6),r8 ; Register form - 7 00000018 41B60C04 dst.b r4:s(r6),r8 ; Register form - 8 0000001C 41B62C04 dst.h r4:s(r6),r8 ; Register form - 9 00000020 41B64C04 dst r4:s(r6),r8 ; Register form - 10 00000024 41B66C04 dst.d r4:s(r6),r8 ; Register form - 11 00000028 41B40804 ld.b r4:s(r6),r8 ; Register form - 12 0000002C 41B42804 ld.h r4:s(r6),r8 ; Register form - 13 00000030 41B44804 ld r4:s(r6),r8 ; Register form - 14 00000034 41B46804 ld.d r4:s(r6),r8 ; Register form - 15 00000038 41B50804 ld.ub r4:s(r6),r8 ; Register form - 16 0000003C 41B52804 ld.uh r4:s(r6),r8 ; Register form - 17 00000040 41B60804 st.b r4:s(r6),r8 ; Register form - 18 00000044 41B62804 st.h r4:s(r6),r8 ; Register form - 19 00000048 41B64804 st r4:s(r6),r8 ; Register form - 20 0000004C 41B66804 st.d r4:s(r6),r8 ; Register form - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops3.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops3.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops3.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops3.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,20 +0,0 @@ - dld.b r4:s(r6),r8 ; Register form - dld.h r4:s(r6),r8 ; Register form - dld r4:s(r6),r8 ; Register form - dld.d r4:s(r6),r8 ; Register form - dld.ub r4:s(r6),r8 ; Register form - dld.uh r4:s(r6),r8 ; Register form - dst.b r4:s(r6),r8 ; Register form - dst.h r4:s(r6),r8 ; Register form - dst r4:s(r6),r8 ; Register form - dst.d r4:s(r6),r8 ; Register form - ld.b r4:s(r6),r8 ; Register form - ld.h r4:s(r6),r8 ; Register form - ld r4:s(r6),r8 ; Register form - ld.d r4:s(r6),r8 ; Register form - ld.ub r4:s(r6),r8 ; Register form - ld.uh r4:s(r6),r8 ; Register form - st.b r4:s(r6),r8 ; Register form - st.h r4:s(r6),r8 ; Register form - st r4:s(r6),r8 ; Register form - st.d r4:s(r6),r8 ; Register form diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops4.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops4.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops4.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops4.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,28 +0,0 @@ -#objdump: -d -#name: TIc80 register operands with both :m and :s modifier - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 04 8c b4 41.* - 4: 04 ac b4 41.* - 8: 04 cc b4 41.* - c: 04 ec b4 41.* - 10: 04 8c b5 41.* - 14: 04 ac b5 41.* - 18: 04 8c b6 41.* - 1c: 04 ac b6 41.* - 20: 04 cc b6 41.* - 24: 04 ec b6 41.* - 28: 04 88 b4 41.* - 2c: 04 a8 b4 41.* - 30: 04 c8 b4 41.* - 34: 04 e8 b4 41.* - 38: 04 88 b5 41.* - 3c: 04 a8 b5 41.* - 40: 04 88 b6 41.* - 44: 04 a8 b6 41.* - 48: 04 c8 b6 41.* - 4c: 04 e8 b6 41.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops4.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops4.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops4.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops4.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,27 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Wed Feb 26 14:32:25 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -regops4.s PAGE 1 - - 1 00000000 41B48C04 dld.b r4:s(r6:m),r8 ; Register form - 2 00000004 41B4AC04 dld.h r4:s(r6:m),r8 ; Register form - 3 00000008 41B4CC04 dld r4:s(r6:m),r8 ; Register form - 4 0000000C 41B4EC04 dld.d r4:s(r6:m),r8 ; Register form - 5 00000010 41B58C04 dld.ub r4:s(r6:m),r8 ; Register form - 6 00000014 41B5AC04 dld.uh r4:s(r6:m),r8 ; Register form - 7 00000018 41B68C04 dst.b r4:s(r6:m),r8 ; Register form - 8 0000001C 41B6AC04 dst.h r4:s(r6:m),r8 ; Register form - 9 00000020 41B6CC04 dst r4:s(r6:m),r8 ; Register form - 10 00000024 41B6EC04 dst.d r4:s(r6:m),r8 ; Register form - 11 00000028 41B48804 ld.b r4:s(r6:m),r8 ; Register form - 12 0000002C 41B4A804 ld.h r4:s(r6:m),r8 ; Register form - 13 00000030 41B4C804 ld r4:s(r6:m),r8 ; Register form - 14 00000034 41B4E804 ld.d r4:s(r6:m),r8 ; Register form - 15 00000038 41B58804 ld.ub r4:s(r6:m),r8 ; Register form - 16 0000003C 41B5A804 ld.uh r4:s(r6:m),r8 ; Register form - 17 00000040 41B68804 st.b r4:s(r6:m),r8 ; Register form - 18 00000044 41B6A804 st.h r4:s(r6:m),r8 ; Register form - 19 00000048 41B6C804 st r4:s(r6:m),r8 ; Register form - 20 0000004C 41B6E804 st.d r4:s(r6:m),r8 ; Register form - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops4.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops4.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops4.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops4.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,20 +0,0 @@ - dld.b r4:s(r6:m),r8 ; Register form - dld.h r4:s(r6:m),r8 ; Register form - dld r4:s(r6:m),r8 ; Register form - dld.d r4:s(r6:m),r8 ; Register form - dld.ub r4:s(r6:m),r8 ; Register form - dld.uh r4:s(r6:m),r8 ; Register form - dst.b r4:s(r6:m),r8 ; Register form - dst.h r4:s(r6:m),r8 ; Register form - dst r4:s(r6:m),r8 ; Register form - dst.d r4:s(r6:m),r8 ; Register form - ld.b r4:s(r6:m),r8 ; Register form - ld.h r4:s(r6:m),r8 ; Register form - ld r4:s(r6:m),r8 ; Register form - ld.d r4:s(r6:m),r8 ; Register form - ld.ub r4:s(r6:m),r8 ; Register form - ld.uh r4:s(r6:m),r8 ; Register form - st.b r4:s(r6:m),r8 ; Register form - st.h r4:s(r6:m),r8 ; Register form - st r4:s(r6:m),r8 ; Register form - st.d r4:s(r6:m),r8 ; Register form diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,188 +0,0 @@ -#objdump: -d -#name: TIc80 register operands - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <.text>: - 0: 03 00 3b 29.* - 4: 03 20 3b 29.* - 8: 05 20 32 11.* - c: 05 20 32 11.* - 10: 0a 00 33 73.* - 14: 0a 80 32 73.* - 18: 0a 40 32 73.* - 1c: 0a 40 39 1a.* - 20: 0a 60 39 fa.* - 24: 0a 00 39 22.* - 28: 0a 20 39 2a.* - 2c: 04 80 b9 21.* - 30: 04 a0 b9 21.* - 34: 06 00 39 00.* - 38: 06 20 39 00.* - 3c: 0a 00 03 00.* - 40: 06 00 38 f8.* - 44: 06 20 38 f8.* - 48: 07 40 30 00.* - 4c: 03 00 3a 29.* - 50: 08 00 b7 02.* - 54: 08 00 b7 0a.* - 58: 04 04 b4 41.* - 5c: 04 24 b4 41.* - 60: 04 44 b4 41.* - 64: 04 64 b4 41.* - 68: 04 04 b5 41.* - 6c: 04 24 b5 41.* - 70: 04 04 b6 41.* - 74: 04 24 b6 41.* - 78: 04 44 b6 41.* - 7c: 04 64 b6 41.* - 80: 05 20 30 08.* - 84: e3 47 71 31.* - 88: c2 07 71 49.* - 8c: 02 00 3e 31.* - 90: 02 02 3e 31.* - 94: 82 02 3e 31.* - 98: 22 02 3e 31.* - 9c: a2 02 3e 31.* - a0: 04 a0 be 41.* - a4: 84 a0 be 41.* - a8: 24 a0 be 41.* - ac: a4 a0 be 41.* - b0: 02 60 3e 31.* - b4: 02 62 3e 31.* - b8: 82 62 3e 31.* - bc: 22 62 3e 31.* - c0: a2 62 3e 31.* - c4: 02 40 3e 31.* - c8: 02 42 3e 31.* - cc: 82 42 3e 31.* - d0: 22 42 3e 31.* - d4: a2 42 3e 31.* - d8: 42 45 3e 31.* - dc: e2 47 3e 31.* - e0: 84 81 3e 30.* - e4: 84 83 3e 30.* - e8: 84 85 3e 30.* - ec: 84 87 3e 30.* - f0: a2 81 3e 40.* - f4: a2 83 3e 40.* - f8: a2 85 3e 40.* - fc: a2 87 3e 40.* - 100: c4 81 3e 30.* - 104: c4 83 3e 30.* - 108: e2 81 3e 40.* - 10c: e2 83 3e 40.* - 110: 04 80 3e 30.* - 114: 04 82 3e 30.* - 118: 04 84 3e 30.* - 11c: 04 86 3e 30.* - 120: 22 80 3e 40.* - 124: 22 82 3e 40.* - 128: 22 84 3e 40.* - 12c: 22 86 3e 40.* - 130: 44 80 3e 30.* - 134: 44 82 3e 30.* - 138: 62 80 3e 40.* - 13c: 62 82 3e 40.* - 140: 04 81 3e 30.* - 144: 04 83 3e 30.* - 148: 04 85 3e 30.* - 14c: 04 87 3e 30.* - 150: 22 81 3e 40.* - 154: 22 83 3e 40.* - 158: 22 85 3e 40.* - 15c: 22 87 3e 40.* - 160: 44 81 3e 30.* - 164: 44 83 3e 30.* - 168: 62 81 3e 40.* - 16c: 62 83 3e 40.* - 170: 84 80 3e 30.* - 174: 84 82 3e 30.* - 178: 84 84 3e 30.* - 17c: 84 86 3e 30.* - 180: a2 80 3e 40.* - 184: a2 82 3e 40.* - 188: a2 84 3e 40.* - 18c: a2 86 3e 40.* - 190: c4 80 3e 30.* - 194: c4 82 3e 30.* - 198: e2 80 3e 40.* - 19c: e2 82 3e 40.* - 1a0: 06 e0 3e 40.* - 1a4: 06 e2 3e 40.* - 1a8: 26 e2 3e 40.* - 1ac: 02 20 3e 31.* - 1b0: 02 22 3e 31.* - 1b4: 82 22 3e 31.* - 1b8: 22 22 3e 31.* - 1bc: a2 22 3e 31.* - 1c0: e4 e3 31 52.* - 1c4: 04 80 b8 41.* - 1c8: 04 a0 b8 41.* - 1cc: 04 00 b4 41.* - 1d0: 04 20 b4 41.* - 1d4: 04 40 b4 41.* - 1d8: 04 60 b4 41.* - 1dc: 04 00 b5 41.* - 1e0: 04 20 b5 41.* - 1e4: 00 00 ff 41.* - 1e8: 01 e0 b2 18.* - 1ec: 01 e0 b2 18.* - 1f0: 01 c0 b3 18.* - 1f4: 01 a0 b3 18.* - 1f8: 01 60 b3 18.* - 1fc: 06 80 30 20.* - 200: 00 20 3f 29.* - 204: e2 03 31 52.* - 208: e8 07 b1 30.* - 20c: e4 c3 b1 30.* - 210: 84 01 71 31.* - 214: 84 21 71 31.* - 218: 84 41 71 31.* - 21c: 84 61 71 31.* - 220: 84 81 71 31.* - 224: 84 a1 71 31.* - 228: 84 c1 71 31.* - 22c: 84 e1 71 31.* - 230: 84 09 71 31.* - 234: 84 29 71 31.* - 238: 84 49 71 31.* - 23c: 84 69 71 31.* - 240: 84 89 71 31.* - 244: 84 a9 71 31.* - 248: 84 c9 71 31.* - 24c: 84 e9 71 31.* - 250: 84 05 71 31.* - 254: 84 25 71 31.* - 258: 84 45 71 31.* - 25c: 84 65 71 31.* - 260: 84 85 71 31.* - 264: 84 a5 71 31.* - 268: 84 c5 71 31.* - 26c: 84 e5 71 31.* - 270: 04 a4 b1 41.* - 274: 84 0d 71 31.* - 278: 84 2d 71 31.* - 27c: 84 4d 71 31.* - 280: 84 6d 71 31.* - 284: 84 8d 71 31.* - 288: 84 ad 71 31.* - 28c: 84 cd 71 31.* - 290: 84 ed 71 31.* - 294: 04 64 b1 41.* - 298: 04 00 b6 41.* - 29c: 04 20 b6 41.* - 2a0: 04 40 b6 41.* - 2a4: 04 60 b6 41.* - 2a8: 07 40 3b 4a.* - 2ac: 07 60 3b 4a.* - 2b0: 08 a0 b0 21.* - 2b4: 0a 20 30 00.* - 2b8: 02 00 3c 01.* - 2bc: 82 00 bc 01.* - 2c0: a2 00 bc 02.* - 2c4: 06 a0 70 01.* - 2c8: 05 20 b3 39.* - 2cc: 07 c0 32 4a.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,264 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Mon Feb 10 17:00:24 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -regops.s PAGE 1 - - 1 ;; Simple register forms - 2 ;; Those instructions which also use an immediate just use a constant. - 3 - 4 00000000 .text - 5 - 6 00000000 293B0003 add r3,r4,r5 - 7 00000004 293B2003 addu r3,r4,r5 - 8 00000008 11322005 and r5,r4,r2 - 9 0000000C 11322005 and.tt r5,r4,r2 - 10 00000010 7333000A and.ff r10,r12,r14 - 11 00000014 7332800A and.ft r10,r12,r14 - 12 00000018 7332400A and.tf r10,r12,r14 - 13 0000001C 1A39400A bbo r10,r8,lo.w - 14 00000020 FA39600A bbo.a r10,r8,eq.b - 15 00000024 2239000A bbz r10,r8,ls.w - 16 00000028 2A39200A bbz.a r10,r8,hi.w - 17 0000002C 21B98004 bcnd r4,r6,lt0.b - 18 00000030 21B9A004 bcnd.a r4,r6,lt0.b - 19 00000034 00390006 br r6 - 20 00000038 00392006 br.a r6 - 21 0000003C 0003000A brcr 10 - 22 00000040 F8380006 bsr r6,r31 - 23 00000044 F8382006 bsr.a r6,r31 - 24 00000048 00304007 cmnd r7 - 25 0000004C 293A0003 cmp r3,r4,r5 - 26 00000050 02B70008 dcachec r8(r10) - 27 00000054 0AB70008 dcachef r8(r10) - 28 00000058 41B40404 dld.b r4(r6),r8 - 29 0000005C 41B42404 dld.h r4(r6),r8 - 30 00000060 41B44404 dld r4(r6),r8 - 31 00000064 41B46404 dld.d r4(r6),r8 - 32 00000068 41B50404 dld.ub r4(r6),r8 - 33 0000006C 41B52404 dld.uh r4(r6),r8 - 34 00000070 41B60404 dst.b r4(r6),r8 - 35 00000074 41B62404 dst.h r4(r6),r8 - 36 00000078 41B64404 dst r4(r6),r8 - 37 0000007C 41B66404 dst.d r4(r6),r8 - 38 00000080 08302005 etrap r5 - 39 00000084 317147E3 exts r3,31,r5,r6 - 40 00000088 497107C2 extu r2,30,r5,r9 - 41 0000008C 313E0002 fadd.sss r2,r4,r6 - 42 00000090 313E0202 fadd.ssd r2,r4,r6 - 43 00000094 313E0282 fadd.sdd r2,r4,r6 - 44 00000098 313E0222 fadd.dsd r2,r4,r6 - 45 0000009C 313E02A2 fadd.ddd r2,r4,r6 - 46 000000A0 41BEA004 fcmp.ss r4,r6,r8 - 47 000000A4 41BEA084 fcmp.sd r4,r6,r8 - 48 000000A8 41BEA024 fcmp.ds r4,r6,r8 - 49 000000AC 41BEA0A4 fcmp.dd r4,r6,r8 - 50 000000B0 313E6002 fdiv.sss r2,r4,r6 - 51 000000B4 313E6202 fdiv.ssd r2,r4,r6 - 52 000000B8 313E6282 fdiv.sdd r2,r4,r6 - 53 000000BC 313E6222 fdiv.dsd r2,r4,r6 - 54 000000C0 313E62A2 fdiv.ddd r2,r4,r6 - 55 000000C4 313E4002 fmpy.sss r2,r4,r6 - MVP MP Macro Assembler Version 1.13 Mon Feb 10 17:00:24 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -regops.s PAGE 2 - - 56 000000C8 313E4202 fmpy.ssd r2,r4,r6 - 57 000000CC 313E4282 fmpy.sdd r2,r4,r6 - 58 000000D0 313E4222 fmpy.dsd r2,r4,r6 - 59 000000D4 313E42A2 fmpy.ddd r2,r4,r6 - 60 000000D8 313E4542 fmpy.iii r2,r4,r6 - 61 000000DC 313E47E2 fmpy.uuu r2,r4,r6 - 62 000000E0 303E8184 frndm.ss r4,r6 - 63 000000E4 303E8384 frndm.sd r4,r6 - 64 000000E8 303E8584 frndm.si r4,r6 - 65 000000EC 303E8784 frndm.su r4,r6 - 66 000000F0 403E81A2 frndm.ds r2,r8 - 67 000000F4 403E83A2 frndm.dd r2,r8 - 68 000000F8 403E85A2 frndm.di r2,r8 - 69 000000FC 403E87A2 frndm.du r2,r8 - 70 00000100 303E81C4 frndm.is r4,r6 - 71 00000104 303E83C4 frndm.id r4,r6 - 72 00000108 403E81E2 frndm.us r2,r8 - 73 0000010C 403E83E2 frndm.ud r2,r8 - 74 00000110 303E8004 frndn.ss r4,r6 - 75 00000114 303E8204 frndn.sd r4,r6 - 76 00000118 303E8404 frndn.si r4,r6 - 77 0000011C 303E8604 frndn.su r4,r6 - 78 00000120 403E8022 frndn.ds r2,r8 - 79 00000124 403E8222 frndn.dd r2,r8 - 80 00000128 403E8422 frndn.di r2,r8 - 81 0000012C 403E8622 frndn.du r2,r8 - 82 00000130 303E8044 frndn.is r4,r6 - 83 00000134 303E8244 frndn.id r4,r6 - 84 00000138 403E8062 frndn.us r2,r8 - 85 0000013C 403E8262 frndn.ud r2,r8 - 86 00000140 303E8104 frndp.ss r4,r6 - 87 00000144 303E8304 frndp.sd r4,r6 - 88 00000148 303E8504 frndp.si r4,r6 - 89 0000014C 303E8704 frndp.su r4,r6 - 90 00000150 403E8122 frndp.ds r2,r8 - 91 00000154 403E8322 frndp.dd r2,r8 - 92 00000158 403E8522 frndp.di r2,r8 - 93 0000015C 403E8722 frndp.du r2,r8 - 94 00000160 303E8144 frndp.is r4,r6 - 95 00000164 303E8344 frndp.id r4,r6 - 96 00000168 403E8162 frndp.us r2,r8 - 97 0000016C 403E8362 frndp.ud r2,r8 - 98 00000170 303E8084 frndz.ss r4,r6 - 99 00000174 303E8284 frndz.sd r4,r6 - 100 00000178 303E8484 frndz.si r4,r6 - 101 0000017C 303E8684 frndz.su r4,r6 - 102 00000180 403E80A2 frndz.ds r2,r8 - 103 00000184 403E82A2 frndz.dd r2,r8 - 104 00000188 403E84A2 frndz.di r2,r8 - 105 0000018C 403E86A2 frndz.du r2,r8 - 106 00000190 303E80C4 frndz.is r4,r6 - 107 00000194 303E82C4 frndz.id r4,r6 - 108 00000198 403E80E2 frndz.us r2,r8 - 109 0000019C 403E82E2 frndz.ud r2,r8 - 110 000001A0 403EE006 fsqrt.ss r6,r8 - MVP MP Macro Assembler Version 1.13 Mon Feb 10 17:00:24 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -regops.s PAGE 3 - - 111 000001A4 403EE206 fsqrt.sd r6,r8 - 112 000001A8 403EE226 fsqrt.dd r6,r8 - 113 000001AC 313E2002 fsub.sss r2,r4,r6 - 114 000001B0 313E2202 fsub.ssd r2,r4,r6 - 115 000001B4 313E2282 fsub.sdd r2,r4,r6 - 116 000001B8 313E2222 fsub.dsd r2,r4,r6 - 117 000001BC 313E22A2 fsub.ddd r2,r4,r6 - 118 000001C0 5231E3E4 ins r4,31,r8,r10 - 119 000001C4 41B88004 jsr r4(r6),r8 - 120 000001C8 41B8A004 jsr.a r4(r6),r8 - 121 000001CC 41B40004 ld.b r4(r6),r8 - 122 000001D0 41B42004 ld.h r4(r6),r8 - 123 000001D4 41B44004 ld r4(r6),r8 - 124 000001D8 41B46004 ld.d r4(r6),r8 - 125 000001DC 41B50004 ld.ub r4(r6),r8 - 126 000001E0 41B52004 ld.uh r4(r6),r8 - 127 000001E4 41FF0007 lmo r7,r8 - 128 000001E8 18B2E001 or r1,r2,r3 - 129 000001EC 18B2E001 or.tt r1,r2,r3 - 130 000001F0 18B3C001 or.ff r1,r2,r3 - 131 000001F4 18B3A001 or.ft r1,r2,r3 - 132 000001F8 18B36001 or.tf r1,r2,r3 - 133 000001FC 20308006 rdcr r6,r4 - 134 00000200 293F2004 rmo r4,r5 - 135 00000204 523103E2 rotl r2,31,r8,r10 - 136 00000208 30B107E8 rotr r8,31,r2,r6 - 137 0000020C 30B1C3E4 shl r4,31,r2,r6 - 138 00000210 31710184 sl.dz r4,12,r5,r6 - 139 00000214 31712184 sl.dm r4,12,r5,r6 - 140 00000218 31714184 sl.ds r4,12,r5,r6 - 141 0000021C 31716184 sl.ez r4,12,r5,r6 - 142 00000220 31718184 sl.em r4,12,r5,r6 - 143 00000224 3171A184 sl.es r4,12,r5,r6 - 144 00000228 3171C184 sl.iz r4,12,r5,r6 - 145 0000022C 3171E184 sl.im r4,12,r5,r6 - 146 00000230 31710984 sli.dz r4,12,r5,r6 - 147 00000234 31712984 sli.dm r4,12,r5,r6 - 148 00000238 31714984 sli.ds r4,12,r5,r6 - 149 0000023C 31716984 sli.ez r4,12,r5,r6 - 150 00000240 31718984 sli.em r4,12,r5,r6 - 151 00000244 3171A984 sli.es r4,12,r5,r6 - 152 00000248 3171C984 sli.iz r4,12,r5,r6 - 153 0000024C 3171E984 sli.im r4,12,r5,r6 - 154 00000250 31710584 sr.dz r4,12,r5,r6 - 155 00000254 31712584 sr.dm r4,12,r5,r6 - 156 00000258 31714584 sr.ds r4,12,r5,r6 - 157 0000025C 31716584 sr.ez r4,12,r5,r6 - 158 00000260 31718584 sr.em r4,12,r5,r6 - 159 00000264 3171A584 sr.es r4,12,r5,r6 - 160 00000268 3171C584 sr.iz r4,12,r5,r6 - 161 0000026C 3171E584 sr.im r4,12,r5,r6 - 162 00000270 41B1A404 sra r4,32,r6,r8 - 163 00000274 31710D84 sri.dz r4,12,r5,r6 - 164 00000278 31712D84 sri.dm r4,12,r5,r6 - 165 0000027C 31714D84 sri.ds r4,12,r5,r6 - MVP MP Macro Assembler Version 1.13 Mon Feb 10 17:00:24 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -regops.s PAGE 4 - - 166 00000280 31716D84 sri.ez r4,12,r5,r6 - 167 00000284 31718D84 sri.em r4,12,r5,r6 - 168 00000288 3171AD84 sri.es r4,12,r5,r6 - 169 0000028C 3171CD84 sri.iz r4,12,r5,r6 - 170 00000290 3171ED84 sri.im r4,12,r5,r6 - 171 00000294 41B16404 srl r4,32,r6,r8 - 172 00000298 41B60004 st.b r4(r6),r8 - 173 0000029C 41B62004 st.h r4(r6),r8 - 174 000002A0 41B64004 st r4(r6),r8 - 175 000002A4 41B66004 st.d r4(r6),r8 - 176 000002A8 4A3B4007 sub r7,r8,r9 - 177 000002AC 4A3B6007 subu r7,r8,r9 - 178 000002B0 21B0A008 swcr r8,r6,r4 - 179 000002B4 0030200A trap r10 - 180 000002B8 013C0002 vadd.ss r2,r4,r4 - 181 000002BC 01BC0082 vadd.sd r2,r6,r6 - 182 000002C0 02BC00A2 vadd.dd r2,r10,r10 - 183 ; vld0.s r6 - 184 ; vld1.s r7 - 185 ; vld0.d r6 - 186 ; vld1.d r8 - 187 ; vmac.sss r7,r9,0,a3 - 188 ; vmac.sss r7,r9,0,r10 - 189 ; vmac.sss r7,r9,a1,a3 - 190 ; vmac.sss r7,r9,a3,r10 - 191 ; vmac.ssd r7,r9,0,a0 - 192 ; vmac.ssd r7,r9,0,r10 - 193 ; vmac.ssd r7,r9,a1,a2 - 194 ; vmac.ssd r7,r9,a3,r10 - 195 ; vmpy.ss r1,r3,r3 - 196 ; vmpy.sd r5,r6,r6 - 197 ; vmpy.dd r2,r4,r4 - 198 ; vmsc.sss r7,r9,0,a0 - 199 ; vmsc.sss r7,r9,0,r10 - 200 ; vmsc.sss r7,r9,a0,a1 - 201 ; vmsc.sss r7,r9,a3,r10 - 202 ; vmsc.ssd r7,r9,0,a0 - 203 ; vmsc.ssd r7,r9,0,r10 - 204 ; vmsc.ssd r7,r9,a0,a1 - 205 ; vmsc.ssd r7,r9,a3,r10 - 206 ; vmsub.ss r6,a2,a4 - 207 ; vmsub.sd r6,a2,a4 - 208 ; vmsub.ss r4,a4,r6 - 209 ; vmsub.sd r4,a4,r6 - 210 ; vrnd.si r4,r6 - 211 ; vrnd.si r4,a0 - 212 ; vrnd.su r4,r6 - 213 ; vrnd.su r4,a0 - 214 ; vrnd.ss r4,r6 - 215 ; vrnd.ss r4,a0 - 216 ; vrnd.sd r4,r6 - 217 ; vrnd.sd r4,a0 - 218 ; vrnd.di r4,r6 - 219 ; vrnd.di r4,a0 - 220 ; vrnd.du r4,r6 - MVP MP Macro Assembler Version 1.13 Mon Feb 10 17:00:24 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -regops.s PAGE 5 - - 221 ; vrnd.du r4,a0 - 222 ; vrnd.ds r4,r6 - 223 ; vrnd.ds r4,a0 - 224 ; vrnd.dd r4,r6 - 225 ; vrnd.dd r4,a0 - 226 ; vrnd.is r4,r6 - 227 ; vrnd.id r4,r6 - 228 ; vrnd.us r4,r6 - 229 ; vrnd.ud r4,r6 - 230 ; vst.s r6 - 231 ; vst.d r6 - 232 ; vsub.ss r2,r4,r6 - 233 ; vsub.sd r2,r4,r6 - 234 ; vsub.dd r2,r4,r6 - 235 000002C4 0170A006 wrcr r6,r5 - 236 000002C8 39B32005 xnor r5,r6,r7 - 237 000002CC 4A32C007 xor r7,r8,r9 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/regops.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/regops.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,237 +0,0 @@ -;; Simple register forms -;; Those instructions which also use an immediate just use a constant. - - .text - - add r3,r4,r5 - addu r3,r4,r5 - and r5,r4,r2 - and.tt r5,r4,r2 - and.ff r10,r12,r14 - and.ft r10,r12,r14 - and.tf r10,r12,r14 - bbo r10,r8,lo.w - bbo.a r10,r8,eq.b - bbz r10,r8,ls.w - bbz.a r10,r8,hi.w - bcnd r4,r6,lt0.b - bcnd.a r4,r6,lt0.b - br r6 - br.a r6 - brcr 10 - bsr r6,r31 - bsr.a r6,r31 - cmnd r7 - cmp r3,r4,r5 - dcachec r8(r10) - dcachef r8(r10) - dld.b r4(r6),r8 - dld.h r4(r6),r8 - dld r4(r6),r8 - dld.d r4(r6),r8 - dld.ub r4(r6),r8 - dld.uh r4(r6),r8 - dst.b r4(r6),r8 - dst.h r4(r6),r8 - dst r4(r6),r8 - dst.d r4(r6),r8 - etrap r5 - exts r3,31,r5,r6 - extu r2,30,r5,r9 - fadd.sss r2,r4,r6 - fadd.ssd r2,r4,r6 - fadd.sdd r2,r4,r6 - fadd.dsd r2,r4,r6 - fadd.ddd r2,r4,r6 - fcmp.ss r4,r6,r8 - fcmp.sd r4,r6,r8 - fcmp.ds r4,r6,r8 - fcmp.dd r4,r6,r8 - fdiv.sss r2,r4,r6 - fdiv.ssd r2,r4,r6 - fdiv.sdd r2,r4,r6 - fdiv.dsd r2,r4,r6 - fdiv.ddd r2,r4,r6 - fmpy.sss r2,r4,r6 - fmpy.ssd r2,r4,r6 - fmpy.sdd r2,r4,r6 - fmpy.dsd r2,r4,r6 - fmpy.ddd r2,r4,r6 - fmpy.iii r2,r4,r6 - fmpy.uuu r2,r4,r6 - frndm.ss r4,r6 - frndm.sd r4,r6 - frndm.si r4,r6 - frndm.su r4,r6 - frndm.ds r2,r8 - frndm.dd r2,r8 - frndm.di r2,r8 - frndm.du r2,r8 - frndm.is r4,r6 - frndm.id r4,r6 - frndm.us r2,r8 - frndm.ud r2,r8 - frndn.ss r4,r6 - frndn.sd r4,r6 - frndn.si r4,r6 - frndn.su r4,r6 - frndn.ds r2,r8 - frndn.dd r2,r8 - frndn.di r2,r8 - frndn.du r2,r8 - frndn.is r4,r6 - frndn.id r4,r6 - frndn.us r2,r8 - frndn.ud r2,r8 - frndp.ss r4,r6 - frndp.sd r4,r6 - frndp.si r4,r6 - frndp.su r4,r6 - frndp.ds r2,r8 - frndp.dd r2,r8 - frndp.di r2,r8 - frndp.du r2,r8 - frndp.is r4,r6 - frndp.id r4,r6 - frndp.us r2,r8 - frndp.ud r2,r8 - frndz.ss r4,r6 - frndz.sd r4,r6 - frndz.si r4,r6 - frndz.su r4,r6 - frndz.ds r2,r8 - frndz.dd r2,r8 - frndz.di r2,r8 - frndz.du r2,r8 - frndz.is r4,r6 - frndz.id r4,r6 - frndz.us r2,r8 - frndz.ud r2,r8 - fsqrt.ss r6,r8 - fsqrt.sd r6,r8 - fsqrt.dd r6,r8 - fsub.sss r2,r4,r6 - fsub.ssd r2,r4,r6 - fsub.sdd r2,r4,r6 - fsub.dsd r2,r4,r6 - fsub.ddd r2,r4,r6 - ins r4,31,r8,r10 - jsr r4(r6),r8 - jsr.a r4(r6),r8 - ld.b r4(r6),r8 - ld.h r4(r6),r8 - ld r4(r6),r8 - ld.d r4(r6),r8 - ld.ub r4(r6),r8 - ld.uh r4(r6),r8 - lmo r7,r8 - or r1,r2,r3 - or.tt r1,r2,r3 - or.ff r1,r2,r3 - or.ft r1,r2,r3 - or.tf r1,r2,r3 - rdcr r6,r4 - rmo r4,r5 - rotl r2,31,r8,r10 - rotr r8,31,r2,r6 - shl r4,31,r2,r6 - sl.dz r4,12,r5,r6 - sl.dm r4,12,r5,r6 - sl.ds r4,12,r5,r6 - sl.ez r4,12,r5,r6 - sl.em r4,12,r5,r6 - sl.es r4,12,r5,r6 - sl.iz r4,12,r5,r6 - sl.im r4,12,r5,r6 - sli.dz r4,12,r5,r6 - sli.dm r4,12,r5,r6 - sli.ds r4,12,r5,r6 - sli.ez r4,12,r5,r6 - sli.em r4,12,r5,r6 - sli.es r4,12,r5,r6 - sli.iz r4,12,r5,r6 - sli.im r4,12,r5,r6 - sr.dz r4,12,r5,r6 - sr.dm r4,12,r5,r6 - sr.ds r4,12,r5,r6 - sr.ez r4,12,r5,r6 - sr.em r4,12,r5,r6 - sr.es r4,12,r5,r6 - sr.iz r4,12,r5,r6 - sr.im r4,12,r5,r6 - sra r4,32,r6,r8 - sri.dz r4,12,r5,r6 - sri.dm r4,12,r5,r6 - sri.ds r4,12,r5,r6 - sri.ez r4,12,r5,r6 - sri.em r4,12,r5,r6 - sri.es r4,12,r5,r6 - sri.iz r4,12,r5,r6 - sri.im r4,12,r5,r6 - srl r4,32,r6,r8 - st.b r4(r6),r8 - st.h r4(r6),r8 - st r4(r6),r8 - st.d r4(r6),r8 - sub r7,r8,r9 - subu r7,r8,r9 - swcr r8,r6,r4 - trap r10 - vadd.ss r2,r4,r4 - vadd.sd r2,r6,r6 - vadd.dd r2,r10,r10 -; vld0.s r6 -; vld1.s r7 -; vld0.d r6 -; vld1.d r8 -; vmac.sss r7,r9,0,a3 -; vmac.sss r7,r9,0,r10 -; vmac.sss r7,r9,a1,a3 -; vmac.sss r7,r9,a3,r10 -; vmac.ssd r7,r9,0,a0 -; vmac.ssd r7,r9,0,r10 -; vmac.ssd r7,r9,a1,a2 -; vmac.ssd r7,r9,a3,r10 -; vmpy.ss r1,r3,r3 -; vmpy.sd r5,r6,r6 -; vmpy.dd r2,r4,r4 -; vmsc.sss r7,r9,0,a0 -; vmsc.sss r7,r9,0,r10 -; vmsc.sss r7,r9,a0,a1 -; vmsc.sss r7,r9,a3,r10 -; vmsc.ssd r7,r9,0,a0 -; vmsc.ssd r7,r9,0,r10 -; vmsc.ssd r7,r9,a0,a1 -; vmsc.ssd r7,r9,a3,r10 -; vmsub.ss r6,a2,a4 -; vmsub.sd r6,a2,a4 -; vmsub.ss r4,a4,r6 -; vmsub.sd r4,a4,r6 -; vrnd.si r4,r6 -; vrnd.si r4,a0 -; vrnd.su r4,r6 -; vrnd.su r4,a0 -; vrnd.ss r4,r6 -; vrnd.ss r4,a0 -; vrnd.sd r4,r6 -; vrnd.sd r4,a0 -; vrnd.di r4,r6 -; vrnd.di r4,a0 -; vrnd.du r4,r6 -; vrnd.du r4,a0 -; vrnd.ds r4,r6 -; vrnd.ds r4,a0 -; vrnd.dd r4,r6 -; vrnd.dd r4,a0 -; vrnd.is r4,r6 -; vrnd.id r4,r6 -; vrnd.us r4,r6 -; vrnd.ud r4,r6 -; vst.s r6 -; vst.d r6 -; vsub.ss r2,r4,r6 -; vsub.sd r2,r4,r6 -; vsub.dd r2,r4,r6 - wrcr r6,r5 - xnor r5,r6,r7 - xor r7,r8,r9 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1b.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1b.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1b.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1b.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,12 +0,0 @@ -#objdump: -r -#source: relocs1.s -#name: TIc80 simple relocs, global/local funcs & branches (relocs) - -.*: +file format .*tic80.* - -RELOCATION RECORDS FOR \[.text\]: -OFFSET TYPE VALUE -00000010 32 _xfunc -00000034 32 .text -0000007c 32 .text -0000008c 32 _xfunc diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1.c binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1.c --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1.c 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,28 +0,0 @@ -extern int xfunc (int y); - -static int sfunc (int y) -{ - xfunc (y); -} - -int gfunc (int y) -{ - sfunc (y); -} - -int branches (int y) -{ - int z; - - for (z = y; z < y + 10; z++) - { - if (z & 0x1) - { - gfunc (z); - } - else - { - xfunc (z); - } - } -} diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,56 +0,0 @@ -#objdump: -d -#name: TIc80 simple relocs, global/local funcs & branches (code) - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <_sfunc>: - 0: f0 ff 6c 08.* - 4: 0c 00 59 f8.* - 8: 00 00 59 10.* - c: 00 90 38 f8 00 00 00 00.* - 14: 00 00 51 10.* - 18: 0c 00 51 f8.* - 1c: 1f 80 38 00.* - 20: 10 80 6c 08.* - -00000024 <_gfunc>: - 24: f0 ff 6c 08.* - 28: 0c 00 59 f8.* - 2c: 00 00 59 10.* - 30: 00 90 38 f8 00 00 00 00.* - 38: 00 00 51 10.* - 3c: 0c 00 51 f8.* - 40: 1f 80 38 00.* - 44: 10 80 6c 08.* - -00000048 <_branches>: - 48: f0 ff 6c 08.* - 4c: 0c 00 59 f8.* - 50: 00 00 59 10.* - 54: 00 00 51 10.* - 58: 04 00 59 10.* - 5c: 00 00 51 10.* - 60: 04 00 51 18.* - 64: 0a 80 ac 10.* - 68: 03 00 ba 10.* - 6c: 12 80 a5 30.* - 70: 04 00 51 10.* - 74: 05 80 a4 f8.* - 78: 00 90 38 f8 24 00 00 00.* - 80: 04 00 51 10.* - 84: 04 80 24 00.* - 88: 00 90 38 f8 00 00 00 00.* - 90: 04 00 51 10.* - 94: 04 00 51 10.* - 98: 01 80 ac 10.* - 9c: 04 00 59 10.* - a0: 00 00 51 18.* - a4: 04 00 51 10.* - a8: 0a 80 ec 18.* - ac: 02 00 fa 10.* - b0: f0 ff a5 38.* - b4: 0c 00 51 f8.* - b8: 1f 80 38 00.* - bc: 10 80 6c 08.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,80 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Sat Feb 22 13:19:28 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -relocs1.s PAGE 1 - - 1 ;; This is the hand hacked output of the TI C compiler for a simple - 2 ;; test program that contains local/global functions, local/global - 3 ;; function calls, and an "if" and "for" statement. - 4 - 5 .global _xfunc - 6 - 7 00000000 _sfunc: - 8 00000000 086CFFF0 addu -16,r1,r1 - 9 00000004 F859000C st 12(r1),r31 - 10 00000008 10590000 st 0(r1),r2 - 11 0000000C F8389000 jsr _xfunc(r0),r31 - 00000010 00000000 - 12 00000014 10510000 ld 0(r1),r2 - 13 00000018 F851000C ld 12(r1),r31 - 14 0000001C 0038801F jsr r31(r0),r0 - 15 00000020 086C8010 addu 16,r1,r1 - 16 - 17 .global _gfunc - 18 - 19 00000024 _gfunc: - 20 00000024 086CFFF0 addu -16,r1,r1 - 21 00000028 F859000C st 12(r1),r31 - 22 0000002C 10590000 st 0(r1),r2 - 23 00000030 F8389000 jsr _sfunc(r0),r31 - 00000034 00000000 - 24 00000038 10510000 ld 0(r1),r2 - 25 0000003C F851000C ld 12(r1),r31 - 26 00000040 0038801F jsr r31(r0),r0 - 27 00000044 086C8010 addu 16,r1,r1 - 28 - 29 - 30 .global _branches - 31 - 32 00000048 _branches: - 33 00000048 086CFFF0 addu -16,r1,r1 - 34 0000004C F859000C st 12(r1),r31 - 35 00000050 10590000 st 0(r1),r2 - 36 00000054 10510000 ld 0(r1),r2 - 37 00000058 10590004 st 4(r1),r2 - 38 0000005C 10510000 ld 0(r1),r2 - 39 00000060 18510004 ld 4(r1),r3 - 40 00000064 10AC800A addu 10,r2,r2 - 41 00000068 10BA0003 cmp r3,r2,r2 - 42 0000006C 30A58012 bbo.a L12,r2,ge.w - 43 00000070 L8: - 44 00000070 10510004 ld 4(r1),r2 - 45 00000074 F8A48005 bbz.a L10,r2,0 - 46 00000078 F8389000 jsr _gfunc(r0),r31 - 0000007C 00000024 - 47 00000080 10510004 ld 4(r1),r2 - 48 00000084 00248004 br.a L11 - 49 00000088 L10: - 50 00000088 F8389000 jsr _xfunc(r0),r31 - 0000008C 00000000 - 51 00000090 10510004 ld 4(r1),r2 - MVP MP Macro Assembler Version 1.13 Sat Feb 22 13:19:28 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -relocs1.s PAGE 2 - - 52 00000094 L11: - 53 00000094 10510004 ld 4(r1),r2 - 54 00000098 10AC8001 addu 1,r2,r2 - 55 0000009C 10590004 st 4(r1),r2 - 56 000000A0 18510000 ld 0(r1),r3 - 57 000000A4 10510004 ld 4(r1),r2 - 58 000000A8 18EC800A addu 10,r3,r3 - 59 000000AC 10FA0002 cmp r2,r3,r2 - 60 000000B0 38A5FFF0 bbo.a L8,r2,lt.w - 61 000000B4 L12: - 62 000000B4 F851000C ld 12(r1),r31 - 63 000000B8 0038801F jsr r31(r0),r0 - 64 000000BC 086C8010 addu 16,r1,r1 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs1.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs1.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,66 +0,0 @@ -;; This is the hand hacked output of the TI C compiler for a simple -;; test program that contains local/global functions, local/global -;; function calls, and an "if" and "for" statement. - - .file "relocs1.s" - - .global _xfunc - -_sfunc: - addu -16,r1,r1 - st 12(r1),r31 - st 0(r1),r2 - jsr _xfunc(r0),r31 - ld 0(r1),r2 - ld 12(r1),r31 - jsr r31(r0),r0 - addu 16,r1,r1 - - .global _gfunc - -_gfunc: - addu -16,r1,r1 - st 12(r1),r31 - st 0(r1),r2 - jsr _sfunc(r0),r31 - ld 0(r1),r2 - ld 12(r1),r31 - jsr r31(r0),r0 - addu 16,r1,r1 - - - .global _branches - -_branches: - addu -16,r1,r1 - st 12(r1),r31 - st 0(r1),r2 - ld 0(r1),r2 - st 4(r1),r2 - ld 0(r1),r2 - ld 4(r1),r3 - addu 10,r2,r2 - cmp r3,r2,r2 - bbo.a L12,r2,ge.w -L8: - ld 4(r1),r2 - bbz.a L10,r2,0 - jsr _gfunc(r0),r31 - ld 4(r1),r2 - br.a L11 -L10: - jsr _xfunc(r0),r31 - ld 4(r1),r2 -L11: - ld 4(r1),r2 - addu 1,r2,r2 - st 4(r1),r2 - ld 0(r1),r3 - ld 4(r1),r2 - addu 10,r3,r3 - cmp r2,r3,r2 - bbo.a L8,r2,lt.w -L12: - ld 12(r1),r31 - jsr r31(r0),r0 - addu 16,r1,r1 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2b.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2b.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2b.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2b.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,38 +0,0 @@ -#objdump: -r -#source: relocs2.s -#name: TIc80 simple relocs, static and global variables (relocs) - -.*: +file format .*tic80.* - -RELOCATION RECORDS FOR \[.text\]: -OFFSET TYPE VALUE -00000004 32 .bss\+0xffffff1c -0000000c 32 _x_char -00000014 32 _x_char -0000001c 32 .bss\+0xffffff1c -00000024 32 .bss\+0xffffff1c -0000002c 32 _x_short -00000034 32 _x_short -0000003c 32 .bss\+0xffffff1c -00000044 32 .bss\+0xffffff1c -0000004c 32 .bss\+0xffffff1c -00000054 32 .bss\+0xffffff1c -0000005c 32 .bss\+0xffffff1c -00000064 32 .bss\+0xffffff1c -0000006c 32 _x_long -00000074 32 _x_long -0000007c 32 .bss\+0xffffff1c -00000084 32 .bss\+0xffffff1c -0000008c 32 _x_float -00000094 32 _x_float -0000009c 32 .bss\+0xffffff1c -000000a4 32 .bss\+0xffffff1c -000000ac 32 _x_double -000000b4 32 _x_double -000000bc 32 .bss\+0xffffff1c -000000c4 32 .bss\+0xffffff1c -000000cc 32 _x_char_p -000000d4 32 _x_char_p -000000dc 32 .bss\+0xffffff1c - - diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2.c binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2.c --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2.c 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,41 +0,0 @@ -extern char x_char; -extern short x_short; -static int x_int; -extern long x_long; -extern float x_float; -extern double x_double; -extern char *x_char_p; - -static char s_char; -static short s_short; -static int s_int; -static long s_long; -static float s_float; -static double s_double; -static char *s_char_p; - -char g_char; -short g_short; -int g_int; -long g_long; -float g_float; -double g_double; -char *g_char_p; - -main () -{ - x_char = s_char; - g_char = x_char; - x_short = s_short; - g_short = x_short; - x_int = s_int; - g_int = x_int; - x_long = s_long; - g_long = x_long; - x_float = s_float; - g_float = x_float; - x_double = s_double; - g_double = x_double; - x_char_p = s_char_p; - g_char_p = x_char_p; -} diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2.d binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2.d --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2.d 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2.d 1969-12-31 16:00:00.000000000 -0800 @@ -1,37 +0,0 @@ -#objdump: -d -#name: TIc80 simple relocs, static and global variables (code) - -.*: +file format .*tic80.* - -Disassembly of section .text: - -00000000 <_main>: - 0: 00 10 34 10 24 02 00 00.* - 8: 00 10 36 10 00 00 00 00.* - 10: 00 10 34 10 00 00 00 00.* - 18: 00 10 36 10 04 02 00 00.* - 20: 00 30 34 10 24 03 00 00.* - 28: 00 30 36 10 00 00 00 00.* - 30: 00 30 34 10 00 00 00 00.* - 38: 00 30 36 10 04 03 00 00.* - 40: 00 50 34 10 34 02 00 00.* - 48: 00 50 36 10 34 03 00 00.* - 50: 00 50 34 10 34 03 00 00.* - 58: 00 50 36 10 14 02 00 00.* - 60: 00 50 34 10 f4 01 00 00.* - 68: 00 50 36 10 00 00 00 00.* - 70: 00 50 34 10 00 00 00 00.* - 78: 00 50 36 10 f4 00 00 00.* - 80: 00 50 34 10 f4 02 00 00.* - 88: 00 50 36 10 00 00 00 00.* - 90: 00 50 34 10 00 00 00 00.* - 98: 00 50 36 10 14 03 00 00.* - a0: 00 70 34 10 e4 01 00 00.* - a8: 00 70 36 10 00 00 00 00.* - b0: 00 70 34 10 00 00 00 00.* - b8: 00 70 36 10 e4 02 00 00.* - c0: 00 50 34 10 44 03 00 00.* - c8: 00 50 36 10 00 00 00 00.* - d0: 00 50 34 10 00 00 00 00.* - d8: 00 50 36 10 e4 00 00 00.* - e0: 1f a0 38 00.* diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2.lst binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2.lst --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2.lst 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2.lst 1969-12-31 16:00:00.000000000 -0800 @@ -1,112 +0,0 @@ -MVP MP Macro Assembler Version 1.13 Sun Feb 23 12:16:32 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -relocs2.s PAGE 1 - - 1 ;; This is the hand hacked output of the TI C compiler for a simple - 2 ;; test program that contains static, global, and extern data variables. - 3 - 4 .file "relocs2.s" - 5 .global _x_char - 6 .global _x_short - 7 .global _x_long - 8 .global _x_float - 9 .global _x_double - 10 .global _x_char_p - 11 .global _g_char - 12 .global _g_short - 13 .global _g_int - 14 .global _g_long - 15 .global _g_float - 16 .global _g_double - 17 .global _g_char_p - 18 .global _main - 19 - 20 00000000 _main: - 21 00000000 10341000 ld.b _s_char+0(r0),r2 - 00000004 0000001C - 22 00000008 10361000 st.b _x_char+0(r0),r2 - 0000000C 00000000 - 23 00000010 10341000 ld.b _x_char+0(r0),r2 - 00000014 00000000 - 24 00000018 10361000 st.b _g_char+0(r0),r2 - 0000001C 00000014 - 25 00000020 10343000 ld.h _s_short+0(r0),r2 - 00000024 0000003C - 26 00000028 10363000 st.h _x_short+0(r0),r2 - 0000002C 00000000 - 27 00000030 10343000 ld.h _x_short+0(r0),r2 - 00000034 00000000 - 28 00000038 10363000 st.h _g_short+0(r0),r2 - 0000003C 00000034 - 29 00000040 10345000 ld _s_int+0(r0),r2 - 00000044 00000020 - 30 00000048 10365000 st _x_int+0(r0),r2 - 0000004C 00000040 - 31 00000050 10345000 ld _x_int+0(r0),r2 - 00000054 00000040 - 32 00000058 10365000 st _g_int+0(r0),r2 - 0000005C 00000018 - 33 00000060 10345000 ld _s_long+0(r0),r2 - 00000064 00000010 - 34 00000068 10365000 st _x_long+0(r0),r2 - 0000006C 00000000 - 35 00000070 10345000 ld _x_long+0(r0),r2 - 00000074 00000000 - 36 00000078 10365000 st _g_long+0(r0),r2 - 0000007C 00000004 - 37 00000080 10345000 ld _s_float+0(r0),r2 - 00000084 00000030 - 38 00000088 10365000 st _x_float+0(r0),r2 - MVP MP Macro Assembler Version 1.13 Sun Feb 23 12:16:32 1997 -Copyright (c) 1993-1995 Texas Instruments Incorporated - -relocs2.s PAGE 2 - - 0000008C 00000000 - 39 00000090 10345000 ld _x_float+0(r0),r2 - 00000094 00000000 - 40 00000098 10365000 st _g_float+0(r0),r2 - 0000009C 00000038 - 41 000000A0 10347000 ld.d _s_double+0(r0),r2 - 000000A4 00000008 - 42 000000A8 10367000 st.d _x_double+0(r0),r2 - 000000AC 00000000 - 43 000000B0 10347000 ld.d _x_double+0(r0),r2 - 000000B4 00000000 - 44 000000B8 10367000 st.d _g_double+0(r0),r2 - 000000BC 00000028 - 45 000000C0 10345000 ld _s_char_p+0(r0),r2 - 000000C4 00000044 - 46 000000C8 10365000 st _x_char_p+0(r0),r2 - 000000CC 00000000 - 47 000000D0 10345000 ld _x_char_p+0(r0),r2 - 000000D4 00000000 - 48 000000D8 10365000 st _g_char_p+0(r0),r2 - 000000DC 00000000 - 49 000000E0 0038A01F jsr.a r31(r0),r0 - 50 - 51 .global _g_char_p - 52 00000000 .bss _g_char_p,4,4 - 53 .global _g_long - 54 00000004 .bss _g_long,4,4 - 55 00000008 .bss _s_double,8,8 - 56 00000010 .bss _s_long,4,4 - 57 .global _g_char - 58 00000014 .bss _g_char,1,4 - 59 .global _g_int - 60 00000018 .bss _g_int,4,4 - 61 0000001C .bss _s_char,1,4 - 62 00000020 .bss _s_int,4,4 - 63 .global _g_double - 64 00000028 .bss _g_double,8,8 - 65 00000030 .bss _s_float,4,4 - 66 .global _g_short - 67 00000034 .bss _g_short,2,4 - 68 .global _g_float - 69 00000038 .bss _g_float,4,4 - 70 0000003C .bss _s_short,2,4 - 71 00000040 .bss _x_int,4,4 - 72 00000044 .bss _s_char_p,4,4 - - No Errors, No Warnings diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2.s binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2.s --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/relocs2.s 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/relocs2.s 1969-12-31 16:00:00.000000000 -0800 @@ -1,72 +0,0 @@ -;; This is the hand hacked output of the TI C compiler for a simple -;; test program that contains static, global, and extern data variables. - - .file "relocs2.s" - .global _x_char - .global _x_short - .global _x_long - .global _x_float - .global _x_double - .global _x_char_p - .global _g_char - .global _g_short - .global _g_int - .global _g_long - .global _g_float - .global _g_double - .global _g_char_p - .global _main - -_main: - ld.b _s_char+0(r0),r2 - st.b _x_char+0(r0),r2 - ld.b _x_char+0(r0),r2 - st.b _g_char+0(r0),r2 - ld.h _s_short+0(r0),r2 - st.h _x_short+0(r0),r2 - ld.h _x_short+0(r0),r2 - st.h _g_short+0(r0),r2 - ld _s_int+0(r0),r2 - st _x_int+0(r0),r2 - ld _x_int+0(r0),r2 - st _g_int+0(r0),r2 - ld _s_long+0(r0),r2 - st _x_long+0(r0),r2 - ld _x_long+0(r0),r2 - st _g_long+0(r0),r2 - ld _s_float+0(r0),r2 - st _x_float+0(r0),r2 - ld _x_float+0(r0),r2 - st _g_float+0(r0),r2 - ld.d _s_double+0(r0),r2 - st.d _x_double+0(r0),r2 - ld.d _x_double+0(r0),r2 - st.d _g_double+0(r0),r2 - ld _s_char_p+0(r0),r2 - st _x_char_p+0(r0),r2 - ld _x_char_p+0(r0),r2 - st _g_char_p+0(r0),r2 - jsr.a r31(r0),r0 - - .global _g_char_p - .bss _g_char_p,4,4 - .global _g_long - .bss _g_long,4,4 - .bss _s_double,8,8 - .bss _s_long,4,4 - .global _g_char - .bss _g_char,1,4 - .global _g_int - .bss _g_int,4,4 - .bss _s_char,1,4 - .bss _s_int,4,4 - .global _g_double - .bss _g_double,8,8 - .bss _s_float,4,4 - .global _g_short - .bss _g_short,2,4 - .global _g_float - .bss _g_float,4,4 - .bss _s_short,2,4 - .bss _x_int,4,4 - .bss _s_char_p,4,4 diff -uprN binutils-2.16.91.0.2/gas/testsuite/gas/tic80/tic80.exp binutils-2.16.91.0.3/gas/testsuite/gas/tic80/tic80.exp --- binutils-2.16.91.0.2/gas/testsuite/gas/tic80/tic80.exp 1999-06-03 11:02:04.000000000 -0700 +++ binutils-2.16.91.0.3/gas/testsuite/gas/tic80/tic80.exp 1969-12-31 16:00:00.000000000 -0800 @@ -1,21 +0,0 @@ -# -# TI TMS320C80 tests. -# -if [istarget tic80*-*-*] then { - - run_dump_test "regops" - run_dump_test "regops2" - run_dump_test "regops3" - run_dump_test "regops4" - run_dump_test "cregops" - run_dump_test "float" - run_dump_test "endmask" - run_dump_test "bitnum" - run_dump_test "ccode" - run_dump_test "add" - run_dump_test "relocs1" - run_dump_test "relocs1b" - run_dump_test "relocs2" - run_dump_test "relocs2b" - run_dump_test "align" -} diff -uprN binutils-2.16.91.0.2/gas/vmsconf.sh binutils-2.16.91.0.3/gas/vmsconf.sh --- binutils-2.16.91.0.2/gas/vmsconf.sh 1999-06-03 11:01:59.000000000 -0700 +++ binutils-2.16.91.0.3/gas/vmsconf.sh 1969-12-31 16:00:00.000000000 -0800 @@ -1,128 +0,0 @@ -#!/bin/sh - -cat << 'EOF' -$!make-gas.com -$! Set the def dir to proper place for use in batch. Works for interactive to. -$flnm = f$enviroment("PROCEDURE") ! get current procedure name -$set default 'f$parse(flnm,,,"DEVICE")''f$parse(flnm,,,"DIRECTORY")' -$v = 'f$verify(0)' -$! -$! Command file to build a GNU assembler on VMS -$! -$! If you are using a version of GCC that supports global constants -$! you should remove the define="const=" from the gcc lines. -$! -$! Caution: Versions 1.38.1 and earlier had a bug in the handling of -$! some static constants. If you are using such a version of the -$! assembler, and you wish to compile without the "const=" hack, -$! you should first build this version *with* the "const=" -$! definition, and then use that assembler to rebuild it without the -$! "const=" definition. Failure to do this will result in an assembler -$! that will mung floating point constants. -$! -$! Note: The version of gas shipped on the GCC VMS tapes has been patched -$! to fix the above mentioned bug. -$! -$ !The gcc-vms driver was modified to use `-1' quite some time ago, -$ !so don't echo this text any more... -$ !write sys$output "If this assembler is going to be used with GCC 1.n, you" -$ !write sys$output "need to modify the driver to supply the -1 switch to gas." -$ !write sys$output "This is required because of a small change in how global" -$ !write sys$output "constant variables are handled. Failure to include this" -$ !write sys$output "will result in linker warning messages about mismatched -$ !write sys$output "psect attributes." -$! -$ gas_host="vms" -$ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2 -$ arch = f$element(arch_indx,"|","|VAX|Alpha|") -$ if arch.eqs."VAX" -$ then -$ cpu_type="vax" -$ obj_format="vms" -$ atof="vax" -$ else -$ cpu_type="alpha" -$ obj_format="evax" -$ atof="ieee" -$ endif -$ emulation="generic" -$! -$ COPY = "copy/noLog" -$! -$ C_DEFS :="""VMS""" -$! C_DEFS :="""VMS""","""const=""" -$ C_INCLUDES = "/Include=([],[.config],[-.include],[-.include.aout])" -$ C_FLAGS = "/noVerbose/Debug" + c_includes -$! -$! -$ on error then goto bail -$ if f$search("[-.libiberty]liberty.olb").eqs."" -$ then @[-.libiberty]vmsbuild.com -$ write sys$output "Now building gas." -$ endif -$ if "''p1'" .eqs. "LINK" then goto Link -$! -$! This helps gcc 1.nn find the aout/* files. -$! -$ aout_dev = f$parse(flnm,,,"DEVICE") -$ tmp = aout_dev - ":" -$if f$trnlnm(tmp).nes."" then aout_dev = f$trnlnm(tmp) -$ aout_dir = aout_dev+f$parse(flnm,,,"DIRECTORY")' - - - "GAS]" + "INCLUDE.AOUT.]" - "][" -$assign 'aout_dir' aout/tran=conc -$ opcode_dir = aout_dev+f$parse(flnm,,,"DIRECTORY")' - - - "GAS]" + "INCLUDE.OPCODE.]" - "][" -$assign 'opcode_dir' opcode/tran=conc -$! -$ set verify -$! -$ gcc 'c_flags'/Define=('C_DEFS')/Object=[]tc-'cpu_type'.obj [.config]tc-'cpu_type'.c -$ gcc 'c_flags'/Define=('C_DEFS')/Object=[]obj-'obj_format'.obj [.config]obj-'obj_format'.c -$ gcc 'c_flags'/Define=('C_DEFS')/Object=[]atof-'atof'.obj [.config]atof-'atof'.c -EOF - -cfiles="`echo $* | sed -e 's/\.o/.c/g' -e 's!../\([^ /]*\)/\([^ /]*\.c\)![-.\1]\2!g'`" - -for cfile in $cfiles ; do - case $cfile in - "[-."*) - base=`echo $cfile | sed -e 's/\[.*\]//' -e 's/\.c$//'` - echo "\$ gcc 'c_flags'/Define=('C_DEFS')/Object=[]$base.obj $cfile" - ;; - *) - echo "\$ gcc 'c_flags'/Define=('C_DEFS') $cfile" - ;; - esac -done - -cat << 'EOF' -$link: -$!'f$verify(0)' -$ if f$trnlnm("IFILE$").nes."" then close/noLog ifile$ -$ create gcc-as.opt -! -! Linker options file for GNU assembler -! -$ open/Append ifile$ gcc-as.opt -$ write ifile$ "tc-''cpu_type'.obj" -$ write ifile$ "obj-''obj_format'.obj" -$ write ifile$ "atof-''atof'.obj" -$ COPY sys$input: ifile$: -EOF - -for obj in $* ; do - # Change "foo.o" into "foo.obj". - echo ${obj}bj,- | sed 's!.*/!!g' -done - -cat << 'EOF' -[-.libiberty]liberty.olb/Lib -gnu_cc:[000000]gcclib.olb/Lib,sys$library:vaxcrtl.olb/Lib -! Tell linker exactly what psect attributes we want -- match VAXCRTL. -psect_attr=ENVIRON,long,pic,ovr,rel,gbl,noshr,noexe,rd,wrt -$ close ifile$ -$ set verify=(Proc,noImag) -$ link/noMap/Exec=gcc-as.exe gcc-as.opt/Opt,version.opt/Opt -$! -$bail: exit $status + 0*f$verify(v) !'f$verify(0)' -EOF diff -uprN binutils-2.16.91.0.2/gas/write.c binutils-2.16.91.0.3/gas/write.c --- binutils-2.16.91.0.2/gas/write.c 2005-06-22 13:53:34.000000000 -0700 +++ binutils-2.16.91.0.3/gas/write.c 2005-08-22 12:27:42.000000000 -0700 @@ -71,13 +71,9 @@ /* The PA needs this for PIC code generation. */ #define TC_VALIDATE_FIX_SUB(FIX) 1 #else -#ifdef BFD_ASSEMBLER #define TC_VALIDATE_FIX_SUB(FIX) \ ((FIX)->fx_r_type == BFD_RELOC_GPREL32 \ || (FIX)->fx_r_type == BFD_RELOC_GPREL16) -#else -#define TC_VALIDATE_FIX_SUB(FIX) 0 -#endif #endif #endif @@ -113,7 +109,6 @@ addressT dot_value; void print_fixup (fixS *); -#ifdef BFD_ASSEMBLER static void renumber_sections (bfd *, asection *, PTR); /* We generally attach relocs to frag chains. However, after we have @@ -121,53 +116,18 @@ static void renumber_sections (bfd *, as that must be attached to a segment. This will include relocs added in md_estimate_size_for_relax, for example. */ static int frags_chained = 0; -#endif - -#ifndef BFD_ASSEMBLER - -#ifndef MANY_SEGMENTS -struct frag *text_frag_root; -struct frag *data_frag_root; -struct frag *bss_frag_root; - -struct frag *text_last_frag; /* Last frag in segment. */ -struct frag *data_last_frag; /* Last frag in segment. */ -static struct frag *bss_last_frag; /* Last frag in segment. */ -#endif - -#ifndef BFD -static object_headers headers; -#endif - -long string_byte_count; -char *next_object_file_charP; /* Tracks object file bytes. */ - -#ifndef OBJ_VMS -int magic_number_for_object_file = DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE; -#endif - -#endif /* BFD_ASSEMBLER */ static int n_fixups; -#ifdef BFD_ASSEMBLER #define RELOC_ENUM enum bfd_reloc_code_real -#else -#define RELOC_ENUM int -#endif static fixS *fix_new_internal (fragS *, int where, int size, symbolS *add, symbolS *sub, offsetT offset, int pcrel, RELOC_ENUM r_type); -#if defined (BFD_ASSEMBLER) || (!defined (BFD) && !defined (OBJ_VMS)) static long fixup_segment (fixS *, segT); -#endif static relax_addressT relax_align (relax_addressT addr, int align); -#if defined (BFD_ASSEMBLER) || ! defined (BFD) static fragS *chain_frchains_together_1 (segT, struct frchain *); -#endif -#ifdef BFD_ASSEMBLER static void chain_frchains_together (bfd *, segT, PTR); static void cvt_frag_to_fill (segT, fragS *); static void adjust_reloc_syms (bfd *, asection *, PTR); @@ -175,15 +135,7 @@ static void fix_segment (bfd *, asection static void write_relocs (bfd *, asection *, PTR); static void write_contents (bfd *, asection *, PTR); static void set_symtab (void); -#endif -#if defined (BFD_ASSEMBLER) || (! defined (BFD) && ! defined (OBJ_AOUT)) static void merge_data_into_text (void); -#endif -#if ! defined (BFD_ASSEMBLER) && ! defined (BFD) -static void cvt_frag_to_fill (object_headers *, segT, fragS *); -static void remove_subsegs (frchainS *, int, fragS **, fragS **); -static void relax_and_size_all_segments (void); -#endif /* Create a fixS in obstack 'notes'. */ @@ -218,9 +170,7 @@ fix_new_internal (fragS *frag, /* Which fixP->fx_dot_value = dot_value; fixP->fx_pcrel = pcrel; fixP->fx_plt = 0; -#if defined(NEED_FX_R_TYPE) || defined (BFD_ASSEMBLER) fixP->fx_r_type = r_type; -#endif fixP->fx_im_disp = 0; fixP->fx_pcrel_adjust = 0; fixP->fx_bit_fixP = 0; @@ -247,14 +197,12 @@ fix_new_internal (fragS *frag, /* Which time option. xoxorich. */ { -#ifdef BFD_ASSEMBLER fixS **seg_fix_rootP = (frags_chained ? &seg_info (now_seg)->fix_root : &frchain_now->fix_root); fixS **seg_fix_tailP = (frags_chained ? &seg_info (now_seg)->fix_tail : &frchain_now->fix_tail); -#endif #ifdef REVERSE_SORT_RELOCS @@ -334,16 +282,7 @@ fix_new_exp (fragS *frag, /* Which frag case O_symbol_rva: add = exp->X_add_symbol; off = exp->X_add_number; - -#if defined(BFD_ASSEMBLER) r_type = BFD_RELOC_RVA; -#else -#if defined(TC_RVA_RELOC) - r_type = TC_RVA_RELOC; -#else - as_fatal (_("rva not supported")); -#endif -#endif break; case O_uminus: @@ -373,11 +312,10 @@ fix_new_exp (fragS *frag, /* Which frag int generic_force_reloc (fixS *fix) { -#ifdef BFD_ASSEMBLER if (fix->fx_r_type == BFD_RELOC_VTABLE_INHERIT || fix->fx_r_type == BFD_RELOC_VTABLE_ENTRY) return 1; -#endif + return S_FORCE_RELOC (fix->fx_addsy, fix->fx_subsy == NULL); } @@ -393,10 +331,6 @@ append (char **charPP, char *fromP, unsi *charPP += length; } -#ifndef BFD_ASSEMBLER -int section_alignment[SEG_MAXIMUM_ORDINAL]; -#endif - /* This routine records the largest alignment seen for each segment. If the beginning of the segment is aligned on the worst-case boundary, all of the other alignments within it will work. At @@ -411,13 +345,9 @@ record_alignment (/* Segment to which al { if (seg == absolute_section) return; -#ifdef BFD_ASSEMBLER + if ((unsigned int) align > bfd_get_section_alignment (stdoutput, seg)) bfd_set_section_alignment (stdoutput, seg, align); -#else - if (align > section_alignment[(int) seg]) - section_alignment[(int) seg] = align; -#endif } int @@ -425,15 +355,10 @@ get_recorded_alignment (segT seg) { if (seg == absolute_section) return 0; -#ifdef BFD_ASSEMBLER + return bfd_get_section_alignment (stdoutput, seg); -#else - return section_alignment[(int) seg]; -#endif } -#ifdef BFD_ASSEMBLER - /* Reset the section indices after removing the gas created sections. */ static void @@ -445,24 +370,17 @@ renumber_sections (bfd *abfd ATTRIBUTE_U ++*countp; } -#endif /* defined (BFD_ASSEMBLER) */ - -#if defined (BFD_ASSEMBLER) || ! defined (BFD) - static fragS * chain_frchains_together_1 (segT section, struct frchain *frchp) { fragS dummy, *prev_frag = &dummy; -#ifdef BFD_ASSEMBLER fixS fix_dummy, *prev_fix = &fix_dummy; -#endif for (; frchp && frchp->frch_seg == section; frchp = frchp->frch_next) { prev_frag->fr_next = frchp->frch_root; prev_frag = frchp->frch_last; assert (prev_frag->fr_type != 0); -#ifdef BFD_ASSEMBLER if (frchp->fix_root != (fixS *) NULL) { if (seg_info (section)->fix_root == (fixS *) NULL) @@ -471,17 +389,12 @@ chain_frchains_together_1 (segT section, seg_info (section)->fix_tail = frchp->fix_tail; prev_fix = frchp->fix_tail; } -#endif } assert (prev_frag->fr_type != 0); prev_frag->fr_next = 0; return prev_frag; } -#endif - -#ifdef BFD_ASSEMBLER - static void chain_frchains_together (bfd *abfd ATTRIBUTE_UNUSED, segT section, @@ -501,28 +414,8 @@ chain_frchains_together (bfd *abfd ATTRI frags_chained = 1; } -#endif - -#if !defined (BFD) && !defined (BFD_ASSEMBLER) - -static void -remove_subsegs (frchainS *head, int seg, fragS **root, fragS **last) -{ - *root = head->frch_root; - *last = chain_frchains_together_1 (seg, head); -} - -#endif /* BFD */ - -#if defined (BFD_ASSEMBLER) || !defined (BFD) - -#ifdef BFD_ASSEMBLER static void cvt_frag_to_fill (segT sec ATTRIBUTE_UNUSED, fragS *fragP) -#else -static void -cvt_frag_to_fill (object_headers *headersP, segT sec, fragS *fragP) -#endif { switch (fragP->fr_type) { @@ -576,11 +469,7 @@ cvt_frag_to_fill (object_headers *header break; case rs_machine_dependent: -#ifdef BFD_ASSEMBLER md_convert_frag (stdoutput, sec, fragP); -#else - md_convert_frag (headersP, sec, fragP); -#endif assert (fragP->fr_next == NULL || ((offsetT) (fragP->fr_next->fr_address - fragP->fr_address) @@ -620,9 +509,6 @@ cvt_frag_to_fill (object_headers *header #endif } -#endif /* defined (BFD_ASSEMBLER) || !defined (BFD) */ - -#ifdef BFD_ASSEMBLER static void relax_seg (bfd *, asection *, PTR); static void @@ -1195,126 +1081,17 @@ write_contents (bfd *abfd ATTRIBUTE_UNUS } } } -#endif -#if defined(BFD_ASSEMBLER) || (!defined (BFD) && !defined(OBJ_AOUT)) static void merge_data_into_text (void) { -#if defined(BFD_ASSEMBLER) || defined(MANY_SEGMENTS) seg_info (text_section)->frchainP->frch_last->fr_next = seg_info (data_section)->frchainP->frch_root; seg_info (text_section)->frchainP->frch_last = seg_info (data_section)->frchainP->frch_last; seg_info (data_section)->frchainP = 0; -#else - fixS *tmp; - - text_last_frag->fr_next = data_frag_root; - text_last_frag = data_last_frag; - data_last_frag = NULL; - data_frag_root = NULL; - if (text_fix_root) - { - for (tmp = text_fix_root; tmp->fx_next; tmp = tmp->fx_next);; - tmp->fx_next = data_fix_root; - text_fix_tail = data_fix_tail; - } - else - text_fix_root = data_fix_root; - data_fix_root = NULL; -#endif -} -#endif /* BFD_ASSEMBLER || (! BFD && ! OBJ_AOUT) */ - -#if !defined (BFD_ASSEMBLER) && !defined (BFD) -static void -relax_and_size_all_segments () -{ - fragS *fragP; - - relax_segment (text_frag_root, SEG_TEXT); - relax_segment (data_frag_root, SEG_DATA); - relax_segment (bss_frag_root, SEG_BSS); - - /* Now the addresses of frags are correct within the segment. */ - know (text_last_frag->fr_type == rs_fill && text_last_frag->fr_offset == 0); - H_SET_TEXT_SIZE (&headers, text_last_frag->fr_address); - text_last_frag->fr_address = H_GET_TEXT_SIZE (&headers); - - /* Join the 2 segments into 1 huge segment. - To do this, re-compute every rn_address in the SEG_DATA frags. - Then join the data frags after the text frags. - - Determine a_data [length of data segment]. */ - if (data_frag_root) - { - register relax_addressT slide; - - know ((text_last_frag->fr_type == rs_fill) - && (text_last_frag->fr_offset == 0)); - - H_SET_DATA_SIZE (&headers, data_last_frag->fr_address); - data_last_frag->fr_address = H_GET_DATA_SIZE (&headers); - slide = H_GET_TEXT_SIZE (&headers); /* & in file of the data segment. */ -#ifdef OBJ_BOUT -#define RoundUp(N,S) (((N)+(S)-1)&-(S)) - /* For b.out: If the data section has a strict alignment - requirement, its load address in the .o file will be - rounded up from the size of the text section. These - two values are *not* the same! Similarly for the bss - section.... */ - slide = RoundUp (slide, 1 << section_alignment[SEG_DATA]); -#endif - - for (fragP = data_frag_root; fragP; fragP = fragP->fr_next) - fragP->fr_address += slide; - - know (text_last_frag != 0); - text_last_frag->fr_next = data_frag_root; - } - else - { - H_SET_DATA_SIZE (&headers, 0); - } - -#ifdef OBJ_BOUT - /* See above comments on b.out data section address. */ - { - addressT bss_vma; - if (data_last_frag == 0) - bss_vma = H_GET_TEXT_SIZE (&headers); - else - bss_vma = data_last_frag->fr_address; - bss_vma = RoundUp (bss_vma, 1 << section_alignment[SEG_BSS]); - bss_address_frag.fr_address = bss_vma; - } -#else /* ! OBJ_BOUT */ - bss_address_frag.fr_address = (H_GET_TEXT_SIZE (&headers) + - H_GET_DATA_SIZE (&headers)); - -#endif /* ! OBJ_BOUT */ - - /* Slide all the frags. */ - if (bss_frag_root) - { - relax_addressT slide = bss_address_frag.fr_address; - - for (fragP = bss_frag_root; fragP; fragP = fragP->fr_next) - fragP->fr_address += slide; - } - - if (bss_last_frag) - H_SET_BSS_SIZE (&headers, - bss_last_frag->fr_address - bss_frag_root->fr_address); - else - H_SET_BSS_SIZE (&headers, 0); } -#endif /* ! BFD_ASSEMBLER && ! BFD */ -#if defined (BFD_ASSEMBLER) || !defined (BFD) - -#ifdef BFD_ASSEMBLER static void set_symtab (void) { @@ -1350,7 +1127,6 @@ set_symtab (void) assert (result); symbol_table_frozen = 1; } -#endif /* Finish the subsegments. After every sub-segment, we fake an ".align ...". This conforms to BSD4.2 brane-damage. We then fake @@ -1367,11 +1143,7 @@ set_symtab (void) (!(FRCHAIN)->frch_next || (FRCHAIN)->frch_next->frch_seg != (SEG) \ ? get_recorded_alignment (SEG) : 0) #else -#ifdef BFD_ASSEMBLER #define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 0 -#else -#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 2 -#endif #endif #endif @@ -1392,7 +1164,6 @@ subsegs_finish (void) if (!had_errors ()) { alignment = SUB_SEGMENT_ALIGN (now_seg, frchainP); -#ifdef BFD_ASSEMBLER if ((bfd_get_section_flags (now_seg->owner, now_seg) & SEC_MERGE) && now_seg->entsize) { @@ -1407,7 +1178,6 @@ subsegs_finish (void) if (entalign > alignment) alignment = entalign; } -#endif } if (subseg_text_p (now_seg)) @@ -1431,7 +1201,7 @@ subsegs_finish (void) void write_object_file (void) { -#if ! defined (BFD_ASSEMBLER) || ! defined (WORKING_DOT_WORD) +#ifndef WORKING_DOT_WORD fragS *fragP; /* Track along all frags. */ #endif @@ -1468,7 +1238,6 @@ write_object_file (void) /* From now on, we don't care about sub-segments. Build one frag chain for each segment. Linked thru fr_next. */ -#ifdef BFD_ASSEMBLER /* Remove the sections created by gas for its own purposes. */ { int i; @@ -1481,23 +1250,15 @@ write_object_file (void) } bfd_map_over_sections (stdoutput, chain_frchains_together, (char *) 0); -#else - remove_subsegs (frchain_root, SEG_TEXT, &text_frag_root, &text_last_frag); - remove_subsegs (data0_frchainP, SEG_DATA, &data_frag_root, &data_last_frag); - remove_subsegs (bss0_frchainP, SEG_BSS, &bss_frag_root, &bss_last_frag); -#endif /* We have two segments. If user gave -R flag, then we must put the data frags into the text segment. Do this before relaxing so we know to take advantage of -R and make shorter addresses. */ -#if !defined (OBJ_AOUT) || defined (BFD_ASSEMBLER) if (flag_readonly_data_in_text) { merge_data_into_text (); } -#endif -#ifdef BFD_ASSEMBLER while (1) { int changed; @@ -1538,9 +1299,6 @@ write_object_file (void) finalize_syms = TC_FINALIZE_SYMS_BEFORE_SIZE_SEG; bfd_map_over_sections (stdoutput, size_seg, (char *) 0); -#else - relax_and_size_all_segments (); -#endif /* BFD_ASSEMBLER */ /* Relaxation has completed. Freeze all syms. */ finalize_syms = 1; @@ -1549,64 +1307,6 @@ write_object_file (void) md_post_relax_hook; #endif -#ifndef BFD_ASSEMBLER - /* Crawl the symbol chain. - - For each symbol whose value depends on a frag, take the address of - that frag and subsume it into the value of the symbol. - After this, there is just one way to lookup a symbol value. - Values are left in their final state for object file emission. - We adjust the values of 'L' local symbols, even if we do - not intend to emit them to the object file, because their values - are needed for fix-ups. - - Unless we saw a -L flag, remove all symbols that begin with 'L' - from the symbol chain. (They are still pointed to by the fixes.) - - Count the remaining symbols. - Assign a symbol number to each symbol. - Count the number of string-table chars we will emit. - Put this info into the headers as appropriate. */ - know (zero_address_frag.fr_address == 0); - string_byte_count = 4; - - obj_crawl_symbol_chain (&headers); - - if (string_byte_count == 4) - string_byte_count = 0; - - H_SET_STRING_SIZE (&headers, string_byte_count); - - /* Addresses of frags now reflect addresses we use in the object file. - Symbol values are correct. - Scan the frags, converting any ".org"s and ".align"s to ".fill"s. - Also converting any machine-dependent frags using md_convert_frag(); */ - subseg_change (SEG_TEXT, 0); - - for (fragP = text_frag_root; fragP; fragP = fragP->fr_next) - { - /* At this point we have linked all the frags into a single - chain. However, cvt_frag_to_fill may call md_convert_frag - which may call fix_new. We need to ensure that fix_new adds - the fixup to the right section. */ - if (fragP == data_frag_root) - subseg_change (SEG_DATA, 0); - - cvt_frag_to_fill (&headers, SEG_TEXT, fragP); - - /* Some assert macros don't work with # directives mixed in. */ -#ifndef NDEBUG - if (!(fragP->fr_next == NULL -#ifdef OBJ_BOUT - || fragP->fr_next == data_frag_root -#endif - || ((offsetT) (fragP->fr_next->fr_address - fragP->fr_address) - == (fragP->fr_fix + fragP->fr_offset * fragP->fr_var)))) - abort (); -#endif - } -#endif /* ! BFD_ASSEMBLER */ - #ifndef WORKING_DOT_WORD { struct broken_word *lie; @@ -1623,7 +1323,6 @@ write_object_file (void) exp.X_add_symbol = lie->add; exp.X_op_symbol = lie->sub; exp.X_add_number = lie->addnum; -#ifdef BFD_ASSEMBLER #ifdef TC_CONS_FIX_NEW TC_CONS_FIX_NEW (lie->frag, lie->word_goes_here - lie->frag->fr_literal, @@ -1633,23 +1332,6 @@ write_object_file (void) lie->word_goes_here - lie->frag->fr_literal, 2, &exp, 0, BFD_RELOC_16); #endif -#else -#if defined(TC_SPARC) || defined(TC_A29K) || defined(NEED_FX_R_TYPE) - fix_new_exp (lie->frag, - lie->word_goes_here - lie->frag->fr_literal, - 2, &exp, 0, NO_RELOC); -#else -#ifdef TC_NS32K - fix_new_ns32k_exp (lie->frag, - lie->word_goes_here - lie->frag->fr_literal, - 2, &exp, 0, 0, 2, 0, 0); -#else - fix_new_exp (lie->frag, - lie->word_goes_here - lie->frag->fr_literal, - 2, &exp, 0, 0); -#endif /* TC_NS32K */ -#endif /* TC_SPARC|TC_A29K|NEED_FX_R_TYPE */ -#endif /* BFD_ASSEMBLER */ *prevP = lie->next_broken_word; } else @@ -1720,132 +1402,6 @@ write_object_file (void) } #endif /* not WORKING_DOT_WORD */ -#ifndef BFD_ASSEMBLER -#ifndef OBJ_VMS - { /* not vms */ - char *the_object_file; - long object_file_size; - /* Scan every FixS performing fixups. We had to wait until now to - do this because md_convert_frag() may have made some fixSs. */ - int trsize, drsize; - - subseg_change (SEG_TEXT, 0); - trsize = md_reloc_size * fixup_segment (text_fix_root, SEG_TEXT); - subseg_change (SEG_DATA, 0); - drsize = md_reloc_size * fixup_segment (data_fix_root, SEG_DATA); - H_SET_RELOCATION_SIZE (&headers, trsize, drsize); - - /* FIXME: Move this stuff into the pre-write-hook. */ - H_SET_MAGIC_NUMBER (&headers, magic_number_for_object_file); - H_SET_ENTRY_POINT (&headers, 0); - - obj_pre_write_hook (&headers); /* Extra coff stuff. */ - - object_file_size = H_GET_FILE_SIZE (&headers); - next_object_file_charP = the_object_file = xmalloc (object_file_size); - - output_file_create (out_file_name); - - obj_header_append (&next_object_file_charP, &headers); - - know ((next_object_file_charP - the_object_file) - == H_GET_HEADER_SIZE (&headers)); - - /* Emit code. */ - for (fragP = text_frag_root; fragP; fragP = fragP->fr_next) - { - register long count; - register char *fill_literal; - register long fill_size; - - PROGRESS (1); - know (fragP->fr_type == rs_fill); - append (&next_object_file_charP, fragP->fr_literal, - (unsigned long) fragP->fr_fix); - fill_literal = fragP->fr_literal + fragP->fr_fix; - fill_size = fragP->fr_var; - know (fragP->fr_offset >= 0); - - for (count = fragP->fr_offset; count; count--) - append (&next_object_file_charP, fill_literal, - (unsigned long) fill_size); - } - - know ((next_object_file_charP - the_object_file) - == (H_GET_HEADER_SIZE (&headers) - + H_GET_TEXT_SIZE (&headers) - + H_GET_DATA_SIZE (&headers))); - - /* Emit relocations. */ - obj_emit_relocations (&next_object_file_charP, text_fix_root, - (relax_addressT) 0); - know ((next_object_file_charP - the_object_file) - == (H_GET_HEADER_SIZE (&headers) - + H_GET_TEXT_SIZE (&headers) - + H_GET_DATA_SIZE (&headers) - + H_GET_TEXT_RELOCATION_SIZE (&headers))); -#ifdef TC_I960 - /* Make addresses in data relocation directives relative to beginning of - first data fragment, not end of last text fragment: alignment of the - start of the data segment may place a gap between the segments. */ - obj_emit_relocations (&next_object_file_charP, data_fix_root, - data0_frchainP->frch_root->fr_address); -#else /* TC_I960 */ - obj_emit_relocations (&next_object_file_charP, data_fix_root, - text_last_frag->fr_address); -#endif /* TC_I960 */ - - know ((next_object_file_charP - the_object_file) - == (H_GET_HEADER_SIZE (&headers) - + H_GET_TEXT_SIZE (&headers) - + H_GET_DATA_SIZE (&headers) - + H_GET_TEXT_RELOCATION_SIZE (&headers) - + H_GET_DATA_RELOCATION_SIZE (&headers))); - - /* Emit line number entries. */ - OBJ_EMIT_LINENO (&next_object_file_charP, lineno_rootP, the_object_file); - know ((next_object_file_charP - the_object_file) - == (H_GET_HEADER_SIZE (&headers) - + H_GET_TEXT_SIZE (&headers) - + H_GET_DATA_SIZE (&headers) - + H_GET_TEXT_RELOCATION_SIZE (&headers) - + H_GET_DATA_RELOCATION_SIZE (&headers) - + H_GET_LINENO_SIZE (&headers))); - - /* Emit symbols. */ - obj_emit_symbols (&next_object_file_charP, symbol_rootP); - know ((next_object_file_charP - the_object_file) - == (H_GET_HEADER_SIZE (&headers) - + H_GET_TEXT_SIZE (&headers) - + H_GET_DATA_SIZE (&headers) - + H_GET_TEXT_RELOCATION_SIZE (&headers) - + H_GET_DATA_RELOCATION_SIZE (&headers) - + H_GET_LINENO_SIZE (&headers) - + H_GET_SYMBOL_TABLE_SIZE (&headers))); - - /* Emit strings. */ - if (string_byte_count > 0) - obj_emit_strings (&next_object_file_charP); - -#ifdef BFD_HEADERS - bfd_seek (stdoutput, (file_ptr) 0, 0); - bfd_bwrite (the_object_file, (bfd_size_type) object_file_size, stdoutput); -#else - - /* Write the data to the file. */ - output_file_append (the_object_file, object_file_size, out_file_name); - free (the_object_file); -#endif - } -#else /* OBJ_VMS */ - /* Now do the VMS-dependent part of writing the object file. */ - vms_write_object_file (H_GET_TEXT_SIZE (&headers), - H_GET_DATA_SIZE (&headers), - H_GET_BSS_SIZE (&headers), - text_frag_root, data_frag_root); -#endif /* OBJ_VMS */ -#else /* BFD_ASSEMBLER */ - /* Resolve symbol values. This needs to be done before processing the relocations. */ if (symbol_rootP) @@ -2032,12 +1588,9 @@ write_object_file (void) #endif bfd_map_over_sections (stdoutput, write_contents, (char *) 0); -#endif /* BFD_ASSEMBLER */ } -#endif /* ! BFD */ #ifdef TC_GENERIC_RELAX_TABLE - /* Relax a fragment by scanning TC_GENERIC_RELAX_TABLE. */ long @@ -2068,12 +1621,6 @@ relax_frag (segT segment, fragS *fragP, sym_frag = symbol_get_frag (symbolP); #ifndef DIFF_EXPR_OK -#if !defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER) - know ((S_GET_SEGMENT (symbolP) == SEG_ABSOLUTE) - || (S_GET_SEGMENT (symbolP) == SEG_DATA) - || (S_GET_SEGMENT (symbolP) == SEG_BSS) - || (S_GET_SEGMENT (symbolP) == SEG_TEXT)); -#endif know (sym_frag != NULL); #endif know (S_GET_SEGMENT (symbolP) != absolute_section @@ -2174,20 +1721,20 @@ relax_align (register relax_addressT add int relax_segment (struct frag *segment_frag_root, segT segment) { - register struct frag *fragP; - register relax_addressT address; + unsigned long frag_count; + struct frag *fragP; + relax_addressT address; int ret; -#if !defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER) - know (segment == SEG_DATA || segment == SEG_TEXT || segment == SEG_BSS); -#endif /* In case md_estimate_size_before_relax() wants to make fixSs. */ subseg_change (segment, 0); /* For each frag in segment: count and store (a 1st guess of) fr_address. */ address = 0; - for (fragP = segment_frag_root; fragP; fragP = fragP->fr_next) + for (frag_count = 0, fragP = segment_frag_root; + fragP; + fragP = fragP->fr_next, frag_count ++) { fragP->relax_marker = 0; fragP->fr_address = address; @@ -2263,6 +1810,7 @@ relax_segment (struct frag *segment_frag /* Do relax(). */ { + unsigned long max_iterations; offsetT stretch; /* May be any size, 0 or negative. */ /* Cumulative number of addresses we have relaxed this pass. We may have relaxed more than one address. */ @@ -2271,6 +1819,20 @@ relax_segment (struct frag *segment_frag grew, and another shrank. If a branch instruction doesn't fit anymore, we could be scrod. */ + /* We want to prevent going into an infinite loop where one frag grows + depending upon the location of a symbol which is in turn moved by + the growing frag. eg: + + foo = . + .org foo+16 + foo = . + + So we dictate that this algorithm can be at most O2. */ + max_iterations = frag_count * frag_count; + /* Check for overflow. */ + if (max_iterations < frag_count) + max_iterations = frag_count; + do { stretch = 0; @@ -2387,22 +1949,11 @@ relax_segment (struct frag *segment_frag if (symbolP) { -#if !defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER) - know ((S_GET_SEGMENT (symbolP) == SEG_ABSOLUTE) - || (S_GET_SEGMENT (symbolP) == SEG_DATA) - || (S_GET_SEGMENT (symbolP) == SEG_TEXT) - || S_GET_SEGMENT (symbolP) == SEG_BSS); - know (symbolP->sy_frag); - know (!(S_GET_SEGMENT (symbolP) == SEG_ABSOLUTE) - || (symbolP->sy_frag == &zero_address_frag)); -#endif /* Convert from an actual address to an octet offset into the section. Here it is assumed that the section's VMA is zero, and can omit subtracting it from the symbol's value to get the address offset. */ -#ifdef BFD_ASSEMBLER know (S_GET_SEGMENT (symbolP)->vma == 0); -#endif target += S_GET_VALUE (symbolP) * OCTETS_PER_BYTE; } @@ -2500,10 +2051,15 @@ relax_segment (struct frag *segment_frag stretch += growth; stretched = 1; } - } /* For each frag in the segment. */ + } } - while (stretched); /* Until nothing further to relax. */ - } /* do_relax */ + /* Until nothing further to relax. */ + while (stretched && -- max_iterations); + + if (stretched) + as_fatal (_("Infinite loop encountered whilst attempting to compute the addresses of symbols in section %s"), + segment_name (segment)); + } ret = 0; for (fragP = segment_frag_root; fragP; fragP = fragP->fr_next) @@ -2515,8 +2071,6 @@ relax_segment (struct frag *segment_frag return ret; } -#if defined (BFD_ASSEMBLER) || (!defined (BFD) && !defined (OBJ_VMS)) - /* fixup_segment() Go through all the fixS's in a segment and see which ones can be @@ -2537,13 +2091,7 @@ fixup_segment (fixS *fixP, segT this_seg segT add_symbol_segment = absolute_section; if (fixP != NULL && abs_section_sym == NULL) - { -#ifndef BFD_ASSEMBLER - abs_section_sym = &abs_symbol; -#else - abs_section_sym = section_symbol (absolute_section); -#endif - } + abs_section_sym = section_symbol (absolute_section); /* If the linker is doing the relaxing, we must not do any fixups. @@ -2682,9 +2230,7 @@ fixup_segment (fixS *fixP, segT this_seg fixP->fx_addsy = NULL; } else if (add_symbol_segment != undefined_section -#ifdef BFD_ASSEMBLER && ! bfd_is_com_section (add_symbol_segment) -#endif && MD_APPLY_SYM_VALUE (fixP)) add_number += S_GET_VALUE (fixP->fx_addsy); } @@ -2765,8 +2311,6 @@ fixup_segment (fixS *fixP, segT this_seg return seg_reloc_count; } -#endif /* defined (BFD_ASSEMBLER) || (!defined (BFD) && !defined (OBJ_VMS)) */ - void number_to_chars_bigendian (char *buf, valueT val, int n) { @@ -2824,14 +2368,8 @@ print_fixup (fixS *fixp) fprintf (stderr, "\n size=%d frag=%lx where=%ld offset=%lx addnumber=%lx", fixp->fx_size, (long) fixp->fx_frag, (long) fixp->fx_where, (long) fixp->fx_offset, (long) fixp->fx_addnumber); -#ifdef BFD_ASSEMBLER fprintf (stderr, "\n %s (%d)", bfd_get_reloc_code_name (fixp->fx_r_type), fixp->fx_r_type); -#else -#ifdef NEED_FX_R_TYPE - fprintf (stderr, " r_type=%d", fixp->fx_r_type); -#endif -#endif if (fixp->fx_addsy) { fprintf (stderr, "\n +<"); diff -uprN binutils-2.16.91.0.2/gas/write.h binutils-2.16.91.0.3/gas/write.h --- binutils-2.16.91.0.2/gas/write.h 2005-05-10 15:46:44.000000000 -0700 +++ binutils-2.16.91.0.3/gas/write.h 2005-08-22 12:27:42.000000000 -0700 @@ -1,6 +1,6 @@ /* write.h Copyright 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, - 2002, 2003 Free Software Foundation, Inc. + 2002, 2003, 2005 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -28,16 +28,6 @@ #endif #endif /* TC_I960 */ -#ifndef BFD_ASSEMBLER - -#ifndef LOCAL_LABEL -#define LOCAL_LABEL(name) (name [0] == 'L' ) -#endif - -#define S_LOCAL_NAME(s) (LOCAL_LABEL (S_GET_NAME (s))) - -#endif /* ! BFD_ASSEMBLER */ - /* This is the name of a fake symbol which will never appear in the assembler output. S_IS_LOCAL detects it because of the \001. */ #ifndef FAKE_LABEL_NAME @@ -120,15 +110,7 @@ struct fix processing. */ bit_fixS *fx_bit_fixP; -#ifdef BFD_ASSEMBLER bfd_reloc_code_real_type fx_r_type; -#else -#ifdef NEED_FX_R_TYPE - /* Hack for machines where the type of reloc can't be - worked out by looking at how big it is. */ - int fx_r_type; -#endif -#endif /* This field is sort of misnamed. It appears to be a sort of random scratch field, for use by the back ends. The main gas code doesn't @@ -165,20 +147,6 @@ typedef struct fix fixS; extern int finalize_syms; extern symbolS *abs_section_sym; extern addressT dot_value; - -#ifndef BFD_ASSEMBLER -extern char *next_object_file_charP; - -#ifndef MANY_SEGMENTS -COMMON fixS *text_fix_root, *text_fix_tail; /* Chains fixSs. */ -COMMON fixS *data_fix_root, *data_fix_tail; /* Chains fixSs. */ -COMMON fixS *bss_fix_root, *bss_fix_tail; /* Chains fixSs. */ -extern struct frag *text_last_frag; /* Last frag in segment. */ -extern struct frag *data_last_frag; /* Last frag in segment. */ -#endif -COMMON fixS **seg_fix_rootP, **seg_fix_tailP; /* -> one of above. */ -#endif - extern long string_byte_count; extern int section_alignment[]; @@ -189,26 +157,14 @@ extern void subsegs_finish (void); extern void write_object_file (void); extern long relax_frag (segT, fragS *, long); extern int relax_segment (struct frag * seg_frag_root, segT seg_type); - extern void number_to_chars_littleendian (char *, valueT, int); extern void number_to_chars_bigendian (char *, valueT, int); - -#ifdef BFD_ASSEMBLER extern fixS *fix_new (fragS * frag, int where, int size, symbolS * add_symbol, offsetT offset, int pcrel, bfd_reloc_code_real_type r_type); extern fixS *fix_new_exp (fragS * frag, int where, int size, expressionS *exp, int pcrel, bfd_reloc_code_real_type r_type); -#else -extern fixS *fix_new - (fragS * frag, int where, int size, symbolS * add_symbol, - offsetT offset, int pcrel, int r_type); -extern fixS *fix_new_exp - (fragS * frag, int where, int size, expressionS *exp, int pcrel, - int r_type); -#endif - extern void write_print_statistics (FILE *); #endif /* __write_h__ */ diff -uprN binutils-2.16.91.0.2/include/aout/encap.h binutils-2.16.91.0.3/include/aout/encap.h --- binutils-2.16.91.0.2/include/aout/encap.h 2005-05-10 15:46:49.000000000 -0700 +++ binutils-2.16.91.0.3/include/aout/encap.h 2005-08-22 12:27:43.000000000 -0700 @@ -85,7 +85,6 @@ struct coffheader #define COFF_MAGIC_I386 0514 /* I386MAGIC */ #define COFF_MAGIC_M68K 0520 /* MC68MAGIC */ -#define COFF_MAGIC_A29K 0x17A /* Used by asm29k cross-tools */ #ifdef COFF_MAGIC short __header_offset_temp; diff -uprN binutils-2.16.91.0.2/include/bfdlink.h binutils-2.16.91.0.3/include/bfdlink.h --- binutils-2.16.91.0.2/include/bfdlink.h 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/include/bfdlink.h 2005-08-22 12:27:43.000000000 -0700 @@ -510,8 +510,7 @@ struct bfd_link_callbacks const char *name, const char *reloc_name, bfd_vma addend, bfd *abfd, asection *section, bfd_vma address); /* A function which is called when a dangerous reloc is performed. - The canonical example is an a29k IHCONST reloc which does not - follow an IHIHALF reloc. MESSAGE is an appropriate message. + MESSAGE is an appropriate message. ABFD, SECTION and ADDRESS identify the location at which the problem occurred; if this is the result of a bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then diff -uprN binutils-2.16.91.0.2/include/ChangeLog binutils-2.16.91.0.3/include/ChangeLog --- binutils-2.16.91.0.2/include/ChangeLog 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/include/ChangeLog 2005-08-22 12:27:43.000000000 -0700 @@ -1,3 +1,20 @@ +2005-08-18 Alan Modra + + * bfdlink.h: Remove mention of a29k. + * dis-asm.h: Remove a29k support. + * aout/encap.h: Likewise. + +2005-08-17 Mark Kettenis + + * floatformat.h (struct floatformat): Change type of large + argument for is_valid member to `const void *'. + (floatformat_to_double): Change type of second argument to `const + void *'. + (floatformat_from_double): Change type of last argument to `void + *'. + (floatformat_is_valid): Change type of last argument to `const + void *'. + 2005-07-14 Jim Blandy * dis-asm.h (print_insn_m32c): New declaration. diff -uprN binutils-2.16.91.0.2/include/coff/a29k.h binutils-2.16.91.0.3/include/coff/a29k.h --- binutils-2.16.91.0.2/include/coff/a29k.h 2005-05-10 15:46:50.000000000 -0700 +++ binutils-2.16.91.0.3/include/coff/a29k.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,148 +0,0 @@ -/* COFF spec for AMD 290*0 - - Copyright 2001 Free Software Foundation, Inc. - - 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - - Contributed by David Wood @ New York University. */ - -#ifndef AMD -# define AMD -#endif - -#define L_LNNO_SIZE 2 -#include "coff/external.h" - -/* -** Magic numbers for Am29000 -** (AT&T will assign the "real" magic number) -*/ - -#define SIPFBOMAGIC 0572 /* Am29000 (Byte 0 is MSB) */ -#define SIPRBOMAGIC 0573 /* Am29000 (Byte 0 is LSB) */ - -#define A29K_MAGIC_BIG SIPFBOMAGIC -#define A29K_MAGIC_LITTLE SIPRBOMAGIC -#define A29KBADMAG(x) ( ((x).f_magic != A29K_MAGIC_BIG) && \ - ((x).f_magic != A29K_MAGIC_LITTLE)) - -#define OMAGIC A29K_MAGIC_BIG -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ - -/* -** File header flags currently known to us. -** -** Am29000 will use the F_AR32WR and F_AR32W flags to indicate -** the byte ordering in the file. -*/ - -/*--------------------------------------------------------------*/ - - -/* aouthdr magic numbers */ -#define NMAGIC 0410 /* separate i/d executable */ -#define SHMAGIC 0406 /* NYU/Ultra3 shared data executable - (writable text) */ -#undef _ETEXT -#define _ETEXT "_etext" - -/*--------------------------------------------------------------*/ - - -/* More names of "special" sections. */ -#define _LIT ".lit" - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ - -/* -** Section types - with additional section type for global -** registers which will be relocatable for the Am29000. -** -** In instances where it is necessary for a linker to produce an -** output file which contains text or data not based at virtual -** address 0, e.g. for a ROM, then the linker should accept -** address base information as command input and use PAD sections -** to skip over unused addresses. -*/ - -#define STYP_BSSREG 0x1200 /* Global register area (like STYP_INFO) */ -#define STYP_ENVIR 0x2200 /* Environment (like STYP_INFO) */ -#define STYP_ABS 0x4000 /* Absolute (allocated, not reloc, loaded) */ - -/*--------------------------------------------------------------*/ - -/* -** Relocation information declaration and related definitions -*/ - -struct external_reloc -{ - char r_vaddr[4]; /* (virtual) address of reference */ - char r_symndx[4]; /* index into symbol table */ - char r_type[2]; /* relocation type */ -}; - -#define RELOC struct external_reloc -#define RELSZ 10 /* sizeof (RELOC) */ - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ - -/* -** Relocation types for the Am29000 -*/ - -#define R_ABS 0 /* reference is absolute */ - -#define R_IREL 030 /* instruction relative (jmp/call) */ -#define R_IABS 031 /* instruction absolute (jmp/call) */ -#define R_ILOHALF 032 /* instruction low half (const) */ -#define R_IHIHALF 033 /* instruction high half (consth) part 1 */ -#define R_IHCONST 034 /* instruction high half (consth) part 2 */ - /* constant offset of R_IHIHALF relocation */ -#define R_BYTE 035 /* relocatable byte value */ -#define R_HWORD 036 /* relocatable halfword value */ -#define R_WORD 037 /* relocatable word value */ - -#define R_IGLBLRC 040 /* instruction global register RC */ -#define R_IGLBLRA 041 /* instruction global register RA */ -#define R_IGLBLRB 042 /* instruction global register RB */ - -/* -NOTE: -All the "I" forms refer to 29000 instruction formats. The linker is -expected to know how the numeric information is split and/or aligned -within the instruction word(s). R_BYTE works for instructions, too. - -If the parameter to a CONSTH instruction is a relocatable type, two -relocation records are written. The first has an r_type of R_IHIHALF -(33 octal) and a normal r_vaddr and r_symndx. The second relocation -record has an r_type of R_IHCONST (34 octal), a normal r_vaddr (which -is redundant), and an r_symndx containing the 32-bit constant offset -to the relocation instead of the actual symbol table index. This -second record is always written, even if the constant offset is zero. -The constant fields of the instruction are set to zero. -*/ - -/*--------------------------------------------------------------*/ - -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ - -/* -** Storage class definitions - new classes for global registers. -*/ - -#define C_GLBLREG 19 /* global register */ -#define C_EXTREG 20 /* external global register */ -#define C_DEFREG 21 /* ext. def. of global register */ diff -uprN binutils-2.16.91.0.2/include/coff/ChangeLog binutils-2.16.91.0.3/include/coff/ChangeLog --- binutils-2.16.91.0.2/include/coff/ChangeLog 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/include/coff/ChangeLog 2005-08-22 12:27:44.000000000 -0700 @@ -1,3 +1,7 @@ +2005-08-18 Alan Modra + + * a29k.h: Delete. + 2005-07-14 Daniel Marques * alpha.h (ALPHA_ECOFF_COMPRESSEDMAG): Define. diff -uprN binutils-2.16.91.0.2/include/dis-asm.h binutils-2.16.91.0.3/include/dis-asm.h --- binutils-2.16.91.0.2/include/dis-asm.h 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/include/dis-asm.h 2005-08-22 12:27:43.000000000 -0700 @@ -218,8 +218,6 @@ extern int print_insn_alpha (bfd_vma, d extern int print_insn_big_arm (bfd_vma, disassemble_info *); extern int print_insn_little_arm (bfd_vma, disassemble_info *); extern int print_insn_sparc (bfd_vma, disassemble_info *); -extern int print_insn_big_a29k (bfd_vma, disassemble_info *); -extern int print_insn_little_a29k (bfd_vma, disassemble_info *); extern int print_insn_avr (bfd_vma, disassemble_info *); extern int print_insn_d10v (bfd_vma, disassemble_info *); extern int print_insn_d30v (bfd_vma, disassemble_info *); diff -uprN binutils-2.16.91.0.2/include/elf/ChangeLog binutils-2.16.91.0.3/include/elf/ChangeLog --- binutils-2.16.91.0.2/include/elf/ChangeLog 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/include/elf/ChangeLog 2005-08-22 12:27:44.000000000 -0700 @@ -1,3 +1,31 @@ +2005-08-09 John David Anglin + + * hppa.h (SHT_PARISC_DLKM, SHF_PARISC_WEAKORDER, PT_PARISC_WEAKORDER): + New defines. + +2005-08-04 John David Anglin + + * hppa.h (PF_HP_CODE, PF_HP_MODIFY, PF_HP_LAZYSWAP): Revise defines. + (PF_HP_CODE_DEPR, PF_HP_MODIFY_DEPR, PF_HP_LAZYSWAP_DEPR): New + deprecated defines. + (DT_HP_EPLTREL, DT_HP_EPLTRELSZ, DT_HP_FILTERED, DT_HP_FILTER_TLS, + DT_HP_COMPAT_FILTERED, DT_HP_LAZYLOAD, DT_HP_BIND_NOW_COUNT, DT_PLT, + DT_PLT_SIZE, DT_DLT, DT_DLT_SIZE, DT_HP_BIND_DEPTH_FIRST, DT_HP_GST, + DT_HP_SHLIB_FIXED, DT_HP_MERGE_SHLIB_SEG, DT_HP_NODELETE, DT_HP_GROUP, + DT_HP_PROTECT_LINKAGE_TABLE, PT_HP_OPT_ANNOT, PT_HP_HSL_ANNOT, + PT_HP_STACK, PT_HP_CORE_UTSNAME, NT_HP_COMPILER, NT_HP_COPYRIGHT, + NT_HP_VERSION, NT_HP_SRCFILE_INFO, NT_HP_LINKER, NT_HP_INSTRUMENTED, + NT_HP_UX_OPTIONS): Define. + +2005-07-25 DJ Delorie + + * m32c.h: Add R_M32C_8, R_M32C_LO16, R_M32C_HI8, and R_M32C_HI16. + +2005-07-25 Jan Hubicka + + * x86-64.h (SHN_X86_64_LCOMMON): New. + (SHF_X86_64_LARGE): New. + 2005-07-20 Kazuhiro Inaoka * m32r.h (R_M32R_REL32): Added. diff -uprN binutils-2.16.91.0.2/include/elf/hppa.h binutils-2.16.91.0.3/include/elf/hppa.h --- binutils-2.16.91.0.2/include/elf/hppa.h 2005-05-10 15:46:52.000000000 -0700 +++ binutils-2.16.91.0.3/include/elf/hppa.h 2005-08-22 12:27:44.000000000 -0700 @@ -1,5 +1,5 @@ /* HPPA ELF support for BFD. - Copyright 1993, 1994, 1995, 1998, 1999, 2000 + Copyright 1993, 1994, 1995, 1998, 1999, 2000, 2005 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -74,6 +74,9 @@ Foundation, Inc., 51 Franklin Street - F /* Section contains code annotations. */ #define SHT_PARISC_ANNOT 0x70000003 +/* DLKM special section. */ +#define SHT_PARISC_DLKM 0x70000004 + /* These are strictly for compatibility with the older elf32-hppa implementation. Hopefully we can eliminate them in the future. */ /* Optional section holding argument location/relocation info. */ @@ -93,6 +96,8 @@ Foundation, Inc., 51 Franklin Street - F /* Section should go near GP. */ #define SHF_PARISC_SHORT 0x20000000 +/* Section is weak ordered. */ +#define SHF_PARISC_WEAKORDER 0x10000000 /* Identifies the entry point of a millicode routine. */ #define STT_PARISC_MILLI 13 @@ -489,13 +494,19 @@ typedef enum elf_hppa_reloc_type elf_hpp #define PT_PARISC_ARCHEXT 0x70000000 #define PT_PARISC_UNWIND 0x70000001 -#define PF_PARISC_SBP 0x08000000 +#define PT_PARISC_WEAKORDER 0x70000002 + +/* Flag bits in p_flags of ElfXX_Phdr. */ +#define PF_HP_CODE 0x00040000 +#define PF_HP_MODIFY 0x00080000 #define PF_HP_PAGE_SIZE 0x00100000 #define PF_HP_FAR_SHARED 0x00200000 #define PF_HP_NEAR_SHARED 0x00400000 -#define PF_HP_CODE 0x01000000 -#define PF_HP_MODIFY 0x02000000 -#define PF_HP_LAZYSWAP 0x04000000 +#define PF_HP_LAZYSWAP 0x00800000 +#define PF_HP_CODE_DEPR 0x01000000 +#define PF_HP_MODIFY_DEPR 0x02000000 +#define PF_HP_LAZYSWAP_DEPR 0x04000000 +#define PF_PARISC_SBP 0x08000000 #define PF_HP_SBP 0x08000000 @@ -517,19 +528,36 @@ typedef enum elf_hppa_reloc_type elf_hpp #define DT_HP_GST_SIZE (OLD_DT_LOOS + 0xa) #define DT_HP_GST_VERSION (OLD_DT_LOOS + 0xb) #define DT_HP_GST_HASHVAL (OLD_DT_LOOS + 0xc) +#define DT_HP_EPLTREL (OLD_DT_LOOS + 0xd) +#define DT_HP_EPLTRELSZ (OLD_DT_LOOS + 0xe) +#define DT_HP_FILTERED (OLD_DT_LOOS + 0xf) +#define DT_HP_FILTER_TLS (OLD_DT_LOOS + 0x10) +#define DT_HP_COMPAT_FILTERED (OLD_DT_LOOS + 0x11) +#define DT_HP_LAZYLOAD (OLD_DT_LOOS + 0x12) +#define DT_HP_BIND_NOW_COUNT (OLD_DT_LOOS + 0x13) +#define DT_PLT (OLD_DT_LOOS + 0x14) +#define DT_PLT_SIZE (OLD_DT_LOOS + 0x15) +#define DT_DLT (OLD_DT_LOOS + 0x16) +#define DT_DLT_SIZE (OLD_DT_LOOS + 0x17) /* Values for DT_HP_DLD_FLAGS. */ -#define DT_HP_DEBUG_PRIVATE 0x0001 /* Map text private */ -#define DT_HP_DEBUG_CALLBACK 0x0002 /* Callback */ -#define DT_HP_DEBUG_CALLBACK_BOR 0x0004 /* BOR callback */ -#define DT_HP_NO_ENVVAR 0x0008 /* No env var */ -#define DT_HP_BIND_NOW 0x0010 /* Bind now */ -#define DT_HP_BIND_NONFATAL 0x0020 /* Bind non-fatal */ -#define DT_HP_BIND_VERBOSE 0x0040 /* Bind verbose */ -#define DT_HP_BIND_RESTRICTED 0x0080 /* Bind restricted */ -#define DT_HP_BIND_SYMBOLIC 0x0100 /* Bind symbolic */ -#define DT_HP_RPATH_FIRST 0x0200 /* RPATH first */ -#define DT_HP_BIND_DEPTH_FIRST 0x0400 /* Bind depth-first */ +#define DT_HP_DEBUG_PRIVATE 0x00001 /* Map text private */ +#define DT_HP_DEBUG_CALLBACK 0x00002 /* Callback */ +#define DT_HP_DEBUG_CALLBACK_BOR 0x00004 /* BOR callback */ +#define DT_HP_NO_ENVVAR 0x00008 /* No env var */ +#define DT_HP_BIND_NOW 0x00010 /* Bind now */ +#define DT_HP_BIND_NONFATAL 0x00020 /* Bind non-fatal */ +#define DT_HP_BIND_VERBOSE 0x00040 /* Bind verbose */ +#define DT_HP_BIND_RESTRICTED 0x00080 /* Bind restricted */ +#define DT_HP_BIND_SYMBOLIC 0x00100 /* Bind symbolic */ +#define DT_HP_RPATH_FIRST 0x00200 /* RPATH first */ +#define DT_HP_BIND_DEPTH_FIRST 0x00400 /* Bind depth-first */ +#define DT_HP_GST 0x00800 /* Dld global sym table */ +#define DT_HP_SHLIB_FIXED 0x01000 /* shared vtable support */ +#define DT_HP_MERGE_SHLIB_SEG 0x02000 /* merge shlib data segs */ +#define DT_HP_NODELETE 0x04000 /* never unload */ +#define DT_HP_GROUP 0x08000 /* bind only within group */ +#define DT_HP_PROTECT_LINKAGE_TABLE 0x10000 /* protected linkage table */ /* Program header extensions. */ #define PT_HP_TLS (PT_LOOS + 0x0) @@ -544,9 +572,22 @@ typedef enum elf_hppa_reloc_type elf_hpp #define PT_HP_CORE_MMF (PT_LOOS + 0x9) #define PT_HP_PARALLEL (PT_LOOS + 0x10) #define PT_HP_FASTBIND (PT_LOOS + 0x11) +#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) +#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) +#define PT_HP_STACK (PT_LOOS + 0x14) +#define PT_HP_CORE_UTSNAME (PT_LOOS + 0x15) /* Additional symbol types. */ #define STT_HP_OPAQUE (STT_LOOS + 0x1) #define STT_HP_STUB (STT_LOOS + 0x2) +/* Note types. */ +#define NT_HP_COMPILER 1 +#define NT_HP_COPYRIGHT 2 +#define NT_HP_VERSION 3 +#define NT_HP_SRCFILE_INFO 4 +#define NT_HP_LINKER 5 +#define NT_HP_INSTRUMENTED 6 +#define NT_HP_UX_OPTIONS 7 + #endif /* _ELF_HPPA_H */ diff -uprN binutils-2.16.91.0.2/include/elf/m32c.h binutils-2.16.91.0.3/include/elf/m32c.h --- binutils-2.16.91.0.2/include/elf/m32c.h 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/include/elf/m32c.h 2005-08-22 12:27:44.000000000 -0700 @@ -30,6 +30,16 @@ along with this program; if not, write t RELOC_NUMBER (R_M32C_32, 3) RELOC_NUMBER (R_M32C_8_PCREL, 4) RELOC_NUMBER (R_M32C_16_PCREL, 5) + + /* 8 bit unsigned address, used for dsp8[a0] etc */ + RELOC_NUMBER (R_M32C_8, 6) + /* Bits 0..15 of an address, for SMOVF's A0, A1A0, etc. */ + RELOC_NUMBER (R_M32C_LO16, 7) + /* Bits 16..23 of an address, for SMOVF's R1H etc. */ + RELOC_NUMBER (R_M32C_HI8, 8) + /* Bits 16..31 of an address, for LDE's A1A0 etc. */ + RELOC_NUMBER (R_M32C_HI16, 9) + END_RELOC_NUMBERS (R_M32C_max) #define EF_M32C_CPU_M16C 0x00000075 /* default */ diff -uprN binutils-2.16.91.0.2/include/elf/x86-64.h binutils-2.16.91.0.3/include/elf/x86-64.h --- binutils-2.16.91.0.2/include/elf/x86-64.h 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/include/elf/x86-64.h 2005-08-22 12:27:44.000000000 -0700 @@ -61,4 +61,9 @@ END_RELOC_NUMBERS (R_X86_64_max) #define SHT_X86_64_UNWIND 0x70000001 /* unwind information */ +/* Like SHN_COMMON but the symbol will be allocated in the .lbss + section. */ +#define SHN_X86_64_LCOMMON 0xff02 + +#define SHF_X86_64_LARGE 0x10000000 #endif diff -uprN binutils-2.16.91.0.2/include/floatformat.h binutils-2.16.91.0.3/include/floatformat.h --- binutils-2.16.91.0.2/include/floatformat.h 2005-05-10 15:46:48.000000000 -0700 +++ binutils-2.16.91.0.3/include/floatformat.h 2005-08-22 12:27:43.000000000 -0700 @@ -1,5 +1,6 @@ /* IEEE floating point support declarations, for GDB, the GNU Debugger. - Copyright 1991, 1994, 1995, 1997, 2000, 2003 Free Software Foundation, Inc. + Copyright 1991, 1994, 1995, 1997, 2000, 2003, 2005 + Free Software Foundation, Inc. This file is part of GDB. @@ -82,7 +83,7 @@ struct floatformat const char *name; /* Validator method. */ - int (*is_valid) (const struct floatformat *fmt, const char *from); + int (*is_valid) (const struct floatformat *fmt, const void *from); }; /* floatformats for IEEE single and double, big and little endian. */ @@ -116,17 +117,17 @@ extern const struct floatformat floatfor Store the double in *TO. */ extern void -floatformat_to_double (const struct floatformat *, const char *, double *); +floatformat_to_double (const struct floatformat *, const void *, double *); /* The converse: convert the double *FROM to FMT and store where TO points. */ extern void -floatformat_from_double (const struct floatformat *, const double *, char *); +floatformat_from_double (const struct floatformat *, const double *, void *); /* Return non-zero iff the data at FROM is a valid number in format FMT. */ extern int -floatformat_is_valid (const struct floatformat *fmt, const char *from); +floatformat_is_valid (const struct floatformat *fmt, const void *from); #endif /* defined (FLOATFORMAT_H) */ diff -uprN binutils-2.16.91.0.2/include/opcode/a29k.h binutils-2.16.91.0.3/include/opcode/a29k.h --- binutils-2.16.91.0.2/include/opcode/a29k.h 2005-05-10 15:46:52.000000000 -0700 +++ binutils-2.16.91.0.3/include/opcode/a29k.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,281 +0,0 @@ -/* Table of opcodes for the AMD 29000 family. - Copyright 1990, 1991, 1993, 1994, 2002 Free Software Foundation, Inc. - -This file is part of GDB and GAS. - -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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ - -struct a29k_opcode { - /* Name of the instruction. */ - char *name; - - /* Opcode word */ - unsigned long opcode; - - /* A string of characters which describe the operands. - Valid characters are: - , Itself. The character appears in the assembly code. - a RA. The register number is in bits 8-15 of the instruction. - b RB. The register number is in bits 0-7 of the instruction. - c RC. The register number is in bits 16-23 of the instruction. - i An immediate operand is in bits 0-7 of the instruction. - x Bits 0-7 and 16-23 of the instruction are bits 0-7 and 8-15 - (respectively) of the immediate operand. - h Same as x but the instruction contains bits 16-31 of the - immediate operand. - X Same as x but bits 16-31 of the signed immediate operand - are set to 1 (thus the operand is always negative). - P,A Bits 0-7 and 16-23 of the instruction are bits 2-9 and 10-17 - (respectively) of the immediate operand. - P=PC-relative, sign-extended to 32 bits. - A=Absolute, zero-extended to 32 bits. - e CE bit (bit 23) for a load/store instruction. - n Control field (bits 16-22) for a load/store instruction. - v Immediate operand in bits 16-23 of the instruction. - (used for trap numbers). - s SA. Special-purpose register number in bits 8-15 - of the instruction. - u UI--bit 7 of the instruction. - r RND--bits 4-6 of the instruction. - d FD--bits 2-3 of the instruction. - f FS--bits 0-1 of the instruction. - I ID--bits 16-17 of the instruction. - - Extensions for 29050: - - d FMT--bits 2-3 of the instruction (not really new). - f ACN--bits 0-1 of the instruction (not really new). - F FUNC--Special function in bits 18-21 of the instruction. - C ACN--bits 16-17 specifying the accumlator register. */ - char *args; -}; - -static const struct a29k_opcode a29k_opcodes[] = -{ - -{ "add", 0x14000000, "c,a,b" }, -{ "add", 0x15000000, "c,a,i" }, -{ "addc", 0x1c000000, "c,a,b" }, -{ "addc", 0x1d000000, "c,a,i" }, -{ "addcs", 0x18000000, "c,a,b" }, -{ "addcs", 0x19000000, "c,a,i" }, -{ "addcu", 0x1a000000, "c,a,b" }, -{ "addcu", 0x1b000000, "c,a,i" }, -{ "adds", 0x10000000, "c,a,b" }, -{ "adds", 0x11000000, "c,a,i" }, -{ "addu", 0x12000000, "c,a,b" }, -{ "addu", 0x13000000, "c,a,i" }, -{ "and", 0x90000000, "c,a,b" }, -{ "and", 0x91000000, "c,a,i" }, -{ "andn", 0x9c000000, "c,a,b" }, -{ "andn", 0x9d000000, "c,a,i" }, -{ "aseq", 0x70000000, "v,a,b" }, -{ "aseq", 0x71000000, "v,a,i" }, -{ "asge", 0x5c000000, "v,a,b" }, -{ "asge", 0x5d000000, "v,a,i" }, -{ "asgeu", 0x5e000000, "v,a,b" }, -{ "asgeu", 0x5f000000, "v,a,i" }, -{ "asgt", 0x58000000, "v,a,b" }, -{ "asgt", 0x59000000, "v,a,i" }, -{ "asgtu", 0x5a000000, "v,a,b" }, -{ "asgtu", 0x5b000000, "v,a,i" }, -{ "asle", 0x54000000, "v,a,b" }, -{ "asle", 0x55000000, "v,a,i" }, -{ "asleu", 0x56000000, "v,a,b" }, -{ "asleu", 0x57000000, "v,a,i" }, -{ "aslt", 0x50000000, "v,a,b" }, -{ "aslt", 0x51000000, "v,a,i" }, -{ "asltu", 0x52000000, "v,a,b" }, -{ "asltu", 0x53000000, "v,a,i" }, -{ "asneq", 0x72000000, "v,a,b" }, -{ "asneq", 0x73000000, "v,a,i" }, -{ "call", 0xa8000000, "a,P" }, -{ "call", 0xa9000000, "a,A" }, -{ "calli", 0xc8000000, "a,b" }, -{ "class", 0xe6000000, "c,a,f" }, -{ "clz", 0x08000000, "c,b" }, -{ "clz", 0x09000000, "c,i" }, -{ "const", 0x03000000, "a,x" }, -{ "consth", 0x02000000, "a,h" }, -{ "consthz", 0x05000000, "a,h" }, -{ "constn", 0x01000000, "a,X" }, -{ "convert", 0xe4000000, "c,a,u,r,d,f" }, -{ "cpbyte", 0x2e000000, "c,a,b" }, -{ "cpbyte", 0x2f000000, "c,a,i" }, -{ "cpeq", 0x60000000, "c,a,b" }, -{ "cpeq", 0x61000000, "c,a,i" }, -{ "cpge", 0x4c000000, "c,a,b" }, -{ "cpge", 0x4d000000, "c,a,i" }, -{ "cpgeu", 0x4e000000, "c,a,b" }, -{ "cpgeu", 0x4f000000, "c,a,i" }, -{ "cpgt", 0x48000000, "c,a,b" }, -{ "cpgt", 0x49000000, "c,a,i" }, -{ "cpgtu", 0x4a000000, "c,a,b" }, -{ "cpgtu", 0x4b000000, "c,a,i" }, -{ "cple", 0x44000000, "c,a,b" }, -{ "cple", 0x45000000, "c,a,i" }, -{ "cpleu", 0x46000000, "c,a,b" }, -{ "cpleu", 0x47000000, "c,a,i" }, -{ "cplt", 0x40000000, "c,a,b" }, -{ "cplt", 0x41000000, "c,a,i" }, -{ "cpltu", 0x42000000, "c,a,b" }, -{ "cpltu", 0x43000000, "c,a,i" }, -{ "cpneq", 0x62000000, "c,a,b" }, -{ "cpneq", 0x63000000, "c,a,i" }, -{ "dadd", 0xf1000000, "c,a,b" }, -{ "ddiv", 0xf7000000, "c,a,b" }, -{ "deq", 0xeb000000, "c,a,b" }, -{ "dge", 0xef000000, "c,a,b" }, -{ "dgt", 0xed000000, "c,a,b" }, -{ "div", 0x6a000000, "c,a,b" }, -{ "div", 0x6b000000, "c,a,i" }, -{ "div0", 0x68000000, "c,b" }, -{ "div0", 0x69000000, "c,i" }, -{ "divide", 0xe1000000, "c,a,b" }, -{ "dividu", 0xe3000000, "c,a,b" }, -{ "divl", 0x6c000000, "c,a,b" }, -{ "divl", 0x6d000000, "c,a,i" }, -{ "divrem", 0x6e000000, "c,a,b" }, -{ "divrem", 0x6f000000, "c,a,i" }, -{ "dmac", 0xd9000000, "F,C,a,b" }, -{ "dmsm", 0xdb000000, "c,a,b" }, -{ "dmul", 0xf5000000, "c,a,b" }, -{ "dsub", 0xf3000000, "c,a,b" }, -{ "emulate", 0xd7000000, "v,a,b" }, -{ "exbyte", 0x0a000000, "c,a,b" }, -{ "exbyte", 0x0b000000, "c,a,i" }, -{ "exhw", 0x7c000000, "c,a,b" }, -{ "exhw", 0x7d000000, "c,a,i" }, -{ "exhws", 0x7e000000, "c,a" }, -{ "extract", 0x7a000000, "c,a,b" }, -{ "extract", 0x7b000000, "c,a,i" }, -{ "fadd", 0xf0000000, "c,a,b" }, -{ "fdiv", 0xf6000000, "c,a,b" }, -{ "fdmul", 0xf9000000, "c,a,b" }, -{ "feq", 0xea000000, "c,a,b" }, -{ "fge", 0xee000000, "c,a,b" }, -{ "fgt", 0xec000000, "c,a,b" }, -{ "fmac", 0xd8000000, "F,C,a,b" }, -{ "fmsm", 0xda000000, "c,a,b" }, -{ "fmul", 0xf4000000, "c,a,b" }, -{ "fsub", 0xf2000000, "c,a,b" }, -{ "halt", 0x89000000, "" }, -{ "inbyte", 0x0c000000, "c,a,b" }, -{ "inbyte", 0x0d000000, "c,a,i" }, -{ "inhw", 0x78000000, "c,a,b" }, -{ "inhw", 0x79000000, "c,a,i" }, -{ "inv", 0x9f000000, "I" }, -{ "iret", 0x88000000, "" }, -{ "iretinv", 0x8c000000, "I" }, -{ "jmp", 0xa0000000, "P" }, -{ "jmp", 0xa1000000, "A" }, -{ "jmpf", 0xa4000000, "a,P" }, -{ "jmpf", 0xa5000000, "a,A" }, -{ "jmpfdec", 0xb4000000, "a,P" }, -{ "jmpfdec", 0xb5000000, "a,A" }, -{ "jmpfi", 0xc4000000, "a,b" }, -{ "jmpi", 0xc0000000, "b" }, -{ "jmpt", 0xac000000, "a,P" }, -{ "jmpt", 0xad000000, "a,A" }, -{ "jmpti", 0xcc000000, "a,b" }, -{ "load", 0x16000000, "e,n,a,b" }, -{ "load", 0x17000000, "e,n,a,i" }, -{ "loadl", 0x06000000, "e,n,a,b" }, -{ "loadl", 0x07000000, "e,n,a,i" }, -{ "loadm", 0x36000000, "e,n,a,b" }, -{ "loadm", 0x37000000, "e,n,a,i" }, -{ "loadset", 0x26000000, "e,n,a,b" }, -{ "loadset", 0x27000000, "e,n,a,i" }, -{ "mfacc", 0xe9000100, "c,d,f" }, -{ "mfsr", 0xc6000000, "c,s" }, -{ "mftlb", 0xb6000000, "c,a" }, -{ "mtacc", 0xe8010000, "a,d,f" }, -{ "mtsr", 0xce000000, "s,b" }, -{ "mtsrim", 0x04000000, "s,x" }, -{ "mttlb", 0xbe000000, "a,b" }, -{ "mul", 0x64000000, "c,a,b" }, -{ "mul", 0x65000000, "c,a,i" }, -{ "mull", 0x66000000, "c,a,b" }, -{ "mull", 0x67000000, "c,a,i" }, -{ "multiplu", 0xe2000000, "c,a,b" }, -{ "multiply", 0xe0000000, "c,a,b" }, -{ "multm", 0xde000000, "c,a,b" }, -{ "multmu", 0xdf000000, "c,a,b" }, -{ "mulu", 0x74000000, "c,a,b" }, -{ "mulu", 0x75000000, "c,a,i" }, -{ "nand", 0x9a000000, "c,a,b" }, -{ "nand", 0x9b000000, "c,a,i" }, -{ "nop", 0x70400101, "" }, -{ "nor", 0x98000000, "c,a,b" }, -{ "nor", 0x99000000, "c,a,i" }, -{ "or", 0x92000000, "c,a,b" }, -{ "or", 0x93000000, "c,a,i" }, -{ "orn", 0xaa000000, "c,a,b" }, -{ "orn", 0xab000000, "c,a,i" }, - -/* The description of "setip" in Chapter 8 ("instruction set") of the user's - manual claims that these are absolute register numbers. But section - 7.2.1 explains that they are not. The latter is correct, so print - these normally ("lr0", "lr5", etc.). */ -{ "setip", 0x9e000000, "c,a,b" }, - -{ "sll", 0x80000000, "c,a,b" }, -{ "sll", 0x81000000, "c,a,i" }, -{ "sqrt", 0xe5000000, "c,a,f" }, -{ "sra", 0x86000000, "c,a,b" }, -{ "sra", 0x87000000, "c,a,i" }, -{ "srl", 0x82000000, "c,a,b" }, -{ "srl", 0x83000000, "c,a,i" }, -{ "store", 0x1e000000, "e,n,a,b" }, -{ "store", 0x1f000000, "e,n,a,i" }, -{ "storel", 0x0e000000, "e,n,a,b" }, -{ "storel", 0x0f000000, "e,n,a,i" }, -{ "storem", 0x3e000000, "e,n,a,b" }, -{ "storem", 0x3f000000, "e,n,a,i" }, -{ "sub", 0x24000000, "c,a,b" }, -{ "sub", 0x25000000, "c,a,i" }, -{ "subc", 0x2c000000, "c,a,b" }, -{ "subc", 0x2d000000, "c,a,i" }, -{ "subcs", 0x28000000, "c,a,b" }, -{ "subcs", 0x29000000, "c,a,i" }, -{ "subcu", 0x2a000000, "c,a,b" }, -{ "subcu", 0x2b000000, "c,a,i" }, -{ "subr", 0x34000000, "c,a,b" }, -{ "subr", 0x35000000, "c,a,i" }, -{ "subrc", 0x3c000000, "c,a,b" }, -{ "subrc", 0x3d000000, "c,a,i" }, -{ "subrcs", 0x38000000, "c,a,b" }, -{ "subrcs", 0x39000000, "c,a,i" }, -{ "subrcu", 0x3a000000, "c,a,b" }, -{ "subrcu", 0x3b000000, "c,a,i" }, -{ "subrs", 0x30000000, "c,a,b" }, -{ "subrs", 0x31000000, "c,a,i" }, -{ "subru", 0x32000000, "c,a,b" }, -{ "subru", 0x33000000, "c,a,i" }, -{ "subs", 0x20000000, "c,a,b" }, -{ "subs", 0x21000000, "c,a,i" }, -{ "subu", 0x22000000, "c,a,b" }, -{ "subu", 0x23000000, "c,a,i" }, -{ "xnor", 0x96000000, "c,a,b" }, -{ "xnor", 0x97000000, "c,a,i" }, -{ "xor", 0x94000000, "c,a,b" }, -{ "xor", 0x95000000, "c,a,i" }, - -{ "", 0x0, "" } /* Dummy entry, not included in NUM_OPCODES. This - lets code examine entry i+1 without checking - if we've run off the end of the table. */ -}; - -const unsigned int num_opcodes = (((sizeof a29k_opcodes) / (sizeof a29k_opcodes[0])) - 1); diff -uprN binutils-2.16.91.0.2/include/opcode/ChangeLog binutils-2.16.91.0.3/include/opcode/ChangeLog --- binutils-2.16.91.0.2/include/opcode/ChangeLog 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/include/opcode/ChangeLog 2005-08-22 12:27:44.000000000 -0700 @@ -1,3 +1,27 @@ +2005-08-18 Alan Modra + + * a29k.h: Delete. + +2005-08-15 Daniel Jacobowitz + + * ppc.h (PPC_OPCODE_E300): Define. + +2005-08-12 Martin Schwidefsky + + * s390.h (s390_opcode_cpu_val): Add enum for cpu type z9-109. + +2005-07-28 John David Anglin + + PR gas/336 + * hppa.h (pa_opcodes): Allow 0 immediates in PA 2.0 variants of pdtlb + and pitlb. + +2005-07-27 Jan Beulich + + * i386.h (i386_optab): Add comment to movd. Use LongMem for all + movd-s. Add NoRex64 to movq-s dealing only with mmx or xmm registers. + Add movq-s as 64-bit variants of movd-s. + 2005-07-18 John David Anglin * hppa.h: Fix punctuation in comment. diff -uprN binutils-2.16.91.0.2/include/opcode/hppa.h binutils-2.16.91.0.3/include/opcode/hppa.h --- binutils-2.16.91.0.2/include/opcode/hppa.h 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/include/opcode/hppa.h 2005-08-22 12:27:45.000000000 -0700 @@ -1,6 +1,6 @@ /* Table of opcodes for the PA-RISC. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, - 2001, 2002, 2003 + 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by the Center for Software Science at the @@ -735,9 +735,12 @@ static const struct pa_opcode pa_opcodes { "lci", 0x04001300, 0xfc003fe0, "x(s,b),t", pa10, 0}, { "pdtlb", 0x04001600, 0xfc00ffdf, "cLcZx(b)", pa20, FLAG_STRICT}, { "pdtlb", 0x04001600, 0xfc003fdf, "cLcZx(s,b)", pa20, FLAG_STRICT}, +{ "pdtlb", 0x04001600, 0xfc1fffdf, "cLcZ@(b)", pa20, FLAG_STRICT}, +{ "pdtlb", 0x04001600, 0xfc1f3fdf, "cLcZ@(s,b)", pa20, FLAG_STRICT}, { "pdtlb", 0x04001200, 0xfc00ffdf, "cZx(b)", pa10, 0}, { "pdtlb", 0x04001200, 0xfc003fdf, "cZx(s,b)", pa10, 0}, { "pitlb", 0x04000600, 0xfc001fdf, "cLcZx(S,b)", pa20, FLAG_STRICT}, +{ "pitlb", 0x04000600, 0xfc1f1fdf, "cLcZ@(S,b)", pa20, FLAG_STRICT}, { "pitlb", 0x04000200, 0xfc001fdf, "cZx(S,b)", pa10, 0}, { "pdtlbe", 0x04001240, 0xfc00ffdf, "cZx(b)", pa10, 0}, { "pdtlbe", 0x04001240, 0xfc003fdf, "cZx(s,b)", pa10, 0}, diff -uprN binutils-2.16.91.0.2/include/opcode/i386.h binutils-2.16.91.0.3/include/opcode/i386.h --- binutils-2.16.91.0.2/include/opcode/i386.h 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/include/opcode/i386.h 2005-08-22 12:27:45.000000000 -0700 @@ -995,16 +995,24 @@ static const template i386_optab[] = /* MMX/SSE2 instructions. */ {"emms", 0, 0x0f77, X, CpuMMX, NoSuf, { 0, 0, 0 } }, +/* These really shouldn't allow for Reg64 (movq is the right mnemonic for + copying between Reg64/Mem64 and RegXMM/RegMMX, as is mandated by Intel's + spec). AMD's spec, having been in existence for much longer, failed to + recognize that and specified movd for 32- and 64-bit operations. */ {"movd", 2, 0x0f6e, X, CpuMMX, NoSuf|IgnoreSize|Modrm, { Reg32|Reg64|LongMem, RegMMX, 0 } }, {"movd", 2, 0x0f7e, X, CpuMMX, NoSuf|IgnoreSize|Modrm, { RegMMX, Reg32|Reg64|LongMem, 0 } }, -{"movd", 2, 0x660f6e,X,CpuSSE2,NoSuf|IgnoreSize|Modrm, { Reg32|Reg64|LLongMem, RegXMM, 0 } }, -{"movd", 2, 0x660f7e,X,CpuSSE2,NoSuf|IgnoreSize|Modrm, { RegXMM, Reg32|Reg64|LLongMem, 0 } }, +{"movd", 2, 0x660f6e,X,CpuSSE2,NoSuf|IgnoreSize|Modrm, { Reg32|Reg64|LongMem, RegXMM, 0 } }, +{"movd", 2, 0x660f7e,X,CpuSSE2,NoSuf|IgnoreSize|Modrm, { RegXMM, Reg32|Reg64|LongMem, 0 } }, /* In the 64bit mode the short form mov immediate is redefined to have 64bit displacement value. */ -{"movq", 2, 0x0f6f, X, CpuMMX, NoSuf|IgnoreSize|Modrm, { RegMMX|LongMem, RegMMX, 0 } }, -{"movq", 2, 0x0f7f, X, CpuMMX, NoSuf|IgnoreSize|Modrm, { RegMMX, RegMMX|LongMem, 0 } }, -{"movq", 2, 0xf30f7e,X,CpuSSE2,NoSuf|IgnoreSize|Modrm, { RegXMM|LLongMem, RegXMM, 0 } }, -{"movq", 2, 0x660fd6,X,CpuSSE2,NoSuf|IgnoreSize|Modrm, { RegXMM, RegXMM|LLongMem, 0 } }, +{"movq", 2, 0x0f6f, X, CpuMMX, NoSuf|IgnoreSize|Modrm|NoRex64, { RegMMX|LLongMem, RegMMX, 0 } }, +{"movq", 2, 0x0f7f, X, CpuMMX, NoSuf|IgnoreSize|Modrm|NoRex64, { RegMMX, RegMMX|LLongMem, 0 } }, +{"movq", 2, 0xf30f7e,X,CpuSSE2,NoSuf|IgnoreSize|Modrm|NoRex64, { RegXMM|LLongMem, RegXMM, 0 } }, +{"movq", 2, 0x660fd6,X,CpuSSE2,NoSuf|IgnoreSize|Modrm|NoRex64, { RegXMM, RegXMM|LLongMem, 0 } }, +{"movq", 2, 0x0f6e, X, Cpu64, NoSuf|IgnoreSize|Modrm, { Reg64|LLongMem, RegMMX, 0 } }, +{"movq", 2, 0x0f7e, X, Cpu64, NoSuf|IgnoreSize|Modrm, { RegMMX, Reg64|LLongMem, 0 } }, +{"movq", 2, 0x660f6e,X,Cpu64, NoSuf|IgnoreSize|Modrm, { Reg64|LLongMem, RegXMM, 0 } }, +{"movq", 2, 0x660f7e,X,Cpu64, NoSuf|IgnoreSize|Modrm, { RegXMM, Reg64|LLongMem, 0 } }, /* We put the 64bit displacement first and we only mark constants larger than 32bit as Disp64. */ {"movq", 2, 0xa0, X, Cpu64, NoSuf|D|W|Size64, { Disp64, Acc, 0 } }, diff -uprN binutils-2.16.91.0.2/include/opcode/ppc.h binutils-2.16.91.0.3/include/opcode/ppc.h --- binutils-2.16.91.0.2/include/opcode/ppc.h 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/include/opcode/ppc.h 2005-08-22 12:27:45.000000000 -0700 @@ -1,5 +1,5 @@ /* ppc.h -- Header file for PowerPC opcode table - Copyright 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004 + Copyright 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support @@ -137,6 +137,9 @@ extern const int powerpc_num_opcodes; /* Opcode is only supported by Power5 architecture. */ #define PPC_OPCODE_POWER5 0x1000000 +/* Opcode is supported by PowerPC e300 family. */ +#define PPC_OPCODE_E300 0x2000000 + /* A macro to extract the major opcode from an instruction. */ #define PPC_OP(i) (((i) >> 26) & 0x3f) diff -uprN binutils-2.16.91.0.2/include/opcode/s390.h binutils-2.16.91.0.3/include/opcode/s390.h --- binutils-2.16.91.0.2/include/opcode/s390.h 2005-05-10 15:46:53.000000000 -0700 +++ binutils-2.16.91.0.3/include/opcode/s390.h 2005-08-22 12:27:45.000000000 -0700 @@ -35,7 +35,8 @@ enum s390_opcode_cpu_val S390_OPCODE_G5 = 0, S390_OPCODE_G6, S390_OPCODE_Z900, - S390_OPCODE_Z990 + S390_OPCODE_Z990, + S390_OPCODE_Z9_109 }; /* The opcode table is an array of struct s390_opcode. */ @@ -138,4 +139,8 @@ extern const struct s390_operand s390_op /* This operand is a length. */ #define S390_OPERAND_LENGTH 0x200 -#endif /* S390_H */ +/* This operand is optional. Only a single operand at the end of + the instruction may be optional. */ +#define S390_OPERAND_OPTIONAL 0x400 + + #endif /* S390_H */ diff -uprN binutils-2.16.91.0.2/ld/ChangeLog binutils-2.16.91.0.3/ld/ChangeLog --- binutils-2.16.91.0.2/ld/ChangeLog 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ChangeLog 2005-08-22 12:27:45.000000000 -0700 @@ -1,3 +1,218 @@ +2005-08-18 Alan Modra + + * scripttempl/elf.sc: Remove commented out defines. + +2005-08-18 Alan Modra + + * emulparams/a29k.sh: Delete. + * emulparams/ebmon29k.sh: Delete. + * emulparams/sa29200.sh: Delete. + * Makefile.am: Remove a29k support. + * configure.tgt: Likewise. + * ld.texinfo: Likewise. + * Makefile.in: Regenerate. + +2005-08-17 Jakub Jelinek + + * ldgram.y (vers_defns): Don't lose pattern list before + extern NAME {}. Handle global, local and extern symbol names. + +2005-08-17 Kaz Kojima + + * emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_after_allocation): + Don't increment rel_count of .cranges here. Set rawsize of .cranges. + +2005-08-10 Nick Clifton + + * pe-dll.c (pe_exe_fill_sections): Call lang_reset_memory_regions + before lang_size_sections. + +2005-08-09 Alan Modra + + * emulparams/hppa64linux.sh (LARGE_SECTIONS): Remove .tbss. + +2005-08-08 Eric Doenges + + * Makefile.am (ALL_EMULATIONS): Add msp430x21xx variants. + Add rules to build these emulations. + * Makefile.in: Regenerate. + * configure.tgt (msp430): Add the new variants to the + targ_extra_emuls list. + * emulparams/msp430all.sh: Add entries for the msp430x21xx + variants. + +2005-08-05 H.J. Lu + + * ld.texinfo: Document PROVIDE_HIDDEN. + + * ldexp.c (exp_fold_tree_1): Hide a provided symbol if asked. + (exp_provide): Add and set hidden. + + * ldexp.h (etree_type): Add hidden to assign. + + * ldgram.y (PROVIDE_HIDDEN): New. + * ldlex.l (PROVIDE_HIDDEN): Likewise. + + * scripttempl/elf.sc: Use PROVIDE_HIDDEN on array bound + symbols. + +2005-08-05 Alan Modra + + * emulparams/elf_x86_64.sh: Revert last change. + * scripttempl/elf.sc (REL_LARGE, LARGE_SECTIONS): Define here. + +2005-08-05 Alan Modra + + * emulparams/armelf.sh (OTHER_BSS_END_SYMBOLS): Split out from + OTHER_END_SYMBOLS. + * emulparams/armelf_linux.sh: Likewise. + * emulparams/armnto.sh: Likewise. + * emulparams/criself.sh: Likewise. + * emulparams/elf32mcore.sh: Likewise. + * emulparams/criself.sh (OTHER_SYMBOLS): Define. + * emulparams/crislinux.sh (OTHER_SYMBOLS): Define. + (OTHER_END_SYMBOLS): Don't define. + * emulparams/elf32fr30.sh: Likewise. + * emulparams/elf64mmix.sh: Likewise. + * emulparams/hppa64linux.sh: Likewise. + * emulparams/m32relf.sh: Likewise. + * emulparams/vxworks.sh: Likewise. + * scripttempl/armbpabi.sc (OTHER_BSS_SECTIONS): Delete. + (OTHER_BSS_END_SYMBOLS): Add. + (OTHER_END_SYMBOLS): Move before current end sym definitions. + (OTHER_SYMBOLS): Replace OTHER_END_SYMBOLS near end of script. + * scripttempl/elf.sc: Likewise. + * scripttempl/elf32sh-symbian.sc: Likewise. + * scripttempl/elf_chaos.sc: Likewise. + * scripttempl/elfxtensa.sc: Likewise. + * scripttempl/iq2000.sc: Likewise. + * scripttempl/xstormy16.sc: Likewise. + + * scripttempl/elf.sc (LBSS, LARGE_SECTIONS): Delete. + (REL_LDATA, REL_LBSS, REL_LRODATA): Delete. + (REL_LARGE, LARGE_SECTIONS): Add. + * emulparams/elf_x86_64.sh (LARGE_SECTIONS): Define as script text. + (REL_LARGE): Define. + * emulparams/hppa64linux.sh (OTHER_BSS_SECTIONS): Don't define. + (LARGE_SECTIONS): Define. + * emulparams/hppa64linux.sh (OTHER_BSS_SECTIONS): Don't define. + (LARGE_SECTIONS): Define. + +2005-08-04 Alan Modra + + * ldemul.c (ldemul_do_assignments, do_assignments_default): Delete. + * ldemul.h (ldemul_do_assignments, do_assignments_default): Delete. + (struct ld_emulation_xfer_struct): Remove do_assignments field. + * ldlang.c (lang_do_assignments): Don't call ldemul_do_assignments. + * emulparams/elf32ppc.sh (SDATA_START_SYMBOLS): New. + (SDATA2_START_SYMBOLS, SBSS_START_SYMBOLS, SBSS_END_SYMBOLS): New. + * emultempl/aix.em (ld_*_emulation): Delete do_assignments init. + * emultempl/armcoff.em: Likewise. + * emultempl/beos.em: Likewise. + * emultempl/generic.em: Likewise. + * emultempl/gld960.em: Likewise. + * emultempl/gld960c.em: Likewise. + * emultempl/linux.em: Likewise. + * emultempl/lnk960.em: Likewise. + * emultempl/m68kcoff.em: Likewise. + * emultempl/pe.em: Likewise. + * emultempl/sunos.em: Likewise. + * emultempl/ticoff.em: Likewise. + * emultempl/vanilla.em: Likewise. + * emultempl/elf32.em: Likewise. + (gld*_provide_bound_symbols): Delete. + (gld*_provide_init_fini_syms): Delete. + (gld*_before_allocation): Don't call ldemul_do_assignments. + * emultempl/ppc32elf.em (ppc_do_assignments): Delete. + (LDEMUL_DO_ASSIGNMENTS): Delete. + * scripttempl/elf.sc: Provide init/fini syms. Add SBSS_START_SYMBOLS, + SBSS_END_SYMBOLS, SDATA2_START_SYMBOLS. + +2005-08-04 Alan Modra + + * Makefile.am (eelf32m32c.c): Fix dependencies. + * Makefile.in: Regenerate. + +2005-08-04 Alan Modra + + * ldemul.c (ldemul_finish): Call ld_emulation->finish unconditionally. + (finish_default): New function. + * ldemul.h (finish_default): Declare. + * emultempl/aix.em (gld*_before_allocation): Call + before_allocation_default rather than strip_excluded_output_sections. + (ld_*_emulation): Init finish field to finish_default. + * emultempl/armcoff.em: Likewise. + * emultempl/beos.em: Likewise. + * emultempl/elf32.em: Likewise. + * emultempl/generic.em: Likewise. + * emultempl/gld960.em: Likewise. + * emultempl/gld960c.em: Likewise. + * emultempl/hppaelf.em: Likewise. + * emultempl/linux.em: Likewise. + * emultempl/lnk960.em: Likewise. + * emultempl/m68kcoff.em: Likewise. + * emultempl/mmo.em: Likewise. + * emultempl/pe.em: Likewise. + * emultempl/ppc64elf.em: Likewise. + * emultempl/sunos.em: Likewise. + * emultempl/ticoff.em: Likewise. + * emultempl/vanilla.em: Likewise. + +2005-08-03 Alan Modra + + * ldlang.c (exp_init_os): Handle etree_provide. + * emulparams/armelf.sh (OTHER_END_SYMBOLS): Rename from.. + (OTHER_BSS_END_SYMBOLS): ..this. + * emulparams/armelf_linux.sh: Likewise. + * emulparams/armnto.sh: Likewise. + * emulparams/criself.sh: Likewise. + * emulparams/crislinux.sh: Likewise. + * emulparams/elf32frv.sh: Likewise. + * emulparams/elf32mcore.sh: Likewise. + * emulparams/elf32ppc.sh: Likewise. + * emulparams/elf32ppclinux.sh: Likewise. + * emulparams/hppa64linux.sh: Likewise. + * scripttempl/armbpabi.sc: Substitute $OTHER_END_SYMBOLS, not + $OTHER_BSS_END_SYMBOLS. + * scripttempl/elf32sh-symbian.sc: Likewise. + * scripttempl/elf_chaos.sc: Likewise. + * scripttempl/iq2000.sc: Likewise. + * scripttempl/xstormy16.sc: Likewise. + * scripttempl/elf.sc: Likewise. Delete __bss_start comment. + * scripttempl/elfxtensa.sc: Likewise. + +2005-07-29 Nick Clifton + + * ldmain.c (main): Allow -shared and -static to be used together. + * ld.texinfo (-static): Mention that it is allowed with -shared. + +2005-07-28 DJ Delorie + + * ldlang.c (lang_output_section_statement_lookup_1): Don't cast a + unary & address operator, as that breaks GCC's strict aliasing + rules. + +2005-07-25 Jan Hubicka + H.J. Lu + + * emulparams/elf_x86_64.sh (LARGE_SECTIONS): New. + + * scripttempl/elf.sc: Updated for large section support. + +2005-07-21 Ralf Corsepius + + * configure.tgt: Remove i[3-7]86-*-rtemself*. + Remove sparc-*-rtemself*. + +2005-07-21 Ben Elliston + + * ldgram.y (ldgram_want_filename): Remove unused static. + +2005-07-20 DJ Delorie + + * emulparams/elf32m32c.sh (TEMPLATE_NAME): New. + (EXTRA_EM_FILE): New. + 2005-07-19 H.J. Lu * ldmain.c (main): Reindent. diff -uprN binutils-2.16.91.0.2/ld/configure.tgt binutils-2.16.91.0.3/ld/configure.tgt --- binutils-2.16.91.0.2/ld/configure.tgt 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/configure.tgt 2005-08-22 12:27:45.000000000 -0700 @@ -20,10 +20,6 @@ targ_extra_ofiles= # architecture variants should be kept together even if their names # break the alpha sorting. case "${targ}" in -a29k-*-udi) targ_emul=sa29200 ;; -a29k-*-ebmon) targ_emul=ebmon29k ;; -a29k-*-*) targ_emul=a29k - ;; alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) targ_emul=elf64alpha_fbsd targ_extra_emuls="elf64alpha alpha" @@ -140,7 +136,6 @@ i[3-7]86-*-sco*) targ_emul=i386coff ;; i[3-7]86-*-isc*) targ_emul=i386coff ;; i[3-7]86-*-lynxos*) targ_emul=i386lynx ;; i[3-7]86-*-coff) targ_emul=i386coff ;; -i[3-7]86-*-rtemself*) targ_emul=elf_i386 ;; i[3-7]86-*-rtems*) targ_emul=elf_i386 ;; i[3-7]86-*-aros*) targ_emul=elf_i386 ;; i[3-7]86-*-bsd) targ_emul=i386bsd ;; @@ -351,7 +346,7 @@ mn10300-*-*) targ_emul=mn10300 ms1-*elf) targ_emul=elf32ms1 ;; msp430-*-*) targ_emul=msp430x110 - targ_extra_emuls="msp430x112 msp430x1101 msp430x1111 msp430x1121 msp430x1122 msp430x1132 msp430x122 msp430x123 msp430x1222 msp430x1232 msp430x133 msp430x135 msp430x1331 msp430x1351 msp430x147 msp430x148 msp430x149 msp430x155 msp430x156 msp430x157 msp430x167 msp430x168 msp430x169 msp430x1610 msp430x1611 msp430x1612 msp430x311 msp430x312 msp430x313 msp430x314 msp430x315 msp430x323 msp430x325 msp430x336 msp430x337 msp430x412 msp430x413 msp430x415 msp430x417 msp430xE423 msp430xE425 msp430xE427 msp430xW423 msp430xW425 msp430xW427 msp430xG437 msp430xG438 msp430xG439 msp430x435 msp430x436 msp430x437 msp430x447 msp430x448 msp430x449" + targ_extra_emuls="msp430x112 msp430x1101 msp430x1111 msp430x1121 msp430x1122 msp430x1132 msp430x122 msp430x123 msp430x1222 msp430x1232 msp430x133 msp430x135 msp430x1331 msp430x1351 msp430x147 msp430x148 msp430x149 msp430x155 msp430x156 msp430x157 msp430x167 msp430x168 msp430x169 msp430x1610 msp430x1611 msp430x1612 msp430x2101 msp430x2111 msp430x2121 msp430x2131 msp430x311 msp430x312 msp430x313 msp430x314 msp430x315 msp430x323 msp430x325 msp430x336 msp430x337 msp430x412 msp430x413 msp430x415 msp430x417 msp430xE423 msp430xE425 msp430xE427 msp430xW423 msp430xW425 msp430xW427 msp430xG437 msp430xG438 msp430xG439 msp430x435 msp430x436 msp430x437 msp430x447 msp430x448 msp430x449" ;; ns32k-pc532-mach* | ns32k-pc532-ux*) targ_emul=pc532macha ;; ns32k-*-netbsd* | ns32k-pc532-lites*) targ_emul=ns32knbsd @@ -532,7 +527,6 @@ sparcv9-*-solaris2* | sparc64-*-solaris2 tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'` ;; sparc*-*-solaris2*) targ_emul=elf32_sparc ;; sparc*-wrs-vxworks*) targ_emul=sparcaout ;; -sparc*-*-rtemself*) targ_emul=elf32_sparc ;; sparc*-*-rtems*) targ_emul=elf32_sparc ;; tic30-*-*aout*) targ_emul=tic30aout ;; diff -uprN binutils-2.16.91.0.2/ld/emulparams/a29k.sh binutils-2.16.91.0.3/ld/emulparams/a29k.sh --- binutils-2.16.91.0.2/ld/emulparams/a29k.sh 1999-06-03 11:02:10.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/a29k.sh 1969-12-31 16:00:00.000000000 -0800 @@ -1,5 +0,0 @@ -SCRIPT_NAME=a29k -OUTPUT_FORMAT="coff-a29k-big" -TEXT_START_ADDR=0x1000000 -TARGET_PAGE_SIZE=0x1000000 -ARCH=a29k diff -uprN binutils-2.16.91.0.2/ld/emulparams/armelf_linux.sh binutils-2.16.91.0.3/ld/emulparams/armelf_linux.sh --- binutils-2.16.91.0.2/ld/emulparams/armelf_linux.sh 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/armelf_linux.sh 2005-08-22 12:27:45.000000000 -0700 @@ -13,7 +13,8 @@ GENERATE_PIE_SCRIPT=yes DATA_START_SYMBOLS='__data_start = . ;'; OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)' OTHER_BSS_SYMBOLS='__bss_start__ = .;' -OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;' +OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;' +OTHER_END_SYMBOLS='__end__ = . ;' OTHER_SECTIONS='.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }' TEXT_START_ADDR=0x00008000 diff -uprN binutils-2.16.91.0.2/ld/emulparams/armelf.sh binutils-2.16.91.0.3/ld/emulparams/armelf.sh --- binutils-2.16.91.0.2/ld/emulparams/armelf.sh 2004-11-22 12:33:33.000000000 -0800 +++ binutils-2.16.91.0.3/ld/emulparams/armelf.sh 2005-08-22 12:27:45.000000000 -0700 @@ -8,7 +8,8 @@ TEMPLATE_NAME=elf32 EXTRA_EM_FILE=armelf OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)' OTHER_BSS_SYMBOLS='__bss_start__ = .;' -OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;' +OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;' +OTHER_END_SYMBOLS='__end__ = . ;' OTHER_SECTIONS='.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }' OTHER_READONLY_SECTIONS=" .ARM.extab ${RELOCATING-0} : { *(.ARM.extab${RELOCATING+* .gnu.linkonce.armextab.*}) } diff -uprN binutils-2.16.91.0.2/ld/emulparams/armnto.sh binutils-2.16.91.0.3/ld/emulparams/armnto.sh --- binutils-2.16.91.0.2/ld/emulparams/armnto.sh 2004-01-14 13:07:52.000000000 -0800 +++ binutils-2.16.91.0.3/ld/emulparams/armnto.sh 2005-08-22 12:27:45.000000000 -0700 @@ -8,7 +8,8 @@ TEMPLATE_NAME=elf32 EXTRA_EM_FILE=armelf OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)' OTHER_BSS_SYMBOLS='__bss_start__ = .;' -OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;' +OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;' +OTHER_END_SYMBOLS='__end__ = . ;' DATA_START_SYMBOLS='__data_start = . ;'; diff -uprN binutils-2.16.91.0.2/ld/emulparams/criself.sh binutils-2.16.91.0.3/ld/emulparams/criself.sh --- binutils-2.16.91.0.2/ld/emulparams/criself.sh 2004-11-22 12:33:33.000000000 -0800 +++ binutils-2.16.91.0.3/ld/emulparams/criself.sh 2005-08-22 12:27:45.000000000 -0700 @@ -44,10 +44,10 @@ OTHER_SDATA_SECTIONS="${RELOCATING+PROVI # end symbol. OTHER_BSS_END_SYMBOLS=' PROVIDE (__Ebss = .); - PROVIDE (__end = .); __Sbss = ADDR (.bss); PROVIDE (_bss_start = __Sbss); ' +OTHER_END_SYMBOLS='PROVIDE (__end = .);' INIT_START=' . = ALIGN(2); @@ -90,7 +90,7 @@ CTOR_END=' ' # Also add the other symbols provided for rsim/xsim and elinux. -OTHER_END_SYMBOLS=' +OTHER_SYMBOLS=' PROVIDE (__Eall = .); PROVIDE (__Endmem = 0x10000000); PROVIDE (__Stacksize = 0); diff -uprN binutils-2.16.91.0.2/ld/emulparams/crislinux.sh binutils-2.16.91.0.3/ld/emulparams/crislinux.sh --- binutils-2.16.91.0.2/ld/emulparams/crislinux.sh 2002-02-03 11:22:32.000000000 -0800 +++ binutils-2.16.91.0.3/ld/emulparams/crislinux.sh 2005-08-22 12:27:45.000000000 -0700 @@ -31,7 +31,7 @@ OTHER_BSS_SYMBOLS='PROVIDE (__Sbss = .); OTHER_BSS_END_SYMBOLS='PROVIDE (__Ebss = .);' # Also add the other symbols provided for rsim/xsim and elinux. -OTHER_END_SYMBOLS=' +OTHER_SYMBOLS=' PROVIDE (__Eall = .); PROVIDE (__Endmem = 0x10000000); PROVIDE (__Stacksize = 0); diff -uprN binutils-2.16.91.0.2/ld/emulparams/ebmon29k.sh binutils-2.16.91.0.3/ld/emulparams/ebmon29k.sh --- binutils-2.16.91.0.2/ld/emulparams/ebmon29k.sh 1999-06-03 11:02:10.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/ebmon29k.sh 1969-12-31 16:00:00.000000000 -0800 @@ -1,5 +0,0 @@ -SCRIPT_NAME=ebmon29k -OUTPUT_FORMAT="coff-a29k-big" -TEXT_START_ADDR=0x8000 -TARGET_PAGE_SIZE=0x1000 -ARCH=a29k diff -uprN binutils-2.16.91.0.2/ld/emulparams/elf32fr30.sh binutils-2.16.91.0.3/ld/emulparams/elf32fr30.sh --- binutils-2.16.91.0.2/ld/emulparams/elf32fr30.sh 2002-02-03 11:22:32.000000000 -0800 +++ binutils-2.16.91.0.3/ld/emulparams/elf32fr30.sh 2005-08-22 12:27:45.000000000 -0700 @@ -7,4 +7,4 @@ MAXPAGESIZE=256 ENTRY=_start EMBEDDED=yes NOP=0x9fa09fa0 -OTHER_END_SYMBOLS='PROVIDE (__stack = 0x200000);' +OTHER_SYMBOLS='PROVIDE (__stack = 0x200000);' diff -uprN binutils-2.16.91.0.2/ld/emulparams/elf32frv.sh binutils-2.16.91.0.3/ld/emulparams/elf32frv.sh --- binutils-2.16.91.0.2/ld/emulparams/elf32frv.sh 2004-01-14 13:07:52.000000000 -0800 +++ binutils-2.16.91.0.3/ld/emulparams/elf32frv.sh 2005-08-22 12:27:45.000000000 -0700 @@ -7,7 +7,7 @@ MAXPAGESIZE=256 ENTRY=_start EMBEDDED=yes OTHER_EXCLUDE_FILES='*frvend.o' -OTHER_BSS_END_SYMBOLS='__end = .;' +OTHER_END_SYMBOLS='__end = .;' DATA_START_SYMBOLS='__data_start = . ;' STACK_ADDR=0x200000 NOP=0x80000000 diff -uprN binutils-2.16.91.0.2/ld/emulparams/elf32m32c.sh binutils-2.16.91.0.3/ld/emulparams/elf32m32c.sh --- binutils-2.16.91.0.2/ld/emulparams/elf32m32c.sh 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/elf32m32c.sh 2005-08-22 12:27:45.000000000 -0700 @@ -6,6 +6,8 @@ TEXT_START_ADDR=0x2000 ARCH=m32c ENTRY=_start EMBEDDED=yes +TEMPLATE_NAME=elf32 +EXTRA_EM_FILE=needrelax ELFSIZE=32 MAXPAGESIZE=256 # This is like setting STACK_ADDR to 0x0073FFFF0, except that the setting can diff -uprN binutils-2.16.91.0.2/ld/emulparams/elf32ppclinux.sh binutils-2.16.91.0.3/ld/emulparams/elf32ppclinux.sh --- binutils-2.16.91.0.2/ld/emulparams/elf32ppclinux.sh 2005-04-09 12:03:23.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/elf32ppclinux.sh 2005-08-22 12:27:45.000000000 -0700 @@ -1,7 +1,7 @@ . ${srcdir}/emulparams/elf32ppc.sh TEXT_START_ADDR=0x10000000 unset EXECUTABLE_SYMBOLS -unset OTHER_BSS_END_SYMBOLS +unset OTHER_END_SYMBOLS test -z "${RELOCATING}" || OTHER_SECTIONS="/DISCARD/ : { *(.fixup) }" OTHER_RELRO_SECTIONS=" .got1 ${RELOCATING-0} : { *(.got1) } diff -uprN binutils-2.16.91.0.2/ld/emulparams/elf32ppc.sh binutils-2.16.91.0.3/ld/emulparams/elf32ppc.sh --- binutils-2.16.91.0.2/ld/emulparams/elf32ppc.sh 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/elf32ppc.sh 2005-08-22 12:27:45.000000000 -0700 @@ -23,7 +23,18 @@ PLT=".plt ${RELOCATING-0} : SPE GOTPLT="${PLT}" OTHER_TEXT_SECTIONS="*(.glink)" EXECUTABLE_SYMBOLS='PROVIDE (__stack = 0); PROVIDE (___stack = 0);' -OTHER_BSS_END_SYMBOLS='__end = .;' +if test -z "${CREATE_SHLIB}"; then + SDATA_START_SYMBOLS="PROVIDE (_SDA_BASE_ = 32768);" + SDATA2_START_SYMBOLS="PROVIDE (_SDA2_BASE_ = 32768);" + SBSS_START_SYMBOLS="PROVIDE (__sbss_start = .); PROVIDE (___sbss_start = .);" + SBSS_END_SYMBOLS="PROVIDE (__sbss_end = .); PROVIDE (___sbss_end = .);" +else + unset SDATA_START_SYMBOLS + unset SDATA2_START_SYMBOLS + unset SBSS_START_SYMBOLS + unset SBSS_END_SYMBOLS +fi +OTHER_END_SYMBOLS="__end = .;" OTHER_RELRO_SECTIONS=" .fixup ${RELOCATING-0} : { *(.fixup) } .got1 ${RELOCATING-0} : { *(.got1) } diff -uprN binutils-2.16.91.0.2/ld/emulparams/elf64mmix.sh binutils-2.16.91.0.3/ld/emulparams/elf64mmix.sh --- binutils-2.16.91.0.2/ld/emulparams/elf64mmix.sh 2002-02-03 11:22:32.000000000 -0800 +++ binutils-2.16.91.0.3/ld/emulparams/elf64mmix.sh 2005-08-22 12:27:45.000000000 -0700 @@ -58,4 +58,4 @@ OTHER_SECTIONS=' # EXECUTABLE_SYMBOLS. # By default, put the high end of the stack where the register stack # begins. They grow in opposite directions. */ -OTHER_END_SYMBOLS="PROVIDE (__Stack_start = 0x6000000000000000);" +OTHER_SYMBOLS="PROVIDE (__Stack_start = 0x6000000000000000);" diff -uprN binutils-2.16.91.0.2/ld/emulparams/elf_x86_64.sh binutils-2.16.91.0.3/ld/emulparams/elf_x86_64.sh --- binutils-2.16.91.0.2/ld/emulparams/elf_x86_64.sh 2004-05-27 11:26:05.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/elf_x86_64.sh 2005-08-22 12:27:45.000000000 -0700 @@ -12,6 +12,7 @@ TEMPLATE_NAME=elf32 GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes +LARGE_SECTIONS=yes SEPARATE_GOTPLT=24 if [ "x${host}" = "x${target}" ]; then diff -uprN binutils-2.16.91.0.2/ld/emulparams/hppa64linux.sh binutils-2.16.91.0.3/ld/emulparams/hppa64linux.sh --- binutils-2.16.91.0.2/ld/emulparams/hppa64linux.sh 2004-07-27 21:36:11.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/hppa64linux.sh 2005-08-22 12:27:45.000000000 -0700 @@ -27,15 +27,11 @@ OTHER_READWRITE_SECTIONS=" .plt ${RELOCATING-0} : { *(.plt) } .dlt ${RELOCATING-0} : { *(.dlt) }" -# The PA64 ELF port has two additional bss sections. huge bss and thread bss. -# Make sure they end up in the appropriate location. We also have to set -# __TLS_SIZE to the size of the thread bss section. -OTHER_BSS_SECTIONS=" - .hbss ${RELOCATING-0} : { *(.hbss) } - .tbss ${RELOCATING-0} : { *(.tbss) } -" -#OTHER_BSS_END_SYMBOLS='PROVIDE (__TLS_SIZE = SIZEOF (.tbss));' -OTHER_BSS_END_SYMBOLS=' +# The PA64 ELF port has an additional huge bss section. +LARGE_SECTIONS=".hbss ${RELOCATING-0} : { *(.hbss) }" + +#OTHER_SYMBOLS='PROVIDE (__TLS_SIZE = SIZEOF (.tbss));' +OTHER_SYMBOLS=' PROVIDE (__TLS_SIZE = 0); PROVIDE (__TLS_INIT_SIZE = 0); PROVIDE (__TLS_INIT_START = 0); diff -uprN binutils-2.16.91.0.2/ld/emulparams/m32relf.sh binutils-2.16.91.0.3/ld/emulparams/m32relf.sh --- binutils-2.16.91.0.2/ld/emulparams/m32relf.sh 2002-02-03 11:22:32.000000000 -0800 +++ binutils-2.16.91.0.3/ld/emulparams/m32relf.sh 2005-08-22 12:27:45.000000000 -0700 @@ -9,4 +9,4 @@ MAXPAGESIZE=32 EMBEDDED=yes # This sets the stack to the top of simulator memory (8MB). -OTHER_END_SYMBOLS='PROVIDE (_stack = 0x800000);' +OTHER_SYMBOLS='PROVIDE (_stack = 0x800000);' diff -uprN binutils-2.16.91.0.2/ld/emulparams/msp430all.sh binutils-2.16.91.0.3/ld/emulparams/msp430all.sh --- binutils-2.16.91.0.2/ld/emulparams/msp430all.sh 2004-09-15 12:05:04.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/msp430all.sh 2005-08-22 12:27:45.000000000 -0700 @@ -463,6 +463,74 @@ RAM_SIZE=0x1400 STACK=0x2500 fi +if [ "${MSP430_NAME}" = "msp430x2101" ] ; then +ARCH=msp:21 +MACHINE= +SCRIPT_NAME=elf32msp430 +OUTPUT_FORMAT="elf32-msp430" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=generic + +ROM_START=0xFC00 +ROM_SIZE=0x03e0 +RAM_START=0x0200 +RAM_SIZE=128 + +STACK=0x280 +fi + +if [ "${MSP430_NAME}" = "msp430x2111" ] ; then +ARCH=msp:21 +MACHINE= +SCRIPT_NAME=elf32msp430 +OUTPUT_FORMAT="elf32-msp430" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=generic + +ROM_START=0xF800 +ROM_SIZE=0x07e0 +RAM_START=0x0200 +RAM_SIZE=128 + +STACK=0x280 +fi + +if [ "${MSP430_NAME}" = "msp430x2121" ] ; then +ARCH=msp:21 +MACHINE= +SCRIPT_NAME=elf32msp430 +OUTPUT_FORMAT="elf32-msp430" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=generic + +ROM_START=0xf000 +ROM_SIZE=0x0fe0 +RAM_START=0x0200 +RAM_SIZE=256 + +STACK=0x300 +fi + +if [ "${MSP430_NAME}" = "msp430x2131" ] ; then +ARCH=msp:21 +MACHINE= +SCRIPT_NAME=elf32msp430 +OUTPUT_FORMAT="elf32-msp430" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=generic + +ROM_START=0xe000 +ROM_SIZE=0x1fe0 +RAM_START=0x0200 +RAM_SIZE=256 + +STACK=0x300 +fi + if [ "${MSP430_NAME}" = "msp430x311" ] ; then ARCH=msp:31 MACHINE= diff -uprN binutils-2.16.91.0.2/ld/emulparams/sa29200.sh binutils-2.16.91.0.3/ld/emulparams/sa29200.sh --- binutils-2.16.91.0.2/ld/emulparams/sa29200.sh 1999-06-03 11:02:10.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/sa29200.sh 1969-12-31 16:00:00.000000000 -0800 @@ -1,5 +0,0 @@ -SCRIPT_NAME=sa29200 -OUTPUT_FORMAT="coff-a29k-big" -TEXT_START_ADDR=0x40004000 -TARGET_PAGE_SIZE=0x1000 -ARCH=a29k diff -uprN binutils-2.16.91.0.2/ld/emulparams/vxworks.sh binutils-2.16.91.0.3/ld/emulparams/vxworks.sh --- binutils-2.16.91.0.2/ld/emulparams/vxworks.sh 2005-05-10 15:46:53.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emulparams/vxworks.sh 2005-08-22 12:27:45.000000000 -0700 @@ -21,5 +21,5 @@ FINI_END='KEEP (*(.fini$99)); PROVIDE (_etext = .);' ETEXT_NAME=etext_unrelocated -OTHER_END_SYMBOLS="PROVIDE (_ehdr = ${TEXT_START_ADDR});" +OTHER_SYMBOLS="PROVIDE (_ehdr = ${TEXT_START_ADDR});" DATA_END_SYMBOLS=".edata : { PROVIDE (_edata = .); }" diff -uprN binutils-2.16.91.0.2/ld/emultempl/aix.em binutils-2.16.91.0.3/ld/emultempl/aix.em --- binutils-2.16.91.0.2/ld/emultempl/aix.em 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emultempl/aix.em 2005-08-22 12:27:45.000000000 -0700 @@ -788,8 +788,7 @@ gld${EMULATION_NAME}_before_allocation ( } } - if (!link_info.relocatable) - strip_excluded_output_sections (); + before_allocation_default (); } static char * @@ -1340,11 +1339,10 @@ struct ld_emulation_xfer_struct ld_${EMU gld${EMULATION_NAME}_set_output_arch, gld${EMULATION_NAME}_choose_target, gld${EMULATION_NAME}_before_allocation, - do_assignments_default, gld${EMULATION_NAME}_get_script, "${EMULATION_NAME}", "${OUTPUT_FORMAT}", - 0, /* finish */ + finish_default, gld${EMULATION_NAME}_create_output_section_statements, 0, /* open_dynamic_archive */ 0, /* place_orphan */ diff -uprN binutils-2.16.91.0.2/ld/emultempl/armcoff.em binutils-2.16.91.0.3/ld/emultempl/armcoff.em --- binutils-2.16.91.0.2/ld/emultempl/armcoff.em 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emultempl/armcoff.em 2005-08-22 12:27:45.000000000 -0700 @@ -126,8 +126,7 @@ gld${EMULATION_NAME}_before_allocation ( /* We have seen it all. Allocate it, and carry on */ bfd_arm_allocate_interworking_sections (& link_info); - if (!link_info.relocatable) - strip_excluded_output_sections (); + before_allocation_default (); } static void @@ -194,6 +193,8 @@ gld${EMULATION_NAME}_finish (void) } else einfo (_("%P: warning: connot find thumb start symbol %s\n"), thumb_entry_symbol); + + finish_default (); } static char * @@ -260,7 +261,6 @@ struct ld_emulation_xfer_struct ld_${EMU set_output_arch_default, ldemul_default_target, gld${EMULATION_NAME}_before_allocation, - do_assignments_default, gld${EMULATION_NAME}_get_script, "${EMULATION_NAME}", "${OUTPUT_FORMAT}", diff -uprN binutils-2.16.91.0.2/ld/emultempl/beos.em binutils-2.16.91.0.3/ld/emultempl/beos.em --- binutils-2.16.91.0.2/ld/emultempl/beos.em 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emultempl/beos.em 2005-08-22 12:27:45.000000000 -0700 @@ -647,8 +647,7 @@ gld_${EMULATION_NAME}_before_allocation sort_sections (stat_ptr->head); - if (!link_info.relocatable) - strip_excluded_output_sections (); + before_allocation_default (); } /* Place an orphan section. We use this to put sections with a '\$' in them @@ -767,11 +766,10 @@ struct ld_emulation_xfer_struct ld_${EMU set_output_arch_default, ldemul_default_target, gld_${EMULATION_NAME}_before_allocation, - do_assignments_default, gld_${EMULATION_NAME}_get_script, "${EMULATION_NAME}", "${OUTPUT_FORMAT}", - NULL, /* finish */ + finish_default, NULL, /* create output section statements */ NULL, /* open dynamic archive */ gld${EMULATION_NAME}_place_orphan, diff -uprN binutils-2.16.91.0.2/ld/emultempl/elf32.em binutils-2.16.91.0.3/ld/emultempl/elf32.em --- binutils-2.16.91.0.2/ld/emultempl/elf32.em 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emultempl/elf32.em 2005-08-22 12:27:45.000000000 -0700 @@ -57,7 +57,6 @@ Foundation, Inc., 51 Franklin Street - F /* Declare functions used by various EXTRA_EM_FILEs. */ static void gld${EMULATION_NAME}_before_parse (void); static void gld${EMULATION_NAME}_after_open (void); -static void gld${EMULATION_NAME}_provide_init_fini_syms (void); static void gld${EMULATION_NAME}_before_allocation (void); static bfd_boolean gld${EMULATION_NAME}_place_orphan (lang_input_statement_type *file, asection *s); @@ -1040,47 +1039,6 @@ if test x"$LDEMUL_BEFORE_ALLOCATION" != fi cat >>e${EMULATION_NAME}.c <creator)) - ppc_elf_set_sdata_syms (output_bfd, &link_info); - - s = bfd_get_section_by_name (output_bfd, ".sbss"); - _bfd_elf_provide_section_bound_symbols (&link_info, s, - "__sbss_start", "__sbss_end"); - _bfd_elf_provide_section_bound_symbols (&link_info, s, - "___sbss_start", "___sbss_end"); - - gld${EMULATION_NAME}_provide_init_fini_syms (); -} - EOF # Define some shell vars to insert bits of code into the standard elf @@ -177,4 +160,3 @@ PARSE_AND_LIST_ARGS_CASES=' # LDEMUL_AFTER_OPEN=ppc_after_open LDEMUL_BEFORE_ALLOCATION=ppc_before_allocation -LDEMUL_DO_ASSIGNMENTS=ppc_do_assignments diff -uprN binutils-2.16.91.0.2/ld/emultempl/ppc64elf.em binutils-2.16.91.0.3/ld/emultempl/ppc64elf.em --- binutils-2.16.91.0.2/ld/emultempl/ppc64elf.em 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emultempl/ppc64elf.em 2005-08-22 12:27:45.000000000 -0700 @@ -379,7 +379,7 @@ ppc_finish (void) } ppc64_elf_restore_symbols (&link_info); - _bfd_elf_fix_excluded_sec_syms (output_bfd, &link_info); + finish_default (); } diff -uprN binutils-2.16.91.0.2/ld/emultempl/sh64elf.em binutils-2.16.91.0.3/ld/emultempl/sh64elf.em --- binutils-2.16.91.0.2/ld/emultempl/sh64elf.em 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emultempl/sh64elf.em 2005-08-22 12:27:45.000000000 -0700 @@ -520,13 +520,6 @@ sh64_elf_${EMULATION_NAME}_after_allocat bfd_put_32 (output_bfd, isec->output_offset, crangesp + SH64_CRANGE_CR_ADDR_OFFSET); cr_addr_order->u.reloc.p->addend = 0; - - /* We must update the number of relocations here, - since the elf linker does not take link orders - into account when setting header sizes. The - actual relocation orders are however executed - correctly. */ - elf_section_data(cranges)->rel_count++; } else bfd_put_32 (output_bfd, @@ -564,4 +557,5 @@ sh64_elf_${EMULATION_NAME}_after_allocat sh64_elf_section_data (cranges)->sh64_info->cranges_growth = crangesp - cranges->contents - cranges->size; cranges->size = crangesp - cranges->contents; + cranges->rawsize = cranges->size; } diff -uprN binutils-2.16.91.0.2/ld/emultempl/sunos.em binutils-2.16.91.0.3/ld/emultempl/sunos.em --- binutils-2.16.91.0.2/ld/emultempl/sunos.em 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emultempl/sunos.em 2005-08-22 12:27:45.000000000 -0700 @@ -809,9 +809,9 @@ gld${EMULATION_NAME}_before_allocation ( hdyn->u.def.section = sdyn; else hdyn->u.def.section = bfd_abs_section_ptr; - - strip_excluded_output_sections (); } + + before_allocation_default (); } /* This is called by the before_allocation routine via @@ -1013,11 +1013,10 @@ struct ld_emulation_xfer_struct ld_${EMU set_output_arch_default, ldemul_default_target, gld${EMULATION_NAME}_before_allocation, - do_assignments_default, gld${EMULATION_NAME}_get_script, "${EMULATION_NAME}", "${OUTPUT_FORMAT}", - NULL, /* finish */ + finish_default, gld${EMULATION_NAME}_create_output_section_statements, NULL, /* open dynamic archive */ NULL, /* place orphan */ diff -uprN binutils-2.16.91.0.2/ld/emultempl/ticoff.em binutils-2.16.91.0.3/ld/emultempl/ticoff.em --- binutils-2.16.91.0.2/ld/emultempl/ticoff.em 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emultempl/ticoff.em 2005-08-22 12:27:45.000000000 -0700 @@ -162,11 +162,10 @@ struct ld_emulation_xfer_struct ld_${EMU set_output_arch_default, ldemul_default_target, before_allocation_default, - do_assignments_default, gld_${EMULATION_NAME}_get_script, "${EMULATION_NAME}", "${OUTPUT_FORMAT}", - NULL, /* finish */ + finish_default, NULL, /* create output section statements */ NULL, /* open dynamic archive */ NULL, /* place orphan */ diff -uprN binutils-2.16.91.0.2/ld/emultempl/vanilla.em binutils-2.16.91.0.3/ld/emultempl/vanilla.em --- binutils-2.16.91.0.2/ld/emultempl/vanilla.em 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/emultempl/vanilla.em 2005-08-22 12:27:45.000000000 -0700 @@ -65,11 +65,10 @@ struct ld_emulation_xfer_struct ld_vanil vanilla_set_output_arch, ldemul_default_target, before_allocation_default, - do_assignments_default, vanilla_get_script, "vanilla", "a.out-sunos-big", - NULL, /* finish */ + finish_default, NULL, /* create output section statements */ NULL, /* open dynamic archive */ NULL, /* place orphan */ diff -uprN binutils-2.16.91.0.2/ld/ldemul.c binutils-2.16.91.0.3/ld/ldemul.c --- binutils-2.16.91.0.2/ld/ldemul.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ldemul.c 2005-08-22 12:27:45.000000000 -0700 @@ -80,12 +80,6 @@ ldemul_before_allocation (void) } void -ldemul_do_assignments (void) -{ - ld_emulation->do_assignments (); -} - -void ldemul_set_output_arch (void) { ld_emulation->set_output_arch (); @@ -94,8 +88,7 @@ ldemul_set_output_arch (void) void ldemul_finish (void) { - if (ld_emulation->finish) - ld_emulation->finish (); + ld_emulation->finish (); } void @@ -223,8 +216,10 @@ before_allocation_default (void) } void -do_assignments_default (void) +finish_default (void) { + if (!link_info.relocatable) + _bfd_fix_excluded_sec_syms (output_bfd, &link_info); } void diff -uprN binutils-2.16.91.0.2/ld/ldemul.h binutils-2.16.91.0.3/ld/ldemul.h --- binutils-2.16.91.0.2/ld/ldemul.h 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ldemul.h 2005-08-22 12:27:45.000000000 -0700 @@ -35,8 +35,6 @@ extern void ldemul_after_allocation (void); extern void ldemul_before_allocation (void); -extern void ldemul_do_assignments - (void); extern void ldemul_set_output_arch (void); extern char *ldemul_choose_target @@ -79,7 +77,9 @@ extern void after_allocation_default (void); extern void before_allocation_default (void); -extern void do_assignments_default +extern void finish_default + (void); +extern void finish_default (void); extern void set_output_arch_default (void); @@ -121,9 +121,6 @@ typedef struct ld_emulation_xfer_struct /* Run before allocating output sections. */ void (*before_allocation) (void); - /* Run to set special symbols at the same time as link script syms. */ - void (*do_assignments) (void); - /* Return the appropriate linker script. */ char * (*get_script) (int *isfile); diff -uprN binutils-2.16.91.0.2/ld/ldexp.c binutils-2.16.91.0.3/ld/ldexp.c --- binutils-2.16.91.0.2/ld/ldexp.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ldexp.c 2005-08-22 12:27:45.000000000 -0700 @@ -740,6 +740,8 @@ exp_fold_tree_1 (etree_type *tree) defined by some object. */ break; } + if (tree->assign.hidden) + bfd_hide_symbol (output_bfd, &link_info, h, TRUE); } exp_fold_tree_1 (tree->assign.src); @@ -884,7 +886,7 @@ exp_assop (int code, const char *dst, et /* Handle PROVIDE. */ etree_type * -exp_provide (const char *dst, etree_type *src) +exp_provide (const char *dst, etree_type *src, bfd_boolean hidden) { etree_type *n; @@ -893,6 +895,7 @@ exp_provide (const char *dst, etree_type n->assign.type.node_class = etree_provide; n->assign.src = src; n->assign.dst = dst; + n->assign.hidden = hidden; return n; } diff -uprN binutils-2.16.91.0.2/ld/ldexp.h binutils-2.16.91.0.3/ld/ldexp.h --- binutils-2.16.91.0.2/ld/ldexp.h 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ldexp.h 2005-08-22 12:27:45.000000000 -0700 @@ -63,6 +63,7 @@ typedef union etree_union { node_type type; const char *dst; union etree_union *src; + bfd_boolean hidden; } assign; struct { node_type type; @@ -165,7 +166,7 @@ etree_type *exp_nameop etree_type *exp_assop (int, const char *, etree_type *); etree_type *exp_provide - (const char *, etree_type *); + (const char *, etree_type *, bfd_boolean); etree_type *exp_assert (etree_type *, const char *); void exp_print_tree diff -uprN binutils-2.16.91.0.2/ld/ldgram.y binutils-2.16.91.0.3/ld/ldgram.y --- binutils-2.16.91.0.2/ld/ldgram.y 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ldgram.y 2005-08-22 12:27:45.000000000 -0700 @@ -48,7 +48,6 @@ static enum section_type sectype; static lang_memory_region_type *region; -static bfd_boolean ldgram_want_filename = TRUE; FILE *saved_script_handle = NULL; bfd_boolean force_make_executable = FALSE; @@ -143,7 +142,7 @@ static int error_index; %token STARTUP HLL SYSLIB FLOAT NOFLOAT NOCROSSREFS %token ORIGIN FILL %token LENGTH CREATE_OBJECT_SYMBOLS INPUT GROUP OUTPUT CONSTRUCTORS -%token ALIGNMOD AT SUBALIGN PROVIDE AS_NEEDED +%token ALIGNMOD AT SUBALIGN PROVIDE PROVIDE_HIDDEN AS_NEEDED %type assign_op atype attributes_opt sect_constraint %type filename %token CHIP LIST SECT ABSOLUTE LOAD NEWLINE ENDWORD ORDER NAMEWORD ASSERT_K @@ -649,7 +648,11 @@ assignment: } | PROVIDE '(' NAME '=' mustbe_exp ')' { - lang_add_assignment (exp_provide ($3, $5)); + lang_add_assignment (exp_provide ($3, $5, FALSE)); + } + | PROVIDE_HIDDEN '(' NAME '=' mustbe_exp ')' + { + lang_add_assignment (exp_provide ($3, $5, TRUE)); } ; @@ -1223,6 +1226,9 @@ vers_defns: } vers_defns opt_semicolon '}' { + struct bfd_elf_version_expr *pat; + for (pat = $7; pat->next != NULL; pat = pat->next); + pat->next = $1; $$ = $7; ldgram_vers_current_lang = $6; } @@ -1236,6 +1242,30 @@ vers_defns: $$ = $5; ldgram_vers_current_lang = $4; } + | GLOBAL + { + $$ = lang_new_vers_pattern (NULL, "global", ldgram_vers_current_lang); + } + | vers_defns ';' GLOBAL + { + $$ = lang_new_vers_pattern ($1, "global", ldgram_vers_current_lang); + } + | LOCAL + { + $$ = lang_new_vers_pattern (NULL, "local", ldgram_vers_current_lang); + } + | vers_defns ';' LOCAL + { + $$ = lang_new_vers_pattern ($1, "local", ldgram_vers_current_lang); + } + | EXTERN + { + $$ = lang_new_vers_pattern (NULL, "extern", ldgram_vers_current_lang); + } + | vers_defns ';' EXTERN + { + $$ = lang_new_vers_pattern ($1, "extern", ldgram_vers_current_lang); + } ; opt_semicolon: diff -uprN binutils-2.16.91.0.2/ld/ldlang.c binutils-2.16.91.0.3/ld/ldlang.c --- binutils-2.16.91.0.2/ld/ldlang.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ldlang.c 2005-08-22 12:27:45.000000000 -0700 @@ -1010,6 +1010,7 @@ static lang_output_section_statement_typ lang_output_section_statement_lookup_1 (const char *const name, int constraint) { lang_output_section_statement_type *lookup; + lang_output_section_statement_type **nextp; lookup = lang_output_section_find_1 (name, constraint); if (lookup == NULL) @@ -1038,9 +1039,13 @@ lang_output_section_statement_lookup_1 ( lookup->update_dot_tree = NULL; lookup->phdrs = NULL; + /* GCC's strict aliasing rules prevent us from just casting the + address, so we store the pointer in a variable and cast that + instead. */ + nextp = &lookup->next; lang_statement_append (&lang_output_section_statement, (lang_statement_union_type *) lookup, - (lang_statement_union_type **) &lookup->next); + (lang_statement_union_type **) nextp); } return lookup; } @@ -1611,6 +1616,7 @@ exp_init_os (etree_type *exp) switch (exp->type.node_class) { case etree_assign: + case etree_provide: exp_init_os (exp->assign.src); break; @@ -3050,9 +3056,7 @@ strip_excluded_output_sections (void) { lang_output_section_statement_type *os; - /* Run lang_size_sections (if not already done) to ensure that all - symbols defined in the linker script are put in the bfd hash - table. */ + /* Run lang_size_sections (if not already done). */ if (expld.phase != lang_mark_phase_enum) { expld.phase = lang_mark_phase_enum; @@ -4585,7 +4589,6 @@ lang_do_assignments (void) { lang_statement_iteration++; lang_do_assignments_1 (statement_list.head, abs_output_section, NULL, 0); - ldemul_do_assignments (); } /* Fix any .startof. or .sizeof. symbols. When the assemblers see the diff -uprN binutils-2.16.91.0.2/ld/ldlex.l binutils-2.16.91.0.3/ld/ldlex.l --- binutils-2.16.91.0.2/ld/ldlex.l 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ldlex.l 2005-08-22 12:27:45.000000000 -0700 @@ -313,6 +313,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([ "AT" { RTOKEN(AT);} "SUBALIGN" { RTOKEN(SUBALIGN);} "PROVIDE" { RTOKEN(PROVIDE); } +"PROVIDE_HIDDEN" { RTOKEN(PROVIDE_HIDDEN); } "KEEP" { RTOKEN(KEEP); } "EXCLUDE_FILE" { RTOKEN(EXCLUDE_FILE); } "#".*\n? { ++ lineno; } diff -uprN binutils-2.16.91.0.2/ld/ldmain.c binutils-2.16.91.0.3/ld/ldmain.c --- binutils-2.16.91.0.2/ld/ldmain.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ldmain.c 2005-08-22 12:27:45.000000000 -0700 @@ -345,9 +345,6 @@ main (int argc, char **argv) einfo (_("%P%F: -r and -shared may not be used together\n")); } - if (!config.dynamic_link && link_info.shared) - einfo (_("%P%F: -static and -shared may not be used together\n")); - if (! link_info.shared) { if (command_line.filter_shlib) diff -uprN binutils-2.16.91.0.2/ld/ld.texinfo binutils-2.16.91.0.3/ld/ld.texinfo --- binutils-2.16.91.0.2/ld/ld.texinfo 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/ld.texinfo 2005-08-22 12:27:45.000000000 -0700 @@ -18,7 +18,6 @@ @c Configure for the generation of man pages @set UsesEnvVars @set GENERIC -@set A29K @set ARC @set ARM @set D10V @@ -1077,7 +1076,11 @@ platforms for which shared libraries are variants of this option are for compatibility with various systems. You may use this option multiple times on the command line: it affects library searching for @option{-l} options which follow it. This -option also implies @option{--unresolved-symbols=report-all}. +option also implies @option{--unresolved-symbols=report-all}. This +option can be used with @option{-shared}. Doing so means that a +shared library is being created but that all of the library's external +references must be resolved by pulling in entries from static +libraries. @kindex -Bsymbolic @item -Bsymbolic @@ -2775,6 +2778,7 @@ the symbol and place it into the symbol @menu * Simple Assignments:: Simple Assignments * PROVIDE:: PROVIDE +* PROVIDE_HIDDEN:: PROVIDE_HIDDEN * Source Code Reference:: How to use a linker script defined symbol in source code @end menu @@ -2868,6 +2872,12 @@ underscore), the linker will silently us If the program references @samp{etext} but does not define it, the linker will use the definition in the linker script. +@node PROVIDE_HIDDEN +@subsection PROVIDE_HIDDEN +@cindex PROVIDE_HIDDEN +Similar to @code{PROVIDE}. For ELF targeted ports, the symbol will be +hidden and won't be exported. + @node Source Code Reference @subsection Source Code Reference diff -uprN binutils-2.16.91.0.2/ld/Makefile.am binutils-2.16.91.0.3/ld/Makefile.am --- binutils-2.16.91.0.2/ld/Makefile.am 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/Makefile.am 2005-08-22 12:27:45.000000000 -0700 @@ -106,7 +106,6 @@ BFDLIB = ../bfd/libbfd.la LIBIBERTY = ../libiberty/libiberty.a ALL_EMULATIONS = \ - ea29k.o \ eaixppc.o \ eaixrs6.o \ ealpha.o \ @@ -145,7 +144,6 @@ ALL_EMULATIONS = \ ed30velf.o \ edelta68.o \ eelf32_dlx.o \ - eebmon29k.o \ eelf32_i960.o \ eelf32_i860.o \ eelf32_sparc.o \ @@ -290,6 +288,10 @@ ALL_EMULATIONS = \ emsp430x1610.o \ emsp430x1611.o \ emsp430x1612.o \ + emsp430x2101.o \ + emsp430x2111.o \ + emsp430x2121.o \ + emsp430x2131.o \ emsp430x311.o \ emsp430x312.o \ emsp430x313.o \ @@ -331,7 +333,6 @@ ALL_EMULATIONS = \ eppcpe.o \ eppclynx.o \ eriscix.o \ - esa29200.o \ esh.o \ eshelf32.o \ eshlelf32.o \ @@ -470,9 +471,6 @@ GEN_DEPENDS = $(srcdir)/genscripts.sh st @TDIRS@ -ea29k.c: $(srcdir)/emulparams/a29k.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/a29k.sc ${GEN_DEPENDS} - ${GENSCRIPTS} a29k "$(tdir_a29k)" eaix5ppc.c: $(srcdir)/emulparams/aix5ppc.sh \ $(srcdir)/emultempl/aix.em $(srcdir)/scripttempl/aix.sc ${GEN_DEPENDS} ${GENSCRIPTS} aix5ppc "$(tdir_aixppc)" @@ -620,9 +618,6 @@ edelta68.c: $(srcdir)/emulparams/delta68 eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/dlx.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32_dlx "$(tdir_elf32_dlx)" -eebmon29k.c: $(srcdir)/emulparams/ebmon29k.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/ebmon29k.sc ${GEN_DEPENDS} - ${GENSCRIPTS} ebmon29k "$(tdir_ebmon29k)" eelf32xstormy16.c: $(srcdir)/emulparams/elf32xstormy16.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/xstormy16.sc ${GEN_DEPENDS} @@ -1219,6 +1214,22 @@ emsp430x1612.c: $(srcdir)/emulparams/msp $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ ${GEN_DEPENDS} ${GENSCRIPTS} msp430x1612 "$(tdir_msp430x1612)" msp430all +emsp430x2101.c: $(srcdir)/emulparams/msp430all.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} msp430x2101 "$(tdir_msp430x2101)" msp430all +emsp430x2111.c: $(srcdir)/emulparams/msp430all.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} msp430x2111 "$(tdir_msp430x2111)" msp430all +emsp430x2121.c: $(srcdir)/emulparams/msp430all.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} msp430x2121 "$(tdir_msp430x2121)" msp430all +emsp430x2131.c: $(srcdir)/emulparams/msp430all.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} msp430x2131 "$(tdir_msp430x2131)" msp430all emsp430x311.c: $(srcdir)/emulparams/msp430all.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430_3.sc \ ${GEN_DEPENDS} @@ -1371,9 +1382,6 @@ eppclynx.c: $(srcdir)/emulparams/ppclynx eriscix.c: $(srcdir)/emulparams/riscix.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} ${GENSCRIPTS} riscix "$(tdir_riscix)" -esa29200.c: $(srcdir)/emulparams/sa29200.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sa29200.sc ${GEN_DEPENDS} - ${GENSCRIPTS} sa29200 "$(tdir_sa29200)" esh.c: $(srcdir)/emulparams/sh.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sh.sc ${GEN_DEPENDS} ${GENSCRIPTS} sh "$(tdir_sh)" @@ -1535,6 +1543,7 @@ eelf32frvfd.c: $(srcdir)/emulparams/elf3 $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32frvfd "$(tdir_frv)" eelf32m32c.c: $(srcdir)/emulparams/elf32m32c.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32m32c "$(tdir_m32c)" eelf32ms1.c: $(srcdir)/emulparams/elf32ms1.sh \ diff -uprN binutils-2.16.91.0.2/ld/Makefile.in binutils-2.16.91.0.3/ld/Makefile.in --- binutils-2.16.91.0.2/ld/Makefile.in 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/Makefile.in 2005-08-22 12:27:45.000000000 -0700 @@ -329,7 +329,6 @@ INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) BFDLIB = ../bfd/libbfd.la LIBIBERTY = ../libiberty/libiberty.a ALL_EMULATIONS = \ - ea29k.o \ eaixppc.o \ eaixrs6.o \ ealpha.o \ @@ -368,7 +367,6 @@ ALL_EMULATIONS = \ ed30velf.o \ edelta68.o \ eelf32_dlx.o \ - eebmon29k.o \ eelf32_i960.o \ eelf32_i860.o \ eelf32_sparc.o \ @@ -513,6 +511,10 @@ ALL_EMULATIONS = \ emsp430x1610.o \ emsp430x1611.o \ emsp430x1612.o \ + emsp430x2101.o \ + emsp430x2111.o \ + emsp430x2121.o \ + emsp430x2131.o \ emsp430x311.o \ emsp430x312.o \ emsp430x313.o \ @@ -554,7 +556,6 @@ ALL_EMULATIONS = \ eppcpe.o \ eppclynx.o \ eriscix.o \ - esa29200.o \ esh.o \ eshelf32.o \ eshlelf32.o \ @@ -1274,9 +1275,6 @@ stringify.sed: ${srcdir}/emultempl/$(STR @TDIRS@ -ea29k.c: $(srcdir)/emulparams/a29k.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/a29k.sc ${GEN_DEPENDS} - ${GENSCRIPTS} a29k "$(tdir_a29k)" eaix5ppc.c: $(srcdir)/emulparams/aix5ppc.sh \ $(srcdir)/emultempl/aix.em $(srcdir)/scripttempl/aix.sc ${GEN_DEPENDS} ${GENSCRIPTS} aix5ppc "$(tdir_aixppc)" @@ -1424,9 +1422,6 @@ edelta68.c: $(srcdir)/emulparams/delta68 eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/dlx.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32_dlx "$(tdir_elf32_dlx)" -eebmon29k.c: $(srcdir)/emulparams/ebmon29k.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/ebmon29k.sc ${GEN_DEPENDS} - ${GENSCRIPTS} ebmon29k "$(tdir_ebmon29k)" eelf32xstormy16.c: $(srcdir)/emulparams/elf32xstormy16.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/xstormy16.sc ${GEN_DEPENDS} @@ -2023,6 +2018,22 @@ emsp430x1612.c: $(srcdir)/emulparams/msp $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ ${GEN_DEPENDS} ${GENSCRIPTS} msp430x1612 "$(tdir_msp430x1612)" msp430all +emsp430x2101.c: $(srcdir)/emulparams/msp430all.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} msp430x2101 "$(tdir_msp430x2101)" msp430all +emsp430x2111.c: $(srcdir)/emulparams/msp430all.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} msp430x2111 "$(tdir_msp430x2111)" msp430all +emsp430x2121.c: $(srcdir)/emulparams/msp430all.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} msp430x2121 "$(tdir_msp430x2121)" msp430all +emsp430x2131.c: $(srcdir)/emulparams/msp430all.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} msp430x2131 "$(tdir_msp430x2131)" msp430all emsp430x311.c: $(srcdir)/emulparams/msp430all.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32msp430_3.sc \ ${GEN_DEPENDS} @@ -2175,9 +2186,6 @@ eppclynx.c: $(srcdir)/emulparams/ppclynx eriscix.c: $(srcdir)/emulparams/riscix.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} ${GENSCRIPTS} riscix "$(tdir_riscix)" -esa29200.c: $(srcdir)/emulparams/sa29200.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sa29200.sc ${GEN_DEPENDS} - ${GENSCRIPTS} sa29200 "$(tdir_sa29200)" esh.c: $(srcdir)/emulparams/sh.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sh.sc ${GEN_DEPENDS} ${GENSCRIPTS} sh "$(tdir_sh)" @@ -2339,6 +2347,7 @@ eelf32frvfd.c: $(srcdir)/emulparams/elf3 $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32frvfd "$(tdir_frv)" eelf32m32c.c: $(srcdir)/emulparams/elf32m32c.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32m32c "$(tdir_m32c)" eelf32ms1.c: $(srcdir)/emulparams/elf32ms1.sh \ diff -uprN binutils-2.16.91.0.2/ld/pe-dll.c binutils-2.16.91.0.3/ld/pe-dll.c --- binutils-2.16.91.0.2/ld/pe-dll.c 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/pe-dll.c 2005-08-22 12:27:45.000000000 -0700 @@ -2636,6 +2636,7 @@ pe_dll_fill_sections (bfd *abfd, struct bfd_set_section_size (filler_bfd, reloc_s, reloc_sz); /* Resize the sections. */ + lang_reset_memory_regions (); lang_size_sections (NULL, TRUE); /* Redo special stuff. */ @@ -2666,6 +2667,7 @@ pe_exe_fill_sections (bfd *abfd, struct bfd_set_section_size (filler_bfd, reloc_s, reloc_sz); /* Resize the sections. */ + lang_reset_memory_regions (); lang_size_sections (NULL, TRUE); /* Redo special stuff. */ diff -uprN binutils-2.16.91.0.2/ld/scripttempl/armbpabi.sc binutils-2.16.91.0.3/ld/scripttempl/armbpabi.sc --- binutils-2.16.91.0.2/ld/scripttempl/armbpabi.sc 2005-04-09 12:03:25.000000000 -0700 +++ binutils-2.16.91.0.3/ld/scripttempl/armbpabi.sc 2005-08-22 12:27:45.000000000 -0700 @@ -293,10 +293,10 @@ cat < RAM - ${RELOCATING+${OTHER_BSS_SECTIONS}} + ${RELOCATING+${OTHER_BSS_END_SYMBOLS}} ${RELOCATING+. = ALIGN(${ALIGNMENT});} + ${RELOCATING+${OTHER_END_SYMBOLS}} ${RELOCATING+_end = .;} ${RELOCATING+__stack = .;} - ${RELOCATING+${OTHER_BSS_END_SYMBOLS}} ${RELOCATING+PROVIDE (end = .);} /* Read-only sections in ROM. */ diff -uprN binutils-2.16.91.0.2/ld/testsuite/ChangeLog binutils-2.16.91.0.3/ld/testsuite/ChangeLog --- binutils-2.16.91.0.2/ld/testsuite/ChangeLog 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ChangeLog 2005-08-22 12:27:45.000000000 -0700 @@ -1,3 +1,235 @@ +2005-08-18 David Daney + + * ld-mips-elf/multi-got-1.d: Adjust for new ld behavior. + * ld-mips-elf/multi-got-no-shared.d: Likewise. + * ld-mips-elf/rel32-n32.d: Likewise. + * ld-mips-elf/rel32-o32.d: Likewise. + * ld-mips-elf/rel64.d: Likewise. + +2005-08-18 Alan Modra + + * ld-d10v/default_layout.d: Adjust for section removal. + * ld-elf/empty.s: Define "main". + * ld-elf/frame.exp: Don't run for hppa64 and v850. + * ld-elf/group1.d: xfail various targets. + * ld-elf/merge.d: Likewise. + * ld-elf/merge2.d: Likewise. + * ld-elf/warn1.d: Likewise. + * ld-scripts/defined2.d: Likewise. + * ld-scripts/defined3.d: Likewise. + * ld-scripts/empty-aligned.d: Likewise. + * ld-scripts/size-2.d: Likewise. + * ld-scripts/weak.exp: Likewise. + * ld-selective/sel-dump.exp: Likewise. + * ld-undefined/weak-undef.exp: Likewise. + +2005-08-18 Alan Modra + + * ld-scripts/crossref.exp: Remove a29k support. + * ld-srec/srec.exp: Likewise. + +2005-08-17 Jakub Jelinek + + * lib/ld-lib.exp (default_ld_compile): Append $cc arguments after + $CFLAGS instead of prepending them. + + * ld-elfvers/vers.exp: Add a new test, vers30. + * ld-elfvers/vers30.c: New file. + * ld-elfvers/vers30.map: New file. + * ld-elfvers/vers30.ver: New file. + * ld-elfvers/vers30.dsym: New file. + +2005-08-17 Alan Modra + + * ld-alpha/tlsbin.rd: Update. + * ld-alpha/tlsbinr.rd: Update. + * ld-cris/locref1.d: Update. + * ld-cris/locref2.d: Update. + * ld-i386/tlsbin.rd: Update. + * ld-ia64/tlsbin.rd: Update. + * ld-powerpc/tlsexe.r: Update. + * ld-powerpc/tlsexe32.r: Update. + * ld-powerpc/tlsexetoc.r: Update. + * ld-s390/tlsbin.rd: Update. + * ld-s390/tlsbin_64.rd: Update. + * ld-sparc/tlssunbin32.rd: Update. + * ld-sparc/tlssunbin64.rd: Update. + * ld-x86-64/tlsbin.rd: Update. + +2005-08-16 Hans-Peter Nilsson + + * ld-cris/dso-1.s: Add missing alignment directive. + * ld-cris/libdso-10.d: Adjust accordingly. + +2005-08-16 Alan Modra + + * ld-alpha/tlsbin.rd: Adjust for dynamic sym changes. + * ld-alpha/tlsbinr.rd: Likewise. + * ld-alpha/tlspic.rd: Likewise. + * ld-arm/mixed-app.d: Likewise. + * ld-arm/mixed-app.sym: Likewise. + * ld-arm/mixed-lib.sym: Likewise. + * ld-arm/tls-app.d: Likewise. + * ld-arm/tls-app.r: Likewise. + * ld-cris/expdyn5.d: Likewise. + * ld-cris/expdyn6.d: Likewise. + * ld-cris/expdyn7.d: Likewise. + * ld-cris/gotplt1.d: Likewise. + * ld-cris/gotplt2.d: Likewise. + * ld-cris/gotplt3.d: Likewise. + * ld-cris/hiddef1.d: Likewise. + * ld-cris/libdso-10.d: Likewise. + * ld-cris/libdso-11.d: Likewise. + * ld-cris/libdso-12.d: Likewise. + * ld-cris/libdso-13.d: Likewise. + * ld-cris/libdso-14.d: Likewise. + * ld-cris/libdso-2.d: Likewise. + * ld-cris/pv32-1.d: Likewise. + * ld-cris/weakref2.d: Likewise. + * ld-frv/fdpic-pie-1.d: Likewise. + * ld-frv/fdpic-pie-2.d: Likewise. + * ld-frv/fdpic-pie-6.d: Likewise. + * ld-frv/fdpic-pie-7.d: Likewise. + * ld-frv/fdpic-pie-8.d: Likewise. + * ld-frv/fdpic-shared-1.d: Likewise. + * ld-frv/fdpic-shared-2.d: Likewise. + * ld-frv/fdpic-shared-3.d: Likewise. + * ld-frv/fdpic-shared-4.d: Likewise. + * ld-frv/fdpic-shared-5.d: Likewise. + * ld-frv/fdpic-shared-6.d: Likewise. + * ld-frv/fdpic-shared-7.d: Likewise. + * ld-frv/fdpic-shared-8.d: Likewise. + * ld-frv/fdpic-shared-local-2.d: Likewise. + * ld-frv/fdpic-shared-local-8.d: Likewise. + * ld-frv/fdpic-static-1.d: Likewise. + * ld-frv/fdpic-static-2.d: Likewise. + * ld-frv/fdpic-static-6.d: Likewise. + * ld-frv/fdpic-static-7.d: Likewise. + * ld-frv/fdpic-static-8.d: Likewise. + * ld-frv/tls-dynamic-1.d: Likewise. + * ld-frv/tls-dynamic-2.d: Likewise. + * ld-frv/tls-dynamic-3.d: Likewise. + * ld-frv/tls-initial-shared-2.d: Likewise. + * ld-frv/tls-pie-1.d: Likewise. + * ld-frv/tls-pie-3.d: Likewise. + * ld-frv/tls-relax-dynamic-1.d: Likewise. + * ld-frv/tls-relax-dynamic-2.d: Likewise. + * ld-frv/tls-relax-dynamic-3.d: Likewise. + * ld-frv/tls-relax-initial-shared-2.d: Likewise. + * ld-frv/tls-relax-pie-1.d: Likewise. + * ld-frv/tls-relax-pie-3.d: Likewise. + * ld-frv/tls-relax-shared-1.d: Likewise. + * ld-frv/tls-relax-shared-2.d: Likewise. + * ld-frv/tls-relax-shared-3.d: Likewise. + * ld-frv/tls-relax-static-1.d: Likewise. + * ld-frv/tls-shared-1.d: Likewise. + * ld-frv/tls-shared-2.d: Likewise. + * ld-frv/tls-shared-3.d: Likewise. + * ld-frv/tls-static-1.d: Likewise. + * ld-frv/tls-static-3.d: Likewise. + * ld-i386/tlsbin.rd: Likewise. + * ld-i386/tlsnopic.rd: Likewise. + * ld-i386/tlspic.rd: Likewise. + * ld-ia64/tlsbin.dd: Likewise. + * ld-ia64/tlsbin.rd: Likewise. + * ld-ia64/tlspic.dd: Likewise. + * ld-ia64/tlspic.rd: Likewise. + * ld-powerpc/tlsexe.g: Likewise. + * ld-powerpc/tlsexe.r: Likewise. + * ld-powerpc/tlsexe32.d: Likewise. + * ld-powerpc/tlsexe32.g: Likewise. + * ld-powerpc/tlsexe32.r: Likewise. + * ld-powerpc/tlsexetoc.g: Likewise. + * ld-powerpc/tlsexetoc.r: Likewise. + * ld-powerpc/tlsso.g: Likewise. + * ld-powerpc/tlsso.r: Likewise. + * ld-powerpc/tlsso32.d: Likewise. + * ld-powerpc/tlsso32.g: Likewise. + * ld-powerpc/tlsso32.r: Likewise. + * ld-powerpc/tlstocso.g: Likewise. + * ld-powerpc/tlstocso.r: Likewise. + * ld-s390/tlsbin.rd: Likewise. + * ld-s390/tlsbin_64.rd: Likewise. + * ld-s390/tlspic.rd: Likewise. + * ld-s390/tlspic_64.rd: Likewise. + * ld-sh/shared-1.d: Likewise. + * ld-sh/tlsbin-2.d: Likewise. + * ld-sh/tlsbin-3.d: Likewise. + * ld-sh/tlsbin-4.d: Likewise. + * ld-sh/tlspic-2.d: Likewise. + * ld-sh/sh64/abi32.xd: Likewise. + * ld-sh/sh64/abi64.xd: Likewise. + * ld-sh/sh64/cmpct1.xd: Likewise. + * ld-sh/sh64/crange1.rd: Likewise. + * ld-sh/sh64/crange2.rd: Likewise. + * ld-sh/sh64/crange3-cmpct.rd: Likewise. + * ld-sh/sh64/crange3-media.rd: Likewise. + * ld-sh/sh64/crange3.rd: Likewise. + * ld-sh/sh64/gotplt.d: Likewise. + * ld-sh/sh64/init-cmpct.d: Likewise. + * ld-sh/sh64/init-media.d: Likewise. + * ld-sh/sh64/init64.d: Likewise. + * ld-sh/sh64/mix1.xd: Likewise. + * ld-sh/sh64/mix2.xd: Likewise. + * ld-sh/sh64/sh64.exp: Likewise. + * ld-sh/sh64/shdl32.xd: Likewise. + * ld-sh/sh64/shdl64.xd: Likewise. + * ld-sparc/tlssunbin32.rd: Likewise. + * ld-sparc/tlssunbin64.rd: Likewise. + * ld-sparc/tlssunnopic32.rd: Likewise. + * ld-sparc/tlssunnopic64.rd: Likewise. + * ld-sparc/tlssunpic32.rd: Likewise. + * ld-sparc/tlssunpic64.rd: Likewise. + * ld-x86-64/tlsbin.rd: Likewise. + * ld-x86-64/tlspic.dd: Likewise. + * ld-x86-64/tlspic.rd: Likewise. + +2005-08-15 Alan Modra + + * ld-elf/empty.s: Define "start". + * ld-elf/merge2.d: xfail arc-*-* and dlx-*-*. + * ld-scripts/empty-aligned.s: No .data section. + * ld-scripts/empty-aligned.t: Discard most sections. + * ld-scripts/empty-aligned.d: Adjust. + +2005-08-11 Hans-Peter Nilsson + + * ld-cris/expdyn1.s (expobj): Set size here, at definition... + * ld-cris/pv32.s: ...not here. + * ld-cris/expdyn1.d, ld-cris/libdso-12.d, ld-cris/locref1.d: + Adjust for expobj size being set at definition. + + * ld-cris/v32-ba-1.d: Regexpize to adjust for symbol change. + +2005-08-08 Richard Earnshaw + + * ld-arm/mixed-app.sym: Expact _stack to be in the ABS section. + * ld-arm/mixed-lib.sym: Likewise. + * tls-lib.d: Use a regexp for the address locations. + * tls-lib.r: Likewise. + +2005-08-03 H.J. Lu + + * ld-i386/pcrel16.d: Updated. + * ld-i386/pcrel16.s: Likewise. + * ld-x86-64/pcrel16.d: Likewise. + +2005-08-01 Richard Sandiford + + * ld-mips/mips-elf-flags.exp: Add more good_combination tests. + +2005-07-28 Ben Elliston + + * lib/ld-lib.exp (run_ld_link_exec_tests): Add new parameter + ${targets_to_xfail} that is applied for each test item. + * ld-elf/elf.exp: Pass *-*-netbsdelf* as an xfailed target. + +2005-07-27 Alan Modra + + * ld-elfweak/size2a.s: Extend test to check size for two weaks. + * ld-elfweak/size2b.s: Likewise. + * ld-elfweak/size2.d: Update. + 2005-07-18 Jan Beulich * ld-i386/abs.s, ld-i386/zero.s, ld-i386/abs.d, ld-x86-64/abs.d, diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-alpha/tlsbin.rd binutils-2.16.91.0.3/ld/testsuite/ld-alpha/tlsbin.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-alpha/tlsbin.rd 2005-04-09 12:03:25.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-alpha/tlsbin.rd 2005-08-22 12:27:45.000000000 -0700 @@ -56,84 +56,81 @@ Relocation section '.rela.plt' at offset Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: [0-9a-f]+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +1: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +2: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +3: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +4: [0-9a-f]+ +4 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +5: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +6: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +7: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +8: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_ - +9: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +LOCAL +DEFAULT +UND * +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG2 +[0-9 ]+: [0-9a-f]+ +4 FUNC +GLOBAL DEFAULT +UND __tls_get_addr +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG1 +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '.symtab' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +1: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 - +2: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 - +3: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 - +4: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 - +5: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 - +6: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 - +7: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 - +8: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 - +9: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +16 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl1 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl2 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl3 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl4 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl5 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl6 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl7 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl8 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl1 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl2 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl3 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl4 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl5 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl6 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl7 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl8 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg8 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg8 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg6 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg3 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg3 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh3 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg4 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg5 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg5 - +[0-9]+: [0-9a-f]+ +4 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh7 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh8 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg1 - +[0-9]+: [0-9a-f]+ +52 FUNC +GLOBAL DEFAULT +7 _start - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh4 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg7 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: [0-9a-f]+ +136 FUNC +GLOBAL DEFAULT +7 fn2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh1 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg6 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh6 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg1 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg4 +[0-9 ]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +16 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl1 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl2 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl3 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl4 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl5 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl6 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl7 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl8 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl1 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl2 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl3 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl4 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl5 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl6 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl7 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl8 +[0-9 ]+: [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +11 _DYNAMIC +[0-9 ]+: [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +12 _PROCEDURE_LINKAGE_TABLE_ +[0-9 ]+: [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +13 _GLOBAL_OFFSET_TABLE_ +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg8 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg8 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg6 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg3 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg3 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh3 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg4 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg5 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg5 +[0-9 ]+: [0-9a-f]+ +4 FUNC +GLOBAL DEFAULT +UND __tls_get_addr +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh7 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh8 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg1 +[0-9 ]+: [0-9a-f]+ +52 FUNC +GLOBAL DEFAULT +7 _start +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh4 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg7 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh5 +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start +[0-9 ]+: [0-9a-f]+ +136 FUNC +GLOBAL DEFAULT +7 fn2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG1 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh1 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg6 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg7 +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh6 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg1 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg4 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-alpha/tlsbinr.rd binutils-2.16.91.0.3/ld/testsuite/ld-alpha/tlsbinr.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-alpha/tlsbinr.rd 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-alpha/tlsbinr.rd 2005-08-22 12:27:45.000000000 -0700 @@ -46,89 +46,86 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 2 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -[0-9a-f]+ +0+200000026 R_ALPHA_TPREL64 +0+ sG2 \+ 0 -[0-9a-f]+ +0+600000026 R_ALPHA_TPREL64 +0+ sG1 \+ 0 +[0-9a-f]+ +0+100000026 R_ALPHA_TPREL64 +0+ sG2 \+ 0 +[0-9a-f]+ +0+400000026 R_ALPHA_TPREL64 +0+ sG1 \+ 0 -Symbol table '.dynsym' contains 10 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +1: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +2: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +3: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +4: 0+ +4 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +5: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +6: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +7: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +8: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_ - +9: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +[0-9 ]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND +[0-9 ]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 +[0-9 ]+: 0+ +4 FUNC +GLOBAL DEFAULT +UND __tls_get_addr +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start +[0-9 ]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '.symtab' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: [0-9a-f]+ +0 NOTYPE +LOCAL +DEFAULT +UND - +1: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 - +2: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 - +3: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 - +4: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 - +5: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 - +6: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 - +7: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 - +8: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 - +9: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +16 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl1 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl2 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl3 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl4 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl5 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl6 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl7 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl8 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl1 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl2 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl3 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl4 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl5 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl6 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl7 - +[0-9]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl8 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg8 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg8 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg6 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg3 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg3 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh3 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg4 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg5 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg5 - +[0-9]+: [0-9a-f]+ +4 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh7 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh8 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg1 - +[0-9]+: [0-9a-f]+ +52 FUNC +GLOBAL DEFAULT +7 _start - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh4 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg7 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: [0-9a-f]+ +136 FUNC +GLOBAL DEFAULT +7 fn2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh1 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg6 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh6 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg2 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg1 - +[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg4 +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +LOCAL +DEFAULT +UND +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 +[0-9 ]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +16 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl1 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl2 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl3 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl4 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl5 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl6 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl7 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +9 sl8 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl1 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl2 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl3 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl4 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl5 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl6 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl7 +[0-9 ]+: [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +10 bl8 +[0-9 ]+: [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +11 _DYNAMIC +[0-9 ]+: [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +12 _PROCEDURE_LINKAGE_TABLE_ +[0-9 ]+: [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +13 _GLOBAL_OFFSET_TABLE_ +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg8 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg8 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg6 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg3 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg3 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh3 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg4 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg5 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg5 +[0-9 ]+: [0-9a-f]+ +4 FUNC +GLOBAL DEFAULT +UND __tls_get_addr +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh7 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh8 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg1 +[0-9 ]+: [0-9a-f]+ +52 FUNC +GLOBAL DEFAULT +7 _start +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh4 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg7 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh5 +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start +[0-9 ]+: [0-9a-f]+ +136 FUNC +GLOBAL DEFAULT +7 fn2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +UND sG1 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh1 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg6 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +9 sg7 +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata +[0-9 ]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +9 sh6 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg2 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg1 +[0-9 ]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +10 bg4 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-alpha/tlspic.rd binutils-2.16.91.0.3/ld/testsuite/ld-alpha/tlspic.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-alpha/tlspic.rd 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-alpha/tlspic.rd 2005-08-22 12:27:45.000000000 -0700 @@ -62,11 +62,9 @@ Symbol table '.dynsym' contains [0-9]+ e .* [0-9a-f]+ 0 SECTION LOCAL DEFAULT 8 .* [0-9a-f]+ 0 SECTION LOCAL DEFAULT 9 .* [0-9a-f]+ 0 TLS GLOBAL DEFAULT 8 sg8 -.* [0-9a-f]+ 0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC .* [0-9a-f]+ 0 TLS GLOBAL DEFAULT 8 sg3 .* [0-9a-f]+ 0 TLS GLOBAL DEFAULT 8 sg4 .* [0-9a-f]+ 0 TLS GLOBAL DEFAULT 8 sg5 -.* [0-9a-f]+ 0 OBJECT GLOBAL DEFAULT ABS _PROCEDURE_LINKAGE_TABLE_ .* [0-9a-f]+ 0 NOTYPE GLOBAL DEFAULT UND __tls_get_addr .* [0-9a-f]+ 0 TLS GLOBAL DEFAULT 8 sg1 .* [0-9a-f]+ 172 FUNC GLOBAL DEFAULT 6 fn1 @@ -75,7 +73,6 @@ Symbol table '.dynsym' contains [0-9]+ e .* [0-9a-f]+ 0 TLS GLOBAL DEFAULT 8 sg6 .* [0-9a-f]+ 0 TLS GLOBAL DEFAULT 8 sg7 .* [0-9a-f]+ 0 NOTYPE GLOBAL DEFAULT ABS _edata -.* [0-9a-f]+ 0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ .* [0-9a-f]+ 0 NOTYPE GLOBAL DEFAULT ABS _end Symbol table '.symtab' contains [0-9]+ entries: @@ -105,9 +102,11 @@ Symbol table '.symtab' contains [0-9]+ e .* [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +8 sl7 .* [0-9a-f]+ +0 TLS +LOCAL +DEFAULT +8 sl8 .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +9 sH1 +.* [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +8 sh3 .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +9 sH2 .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +9 sH7 +.* [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +ABS _PROCEDURE_LINKAGE_TABLE_ .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +8 sh7 .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +8 sh8 .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +9 sH4 @@ -118,14 +117,13 @@ Symbol table '.symtab' contains [0-9]+ e .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +9 sH6 .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +9 sH8 .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +8 sh1 +.* [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +8 sh2 .* [0-9a-f]+ +0 TLS +LOCAL +HIDDEN +8 sh6 .* [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg8 -.* [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC .* [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg3 .* [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg4 .* [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg5 -.* [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ .* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr .* [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg1 .* [0-9a-f]+ +172 FUNC +GLOBAL DEFAULT +6 fn1 @@ -134,5 +132,4 @@ Symbol table '.symtab' contains [0-9]+ e .* [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg6 .* [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg7 .* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata -.* [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_ .* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-arm/mixed-app.d binutils-2.16.91.0.3/ld/testsuite/ld-arm/mixed-app.d --- binutils-2.16.91.0.2/ld/testsuite/ld-arm/mixed-app.d 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-arm/mixed-app.d 2005-08-22 12:27:45.000000000 -0700 @@ -8,7 +8,7 @@ Disassembly of section .plt: .* <.plt>: .*: e52de004 str lr, \[sp, #-4\]! - .*: e59fe004 ldr lr, \[pc, #4\] ; .* <_start-0x2c> + .*: e59fe004 ldr lr, \[pc, #4\] ; .* <_start-0x20> .*: e08fe00e add lr, pc, lr .*: e5bef008 ldr pc, \[lr, #8\]! .*: .* @@ -34,7 +34,7 @@ Disassembly of section .text: .* : .*: e1a0c00d mov ip, sp .*: e92dd800 stmdb sp!, {fp, ip, lr, pc} - .*: ebffffe. bl .* <_start-0x..> + .*: ebfffff. bl .* .*: e89d6800 ldmia sp, {fp, sp, lr} .*: e12fff1e bx lr .*: e1a00000 nop \(mov r0,r0\) diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-arm/mixed-app.sym binutils-2.16.91.0.3/ld/testsuite/ld-arm/mixed-app.sym --- binutils-2.16.91.0.2/ld/testsuite/ld-arm/mixed-app.sym 2004-11-22 12:33:33.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-arm/mixed-app.sym 2005-08-22 12:27:45.000000000 -0700 @@ -2,18 +2,17 @@ Symbol table for image: Num Buc: Value Size Type Bind Vis Ndx Name .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _edata - .. ..: 0*[^0]*.* 20 FUNC GLOBAL DEFAULT UND lib_func1 - .. ..: 0*[^0]*.* 2 FUNC GLOBAL DEFAULT UND lib_func2 - .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__ - .. ..: ........ 0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__ - .. ..: ........ 0 NOTYPE GLOBAL DEFAULT 13 _stack - .. ..: ........ 4 OBJECT GLOBAL DEFAULT 12 data_obj .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_start__ - .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_start .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _end - .. ..: .......0 0 FUNC GLOBAL DEFAULT 8 app_func2 - .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __exidx_end + .. ..: ........ 4 OBJECT GLOBAL DEFAULT 12 data_obj + .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__ + .. ..: 0*[^0]*.* 20 FUNC GLOBAL DEFAULT UND lib_func1 + .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __exidx_start .. ..: ........ 0 NOTYPE GLOBAL DEFAULT 11 __data_start + .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _stack .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __end__ - .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __exidx_start + .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_start + .. ..: .......0 0 FUNC GLOBAL DEFAULT 8 app_func2 + .. ..: 0*[^0]*.* 2 FUNC GLOBAL DEFAULT UND lib_func2 + .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__ + .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __exidx_end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-arm/mixed-lib.sym binutils-2.16.91.0.3/ld/testsuite/ld-arm/mixed-lib.sym --- binutils-2.16.91.0.2/ld/testsuite/ld-arm/mixed-lib.sym 2005-04-09 12:03:25.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-arm/mixed-lib.sym 2005-08-22 12:27:45.000000000 -0700 @@ -5,9 +5,8 @@ Symbol table for image: .. ..: .......0 20 FUNC GLOBAL DEFAULT 6 lib_func1 .. ..: .......1 2 FUNC GLOBAL DEFAULT 6 lib_func2 .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__ - .. ..: ........ 0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__ - .. ..: ........ 0 NOTYPE GLOBAL DEFAULT 10 _stack + .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _stack .. ..: ........ 4 OBJECT GLOBAL DEFAULT 9 data_obj .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_start__ .. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_start diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-arm/tls-app.d binutils-2.16.91.0.3/ld/testsuite/ld-arm/tls-app.d --- binutils-2.16.91.0.2/ld/testsuite/ld-arm/tls-app.d 2005-04-09 12:03:25.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-arm/tls-app.d 2005-08-22 12:27:45.000000000 -0700 @@ -2,17 +2,17 @@ .*: file format elf32-.*arm architecture: arm, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED -start address 0x00008274 +start address 0x00008220 Disassembly of section .text: -00008274 : - 8274: e1a00000 nop \(mov r0,r0\) - 8278: e1a00000 nop \(mov r0,r0\) - 827c: e1a0f00e mov pc, lr - 8280: 000080bc streqh r8, \[r0\], -ip - 8284: 000080b4 streqh r8, \[r0\], -r4 - 8288: 000080ac andeq r8, r0, ip, lsr #1 - 828c: 00000004 andeq r0, r0, r4 - 8290: 000080c4 andeq r8, r0, r4, asr #1 - 8294: 00000014 andeq r0, r0, r4, lsl r0 +00008220 : + 8220: e1a00000 nop \(mov r0,r0\) + 8224: e1a00000 nop \(mov r0,r0\) + 8228: e1a0f00e mov pc, lr + 822c: 000080bc streqh r8, \[r0\], -ip + 8230: 000080b4 streqh r8, \[r0\], -r4 + 8234: 000080ac andeq r8, r0, ip, lsr #1 + 8238: 00000004 andeq r0, r0, r4 + 823c: 000080c4 andeq r8, r0, r4, asr #1 + 8240: 00000014 andeq r0, r0, r4, lsl r0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-arm/tls-app.r binutils-2.16.91.0.3/ld/testsuite/ld-arm/tls-app.r --- binutils-2.16.91.0.2/ld/testsuite/ld-arm/tls-app.r 2005-04-09 12:03:25.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-arm/tls-app.r 2005-08-22 12:27:45.000000000 -0700 @@ -3,10 +3,8 @@ DYNAMIC RELOCATION RECORDS OFFSET TYPE VALUE -00010334 R_ARM_TLS_DTPMOD32 app_gd -00010338 R_ARM_TLS_DTPOFF32 app_gd -0001033c R_ARM_TLS_DTPMOD32 lib_gd -00010340 R_ARM_TLS_DTPOFF32 lib_gd -00010344 R_ARM_TLS_TPOFF32 app_ie - - +[0-9a-f]+ R_ARM_TLS_DTPMOD32 app_gd +[0-9a-f]+ R_ARM_TLS_DTPOFF32 app_gd +[0-9a-f]+ R_ARM_TLS_DTPMOD32 lib_gd +[0-9a-f]+ R_ARM_TLS_DTPOFF32 lib_gd +[0-9a-f]+ R_ARM_TLS_TPOFF32 app_ie diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-arm/tls-lib.d binutils-2.16.91.0.3/ld/testsuite/ld-arm/tls-lib.d --- binutils-2.16.91.0.2/ld/testsuite/ld-arm/tls-lib.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-arm/tls-lib.d 2005-08-22 12:27:45.000000000 -0700 @@ -6,10 +6,10 @@ start address 0x.* Disassembly of section .text: -00000314 : - 314: e1a00000 nop \(mov r0,r0\) - 318: e1a00000 nop \(mov r0,r0\) - 31c: e1a0f00e mov pc, lr - 320: 00008098 muleq r0, r8, r0 - 324: 0000808c andeq r8, r0, ip, lsl #1 - 328: 00000004 andeq r0, r0, r4 +.* : + .*: e1a00000 nop \(mov r0,r0\) + .*: e1a00000 nop \(mov r0,r0\) + .*: e1a0f00e mov pc, lr + .*: 00008098 muleq r0, r8, r0 + .*: 0000808c andeq r8, r0, ip, lsl #1 + .*: 00000004 andeq r0, r0, r4 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-arm/tls-lib.r binutils-2.16.91.0.3/ld/testsuite/ld-arm/tls-lib.r --- binutils-2.16.91.0.2/ld/testsuite/ld-arm/tls-lib.r 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-arm/tls-lib.r 2005-08-22 12:27:45.000000000 -0700 @@ -3,8 +3,8 @@ DYNAMIC RELOCATION RECORDS OFFSET TYPE VALUE -000083b0 R_ARM_TLS_DTPMOD32 \*ABS\* -000083b8 R_ARM_TLS_DTPMOD32 lib_gd -000083bc R_ARM_TLS_DTPOFF32 lib_gd +.* R_ARM_TLS_DTPMOD32 \*ABS\* +.* R_ARM_TLS_DTPMOD32 lib_gd +.* R_ARM_TLS_DTPOFF32 lib_gd diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/dso-1.s binutils-2.16.91.0.3/ld/testsuite/ld-cris/dso-1.s --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/dso-1.s 2002-02-03 11:22:33.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/dso-1.s 2005-08-22 12:27:45.000000000 -0700 @@ -1,6 +1,7 @@ .text .global dsofn .type dsofn,@function + .p2align 1 dsofn: nop .Lfe: diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn1.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn1.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn1.d 2005-08-22 12:27:45.000000000 -0700 @@ -9,6 +9,6 @@ DYNAMIC SYMBOL TABLE: #... -00080... g DF .text 00000002 expfn -00082... g DO .data 00000000 expobj +00080... g DF .text 0+2 expfn +00082... g DO .data 0+4 expobj #pass diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn1.s binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn1.s --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn1.s 2002-02-03 11:22:33.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn1.s 2005-08-22 12:27:45.000000000 -0700 @@ -1,6 +1,7 @@ .data .global expobj .type expobj,@object + .size expobj,4 expobj: .dword 0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn5.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn5.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn5.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn5.d 2005-08-22 12:27:45.000000000 -0700 @@ -9,5 +9,5 @@ .*: file format elf32-cris Contents of section \.got: - 82260 f8210800 00000000 00000000 dc010800 .* - 82270 74220800 .* + 82244 dc210800 00000000 00000000 bf010800 .* + 82254 58220800 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn6.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn6.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn6.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn6.d 2005-08-22 12:27:45.000000000 -0700 @@ -9,5 +9,5 @@ .*: file format elf32-cris Contents of section \.got: - 822bc 54220800 00000000 00000000 00000000 .* - 822cc 24020800 d4220800 .* + 822a0 38220800 00000000 00000000 00000000 .* + 822b0 07020800 b8220800 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn7.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn7.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/expdyn7.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/expdyn7.d 2005-08-22 12:27:45.000000000 -0700 @@ -9,5 +9,5 @@ .*: file format elf32-cris Contents of section \.got: - 822b8 50220800 00000000 00000000 d4220800 .* - 822c8 21020800 d0220800 .* + 8229c 34220800 00000000 00000000 b8220800 .* + 822ac 04020800 b4220800 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/gotplt1.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/gotplt1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/gotplt1.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/gotplt1.d 2005-08-22 12:27:45.000000000 -0700 @@ -19,30 +19,30 @@ DYNAMIC RELOCATION RECORDS OFFSET TYPE VALUE -0008229c R_CRIS_JUMP_SLOT dsofn +00082280 R_CRIS_JUMP_SLOT dsofn Contents of section .* #... Contents of section \.rela\.plt: - 801ac 9c220800 0b050000 00000000 .* + 80190 80220800 0b040000 00000000 .* Contents of section \.plt: - 801b8 fce17e7e 7f0d9422 0800307a 7f0d9822 .* - 801c8 08003009 7f0d9c22 08003009 3f7e0000 .* - 801d8 00002ffe d8ffffff .* + 8019c fce17e7e 7f0d7822 0800307a 7f0d7c22 .* + 801ac 08003009 7f0d8022 08003009 3f7e0000 .* + 801bc 00002ffe d8ffffff .* Contents of section \.text: - 801e0 5f1d0c00 30096f1d 0c000000 30090000 .* - 801f0 6f0d1000 0000611a 6f2ecc01 08000000 .* - 80200 6f3e70df ffff0000 .* + 801c4 5f1d0c00 30096f1d 0c000000 30090000 .* + 801d4 6f0d1000 0000611a 6f2eb001 08000000 .* + 801e4 6f3e70df ffff0000 .* Contents of section \.dynamic: - 82208 01000000 01000000 04000000 e4000800 .* - 82218 05000000 70010800 06000000 10010800 .* - 82228 0a000000 3b000000 0b000000 10000000 .* - 82238 15000000 00000000 03000000 90220800 .* - 82248 02000000 0c000000 14000000 07000000 .* - 82258 17000000 ac010800 00000000 00000000 .* - 82268 00000000 00000000 00000000 00000000 .* - 82278 00000000 00000000 00000000 00000000 .* - 82288 00000000 00000000 .* + 821ec 01000000 01000000 04000000 e4000800 .* + 821fc 05000000 5c010800 06000000 0c010800 .* + 8220c 0a000000 32000000 0b000000 10000000 .* + 8221c 15000000 00000000 03000000 74220800 .* + 8222c 02000000 0c000000 14000000 07000000 .* + 8223c 17000000 90010800 00000000 00000000 .* + 8224c 00000000 00000000 00000000 00000000 .* + 8225c 00000000 00000000 00000000 00000000 .* + 8226c 00000000 00000000 .* Contents of section \.got: - 82290 08220800 00000000 00000000 d4010800 .* - 822a0 cc010800 .* + 82274 ec210800 00000000 00000000 b8010800 .* + 82284 b0010800 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/gotplt2.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/gotplt2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/gotplt2.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/gotplt2.d 2005-08-22 12:27:45.000000000 -0700 @@ -16,22 +16,22 @@ DYNAMIC RELOCATION RECORDS OFFSET TYPE VALUE -0000224c R_CRIS_GLOB_DAT dsofn +00002230 R_CRIS_GLOB_DAT dsofn Contents of section .* #... Contents of section \.rela\.got: - 01a4 4c220000 0a090000 00000000 .* + 0188 30220000 0a080000 00000000 .* Contents of section \.text: - 01b0 5f1d0c00 30096f1d 0c000000 30090000 .* - 01c0 6f0d0c00 0000611a 6f3e88df ffff0000 .* + 0194 5f1d0c00 30096f1d 0c000000 30090000 .* + 01a4 6f0d0c00 0000611a 6f3e88df ffff0000 .* Contents of section \.dynamic: - 21d0 04000000 94000000 05000000 70010000 .* - 21e0 06000000 d0000000 0a000000 33000000 .* - 21f0 0b000000 10000000 07000000 a4010000 .* - 2200 08000000 0c000000 09000000 0c000000 .* - 2210 00000000 00000000 00000000 00000000 .* - 2220 00000000 00000000 00000000 00000000 .* - 2230 00000000 00000000 00000000 00000000 .* + 21b4 04000000 94000000 05000000 5c010000 .* + 21c4 06000000 cc000000 0a000000 2a000000 .* + 21d4 0b000000 10000000 07000000 88010000 .* + 21e4 08000000 0c000000 09000000 0c000000 .* + 21f4 00000000 00000000 00000000 00000000 .* + 2204 00000000 00000000 00000000 00000000 .* + 2214 00000000 00000000 00000000 00000000 .* Contents of section \.got: - 2240 d0210000 00000000 00000000 00000000 .* + 2224 b4210000 00000000 00000000 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/gotplt3.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/gotplt3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/gotplt3.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/gotplt3.d 2005-08-22 12:27:45.000000000 -0700 @@ -13,23 +13,23 @@ DYNAMIC RELOCATION RECORDS OFFSET TYPE VALUE -00002250 R_CRIS_GLOB_DAT dsofn +00002234 R_CRIS_GLOB_DAT dsofn Contents of section .* #... Contents of section \.rela\.got: - 01a4 50220000 0a090000 00000000 .* + 0188 34220000 0a080000 00000000 .* Contents of section \.text: - 01b0 5f1d0c00 30096f1d 0c000000 30090000 .* - 01c0 6f0d0c00 0000611a 6f3e84df ffff0000 .* - 01d0 0f050000 .* + 0194 5f1d0c00 30096f1d 0c000000 30090000 .* + 01a4 6f0d0c00 0000611a 6f3e84df ffff0000 .* + 01b4 0f050000 .* Contents of section \.dynamic: - 21d4 04000000 94000000 05000000 70010000 .* - 21e4 06000000 d0000000 0a000000 33000000 .* - 21f4 0b000000 10000000 07000000 a4010000 .* - 2204 08000000 0c000000 09000000 0c000000 .* - 2214 00000000 00000000 00000000 00000000 .* - 2224 00000000 00000000 00000000 00000000 .* - 2234 00000000 00000000 00000000 00000000 .* + 21b8 04000000 94000000 05000000 5c010000 .* + 21c8 06000000 cc000000 0a000000 2a000000 .* + 21d8 0b000000 10000000 07000000 88010000 .* + 21e8 08000000 0c000000 09000000 0c000000 .* + 21f8 00000000 00000000 00000000 00000000 .* + 2208 00000000 00000000 00000000 00000000 .* + 2218 00000000 00000000 00000000 00000000 .* Contents of section \.got: - 2244 d4210000 00000000 00000000 00000000 .* + 2228 b8210000 00000000 00000000 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/hiddef1.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/hiddef1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/hiddef1.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/hiddef1.d 2005-08-22 12:27:45.000000000 -0700 @@ -22,7 +22,7 @@ Relocation section '\.rela\.dyn' at offs #... [0-9a-f]+ 0+c R_CRIS_RELATIVE [0-9a-f]+ #... -Symbol table '\.dynsym' contains 7 entries: +Symbol table '\.dynsym' contains 6 entries: #... Symbol table '\.symtab' contains 19 entries: #pass diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-10.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-10.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-10.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-10.d 2005-08-22 12:27:45.000000000 -0700 @@ -9,29 +9,29 @@ Program Header: LOAD off 0x0+ vaddr 0x0+ paddr 0x0+ align 2\*\*13 - filesz 0x0+160 memsz 0x0+160 flags r-x - LOAD off 0x0+160 vaddr 0x0+2160 paddr 0x0+2160 align 2\*\*13 + filesz 0x0+144 memsz 0x0+144 flags r-x + LOAD off 0x0+144 vaddr 0x0+2144 paddr 0x0+2144 align 2\*\*13 filesz 0x0+64 memsz 0x0+64 flags rw- - DYNAMIC off 0x0+160 vaddr 0x0+2160 paddr 0x0+2160 align 2\*\*2 + DYNAMIC off 0x0+144 vaddr 0x0+2144 paddr 0x0+2144 align 2\*\*2 filesz 0x0+58 memsz 0x0+58 flags rw- Dynamic Section: HASH 0x94 - STRTAB 0x134 - SYMTAB 0xc4 - STRSZ 0x28 + STRTAB 0x120 + SYMTAB 0xc0 + STRSZ 0x1f SYMENT 0x10 private flags = 2: \[v32\] Sections: Idx Name Size VMA LMA File off Algn - 0 \.hash 0+30 0+94 0+94 0+94 2\*\*2 + 0 \.hash 0+2c 0+94 0+94 0+94 2\*\*2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 \.dynsym 0+70 0+c4 0+c4 0+c4 2\*\*2 + 1 \.dynsym 0+60 0+c0 0+c0 0+c0 2\*\*2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 2 \.dynstr 0+28 0+134 0+134 0+134 2\*\*0 + 2 \.dynstr 0+1f 0+120 0+120 0+120 2\*\*0 CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 \.text 0+4 0+15c 0+15c 0+15c 2\*\*0 + 3 \.text 0+4 0+140 0+140 0+140 2\*\*1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 4 \.dynamic 0+58 0+2160 0+2160 0+160 2\*\*2 + 4 \.dynamic 0+58 0+2144 0+2144 0+144 2\*\*2 CONTENTS, ALLOC, LOAD, DATA - 5 \.got 0+c 0+21b8 0+21b8 0+1b8 2\*\*2 + 5 \.got 0+c 0+219c 0+219c 0+19c 2\*\*2 CONTENTS, ALLOC, LOAD, DATA diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-11.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-11.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-11.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-11.d 2005-08-22 12:27:45.000000000 -0700 @@ -8,20 +8,20 @@ DYNAMIC SYMBOL TABLE: #... -0+1bc g DF \.text 0+8 dsofn3 +0+1a0 g DF \.text 0+8 dsofn3 #... -0+1b8 g DF \.text 0+ dsofn +0+19c g DF \.text 0+ dsofn #... Contents of section \.rela\.plt: - 0178 48220000 0b070000 00000000 .* + 015c 2c220000 0b060000 00000000 .* Contents of section \.plt: - 0184 84e20401 7e7a3f7a 04f26ffa bf09b005 .* - 0194 00000000 00000000 00006f0d 0c000000 .* - 01a4 6ffabf09 b0053f7e 00000000 bf0ed4ff .* - 01b4 ffffb005 .* + 0168 84e20401 7e7a3f7a 04f26ffa bf09b005 .* + 0178 00000000 00000000 00006f0d 0c000000 .* + 0188 6ffabf09 b0053f7e 00000000 bf0ed4ff .* + 0198 ffffb005 .* Contents of section \.text: - 01b8 b0050000 bfbee2ff ffffb005 .* + 019c b0050000 bfbee2ff ffffb005 .* Contents of section \.dynamic: #... Contents of section \.got: - 223c c4210000 00000000 00000000 aa010000 .* + 2220 a8210000 00000000 00000000 8e010000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-12.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-12.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-12.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-12.d 2005-08-22 12:27:45.000000000 -0700 @@ -12,40 +12,40 @@ DYNAMIC SYMBOL TABLE: #... -0+26e g DF \.text 0+12 dsofn4 -0+264 g DF \.text 0+2 expfn -0+232c g DO \.data 0+ expobj +0+252 g DF \.text 0+12 dsofn4 +0+248 g DF \.text 0+2 expfn +0+2310 g DO \.data 0+4 expobj #... -0+266 g DF \.text 0+8 dsofn3 +0+24a g DF \.text 0+8 dsofn3 #... 0+ D \*UND\* 0+ dsofn #... Contents of section \.rela\.got: - 01f0 28230000 0a060000 00000000 .* + 01d4 0c230000 0a050000 00000000 .* Contents of section \.rela\.plt: - 01fc 20230000 0b040000 00000000 24230000 .* - 020c 0b0c0000 00000000 .* + 01e0 04230000 0b030000 00000000 08230000 .* + 01f0 0b0b0000 00000000 .* Contents of section \.plt: - 0214 84e20401 7e7a3f7a 04f26ffa bf09b005 .* - 0224 00000000 00000000 00006f0d 0c000000 .* - 0234 6ffabf09 b0053f7e 00000000 bf0ed4ff .* - 0244 ffffb005 6f0d1000 00006ffa bf09b005 .* - 0254 3f7e0c00 0000bf0e baffffff b005 .* + 01f8 84e20401 7e7a3f7a 04f26ffa bf09b005 .* + 0208 00000000 00000000 00006f0d 0c000000 .* + 0218 6ffabf09 b0053f7e 00000000 bf0ed4ff .* + 0228 ffffb005 6f0d1000 00006ffa bf09b005 .* + 0238 3f7e0c00 0000bf0e baffffff b005 .* Contents of section \.text: - 0262 b005b005 bfbee2ff ffffb005 7f0da620 .* - 0272 00005f0d 1400bfbe b6ffffff b0050000 .* + 0246 b005b005 bfbee2ff ffffb005 7f0da620 .* + 0256 00005f0d 1400bfbe b6ffffff b0050000 .* Contents of section \.dynamic: - 2284 04000000 94000000 05000000 ac010000 .* - 2294 06000000 dc000000 0a000000 43000000 .* - 22a4 0b000000 10000000 03000000 14230000 .* - 22b4 02000000 18000000 14000000 07000000 .* - 22c4 17000000 fc010000 07000000 f0010000 .* - 22d4 08000000 0c000000 09000000 0c000000 .* - 22e4 00000000 00000000 00000000 00000000 .* - 22f4 00000000 00000000 00000000 00000000 .* - 2304 00000000 00000000 00000000 00000000 .* + 2268 04000000 94000000 05000000 98010000 .* + 2278 06000000 d8000000 0a000000 3a000000 .* + 2288 0b000000 10000000 03000000 f8220000 .* + 2298 02000000 18000000 14000000 07000000 .* + 22a8 17000000 e0010000 07000000 d4010000 .* + 22b8 08000000 0c000000 09000000 0c000000 .* + 22c8 00000000 00000000 00000000 00000000 .* + 22d8 00000000 00000000 00000000 00000000 .* + 22e8 00000000 00000000 00000000 00000000 .* Contents of section \.got: - 2314 84220000 00000000 00000000 3a020000 .* - 2324 54020000 00000000 .* + 22f8 68220000 00000000 00000000 1e020000 .* + 2308 38020000 00000000 .* Contents of section \.data: - 232c 00000000 .* + 2310 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-13.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-13.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-13.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-13.d 2005-08-22 12:27:45.000000000 -0700 @@ -17,7 +17,7 @@ Dynamic section at offset 0x[0-9a-f][0-9 0x0+4 \(HASH\)[ ]+0x94 0x0+5 \(STRTAB\)[ ]+0x[12][0-9a-f][0-9a-f] 0x0+6 \(SYMTAB\)[ ]+0x[0-9a-f][0-9a-f] - 0x0+a \(STRSZ\)[ ]+47 \(bytes\) + 0x0+a \(STRSZ\)[ ]+38 \(bytes\) 0x0+b \(SYMENT\)[ ]+16 \(bytes\) 0x0+7 \(RELA\)[ ]+0x[12][0-9a-f][0-9a-f] 0x0+8 \(RELASZ\)[ ]+12 \(bytes\) diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-14.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-14.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-14.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-14.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,12 +7,12 @@ # Checking that a bsr to a non-PLT-decorated nonvisible function # doesn't make the DSO textrel. -Dynamic section at offset 0x188 contains 6 entries: +Dynamic section at offset 0x16c contains 6 entries: Tag[ ]+Type[ ]+Name/Value 0x0+4 \(HASH\)[ ]+0x94 - 0x0+5 \(STRTAB\)[ ]+0x148 - 0x0+6 \(SYMTAB\)[ ]+0xc8 - 0x0+a \(STRSZ\)[ ]+47 \(bytes\) + 0x0+5 \(STRTAB\)[ ]+0x134 + 0x0+6 \(SYMTAB\)[ ]+0xc4 + 0x0+a \(STRSZ\)[ ]+38 \(bytes\) 0x0+b \(SYMENT\)[ ]+16 \(bytes\) 0x0+ \(NULL\)[ ]+0x0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-2.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/libdso-2.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/libdso-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -51,7 +51,7 @@ Symbol table '\.symtab' contains 21 entr 10: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 10 11: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 11 12: [0-9a-f]+ 0 SECTION LOCAL DEFAULT 12 - 13: 0+216c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 13: 0+216c 0 OBJECT LOCAL HIDDEN ABS _DYNAMIC 14: 0+2204 0 NOTYPE LOCAL DEFAULT ABS __bss_start 15: 0+2204 0 NOTYPE LOCAL DEFAULT ABS _edata 16: 0+21f4 0 OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_ diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/locref1.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/locref1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/locref1.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/locref1.d 2005-08-22 12:27:45.000000000 -0700 @@ -11,10 +11,9 @@ SYMBOL TABLE: #... +0+82084 l O \.got 0+ \.hidden _GLOBAL_OFFSET_TABLE_ 0+80076 g F \.text 0+2 expfn -0+82090 g O \.data 0+ expobj -#... -0+82084 g O \.got 0+ \.hidden _GLOBAL_OFFSET_TABLE_ +0+82090 g O \.data 0+4 expobj #... Disassembly of section \.text: #... diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/locref2.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/locref2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/locref2.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/locref2.d 2005-08-22 12:27:45.000000000 -0700 @@ -11,11 +11,10 @@ SYMBOL TABLE: #... +0+82088 l O \.got 0+ \.hidden _GLOBAL_OFFSET_TABLE_ 0+ w \*UND\* 0+ expfn 0+ w \*UND\* 0+ expobj #... -0+82088 g O \.got 0+ \.hidden _GLOBAL_OFFSET_TABLE_ -#... Disassembly of section \.text: #... 0+8007c : diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/pv32-1.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/pv32-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/pv32-1.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/pv32-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -8,34 +8,33 @@ .*: file format elf32-cris DYNAMIC SYMBOL TABLE: -0+8228c g DO \*ABS\* 0+ _DYNAMIC -0+8023a DF \*UND\* 0+2 expfn -0+82340 g DO \.bss 0+4 expobj -0+82340 g D \*ABS\* 0+ __bss_start -0+80254 DF \*UND\* 0+8 dsofn3 -0+82340 g D \*ABS\* 0+ _edata -0+82360 g D \*ABS\* 0+ _end -0+80280 g DF \.text 0+8 dsofn +0+8021e DF \*UND\* 0+2 expfn +0+82324 g DO \.bss 0+4 expobj +0+82324 g D \*ABS\* 0+ __bss_start +0+80238 DF \*UND\* 0+8 dsofn3 +0+82324 g D \*ABS\* 0+ _edata +0+82340 g D \*ABS\* 0+ _end +0+80264 g DF \.text 0+8 dsofn Contents of section \.interp: 800d4 2f6c6962 2f6c642e 736f2e31 00 .* #... Contents of section \.rela\.dyn: - 801fc 40230800 09030000 00000000 .* + 801e0 24230800 09020000 00000000 .* Contents of section \.rela\.plt: - 80208 38230800 0b020000 00000000 3c230800 .* - 80218 0b050000 00000000 .* + 801ec 1c230800 0b010000 00000000 20230800 .* + 801fc 0b040000 00000000 .* Contents of section \.plt: - 80220 84e26ffe 30230800 7e7a3f7a 04f26ffa .* - 80230 bf09b005 00000000 00006ffe 38230800 .* - 80240 6ffabf09 b0053f7e 00000000 bf0ed4ff .* - 80250 ffffb005 6ffe3c23 08006ffa bf09b005 .* - 80260 3f7e0c00 0000bf0e baffffff b005 .* + 80204 84e26ffe 14230800 7e7a3f7a 04f26ffa .* + 80214 bf09b005 00000000 00006ffe 1c230800 .* + 80224 6ffabf09 b0053f7e 00000000 bf0ed4ff .* + 80234 ffffb005 6ffe2023 08006ffa bf09b005 .* + 80244 3f7e0c00 0000bf0e baffffff b005 .* Contents of section \.text: - 8026e b005bfbe caffffff b005bfbe dcffffff .* - 8027e b0056fae 40230800 b0050000 .* + 80252 b005bfbe caffffff b005bfbe dcffffff .* + 80262 b0056fae 24230800 b0050000 .* Contents of section \.dynamic: #... Contents of section \.got: - 8232c 8c220800 00000000 00000000 46020800 .* - 8233c 60020800 .* + 82310 70220800 00000000 00000000 2a020800 .* + 82320 44020800 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/pv32.s binutils-2.16.91.0.3/ld/testsuite/ld-cris/pv32.s --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/pv32.s 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/pv32.s 2005-08-22 12:27:45.000000000 -0700 @@ -14,8 +14,6 @@ pfn: .Lfe1: .size pfn,.Lfe1-pfn - .global expobj - .size expobj,4 .global dsofn .type dsofn,@function dsofn: diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/v32-ba-1.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/v32-ba-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/v32-ba-1.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/v32-ba-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -14,5 +14,5 @@ Disassembly of section \.text: 0+8 : 8: 4312 moveq 3,r1 - a: bf0e f6ff ffff ba 0 <(a|___init__start)> + a: bf0e f6ff ffff ba 0 <[^>]*> 10: 4db2 moveq 13,r11 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-cris/weakref2.d binutils-2.16.91.0.3/ld/testsuite/ld-cris/weakref2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-cris/weakref2.d 2005-04-09 12:03:26.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-cris/weakref2.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,4 +7,4 @@ .*: file format elf32-cris Contents of section \.got: - 82204 9c210800 00000000 00000000 00000000 .* + 821e4 7c210800 00000000 00000000 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-d10v/default_layout.d binutils-2.16.91.0.3/ld/testsuite/ld-d10v/default_layout.d --- binutils-2.16.91.0.2/ld/testsuite/ld-d10v/default_layout.d 2005-04-29 10:50:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-d10v/default_layout.d 2005-08-22 12:27:45.000000000 -0700 @@ -8,5 +8,3 @@ Sections: Idx Name Size VMA LMA File off Algn 0 \.text 00000004 01014000 01014000 00001000 2\*\*0 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 \.stack 00000000 0200bffc 0200bffc .* 2\*\*0 - CONTENTS diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elf/elf.exp binutils-2.16.91.0.3/ld/testsuite/ld-elf/elf.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-elf/elf.exp 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elf/elf.exp 2005-08-22 12:27:45.000000000 -0700 @@ -43,4 +43,5 @@ set array_tests { {"static fini array" "-static" "" {fini.c} "fini" "fini.out"} } -run_ld_link_exec_tests $array_tests +# NetBSD ELF systems do not currently support the .*_array sections. +run_ld_link_exec_tests [list "*-*-netbsdelf*"] $array_tests diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elf/empty.s binutils-2.16.91.0.3/ld/testsuite/ld-elf/empty.s --- binutils-2.16.91.0.2/ld/testsuite/ld-elf/empty.s 2005-04-29 10:50:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elf/empty.s 2005-08-22 12:27:45.000000000 -0700 @@ -1,10 +1,16 @@ .section .bss bar: .text + .type start,"function" + .global start +start: .type _start,"function" .global _start _start: .type __start,"function" .global __start __start: + .type main,"function" + .global main +main: .long 0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elf/frame.exp binutils-2.16.91.0.3/ld/testsuite/ld-elf/frame.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-elf/frame.exp 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elf/frame.exp 2005-08-22 12:27:45.000000000 -0700 @@ -35,6 +35,12 @@ if { [istarget "sh*-*-elf*"] } { return } +# ??? These targets have their own .tbss section, with different meaning +# to the usual ELF .tbss. +if { [istarget "hppa64-*-*"] || [istarget "v850-*-*"] } { + return +} + set test1 "read-only .eh_frame section" set test2 "read-only .gcc_except_table section" diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elf/group1.d binutils-2.16.91.0.3/ld/testsuite/ld-elf/group1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-elf/group1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elf/group1.d 2005-08-22 12:27:45.000000000 -0700 @@ -2,6 +2,7 @@ #source: group1b.s #ld: -T group.ld #readelf: -s +#xfail: "arc-*-*" "d30v-*-*" "dlx-*-*" "i960-*-*" "or32-*-*" "pj-*-*" Symbol table '.symtab' contains .* entries: #... .*: 0[0]*1000 0 (NOTYPE|OBJECT) WEAK DEFAULT . foo diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elf/merge2.d binutils-2.16.91.0.3/ld/testsuite/ld-elf/merge2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-elf/merge2.d 2004-01-14 13:07:53.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elf/merge2.d 2005-08-22 12:27:45.000000000 -0700 @@ -1,6 +1,8 @@ #source: merge2.s #ld: -T merge.ld #objdump: -s +#xfail: "arc-*-*" "d30v-*-*" "dlx-*-*" "hppa64-*-*" +#xfail: "i960-*-*" "ip2k-*-*" "iq2000-*-*" "or32-*-*" "pj-*-*" .*: file format .*elf.* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elf/merge.d binutils-2.16.91.0.3/ld/testsuite/ld-elf/merge.d --- binutils-2.16.91.0.2/ld/testsuite/ld-elf/merge.d 2004-11-22 12:33:33.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elf/merge.d 2005-08-22 12:27:45.000000000 -0700 @@ -1,10 +1,11 @@ #source: merge.s #ld: -T merge.ld #objdump: -s -#xfail: "arc-*-*" "avr-*-*" "cris-*-*" "dlx-*-*" "fr30-*-*" "frv-*-*" -#xfail: "hppa*-*-*" "h8300-*-*" "i960-*-*" "ip2k-*-*" "m32r-*-*" "mcore-*-*" -#xfail: "mn10*-*-*" "mips*-*-*" "openrisc-*-*" "pj-*-*" "sparc*-*-*" -#xfail: "xtensa-*-*" "crisv32-*-*" +#xfail: "arc-*-*" "avr-*-*" "cris*-*-*" "crx-*-*" "d10v-*-*" "d30v-*-*" +#xfail: "dlx-*-*" "fr30-*-*" "frv-*-*" "hppa*-*-*" "h8300-*-*" +#xfail: "i370-*-*" "i860-*-*" "i960-*-*" "ip2k-*-*" "iq2000-*-*" +#xfail: "mcore-*-*" "mn102*-*-*" "mips*-*-*" "ms1-*-*" "msp430-*-*" +#xfail: "or32-*-*" "pj-*-*" "sparc*-*-*" "vax-*-*" "xstormy16-*-*" "xtensa-*-*" .*: file format .*elf.* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elf/warn1.d binutils-2.16.91.0.3/ld/testsuite/ld-elf/warn1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-elf/warn1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elf/warn1.d 2005-08-22 12:27:45.000000000 -0700 @@ -5,6 +5,7 @@ #warning: ^[^\\n]*\): warning: witty one-liner$ #readelf: -s #notarget: "sparc64-*-solaris2*" "sparcv9-*-solaris2*" +#xfail: "arc-*-*" "d30v-*-*" "dlx-*-*" "i960-*-*" "or32-*-*" "pj-*-*" # Check that warnings are generated for the .gnu.warning.SYMBOL # construct and that the symbol still appears as expected. diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers30.c binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers30.c --- binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers30.c 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers30.c 2005-08-22 12:27:45.000000000 -0700 @@ -0,0 +1,7 @@ +void global (void) {} +void local (void) {} +void foo (void) {} +void bar (void) {} +void info (void) {} +void baz (void) __asm ("extern"); +void baz (void) {} diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers30.dsym binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers30.dsym --- binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers30.dsym 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers30.dsym 2005-08-22 12:27:45.000000000 -0700 @@ -0,0 +1,5 @@ +[0]* g DO \*ABS\* [0]* VERS_30.0 VERS_30.0 +[0-9a-f]* g DF (.text|\*ABS\*) [0-9a-f]* VERS_30.0 global +[0-9a-f]* g DF (.text|\*ABS\*) [0-9a-f]* VERS_30.0 foo +[0-9a-f]* g DF (.text|\*ABS\*) [0-9a-f]* VERS_30.0 info +[0-9a-f]* g DF (.text|\*ABS\*) [0-9a-f]* VERS_30.0 extern diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers30.map binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers30.map --- binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers30.map 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers30.map 2005-08-22 12:27:45.000000000 -0700 @@ -0,0 +1,6 @@ +VERS_30.0 { + global: + foo; info; global; extern "C" { extern; }; + local: + local; bar; *; +}; diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers30.ver binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers30.ver --- binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers30.ver 1969-12-31 16:00:00.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers30.ver 2005-08-22 12:27:45.000000000 -0700 @@ -0,0 +1,4 @@ +Version definitions: +1 0x01 0x0966695f vers30.so +2 0x00 0x079239b0 VERS_30.0 + diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers.exp binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-elfvers/vers.exp 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elfvers/vers.exp 2005-08-22 12:27:45.000000000 -0700 @@ -960,3 +960,7 @@ build_vers_lib_pic "vers28a" vers28a.c v build_vers_lib_pic "vers28b" vers28b.c vers28b "" vers28b.map vers28b.ver vers28b.dsym "" build_vers_lib_pic "vers28c" vers28c.c vers28c "vers28b.so vers28a.so" "" vers28c.ver vers28c.dsym "" build_vers_lib_pic_flags "vers29" vers29.c vers29 "" "" vers29.ver vers29.dsym "" "--default-symver" + +# Test #30 - test handling of symbol names global, local and extern in the +# version script. +build_vers_lib_pic "vers30" vers30.c vers30 "" vers30.map vers30.ver vers30.dsym "" diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elfweak/size2a.s binutils-2.16.91.0.3/ld/testsuite/ld-elfweak/size2a.s --- binutils-2.16.91.0.2/ld/testsuite/ld-elfweak/size2a.s 2005-05-10 15:46:53.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elfweak/size2a.s 2005-08-22 12:27:45.000000000 -0700 @@ -4,3 +4,9 @@ _start: .byte 0 .size _start, 1 + + .weak foo + .type foo, "function" +foo: + .byte 0 + .size foo, 1 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elfweak/size2b.s binutils-2.16.91.0.3/ld/testsuite/ld-elfweak/size2b.s --- binutils-2.16.91.0.2/ld/testsuite/ld-elfweak/size2b.s 2005-05-10 15:46:53.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elfweak/size2b.s 2005-08-22 12:27:45.000000000 -0700 @@ -5,3 +5,10 @@ _start: .byte 0 .byte 0 .size _start, 2 + + .weak foo + .type foo, "function" +foo: + .byte 0 + .byte 0 + .size foo, 2 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-elfweak/size2.d binutils-2.16.91.0.3/ld/testsuite/ld-elfweak/size2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-elfweak/size2.d 2005-05-10 15:46:53.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-elfweak/size2.d 2005-08-22 12:27:45.000000000 -0700 @@ -4,5 +4,7 @@ #readelf: -s Symbol table '.symtab' contains .* entries: #... - .*: [0-9a-f]* *1 *FUNC *GLOBAL *DEFAULT *[0-9] *_start + .*: [0-9a-f]* +1 +FUNC +GLOBAL +DEFAULT +[0-9] +_start +#... + .*: [0-9a-f]* +1 +FUNC +WEAK +DEFAULT +[0-9] +foo #... diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,51 +7,51 @@ Disassembly of section \.text: -00000340 : - 340: 80 3c 00 01 call 344 <\.F0> +[0-9a-f ]+ : +[0-9a-f ]+: 80 3c 00 01 call [0-9a-f]+ <\.F0> -00000344 <\.F0>: - 344: 80 40 f0 0c addi gr15,12,gr0 - 348: 80 fc 00 0c setlos 0xc,gr0 - 34c: 80 f4 00 0c setlo 0xc,gr0 - 350: 80 f8 00 00 sethi hi\(0x0\),gr0 - 354: 80 40 f0 10 addi gr15,16,gr0 - 358: 80 fc 00 10 setlos 0x10,gr0 - 35c: 80 f4 00 10 setlo 0x10,gr0 - 360: 80 f8 00 00 sethi hi\(0x0\),gr0 - 364: 80 40 ff f8 addi gr15,-8,gr0 - 368: 80 fc ff f8 setlos 0xf*fffffff8,gr0 - 36c: 80 f4 ff f8 setlo 0xfff8,gr0 - 370: 80 f8 ff ff sethi 0xffff,gr0 - 374: 80 40 ff ec addi gr15,-20,gr0 - 378: 80 fc ff ec setlos 0xf*ffffffec,gr0 - 37c: 80 f4 ff ec setlo 0xffec,gr0 - 380: 80 f8 ff ff sethi 0xffff,gr0 - 384: 80 f4 00 14 setlo 0x14,gr0 - 388: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+<\.F0>: +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 0c setlos 0xc,gr0 +[0-9a-f ]+: 80 f4 00 0c setlo 0xc,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 10 setlos 0x10,gr0 +[0-9a-f ]+: 80 f4 00 10 setlo 0x10,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f8 setlos 0xf+ff8,gr0 +[0-9a-f ]+: 80 f4 ff f8 setlo 0xfff8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff ec addi gr15,-20,gr0 +[0-9a-f ]+: 80 fc ff ec setlos 0xf+fec,gr0 +[0-9a-f ]+: 80 f4 ff ec setlo 0xffec,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 Disassembly of section \.data: -00004408 : - 4408: 00 00 00 04 add\.p gr0,gr4,gr0 - 4408: R_FRV_32 \.data - -0000440c <\.D0>: - 440c: 00 00 00 00 add\.p gr0,gr0,gr0 - 440c: R_FRV_32 \.got - 4410: 00 00 00 04 add\.p gr0,gr4,gr0 - 4410: R_FRV_32 \.text +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+<\.D0>: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -00004418 <_GLOBAL_OFFSET_TABLE_-0x8>: - 4418: 00 00 00 04 add\.p gr0,gr4,gr0 - 4418: R_FRV_FUNCDESC_VALUE \.text - 441c: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x8>: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 -00004420 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 442c: 00 00 00 04 add\.p gr0,gr4,gr0 - 442c: R_FRV_32 \.text - 4430: 00 00 00 00 add\.p gr0,gr0,gr0 - 4430: R_FRV_32 \.got - 4434: 00 00 00 04 add\.p gr0,gr4,gr0 - 4434: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,65 +7,65 @@ Disassembly of section \.text: -000004f0 : - 4f0: 80 3c 00 01 call 4f4 +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 01 call [0-9a-f]+ -000004f4 : - 4f4: 80 40 f0 10 addi gr15,16,gr0 - 4f8: 80 fc 00 24 setlos 0x24,gr0 - 4fc: 80 f4 00 20 setlo 0x20,gr0 - 500: 80 f8 00 00 sethi hi\(0x0\),gr0 - 504: 80 40 f0 0c addi gr15,12,gr0 - 508: 80 fc 00 18 setlos 0x18,gr0 - 50c: 80 f4 00 14 setlo 0x14,gr0 - 510: 80 f8 00 00 sethi hi\(0x0\),gr0 - 514: 80 40 ff f8 addi gr15,-8,gr0 - 518: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 51c: 80 f4 ff e8 setlo 0xffe8,gr0 - 520: 80 f8 ff ff sethi 0xffff,gr0 - 524: 80 40 ff dc addi gr15,-36,gr0 - 528: 80 fc ff dc setlos 0xf*ffffffdc,gr0 - 52c: 80 f4 ff dc setlo 0xffdc,gr0 - 530: 80 f8 ff ff sethi 0xffff,gr0 - 534: 80 f4 00 1c setlo 0x1c,gr0 - 538: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -000045b8 : - 45b8: 00 00 00 04 add\.p gr0,gr4,gr0 - 45b8: R_FRV_32 \.data - -000045bc : - 45bc: 00 00 00 04 add\.p gr0,gr4,gr0 - 45bc: R_FRV_FUNCDESC \.text - 45c0: 00 00 00 04 add\.p gr0,gr4,gr0 - 45c0: R_FRV_32 \.text +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 24 setlos 0x24,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 18 setlos 0x18,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf+ff0,gr0 +[0-9a-f ]+: 80 f4 ff e8 setlo 0xffe8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff dc addi gr15,-36,gr0 +[0-9a-f ]+: 80 fc ff dc setlos 0xf+fdc,gr0 +[0-9a-f ]+: 80 f4 ff dc setlo 0xffdc,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 1c setlo 0x1c,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -000045c8 <_GLOBAL_OFFSET_TABLE_-0x18>: - 45c8: 00 00 00 04 add\.p gr0,gr4,gr0 - 45c8: R_FRV_FUNCDESC_VALUE \.text - 45cc: 00 00 00 02 add\.p gr0,fp,gr0 - 45d0: 00 00 00 04 add\.p gr0,gr4,gr0 - 45d0: R_FRV_FUNCDESC_VALUE \.text - 45d4: 00 00 00 02 add\.p gr0,fp,gr0 - 45d8: 00 00 00 04 add\.p gr0,gr4,gr0 - 45d8: R_FRV_FUNCDESC_VALUE \.text - 45dc: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x18>: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 -000045e0 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 45ec: 00 00 00 04 add\.p gr0,gr4,gr0 - 45ec: R_FRV_FUNCDESC \.text - 45f0: 00 00 00 04 add\.p gr0,gr4,gr0 - 45f0: R_FRV_32 \.text - 45f4: 00 00 00 04 add\.p gr0,gr4,gr0 - 45f4: R_FRV_FUNCDESC \.text - 45f8: 00 00 00 04 add\.p gr0,gr4,gr0 - 45f8: R_FRV_FUNCDESC \.text - 45fc: 00 00 00 04 add\.p gr0,gr4,gr0 - 45fc: R_FRV_32 \.data - 4600: 00 00 00 04 add\.p gr0,gr4,gr0 - 4600: R_FRV_32 \.text - 4604: 00 00 00 04 add\.p gr0,gr4,gr0 - 4604: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-6.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-6.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-6.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-6.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,67 +7,67 @@ Disassembly of section \.plt: -000004c8 <\.plt>: - 4c8: 00 00 00 08 add\.p gr0,gr8,gr0 - 4cc: c0 1a 00 06 bra 4e4 - 4d0: 00 00 00 00 add\.p gr0,gr0,gr0 - 4d4: c0 1a 00 04 bra 4e4 - 4d8: 00 00 00 10 add\.p gr0,gr16,gr0 - 4dc: c0 1a 00 02 bra 4e4 - 4e0: 00 00 00 18 add\.p gr0,gr24,gr0 - 4e4: 88 08 f1 40 ldd @\(gr15,gr0\),gr4 - 4e8: 80 30 40 00 jmpl @\(gr4,gr0\) - 4ec: 9c cc ff f0 lddi @\(gr15,-16\),gr14 - 4f0: 80 30 e0 00 jmpl @\(gr14,gr0\) +[0-9a-f ]+<\.plt>: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: c0 1a 00 06 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: c0 1a 00 04 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 10 add\.p gr0,gr16,gr0 +[0-9a-f ]+: c0 1a 00 02 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 18 add\.p gr0,gr24,gr0 +[0-9a-f ]+: 88 08 f1 40 ldd @\(gr15,gr0\),gr4 +[0-9a-f ]+: 80 30 40 00 jmpl @\(gr4,gr0\) +[0-9a-f ]+: 9c cc ff f0 lddi @\(gr15,-16\),gr14 +[0-9a-f ]+: 80 30 e0 00 jmpl @\(gr14,gr0\) Disassembly of section \.text: -000004f4 : - 4f4: fe 3f ff fe call 4ec - 4f8: 80 40 f0 0c addi gr15,12,gr0 - 4fc: 80 fc 00 24 setlos 0x24,gr0 - 500: 80 f4 00 20 setlo 0x20,gr0 - 504: 80 f8 00 00 sethi hi\(0x0\),gr0 - 508: 80 40 f0 10 addi gr15,16,gr0 - 50c: 80 fc 00 18 setlos 0x18,gr0 - 510: 80 f4 00 1c setlo 0x1c,gr0 - 514: 80 f8 00 00 sethi hi\(0x0\),gr0 - 518: 80 40 ff f8 addi gr15,-8,gr0 - 51c: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 - 520: 80 f4 ff e0 setlo 0xffe0,gr0 - 524: 80 f8 ff ff sethi 0xffff,gr0 - 528: 80 f4 ff d4 setlo 0xffd4,gr0 - 52c: 80 f8 ff ff sethi 0xffff,gr0 - 530: 80 f4 00 14 setlo 0x14,gr0 - 534: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: +[0-9a-f ]+: +[0-9a-f ]+: fe 3f ff fe call [0-9a-f]+ +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 24 setlos 0x24,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 18 setlos 0x18,gr0 +[0-9a-f ]+: 80 f4 00 1c setlo 0x1c,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 +[0-9a-f ]+: 80 f4 ff e0 setlo 0xffe0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 ff d0 setlo 0xffd0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: -000045cc : +[0-9a-f ]+: \.\.\. - 45cc: R_FRV_32 WD0 - 45d0: R_FRV_FUNCDESC WFb - 45d4: R_FRV_32 WFb +[0-9a-f ]+: R_FRV_32 WD0 +[0-9a-f ]+: R_FRV_FUNCDESC WFb +[0-9a-f ]+: R_FRV_32 WFb Disassembly of section \.got: -000045d8 <_GLOBAL_OFFSET_TABLE_-0x20>: - 45d8: 00 00 04 e4 addxcc\.p gr0,gr36,gr0,icc1 - 45d8: R_FRV_FUNCDESC_VALUE WF9 - 45dc: 00 00 00 02 add\.p gr0,fp,gr0 - 45e0: 00 00 04 dc addxcc\.p gr0,gr28,gr0,icc1 - 45e0: R_FRV_FUNCDESC_VALUE WF8 - 45e4: 00 00 00 02 add\.p gr0,fp,gr0 - 45e8: 00 00 04 d4 addxcc\.p gr0,gr20,gr0,icc1 - 45e8: R_FRV_FUNCDESC_VALUE WF0 - 45ec: 00 00 00 02 add\.p gr0,fp,gr0 - 45f0: 00 00 04 cc addxcc\.p gr0,gr12,gr0,icc1 - 45f0: R_FRV_FUNCDESC_VALUE WF7 - 45f4: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x20>: +[0-9a-f ]+: 00 00 04 b8 .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF9 +[0-9a-f ]+: 00 00 00 02 .* +[0-9a-f ]+: 00 00 04 b0 .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF8 +[0-9a-f ]+: 00 00 00 02 .* +[0-9a-f ]+: 00 00 04 a8 .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF0 +[0-9a-f ]+: 00 00 00 02 .* +[0-9a-f ]+: 00 00 04 a0 .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF7 +[0-9a-f ]+: 00 00 00 02 .* -000045f8 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4604: R_FRV_32 WF1 - 4608: R_FRV_FUNCDESC WF4 - 460c: R_FRV_32 WD2 - 4610: R_FRV_FUNCDESC WF5 - 4614: R_FRV_FUNCDESC WF6 - 4618: R_FRV_32 WF3 - 461c: R_FRV_32 WF2 +[0-9a-f ]+: R_FRV_32 WF1 +[0-9a-f ]+: R_FRV_FUNCDESC WF4 +[0-9a-f ]+: R_FRV_32 WD2 +[0-9a-f ]+: R_FRV_FUNCDESC WF5 +[0-9a-f ]+: R_FRV_FUNCDESC WF6 +[0-9a-f ]+: R_FRV_32 WF3 +[0-9a-f ]+: R_FRV_32 WF2 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-7.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-7.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-7.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-7.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,51 +7,51 @@ Disassembly of section \.text: -00000340 : - 340: 80 3c 00 02 call 348 <\.F0\+0x4> +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 02 call [0-9a-f]+ <\.F0\+0x4> -00000344 <\.F0>: - 344: 80 40 f0 0c addi gr15,12,gr0 - 348: 80 fc 00 0c setlos 0xc,gr0 - 34c: 80 f4 00 0c setlo 0xc,gr0 - 350: 80 f8 00 00 sethi hi\(0x0\),gr0 - 354: 80 40 f0 10 addi gr15,16,gr0 - 358: 80 fc 00 10 setlos 0x10,gr0 - 35c: 80 f4 00 10 setlo 0x10,gr0 - 360: 80 f8 00 00 sethi hi\(0x0\),gr0 - 364: 80 40 ff f8 addi gr15,-8,gr0 - 368: 80 fc ff f8 setlos 0xf*fffffff8,gr0 - 36c: 80 f4 ff f8 setlo 0xfff8,gr0 - 370: 80 f8 ff ff sethi 0xffff,gr0 - 374: 80 40 ff f0 addi gr15,-16,gr0 - 378: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 37c: 80 f4 ff f0 setlo 0xfff0,gr0 - 380: 80 f8 ff ff sethi 0xffff,gr0 - 384: 80 f4 00 14 setlo 0x14,gr0 - 388: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -00004408 : - 4408: 00 00 00 08 add\.p gr0,gr8,gr0 - 4408: R_FRV_32 \.data - -0000440c <\.D0>: - 440c: 00 00 00 00 add\.p gr0,gr0,gr0 - 440c: R_FRV_32 \.got - 4410: 00 00 00 08 add\.p gr0,gr8,gr0 - 4410: R_FRV_32 \.text +[0-9a-f ]+<\.F0>: +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 0c setlos 0xc,gr0 +[0-9a-f ]+: 80 f4 00 0c setlo 0xc,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 10 setlos 0x10,gr0 +[0-9a-f ]+: 80 f4 00 10 setlo 0x10,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f8 setlos 0xf*fffffff8,gr0 +[0-9a-f ]+: 80 f4 ff f8 setlo 0xfff8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff f0 addi gr15,-16,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf+ff0,gr0 +[0-9a-f ]+: 80 f4 ff f0 setlo 0xfff0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+<\.D0>: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -00004418 <_GLOBAL_OFFSET_TABLE_-0x8>: - 4418: 00 00 00 08 add\.p gr0,gr8,gr0 - 4418: R_FRV_FUNCDESC_VALUE \.text - 441c: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x8>: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 -00004420 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 442c: 00 00 00 08 add\.p gr0,gr8,gr0 - 442c: R_FRV_32 \.text - 4430: 00 00 00 00 add\.p gr0,gr0,gr0 - 4430: R_FRV_32 \.got - 4434: 00 00 00 08 add\.p gr0,gr8,gr0 - 4434: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.data diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-8.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-8.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-pie-8.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-pie-8.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,65 +7,65 @@ Disassembly of section \.text: -000004f0 : - 4f0: 80 3c 00 02 call 4f8 +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 02 call [0-9a-f]+ -000004f4 : - 4f4: 80 40 f0 10 addi gr15,16,gr0 - 4f8: 80 fc 00 14 setlos 0x14,gr0 - 4fc: 80 f4 00 24 setlo 0x24,gr0 - 500: 80 f8 00 00 sethi hi\(0x0\),gr0 - 504: 80 40 f0 0c addi gr15,12,gr0 - 508: 80 fc 00 1c setlos 0x1c,gr0 - 50c: 80 f4 00 18 setlo 0x18,gr0 - 510: 80 f8 00 00 sethi hi\(0x0\),gr0 - 514: 80 40 ff f8 addi gr15,-8,gr0 - 518: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 51c: 80 f4 ff e8 setlo 0xffe8,gr0 - 520: 80 f8 ff ff sethi 0xffff,gr0 - 524: 80 40 ff e0 addi gr15,-32,gr0 - 528: 80 fc ff e0 setlos 0xf*ffffffe0,gr0 - 52c: 80 f4 ff e0 setlo 0xffe0,gr0 - 530: 80 f8 ff ff sethi 0xffff,gr0 - 534: 80 f4 00 20 setlo 0x20,gr0 - 538: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -000045b8 : - 45b8: 00 00 00 08 add\.p gr0,gr8,gr0 - 45b8: R_FRV_32 \.data - -000045bc : - 45bc: 00 00 00 08 add\.p gr0,gr8,gr0 - 45bc: R_FRV_FUNCDESC \.text - 45c0: 00 00 00 08 add\.p gr0,gr8,gr0 - 45c0: R_FRV_32 \.text +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 14 setlos 0x14,gr0 +[0-9a-f ]+: 80 f4 00 24 setlo 0x24,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 1c setlos 0x1c,gr0 +[0-9a-f ]+: 80 f4 00 18 setlo 0x18,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf+ff0,gr0 +[0-9a-f ]+: 80 f4 ff e8 setlo 0xffe8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff e0 addi gr15,-32,gr0 +[0-9a-f ]+: 80 fc ff e0 setlos 0xf+fe0,gr0 +[0-9a-f ]+: 80 f4 ff e0 setlo 0xffe0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -000045c8 <_GLOBAL_OFFSET_TABLE_-0x18>: - 45c8: 00 00 00 08 add\.p gr0,gr8,gr0 - 45c8: R_FRV_FUNCDESC_VALUE \.text - 45cc: 00 00 00 02 add\.p gr0,fp,gr0 - 45d0: 00 00 00 08 add\.p gr0,gr8,gr0 - 45d0: R_FRV_FUNCDESC_VALUE \.text - 45d4: 00 00 00 02 add\.p gr0,fp,gr0 - 45d8: 00 00 00 08 add\.p gr0,gr8,gr0 - 45d8: R_FRV_FUNCDESC_VALUE \.text - 45dc: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x18>: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 -000045e0 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 45ec: 00 00 00 04 add\.p gr0,gr4,gr0 - 45ec: R_FRV_FUNCDESC \.text - 45f0: 00 00 00 08 add\.p gr0,gr8,gr0 - 45f0: R_FRV_32 \.text - 45f4: 00 00 00 08 add\.p gr0,gr8,gr0 - 45f4: R_FRV_32 \.text - 45f8: 00 00 00 04 add\.p gr0,gr4,gr0 - 45f8: R_FRV_FUNCDESC \.text - 45fc: 00 00 00 04 add\.p gr0,gr4,gr0 - 45fc: R_FRV_FUNCDESC \.text - 4600: 00 00 00 08 add\.p gr0,gr8,gr0 - 4600: R_FRV_32 \.data - 4604: 00 00 00 08 add\.p gr0,gr8,gr0 - 4604: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,51 +7,51 @@ Disassembly of section \.text: -0000033c : - 33c: 80 3c 00 01 call 340 <\.F0> +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 01 call [0-9a-f]+ <\.F0> -00000340 <\.F0>: - 340: 80 40 f0 0c addi gr15,12,gr0 - 344: 80 fc 00 0c setlos 0xc,gr0 - 348: 80 f4 00 0c setlo 0xc,gr0 - 34c: 80 f8 00 00 sethi hi\(0x0\),gr0 - 350: 80 40 f0 10 addi gr15,16,gr0 - 354: 80 fc 00 10 setlos 0x10,gr0 - 358: 80 f4 00 10 setlo 0x10,gr0 - 35c: 80 f8 00 00 sethi hi\(0x0\),gr0 - 360: 80 40 ff f8 addi gr15,-8,gr0 - 364: 80 fc ff f8 setlos 0xf*fffffff8,gr0 - 368: 80 f4 ff f8 setlo 0xfff8,gr0 - 36c: 80 f8 ff ff sethi 0xffff,gr0 - 370: 80 40 ff f0 addi gr15,-16,gr0 - 374: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 378: 80 f4 ff f0 setlo 0xfff0,gr0 - 37c: 80 f8 ff ff sethi 0xffff,gr0 - 380: 80 f4 00 14 setlo 0x14,gr0 - 384: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -00004404 : - 4404: 00 00 00 04 add\.p gr0,gr4,gr0 - 4404: R_FRV_32 \.data - -00004408 <\.D0>: - 4408: 00 00 00 00 add\.p gr0,gr0,gr0 - 4408: R_FRV_32 \.got - 440c: 00 00 00 04 add\.p gr0,gr4,gr0 - 440c: R_FRV_32 \.text +[0-9a-f ]+<\.F0>: +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 0c setlos 0xc,gr0 +[0-9a-f ]+: 80 f4 00 0c setlo 0xc,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 10 setlos 0x10,gr0 +[0-9a-f ]+: 80 f4 00 10 setlo 0x10,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f8 setlos 0xf+ff8,gr0 +[0-9a-f ]+: 80 f4 ff f8 setlo 0xfff8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff ec addi gr15,-20,gr0 +[0-9a-f ]+: 80 fc ff ec setlos 0xf+fec,gr0 +[0-9a-f ]+: 80 f4 ff ec setlo 0xffec,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+<\.D0>: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -00004410 <_GLOBAL_OFFSET_TABLE_-0x8>: - 4410: 00 00 00 04 add\.p gr0,gr4,gr0 - 4410: R_FRV_FUNCDESC_VALUE \.text - 4414: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x8>: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 -00004418 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4424: 00 00 00 04 add\.p gr0,gr4,gr0 - 4424: R_FRV_32 \.text - 4428: 00 00 00 00 add\.p gr0,gr0,gr0 - 4428: R_FRV_32 \.got - 442c: 00 00 00 04 add\.p gr0,gr4,gr0 - 442c: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,74 +7,74 @@ Disassembly of section \.plt: -000004d8 <\.plt>: - 4d8: 00 00 00 00 add\.p gr0,gr0,gr0 - 4dc: c0 1a 00 06 bra 4f4 - 4e0: 00 00 00 10 add\.p gr0,gr16,gr0 - 4e4: c0 1a 00 04 bra 4f4 - 4e8: 00 00 00 18 add\.p gr0,gr24,gr0 - 4ec: c0 1a 00 02 bra 4f4 - 4f0: 00 00 00 08 add\.p gr0,gr8,gr0 - 4f4: 88 08 f1 40 ldd @\(gr15,gr0\),gr4 - 4f8: 80 30 40 00 jmpl @\(gr4,gr0\) - 4fc: 9c cc ff f8 lddi @\(gr15,-8\),gr14 - 500: 80 30 e0 00 jmpl @\(gr14,gr0\) +[0-9a-f ]+ <\.plt>: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: c0 1a 00 06 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 10 add\.p gr0,gr16,gr0 +[0-9a-f ]+: c0 1a 00 04 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 18 add\.p gr0,gr24,gr0 +[0-9a-f ]+: c0 1a 00 02 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: 88 08 f1 40 ldd @\(gr15,gr0\),gr4 +[0-9a-f ]+: 80 30 40 00 jmpl @\(gr4,gr0\) +[0-9a-f ]+: 9c cc ff f8 lddi @\(gr15,-8\),gr14 +[0-9a-f ]+: 80 30 e0 00 jmpl @\(gr14,gr0\) Disassembly of section \.text: -00000504 : - 504: fe 3f ff fe call 4fc +[0-9a-f ]+: +[0-9a-f ]+: fe 3f ff fe call [0-9a-f]+ -00000508 : - 508: 80 40 f0 10 addi gr15,16,gr0 - 50c: 80 fc 00 24 setlos 0x24,gr0 - 510: 80 f4 00 20 setlo 0x20,gr0 - 514: 80 f8 00 00 sethi hi\(0x0\),gr0 - 518: 80 40 f0 0c addi gr15,12,gr0 - 51c: 80 fc 00 18 setlos 0x18,gr0 - 520: 80 f4 00 14 setlo 0x14,gr0 - 524: 80 f8 00 00 sethi hi\(0x0\),gr0 - 528: 80 40 ff f0 addi gr15,-16,gr0 - 52c: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 - 530: 80 f4 ff e0 setlo 0xffe0,gr0 - 534: 80 f8 ff ff sethi 0xffff,gr0 - 538: 80 40 ff d8 addi gr15,-40,gr0 - 53c: 80 fc ff d8 setlos 0xf*ffffffd8,gr0 - 540: 80 f4 ff d8 setlo 0xffd8,gr0 - 544: 80 f8 ff ff sethi 0xffff,gr0 - 548: 80 f4 00 1c setlo 0x1c,gr0 - 54c: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -000045e4 : - 45e4: 00 00 00 00 add\.p gr0,gr0,gr0 - 45e4: R_FRV_32 GD0 +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 24 setlos 0x24,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 18 setlos 0x18,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f0 addi gr15,-16,gr0 +[0-9a-f ]+: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 +[0-9a-f ]+: 80 f4 ff e0 setlo 0xffe0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff d8 addi gr15,-40,gr0 +[0-9a-f ]+: 80 fc ff d8 setlos 0xf+fd8,gr0 +[0-9a-f ]+: 80 f4 ff d8 setlo 0xffd8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 1c setlo 0x1c,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 GD0 -000045e8 : +[0-9a-f ]+: \.\.\. - 45e8: R_FRV_FUNCDESC GFb - 45ec: R_FRV_32 GFb -Disassembly of section \.got: - -000045f0 <_GLOBAL_OFFSET_TABLE_-0x20>: - 45f0: 00 00 04 ec addxcc\.p gr0,gr44,gr0,icc1 - 45f0: R_FRV_FUNCDESC_VALUE GF9 - 45f4: 00 00 00 00 add\.p gr0,gr0,gr0 - 45f8: 00 00 04 e4 addxcc\.p gr0,gr36,gr0,icc1 - 45f8: R_FRV_FUNCDESC_VALUE GF8 - 45fc: 00 00 00 00 add\.p gr0,gr0,gr0 - 4600: 00 00 04 f4 addxcc\.p gr0,gr52,gr0,icc1 - 4600: R_FRV_FUNCDESC_VALUE GF7 - 4604: 00 00 00 00 add\.p gr0,gr0,gr0 - 4608: 00 00 04 dc addxcc\.p gr0,gr28,gr0,icc1 - 4608: R_FRV_FUNCDESC_VALUE GF0 - 460c: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC GFb +[0-9a-f ]+: R_FRV_32 GFb +[0-9A-F ]+isassembly of section \.got: + +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x20>: +[0-9a-f ]+: 00 00 04 a4 .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE GF9 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: 00 00 04 9c .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE GF8 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: 00 00 04 ac .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE GF7 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: 00 00 04 94 .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE GF0 +[0-9a-f ]+: 00 00 00 00 .* -00004610 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 461c: R_FRV_FUNCDESC GF4 - 4620: R_FRV_32 GF1 - 4624: R_FRV_FUNCDESC GF6 - 4628: R_FRV_FUNCDESC GF5 - 462c: R_FRV_32 GD4 - 4630: R_FRV_32 GF3 - 4634: R_FRV_32 GF2 +[0-9a-f ]+: R_FRV_FUNCDESC GF4 +[0-9a-f ]+: R_FRV_32 GF1 +[0-9a-f ]+: R_FRV_FUNCDESC GF6 +[0-9a-f ]+: R_FRV_FUNCDESC GF5 +[0-9a-f ]+: R_FRV_32 GD4 +[0-9a-f ]+: R_FRV_32 GF3 +[0-9a-f ]+: R_FRV_32 GF2 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-3.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-3.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-3.d 2005-08-22 12:27:45.000000000 -0700 @@ -5,79 +5,79 @@ .*: file format elf.*frv.* -Disassembly of section \.text: +[0-9A-F ]+isassembly of section \.text: -0000038c : - 38c: 80 3c 00 01 call 390 +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 01 call [0-9a-f]+ -00000390 : - 390: 80 40 f0 0c addi gr15,12,gr0 - 394: 80 fc 00 18 setlos 0x18,gr0 - 398: 80 f4 00 1c setlo 0x1c,gr0 - 39c: 80 f8 00 00 sethi hi\(0x0\),gr0 - 3a0: 80 40 f0 10 addi gr15,16,gr0 - 3a4: 80 fc 00 20 setlos 0x20,gr0 - 3a8: 80 f4 00 14 setlo 0x14,gr0 - 3ac: 80 f8 00 00 sethi hi\(0x0\),gr0 - 3b0: 80 40 ff f8 addi gr15,-8,gr0 - 3b4: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 - 3b8: 80 f4 ff d8 setlo 0xffd8,gr0 - 3bc: 80 f8 ff ff sethi 0xffff,gr0 - 3c0: 80 40 ff c0 addi gr15,-64,gr0 - 3c4: 80 fc ff c0 setlos 0xf*ffffffc0,gr0 - 3c8: 80 f4 ff c0 setlo 0xffc0,gr0 - 3cc: 80 f8 ff ff sethi 0xffff,gr0 - 3d0: 80 f4 00 24 setlo 0x24,gr0 - 3d4: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -00004454 : - 4454: 00 00 00 04 add\.p gr0,gr4,gr0 - 4454: R_FRV_32 \.data - -00004458 : - 4458: 00 00 00 08 add\.p gr0,gr8,gr0 - 4458: R_FRV_32 \.got - 445c: 00 00 00 04 add\.p gr0,gr4,gr0 - 445c: R_FRV_32 \.text +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 18 setlos 0x18,gr0 +[0-9a-f ]+: 80 f4 00 1c setlo 0x1c,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 20 setlos 0x20,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 +[0-9a-f ]+: 80 f4 ff d8 setlo 0xffd8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff bc addi gr15,-68,gr0 +[0-9a-f ]+: 80 fc ff bc setlos 0xf+fbc,gr0 +[0-9a-f ]+: 80 f4 ff bc setlo 0xffbc,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 24 setlo 0x24,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -00004460 <_GLOBAL_OFFSET_TABLE_-0x38>: - 4460: 00 00 00 04 add\.p gr0,gr4,gr0 - 4460: R_FRV_FUNCDESC_VALUE \.text - 4464: 00 00 00 00 add\.p gr0,gr0,gr0 - 4468: 00 00 00 04 add\.p gr0,gr4,gr0 - 4468: R_FRV_FUNCDESC_VALUE \.text - 446c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4470: 00 00 00 04 add\.p gr0,gr4,gr0 - 4470: R_FRV_FUNCDESC_VALUE \.text - 4474: 00 00 00 00 add\.p gr0,gr0,gr0 - 4478: 00 00 00 04 add\.p gr0,gr4,gr0 - 4478: R_FRV_FUNCDESC_VALUE \.text - 447c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4480: 00 00 00 04 add\.p gr0,gr4,gr0 - 4480: R_FRV_FUNCDESC_VALUE \.text - 4484: 00 00 00 00 add\.p gr0,gr0,gr0 - 4488: 00 00 00 04 add\.p gr0,gr4,gr0 - 4488: R_FRV_FUNCDESC_VALUE \.text - 448c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4490: 00 00 00 04 add\.p gr0,gr4,gr0 - 4490: R_FRV_FUNCDESC_VALUE \.text - 4494: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x38>: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 -00004498 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 44a4: 00 00 00 04 add\.p gr0,gr4,gr0 - 44a4: R_FRV_32 \.text - 44a8: 00 00 00 00 add\.p gr0,gr0,gr0 - 44a8: R_FRV_32 \.got - 44ac: 00 00 00 28 add\.p gr0,gr40,gr0 - 44ac: R_FRV_32 \.got - 44b0: 00 00 00 04 add\.p gr0,gr4,gr0 - 44b0: R_FRV_32 \.text - 44b4: 00 00 00 04 add\.p gr0,gr4,gr0 - 44b4: R_FRV_32 \.text - 44b8: 00 00 00 18 add\.p gr0,gr24,gr0 - 44b8: R_FRV_32 \.got - 44bc: 00 00 00 04 add\.p gr0,gr4,gr0 - 44bc: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 28 add\.p gr0,gr40,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 18 add\.p gr0,gr24,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-4.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-4.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-4.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-4.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,65 +7,65 @@ Disassembly of section \.text: -00000564 : - 564: 80 3c 00 01 call 568 +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 01 call [0-9a-f]+ -00000568 : - 568: 80 40 f0 10 addi gr15,16,gr0 - 56c: 80 fc 00 20 setlos 0x20,gr0 - 570: 80 f4 00 1c setlo 0x1c,gr0 - 574: 80 f8 00 00 sethi hi\(0x0\),gr0 - 578: 80 40 f0 0c addi gr15,12,gr0 - 57c: 80 fc 00 24 setlos 0x24,gr0 - 580: 80 f4 00 18 setlo 0x18,gr0 - 584: 80 f8 00 00 sethi hi\(0x0\),gr0 - 588: 80 40 ff f8 addi gr15,-8,gr0 - 58c: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 590: 80 f4 ff e8 setlo 0xffe8,gr0 - 594: 80 f8 ff ff sethi 0xffff,gr0 - 598: 80 40 ff e0 addi gr15,-32,gr0 - 59c: 80 fc ff e0 setlos 0xf*ffffffe0,gr0 - 5a0: 80 f4 ff e0 setlo 0xffe0,gr0 - 5a4: 80 f8 ff ff sethi 0xffff,gr0 - 5a8: 80 f4 00 14 setlo 0x14,gr0 - 5ac: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -0000462c : - 462c: 00 00 00 04 add\.p gr0,gr4,gr0 - 462c: R_FRV_32 \.data - -00004630 : - 4630: 00 00 00 04 add\.p gr0,gr4,gr0 - 4630: R_FRV_FUNCDESC \.text - 4634: 00 00 00 04 add\.p gr0,gr4,gr0 - 4634: R_FRV_32 \.text +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 20 setlos 0x20,gr0 +[0-9a-f ]+: 80 f4 00 1c setlo 0x1c,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 24 setlos 0x24,gr0 +[0-9a-f ]+: 80 f4 00 18 setlo 0x18,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf+ff0,gr0 +[0-9a-f ]+: 80 f4 ff e8 setlo 0xffe8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff dc addi gr15,-36,gr0 +[0-9a-f ]+: 80 fc ff dc setlos 0xf+fdc,gr0 +[0-9a-f ]+: 80 f4 ff dc setlo 0xffdc,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -00004638 <_GLOBAL_OFFSET_TABLE_-0x18>: - 4638: 00 00 00 04 add\.p gr0,gr4,gr0 - 4638: R_FRV_FUNCDESC_VALUE \.text - 463c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4640: 00 00 00 04 add\.p gr0,gr4,gr0 - 4640: R_FRV_FUNCDESC_VALUE \.text - 4644: 00 00 00 00 add\.p gr0,gr0,gr0 - 4648: 00 00 00 04 add\.p gr0,gr4,gr0 - 4648: R_FRV_FUNCDESC_VALUE \.text - 464c: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x18>: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 -00004650 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 465c: 00 00 00 04 add\.p gr0,gr4,gr0 - 465c: R_FRV_FUNCDESC \.text - 4660: 00 00 00 04 add\.p gr0,gr4,gr0 - 4660: R_FRV_32 \.text - 4664: 00 00 00 04 add\.p gr0,gr4,gr0 - 4664: R_FRV_32 \.data - 4668: 00 00 00 04 add\.p gr0,gr4,gr0 - 4668: R_FRV_FUNCDESC \.text - 466c: 00 00 00 04 add\.p gr0,gr4,gr0 - 466c: R_FRV_32 \.text - 4670: 00 00 00 04 add\.p gr0,gr4,gr0 - 4670: R_FRV_32 \.text - 4674: 00 00 00 04 add\.p gr0,gr4,gr0 - 4674: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC \.text diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-5.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-5.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-5.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-5.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,76 +7,76 @@ Disassembly of section \.plt: -000004a8 <\.plt>: - 4a8: 00 00 00 10 add\.p gr0,gr16,gr0 - 4ac: c0 1a 00 06 bra 4c4 - 4b0: 00 00 00 08 add\.p gr0,gr8,gr0 - 4b4: c0 1a 00 04 bra 4c4 - 4b8: 00 00 00 00 add\.p gr0,gr0,gr0 - 4bc: c0 1a 00 02 bra 4c4 - 4c0: 00 00 00 18 add\.p gr0,gr24,gr0 - 4c4: 88 08 f1 40 ldd @\(gr15,gr0\),gr4 - 4c8: 80 30 40 00 jmpl @\(gr4,gr0\) - 4cc: 9c cc ff f0 lddi @\(gr15,-16\),gr14 - 4d0: 80 30 e0 00 jmpl @\(gr14,gr0\) +[0-9a-f ]+<\.plt>: +[0-9a-f ]+: 00 00 00 10 add\.p gr0,gr16,gr0 +[0-9a-f ]+: c0 1a 00 06 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: c0 1a 00 04 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: c0 1a 00 02 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 18 add\.p gr0,gr24,gr0 +[0-9a-f ]+: 88 08 f1 40 ldd @\(gr15,gr0\),gr4 +[0-9a-f ]+: 80 30 40 00 jmpl @\(gr4,gr0\) +[0-9a-f ]+: 9c cc ff f0 lddi @\(gr15,-16\),gr14 +[0-9a-f ]+: 80 30 e0 00 jmpl @\(gr14,gr0\) Disassembly of section \.text: -000004d4 : - 4d4: fe 3f ff fe call 4cc - 4d8: 80 40 f0 0c addi gr15,12,gr0 - 4dc: 80 fc 00 24 setlos 0x24,gr0 - 4e0: 80 f4 00 20 setlo 0x20,gr0 - 4e4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 4e8: 80 40 f0 10 addi gr15,16,gr0 - 4ec: 80 fc 00 1c setlos 0x1c,gr0 - 4f0: 80 f4 00 18 setlo 0x18,gr0 - 4f4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 4f8: 80 40 ff f8 addi gr15,-8,gr0 - 4fc: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 - 500: 80 f4 ff e0 setlo 0xffe0,gr0 - 504: 80 f8 ff ff sethi 0xffff,gr0 - 508: 80 f4 00 14 setlo 0x14,gr0 - 50c: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -000045a4 : - 45a4: 00 00 00 00 add\.p gr0,gr0,gr0 - 45a4: R_FRV_32 UD0 - 45a8: 00 00 00 00 add\.p gr0,gr0,gr0 - 45a8: R_FRV_FUNCDESC UFb - 45ac: 00 00 00 00 add\.p gr0,gr0,gr0 - 45ac: R_FRV_32 UFb +[0-9a-f ]+: +[0-9a-f ]+: fe 3f ff fe call [0-9a-f]+ +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 24 setlos 0x24,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 1c setlos 0x1c,gr0 +[0-9a-f ]+: 80 f4 00 18 setlo 0x18,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 +[0-9a-f ]+: 80 f4 ff e0 setlo 0xffe0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 UD0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC UFb +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 UFb Disassembly of section \.got: -000045b0 <_GLOBAL_OFFSET_TABLE_-0x20>: - 45b0: 00 00 04 c4 addxcc\.p gr0,gr4,gr0,icc1 - 45b0: R_FRV_FUNCDESC_VALUE UF9 - 45b4: 00 00 00 00 add\.p gr0,gr0,gr0 - 45b8: 00 00 04 ac addx\.p gr0,gr44,gr0,icc1 - 45b8: R_FRV_FUNCDESC_VALUE UF8 - 45bc: 00 00 00 00 add\.p gr0,gr0,gr0 - 45c0: 00 00 04 bc addx\.p gr0,gr60,gr0,icc1 - 45c0: R_FRV_FUNCDESC_VALUE UF0 - 45c4: 00 00 00 00 add\.p gr0,gr0,gr0 - 45c8: 00 00 04 b4 addx\.p gr0,gr52,gr0,icc1 - 45c8: R_FRV_FUNCDESC_VALUE UF7 - 45cc: 00 00 00 00 add\.p gr0,gr0,gr0 - -000045d0 <_GLOBAL_OFFSET_TABLE_>: - 45d0: 00 00 00 00 add\.p gr0,gr0,gr0 - 45d4: 00 00 00 00 add\.p gr0,gr0,gr0 - 45d8: 00 00 00 00 add\.p gr0,gr0,gr0 - 45dc: 00 00 00 00 add\.p gr0,gr0,gr0 - 45dc: R_FRV_32 UF1 - 45e0: 00 00 00 00 add\.p gr0,gr0,gr0 - 45e0: R_FRV_FUNCDESC UF4 - 45e4: 00 00 00 00 add\.p gr0,gr0,gr0 - 45e4: R_FRV_32 UD1 - 45e8: 00 00 00 00 add\.p gr0,gr0,gr0 - 45e8: R_FRV_FUNCDESC UF6 - 45ec: 00 00 00 00 add\.p gr0,gr0,gr0 - 45ec: R_FRV_FUNCDESC UF5 - 45f0: 00 00 00 00 add\.p gr0,gr0,gr0 - 45f0: R_FRV_32 UF3 - 45f4: 00 00 00 00 add\.p gr0,gr0,gr0 - 45f4: R_FRV_32 UF2 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x20>: +[0-9a-f ]+: 00 00 04 7c .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE UF9 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: 00 00 04 64 .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE UF8 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: 00 00 04 74 .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE UF0 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: 00 00 04 6c .* +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE UF7 +[0-9a-f ]+: 00 00 00 00 .* + +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_32 UF1 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_FUNCDESC UF4 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_32 UD1 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_FUNCDESC UF6 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_FUNCDESC UF5 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_32 UF3 +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_32 UF2 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-6.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-6.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-6.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-6.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,67 +7,67 @@ Disassembly of section \.plt: -0000037c <\.plt>: - 37c: 00 00 00 08 add\.p gr0,gr8,gr0 - 380: c0 1a 00 06 bra 398 - 384: 00 00 00 00 add\.p gr0,gr0,gr0 - 388: c0 1a 00 04 bra 398 - 38c: 00 00 00 10 add\.p gr0,gr16,gr0 - 390: c0 1a 00 02 bra 398 - 394: 00 00 00 18 add\.p gr0,gr24,gr0 - 398: 88 08 f1 40 ldd @\(gr15,gr0\),gr4 - 39c: 80 30 40 00 jmpl @\(gr4,gr0\) - 3a0: 9c cc ff f0 lddi @\(gr15,-16\),gr14 - 3a4: 80 30 e0 00 jmpl @\(gr14,gr0\) +[0-9a-f ]+<\.plt>: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: c0 1a 00 06 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: c0 1a 00 04 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 10 add\.p gr0,gr16,gr0 +[0-9a-f ]+: c0 1a 00 02 bra [0-9a-f]+ +[0-9a-f ]+: 00 00 00 18 add\.p gr0,gr24,gr0 +[0-9a-f ]+: 88 08 f1 40 ldd @\(gr15,gr0\),gr4 +[0-9a-f ]+: 80 30 40 00 jmpl @\(gr4,gr0\) +[0-9a-f ]+: 9c cc ff f0 lddi @\(gr15,-16\),gr14 +[0-9a-f ]+: 80 30 e0 00 jmpl @\(gr14,gr0\) Disassembly of section \.text: -000003a8 : - 3a8: fe 3f ff fe call 3a0 - 3ac: 80 40 f0 0c addi gr15,12,gr0 - 3b0: 80 fc 00 24 setlos 0x24,gr0 - 3b4: 80 f4 00 20 setlo 0x20,gr0 - 3b8: 80 f8 00 00 sethi hi\(0x0\),gr0 - 3bc: 80 40 f0 10 addi gr15,16,gr0 - 3c0: 80 fc 00 18 setlos 0x18,gr0 - 3c4: 80 f4 00 1c setlo 0x1c,gr0 - 3c8: 80 f8 00 00 sethi hi\(0x0\),gr0 - 3cc: 80 40 ff f8 addi gr15,-8,gr0 - 3d0: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 - 3d4: 80 f4 ff e0 setlo 0xffe0,gr0 - 3d8: 80 f8 ff ff sethi 0xffff,gr0 - 3dc: 80 f4 ff d0 setlo 0xffd0,gr0 - 3e0: 80 f8 ff ff sethi 0xffff,gr0 - 3e4: 80 f4 00 14 setlo 0x14,gr0 - 3e8: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: +[0-9a-f ]+: +[0-9a-f ]+: fe 3f ff fe call [0-9a-f]+ +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 24 setlos 0x24,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 18 setlos 0x18,gr0 +[0-9a-f ]+: 80 f4 00 1c setlo 0x1c,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff e8 setlos 0xf*ffffffe8,gr0 +[0-9a-f ]+: 80 f4 ff e0 setlo 0xffe0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 ff d0 setlo 0xffd0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: -00004480 : +[0-9a-f ]+: \.\.\. - 4480: R_FRV_32 WD0 - 4484: R_FRV_FUNCDESC WFb - 4488: R_FRV_32 WFb +[0-9a-f ]+: R_FRV_32 WD0 +[0-9a-f ]+: R_FRV_FUNCDESC WFb +[0-9a-f ]+: R_FRV_32 WFb Disassembly of section \.got: -00004490 <_GLOBAL_OFFSET_TABLE_-0x20>: - 4490: 00 00 03 98 sdiv\.p gr0,gr24,gr0 - 4490: R_FRV_FUNCDESC_VALUE WF9 - 4494: 00 00 00 00 add\.p gr0,gr0,gr0 - 4498: 00 00 03 90 sdiv\.p gr0,gr16,gr0 - 4498: R_FRV_FUNCDESC_VALUE WF8 - 449c: 00 00 00 00 add\.p gr0,gr0,gr0 - 44a0: 00 00 03 88 sdiv\.p gr0,gr8,gr0 - 44a0: R_FRV_FUNCDESC_VALUE WF0 - 44a4: 00 00 00 00 add\.p gr0,gr0,gr0 - 44a8: 00 00 03 80 sdiv\.p gr0,gr0,gr0 - 44a8: R_FRV_FUNCDESC_VALUE WF7 - 44ac: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x20>: +[0-9a-f ]+: 00 00 03 98 sdiv\.p gr0,gr24,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF9 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 03 90 sdiv\.p gr0,gr16,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF8 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 03 88 sdiv\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 03 80 sdiv\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF7 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 -000044b0 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 44bc: R_FRV_32 WF1 - 44c0: R_FRV_FUNCDESC WF4 - 44c4: R_FRV_32 WD2 - 44c8: R_FRV_FUNCDESC WF5 - 44cc: R_FRV_FUNCDESC WF6 - 44d0: R_FRV_32 WF3 - 44d4: R_FRV_32 WF2 +[0-9a-f ]+: R_FRV_32 WF1 +[0-9a-f ]+: R_FRV_FUNCDESC WF4 +[0-9a-f ]+: R_FRV_32 WD2 +[0-9a-f ]+: R_FRV_FUNCDESC WF5 +[0-9a-f ]+: R_FRV_FUNCDESC WF6 +[0-9a-f ]+: R_FRV_32 WF3 +[0-9a-f ]+: R_FRV_32 WF2 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-7.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-7.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-7.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-7.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,51 +7,51 @@ Disassembly of section \.text: -0000033c : - 33c: 80 3c 00 02 call 344 <\.F0\+0x4> +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 02 call [0-9a-f]+ <\.F0\+0x4> -00000340 <\.F0>: - 340: 80 40 f0 0c addi gr15,12,gr0 - 344: 80 fc 00 0c setlos 0xc,gr0 - 348: 80 f4 00 0c setlo 0xc,gr0 - 34c: 80 f8 00 00 sethi hi\(0x0\),gr0 - 350: 80 40 f0 10 addi gr15,16,gr0 - 354: 80 fc 00 10 setlos 0x10,gr0 - 358: 80 f4 00 10 setlo 0x10,gr0 - 35c: 80 f8 00 00 sethi hi\(0x0\),gr0 - 360: 80 40 ff f8 addi gr15,-8,gr0 - 364: 80 fc ff f8 setlos 0xf*fffffff8,gr0 - 368: 80 f4 ff f8 setlo 0xfff8,gr0 - 36c: 80 f8 ff ff sethi 0xffff,gr0 - 370: 80 40 ff f4 addi gr15,-12,gr0 - 374: 80 fc ff f4 setlos 0xf*fffffff4,gr0 - 378: 80 f4 ff f4 setlo 0xfff4,gr0 - 37c: 80 f8 ff ff sethi 0xffff,gr0 - 380: 80 f4 00 14 setlo 0x14,gr0 - 384: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -00004404 : - 4404: 00 00 00 08 add\.p gr0,gr8,gr0 - 4404: R_FRV_32 \.data - -00004408 <\.D0>: - 4408: 00 00 00 00 add\.p gr0,gr0,gr0 - 4408: R_FRV_32 \.got - 440c: 00 00 00 08 add\.p gr0,gr8,gr0 - 440c: R_FRV_32 \.text +[0-9a-f ]+<\.F0>: +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 0c setlos 0xc,gr0 +[0-9a-f ]+: 80 f4 00 0c setlo 0xc,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 10 setlos 0x10,gr0 +[0-9a-f ]+: 80 f4 00 10 setlo 0x10,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f8 setlos 0xf*fffffff8,gr0 +[0-9a-f ]+: 80 f4 ff f8 setlo 0xfff8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff f0 addi gr15,-16,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf+ff0,gr0 +[0-9a-f ]+: 80 f4 ff f0 setlo 0xfff0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+<\.D0>: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -00004410 <_GLOBAL_OFFSET_TABLE_-0x8>: - 4410: 00 00 00 08 add\.p gr0,gr8,gr0 - 4410: R_FRV_FUNCDESC_VALUE \.text - 4414: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x8>: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 -00004418 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4424: 00 00 00 08 add\.p gr0,gr8,gr0 - 4424: R_FRV_32 \.text - 4428: 00 00 00 00 add\.p gr0,gr0,gr0 - 4428: R_FRV_32 \.got - 442c: 00 00 00 08 add\.p gr0,gr8,gr0 - 442c: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.data diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-8.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-8.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-8.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-8.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,77 +7,77 @@ Disassembly of section \.text: -00000434 : - 434: 80 3c 00 02 call 43c +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 02 call [0-9a-f]+ -00000438 : - 438: 80 40 f0 10 addi gr15,16,gr0 - 43c: 80 fc 00 14 setlos 0x14,gr0 - 440: 80 f4 00 24 setlo 0x24,gr0 - 444: 80 f8 00 00 sethi hi\(0x0\),gr0 - 448: 80 40 f0 0c addi gr15,12,gr0 - 44c: 80 fc 00 1c setlos 0x1c,gr0 - 450: 80 f4 00 18 setlo 0x18,gr0 - 454: 80 f8 00 00 sethi hi\(0x0\),gr0 - 458: 80 40 ff f8 addi gr15,-8,gr0 - 45c: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 460: 80 f4 ff c8 setlo 0xffc8,gr0 - 464: 80 f8 ff ff sethi 0xffff,gr0 - 468: 80 40 ff c4 addi gr15,-60,gr0 - 46c: 80 fc ff c4 setlos 0xf*ffffffc4,gr0 - 470: 80 f4 ff c4 setlo 0xffc4,gr0 - 474: 80 f8 ff ff sethi 0xffff,gr0 - 478: 80 f4 00 20 setlo 0x20,gr0 - 47c: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -000044fc : - 44fc: 00 00 00 04 add\.p gr0,gr4,gr0 - 44fc: R_FRV_32 GD0 - -00004500 : - 4500: 00 00 00 10 add\.p gr0,gr16,gr0 - 4500: R_FRV_32 \.got - 4504: 00 00 00 08 add\.p gr0,gr8,gr0 - 4504: R_FRV_32 \.text +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 14 setlos 0x14,gr0 +[0-9a-f ]+: 80 f4 00 24 setlo 0x24,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 1c setlos 0x1c,gr0 +[0-9a-f ]+: 80 f4 00 18 setlo 0x18,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf+ff0,gr0 +[0-9a-f ]+: 80 f4 ff c8 setlo 0xffc8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff c0 addi gr15,-64,gr0 +[0-9a-f ]+: 80 fc ff c0 setlos 0xf+fc0,gr0 +[0-9a-f ]+: 80 f4 ff c0 setlo 0xffc0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9A-F ]+isassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 GD0 + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 10 add\.p gr0,gr16,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -00004508 <_GLOBAL_OFFSET_TABLE_-0x38>: - 4508: 00 00 00 08 add\.p gr0,gr8,gr0 - 4508: R_FRV_FUNCDESC_VALUE \.text - 450c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4510: 00 00 00 08 add\.p gr0,gr8,gr0 - 4510: R_FRV_FUNCDESC_VALUE \.text - 4514: 00 00 00 00 add\.p gr0,gr0,gr0 - 4518: 00 00 00 08 add\.p gr0,gr8,gr0 - 4518: R_FRV_FUNCDESC_VALUE \.text - 451c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4520: 00 00 00 08 add\.p gr0,gr8,gr0 - 4520: R_FRV_FUNCDESC_VALUE \.text - 4524: 00 00 00 00 add\.p gr0,gr0,gr0 - 4528: 00 00 00 08 add\.p gr0,gr8,gr0 - 4528: R_FRV_FUNCDESC_VALUE \.text - 452c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4530: 00 00 00 08 add\.p gr0,gr8,gr0 - 4530: R_FRV_FUNCDESC_VALUE \.text - 4534: 00 00 00 00 add\.p gr0,gr0,gr0 - 4538: 00 00 00 08 add\.p gr0,gr8,gr0 - 4538: R_FRV_FUNCDESC_VALUE \.text - 453c: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x38>: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 -00004540 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 454c: 00 00 00 08 add\.p gr0,gr8,gr0 - 454c: R_FRV_32 \.got - 4550: 00 00 00 04 add\.p gr0,gr4,gr0 - 4550: R_FRV_32 GF1 - 4554: 00 00 00 04 add\.p gr0,gr4,gr0 - 4554: R_FRV_32 GF2 - 4558: 00 00 00 20 add\.p gr0,gr32,gr0 - 4558: R_FRV_32 \.got - 455c: 00 00 00 18 add\.p gr0,gr24,gr0 - 455c: R_FRV_32 \.got - 4560: 00 00 00 04 add\.p gr0,gr4,gr0 - 4560: R_FRV_32 GD4 - 4564: 00 00 00 04 add\.p gr0,gr4,gr0 - 4564: R_FRV_32 GF3 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 GF1 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 GF2 +[0-9a-f ]+: 00 00 00 20 add\.p gr0,gr32,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 18 add\.p gr0,gr24,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 GD4 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 GF3 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-local-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-local-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-local-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-local-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,77 +7,77 @@ Disassembly of section \.text: -00000228 : - 228: 80 3c 00 01 call 22c +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 01 call [0-9a-f]+ -0000022c : - 22c: 80 40 f0 10 addi gr15,16,gr0 - 230: 80 fc 00 24 setlos 0x24,gr0 - 234: 80 f4 00 20 setlo 0x20,gr0 - 238: 80 f8 00 00 sethi hi\(0x0\),gr0 - 23c: 80 40 f0 0c addi gr15,12,gr0 - 240: 80 fc 00 18 setlos 0x18,gr0 - 244: 80 f4 00 14 setlo 0x14,gr0 - 248: 80 f8 00 00 sethi hi\(0x0\),gr0 - 24c: 80 40 ff f8 addi gr15,-8,gr0 - 250: 80 fc ff d0 setlos 0xf*ffffffd0,gr0 - 254: 80 f4 ff c8 setlo 0xffc8,gr0 - 258: 80 f8 ff ff sethi 0xffff,gr0 - 25c: 80 40 ff bc addi gr15,-68,gr0 - 260: 80 fc ff bc setlos 0xf*ffffffbc,gr0 - 264: 80 f4 ff bc setlo 0xffbc,gr0 - 268: 80 f8 ff ff sethi 0xffff,gr0 - 26c: 80 f4 00 1c setlo 0x1c,gr0 - 270: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -000042f0 : - 42f0: 00 00 00 04 add\.p gr0,gr4,gr0 - 42f0: R_FRV_32 \.data - -000042f4 : - 42f4: 00 00 00 18 add\.p gr0,gr24,gr0 - 42f4: R_FRV_32 \.got - 42f8: 00 00 00 04 add\.p gr0,gr4,gr0 - 42f8: R_FRV_32 \.text +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 24 setlos 0x24,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 18 setlos 0x18,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff d0 setlos 0xf+fd0,gr0 +[0-9a-f ]+: 80 f4 ff c8 setlo 0xffc8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff c0 addi gr15,-64,gr0 +[0-9a-f ]+: 80 fc ff c0 setlos 0xf+fc0,gr0 +[0-9a-f ]+: 80 f4 ff c0 setlo 0xffc0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 1c setlo 0x1c,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 18 add\.p gr0,gr24,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -00004300 <_GLOBAL_OFFSET_TABLE_-0x38>: - 4300: 00 00 00 04 add\.p gr0,gr4,gr0 - 4300: R_FRV_FUNCDESC_VALUE \.text - 4304: 00 00 00 00 add\.p gr0,gr0,gr0 - 4308: 00 00 00 04 add\.p gr0,gr4,gr0 - 4308: R_FRV_FUNCDESC_VALUE \.text - 430c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4310: 00 00 00 04 add\.p gr0,gr4,gr0 - 4310: R_FRV_FUNCDESC_VALUE \.text - 4314: 00 00 00 00 add\.p gr0,gr0,gr0 - 4318: 00 00 00 04 add\.p gr0,gr4,gr0 - 4318: R_FRV_FUNCDESC_VALUE \.text - 431c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4320: 00 00 00 04 add\.p gr0,gr4,gr0 - 4320: R_FRV_FUNCDESC_VALUE \.text - 4324: 00 00 00 00 add\.p gr0,gr0,gr0 - 4328: 00 00 00 04 add\.p gr0,gr4,gr0 - 4328: R_FRV_FUNCDESC_VALUE \.text - 432c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4330: 00 00 00 04 add\.p gr0,gr4,gr0 - 4330: R_FRV_FUNCDESC_VALUE \.text - 4334: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x38>: +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 -00004338 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4344: 00 00 00 10 add\.p gr0,gr16,gr0 - 4344: R_FRV_32 \.got - 4348: 00 00 00 04 add\.p gr0,gr4,gr0 - 4348: R_FRV_32 \.text - 434c: 00 00 00 28 add\.p gr0,gr40,gr0 - 434c: R_FRV_32 \.got - 4350: 00 00 00 20 add\.p gr0,gr32,gr0 - 4350: R_FRV_32 \.got - 4354: 00 00 00 04 add\.p gr0,gr4,gr0 - 4354: R_FRV_32 \.data - 4358: 00 00 00 04 add\.p gr0,gr4,gr0 - 4358: R_FRV_32 \.text - 435c: 00 00 00 04 add\.p gr0,gr4,gr0 - 435c: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 10 add\.p gr0,gr16,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 28 add\.p gr0,gr40,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 20 add\.p gr0,gr32,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 04 add\.p gr0,gr4,gr0 +[0-9a-f ]+: R_FRV_32 \.text diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-local-8.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-local-8.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-shared-local-8.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-shared-local-8.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,77 +7,77 @@ Disassembly of section \.text: -00000228 : - 228: 80 3c 00 02 call 230 +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 02 call [0-9a-f]+ -0000022c : - 22c: 80 40 f0 10 addi gr15,16,gr0 - 230: 80 fc 00 14 setlos 0x14,gr0 - 234: 80 f4 00 24 setlo 0x24,gr0 - 238: 80 f8 00 00 sethi hi\(0x0\),gr0 - 23c: 80 40 f0 0c addi gr15,12,gr0 - 240: 80 fc 00 1c setlos 0x1c,gr0 - 244: 80 f4 00 18 setlo 0x18,gr0 - 248: 80 f8 00 00 sethi hi\(0x0\),gr0 - 24c: 80 40 ff f8 addi gr15,-8,gr0 - 250: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 254: 80 f4 ff c8 setlo 0xffc8,gr0 - 258: 80 f8 ff ff sethi 0xffff,gr0 - 25c: 80 40 ff c0 addi gr15,-64,gr0 - 260: 80 fc ff c0 setlos 0xf*ffffffc0,gr0 - 264: 80 f4 ff c0 setlo 0xffc0,gr0 - 268: 80 f8 ff ff sethi 0xffff,gr0 - 26c: 80 f4 00 20 setlo 0x20,gr0 - 270: 80 f8 00 00 sethi hi\(0x0\),gr0 -Disassembly of section \.data: - -000042f0 : - 42f0: 00 00 00 08 add\.p gr0,gr8,gr0 - 42f0: R_FRV_32 \.data - -000042f4 : - 42f4: 00 00 00 10 add\.p gr0,gr16,gr0 - 42f4: R_FRV_32 \.got - 42f8: 00 00 00 08 add\.p gr0,gr8,gr0 - 42f8: R_FRV_32 \.text +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 14 setlos 0x14,gr0 +[0-9a-f ]+: 80 f4 00 24 setlo 0x24,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 1c setlos 0x1c,gr0 +[0-9a-f ]+: 80 f4 00 18 setlo 0x18,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf+ff0,gr0 +[0-9a-f ]+: 80 f4 ff c8 setlo 0xffc8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff c4 addi gr15,-60,gr0 +[0-9a-f ]+: 80 fc ff c4 setlos 0xf+fc4,gr0 +[0-9a-f ]+: 80 f4 ff c4 setlo 0xffc4,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.data + +[0-9a-f ]+: +[0-9a-f ]+: 00 00 00 10 add\.p gr0,gr16,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text Disassembly of section \.got: -00004300 <_GLOBAL_OFFSET_TABLE_-0x38>: - 4300: 00 00 00 08 add\.p gr0,gr8,gr0 - 4300: R_FRV_FUNCDESC_VALUE \.text - 4304: 00 00 00 00 add\.p gr0,gr0,gr0 - 4308: 00 00 00 08 add\.p gr0,gr8,gr0 - 4308: R_FRV_FUNCDESC_VALUE \.text - 430c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4310: 00 00 00 08 add\.p gr0,gr8,gr0 - 4310: R_FRV_FUNCDESC_VALUE \.text - 4314: 00 00 00 00 add\.p gr0,gr0,gr0 - 4318: 00 00 00 08 add\.p gr0,gr8,gr0 - 4318: R_FRV_FUNCDESC_VALUE \.text - 431c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4320: 00 00 00 08 add\.p gr0,gr8,gr0 - 4320: R_FRV_FUNCDESC_VALUE \.text - 4324: 00 00 00 00 add\.p gr0,gr0,gr0 - 4328: 00 00 00 08 add\.p gr0,gr8,gr0 - 4328: R_FRV_FUNCDESC_VALUE \.text - 432c: 00 00 00 00 add\.p gr0,gr0,gr0 - 4330: 00 00 00 08 add\.p gr0,gr8,gr0 - 4330: R_FRV_FUNCDESC_VALUE \.text - 4334: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x38>: +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_FUNCDESC_VALUE \.text +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 -00004338 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4344: 00 00 00 08 add\.p gr0,gr8,gr0 - 4344: R_FRV_32 \.got - 4348: 00 00 00 08 add\.p gr0,gr8,gr0 - 4348: R_FRV_32 \.text - 434c: 00 00 00 08 add\.p gr0,gr8,gr0 - 434c: R_FRV_32 \.text - 4350: 00 00 00 20 add\.p gr0,gr32,gr0 - 4350: R_FRV_32 \.got - 4354: 00 00 00 18 add\.p gr0,gr24,gr0 - 4354: R_FRV_32 \.got - 4358: 00 00 00 08 add\.p gr0,gr8,gr0 - 4358: R_FRV_32 \.data - 435c: 00 00 00 08 add\.p gr0,gr8,gr0 - 435c: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text +[0-9a-f ]+: 00 00 00 20 add\.p gr0,gr32,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 18 add\.p gr0,gr24,gr0 +[0-9a-f ]+: R_FRV_32 \.got +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.data +[0-9a-f ]+: 00 00 00 08 add\.p gr0,gr8,gr0 +[0-9a-f ]+: R_FRV_32 \.text diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,56 +7,56 @@ Disassembly of section \.text: -00010094 : - 10094: 80 3c 00 01 call 10098 <\.F0> +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 01 call [0-9a-f]+ <\.F0> -00010098 <\.F0>: - 10098: 80 40 f0 0c addi gr15,12,gr0 - 1009c: 80 fc 00 0c setlos 0xc,gr0 - 100a0: 80 f4 00 0c setlo 0xc,gr0 - 100a4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100a8: 80 40 f0 10 addi gr15,16,gr0 - 100ac: 80 fc 00 10 setlos 0x10,gr0 - 100b0: 80 f4 00 10 setlo 0x10,gr0 - 100b4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100b8: 80 40 ff f8 addi gr15,-8,gr0 - 100bc: 80 fc ff f8 setlos 0xf*fffffff8,gr0 - 100c0: 80 f4 ff f8 setlo 0xfff8,gr0 - 100c4: 80 f8 ff ff sethi 0xffff,gr0 - 100c8: 80 40 ff f0 addi gr15,-16,gr0 - 100cc: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 100d0: 80 f4 ff f0 setlo 0xfff0,gr0 - 100d4: 80 f8 ff ff sethi 0xffff,gr0 - 100d8: 80 f4 00 14 setlo 0x14,gr0 - 100dc: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+<\.F0>: +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 0c setlos 0xc,gr0 +[0-9a-f ]+: 80 f4 00 0c setlo 0xc,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 10 setlos 0x10,gr0 +[0-9a-f ]+: 80 f4 00 10 setlo 0x10,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f8 setlos 0xf*fffffff8,gr0 +[0-9a-f ]+: 80 f4 ff f8 setlo 0xfff8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff f0 addi gr15,-16,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf*fffffff0,gr0 +[0-9a-f ]+: 80 f4 ff f0 setlo 0xfff0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 Disassembly of section \.rofixup: -000100e0 <__ROFIXUP_LIST__>: - 100e0: 00 01 41 24 sub\.p gr20,gr36,gr0 - 100e4: 00 01 41 28 sub\.p gr20,gr40,gr0 - 100e8: 00 01 41 10 sub\.p gr20,gr16,gr0 - 100ec: 00 01 41 14 sub\.p gr20,gr20,gr0 - 100f0: 00 01 41 2c sub\.p gr20,gr44,gr0 - 100f4: 00 01 41 04 sub\.p gr20,gr4,gr0 - 100f8: 00 01 41 08 sub\.p gr20,gr8,gr0 - 100fc: 00 01 41 0c sub\.p gr20,gr12,gr0 - 10100: 00 01 41 18 sub\.p gr20,gr24,gr0 -Disassembly of section \.data: - -00014104 : - 14104: 00 01 41 08 sub\.p gr20,gr8,gr0 - -00014108 <\.D0>: - 14108: 00 01 41 10 sub\.p gr20,gr16,gr0 - 1410c: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+<__ROFIXUP_LIST__>: +[0-9a-f ]+: 00 01 41 24 sub\.p gr20,gr36,gr0 +[0-9a-f ]+: 00 01 41 28 sub\.p gr20,gr40,gr0 +[0-9a-f ]+: 00 01 41 10 sub\.p gr20,gr16,gr0 +[0-9a-f ]+: 00 01 41 14 sub\.p gr20,gr20,gr0 +[0-9a-f ]+: 00 01 41 2c sub\.p gr20,gr44,gr0 +[0-9a-f ]+: 00 01 41 04 sub\.p gr20,gr4,gr0 +[0-9a-f ]+: 00 01 41 08 sub\.p gr20,gr8,gr0 +[0-9a-f ]+: 00 01 41 0c sub\.p gr20,gr12,gr0 +[0-9a-f ]+: 00 01 41 18 sub\.p gr20,gr24,gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 01 41 08 sub\.p gr20,gr8,gr0 + +[0-9a-f ]+<\.D0>: +[0-9a-f ]+: 00 01 41 10 sub\.p gr20,gr16,gr0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 Disassembly of section \.got: -00014110 <_GLOBAL_OFFSET_TABLE_-0x8>: - 14110: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 14114: 00 01 41 18 sub\.p gr20,gr24,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x8>: +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 18 sub\.p gr20,gr24,gr0 -00014118 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 14124: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 14128: 00 01 41 10 sub\.p gr20,gr16,gr0 - 1412c: 00 01 41 08 sub\.p gr20,gr8,gr0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 10 sub\.p gr20,gr16,gr0 +[0-9a-f ]+: 00 01 41 08 sub\.p gr20,gr8,gr0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,88 +7,88 @@ Disassembly of section \.text: -00010094 : - 10094: 80 3c 00 01 call 10098 +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 01 call [0-9a-f]+ -00010098 : - 10098: 80 40 f0 10 addi gr15,16,gr0 - 1009c: 80 fc 00 24 setlos 0x24,gr0 - 100a0: 80 f4 00 20 setlo 0x20,gr0 - 100a4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100a8: 80 40 f0 0c addi gr15,12,gr0 - 100ac: 80 fc 00 18 setlos 0x18,gr0 - 100b0: 80 f4 00 14 setlo 0x14,gr0 - 100b4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100b8: 80 40 ff f8 addi gr15,-8,gr0 - 100bc: 80 fc ff d0 setlos 0xf*ffffffd0,gr0 - 100c0: 80 f4 ff c8 setlo 0xffc8,gr0 - 100c4: 80 f8 ff ff sethi 0xffff,gr0 - 100c8: 80 40 ff c0 addi gr15,-64,gr0 - 100cc: 80 fc ff c0 setlos 0xf*ffffffc0,gr0 - 100d0: 80 f4 ff c0 setlo 0xffc0,gr0 - 100d4: 80 f8 ff ff sethi 0xffff,gr0 - 100d8: 80 f4 00 1c setlo 0x1c,gr0 - 100dc: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 24 setlos 0x24,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 18 setlos 0x18,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff d0 setlos 0xf*ffffffd0,gr0 +[0-9a-f ]+: 80 f4 ff c8 setlo 0xffc8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff c0 addi gr15,-64,gr0 +[0-9a-f ]+: 80 fc ff c0 setlos 0xf*ffffffc0,gr0 +[0-9a-f ]+: 80 f4 ff c0 setlo 0xffc0,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 1c setlo 0x1c,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 Disassembly of section \.rofixup: -000100e0 <__ROFIXUP_LIST__>: - 100e0: 00 01 41 98 subx\.p gr20,gr24,gr0,icc0 - 100e4: 00 01 41 ac subx\.p gr20,gr44,gr0,icc0 - 100e8: 00 01 41 a8 subx\.p gr20,gr40,gr0,icc0 - 100ec: 00 01 41 94 subx\.p gr20,gr20,gr0,icc0 - 100f0: 00 01 41 60 subcc\.p gr20,gr32,gr0,icc0 - 100f4: 00 01 41 64 subcc\.p gr20,gr36,gr0,icc0 - 100f8: 00 01 41 a0 subx\.p gr20,gr32,gr0,icc0 - 100fc: 00 01 41 70 subcc\.p gr20,gr48,gr0,icc0 - 10100: 00 01 41 74 subcc\.p gr20,gr52,gr0,icc0 - 10104: 00 01 41 9c subx\.p gr20,gr28,gr0,icc0 - 10108: 00 01 41 78 subcc\.p gr20,gr56,gr0,icc0 - 1010c: 00 01 41 7c subcc\.p gr20,gr60,gr0,icc0 - 10110: 00 01 41 80 subx\.p gr20,gr0,gr0,icc0 - 10114: 00 01 41 84 subx\.p gr20,gr4,gr0,icc0 - 10118: 00 01 41 58 subcc\.p gr20,gr24,gr0,icc0 - 1011c: 00 01 41 5c subcc\.p gr20,gr28,gr0,icc0 - 10120: 00 01 41 50 subcc\.p gr20,gr16,gr0,icc0 - 10124: 00 01 41 54 subcc\.p gr20,gr20,gr0,icc0 - 10128: 00 01 41 a4 subx\.p gr20,gr36,gr0,icc0 - 1012c: 00 01 41 44 subcc\.p gr20,gr4,gr0,icc0 - 10130: 00 01 41 68 subcc\.p gr20,gr40,gr0,icc0 - 10134: 00 01 41 6c subcc\.p gr20,gr44,gr0,icc0 - 10138: 00 01 41 48 subcc\.p gr20,gr8,gr0,icc0 - 1013c: 00 01 41 4c subcc\.p gr20,gr12,gr0,icc0 - 10140: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 -Disassembly of section \.data: - -00014144 : - 14144: 00 01 41 48 subcc\.p gr20,gr8,gr0,icc0 - -00014148 : - 14148: 00 01 41 68 subcc\.p gr20,gr40,gr0,icc0 - 1414c: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+<__ROFIXUP_LIST__>: +[0-9a-f ]+: 00 01 41 98 subx\.p gr20,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 ac subx\.p gr20,gr44,gr0,icc0 +[0-9a-f ]+: 00 01 41 a8 subx\.p gr20,gr40,gr0,icc0 +[0-9a-f ]+: 00 01 41 94 subx\.p gr20,gr20,gr0,icc0 +[0-9a-f ]+: 00 01 41 60 subcc\.p gr20,gr32,gr0,icc0 +[0-9a-f ]+: 00 01 41 64 subcc\.p gr20,gr36,gr0,icc0 +[0-9a-f ]+: 00 01 41 a0 subx\.p gr20,gr32,gr0,icc0 +[0-9a-f ]+: 00 01 41 70 subcc\.p gr20,gr48,gr0,icc0 +[0-9a-f ]+: 00 01 41 74 subcc\.p gr20,gr52,gr0,icc0 +[0-9a-f ]+: 00 01 41 9c subx\.p gr20,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 78 subcc\.p gr20,gr56,gr0,icc0 +[0-9a-f ]+: 00 01 41 7c subcc\.p gr20,gr60,gr0,icc0 +[0-9a-f ]+: 00 01 41 80 subx\.p gr20,gr0,gr0,icc0 +[0-9a-f ]+: 00 01 41 84 subx\.p gr20,gr4,gr0,icc0 +[0-9a-f ]+: 00 01 41 58 subcc\.p gr20,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 5c subcc\.p gr20,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 50 subcc\.p gr20,gr16,gr0,icc0 +[0-9a-f ]+: 00 01 41 54 subcc\.p gr20,gr20,gr0,icc0 +[0-9a-f ]+: 00 01 41 a4 subx\.p gr20,gr36,gr0,icc0 +[0-9a-f ]+: 00 01 41 44 subcc\.p gr20,gr4,gr0,icc0 +[0-9a-f ]+: 00 01 41 68 subcc\.p gr20,gr40,gr0,icc0 +[0-9a-f ]+: 00 01 41 6c subcc\.p gr20,gr44,gr0,icc0 +[0-9a-f ]+: 00 01 41 48 subcc\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 41 4c subcc\.p gr20,gr12,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 01 41 48 subcc\.p gr20,gr8,gr0,icc0 + +[0-9a-f ]+: +[0-9a-f ]+: 00 01 41 68 subcc\.p gr20,gr40,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 Disassembly of section \.got: -00014150 <_GLOBAL_OFFSET_TABLE_-0x38>: - 14150: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 14154: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14158: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 1415c: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14160: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 14164: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14168: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 1416c: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14170: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 14174: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14178: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 1417c: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14180: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 14184: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x38>: +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 -00014188 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 14194: 00 01 41 60 subcc\.p gr20,gr32,gr0,icc0 - 14198: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 1419c: 00 01 41 78 subcc\.p gr20,gr56,gr0,icc0 - 141a0: 00 01 41 70 subcc\.p gr20,gr48,gr0,icc0 - 141a4: 00 01 41 48 subcc\.p gr20,gr8,gr0,icc0 - 141a8: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 - 141ac: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 60 subcc\.p gr20,gr32,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 78 subcc\.p gr20,gr56,gr0,icc0 +[0-9a-f ]+: 00 01 41 70 subcc\.p gr20,gr48,gr0,icc0 +[0-9a-f ]+: 00 01 41 48 subcc\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 00 98 addx\.p gr16,gr24,gr0,icc0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-6.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-6.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-6.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-6.d 2005-08-22 12:27:45.000000000 -0700 @@ -8,36 +8,36 @@ Disassembly of section \.text: -00010094 : - 10094: fe 3f bf db call 0 <_gp-0xf8d8> - 10098: 80 40 f0 0c addi gr15,12,gr0 - 1009c: 80 fc 00 24 setlos 0x24,gr0 - 100a0: 80 f4 00 20 setlo 0x20,gr0 - 100a4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100a8: 80 40 f0 10 addi gr15,16,gr0 - 100ac: 80 fc 00 18 setlos 0x18,gr0 - 100b0: 80 f4 00 1c setlo 0x1c,gr0 - 100b4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100b8: 80 40 ff f8 addi gr15,-8,gr0 - 100bc: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 100c0: 80 f4 ff e8 setlo 0xffe8,gr0 - 100c4: 80 f8 ff ff sethi 0xffff,gr0 - 100c8: 80 f4 be e0 setlo 0xbee0,gr0 - 100cc: 80 f8 ff fe sethi 0xfffe,gr0 - 100d0: 80 f4 00 14 setlo 0x14,gr0 - 100d4: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: +[0-9a-f ]+: fe 3f bf db call 0 <_gp-0xf8d8> +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 24 setlos 0x24,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 18 setlos 0x18,gr0 +[0-9a-f ]+: 80 f4 00 1c setlo 0x1c,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf*fffffff0,gr0 +[0-9a-f ]+: 80 f4 ff e8 setlo 0xffe8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 be e0 setlo 0xbee0,gr0 +[0-9a-f ]+: 80 f8 ff fe sethi 0xfffe,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 Disassembly of section \.rofixup: -000100d8 <__ROFIXUP_LIST__>: - 100d8: 00 01 41 20 sub\.p gr20,gr32,gr0 -Disassembly of section \.data: +[0-9a-f ]+<__ROFIXUP_LIST__>: +[0-9a-f ]+: 00 01 41 20 sub\.p gr20,gr32,gr0 +Disassembly of section \.dat[0-9a-f ]+: -000140dc : +[0-9a-f ]+: \.\.\. Disassembly of section \.got: -000140e8 <_GLOBAL_OFFSET_TABLE_-0x38>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x38>: \.\.\. -00014120 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-7.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-7.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-7.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-7.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,56 +7,56 @@ Disassembly of section \.text: -00010094 : - 10094: 80 3c 00 02 call 1009c <\.F0\+0x4> +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 02 call [0-9a-f]+ <\.F0\+0x4> -00010098 <\.F0>: - 10098: 80 40 f0 0c addi gr15,12,gr0 - 1009c: 80 fc 00 0c setlos 0xc,gr0 - 100a0: 80 f4 00 0c setlo 0xc,gr0 - 100a4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100a8: 80 40 f0 10 addi gr15,16,gr0 - 100ac: 80 fc 00 10 setlos 0x10,gr0 - 100b0: 80 f4 00 10 setlo 0x10,gr0 - 100b4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100b8: 80 40 ff f8 addi gr15,-8,gr0 - 100bc: 80 fc ff f8 setlos 0xf*fffffff8,gr0 - 100c0: 80 f4 ff f8 setlo 0xfff8,gr0 - 100c4: 80 f8 ff ff sethi 0xffff,gr0 - 100c8: 80 40 ff f4 addi gr15,-12,gr0 - 100cc: 80 fc ff f4 setlos 0xf*fffffff4,gr0 - 100d0: 80 f4 ff f4 setlo 0xfff4,gr0 - 100d4: 80 f8 ff ff sethi 0xffff,gr0 - 100d8: 80 f4 00 14 setlo 0x14,gr0 - 100dc: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+<\.F0>: +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 0c setlos 0xc,gr0 +[0-9a-f ]+: 80 f4 00 0c setlo 0xc,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 10 setlos 0x10,gr0 +[0-9a-f ]+: 80 f4 00 10 setlo 0x10,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f8 setlos 0xf*fffffff8,gr0 +[0-9a-f ]+: 80 f4 ff f8 setlo 0xfff8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff f4 addi gr15,-12,gr0 +[0-9a-f ]+: 80 fc ff f4 setlos 0xf*fffffff4,gr0 +[0-9a-f ]+: 80 f4 ff f4 setlo 0xfff4,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 14 setlo 0x14,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 Disassembly of section \.rofixup: -000100e0 <__ROFIXUP_LIST__>: - 100e0: 00 01 41 24 sub\.p gr20,gr36,gr0 - 100e4: 00 01 41 28 sub\.p gr20,gr40,gr0 - 100e8: 00 01 41 10 sub\.p gr20,gr16,gr0 - 100ec: 00 01 41 14 sub\.p gr20,gr20,gr0 - 100f0: 00 01 41 2c sub\.p gr20,gr44,gr0 - 100f4: 00 01 41 04 sub\.p gr20,gr4,gr0 - 100f8: 00 01 41 08 sub\.p gr20,gr8,gr0 - 100fc: 00 01 41 0c sub\.p gr20,gr12,gr0 - 10100: 00 01 41 18 sub\.p gr20,gr24,gr0 -Disassembly of section \.data: - -00014104 : - 14104: 00 01 41 0c sub\.p gr20,gr12,gr0 - -00014108 <\.D0>: - 14108: 00 01 41 10 sub\.p gr20,gr16,gr0 - 1410c: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+<__ROFIXUP_LIST__>: +[0-9a-f ]+: 00 01 41 24 sub\.p gr20,gr36,gr0 +[0-9a-f ]+: 00 01 41 28 sub\.p gr20,gr40,gr0 +[0-9a-f ]+: 00 01 41 10 sub\.p gr20,gr16,gr0 +[0-9a-f ]+: 00 01 41 14 sub\.p gr20,gr20,gr0 +[0-9a-f ]+: 00 01 41 2c sub\.p gr20,gr44,gr0 +[0-9a-f ]+: 00 01 41 04 sub\.p gr20,gr4,gr0 +[0-9a-f ]+: 00 01 41 08 sub\.p gr20,gr8,gr0 +[0-9a-f ]+: 00 01 41 0c sub\.p gr20,gr12,gr0 +[0-9a-f ]+: 00 01 41 18 sub\.p gr20,gr24,gr0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 01 41 0c sub\.p gr20,gr12,gr0 + +[0-9a-f ]+<\.D0>: +[0-9a-f ]+: 00 01 41 10 sub\.p gr20,gr16,gr0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 Disassembly of section \.got: -00014110 <_GLOBAL_OFFSET_TABLE_-0x8>: - 14110: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 14114: 00 01 41 18 sub\.p gr20,gr24,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x8>: +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 18 sub\.p gr20,gr24,gr0 -00014118 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 14124: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 14128: 00 01 41 10 sub\.p gr20,gr16,gr0 - 1412c: 00 01 41 0c sub\.p gr20,gr12,gr0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 10 sub\.p gr20,gr16,gr0 +[0-9a-f ]+: 00 01 41 0c sub\.p gr20,gr12,gr0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-8.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-8.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/fdpic-static-8.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/fdpic-static-8.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,88 +7,88 @@ Disassembly of section \.text: -00010094 : - 10094: 80 3c 00 02 call 1009c +[0-9a-f ]+: +[0-9a-f ]+: 80 3c 00 02 call [0-9a-f]+ -00010098 : - 10098: 80 40 f0 10 addi gr15,16,gr0 - 1009c: 80 fc 00 14 setlos 0x14,gr0 - 100a0: 80 f4 00 24 setlo 0x24,gr0 - 100a4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100a8: 80 40 f0 0c addi gr15,12,gr0 - 100ac: 80 fc 00 1c setlos 0x1c,gr0 - 100b0: 80 f4 00 18 setlo 0x18,gr0 - 100b4: 80 f8 00 00 sethi hi\(0x0\),gr0 - 100b8: 80 40 ff f8 addi gr15,-8,gr0 - 100bc: 80 fc ff f0 setlos 0xf*fffffff0,gr0 - 100c0: 80 f4 ff c8 setlo 0xffc8,gr0 - 100c4: 80 f8 ff ff sethi 0xffff,gr0 - 100c8: 80 40 ff c4 addi gr15,-60,gr0 - 100cc: 80 fc ff c4 setlos 0xf*ffffffc4,gr0 - 100d0: 80 f4 ff c4 setlo 0xffc4,gr0 - 100d4: 80 f8 ff ff sethi 0xffff,gr0 - 100d8: 80 f4 00 20 setlo 0x20,gr0 - 100dc: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: +[0-9a-f ]+: 80 40 f0 10 addi gr15,16,gr0 +[0-9a-f ]+: 80 fc 00 14 setlos 0x14,gr0 +[0-9a-f ]+: 80 f4 00 24 setlo 0x24,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 f0 0c addi gr15,12,gr0 +[0-9a-f ]+: 80 fc 00 1c setlos 0x1c,gr0 +[0-9a-f ]+: 80 f4 00 18 setlo 0x18,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 +[0-9a-f ]+: 80 40 ff f8 addi gr15,-8,gr0 +[0-9a-f ]+: 80 fc ff f0 setlos 0xf*fffffff0,gr0 +[0-9a-f ]+: 80 f4 ff c8 setlo 0xffc8,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 40 ff c4 addi gr15,-60,gr0 +[0-9a-f ]+: 80 fc ff c4 setlos 0xf*ffffffc4,gr0 +[0-9a-f ]+: 80 f4 ff c4 setlo 0xffc4,gr0 +[0-9a-f ]+: 80 f8 ff ff sethi 0xffff,gr0 +[0-9a-f ]+: 80 f4 00 20 setlo 0x20,gr0 +[0-9a-f ]+: 80 f8 00 00 sethi hi\(0x0\),gr0 Disassembly of section \.rofixup: -000100e0 <__ROFIXUP_LIST__>: - 100e0: 00 01 41 98 subx\.p gr20,gr24,gr0,icc0 - 100e4: 00 01 41 9c subx\.p gr20,gr28,gr0,icc0 - 100e8: 00 01 41 ac subx\.p gr20,gr44,gr0,icc0 - 100ec: 00 01 41 94 subx\.p gr20,gr20,gr0,icc0 - 100f0: 00 01 41 58 subcc\.p gr20,gr24,gr0,icc0 - 100f4: 00 01 41 5c subcc\.p gr20,gr28,gr0,icc0 - 100f8: 00 01 41 a4 subx\.p gr20,gr36,gr0,icc0 - 100fc: 00 01 41 68 subcc\.p gr20,gr40,gr0,icc0 - 10100: 00 01 41 6c subcc\.p gr20,gr44,gr0,icc0 - 10104: 00 01 41 a0 subx\.p gr20,gr32,gr0,icc0 - 10108: 00 01 41 70 subcc\.p gr20,gr48,gr0,icc0 - 1010c: 00 01 41 74 subcc\.p gr20,gr52,gr0,icc0 - 10110: 00 01 41 80 subx\.p gr20,gr0,gr0,icc0 - 10114: 00 01 41 84 subx\.p gr20,gr4,gr0,icc0 - 10118: 00 01 41 78 subcc\.p gr20,gr56,gr0,icc0 - 1011c: 00 01 41 7c subcc\.p gr20,gr60,gr0,icc0 - 10120: 00 01 41 50 subcc\.p gr20,gr16,gr0,icc0 - 10124: 00 01 41 54 subcc\.p gr20,gr20,gr0,icc0 - 10128: 00 01 41 a8 subx\.p gr20,gr40,gr0,icc0 - 1012c: 00 01 41 44 subcc\.p gr20,gr4,gr0,icc0 - 10130: 00 01 41 60 subcc\.p gr20,gr32,gr0,icc0 - 10134: 00 01 41 64 subcc\.p gr20,gr36,gr0,icc0 - 10138: 00 01 41 48 subcc\.p gr20,gr8,gr0,icc0 - 1013c: 00 01 41 4c subcc\.p gr20,gr12,gr0,icc0 - 10140: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 -Disassembly of section \.data: - -00014144 : - 14144: 00 01 41 4c subcc\.p gr20,gr12,gr0,icc0 - -00014148 : - 14148: 00 01 41 60 subcc\.p gr20,gr32,gr0,icc0 - 1414c: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+<__ROFIXUP_LIST__>: +[0-9a-f ]+: 00 01 41 98 subx\.p gr20,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 9c subx\.p gr20,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 ac subx\.p gr20,gr44,gr0,icc0 +[0-9a-f ]+: 00 01 41 94 subx\.p gr20,gr20,gr0,icc0 +[0-9a-f ]+: 00 01 41 58 subcc\.p gr20,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 41 5c subcc\.p gr20,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 a4 subx\.p gr20,gr36,gr0,icc0 +[0-9a-f ]+: 00 01 41 68 subcc\.p gr20,gr40,gr0,icc0 +[0-9a-f ]+: 00 01 41 6c subcc\.p gr20,gr44,gr0,icc0 +[0-9a-f ]+: 00 01 41 a0 subx\.p gr20,gr32,gr0,icc0 +[0-9a-f ]+: 00 01 41 70 subcc\.p gr20,gr48,gr0,icc0 +[0-9a-f ]+: 00 01 41 74 subcc\.p gr20,gr52,gr0,icc0 +[0-9a-f ]+: 00 01 41 80 subx\.p gr20,gr0,gr0,icc0 +[0-9a-f ]+: 00 01 41 84 subx\.p gr20,gr4,gr0,icc0 +[0-9a-f ]+: 00 01 41 78 subcc\.p gr20,gr56,gr0,icc0 +[0-9a-f ]+: 00 01 41 7c subcc\.p gr20,gr60,gr0,icc0 +[0-9a-f ]+: 00 01 41 50 subcc\.p gr20,gr16,gr0,icc0 +[0-9a-f ]+: 00 01 41 54 subcc\.p gr20,gr20,gr0,icc0 +[0-9a-f ]+: 00 01 41 a8 subx\.p gr20,gr40,gr0,icc0 +[0-9a-f ]+: 00 01 41 44 subcc\.p gr20,gr4,gr0,icc0 +[0-9a-f ]+: 00 01 41 60 subcc\.p gr20,gr32,gr0,icc0 +[0-9a-f ]+: 00 01 41 64 subcc\.p gr20,gr36,gr0,icc0 +[0-9a-f ]+: 00 01 41 48 subcc\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 41 4c subcc\.p gr20,gr12,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +Disassembly of section \.dat[0-9a-f ]+: + +[0-9a-f ]+: +[0-9a-f ]+: 00 01 41 4c subcc\.p gr20,gr12,gr0,icc0 + +[0-9a-f ]+: +[0-9a-f ]+: 00 01 41 60 subcc\.p gr20,gr32,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 Disassembly of section \.got: -00014150 <_GLOBAL_OFFSET_TABLE_-0x38>: - 14150: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 14154: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14158: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 1415c: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14160: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 14164: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14168: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 1416c: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14170: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 14174: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14178: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 1417c: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 - 14180: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 14184: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x38>: +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 88 subx\.p gr20,gr8,gr0,icc0 -00014188 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 14194: 00 01 41 58 subcc\.p gr20,gr24,gr0,icc0 - 14198: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 1419c: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 - 141a0: 00 01 41 70 subcc\.p gr20,gr48,gr0,icc0 - 141a4: 00 01 41 68 subcc\.p gr20,gr40,gr0,icc0 - 141a8: 00 01 41 4c subcc\.p gr20,gr12,gr0,icc0 - 141ac: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 58 subcc\.p gr20,gr24,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 +[0-9a-f ]+: 00 01 41 70 subcc\.p gr20,gr48,gr0,icc0 +[0-9a-f ]+: 00 01 41 68 subcc\.p gr20,gr40,gr0,icc0 +[0-9a-f ]+: 00 01 41 4c subcc\.p gr20,gr12,gr0,icc0 +[0-9a-f ]+: 00 01 00 9c addx\.p gr16,gr28,gr0,icc0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-dynamic-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-dynamic-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-dynamic-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-dynamic-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,65 +7,65 @@ Disassembly of section \.text: -000102c8 <_start>: - 102c8: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 102cc: 00 88 00 00 nop\.p - 102d0: 80 88 00 00 nop - 102d4: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 102d8: 80 88 00 00 nop - 102dc: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 - 102e0: 80 88 00 00 nop - 102e4: 80 88 00 00 nop - 102e8: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 102ec: 00 88 00 00 nop\.p - 102f0: 80 88 00 00 nop - 102f4: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 102f8: 80 88 00 00 nop - 102fc: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 - 10300: 80 88 00 00 nop - 10304: 80 88 00 00 nop - 10308: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 1030c: 00 88 00 00 nop\.p - 10310: 80 88 00 00 nop - 10314: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 10318: 80 88 00 00 nop - 1031c: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 - 10320: 80 88 00 00 nop - 10324: 80 88 00 00 nop - 10328: 92 fc 00 00 setlos lo\(0x0\),gr9 - 1032c: 00 88 00 00 nop\.p - 10330: 80 88 00 00 nop - 10334: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10338: 80 88 00 00 nop - 1033c: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 - 10340: 80 88 00 00 nop - 10344: 80 88 00 00 nop - 10348: 00 88 00 00 nop\.p - 1034c: 90 fc f8 20 setlos 0xf*fffff820,gr8 - 10350: 00 88 00 00 nop\.p - 10354: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10358: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 1035c: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10360: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 10364: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10368: 00 88 00 00 nop\.p - 1036c: 80 88 00 00 nop - 10370: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 10374: 00 88 00 00 nop\.p - 10378: 80 88 00 00 nop - 1037c: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10380: 00 88 00 00 nop\.p - 10384: 80 88 00 00 nop - 10388: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 1038c: 00 88 00 00 nop\.p - 10390: 80 88 00 00 nop - 10394: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 90 fc f8 20 setlos 0xf*fffff820,gr8 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 Disassembly of section \.got: -00014428 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 14434: ff ff f8 20 cop2 -32,cpr63,cpr32,cpr63 - 14438: 00 00 00 00 add\.p gr0,gr0,gr0 - 14438: R_FRV_TLSOFF x - 1443c: ff ff f8 10 cop2 -32,cpr63,cpr16,cpr63 - 14440: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: ff ff f8 20 cop2 -32,cpr63,cpr32,cpr63 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: ff ff f8 10 cop2 -32,cpr63,cpr16,cpr63 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-dynamic-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-dynamic-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-dynamic-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-dynamic-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,194 +7,194 @@ Disassembly of section \.plt: -00010308 <\.plt>: - 10308: c0 3a 40 00 bralr - 1030c: 92 fc 08 21 setlos 0x821,gr9 - 10310: c0 3a 40 00 bralr - 10314: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 - 10318: 92 f4 f8 21 setlo 0xf821,gr9 - 1031c: c0 3a 40 00 bralr - 10320: 92 fc 00 01 setlos 0x1,gr9 - 10324: c0 3a 40 00 bralr - 10328: 92 c8 ff bc ldi @\(gr15,-68\),gr9 - 1032c: c0 3a 40 00 bralr - 10330: 92 fc f8 11 setlos 0xf*fffff811,gr9 - 10334: c0 3a 40 00 bralr - 10338: 92 fc 10 01 setlos 0x1001,gr9 - 1033c: c0 3a 40 00 bralr - 10340: 92 c8 ff d4 ldi @\(gr15,-44\),gr9 - 10344: c0 3a 40 00 bralr - 10348: 92 fc 08 11 setlos 0x811,gr9 - 1034c: c0 3a 40 00 bralr - 10350: 12 f8 00 01 sethi\.p 0x1,gr9 - 10354: 92 f4 00 01 setlo 0x1,gr9 - 10358: c0 3a 40 00 bralr - 1035c: 92 c8 ff ec ldi @\(gr15,-20\),gr9 - 10360: c0 3a 40 00 bralr - 10364: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 - 10368: 92 f4 f8 11 setlo 0xf811,gr9 - 1036c: c0 3a 40 00 bralr - 10370: 92 fc f8 21 setlos 0xf*fffff821,gr9 - 10374: c0 3a 40 00 bralr +[0-9a-f ]+<\.plt>: +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 92 fc 08 21 setlos 0x821,gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 21 setlo 0xf821,gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 92 fc 00 01 setlos 0x1,gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 92 c8 ff bc ldi @\(gr15,-68\),gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 92 fc f8 11 setlos 0xf*fffff811,gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 92 fc 10 01 setlos 0x1001,gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 92 c8 ff d4 ldi @\(gr15,-44\),gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 92 fc 08 11 setlos 0x811,gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 12 f8 00 01 sethi\.p 0x1,gr9 +[0-9a-f ]+: 92 f4 00 01 setlo 0x1,gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 92 c8 ff ec ldi @\(gr15,-20\),gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 11 setlo 0xf811,gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 92 fc f8 21 setlos 0xf*fffff821,gr9 +[0-9a-f ]+: c0 3a 40 00 bralr Disassembly of section \.text: -00010378 <_start>: - 10378: 92 fc f8 11 setlos 0xf*fffff811,gr9 - 1037c: 92 fc 08 11 setlos 0x811,gr9 - 10380: 92 c8 ff f4 ldi @\(gr15,-12\),gr9 - 10384: 00 88 00 00 nop\.p - 10388: 80 88 00 00 nop - 1038c: 92 fc f8 12 setlos 0xf*fffff812,gr9 - 10390: 80 88 00 00 nop - 10394: 00 88 00 00 nop\.p - 10398: 80 88 00 00 nop - 1039c: 92 fc 08 12 setlos 0x812,gr9 - 103a0: 80 88 00 00 nop - 103a4: 00 88 00 00 nop\.p - 103a8: 80 88 00 00 nop - 103ac: 92 f8 00 00 sethi hi\(0x0\),gr9 - 103b0: 92 f4 f8 12 setlo 0xf812,gr9 - 103b4: 12 fc f8 13 setlos\.p 0xf*fffff813,gr9 - 103b8: 80 88 00 00 nop - 103bc: 80 88 00 00 nop - 103c0: 12 fc 08 13 setlos\.p 0x813,gr9 - 103c4: 80 88 00 00 nop - 103c8: 80 88 00 00 nop - 103cc: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 - 103d0: 80 88 00 00 nop - 103d4: 92 f4 f8 13 setlo 0xf813,gr9 - 103d8: 80 88 00 00 nop - 103dc: 92 fc f8 14 setlos 0xf*fffff814,gr9 - 103e0: 80 88 00 00 nop - 103e4: 92 fc 08 14 setlos 0x814,gr9 - 103e8: 92 f8 00 00 sethi hi\(0x0\),gr9 - 103ec: 92 f4 f8 14 setlo 0xf814,gr9 - 103f0: 92 fc f8 21 setlos 0xf*fffff821,gr9 - 103f4: 92 fc 08 21 setlos 0x821,gr9 - 103f8: 92 c8 ff ac ldi @\(gr15,-84\),gr9 - 103fc: 00 88 00 00 nop\.p - 10400: 80 88 00 00 nop - 10404: 92 fc f8 22 setlos 0xf*fffff822,gr9 - 10408: 80 88 00 00 nop - 1040c: 00 88 00 00 nop\.p - 10410: 80 88 00 00 nop - 10414: 92 fc 08 22 setlos 0x822,gr9 - 10418: 80 88 00 00 nop - 1041c: 00 88 00 00 nop\.p - 10420: 80 88 00 00 nop - 10424: 92 f8 00 00 sethi hi\(0x0\),gr9 - 10428: 92 f4 f8 22 setlo 0xf822,gr9 - 1042c: 12 fc f8 23 setlos\.p 0xf*fffff823,gr9 - 10430: 80 88 00 00 nop - 10434: 80 88 00 00 nop - 10438: 12 fc 08 23 setlos\.p 0x823,gr9 - 1043c: 80 88 00 00 nop - 10440: 80 88 00 00 nop - 10444: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 - 10448: 80 88 00 00 nop - 1044c: 92 f4 f8 23 setlo 0xf823,gr9 - 10450: 80 88 00 00 nop - 10454: 92 fc f8 24 setlos 0xf*fffff824,gr9 - 10458: 80 88 00 00 nop - 1045c: 92 fc 08 24 setlos 0x824,gr9 - 10460: 92 f8 00 00 sethi hi\(0x0\),gr9 - 10464: 92 f4 f8 24 setlo 0xf824,gr9 - 10468: 92 fc 00 01 setlos 0x1,gr9 - 1046c: 92 fc 10 01 setlos 0x1001,gr9 - 10470: 92 c8 ff e4 ldi @\(gr15,-28\),gr9 - 10474: 00 88 00 00 nop\.p - 10478: 80 88 00 00 nop - 1047c: 92 fc 00 02 setlos 0x2,gr9 - 10480: 80 88 00 00 nop - 10484: 00 88 00 00 nop\.p - 10488: 80 88 00 00 nop - 1048c: 92 fc 10 02 setlos 0x1002,gr9 - 10490: 80 88 00 00 nop - 10494: 00 88 00 00 nop\.p - 10498: 80 88 00 00 nop - 1049c: 92 f8 00 01 sethi 0x1,gr9 - 104a0: 92 f4 00 02 setlo 0x2,gr9 - 104a4: 12 fc 00 03 setlos\.p 0x3,gr9 - 104a8: 80 88 00 00 nop - 104ac: 80 88 00 00 nop - 104b0: 12 fc 10 03 setlos\.p 0x1003,gr9 - 104b4: 80 88 00 00 nop - 104b8: 80 88 00 00 nop - 104bc: 12 f8 00 01 sethi\.p 0x1,gr9 - 104c0: 80 88 00 00 nop - 104c4: 92 f4 00 03 setlo 0x3,gr9 - 104c8: 80 88 00 00 nop - 104cc: 92 fc 00 04 setlos 0x4,gr9 - 104d0: 80 88 00 00 nop - 104d4: 92 fc 10 04 setlos 0x1004,gr9 - 104d8: 92 f8 00 01 sethi 0x1,gr9 - 104dc: 92 f4 00 04 setlo 0x4,gr9 - 104e0: 92 c8 ff bc ldi @\(gr15,-68\),gr9 - 104e4: 92 c8 ff d4 ldi @\(gr15,-44\),gr9 - 104e8: 92 c8 ff ec ldi @\(gr15,-20\),gr9 - 104ec: 00 88 00 00 nop\.p - 104f0: 80 88 00 00 nop - 104f4: 92 c8 f0 20 ldi @\(gr15,32\),gr9 - 104f8: 80 88 00 00 nop - 104fc: 00 88 00 00 nop\.p - 10500: 80 88 00 00 nop - 10504: 92 c8 f0 1c ldi @\(gr15,28\),gr9 - 10508: 80 88 00 00 nop - 1050c: 00 88 00 00 nop\.p - 10510: 80 88 00 00 nop - 10514: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 10518: 80 88 00 00 nop - 1051c: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 10520: 80 88 00 00 nop - 10524: 80 88 00 00 nop - 10528: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 - 1052c: 80 88 00 00 nop - 10530: 80 88 00 00 nop - 10534: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 - 10538: 80 88 00 00 nop - 1053c: 80 88 00 00 nop +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 fc f8 11 setlos 0xf*fffff811,gr9 +[0-9a-f ]+: 92 fc 08 11 setlos 0x811,gr9 +[0-9a-f ]+: 92 c8 ff f4 ldi @\(gr15,-12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 12 setlos 0xf*fffff812,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 12 setlos 0x812,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 12 setlo 0xf812,gr9 +[0-9a-f ]+: 12 fc f8 13 setlos\.p 0xf*fffff813,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 08 13 setlos\.p 0x813,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f4 f8 13 setlo 0xf813,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 14 setlos 0xf*fffff814,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 14 setlos 0x814,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 14 setlo 0xf814,gr9 +[0-9a-f ]+: 92 fc f8 21 setlos 0xf*fffff821,gr9 +[0-9a-f ]+: 92 fc 08 21 setlos 0x821,gr9 +[0-9a-f ]+: 92 c8 ff ac ldi @\(gr15,-84\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 22 setlos 0xf*fffff822,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 22 setlos 0x822,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 22 setlo 0xf822,gr9 +[0-9a-f ]+: 12 fc f8 23 setlos\.p 0xf*fffff823,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 08 23 setlos\.p 0x823,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f4 f8 23 setlo 0xf823,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 24 setlos 0xf*fffff824,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 24 setlos 0x824,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 24 setlo 0xf824,gr9 +[0-9a-f ]+: 92 fc 00 01 setlos 0x1,gr9 +[0-9a-f ]+: 92 fc 10 01 setlos 0x1001,gr9 +[0-9a-f ]+: 92 c8 ff e4 ldi @\(gr15,-28\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 02 setlos 0x2,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 10 02 setlos 0x1002,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f8 00 01 sethi 0x1,gr9 +[0-9a-f ]+: 92 f4 00 02 setlo 0x2,gr9 +[0-9a-f ]+: 12 fc 00 03 setlos\.p 0x3,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 10 03 setlos\.p 0x1003,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 f8 00 01 sethi\.p 0x1,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f4 00 03 setlo 0x3,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 04 setlos 0x4,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 10 04 setlos 0x1004,gr9 +[0-9a-f ]+: 92 f8 00 01 sethi 0x1,gr9 +[0-9a-f ]+: 92 f4 00 04 setlo 0x4,gr9 +[0-9a-f ]+: 92 c8 ff bc ldi @\(gr15,-68\),gr9 +[0-9a-f ]+: 92 c8 ff d4 ldi @\(gr15,-44\),gr9 +[0-9a-f ]+: 92 c8 ff ec ldi @\(gr15,-20\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 20 ldi @\(gr15,32\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 1c ldi @\(gr15,28\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop Disassembly of section \.got: -000145f8 <_GLOBAL_OFFSET_TABLE_-0x60>: - 145f8: 00 01 03 08 cmpb\.p gr16,gr8,icc0 - 145fc: 00 00 08 21 \*unknown\* - 14600: 00 01 03 08 cmpb\.p gr16,gr8,icc0 - 14604: 00 00 f8 21 \*unknown\* - 14608: 00 01 03 08 cmpb\.p gr16,gr8,icc0 - 1460c: 00 00 00 01 add\.p gr0,sp,gr0 - 14610: 00 00 00 00 add\.p gr0,gr0,gr0 - 14610: R_FRV_TLSDESC_VALUE x - 14614: 00 00 00 01 add\.p gr0,sp,gr0 - 14618: 00 01 03 08 cmpb\.p gr16,gr8,icc0 - 1461c: ff ff f8 11 cop2 -32,cpr63,cpr17,cpr63 - 14620: 00 01 03 08 cmpb\.p gr16,gr8,icc0 - 14624: 00 00 10 01 add\.p sp,sp,gr0 - 14628: 00 00 00 00 add\.p gr0,gr0,gr0 - 14628: R_FRV_TLSDESC_VALUE x - 1462c: 00 00 10 01 add\.p sp,sp,gr0 - 14630: 00 01 03 08 cmpb\.p gr16,gr8,icc0 - 14634: 00 00 08 11 \*unknown\* - 14638: 00 01 03 08 cmpb\.p gr16,gr8,icc0 - 1463c: 00 01 00 01 add\.p gr16,sp,gr0 - 14640: 00 00 00 00 add\.p gr0,gr0,gr0 - 14640: R_FRV_TLSDESC_VALUE x - 14644: 00 01 00 01 add\.p gr16,sp,gr0 - 14648: 00 01 03 08 cmpb\.p gr16,gr8,icc0 - 1464c: 00 00 f8 11 \*unknown\* - 14650: 00 01 03 08 cmpb\.p gr16,gr8,icc0 - 14654: ff ff f8 21 cop2 -32,cpr63,cpr33,cpr63 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x60>: +[0-9a-f ]+: 00 01 02 c0 .* +[0-9a-f ]+: 00 00 08 21 .* +[0-9a-f ]+: 00 01 02 c0 .* +[0-9a-f ]+: 00 00 f8 21 .* +[0-9a-f ]+: 00 01 02 c0 .* +[0-9a-f ]+: 00 00 00 01 .* +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 00 01 .* +[0-9a-f ]+: 00 01 02 c0 .* +[0-9a-f ]+: ff ff f8 11 .* +[0-9a-f ]+: 00 01 02 c0 .* +[0-9a-f ]+: 00 00 10 01 .* +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 10 01 .* +[0-9a-f ]+: 00 01 02 c0 .* +[0-9a-f ]+: 00 00 08 11 .* +[0-9a-f ]+: 00 01 02 c0 .* +[0-9a-f ]+: 00 01 00 01 .* +[0-9a-f ]+: 00 00 00 00 .* +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 01 00 01 .* +[0-9a-f ]+: 00 01 02 c0 .* +[0-9a-f ]+: 00 00 f8 11 .* +[0-9a-f ]+: 00 01 02 c0 .* +[0-9a-f ]+: ff ff f8 21 .* -00014658 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 14664: 00 00 00 03 add\.p gr0,gr3,gr0 - 14664: R_FRV_TLSOFF x - 14668: 00 00 10 03 add\.p sp,gr3,gr0 - 14668: R_FRV_TLSOFF x - 1466c: 00 01 00 03 add\.p gr16,gr3,gr0 - 1466c: R_FRV_TLSOFF x - 14670: 00 01 00 02 add\.p gr16,fp,gr0 - 14670: R_FRV_TLSOFF x - 14674: 00 00 10 02 add\.p sp,fp,gr0 - 14674: R_FRV_TLSOFF x - 14678: 00 00 00 02 add\.p gr0,fp,gr0 - 14678: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 00 03 .* +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 03 .* +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 03 .* +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 02 .* +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 02 .* +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 00 02 .* +[0-9a-f ]+: R_FRV_TLSOFF x diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-dynamic-3.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-dynamic-3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-dynamic-3.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-dynamic-3.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,21 +7,21 @@ Disassembly of section \.text: -00010294 <_start>: - 10294: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 10298: 00 88 00 00 nop\.p - 1029c: 80 88 00 00 nop - 102a0: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 102a4: 80 88 00 00 nop - 102a8: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 102ac: 80 88 00 00 nop - 102b0: 80 88 00 00 nop - 102b4: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 102b8: 00 88 00 00 nop\.p - 102bc: 80 88 00 00 nop - 102c0: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 Disassembly of section \.got: -00014350 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 1435c: R_FRV_TLSOFF u +[0-9a-f ]+: R_FRV_TLSOFF u diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-initial-shared-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-initial-shared-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-initial-shared-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-initial-shared-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -8,228 +8,228 @@ Disassembly of section \.plt: -00000464 <\.plt>: - 464: 92 c8 f0 5c ldi @\(gr15,92\),gr9 - 468: c0 3a 40 00 bralr - 46c: 90 cc ff e8 lddi @\(gr15,-24\),gr8 - 470: 80 30 80 00 jmpl @\(gr8,gr0\) - 474: 92 c8 f0 78 ldi @\(gr15,120\),gr9 - 478: c0 3a 40 00 bralr - 47c: 90 cc ff f8 lddi @\(gr15,-8\),gr8 - 480: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+<\.plt>: +[0-9a-f ]+: 92 c8 f0 5c ldi @\(gr15,92\),gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 90 cc ff e8 lddi @\(gr15,-24\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 92 c8 f0 78 ldi @\(gr15,120\),gr9 +[0-9a-f ]+: c0 3a 40 00 bralr +[0-9a-f ]+: 90 cc ff f8 lddi @\(gr15,-8\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) Disassembly of section \.text: -00000484 <_start>: - 484: 92 c8 f0 30 ldi @\(gr15,48\),gr9 - 488: 92 c8 f0 78 ldi @\(gr15,120\),gr9 - 48c: 92 c8 f0 4c ldi @\(gr15,76\),gr9 - 490: 00 88 00 00 nop\.p - 494: 80 88 00 00 nop - 498: 92 c8 f0 70 ldi @\(gr15,112\),gr9 - 49c: 80 88 00 00 nop - 4a0: 00 88 00 00 nop\.p - 4a4: 80 88 00 00 nop - 4a8: 92 c8 f0 7c ldi @\(gr15,124\),gr9 - 4ac: 80 88 00 00 nop - 4b0: 00 88 00 00 nop\.p - 4b4: 80 88 00 00 nop - 4b8: 92 c8 f0 8c ldi @\(gr15,140\),gr9 - 4bc: 80 88 00 00 nop - 4c0: 12 c8 f0 34 ldi\.p @\(gr15,52\),gr9 - 4c4: 80 88 00 00 nop - 4c8: 80 88 00 00 nop - 4cc: 12 c8 f0 3c ldi\.p @\(gr15,60\),gr9 - 4d0: 80 88 00 00 nop - 4d4: 80 88 00 00 nop - 4d8: 12 c8 f0 50 ldi\.p @\(gr15,80\),gr9 - 4dc: 80 88 00 00 nop - 4e0: 80 88 00 00 nop - 4e4: 80 88 00 00 nop - 4e8: 92 fc f8 14 setlos 0xf*fffff814,gr9 - 4ec: 80 88 00 00 nop - 4f0: 92 fc 08 14 setlos 0x814,gr9 - 4f4: 92 f8 00 00 sethi hi\(0x0\),gr9 - 4f8: 92 f4 f8 14 setlo 0xf814,gr9 - 4fc: 92 c8 f0 54 ldi @\(gr15,84\),gr9 - 500: 92 c8 f0 5c ldi @\(gr15,92\),gr9 - 504: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 508: 00 88 00 00 nop\.p - 50c: 80 88 00 00 nop - 510: 92 c8 f0 90 ldi @\(gr15,144\),gr9 - 514: 80 88 00 00 nop - 518: 00 88 00 00 nop\.p - 51c: 80 88 00 00 nop - 520: 92 c8 f0 60 ldi @\(gr15,96\),gr9 - 524: 80 88 00 00 nop - 528: 00 88 00 00 nop\.p - 52c: 80 88 00 00 nop - 530: 92 c8 f0 64 ldi @\(gr15,100\),gr9 - 534: 80 88 00 00 nop - 538: 12 c8 f0 58 ldi\.p @\(gr15,88\),gr9 - 53c: 80 88 00 00 nop - 540: 80 88 00 00 nop - 544: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 548: 80 88 00 00 nop - 54c: 80 88 00 00 nop - 550: 12 c8 f0 1c ldi\.p @\(gr15,28\),gr9 - 554: 80 88 00 00 nop - 558: 80 88 00 00 nop - 55c: 80 88 00 00 nop - 560: 92 fc f8 24 setlos 0xf*fffff824,gr9 - 564: 80 88 00 00 nop - 568: 92 fc 08 24 setlos 0x824,gr9 - 56c: 92 f8 00 00 sethi hi\(0x0\),gr9 - 570: 92 f4 f8 24 setlo 0xf824,gr9 - 574: 92 c8 f0 24 ldi @\(gr15,36\),gr9 - 578: fe 3f ff c1 call 47c - 57c: 92 c8 f0 40 ldi @\(gr15,64\),gr9 - 580: 00 88 00 00 nop\.p - 584: 80 88 00 00 nop - 588: 92 c8 f0 68 ldi @\(gr15,104\),gr9 - 58c: 80 88 00 00 nop - 590: 00 88 00 00 nop\.p - 594: 80 88 00 00 nop - 598: 92 c8 f0 80 ldi @\(gr15,128\),gr9 - 59c: 80 88 00 00 nop - 5a0: 00 88 00 00 nop\.p - 5a4: 80 88 00 00 nop - 5a8: 92 c8 f0 84 ldi @\(gr15,132\),gr9 - 5ac: 80 88 00 00 nop - 5b0: 12 c8 f0 28 ldi\.p @\(gr15,40\),gr9 - 5b4: 80 88 00 00 nop - 5b8: 80 88 00 00 nop - 5bc: 12 c8 f0 38 ldi\.p @\(gr15,56\),gr9 - 5c0: 80 88 00 00 nop - 5c4: 80 88 00 00 nop - 5c8: 12 c8 f0 44 ldi\.p @\(gr15,68\),gr9 - 5cc: 80 88 00 00 nop - 5d0: 80 88 00 00 nop - 5d4: 80 88 00 00 nop - 5d8: 92 fc 00 04 setlos 0x4,gr9 - 5dc: 80 88 00 00 nop - 5e0: 92 fc 10 04 setlos 0x1004,gr9 - 5e4: 92 f8 00 01 sethi 0x1,gr9 - 5e8: 92 f4 00 04 setlo 0x4,gr9 - 5ec: 92 c8 f0 2c ldi @\(gr15,44\),gr9 - 5f0: fe 3f ff 9f call 46c - 5f4: 92 c8 f0 48 ldi @\(gr15,72\),gr9 - 5f8: 00 88 00 00 nop\.p - 5fc: 80 88 00 00 nop - 600: 92 c8 f0 6c ldi @\(gr15,108\),gr9 - 604: 80 88 00 00 nop - 608: 00 88 00 00 nop\.p - 60c: 80 88 00 00 nop - 610: 92 c8 f0 74 ldi @\(gr15,116\),gr9 - 614: 80 88 00 00 nop - 618: 00 88 00 00 nop\.p - 61c: 80 88 00 00 nop - 620: 92 c8 f0 88 ldi @\(gr15,136\),gr9 - 624: 80 88 00 00 nop - 628: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 - 62c: 80 88 00 00 nop - 630: 80 88 00 00 nop - 634: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 - 638: 80 88 00 00 nop - 63c: 80 88 00 00 nop - 640: 12 c8 f0 20 ldi\.p @\(gr15,32\),gr9 - 644: 80 88 00 00 nop - 648: 80 88 00 00 nop - 64c: 92 c8 f0 30 ldi @\(gr15,48\),gr9 - 650: 92 c8 f0 4c ldi @\(gr15,76\),gr9 - 654: 92 c8 f0 54 ldi @\(gr15,84\),gr9 - 658: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 65c: 92 c8 f0 24 ldi @\(gr15,36\),gr9 - 660: 92 c8 f0 40 ldi @\(gr15,64\),gr9 - 664: 92 c8 f0 2c ldi @\(gr15,44\),gr9 - 668: 92 c8 f0 48 ldi @\(gr15,72\),gr9 - 66c: 80 88 00 00 nop - 670: 92 c8 f0 78 ldi @\(gr15,120\),gr9 - 674: 80 88 00 00 nop - 678: 80 88 00 00 nop - 67c: 92 c8 f0 5c ldi @\(gr15,92\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 30 ldi @\(gr15,48\),gr9 +[0-9a-f ]+: 92 c8 f0 78 ldi @\(gr15,120\),gr9 +[0-9a-f ]+: 92 c8 f0 4c ldi @\(gr15,76\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 70 ldi @\(gr15,112\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 7c ldi @\(gr15,124\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 8c ldi @\(gr15,140\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 34 ldi\.p @\(gr15,52\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 3c ldi\.p @\(gr15,60\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 50 ldi\.p @\(gr15,80\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 14 setlos 0xf*fffff814,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 14 setlos 0x814,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 14 setlo 0xf814,gr9 +[0-9a-f ]+: 92 c8 f0 54 ldi @\(gr15,84\),gr9 +[0-9a-f ]+: 92 c8 f0 5c ldi @\(gr15,92\),gr9 +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 90 ldi @\(gr15,144\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 60 ldi @\(gr15,96\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 64 ldi @\(gr15,100\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 58 ldi\.p @\(gr15,88\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 1c ldi\.p @\(gr15,28\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 24 setlos 0xf*fffff824,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 24 setlos 0x824,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 24 setlo 0xf824,gr9 +[0-9a-f ]+: 92 c8 f0 24 ldi @\(gr15,36\),gr9 +[0-9a-f ]+: fe 3f ff c1 call .* +[0-9a-f ]+: 92 c8 f0 40 ldi @\(gr15,64\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 68 ldi @\(gr15,104\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 80 ldi @\(gr15,128\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 84 ldi @\(gr15,132\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 28 ldi\.p @\(gr15,40\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 38 ldi\.p @\(gr15,56\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 44 ldi\.p @\(gr15,68\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 04 setlos 0x4,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 10 04 setlos 0x1004,gr9 +[0-9a-f ]+: 92 f8 00 01 sethi 0x1,gr9 +[0-9a-f ]+: 92 f4 00 04 setlo 0x4,gr9 +[0-9a-f ]+: 92 c8 f0 2c ldi @\(gr15,44\),gr9 +[0-9a-f ]+: fe 3f ff 9f call .* +[0-9a-f ]+: 92 c8 f0 48 ldi @\(gr15,72\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 6c ldi @\(gr15,108\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 74 ldi @\(gr15,116\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 88 ldi @\(gr15,136\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 20 ldi\.p @\(gr15,32\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 30 ldi @\(gr15,48\),gr9 +[0-9a-f ]+: 92 c8 f0 4c ldi @\(gr15,76\),gr9 +[0-9a-f ]+: 92 c8 f0 54 ldi @\(gr15,84\),gr9 +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 92 c8 f0 24 ldi @\(gr15,36\),gr9 +[0-9a-f ]+: 92 c8 f0 40 ldi @\(gr15,64\),gr9 +[0-9a-f ]+: 92 c8 f0 2c ldi @\(gr15,44\),gr9 +[0-9a-f ]+: 92 c8 f0 48 ldi @\(gr15,72\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 78 ldi @\(gr15,120\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 5c ldi @\(gr15,92\),gr9 Disassembly of section \.got: -00004718 <_GLOBAL_OFFSET_TABLE_-0x20>: - 4718: 00 00 00 00 add\.p gr0,gr0,gr0 - 4718: R_FRV_TLSDESC_VALUE \.tbss - 471c: 00 00 10 11 add\.p sp,gr17,gr0 - 4720: 00 00 00 00 add\.p gr0,gr0,gr0 - 4720: R_FRV_TLSDESC_VALUE x - 4724: 00 00 10 01 add\.p sp,sp,gr0 - 4728: 00 00 00 00 add\.p gr0,gr0,gr0 - 4728: R_FRV_TLSDESC_VALUE \.tbss - 472c: 00 00 10 01 add\.p sp,sp,gr0 - 4730: 00 00 00 00 add\.p gr0,gr0,gr0 - 4730: R_FRV_TLSDESC_VALUE \.tbss - 4734: 00 00 17 f1 \*unknown\* +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x20>: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 11 add\.p sp,gr17,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 17 f1 \*unknown\* -00004738 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4744: 00 00 10 13 add\.p sp,gr19,gr0 - 4744: R_FRV_TLSOFF \.tbss - 4748: 00 00 00 03 add\.p gr0,gr3,gr0 - 4748: R_FRV_TLSOFF x - 474c: 00 00 10 03 add\.p sp,gr3,gr0 - 474c: R_FRV_TLSOFF x - 4750: 00 01 00 11 add\.p gr16,gr17,gr0 - 4750: R_FRV_TLSOFF \.tbss - 4754: 00 01 00 13 add\.p gr16,gr19,gr0 - 4754: R_FRV_TLSOFF \.tbss - 4758: 00 01 00 03 add\.p gr16,gr3,gr0 - 4758: R_FRV_TLSOFF x - 475c: 00 00 07 f1 \*unknown\* - 475c: R_FRV_TLSOFF \.tbss - 4760: 00 00 07 f3 \*unknown\* - 4760: R_FRV_TLSOFF \.tbss - 4764: 00 00 00 01 add\.p gr0,sp,gr0 - 4764: R_FRV_TLSOFF x - 4768: 00 00 00 01 add\.p gr0,sp,gr0 - 4768: R_FRV_TLSOFF \.tbss - 476c: 00 00 00 03 add\.p gr0,gr3,gr0 - 476c: R_FRV_TLSOFF \.tbss - 4770: 00 00 17 f3 \*unknown\* - 4770: R_FRV_TLSOFF \.tbss - 4774: 00 00 10 03 add\.p sp,gr3,gr0 - 4774: R_FRV_TLSOFF \.tbss - 4778: 00 01 07 f1 \*unknown\* - 4778: R_FRV_TLSOFF \.tbss - 477c: 00 01 07 f3 \*unknown\* - 477c: R_FRV_TLSOFF \.tbss - 4780: 00 01 00 01 add\.p gr16,sp,gr0 - 4780: R_FRV_TLSOFF x - 4784: 00 01 00 01 add\.p gr16,sp,gr0 - 4784: R_FRV_TLSOFF \.tbss - 4788: 00 01 00 03 add\.p gr16,gr3,gr0 - 4788: R_FRV_TLSOFF \.tbss - 478c: 00 00 00 11 add\.p gr0,gr17,gr0 - 478c: R_FRV_TLSOFF \.tbss - 4790: 00 00 00 13 add\.p gr0,gr19,gr0 - 4790: R_FRV_TLSOFF \.tbss - 4794: 00 00 10 11 add\.p sp,gr17,gr0 - 4794: R_FRV_TLSOFF \.tbss - 4798: 00 00 10 12 add\.p sp,gr18,gr0 - 4798: R_FRV_TLSOFF \.tbss - 479c: 00 01 00 12 add\.p gr16,gr18,gr0 - 479c: R_FRV_TLSOFF \.tbss - 47a0: 00 00 07 f2 \*unknown\* - 47a0: R_FRV_TLSOFF \.tbss - 47a4: 00 00 00 02 add\.p gr0,fp,gr0 - 47a4: R_FRV_TLSOFF x - 47a8: 00 00 00 02 add\.p gr0,fp,gr0 - 47a8: R_FRV_TLSOFF \.tbss - 47ac: 00 00 10 02 add\.p sp,fp,gr0 - 47ac: R_FRV_TLSOFF x - 47b0: 00 00 10 01 add\.p sp,sp,gr0 - 47b0: R_FRV_TLSOFF \.tbss - 47b4: 00 00 10 02 add\.p sp,fp,gr0 - 47b4: R_FRV_TLSOFF \.tbss - 47b8: 00 00 17 f2 \*unknown\* - 47b8: R_FRV_TLSOFF \.tbss - 47bc: 00 01 07 f2 \*unknown\* - 47bc: R_FRV_TLSOFF \.tbss - 47c0: 00 01 00 02 add\.p gr16,fp,gr0 - 47c0: R_FRV_TLSOFF x - 47c4: 00 01 00 02 add\.p gr16,fp,gr0 - 47c4: R_FRV_TLSOFF \.tbss - 47c8: 00 00 00 12 add\.p gr0,gr18,gr0 - 47c8: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 13 add\.p sp,gr19,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 03 add\.p gr0,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 03 add\.p sp,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 11 add\.p gr16,gr17,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 13 add\.p gr16,gr19,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 03 add\.p gr16,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 07 f1 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 07 f3 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 01 add\.p gr0,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 00 01 add\.p gr0,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 03 add\.p gr0,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 17 f3 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 03 add\.p sp,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 07 f1 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 07 f3 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 03 add\.p gr16,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 11 add\.p gr0,gr17,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 13 add\.p gr0,gr19,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 11 add\.p sp,gr17,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 12 add\.p sp,gr18,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 12 add\.p gr16,gr18,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 07 f2 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 02 add\.p sp,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 02 add\.p sp,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 17 f2 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 07 f2 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 02 add\.p gr16,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 02 add\.p gr16,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 12 add\.p gr0,gr18,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-pie-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-pie-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-pie-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-pie-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,65 +7,65 @@ Disassembly of section \.text: -000003a0 <_start>: - 3a0: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 3a4: 00 88 00 00 nop\.p - 3a8: 80 88 00 00 nop - 3ac: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 3b0: 80 88 00 00 nop - 3b4: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 - 3b8: 80 88 00 00 nop - 3bc: 80 88 00 00 nop - 3c0: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 3c4: 00 88 00 00 nop\.p - 3c8: 80 88 00 00 nop - 3cc: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 3d0: 80 88 00 00 nop - 3d4: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 - 3d8: 80 88 00 00 nop - 3dc: 80 88 00 00 nop - 3e0: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 3e4: 00 88 00 00 nop\.p - 3e8: 80 88 00 00 nop - 3ec: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 3f0: 80 88 00 00 nop - 3f4: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 - 3f8: 80 88 00 00 nop - 3fc: 80 88 00 00 nop - 400: 92 fc 00 00 setlos lo\(0x0\),gr9 - 404: 00 88 00 00 nop\.p - 408: 80 88 00 00 nop - 40c: 92 fc 00 00 setlos lo\(0x0\),gr9 - 410: 80 88 00 00 nop - 414: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 - 418: 80 88 00 00 nop - 41c: 80 88 00 00 nop - 420: 00 88 00 00 nop\.p - 424: 90 fc f8 20 setlos 0xf*fffff820,gr8 - 428: 00 88 00 00 nop\.p - 42c: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 430: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 434: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 438: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 43c: 92 fc 00 00 setlos lo\(0x0\),gr9 - 440: 00 88 00 00 nop\.p - 444: 80 88 00 00 nop - 448: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 44c: 00 88 00 00 nop\.p - 450: 80 88 00 00 nop - 454: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 458: 00 88 00 00 nop\.p - 45c: 80 88 00 00 nop - 460: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 464: 00 88 00 00 nop\.p - 468: 80 88 00 00 nop - 46c: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 90 fc f8 20 setlos 0xf*fffff820,gr8 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 Disassembly of section \.got: -00004508 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4514: ff ff f8 20 cop2 -32,cpr63,cpr32,cpr63 - 4518: 00 00 00 00 add\.p gr0,gr0,gr0 - 4518: R_FRV_TLSOFF x - 451c: ff ff f8 10 cop2 -32,cpr63,cpr16,cpr63 - 4520: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: ff ff f8 20 cop2 -32,cpr63,cpr32,cpr63 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: ff ff f8 10 cop2 -32,cpr63,cpr16,cpr63 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-pie-3.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-pie-3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-pie-3.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-pie-3.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,21 +7,21 @@ Disassembly of section \.text: -00000324 <_start>: - 324: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 328: 00 88 00 00 nop\.p - 32c: 80 88 00 00 nop - 330: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 334: 80 88 00 00 nop - 338: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 33c: 80 88 00 00 nop - 340: 80 88 00 00 nop - 344: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 348: 00 88 00 00 nop\.p - 34c: 80 88 00 00 nop - 350: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 Disassembly of section \.got: -000043d8 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 43e4: R_FRV_TLSOFF u +[0-9a-f ]+: R_FRV_TLSOFF u diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-dynamic-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-dynamic-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-dynamic-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-dynamic-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,61 +7,61 @@ Disassembly of section \.text: -000102c8 <_start>: - 102c8: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 102cc: 00 88 00 00 nop\.p - 102d0: 80 88 00 00 nop - 102d4: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 102d8: 80 88 00 00 nop - 102dc: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 102e0: 80 88 00 00 nop - 102e4: 80 88 00 00 nop - 102e8: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 102ec: 00 88 00 00 nop\.p - 102f0: 80 88 00 00 nop - 102f4: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 102f8: 80 88 00 00 nop - 102fc: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 - 10300: 80 88 00 00 nop - 10304: 80 88 00 00 nop - 10308: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 1030c: 00 88 00 00 nop\.p - 10310: 80 88 00 00 nop - 10314: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 10318: 80 88 00 00 nop - 1031c: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 - 10320: 80 88 00 00 nop - 10324: 80 88 00 00 nop - 10328: 92 fc 00 00 setlos lo\(0x0\),gr9 - 1032c: 00 88 00 00 nop\.p - 10330: 80 88 00 00 nop - 10334: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10338: 80 88 00 00 nop - 1033c: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 - 10340: 80 88 00 00 nop - 10344: 80 88 00 00 nop - 10348: 00 88 00 00 nop\.p - 1034c: 90 fc f8 20 setlos 0xf*fffff820,gr8 - 10350: 00 88 00 00 nop\.p - 10354: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10358: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 1035c: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10360: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 10364: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10368: 00 88 00 00 nop\.p - 1036c: 80 88 00 00 nop - 10370: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 10374: 00 88 00 00 nop\.p - 10378: 80 88 00 00 nop - 1037c: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10380: 00 88 00 00 nop\.p - 10384: 80 88 00 00 nop - 10388: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 1038c: 00 88 00 00 nop\.p - 10390: 80 88 00 00 nop - 10394: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 90 fc f8 20 setlos 0xf*fffff820,gr8 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 Disassembly of section \.got: -00014428 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 14434: R_FRV_TLSOFF x +[0-9a-f ]+: R_FRV_TLSOFF x diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-dynamic-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-dynamic-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-dynamic-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-dynamic-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,143 +7,143 @@ Disassembly of section \.text: -00010308 <_start>: - 10308: 92 fc f8 11 setlos 0xf*fffff811,gr9 - 1030c: 92 fc 08 11 setlos 0x811,gr9 - 10310: 92 c8 f0 2c ldi @\(gr15,44\),gr9 - 10314: 00 88 00 00 nop\.p - 10318: 80 88 00 00 nop - 1031c: 92 fc f8 12 setlos 0xf*fffff812,gr9 - 10320: 80 88 00 00 nop - 10324: 00 88 00 00 nop\.p - 10328: 80 88 00 00 nop - 1032c: 92 fc 08 12 setlos 0x812,gr9 - 10330: 80 88 00 00 nop - 10334: 00 88 00 00 nop\.p - 10338: 80 88 00 00 nop - 1033c: 92 f8 00 00 sethi hi\(0x0\),gr9 - 10340: 92 f4 f8 12 setlo 0xf812,gr9 - 10344: 12 fc f8 13 setlos\.p 0xf*fffff813,gr9 - 10348: 80 88 00 00 nop - 1034c: 80 88 00 00 nop - 10350: 12 fc 08 13 setlos\.p 0x813,gr9 - 10354: 80 88 00 00 nop - 10358: 80 88 00 00 nop - 1035c: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 - 10360: 80 88 00 00 nop - 10364: 92 f4 f8 13 setlo 0xf813,gr9 - 10368: 80 88 00 00 nop - 1036c: 92 fc f8 14 setlos 0xf*fffff814,gr9 - 10370: 80 88 00 00 nop - 10374: 92 fc 08 14 setlos 0x814,gr9 - 10378: 92 f8 00 00 sethi hi\(0x0\),gr9 - 1037c: 92 f4 f8 14 setlo 0xf814,gr9 - 10380: 92 fc f8 21 setlos 0xf*fffff821,gr9 - 10384: 92 fc 08 21 setlos 0x821,gr9 - 10388: 92 c8 f0 14 ldi @\(gr15,20\),gr9 - 1038c: 00 88 00 00 nop\.p - 10390: 80 88 00 00 nop - 10394: 92 fc f8 22 setlos 0xf*fffff822,gr9 - 10398: 80 88 00 00 nop - 1039c: 00 88 00 00 nop\.p - 103a0: 80 88 00 00 nop - 103a4: 92 fc 08 22 setlos 0x822,gr9 - 103a8: 80 88 00 00 nop - 103ac: 00 88 00 00 nop\.p - 103b0: 80 88 00 00 nop - 103b4: 92 f8 00 00 sethi hi\(0x0\),gr9 - 103b8: 92 f4 f8 22 setlo 0xf822,gr9 - 103bc: 12 fc f8 23 setlos\.p 0xf*fffff823,gr9 - 103c0: 80 88 00 00 nop - 103c4: 80 88 00 00 nop - 103c8: 12 fc 08 23 setlos\.p 0x823,gr9 - 103cc: 80 88 00 00 nop - 103d0: 80 88 00 00 nop - 103d4: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 - 103d8: 80 88 00 00 nop - 103dc: 92 f4 f8 23 setlo 0xf823,gr9 - 103e0: 80 88 00 00 nop - 103e4: 92 fc f8 24 setlos 0xf*fffff824,gr9 - 103e8: 80 88 00 00 nop - 103ec: 92 fc 08 24 setlos 0x824,gr9 - 103f0: 92 f8 00 00 sethi hi\(0x0\),gr9 - 103f4: 92 f4 f8 24 setlo 0xf824,gr9 - 103f8: 92 fc 00 01 setlos 0x1,gr9 - 103fc: 92 fc 10 01 setlos 0x1001,gr9 - 10400: 92 c8 f0 24 ldi @\(gr15,36\),gr9 - 10404: 00 88 00 00 nop\.p - 10408: 80 88 00 00 nop - 1040c: 92 fc 00 02 setlos 0x2,gr9 - 10410: 80 88 00 00 nop - 10414: 00 88 00 00 nop\.p - 10418: 80 88 00 00 nop - 1041c: 92 fc 10 02 setlos 0x1002,gr9 - 10420: 80 88 00 00 nop - 10424: 00 88 00 00 nop\.p - 10428: 80 88 00 00 nop - 1042c: 92 f8 00 01 sethi 0x1,gr9 - 10430: 92 f4 00 02 setlo 0x2,gr9 - 10434: 12 fc 00 03 setlos\.p 0x3,gr9 - 10438: 80 88 00 00 nop - 1043c: 80 88 00 00 nop - 10440: 12 fc 10 03 setlos\.p 0x1003,gr9 - 10444: 80 88 00 00 nop - 10448: 80 88 00 00 nop - 1044c: 12 f8 00 01 sethi\.p 0x1,gr9 - 10450: 80 88 00 00 nop - 10454: 92 f4 00 03 setlo 0x3,gr9 - 10458: 80 88 00 00 nop - 1045c: 92 fc 00 04 setlos 0x4,gr9 - 10460: 80 88 00 00 nop - 10464: 92 fc 10 04 setlos 0x1004,gr9 - 10468: 92 f8 00 01 sethi 0x1,gr9 - 1046c: 92 f4 00 04 setlo 0x4,gr9 - 10470: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 10474: 92 c8 f0 1c ldi @\(gr15,28\),gr9 - 10478: 92 c8 f0 28 ldi @\(gr15,40\),gr9 - 1047c: 00 88 00 00 nop\.p - 10480: 80 88 00 00 nop - 10484: 92 c8 f0 38 ldi @\(gr15,56\),gr9 - 10488: 80 88 00 00 nop - 1048c: 00 88 00 00 nop\.p - 10490: 80 88 00 00 nop - 10494: 92 c8 f0 34 ldi @\(gr15,52\),gr9 - 10498: 80 88 00 00 nop - 1049c: 00 88 00 00 nop\.p - 104a0: 80 88 00 00 nop - 104a4: 92 c8 f0 30 ldi @\(gr15,48\),gr9 - 104a8: 80 88 00 00 nop - 104ac: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 104b0: 80 88 00 00 nop - 104b4: 80 88 00 00 nop - 104b8: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 - 104bc: 80 88 00 00 nop - 104c0: 80 88 00 00 nop - 104c4: 12 c8 f0 20 ldi\.p @\(gr15,32\),gr9 - 104c8: 80 88 00 00 nop - 104cc: 80 88 00 00 nop +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 fc f8 11 setlos 0xf*fffff811,gr9 +[0-9a-f ]+: 92 fc 08 11 setlos 0x811,gr9 +[0-9a-f ]+: 92 c8 f0 2c ldi @\(gr15,44\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 12 setlos 0xf*fffff812,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 12 setlos 0x812,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 12 setlo 0xf812,gr9 +[0-9a-f ]+: 12 fc f8 13 setlos\.p 0xf*fffff813,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 08 13 setlos\.p 0x813,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f4 f8 13 setlo 0xf813,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 14 setlos 0xf*fffff814,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 14 setlos 0x814,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 14 setlo 0xf814,gr9 +[0-9a-f ]+: 92 fc f8 21 setlos 0xf*fffff821,gr9 +[0-9a-f ]+: 92 fc 08 21 setlos 0x821,gr9 +[0-9a-f ]+: 92 c8 f0 14 ldi @\(gr15,20\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 22 setlos 0xf*fffff822,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 22 setlos 0x822,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 22 setlo 0xf822,gr9 +[0-9a-f ]+: 12 fc f8 23 setlos\.p 0xf*fffff823,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 08 23 setlos\.p 0x823,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 f8 00 00 sethi\.p hi\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f4 f8 23 setlo 0xf823,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 24 setlos 0xf*fffff824,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 24 setlos 0x824,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 24 setlo 0xf824,gr9 +[0-9a-f ]+: 92 fc 00 01 setlos 0x1,gr9 +[0-9a-f ]+: 92 fc 10 01 setlos 0x1001,gr9 +[0-9a-f ]+: 92 c8 f0 24 ldi @\(gr15,36\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 02 setlos 0x2,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 10 02 setlos 0x1002,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f8 00 01 sethi 0x1,gr9 +[0-9a-f ]+: 92 f4 00 02 setlo 0x2,gr9 +[0-9a-f ]+: 12 fc 00 03 setlos\.p 0x3,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 10 03 setlos\.p 0x1003,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 f8 00 01 sethi\.p 0x1,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 f4 00 03 setlo 0x3,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 04 setlos 0x4,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 10 04 setlos 0x1004,gr9 +[0-9a-f ]+: 92 f8 00 01 sethi 0x1,gr9 +[0-9a-f ]+: 92 f4 00 04 setlo 0x4,gr9 +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 92 c8 f0 1c ldi @\(gr15,28\),gr9 +[0-9a-f ]+: 92 c8 f0 28 ldi @\(gr15,40\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 38 ldi @\(gr15,56\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 34 ldi @\(gr15,52\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 30 ldi @\(gr15,48\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 20 ldi\.p @\(gr15,32\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop Disassembly of section \.got: -00014568 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 14574: 00 00 00 03 add\.p gr0,gr3,gr0 - 14574: R_FRV_TLSOFF x - 14578: 00 00 10 03 add\.p sp,gr3,gr0 - 14578: R_FRV_TLSOFF x - 1457c: 00 00 f8 21 \*unknown\* - 14580: 00 00 00 01 add\.p gr0,sp,gr0 - 14580: R_FRV_TLSOFF x - 14584: 00 00 10 01 add\.p sp,sp,gr0 - 14584: R_FRV_TLSOFF x - 14588: 00 01 00 03 add\.p gr16,gr3,gr0 - 14588: R_FRV_TLSOFF x - 1458c: 00 01 00 01 add\.p gr16,sp,gr0 - 14590: 00 01 00 01 add\.p gr16,sp,gr0 - 14590: R_FRV_TLSOFF x - 14594: 00 00 f8 11 \*unknown\* - 14598: 00 01 00 02 add\.p gr16,fp,gr0 - 14598: R_FRV_TLSOFF x - 1459c: 00 00 10 02 add\.p sp,fp,gr0 - 1459c: R_FRV_TLSOFF x - 145a0: 00 00 00 02 add\.p gr0,fp,gr0 - 145a0: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 00 03 add\.p gr0,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 03 add\.p sp,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 f8 21 \*unknown\* +[0-9a-f ]+: 00 00 00 01 add\.p gr0,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 03 add\.p gr16,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 f8 11 \*unknown\* +[0-9a-f ]+: 00 01 00 02 add\.p gr16,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 02 add\.p sp,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-dynamic-3.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-dynamic-3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-dynamic-3.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-dynamic-3.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,21 +7,21 @@ Disassembly of section \.text: -00010294 <_start>: - 10294: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 10298: 00 88 00 00 nop\.p - 1029c: 80 88 00 00 nop - 102a0: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 102a4: 80 88 00 00 nop - 102a8: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 102ac: 80 88 00 00 nop - 102b0: 80 88 00 00 nop - 102b4: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 102b8: 00 88 00 00 nop\.p - 102bc: 80 88 00 00 nop - 102c0: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 Disassembly of section \.got: -00014350 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 1435c: R_FRV_TLSOFF u +[0-9a-f ]+: R_FRV_TLSOFF u diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-initial-shared-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-initial-shared-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-initial-shared-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-initial-shared-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -8,207 +8,207 @@ Disassembly of section \.text: -00000454 <_start>: - 454: 92 c8 f0 34 ldi @\(gr15,52\),gr9 - 458: 92 c8 f0 44 ldi @\(gr15,68\),gr9 - 45c: 92 c8 f0 5c ldi @\(gr15,92\),gr9 - 460: 00 88 00 00 nop\.p - 464: 80 88 00 00 nop - 468: 92 c8 f0 7c ldi @\(gr15,124\),gr9 - 46c: 80 88 00 00 nop - 470: 00 88 00 00 nop\.p - 474: 80 88 00 00 nop - 478: 92 c8 f0 84 ldi @\(gr15,132\),gr9 - 47c: 80 88 00 00 nop - 480: 00 88 00 00 nop\.p - 484: 80 88 00 00 nop - 488: 92 c8 f0 94 ldi @\(gr15,148\),gr9 - 48c: 80 88 00 00 nop - 490: 12 c8 f0 38 ldi\.p @\(gr15,56\),gr9 - 494: 80 88 00 00 nop - 498: 80 88 00 00 nop - 49c: 12 c8 f0 48 ldi\.p @\(gr15,72\),gr9 - 4a0: 80 88 00 00 nop - 4a4: 80 88 00 00 nop - 4a8: 12 c8 f0 60 ldi\.p @\(gr15,96\),gr9 - 4ac: 80 88 00 00 nop - 4b0: 80 88 00 00 nop - 4b4: 80 88 00 00 nop - 4b8: 92 fc f8 14 setlos 0xf*fffff814,gr9 - 4bc: 80 88 00 00 nop - 4c0: 92 fc 08 14 setlos 0x814,gr9 - 4c4: 92 f8 00 00 sethi hi\(0x0\),gr9 - 4c8: 92 f4 f8 14 setlo 0xf814,gr9 - 4cc: 92 c8 f0 64 ldi @\(gr15,100\),gr9 - 4d0: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 4d4: 92 c8 f0 1c ldi @\(gr15,28\),gr9 - 4d8: 00 88 00 00 nop\.p - 4dc: 80 88 00 00 nop - 4e0: 92 c8 f0 98 ldi @\(gr15,152\),gr9 - 4e4: 80 88 00 00 nop - 4e8: 00 88 00 00 nop\.p - 4ec: 80 88 00 00 nop - 4f0: 92 c8 f0 6c ldi @\(gr15,108\),gr9 - 4f4: 80 88 00 00 nop - 4f8: 00 88 00 00 nop\.p - 4fc: 80 88 00 00 nop - 500: 92 c8 f0 70 ldi @\(gr15,112\),gr9 - 504: 80 88 00 00 nop - 508: 12 c8 f0 68 ldi\.p @\(gr15,104\),gr9 - 50c: 80 88 00 00 nop - 510: 80 88 00 00 nop - 514: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 - 518: 80 88 00 00 nop - 51c: 80 88 00 00 nop - 520: 12 c8 f0 20 ldi\.p @\(gr15,32\),gr9 - 524: 80 88 00 00 nop - 528: 80 88 00 00 nop - 52c: 80 88 00 00 nop - 530: 92 fc f8 24 setlos 0xf*fffff824,gr9 - 534: 80 88 00 00 nop - 538: 92 fc 08 24 setlos 0x824,gr9 - 53c: 92 f8 00 00 sethi hi\(0x0\),gr9 - 540: 92 f4 f8 24 setlo 0xf824,gr9 - 544: 92 c8 f0 28 ldi @\(gr15,40\),gr9 - 548: 92 c8 f0 4c ldi @\(gr15,76\),gr9 - 54c: 92 c8 f0 50 ldi @\(gr15,80\),gr9 - 550: 00 88 00 00 nop\.p - 554: 80 88 00 00 nop - 558: 92 c8 f0 74 ldi @\(gr15,116\),gr9 - 55c: 80 88 00 00 nop - 560: 00 88 00 00 nop\.p - 564: 80 88 00 00 nop - 568: 92 c8 f0 88 ldi @\(gr15,136\),gr9 - 56c: 80 88 00 00 nop - 570: 00 88 00 00 nop\.p - 574: 80 88 00 00 nop - 578: 92 c8 f0 8c ldi @\(gr15,140\),gr9 - 57c: 80 88 00 00 nop - 580: 12 c8 f0 2c ldi\.p @\(gr15,44\),gr9 - 584: 80 88 00 00 nop - 588: 80 88 00 00 nop - 58c: 12 c8 f0 3c ldi\.p @\(gr15,60\),gr9 - 590: 80 88 00 00 nop - 594: 80 88 00 00 nop - 598: 12 c8 f0 54 ldi\.p @\(gr15,84\),gr9 - 59c: 80 88 00 00 nop - 5a0: 80 88 00 00 nop - 5a4: 80 88 00 00 nop - 5a8: 92 fc 00 04 setlos 0x4,gr9 - 5ac: 80 88 00 00 nop - 5b0: 92 fc 10 04 setlos 0x1004,gr9 - 5b4: 92 f8 00 01 sethi 0x1,gr9 - 5b8: 92 f4 00 04 setlo 0x4,gr9 - 5bc: 92 c8 f0 30 ldi @\(gr15,48\),gr9 - 5c0: 92 c8 f0 40 ldi @\(gr15,64\),gr9 - 5c4: 92 c8 f0 58 ldi @\(gr15,88\),gr9 - 5c8: 00 88 00 00 nop\.p - 5cc: 80 88 00 00 nop - 5d0: 92 c8 f0 78 ldi @\(gr15,120\),gr9 - 5d4: 80 88 00 00 nop - 5d8: 00 88 00 00 nop\.p - 5dc: 80 88 00 00 nop - 5e0: 92 c8 f0 80 ldi @\(gr15,128\),gr9 - 5e4: 80 88 00 00 nop - 5e8: 00 88 00 00 nop\.p - 5ec: 80 88 00 00 nop - 5f0: 92 c8 f0 90 ldi @\(gr15,144\),gr9 - 5f4: 80 88 00 00 nop - 5f8: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 - 5fc: 80 88 00 00 nop - 600: 80 88 00 00 nop - 604: 12 c8 f0 18 ldi\.p @\(gr15,24\),gr9 - 608: 80 88 00 00 nop - 60c: 80 88 00 00 nop - 610: 12 c8 f0 24 ldi\.p @\(gr15,36\),gr9 - 614: 80 88 00 00 nop - 618: 80 88 00 00 nop - 61c: 92 c8 f0 34 ldi @\(gr15,52\),gr9 - 620: 92 c8 f0 5c ldi @\(gr15,92\),gr9 - 624: 92 c8 f0 64 ldi @\(gr15,100\),gr9 - 628: 92 c8 f0 1c ldi @\(gr15,28\),gr9 - 62c: 92 c8 f0 28 ldi @\(gr15,40\),gr9 - 630: 92 c8 f0 50 ldi @\(gr15,80\),gr9 - 634: 92 c8 f0 30 ldi @\(gr15,48\),gr9 - 638: 92 c8 f0 58 ldi @\(gr15,88\),gr9 - 63c: 80 88 00 00 nop - 640: 92 c8 f0 44 ldi @\(gr15,68\),gr9 - 644: 80 88 00 00 nop - 648: 80 88 00 00 nop - 64c: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 34 ldi @\(gr15,52\),gr9 +[0-9a-f ]+: 92 c8 f0 44 ldi @\(gr15,68\),gr9 +[0-9a-f ]+: 92 c8 f0 5c ldi @\(gr15,92\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 7c ldi @\(gr15,124\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 84 ldi @\(gr15,132\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 94 ldi @\(gr15,148\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 38 ldi\.p @\(gr15,56\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 48 ldi\.p @\(gr15,72\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 60 ldi\.p @\(gr15,96\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 14 setlos 0xf*fffff814,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 14 setlos 0x814,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 14 setlo 0xf814,gr9 +[0-9a-f ]+: 92 c8 f0 64 ldi @\(gr15,100\),gr9 +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 92 c8 f0 1c ldi @\(gr15,28\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 98 ldi @\(gr15,152\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 6c ldi @\(gr15,108\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 70 ldi @\(gr15,112\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 68 ldi\.p @\(gr15,104\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 20 ldi\.p @\(gr15,32\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 24 setlos 0xf*fffff824,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 24 setlos 0x824,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 24 setlo 0xf824,gr9 +[0-9a-f ]+: 92 c8 f0 28 ldi @\(gr15,40\),gr9 +[0-9a-f ]+: 92 c8 f0 4c ldi @\(gr15,76\),gr9 +[0-9a-f ]+: 92 c8 f0 50 ldi @\(gr15,80\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 74 ldi @\(gr15,116\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 88 ldi @\(gr15,136\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 8c ldi @\(gr15,140\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 2c ldi\.p @\(gr15,44\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 3c ldi\.p @\(gr15,60\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 54 ldi\.p @\(gr15,84\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 04 setlos 0x4,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 10 04 setlos 0x1004,gr9 +[0-9a-f ]+: 92 f8 00 01 sethi 0x1,gr9 +[0-9a-f ]+: 92 f4 00 04 setlo 0x4,gr9 +[0-9a-f ]+: 92 c8 f0 30 ldi @\(gr15,48\),gr9 +[0-9a-f ]+: 92 c8 f0 40 ldi @\(gr15,64\),gr9 +[0-9a-f ]+: 92 c8 f0 58 ldi @\(gr15,88\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 78 ldi @\(gr15,120\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 80 ldi @\(gr15,128\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 90 ldi @\(gr15,144\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 18 ldi\.p @\(gr15,24\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 24 ldi\.p @\(gr15,36\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 34 ldi @\(gr15,52\),gr9 +[0-9a-f ]+: 92 c8 f0 5c ldi @\(gr15,92\),gr9 +[0-9a-f ]+: 92 c8 f0 64 ldi @\(gr15,100\),gr9 +[0-9a-f ]+: 92 c8 f0 1c ldi @\(gr15,28\),gr9 +[0-9a-f ]+: 92 c8 f0 28 ldi @\(gr15,40\),gr9 +[0-9a-f ]+: 92 c8 f0 50 ldi @\(gr15,80\),gr9 +[0-9a-f ]+: 92 c8 f0 30 ldi @\(gr15,48\),gr9 +[0-9a-f ]+: 92 c8 f0 58 ldi @\(gr15,88\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 44 ldi @\(gr15,68\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 Disassembly of section \.got: -000046e8 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 46f4: 00 00 10 11 add\.p sp,gr17,gr0 - 46f4: R_FRV_TLSOFF \.tbss - 46f8: 00 00 10 13 add\.p sp,gr19,gr0 - 46f8: R_FRV_TLSOFF \.tbss - 46fc: 00 00 00 03 add\.p gr0,gr3,gr0 - 46fc: R_FRV_TLSOFF x - 4700: 00 00 10 03 add\.p sp,gr3,gr0 - 4700: R_FRV_TLSOFF x - 4704: 00 01 00 11 add\.p gr16,gr17,gr0 - 4704: R_FRV_TLSOFF \.tbss - 4708: 00 01 00 13 add\.p gr16,gr19,gr0 - 4708: R_FRV_TLSOFF \.tbss - 470c: 00 01 00 03 add\.p gr16,gr3,gr0 - 470c: R_FRV_TLSOFF x - 4710: 00 00 07 f1 \*unknown\* - 4710: R_FRV_TLSOFF \.tbss - 4714: 00 00 07 f3 \*unknown\* - 4714: R_FRV_TLSOFF \.tbss - 4718: 00 00 00 01 add\.p gr0,sp,gr0 - 4718: R_FRV_TLSOFF x - 471c: 00 00 00 01 add\.p gr0,sp,gr0 - 471c: R_FRV_TLSOFF \.tbss - 4720: 00 00 00 03 add\.p gr0,gr3,gr0 - 4720: R_FRV_TLSOFF \.tbss - 4724: 00 00 17 f3 \*unknown\* - 4724: R_FRV_TLSOFF \.tbss - 4728: 00 00 10 01 add\.p sp,sp,gr0 - 4728: R_FRV_TLSOFF x - 472c: 00 00 10 01 add\.p sp,sp,gr0 - 472c: R_FRV_TLSOFF \.tbss - 4730: 00 00 10 03 add\.p sp,gr3,gr0 - 4730: R_FRV_TLSOFF \.tbss - 4734: 00 00 17 f1 \*unknown\* - 4734: R_FRV_TLSOFF \.tbss - 4738: 00 01 07 f1 \*unknown\* - 4738: R_FRV_TLSOFF \.tbss - 473c: 00 01 07 f3 \*unknown\* - 473c: R_FRV_TLSOFF \.tbss - 4740: 00 01 00 01 add\.p gr16,sp,gr0 - 4740: R_FRV_TLSOFF x - 4744: 00 01 00 01 add\.p gr16,sp,gr0 - 4744: R_FRV_TLSOFF \.tbss - 4748: 00 01 00 03 add\.p gr16,gr3,gr0 - 4748: R_FRV_TLSOFF \.tbss - 474c: 00 00 00 11 add\.p gr0,gr17,gr0 - 474c: R_FRV_TLSOFF \.tbss - 4750: 00 00 00 13 add\.p gr0,gr19,gr0 - 4750: R_FRV_TLSOFF \.tbss - 4754: 00 00 10 12 add\.p sp,gr18,gr0 - 4754: R_FRV_TLSOFF \.tbss - 4758: 00 01 00 12 add\.p gr16,gr18,gr0 - 4758: R_FRV_TLSOFF \.tbss - 475c: 00 00 07 f2 \*unknown\* - 475c: R_FRV_TLSOFF \.tbss - 4760: 00 00 00 02 add\.p gr0,fp,gr0 - 4760: R_FRV_TLSOFF x - 4764: 00 00 00 02 add\.p gr0,fp,gr0 - 4764: R_FRV_TLSOFF \.tbss - 4768: 00 00 10 02 add\.p sp,fp,gr0 - 4768: R_FRV_TLSOFF x - 476c: 00 00 10 02 add\.p sp,fp,gr0 - 476c: R_FRV_TLSOFF \.tbss - 4770: 00 00 17 f2 \*unknown\* - 4770: R_FRV_TLSOFF \.tbss - 4774: 00 01 07 f2 \*unknown\* - 4774: R_FRV_TLSOFF \.tbss - 4778: 00 01 00 02 add\.p gr16,fp,gr0 - 4778: R_FRV_TLSOFF x - 477c: 00 01 00 02 add\.p gr16,fp,gr0 - 477c: R_FRV_TLSOFF \.tbss - 4780: 00 00 00 12 add\.p gr0,gr18,gr0 - 4780: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 11 add\.p sp,gr17,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 13 add\.p sp,gr19,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 03 add\.p gr0,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 03 add\.p sp,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 11 add\.p gr16,gr17,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 13 add\.p gr16,gr19,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 03 add\.p gr16,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 07 f1 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 07 f3 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 01 add\.p gr0,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 00 01 add\.p gr0,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 03 add\.p gr0,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 17 f3 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 03 add\.p sp,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 17 f1 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 07 f1 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 07 f3 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 03 add\.p gr16,gr3,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 11 add\.p gr0,gr17,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 13 add\.p gr0,gr19,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 12 add\.p sp,gr18,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 12 add\.p gr16,gr18,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 07 f2 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 10 02 add\.p sp,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 00 10 02 add\.p sp,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 17 f2 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 07 f2 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 01 00 02 add\.p gr16,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: 00 01 00 02 add\.p gr16,fp,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 12 add\.p gr0,gr18,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-pie-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-pie-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-pie-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-pie-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,61 +7,61 @@ Disassembly of section \.text: -000003a0 <_start>: - 3a0: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 3a4: 00 88 00 00 nop\.p - 3a8: 80 88 00 00 nop - 3ac: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 3b0: 80 88 00 00 nop - 3b4: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 3b8: 80 88 00 00 nop - 3bc: 80 88 00 00 nop - 3c0: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 3c4: 00 88 00 00 nop\.p - 3c8: 80 88 00 00 nop - 3cc: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 3d0: 80 88 00 00 nop - 3d4: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 - 3d8: 80 88 00 00 nop - 3dc: 80 88 00 00 nop - 3e0: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 3e4: 00 88 00 00 nop\.p - 3e8: 80 88 00 00 nop - 3ec: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 3f0: 80 88 00 00 nop - 3f4: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 - 3f8: 80 88 00 00 nop - 3fc: 80 88 00 00 nop - 400: 92 fc 00 00 setlos lo\(0x0\),gr9 - 404: 00 88 00 00 nop\.p - 408: 80 88 00 00 nop - 40c: 92 fc 00 00 setlos lo\(0x0\),gr9 - 410: 80 88 00 00 nop - 414: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 - 418: 80 88 00 00 nop - 41c: 80 88 00 00 nop - 420: 00 88 00 00 nop\.p - 424: 90 fc f8 20 setlos 0xf*fffff820,gr8 - 428: 00 88 00 00 nop\.p - 42c: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 430: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 434: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 438: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 43c: 92 fc 00 00 setlos lo\(0x0\),gr9 - 440: 00 88 00 00 nop\.p - 444: 80 88 00 00 nop - 448: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 44c: 00 88 00 00 nop\.p - 450: 80 88 00 00 nop - 454: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 458: 00 88 00 00 nop\.p - 45c: 80 88 00 00 nop - 460: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 464: 00 88 00 00 nop\.p - 468: 80 88 00 00 nop - 46c: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 90 fc f8 20 setlos 0xf*fffff820,gr8 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 Disassembly of section \.got: -00004508 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4514: R_FRV_TLSOFF x +[0-9a-f ]+: R_FRV_TLSOFF x diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-pie-3.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-pie-3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-pie-3.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-pie-3.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,21 +7,21 @@ Disassembly of section \.text: -00000324 <_start>: - 324: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 328: 00 88 00 00 nop\.p - 32c: 80 88 00 00 nop - 330: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 334: 80 88 00 00 nop - 338: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 33c: 80 88 00 00 nop - 340: 80 88 00 00 nop - 344: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 348: 00 88 00 00 nop\.p - 34c: 80 88 00 00 nop - 350: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 Disassembly of section \.got: -000043d8 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 43e4: R_FRV_TLSOFF u +[0-9a-f ]+: R_FRV_TLSOFF u diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-shared-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-shared-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-shared-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-shared-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,67 +7,67 @@ Disassembly of section \.text: -00000354 <_start>: - 354: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 358: 00 88 00 00 nop\.p - 35c: 80 88 00 00 nop - 360: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 364: 80 88 00 00 nop - 368: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 - 36c: 80 88 00 00 nop - 370: 80 88 00 00 nop - 374: 92 c8 f0 14 ldi @\(gr15,20\),gr9 - 378: 00 88 00 00 nop\.p - 37c: 80 88 00 00 nop - 380: 92 c8 f0 14 ldi @\(gr15,20\),gr9 - 384: 80 88 00 00 nop - 388: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 - 38c: 80 88 00 00 nop - 390: 80 88 00 00 nop - 394: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 398: 00 88 00 00 nop\.p - 39c: 80 88 00 00 nop - 3a0: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 3a4: 80 88 00 00 nop - 3a8: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 3ac: 80 88 00 00 nop - 3b0: 80 88 00 00 nop - 3b4: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 3b8: 00 88 00 00 nop\.p - 3bc: 80 88 00 00 nop - 3c0: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 3c4: 80 88 00 00 nop - 3c8: 12 c8 f0 18 ldi\.p @\(gr15,24\),gr9 - 3cc: 80 88 00 00 nop - 3d0: 80 88 00 00 nop - 3d4: 00 88 00 00 nop\.p - 3d8: 90 fc f8 20 setlos 0xf*fffff820,gr8 - 3dc: 00 88 00 00 nop\.p - 3e0: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 3e4: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 3e8: 92 c8 f0 14 ldi @\(gr15,20\),gr9 - 3ec: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 3f0: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 3f4: 00 88 00 00 nop\.p - 3f8: 80 88 00 00 nop - 3fc: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 400: 00 88 00 00 nop\.p - 404: 80 88 00 00 nop - 408: 92 c8 f0 14 ldi @\(gr15,20\),gr9 - 40c: 00 88 00 00 nop\.p - 410: 80 88 00 00 nop - 414: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 418: 00 88 00 00 nop\.p - 41c: 80 88 00 00 nop - 420: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 14 ldi @\(gr15,20\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 14 ldi @\(gr15,20\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 18 ldi\.p @\(gr15,24\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 90 fc f8 20 setlos 0xf*fffff820,gr8 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 92 c8 f0 14 ldi @\(gr15,20\),gr9 +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 14 ldi @\(gr15,20\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 Disassembly of section \.got: -000044b8 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 44c4: 00 00 00 10 add\.p gr0,gr16,gr0 - 44c4: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 10 add\.p gr0,gr16,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss \.\.\. - 44c8: R_FRV_TLSOFF x - 44cc: R_FRV_TLSOFF \.tbss - 44d0: 00 00 07 f0 \*unknown\* - 44d0: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 07 f0 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-shared-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-shared-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-shared-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-shared-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,258 +7,258 @@ Disassembly of section \.plt: -00000454 <\.plt>: - 454: 90 cc f0 10 lddi @\(gr15,16\),gr8 - 458: 80 30 80 00 jmpl @\(gr8,gr0\) - 45c: 90 cc f0 30 lddi @\(gr15,48\),gr8 - 460: 80 30 80 00 jmpl @\(gr8,gr0\) - 464: 90 cc f0 40 lddi @\(gr15,64\),gr8 - 468: 80 30 80 00 jmpl @\(gr8,gr0\) - 46c: 90 cc f0 50 lddi @\(gr15,80\),gr8 - 470: 80 30 80 00 jmpl @\(gr8,gr0\) - 474: 90 cc f0 58 lddi @\(gr15,88\),gr8 - 478: 80 30 80 00 jmpl @\(gr8,gr0\) - 47c: 90 cc f0 68 lddi @\(gr15,104\),gr8 - 480: 80 30 80 00 jmpl @\(gr8,gr0\) - 484: 90 cc ff a8 lddi @\(gr15,-88\),gr8 - 488: 80 30 80 00 jmpl @\(gr8,gr0\) - 48c: 90 cc ff b0 lddi @\(gr15,-80\),gr8 - 490: 80 30 80 00 jmpl @\(gr8,gr0\) - 494: 90 cc ff c8 lddi @\(gr15,-56\),gr8 - 498: 80 30 80 00 jmpl @\(gr8,gr0\) - 49c: 90 cc ff d8 lddi @\(gr15,-40\),gr8 - 4a0: 80 30 80 00 jmpl @\(gr8,gr0\) - 4a4: 90 cc ff e0 lddi @\(gr15,-32\),gr8 - 4a8: 80 30 80 00 jmpl @\(gr8,gr0\) - 4ac: 90 cc ff f0 lddi @\(gr15,-16\),gr8 - 4b0: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+<\.plt>: +[0-9a-f ]+: 90 cc f0 10 lddi @\(gr15,16\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 30 lddi @\(gr15,48\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 40 lddi @\(gr15,64\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 50 lddi @\(gr15,80\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 58 lddi @\(gr15,88\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 68 lddi @\(gr15,104\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff a8 lddi @\(gr15,-88\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff b0 lddi @\(gr15,-80\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff c8 lddi @\(gr15,-56\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff d8 lddi @\(gr15,-40\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff e0 lddi @\(gr15,-32\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff f0 lddi @\(gr15,-16\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) Disassembly of section \.text: -000004b4 <_start>: - 4b4: fe 3f ff f0 call 474 - 4b8: fe 3f ff f5 call 48c - 4bc: fe 3f ff fa call 4a4 - 4c0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 4c4: 9c f4 00 98 setlo 0x98,gr14 - 4c8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 4cc: 82 30 80 00 calll @\(gr8,gr0\) - 4d0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 4d4: 9c f4 00 a8 setlo 0xa8,gr14 - 4d8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 4dc: 82 30 80 00 calll @\(gr8,gr0\) - 4e0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 4e4: 9c f4 00 c0 setlo 0xc0,gr14 - 4e8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 4ec: 82 30 80 00 calll @\(gr8,gr0\) - 4f0: 10 cc f0 60 lddi\.p @\(gr15,96\),gr8 - 4f4: 9c fc 00 60 setlos 0x60,gr14 - 4f8: 82 30 80 00 calll @\(gr8,gr0\) - 4fc: 10 cc ff b8 lddi\.p @\(gr15,-72\),gr8 - 500: 9c fc ff b8 setlos 0xf*ffffffb8,gr14 - 504: 82 30 80 00 calll @\(gr8,gr0\) - 508: 10 cc ff e8 lddi\.p @\(gr15,-24\),gr8 - 50c: 9c fc ff e8 setlos 0xf*ffffffe8,gr14 - 510: 82 30 80 00 calll @\(gr8,gr0\) - 514: 80 88 00 00 nop - 518: 92 fc f8 14 setlos 0xf*fffff814,gr9 - 51c: 80 88 00 00 nop - 520: 92 fc 08 14 setlos 0x814,gr9 - 524: 92 f8 00 00 sethi hi\(0x0\),gr9 - 528: 92 f4 f8 14 setlo 0xf814,gr9 - 52c: fe 3f ff e0 call 4ac - 530: fe 3f ff c9 call 454 - 534: fe 3f ff ca call 45c - 538: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 53c: 9c f4 00 c8 setlo 0xc8,gr14 - 540: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 544: 82 30 80 00 calll @\(gr8,gr0\) - 548: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 54c: 9c f4 00 78 setlo 0x78,gr14 - 550: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 554: 82 30 80 00 calll @\(gr8,gr0\) - 558: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 55c: 9c f4 00 88 setlo 0x88,gr14 - 560: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 564: 82 30 80 00 calll @\(gr8,gr0\) - 568: 10 cc ff f8 lddi\.p @\(gr15,-8\),gr8 - 56c: 9c fc ff f8 setlos 0xf*fffffff8,gr14 - 570: 82 30 80 00 calll @\(gr8,gr0\) - 574: 10 cc f0 18 lddi\.p @\(gr15,24\),gr8 - 578: 9c fc 00 18 setlos 0x18,gr14 - 57c: 82 30 80 00 calll @\(gr8,gr0\) - 580: 10 cc f0 38 lddi\.p @\(gr15,56\),gr8 - 584: 9c fc 00 38 setlos 0x38,gr14 - 588: 82 30 80 00 calll @\(gr8,gr0\) - 58c: 80 88 00 00 nop - 590: 92 fc f8 24 setlos 0xf*fffff824,gr9 - 594: 80 88 00 00 nop - 598: 92 fc 08 24 setlos 0x824,gr9 - 59c: 92 f8 00 00 sethi hi\(0x0\),gr9 - 5a0: 92 f4 f8 24 setlo 0xf824,gr9 - 5a4: fe 3f ff b0 call 464 - 5a8: fe 3f ff b5 call 47c - 5ac: fe 3f ff ba call 494 - 5b0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 5b4: 9c f4 00 90 setlo 0x90,gr14 - 5b8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 5bc: 82 30 80 00 calll @\(gr8,gr0\) - 5c0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 5c4: 9c f4 00 a0 setlo 0xa0,gr14 - 5c8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 5cc: 82 30 80 00 calll @\(gr8,gr0\) - 5d0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 5d4: 9c f4 00 b8 setlo 0xb8,gr14 - 5d8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 5dc: 82 30 80 00 calll @\(gr8,gr0\) - 5e0: 10 cc f0 48 lddi\.p @\(gr15,72\),gr8 - 5e4: 9c fc 00 48 setlos 0x48,gr14 - 5e8: 82 30 80 00 calll @\(gr8,gr0\) - 5ec: 10 cc ff a0 lddi\.p @\(gr15,-96\),gr8 - 5f0: 9c fc ff a0 setlos 0xf*ffffffa0,gr14 - 5f4: 82 30 80 00 calll @\(gr8,gr0\) - 5f8: 10 cc ff d0 lddi\.p @\(gr15,-48\),gr8 - 5fc: 9c fc ff d0 setlos 0xf*ffffffd0,gr14 - 600: 82 30 80 00 calll @\(gr8,gr0\) - 604: 80 88 00 00 nop - 608: 92 fc 00 04 setlos 0x4,gr9 - 60c: 80 88 00 00 nop - 610: 92 fc 10 04 setlos 0x1004,gr9 - 614: 92 f8 00 01 sethi 0x1,gr9 - 618: 92 f4 00 04 setlo 0x4,gr9 - 61c: fe 3f ff 94 call 46c - 620: fe 3f ff 99 call 484 - 624: fe 3f ff 9e call 49c - 628: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 62c: 9c f4 00 b0 setlo 0xb0,gr14 - 630: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 634: 82 30 80 00 calll @\(gr8,gr0\) - 638: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 63c: 9c f4 00 80 setlo 0x80,gr14 - 640: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 644: 82 30 80 00 calll @\(gr8,gr0\) - 648: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 64c: 9c f4 00 70 setlo 0x70,gr14 - 650: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 654: 82 30 80 00 calll @\(gr8,gr0\) - 658: 10 cc f0 20 lddi\.p @\(gr15,32\),gr8 - 65c: 9c fc 00 20 setlos 0x20,gr14 - 660: 82 30 80 00 calll @\(gr8,gr0\) - 664: 10 cc f0 28 lddi\.p @\(gr15,40\),gr8 - 668: 9c fc 00 28 setlos 0x28,gr14 - 66c: 82 30 80 00 calll @\(gr8,gr0\) - 670: 10 cc ff c0 lddi\.p @\(gr15,-64\),gr8 - 674: 9c fc ff c0 setlos 0xf*ffffffc0,gr14 - 678: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+<_start>: +[0-9a-f ]+: fe 3f ff f0 call .* +[0-9a-f ]+: fe 3f ff f5 call .* +[0-9a-f ]+: fe 3f ff fa call .* +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 98 setlo 0x98,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 a8 setlo 0xa8,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 c0 setlo 0xc0,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 60 lddi\.p @\(gr15,96\),gr8 +[0-9a-f ]+: 9c fc 00 60 setlos 0x60,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff b8 lddi\.p @\(gr15,-72\),gr8 +[0-9a-f ]+: 9c fc ff b8 setlos 0xf*ffffffb8,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff e8 lddi\.p @\(gr15,-24\),gr8 +[0-9a-f ]+: 9c fc ff e8 setlos 0xf*ffffffe8,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 14 setlos 0xf*fffff814,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 14 setlos 0x814,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 14 setlo 0xf814,gr9 +[0-9a-f ]+: fe 3f ff e0 call .* +[0-9a-f ]+: fe 3f ff c9 call .* +[0-9a-f ]+: fe 3f ff ca call .* +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 c8 setlo 0xc8,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 78 setlo 0x78,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 88 setlo 0x88,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff f8 lddi\.p @\(gr15,-8\),gr8 +[0-9a-f ]+: 9c fc ff f8 setlos 0xf*fffffff8,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 18 lddi\.p @\(gr15,24\),gr8 +[0-9a-f ]+: 9c fc 00 18 setlos 0x18,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 38 lddi\.p @\(gr15,56\),gr8 +[0-9a-f ]+: 9c fc 00 38 setlos 0x38,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 24 setlos 0xf*fffff824,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 24 setlos 0x824,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 24 setlo 0xf824,gr9 +[0-9a-f ]+: fe 3f ff b0 call .* +[0-9a-f ]+: fe 3f ff b5 call .* +[0-9a-f ]+: fe 3f ff ba call .* +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 90 setlo 0x90,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 a0 setlo 0xa0,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 b8 setlo 0xb8,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 48 lddi\.p @\(gr15,72\),gr8 +[0-9a-f ]+: 9c fc 00 48 setlos 0x48,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff a0 lddi\.p @\(gr15,-96\),gr8 +[0-9a-f ]+: 9c fc ff a0 setlos 0xf*ffffffa0,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff d0 lddi\.p @\(gr15,-48\),gr8 +[0-9a-f ]+: 9c fc ff d0 setlos 0xf*ffffffd0,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 04 setlos 0x4,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 10 04 setlos 0x1004,gr9 +[0-9a-f ]+: 92 f8 00 01 sethi 0x1,gr9 +[0-9a-f ]+: 92 f4 00 04 setlo 0x4,gr9 +[0-9a-f ]+: fe 3f ff 94 call .* +[0-9a-f ]+: fe 3f ff 99 call .* +[0-9a-f ]+: fe 3f ff 9e call .* +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 b0 setlo 0xb0,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 80 setlo 0x80,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 70 setlo 0x70,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 20 lddi\.p @\(gr15,32\),gr8 +[0-9a-f ]+: 9c fc 00 20 setlos 0x20,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 28 lddi\.p @\(gr15,40\),gr8 +[0-9a-f ]+: 9c fc 00 28 setlos 0x28,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff c0 lddi\.p @\(gr15,-64\),gr8 +[0-9a-f ]+: 9c fc ff c0 setlos 0xf*ffffffc0,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) Disassembly of section \.got: -00004700 <_GLOBAL_OFFSET_TABLE_-0x60>: - 4700: 00 00 00 00 add\.p gr0,gr0,gr0 - 4700: R_FRV_TLSDESC_VALUE \.tbss - 4704: 00 00 17 f3 \*unknown\* - 4708: 00 00 00 00 add\.p gr0,gr0,gr0 - 4708: R_FRV_TLSDESC_VALUE x - 470c: 00 00 10 01 add\.p sp,sp,gr0 - 4710: 00 00 00 00 add\.p gr0,gr0,gr0 - 4710: R_FRV_TLSDESC_VALUE \.tbss - 4714: 00 00 10 01 add\.p sp,sp,gr0 - 4718: 00 00 00 00 add\.p gr0,gr0,gr0 - 4718: R_FRV_TLSDESC_VALUE \.tbss - 471c: 00 00 10 03 add\.p sp,gr3,gr0 - 4720: 00 00 00 00 add\.p gr0,gr0,gr0 - 4720: R_FRV_TLSDESC_VALUE x - 4724: 00 01 00 03 add\.p gr16,gr3,gr0 - 4728: 00 00 00 00 add\.p gr0,gr0,gr0 - 4728: R_FRV_TLSDESC_VALUE \.tbss - 472c: 00 01 07 f1 \*unknown\* - 4730: 00 00 00 00 add\.p gr0,gr0,gr0 - 4730: R_FRV_TLSDESC_VALUE \.tbss - 4734: 00 01 07 f3 \*unknown\* - 4738: 00 00 00 00 add\.p gr0,gr0,gr0 - 4738: R_FRV_TLSDESC_VALUE x - 473c: 00 01 00 01 add\.p gr16,sp,gr0 - 4740: 00 00 00 00 add\.p gr0,gr0,gr0 - 4740: R_FRV_TLSDESC_VALUE \.tbss - 4744: 00 01 00 01 add\.p gr16,sp,gr0 - 4748: 00 00 00 00 add\.p gr0,gr0,gr0 - 4748: R_FRV_TLSDESC_VALUE \.tbss - 474c: 00 01 00 03 add\.p gr16,gr3,gr0 - 4750: 00 00 00 00 add\.p gr0,gr0,gr0 - 4750: R_FRV_TLSDESC_VALUE \.tbss - 4754: 00 00 00 11 add\.p gr0,gr17,gr0 - 4758: 00 00 00 00 add\.p gr0,gr0,gr0 - 4758: R_FRV_TLSDESC_VALUE \.tbss - 475c: 00 00 00 13 add\.p gr0,gr19,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x60>: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 17 f3 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 03 add\.p sp,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 01 00 03 add\.p gr16,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 07 f1 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 07 f3 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 03 add\.p gr16,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 11 add\.p gr0,gr17,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 13 add\.p gr0,gr19,gr0 -00004760 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4770: R_FRV_TLSDESC_VALUE \.tbss - 4774: 00 00 10 11 add\.p sp,gr17,gr0 - 4778: 00 00 00 00 add\.p gr0,gr0,gr0 - 4778: R_FRV_TLSDESC_VALUE \.tbss - 477c: 00 00 10 13 add\.p sp,gr19,gr0 - 4780: 00 00 00 00 add\.p gr0,gr0,gr0 - 4780: R_FRV_TLSDESC_VALUE x - 4784: 00 00 00 03 add\.p gr0,gr3,gr0 - 4788: 00 00 00 00 add\.p gr0,gr0,gr0 - 4788: R_FRV_TLSDESC_VALUE x - 478c: 00 00 10 03 add\.p sp,gr3,gr0 - 4790: 00 00 00 00 add\.p gr0,gr0,gr0 - 4790: R_FRV_TLSDESC_VALUE \.tbss - 4794: 00 01 00 11 add\.p gr16,gr17,gr0 - 4798: 00 00 00 00 add\.p gr0,gr0,gr0 - 4798: R_FRV_TLSDESC_VALUE \.tbss - 479c: 00 01 00 13 add\.p gr16,gr19,gr0 - 47a0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47a0: R_FRV_TLSDESC_VALUE \.tbss - 47a4: 00 00 07 f1 \*unknown\* - 47a8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47a8: R_FRV_TLSDESC_VALUE \.tbss - 47ac: 00 00 07 f3 \*unknown\* - 47b0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47b0: R_FRV_TLSDESC_VALUE x - 47b4: 00 00 00 01 add\.p gr0,sp,gr0 - 47b8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47b8: R_FRV_TLSDESC_VALUE \.tbss - 47bc: 00 00 00 01 add\.p gr0,sp,gr0 - 47c0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47c0: R_FRV_TLSDESC_VALUE \.tbss - 47c4: 00 00 00 03 add\.p gr0,gr3,gr0 - 47c8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47c8: R_FRV_TLSDESC_VALUE \.tbss - 47cc: 00 00 17 f1 \*unknown\* - 47d0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47d0: R_FRV_TLSDESC_VALUE x - 47d4: 00 01 00 02 add\.p gr16,fp,gr0 - 47d8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47d8: R_FRV_TLSDESC_VALUE \.tbss - 47dc: 00 00 10 12 add\.p sp,gr18,gr0 - 47e0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47e0: R_FRV_TLSDESC_VALUE x - 47e4: 00 00 10 02 add\.p sp,fp,gr0 - 47e8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47e8: R_FRV_TLSDESC_VALUE \.tbss - 47ec: 00 01 00 12 add\.p gr16,gr18,gr0 - 47f0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47f0: R_FRV_TLSDESC_VALUE \.tbss - 47f4: 00 00 07 f2 \*unknown\* - 47f8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47f8: R_FRV_TLSDESC_VALUE \.tbss - 47fc: 00 00 00 02 add\.p gr0,fp,gr0 - 4800: 00 00 00 00 add\.p gr0,gr0,gr0 - 4800: R_FRV_TLSDESC_VALUE \.tbss - 4804: 00 00 17 f2 \*unknown\* - 4808: 00 00 00 00 add\.p gr0,gr0,gr0 - 4808: R_FRV_TLSDESC_VALUE \.tbss - 480c: 00 00 10 02 add\.p sp,fp,gr0 - 4810: 00 00 00 00 add\.p gr0,gr0,gr0 - 4810: R_FRV_TLSDESC_VALUE x - 4814: 00 00 00 02 add\.p gr0,fp,gr0 - 4818: 00 00 00 00 add\.p gr0,gr0,gr0 - 4818: R_FRV_TLSDESC_VALUE \.tbss - 481c: 00 01 07 f2 \*unknown\* - 4820: 00 00 00 00 add\.p gr0,gr0,gr0 - 4820: R_FRV_TLSDESC_VALUE \.tbss - 4824: 00 01 00 02 add\.p gr16,fp,gr0 - 4828: 00 00 00 00 add\.p gr0,gr0,gr0 - 4828: R_FRV_TLSDESC_VALUE \.tbss - 482c: 00 00 00 12 add\.p gr0,gr18,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 11 add\.p sp,gr17,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 13 add\.p sp,gr19,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 00 03 add\.p gr0,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 10 03 add\.p sp,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 11 add\.p gr16,gr17,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 13 add\.p gr16,gr19,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 07 f1 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 07 f3 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 00 01 add\.p gr0,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 01 add\.p gr0,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 03 add\.p gr0,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 17 f1 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 01 00 02 add\.p gr16,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 12 add\.p sp,gr18,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 10 02 add\.p sp,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 12 add\.p gr16,gr18,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 07 f2 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 17 f2 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 02 add\.p sp,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 07 f2 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 02 add\.p gr16,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 12 add\.p gr0,gr18,gr0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-shared-3.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-shared-3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-shared-3.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-shared-3.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,21 +7,21 @@ Disassembly of section \.text: -000002f4 <_start>: - 2f4: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 2f8: 00 88 00 00 nop\.p - 2fc: 80 88 00 00 nop - 300: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 304: 80 88 00 00 nop - 308: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 30c: 80 88 00 00 nop - 310: 80 88 00 00 nop - 314: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 318: 00 88 00 00 nop\.p - 31c: 80 88 00 00 nop - 320: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 Disassembly of section \.got: -000043a8 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 43b4: R_FRV_TLSOFF u +[0-9a-f ]+: R_FRV_TLSOFF u diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-static-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-static-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-relax-static-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-relax-static-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,56 +7,56 @@ Disassembly of section \.text: -000100b4 <_start>: - 100b4: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 100b8: 00 88 00 00 nop\.p - 100bc: 80 88 00 00 nop - 100c0: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 100c4: 80 88 00 00 nop - 100c8: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 - 100cc: 80 88 00 00 nop - 100d0: 80 88 00 00 nop - 100d4: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 100d8: 00 88 00 00 nop\.p - 100dc: 80 88 00 00 nop - 100e0: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 100e4: 80 88 00 00 nop - 100e8: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 - 100ec: 80 88 00 00 nop - 100f0: 80 88 00 00 nop - 100f4: 92 fc f8 30 setlos 0xf*fffff830,gr9 - 100f8: 00 88 00 00 nop\.p - 100fc: 80 88 00 00 nop - 10100: 92 fc f8 30 setlos 0xf*fffff830,gr9 - 10104: 80 88 00 00 nop - 10108: 12 fc f8 30 setlos\.p 0xf*fffff830,gr9 - 1010c: 80 88 00 00 nop - 10110: 80 88 00 00 nop - 10114: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10118: 00 88 00 00 nop\.p - 1011c: 80 88 00 00 nop - 10120: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10124: 80 88 00 00 nop - 10128: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 - 1012c: 80 88 00 00 nop - 10130: 80 88 00 00 nop - 10134: 00 88 00 00 nop\.p - 10138: 90 fc f8 30 setlos 0xf*fffff830,gr8 - 1013c: 00 88 00 00 nop\.p - 10140: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 10144: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10148: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 1014c: 92 fc f8 30 setlos 0xf*fffff830,gr9 - 10150: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10154: 00 88 00 00 nop\.p - 10158: 80 88 00 00 nop - 1015c: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10160: 00 88 00 00 nop\.p - 10164: 80 88 00 00 nop - 10168: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 1016c: 00 88 00 00 nop\.p - 10170: 80 88 00 00 nop - 10174: 92 fc f8 30 setlos 0xf*fffff830,gr9 - 10178: 00 88 00 00 nop\.p - 1017c: 80 88 00 00 nop - 10180: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 30 setlos 0xf*fffff830,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 30 setlos 0xf*fffff830,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 30 setlos\.p 0xf*fffff830,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 90 fc f8 30 setlos 0xf*fffff830,gr8 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 92 fc f8 30 setlos 0xf*fffff830,gr9 +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 30 setlos 0xf*fffff830,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-shared-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-shared-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-shared-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-shared-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,67 +7,67 @@ Disassembly of section \.text: -00000354 <_start>: - 354: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 358: 00 88 00 00 nop\.p - 35c: 80 88 00 00 nop - 360: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 364: 80 88 00 00 nop - 368: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 - 36c: 80 88 00 00 nop - 370: 80 88 00 00 nop - 374: 92 c8 f0 14 ldi @\(gr15,20\),gr9 - 378: 00 88 00 00 nop\.p - 37c: 80 88 00 00 nop - 380: 92 c8 f0 14 ldi @\(gr15,20\),gr9 - 384: 80 88 00 00 nop - 388: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 - 38c: 80 88 00 00 nop - 390: 80 88 00 00 nop - 394: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 398: 00 88 00 00 nop\.p - 39c: 80 88 00 00 nop - 3a0: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 3a4: 80 88 00 00 nop - 3a8: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 3ac: 80 88 00 00 nop - 3b0: 80 88 00 00 nop - 3b4: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 3b8: 00 88 00 00 nop\.p - 3bc: 80 88 00 00 nop - 3c0: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 3c4: 80 88 00 00 nop - 3c8: 12 c8 f0 18 ldi\.p @\(gr15,24\),gr9 - 3cc: 80 88 00 00 nop - 3d0: 80 88 00 00 nop - 3d4: 00 88 00 00 nop\.p - 3d8: 90 fc f8 20 setlos 0xf*fffff820,gr8 - 3dc: 00 88 00 00 nop\.p - 3e0: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 3e4: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 3e8: 92 c8 f0 14 ldi @\(gr15,20\),gr9 - 3ec: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 3f0: 92 c8 f0 18 ldi @\(gr15,24\),gr9 - 3f4: 00 88 00 00 nop\.p - 3f8: 80 88 00 00 nop - 3fc: 92 c8 f0 10 ldi @\(gr15,16\),gr9 - 400: 00 88 00 00 nop\.p - 404: 80 88 00 00 nop - 408: 92 c8 f0 14 ldi @\(gr15,20\),gr9 - 40c: 00 88 00 00 nop\.p - 410: 80 88 00 00 nop - 414: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 418: 00 88 00 00 nop\.p - 41c: 80 88 00 00 nop - 420: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 10 ldi\.p @\(gr15,16\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 14 ldi @\(gr15,20\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 14 ldi @\(gr15,20\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 14 ldi\.p @\(gr15,20\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 18 ldi\.p @\(gr15,24\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 90 fc f8 20 setlos 0xf*fffff820,gr8 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 92 c8 f0 14 ldi @\(gr15,20\),gr9 +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 10 ldi @\(gr15,16\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 14 ldi @\(gr15,20\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 18 ldi @\(gr15,24\),gr9 Disassembly of section \.got: -000044b8 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 44c4: 00 00 00 10 add\.p gr0,gr16,gr0 - 44c4: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 00 10 add\.p gr0,gr16,gr0 +[0-9a-f ]+: R_FRV_TLSOFF \.tbss \.\.\. - 44c8: R_FRV_TLSOFF x - 44cc: R_FRV_TLSOFF \.tbss - 44d0: 00 00 07 f0 \*unknown\* - 44d0: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: R_FRV_TLSOFF x +[0-9a-f ]+: R_FRV_TLSOFF \.tbss +[0-9a-f ]+: 00 00 07 f0 \*unknown\* +[0-9a-f ]+: R_FRV_TLSOFF \.tbss diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-shared-2.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-shared-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-shared-2.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-shared-2.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,258 +7,258 @@ Disassembly of section \.plt: -00000454 <\.plt>: - 454: 90 cc f0 10 lddi @\(gr15,16\),gr8 - 458: 80 30 80 00 jmpl @\(gr8,gr0\) - 45c: 90 cc f0 30 lddi @\(gr15,48\),gr8 - 460: 80 30 80 00 jmpl @\(gr8,gr0\) - 464: 90 cc f0 40 lddi @\(gr15,64\),gr8 - 468: 80 30 80 00 jmpl @\(gr8,gr0\) - 46c: 90 cc f0 50 lddi @\(gr15,80\),gr8 - 470: 80 30 80 00 jmpl @\(gr8,gr0\) - 474: 90 cc f0 58 lddi @\(gr15,88\),gr8 - 478: 80 30 80 00 jmpl @\(gr8,gr0\) - 47c: 90 cc f0 68 lddi @\(gr15,104\),gr8 - 480: 80 30 80 00 jmpl @\(gr8,gr0\) - 484: 90 cc ff a8 lddi @\(gr15,-88\),gr8 - 488: 80 30 80 00 jmpl @\(gr8,gr0\) - 48c: 90 cc ff b0 lddi @\(gr15,-80\),gr8 - 490: 80 30 80 00 jmpl @\(gr8,gr0\) - 494: 90 cc ff c8 lddi @\(gr15,-56\),gr8 - 498: 80 30 80 00 jmpl @\(gr8,gr0\) - 49c: 90 cc ff d8 lddi @\(gr15,-40\),gr8 - 4a0: 80 30 80 00 jmpl @\(gr8,gr0\) - 4a4: 90 cc ff e0 lddi @\(gr15,-32\),gr8 - 4a8: 80 30 80 00 jmpl @\(gr8,gr0\) - 4ac: 90 cc ff f0 lddi @\(gr15,-16\),gr8 - 4b0: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+<\.plt>: +[0-9a-f ]+: 90 cc f0 10 lddi @\(gr15,16\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 30 lddi @\(gr15,48\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 40 lddi @\(gr15,64\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 50 lddi @\(gr15,80\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 58 lddi @\(gr15,88\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc f0 68 lddi @\(gr15,104\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff a8 lddi @\(gr15,-88\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff b0 lddi @\(gr15,-80\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff c8 lddi @\(gr15,-56\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff d8 lddi @\(gr15,-40\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff e0 lddi @\(gr15,-32\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) +[0-9a-f ]+: 90 cc ff f0 lddi @\(gr15,-16\),gr8 +[0-9a-f ]+: 80 30 80 00 jmpl @\(gr8,gr0\) Disassembly of section \.text: -000004b4 <_start>: - 4b4: fe 3f ff f0 call 474 - 4b8: fe 3f ff f5 call 48c - 4bc: fe 3f ff fa call 4a4 - 4c0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 4c4: 9c f4 00 98 setlo 0x98,gr14 - 4c8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 4cc: 82 30 80 00 calll @\(gr8,gr0\) - 4d0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 4d4: 9c f4 00 a8 setlo 0xa8,gr14 - 4d8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 4dc: 82 30 80 00 calll @\(gr8,gr0\) - 4e0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 4e4: 9c f4 00 c0 setlo 0xc0,gr14 - 4e8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 4ec: 82 30 80 00 calll @\(gr8,gr0\) - 4f0: 10 cc f0 60 lddi\.p @\(gr15,96\),gr8 - 4f4: 9c fc 00 60 setlos 0x60,gr14 - 4f8: 82 30 80 00 calll @\(gr8,gr0\) - 4fc: 10 cc ff b8 lddi\.p @\(gr15,-72\),gr8 - 500: 9c fc ff b8 setlos 0xf*ffffffb8,gr14 - 504: 82 30 80 00 calll @\(gr8,gr0\) - 508: 10 cc ff e8 lddi\.p @\(gr15,-24\),gr8 - 50c: 9c fc ff e8 setlos 0xf*ffffffe8,gr14 - 510: 82 30 80 00 calll @\(gr8,gr0\) - 514: 80 88 00 00 nop - 518: 92 fc f8 14 setlos 0xf*fffff814,gr9 - 51c: 80 88 00 00 nop - 520: 92 fc 08 14 setlos 0x814,gr9 - 524: 92 f8 00 00 sethi hi\(0x0\),gr9 - 528: 92 f4 f8 14 setlo 0xf814,gr9 - 52c: fe 3f ff e0 call 4ac - 530: fe 3f ff c9 call 454 - 534: fe 3f ff ca call 45c - 538: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 53c: 9c f4 00 c8 setlo 0xc8,gr14 - 540: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 544: 82 30 80 00 calll @\(gr8,gr0\) - 548: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 54c: 9c f4 00 78 setlo 0x78,gr14 - 550: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 554: 82 30 80 00 calll @\(gr8,gr0\) - 558: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 55c: 9c f4 00 88 setlo 0x88,gr14 - 560: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 564: 82 30 80 00 calll @\(gr8,gr0\) - 568: 10 cc ff f8 lddi\.p @\(gr15,-8\),gr8 - 56c: 9c fc ff f8 setlos 0xf*fffffff8,gr14 - 570: 82 30 80 00 calll @\(gr8,gr0\) - 574: 10 cc f0 18 lddi\.p @\(gr15,24\),gr8 - 578: 9c fc 00 18 setlos 0x18,gr14 - 57c: 82 30 80 00 calll @\(gr8,gr0\) - 580: 10 cc f0 38 lddi\.p @\(gr15,56\),gr8 - 584: 9c fc 00 38 setlos 0x38,gr14 - 588: 82 30 80 00 calll @\(gr8,gr0\) - 58c: 80 88 00 00 nop - 590: 92 fc f8 24 setlos 0xf*fffff824,gr9 - 594: 80 88 00 00 nop - 598: 92 fc 08 24 setlos 0x824,gr9 - 59c: 92 f8 00 00 sethi hi\(0x0\),gr9 - 5a0: 92 f4 f8 24 setlo 0xf824,gr9 - 5a4: fe 3f ff b0 call 464 - 5a8: fe 3f ff b5 call 47c - 5ac: fe 3f ff ba call 494 - 5b0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 5b4: 9c f4 00 90 setlo 0x90,gr14 - 5b8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 5bc: 82 30 80 00 calll @\(gr8,gr0\) - 5c0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 5c4: 9c f4 00 a0 setlo 0xa0,gr14 - 5c8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 5cc: 82 30 80 00 calll @\(gr8,gr0\) - 5d0: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 5d4: 9c f4 00 b8 setlo 0xb8,gr14 - 5d8: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 5dc: 82 30 80 00 calll @\(gr8,gr0\) - 5e0: 10 cc f0 48 lddi\.p @\(gr15,72\),gr8 - 5e4: 9c fc 00 48 setlos 0x48,gr14 - 5e8: 82 30 80 00 calll @\(gr8,gr0\) - 5ec: 10 cc ff a0 lddi\.p @\(gr15,-96\),gr8 - 5f0: 9c fc ff a0 setlos 0xf*ffffffa0,gr14 - 5f4: 82 30 80 00 calll @\(gr8,gr0\) - 5f8: 10 cc ff d0 lddi\.p @\(gr15,-48\),gr8 - 5fc: 9c fc ff d0 setlos 0xf*ffffffd0,gr14 - 600: 82 30 80 00 calll @\(gr8,gr0\) - 604: 80 88 00 00 nop - 608: 92 fc 00 04 setlos 0x4,gr9 - 60c: 80 88 00 00 nop - 610: 92 fc 10 04 setlos 0x1004,gr9 - 614: 92 f8 00 01 sethi 0x1,gr9 - 618: 92 f4 00 04 setlo 0x4,gr9 - 61c: fe 3f ff 94 call 46c - 620: fe 3f ff 99 call 484 - 624: fe 3f ff 9e call 49c - 628: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 62c: 9c f4 00 b0 setlo 0xb0,gr14 - 630: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 634: 82 30 80 00 calll @\(gr8,gr0\) - 638: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 63c: 9c f4 00 80 setlo 0x80,gr14 - 640: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 644: 82 30 80 00 calll @\(gr8,gr0\) - 648: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 - 64c: 9c f4 00 70 setlo 0x70,gr14 - 650: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 - 654: 82 30 80 00 calll @\(gr8,gr0\) - 658: 10 cc f0 20 lddi\.p @\(gr15,32\),gr8 - 65c: 9c fc 00 20 setlos 0x20,gr14 - 660: 82 30 80 00 calll @\(gr8,gr0\) - 664: 10 cc f0 28 lddi\.p @\(gr15,40\),gr8 - 668: 9c fc 00 28 setlos 0x28,gr14 - 66c: 82 30 80 00 calll @\(gr8,gr0\) - 670: 10 cc ff c0 lddi\.p @\(gr15,-64\),gr8 - 674: 9c fc ff c0 setlos 0xf*ffffffc0,gr14 - 678: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+<_start>: +[0-9a-f ]+: fe 3f ff f0 call .* +[0-9a-f ]+: fe 3f ff f5 call .* +[0-9a-f ]+: fe 3f ff fa call .* +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 98 setlo 0x98,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 a8 setlo 0xa8,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 c0 setlo 0xc0,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 60 lddi\.p @\(gr15,96\),gr8 +[0-9a-f ]+: 9c fc 00 60 setlos 0x60,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff b8 lddi\.p @\(gr15,-72\),gr8 +[0-9a-f ]+: 9c fc ff b8 setlos 0xf*ffffffb8,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff e8 lddi\.p @\(gr15,-24\),gr8 +[0-9a-f ]+: 9c fc ff e8 setlos 0xf*ffffffe8,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 14 setlos 0xf*fffff814,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 14 setlos 0x814,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 14 setlo 0xf814,gr9 +[0-9a-f ]+: fe 3f ff e0 call .* +[0-9a-f ]+: fe 3f ff c9 call .* +[0-9a-f ]+: fe 3f ff ca call .* +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 c8 setlo 0xc8,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 78 setlo 0x78,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 88 setlo 0x88,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff f8 lddi\.p @\(gr15,-8\),gr8 +[0-9a-f ]+: 9c fc ff f8 setlos 0xf*fffffff8,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 18 lddi\.p @\(gr15,24\),gr8 +[0-9a-f ]+: 9c fc 00 18 setlos 0x18,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 38 lddi\.p @\(gr15,56\),gr8 +[0-9a-f ]+: 9c fc 00 38 setlos 0x38,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 24 setlos 0xf*fffff824,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 08 24 setlos 0x824,gr9 +[0-9a-f ]+: 92 f8 00 00 sethi hi\(0x0\),gr9 +[0-9a-f ]+: 92 f4 f8 24 setlo 0xf824,gr9 +[0-9a-f ]+: fe 3f ff b0 call .* +[0-9a-f ]+: fe 3f ff b5 call .* +[0-9a-f ]+: fe 3f ff ba call .* +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 90 setlo 0x90,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 a0 setlo 0xa0,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 b8 setlo 0xb8,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 48 lddi\.p @\(gr15,72\),gr8 +[0-9a-f ]+: 9c fc 00 48 setlos 0x48,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff a0 lddi\.p @\(gr15,-96\),gr8 +[0-9a-f ]+: 9c fc ff a0 setlos 0xf*ffffffa0,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff d0 lddi\.p @\(gr15,-48\),gr8 +[0-9a-f ]+: 9c fc ff d0 setlos 0xf*ffffffd0,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 04 setlos 0x4,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 10 04 setlos 0x1004,gr9 +[0-9a-f ]+: 92 f8 00 01 sethi 0x1,gr9 +[0-9a-f ]+: 92 f4 00 04 setlo 0x4,gr9 +[0-9a-f ]+: fe 3f ff 94 call .* +[0-9a-f ]+: fe 3f ff 99 call .* +[0-9a-f ]+: fe 3f ff 9e call .* +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 b0 setlo 0xb0,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 80 setlo 0x80,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 1c f8 00 00 sethi\.p hi\(0x0\),gr14 +[0-9a-f ]+: 9c f4 00 70 setlo 0x70,gr14 +[0-9a-f ]+: 90 08 f1 4e ldd @\(gr15,gr14\),gr8 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 20 lddi\.p @\(gr15,32\),gr8 +[0-9a-f ]+: 9c fc 00 20 setlos 0x20,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc f0 28 lddi\.p @\(gr15,40\),gr8 +[0-9a-f ]+: 9c fc 00 28 setlos 0x28,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) +[0-9a-f ]+: 10 cc ff c0 lddi\.p @\(gr15,-64\),gr8 +[0-9a-f ]+: 9c fc ff c0 setlos 0xf*ffffffc0,gr14 +[0-9a-f ]+: 82 30 80 00 calll @\(gr8,gr0\) Disassembly of section \.got: -00004700 <_GLOBAL_OFFSET_TABLE_-0x60>: - 4700: 00 00 00 00 add\.p gr0,gr0,gr0 - 4700: R_FRV_TLSDESC_VALUE \.tbss - 4704: 00 00 17 f3 \*unknown\* - 4708: 00 00 00 00 add\.p gr0,gr0,gr0 - 4708: R_FRV_TLSDESC_VALUE x - 470c: 00 00 10 01 add\.p sp,sp,gr0 - 4710: 00 00 00 00 add\.p gr0,gr0,gr0 - 4710: R_FRV_TLSDESC_VALUE \.tbss - 4714: 00 00 10 01 add\.p sp,sp,gr0 - 4718: 00 00 00 00 add\.p gr0,gr0,gr0 - 4718: R_FRV_TLSDESC_VALUE \.tbss - 471c: 00 00 10 03 add\.p sp,gr3,gr0 - 4720: 00 00 00 00 add\.p gr0,gr0,gr0 - 4720: R_FRV_TLSDESC_VALUE x - 4724: 00 01 00 03 add\.p gr16,gr3,gr0 - 4728: 00 00 00 00 add\.p gr0,gr0,gr0 - 4728: R_FRV_TLSDESC_VALUE \.tbss - 472c: 00 01 07 f1 \*unknown\* - 4730: 00 00 00 00 add\.p gr0,gr0,gr0 - 4730: R_FRV_TLSDESC_VALUE \.tbss - 4734: 00 01 07 f3 \*unknown\* - 4738: 00 00 00 00 add\.p gr0,gr0,gr0 - 4738: R_FRV_TLSDESC_VALUE x - 473c: 00 01 00 01 add\.p gr16,sp,gr0 - 4740: 00 00 00 00 add\.p gr0,gr0,gr0 - 4740: R_FRV_TLSDESC_VALUE \.tbss - 4744: 00 01 00 01 add\.p gr16,sp,gr0 - 4748: 00 00 00 00 add\.p gr0,gr0,gr0 - 4748: R_FRV_TLSDESC_VALUE \.tbss - 474c: 00 01 00 03 add\.p gr16,gr3,gr0 - 4750: 00 00 00 00 add\.p gr0,gr0,gr0 - 4750: R_FRV_TLSDESC_VALUE \.tbss - 4754: 00 00 00 11 add\.p gr0,gr17,gr0 - 4758: 00 00 00 00 add\.p gr0,gr0,gr0 - 4758: R_FRV_TLSDESC_VALUE \.tbss - 475c: 00 00 00 13 add\.p gr0,gr19,gr0 +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x60>: +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 17 f3 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 01 add\.p sp,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 03 add\.p sp,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 01 00 03 add\.p gr16,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 07 f1 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 07 f3 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 01 add\.p gr16,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 03 add\.p gr16,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 11 add\.p gr0,gr17,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 13 add\.p gr0,gr19,gr0 -00004760 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 4770: R_FRV_TLSDESC_VALUE \.tbss - 4774: 00 00 10 11 add\.p sp,gr17,gr0 - 4778: 00 00 00 00 add\.p gr0,gr0,gr0 - 4778: R_FRV_TLSDESC_VALUE \.tbss - 477c: 00 00 10 13 add\.p sp,gr19,gr0 - 4780: 00 00 00 00 add\.p gr0,gr0,gr0 - 4780: R_FRV_TLSDESC_VALUE x - 4784: 00 00 00 03 add\.p gr0,gr3,gr0 - 4788: 00 00 00 00 add\.p gr0,gr0,gr0 - 4788: R_FRV_TLSDESC_VALUE x - 478c: 00 00 10 03 add\.p sp,gr3,gr0 - 4790: 00 00 00 00 add\.p gr0,gr0,gr0 - 4790: R_FRV_TLSDESC_VALUE \.tbss - 4794: 00 01 00 11 add\.p gr16,gr17,gr0 - 4798: 00 00 00 00 add\.p gr0,gr0,gr0 - 4798: R_FRV_TLSDESC_VALUE \.tbss - 479c: 00 01 00 13 add\.p gr16,gr19,gr0 - 47a0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47a0: R_FRV_TLSDESC_VALUE \.tbss - 47a4: 00 00 07 f1 \*unknown\* - 47a8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47a8: R_FRV_TLSDESC_VALUE \.tbss - 47ac: 00 00 07 f3 \*unknown\* - 47b0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47b0: R_FRV_TLSDESC_VALUE x - 47b4: 00 00 00 01 add\.p gr0,sp,gr0 - 47b8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47b8: R_FRV_TLSDESC_VALUE \.tbss - 47bc: 00 00 00 01 add\.p gr0,sp,gr0 - 47c0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47c0: R_FRV_TLSDESC_VALUE \.tbss - 47c4: 00 00 00 03 add\.p gr0,gr3,gr0 - 47c8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47c8: R_FRV_TLSDESC_VALUE \.tbss - 47cc: 00 00 17 f1 \*unknown\* - 47d0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47d0: R_FRV_TLSDESC_VALUE x - 47d4: 00 01 00 02 add\.p gr16,fp,gr0 - 47d8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47d8: R_FRV_TLSDESC_VALUE \.tbss - 47dc: 00 00 10 12 add\.p sp,gr18,gr0 - 47e0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47e0: R_FRV_TLSDESC_VALUE x - 47e4: 00 00 10 02 add\.p sp,fp,gr0 - 47e8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47e8: R_FRV_TLSDESC_VALUE \.tbss - 47ec: 00 01 00 12 add\.p gr16,gr18,gr0 - 47f0: 00 00 00 00 add\.p gr0,gr0,gr0 - 47f0: R_FRV_TLSDESC_VALUE \.tbss - 47f4: 00 00 07 f2 \*unknown\* - 47f8: 00 00 00 00 add\.p gr0,gr0,gr0 - 47f8: R_FRV_TLSDESC_VALUE \.tbss - 47fc: 00 00 00 02 add\.p gr0,fp,gr0 - 4800: 00 00 00 00 add\.p gr0,gr0,gr0 - 4800: R_FRV_TLSDESC_VALUE \.tbss - 4804: 00 00 17 f2 \*unknown\* - 4808: 00 00 00 00 add\.p gr0,gr0,gr0 - 4808: R_FRV_TLSDESC_VALUE \.tbss - 480c: 00 00 10 02 add\.p sp,fp,gr0 - 4810: 00 00 00 00 add\.p gr0,gr0,gr0 - 4810: R_FRV_TLSDESC_VALUE x - 4814: 00 00 00 02 add\.p gr0,fp,gr0 - 4818: 00 00 00 00 add\.p gr0,gr0,gr0 - 4818: R_FRV_TLSDESC_VALUE \.tbss - 481c: 00 01 07 f2 \*unknown\* - 4820: 00 00 00 00 add\.p gr0,gr0,gr0 - 4820: R_FRV_TLSDESC_VALUE \.tbss - 4824: 00 01 00 02 add\.p gr16,fp,gr0 - 4828: 00 00 00 00 add\.p gr0,gr0,gr0 - 4828: R_FRV_TLSDESC_VALUE \.tbss - 482c: 00 00 00 12 add\.p gr0,gr18,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 11 add\.p sp,gr17,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 13 add\.p sp,gr19,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 00 03 add\.p gr0,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 10 03 add\.p sp,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 11 add\.p gr16,gr17,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 13 add\.p gr16,gr19,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 07 f1 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 07 f3 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 00 01 add\.p gr0,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 01 add\.p gr0,sp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 03 add\.p gr0,gr3,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 17 f1 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 01 00 02 add\.p gr16,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 12 add\.p sp,gr18,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 10 02 add\.p sp,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 12 add\.p gr16,gr18,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 07 f2 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 17 f2 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 10 02 add\.p sp,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE x +[0-9a-f ]+: 00 00 00 02 add\.p gr0,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 07 f2 \*unknown\* +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 01 00 02 add\.p gr16,fp,gr0 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: R_FRV_TLSDESC_VALUE \.tbss +[0-9a-f ]+: 00 00 00 12 add\.p gr0,gr18,gr0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-shared-3.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-shared-3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-shared-3.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-shared-3.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,21 +7,21 @@ Disassembly of section \.text: -000002f4 <_start>: - 2f4: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 2f8: 00 88 00 00 nop\.p - 2fc: 80 88 00 00 nop - 300: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 304: 80 88 00 00 nop - 308: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 - 30c: 80 88 00 00 nop - 310: 80 88 00 00 nop - 314: 92 c8 f0 0c ldi @\(gr15,12\),gr9 - 318: 00 88 00 00 nop\.p - 31c: 80 88 00 00 nop - 320: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 c8 f0 0c ldi\.p @\(gr15,12\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 c8 f0 0c ldi @\(gr15,12\),gr9 Disassembly of section \.got: -000043a8 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 43b4: R_FRV_TLSOFF u +[0-9a-f ]+: R_FRV_TLSOFF u diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-static-1.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-static-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-static-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-static-1.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,64 +7,64 @@ Disassembly of section \.text: -000100b4 <_start>: - 100b4: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 100b8: 00 88 00 00 nop\.p - 100bc: 80 88 00 00 nop - 100c0: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 100c4: 80 88 00 00 nop - 100c8: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 - 100cc: 80 88 00 00 nop - 100d0: 80 88 00 00 nop - 100d4: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 100d8: 00 88 00 00 nop\.p - 100dc: 80 88 00 00 nop - 100e0: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 100e4: 80 88 00 00 nop - 100e8: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 - 100ec: 80 88 00 00 nop - 100f0: 80 88 00 00 nop - 100f4: 92 fc f8 30 setlos 0xf*fffff830,gr9 - 100f8: 00 88 00 00 nop\.p - 100fc: 80 88 00 00 nop - 10100: 92 fc f8 30 setlos 0xf*fffff830,gr9 - 10104: 80 88 00 00 nop - 10108: 12 fc f8 30 setlos\.p 0xf*fffff830,gr9 - 1010c: 80 88 00 00 nop - 10110: 80 88 00 00 nop - 10114: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10118: 00 88 00 00 nop\.p - 1011c: 80 88 00 00 nop - 10120: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10124: 80 88 00 00 nop - 10128: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 - 1012c: 80 88 00 00 nop - 10130: 80 88 00 00 nop - 10134: 00 88 00 00 nop\.p - 10138: 90 fc f8 30 setlos 0xf*fffff830,gr8 - 1013c: 00 88 00 00 nop\.p - 10140: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 10144: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10148: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 1014c: 92 fc f8 30 setlos 0xf*fffff830,gr9 - 10150: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10154: 00 88 00 00 nop\.p - 10158: 80 88 00 00 nop - 1015c: 92 fc f8 10 setlos 0xf*fffff810,gr9 - 10160: 00 88 00 00 nop\.p - 10164: 80 88 00 00 nop - 10168: 92 fc f8 20 setlos 0xf*fffff820,gr9 - 1016c: 00 88 00 00 nop\.p - 10170: 80 88 00 00 nop - 10174: 92 fc f8 30 setlos 0xf*fffff830,gr9 - 10178: 00 88 00 00 nop\.p - 1017c: 80 88 00 00 nop - 10180: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 10 setlos\.p 0xf*fffff810,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 20 setlos\.p 0xf*fffff820,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 30 setlos 0xf*fffff830,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 30 setlos 0xf*fffff830,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc f8 30 setlos\.p 0xf*fffff830,gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 90 fc f8 30 setlos 0xf*fffff830,gr8 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 92 fc f8 30 setlos 0xf*fffff830,gr9 +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 10 setlos 0xf*fffff810,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 20 setlos 0xf*fffff820,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc f8 30 setlos 0xf*fffff830,gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 Disassembly of section \.got: -00014190 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. - 1419c: ff ff f8 30 cop2 -32,cpr63,cpr48,cpr63 - 141a0: ff ff f8 10 cop2 -32,cpr63,cpr16,cpr63 - 141a4: ff ff f8 20 cop2 -32,cpr63,cpr32,cpr63 - 141a8: 00 00 00 00 add\.p gr0,gr0,gr0 +[0-9a-f ]+: ff ff f8 30 cop2 -32,cpr63,cpr48,cpr63 +[0-9a-f ]+: ff ff f8 10 cop2 -32,cpr63,cpr16,cpr63 +[0-9a-f ]+: ff ff f8 20 cop2 -32,cpr63,cpr32,cpr63 +[0-9a-f ]+: 00 00 00 00 add\.p gr0,gr0,gr0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-static-3.d binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-static-3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-frv/tls-static-3.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-frv/tls-static-3.d 2005-08-22 12:27:45.000000000 -0700 @@ -7,20 +7,20 @@ Disassembly of section \.text: -00010094 <_start>: - 10094: 92 fc 00 00 setlos lo\(0x0\),gr9 - 10098: 00 88 00 00 nop\.p - 1009c: 80 88 00 00 nop - 100a0: 92 fc 00 00 setlos lo\(0x0\),gr9 - 100a4: 80 88 00 00 nop - 100a8: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 - 100ac: 80 88 00 00 nop - 100b0: 80 88 00 00 nop - 100b4: 92 fc 00 00 setlos lo\(0x0\),gr9 - 100b8: 00 88 00 00 nop\.p - 100bc: 80 88 00 00 nop - 100c0: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+<_start>: +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 12 fc 00 00 setlos\.p lo\(0x0\),gr9 +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 +[0-9a-f ]+: 00 88 00 00 nop\.p +[0-9a-f ]+: 80 88 00 00 nop +[0-9a-f ]+: 92 fc 00 00 setlos lo\(0x0\),gr9 Disassembly of section \.got: -000140c8 <_GLOBAL_OFFSET_TABLE_>: +[0-9a-f ]+<_GLOBAL_OFFSET_TABLE_>: \.\.\. diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-i386/pcrel16.d binutils-2.16.91.0.3/ld/testsuite/ld-i386/pcrel16.d --- binutils-2.16.91.0.2/ld/testsuite/ld-i386/pcrel16.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-i386/pcrel16.d 2005-08-22 12:27:45.000000000 -0700 @@ -1,3 +1,14 @@ #name: PCREL16 overflow -#ld: -#error: .*relocation truncated to fit: R_386_PC16 .* +#ld: -Ttext 0x0 +#objdump: -drj.text -m i8086 + +.*: +file format elf32-i386 + +Disassembly of section .text: + +0+ <_start>: + ... + 420: cd 42[ ]+int \$0x42 + 422: ca 02 00[ ]+lret \$0x2 + ... + f065: e9 b8 13[ ]+jmp 420 <_start\+0x420> diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-i386/pcrel16.s binutils-2.16.91.0.3/ld/testsuite/ld-i386/pcrel16.s --- binutils-2.16.91.0.2/ld/testsuite/ld-i386/pcrel16.s 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-i386/pcrel16.s 2005-08-22 12:27:45.000000000 -0700 @@ -1,11 +1,9 @@ - .text - .code16 - .global _start, fwd + .code16 + .text + .globl _start _start: - jpo fwd - .rept 2500 - testl $0x12345678, %ss:0x76543210(,%eax,4) - .endr -fwd: - leave - ret + .org 0x420 + int $0x42 + lret $2 + .org 0xf065 + jmp _start+((0x42) << 4) diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-i386/tlsbin.rd binutils-2.16.91.0.3/ld/testsuite/ld-i386/tlsbin.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-i386/tlsbin.rd 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-i386/tlsbin.rd 2005-08-22 12:27:45.000000000 -0700 @@ -56,26 +56,25 @@ Program Headers: Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries: Offset +Info +Type +Sym.Value +Sym. Name -0+804a100 0000010e R_386_TLS_TPOFF +0+ +sG3 -0+804a104 0000020e R_386_TLS_TPOFF +0+ +sG5 -0+804a108 0000040e R_386_TLS_TPOFF +0+ +sG7 -0+804a10c 00000525 R_386_TLS_TPOFF32 0+ +sG2 -0+804a110 00000625 R_386_TLS_TPOFF32 0+ +sG4 -0+804a114 0000060e R_386_TLS_TPOFF +0+ +sG4 -0+804a118 00000825 R_386_TLS_TPOFF32 0+ +sG6 -0+804a11c 00000925 R_386_TLS_TPOFF32 0+ +sG1 -0+804a120 00000c0e R_386_TLS_TPOFF +0+ +sG8 +[0-9a-f ]+R_386_TLS_TPOFF +0+ +sG3 +[0-9a-f ]+R_386_TLS_TPOFF +0+ +sG5 +[0-9a-f ]+R_386_TLS_TPOFF +0+ +sG7 +[0-9a-f ]+R_386_TLS_TPOFF32 0+ +sG2 +[0-9a-f ]+R_386_TLS_TPOFF32 0+ +sG4 +[0-9a-f ]+R_386_TLS_TPOFF +0+ +sG4 +[0-9a-f ]+R_386_TLS_TPOFF32 0+ +sG6 +[0-9a-f ]+R_386_TLS_TPOFF32 0+ +sG1 +[0-9a-f ]+R_386_TLS_TPOFF +0+ +sG8 Relocation section '.rel.plt' at offset 0x[0-9a-f]+ contains 1 entries: Offset +Info +Type +Sym.Value Sym. Name -0+804a130 00000d07 R_386_JUMP_SLOT +[0-9a-f]+ +___tls_get_addr +[0-9a-f ]+R_386_JUMP_SLOT +[0-9a-f]+ +___tls_get_addr -Symbol table '.dynsym' contains 14 entries: +Symbol table '.dynsym' contains 13 entries: +Num: +Value Size Type +Bind +Vis +Ndx Name +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG3 +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG5 - +[0-9]+: 0+804a060 +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG7 +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG2 +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG4 @@ -122,13 +121,14 @@ Symbol table '.symtab' contains 73 entri +[0-9]+: 00000094 +0 TLS +LOCAL DEFAULT +10 bl6 +[0-9]+: 00000098 +0 TLS +LOCAL DEFAULT +10 bl7 +[0-9]+: 0000009c +0 TLS +LOCAL DEFAULT +10 bl8 + +[0-9]+: 0+804a060 +0 OBJECT LOCAL +HIDDEN +11 _DYNAMIC + +[0-9]+: [0-9a-f]+ +0 OBJECT LOCAL +HIDDEN +13 _GLOBAL_OFFSET_TABLE_ +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG3 +[0-9]+: 0000001c +0 TLS +GLOBAL DEFAULT +9 sg8 +[0-9]+: 0000007c +0 TLS +GLOBAL DEFAULT +10 bg8 +[0-9]+: 00000074 +0 TLS +GLOBAL DEFAULT +10 bg6 +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG5 +[0-9]+: 00000068 +0 TLS +GLOBAL DEFAULT +10 bg3 - +[0-9]+: 0+804a060 +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC +[0-9]+: 00000008 +0 TLS +GLOBAL DEFAULT +9 sg3 +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG7 +[0-9]+: 00000048 +0 TLS +GLOBAL HIDDEN +9 sh3 @@ -153,7 +153,6 @@ Symbol table '.symtab' contains 73 entri +[0-9]+: 00000014 +0 TLS +GLOBAL DEFAULT +9 sg6 +[0-9]+: 00000018 +0 TLS +GLOBAL DEFAULT +9 sg7 +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL HIDDEN 13 _GLOBAL_OFFSET_TABLE_ +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end +[0-9]+: 00000044 +0 TLS +GLOBAL HIDDEN +9 sh2 +[0-9]+: 00000054 +0 TLS +GLOBAL HIDDEN +9 sh6 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-i386/tlsnopic.rd binutils-2.16.91.0.3/ld/testsuite/ld-i386/tlsnopic.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-i386/tlsnopic.rd 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-i386/tlsnopic.rd 2005-08-22 12:27:45.000000000 -0700 @@ -69,12 +69,11 @@ Relocation section '.rel.dyn' at offset [0-9a-f ]+R_386_TLS_TPOFF 0+ sg2 -Symbol table '.dynsym' contains 13 entries: +Symbol table '.dynsym' contains 12 entries: +Num: +Value Size Type +Bind +Vis +Ndx Name +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5 * +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6 * - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sg3 +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sg4 +[0-9]+: 0+1000 +0 FUNC +GLOBAL DEFAULT +5 fn3 @@ -105,12 +104,12 @@ Symbol table '.symtab' contains 33 entri +[0-9]+: 0+08 +0 TLS +LOCAL DEFAULT +6 bl3 +[0-9]+: 0+0c +0 TLS +LOCAL DEFAULT +6 bl4 +[0-9]+: 0+10 +0 TLS +LOCAL DEFAULT +6 bl5 + +[0-9]+: [0-9a-f]+ +0 OBJECT LOCAL HIDDEN ABS _DYNAMIC +[0-9]+: 0+1c +0 TLS +LOCAL HIDDEN +6 sh3 +[0-9]+: 0+20 +0 TLS +LOCAL HIDDEN +6 sh4 +[0-9]+: 0+14 +0 TLS +LOCAL HIDDEN +6 sh1 +[0-9]+: 0+218c +0 OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_ +[0-9]+: 0+18 +0 TLS +LOCAL HIDDEN +6 sh2 - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sg3 +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sg4 +[0-9]+: 0+1000 +0 FUNC +GLOBAL DEFAULT +5 fn3 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-i386/tlspic.rd binutils-2.16.91.0.3/ld/testsuite/ld-i386/tlspic.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-i386/tlspic.rd 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-i386/tlspic.rd 2005-08-22 12:27:45.000000000 -0700 @@ -81,14 +81,13 @@ Relocation section '.rel.plt' at offset Offset +Info +Type +Sym.Value +Sym. Name [0-9a-f ]+R_386_JUMP_SLOT 0+ ___tls_get_addr -Symbol table '.dynsym' contains 18 entries: +Symbol table '.dynsym' contains 17 entries: +Num: +Value Size Type +Bind +Vis +Ndx Name +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 * +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 * +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 * +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8 - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3 +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4 +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +8 sg5 @@ -129,6 +128,7 @@ Symbol table '.symtab' contains 55 entri +[0-9]+: 0+38 +0 TLS +LOCAL DEFAULT +8 sl7 +[0-9]+: 0+3c +0 TLS +LOCAL DEFAULT +8 sl8 +[0-9]+: 0+60 +0 TLS +LOCAL HIDDEN +9 sH1 + +[0-9]+: [0-9a-f]+ +0 OBJECT LOCAL HIDDEN ABS _DYNAMIC +[0-9]+: 0+48 +0 TLS +LOCAL HIDDEN +8 sh3 +[0-9]+: 0+64 +0 TLS +LOCAL HIDDEN +9 sH2 +[0-9]+: 0+78 +0 TLS +LOCAL HIDDEN +9 sH7 @@ -146,7 +146,6 @@ Symbol table '.symtab' contains 55 entri +[0-9]+: 0+44 +0 TLS +LOCAL HIDDEN +8 sh2 +[0-9]+: 0+54 +0 TLS +LOCAL HIDDEN +8 sh6 +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8 - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3 +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4 +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +8 sg5 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-ia64/tlsbin.dd binutils-2.16.91.0.3/ld/testsuite/ld-ia64/tlsbin.dd --- binutils-2.16.91.0.2/ld/testsuite/ld-ia64/tlsbin.dd 2004-11-22 12:33:33.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-ia64/tlsbin.dd 2005-08-22 12:27:45.000000000 -0700 @@ -18,25 +18,25 @@ Disassembly of section .text: 40+101c: 81 0a 00 90[ ]+addl r15=40,r1;; 40+1020: 19 18 01 1c 18 10[ ]+\[MMB\][ ]+ld8 r35=\[r14\] 40+1026: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] -40+102c: c8 f3 ff 58[ ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +40+102c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; 40+1030: 0d 70 c0 02 00 24[ ]+\[MFI\][ ]+addl r14=48,r1 40+1036: 00 00 00 02 00 e0[ ]+nop.f 0x0 40+103c: 01 0c 00 90[ ]+addl r15=64,r1;; 40+1040: 19 18 01 1c 18 10[ ]+\[MMB\][ ]+ld8 r35=\[r14\] 40+1046: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] -40+104c: a8 f3 ff 58[ ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +40+104c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; 40+1050: 0d 70 c0 02 00 24[ ]+\[MFI\][ ]+addl r14=48,r1 40+1056: 00 00 00 02 00 80[ ]+nop.f 0x0 40+105c: 14 02 00 90[ ]+mov r36=33;; 40+1060: 1d 18 01 1c 18 10[ ]+\[MFB\][ ]+ld8 r35=\[r14\] 40+1066: 00 00 00 02 00 00[ ]+nop.f 0x0 -40+106c: 88 f3 ff 58[ ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +40+106c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; 40+1070: 0d 70 c0 02 00 24[ ]+\[MFI\][ ]+addl r14=48,r1 40+1076: 00 00 00 02 00 80[ ]+nop.f 0x0 40+107c: 04 00 00 84[ ]+mov r36=r0;; 40+1080: 1d 18 01 1c 18 10[ ]+\[MFB\][ ]+ld8 r35=\[r14\] 40+1086: 00 00 00 02 00 00[ ]+nop.f 0x0 -40+108c: 68 f3 ff 58[ ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +40+108c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; 40+1090: 0b 10 00 10 00 21[ ]+\[MMI\][ ]+mov r2=r8;; 40+1096: e0 00 0a 00 48 e0[ ]+addl r14=64,r2 40+109c: 61 14 00 90[ ]+addl r15=70,r2;; diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-ia64/tlsbin.rd binutils-2.16.91.0.3/ld/testsuite/ld-ia64/tlsbin.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-ia64/tlsbin.rd 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-ia64/tlsbin.rd 2005-08-22 12:27:45.000000000 -0700 @@ -48,93 +48,92 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 3 entries: +Offset +Info +Type +Symbol's Value Symbol's Name \+ Addend -60+1330 0+200000097 R_IA64_TPREL64LSB +0+ sG2 \+ 0 -60+1338 0+5000000a7 R_IA64_DTPMOD64LSB +0+ sG1 \+ 0 -60+1340 0+5000000b7 R_IA64_DTPREL64LSB +0+ sG1 \+ 0 +[0-9a-f ]+R_IA64_TPREL64LSB +0+ sG2 \+ 0 +[0-9a-f ]+R_IA64_DTPMOD64LSB +0+ sG1 \+ 0 +[0-9a-f ]+R_IA64_DTPREL64LSB +0+ sG1 \+ 0 Relocation section '.rela.IA_64.pltoff' at offset 0x[0-9a-f]+ contains 1 entries: +Offset +Info +Type +Symbol's Value Symbol's Name \+ Addend -60+1360 0+300000081 R_IA64_IPLTLSB +0+ __tls_get_addr \+ 0 +[0-9a-f ]+R_IA64_IPLTLSB +0+ __tls_get_addr \+ 0 -Symbol table '.dynsym' contains 8 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: 60+1[0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +[0-9]+: 0+ +16 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* TLS +GLOBAL DEFAULT +UND sG2 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sG1 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '.symtab' contains 69 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +16 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +17 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +18 * - +[0-9]+: 0+20 +0 TLS +LOCAL +DEFAULT +11 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL +DEFAULT +11 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL +DEFAULT +11 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL +DEFAULT +11 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL +DEFAULT +11 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL +DEFAULT +11 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL +DEFAULT +11 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL +DEFAULT +11 sl8 - +[0-9]+: 0+80 +0 TLS +LOCAL +DEFAULT +12 bl1 - +[0-9]+: 0+84 +0 TLS +LOCAL +DEFAULT +12 bl2 - +[0-9]+: 0+88 +0 TLS +LOCAL +DEFAULT +12 bl3 - +[0-9]+: 0+8c +0 TLS +LOCAL +DEFAULT +12 bl4 - +[0-9]+: 0+90 +0 TLS +LOCAL +DEFAULT +12 bl5 - +[0-9]+: 0+94 +0 TLS +LOCAL +DEFAULT +12 bl6 - +[0-9]+: 0+98 +0 TLS +LOCAL +DEFAULT +12 bl7 - +[0-9]+: 0+9c +0 TLS +LOCAL +DEFAULT +12 bl8 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +11 sg8 - +[0-9]+: 0+7c +0 TLS +GLOBAL DEFAULT +12 bg8 - +[0-9]+: 0+74 +0 TLS +GLOBAL DEFAULT +12 bg6 - +[0-9]+: 0+68 +0 TLS +GLOBAL DEFAULT +12 bg3 - +[0-9]+: 60+1[0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +11 sg3 - +[0-9]+: 0+48 +0 TLS +GLOBAL HIDDEN +11 sh3 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +11 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +11 sg5 - +[0-9]+: 0+70 +0 TLS +GLOBAL DEFAULT +12 bg5 - +[0-9]+: 0+ +16 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+58 +0 TLS +GLOBAL HIDDEN +11 sh7 - +[0-9]+: 0+5c +0 TLS +GLOBAL HIDDEN +11 sh8 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +11 sg1 - +[0-9]+: 40+10d0 +112 FUNC +GLOBAL DEFAULT +8 _start - +[0-9]+: 0+4c +0 TLS +GLOBAL HIDDEN +11 sh4 - +[0-9]+: 0+78 +0 TLS +GLOBAL DEFAULT +12 bg7 - +[0-9]+: 0+50 +0 TLS +GLOBAL HIDDEN +11 sh5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 40+1000 +208 FUNC +GLOBAL DEFAULT +8 fn2 - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +11 sg2 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +[0-9]+: 0+40 +0 TLS +GLOBAL HIDDEN +11 sh1 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +11 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +11 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL HIDDEN +14 _GLOBAL_OFFSET_TABLE_ - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+44 +0 TLS +GLOBAL HIDDEN +11 sh2 - +[0-9]+: 0+54 +0 TLS +GLOBAL HIDDEN +11 sh6 - +[0-9]+: 0+64 +0 TLS +GLOBAL DEFAULT +12 bg2 - +[0-9]+: 0+60 +0 TLS +GLOBAL DEFAULT +12 bg1 - +[0-9]+: 0+6c +0 TLS +GLOBAL DEFAULT +12 bg4 +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +1 * +.* SECTION LOCAL +DEFAULT +2 * +.* SECTION LOCAL +DEFAULT +3 * +.* SECTION LOCAL +DEFAULT +4 * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +9 * +.* SECTION LOCAL +DEFAULT +10 * +.* SECTION LOCAL +DEFAULT +11 * +.* SECTION LOCAL +DEFAULT +12 * +.* SECTION LOCAL +DEFAULT +13 * +.* SECTION LOCAL +DEFAULT +14 * +.* SECTION LOCAL +DEFAULT +15 * +.* SECTION LOCAL +DEFAULT +16 * +.* SECTION LOCAL +DEFAULT +17 * +.* SECTION LOCAL +DEFAULT +18 * +.* TLS +LOCAL +DEFAULT +11 sl1 +.* TLS +LOCAL +DEFAULT +11 sl2 +.* TLS +LOCAL +DEFAULT +11 sl3 +.* TLS +LOCAL +DEFAULT +11 sl4 +.* TLS +LOCAL +DEFAULT +11 sl5 +.* TLS +LOCAL +DEFAULT +11 sl6 +.* TLS +LOCAL +DEFAULT +11 sl7 +.* TLS +LOCAL +DEFAULT +11 sl8 +.* TLS +LOCAL +DEFAULT +12 bl1 +.* TLS +LOCAL +DEFAULT +12 bl2 +.* TLS +LOCAL +DEFAULT +12 bl3 +.* TLS +LOCAL +DEFAULT +12 bl4 +.* TLS +LOCAL +DEFAULT +12 bl5 +.* TLS +LOCAL +DEFAULT +12 bl6 +.* TLS +LOCAL +DEFAULT +12 bl7 +.* TLS +LOCAL +DEFAULT +12 bl8 +.* OBJECT +LOCAL +HIDDEN +13 _DYNAMIC +.* OBJECT +LOCAL +HIDDEN +14 _GLOBAL_OFFSET_TABLE_ +.* TLS +GLOBAL DEFAULT +11 sg8 +.* TLS +GLOBAL DEFAULT +12 bg8 +.* TLS +GLOBAL DEFAULT +12 bg6 +.* TLS +GLOBAL DEFAULT +12 bg3 +.* TLS +GLOBAL DEFAULT +11 sg3 +.* TLS +GLOBAL HIDDEN +11 sh3 +.* TLS +GLOBAL DEFAULT +UND sG2 +.* TLS +GLOBAL DEFAULT +11 sg4 +.* TLS +GLOBAL DEFAULT +11 sg5 +.* TLS +GLOBAL DEFAULT +12 bg5 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL HIDDEN +11 sh7 +.* TLS +GLOBAL HIDDEN +11 sh8 +.* TLS +GLOBAL DEFAULT +11 sg1 +.* FUNC +GLOBAL DEFAULT +8 _start +.* TLS +GLOBAL HIDDEN +11 sh4 +.* TLS +GLOBAL DEFAULT +12 bg7 +.* TLS +GLOBAL HIDDEN +11 sh5 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* FUNC +GLOBAL DEFAULT +8 fn2 +.* TLS +GLOBAL DEFAULT +11 sg2 +.* TLS +GLOBAL DEFAULT +UND sG1 +.* TLS +GLOBAL HIDDEN +11 sh1 +.* TLS +GLOBAL DEFAULT +11 sg6 +.* TLS +GLOBAL DEFAULT +11 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL HIDDEN +11 sh2 +.* TLS +GLOBAL HIDDEN +11 sh6 +.* TLS +GLOBAL DEFAULT +12 bg2 +.* TLS +GLOBAL DEFAULT +12 bg1 +.* TLS +GLOBAL DEFAULT +12 bg4 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-ia64/tlspic.dd binutils-2.16.91.0.3/ld/testsuite/ld-ia64/tlspic.dd --- binutils-2.16.91.0.2/ld/testsuite/ld-ia64/tlspic.dd 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-ia64/tlspic.dd 2005-08-22 12:27:45.000000000 -0700 @@ -18,25 +18,25 @@ Disassembly of section .text: +101c: 01 0a 00 90[ ]+addl r15=32,r1;; +1020: 19 18 01 1c 18 10[ ]+\[MMB\] +ld8 r35=\[r14\] +1026: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] - +102c: 28 f5 ff 58[ ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; + +102c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +1030: 0d 70 c0 02 00 24[ ]+\[MFI\] +addl r14=48,r1 +1036: 00 00 00 02 00 e0[ ]+nop.f 0x0 +103c: 01 0c 00 90[ ]+addl r15=64,r1;; +1040: 19 18 01 1c 18 10[ ]+\[MMB\] +ld8 r35=\[r14\] +1046: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] - +104c: 08 f5 ff 58[ ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; + +104c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +1050: 0d 70 c0 02 00 24[ ]+\[MFI\] +addl r14=48,r1 +1056: 00 00 00 02 00 80[ ]+nop.f 0x0 +105c: 14 02 00 90[ ]+mov r36=33;; +1060: 1d 18 01 1c 18 10[ ]+\[MFB\] +ld8 r35=\[r14\] +1066: 00 00 00 02 00 00[ ]+nop.f 0x0 - +106c: e8 f4 ff 58[ ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; + +106c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +1070: 0d 70 c0 02 00 24[ ]+\[MFI\] +addl r14=48,r1 +1076: 00 00 00 02 00 80[ ]+nop.f 0x0 +107c: 04 00 00 84[ ]+mov r36=r0;; +1080: 1d 18 01 1c 18 10[ ]+\[MFB\] +ld8 r35=\[r14\] +1086: 00 00 00 02 00 00[ ]+nop.f 0x0 - +108c: c8 f4 ff 58[ ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; + +108c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; +1090: 0b 10 00 10 00 21[ ]+\[MMI\] +mov r2=r8;; +1096: e0 00 0a 00 48 e0[ ]+addl r14=64,r2 +109c: 21 16 00 90[ ]+addl r15=98,r2;; diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-ia64/tlspic.rd binutils-2.16.91.0.3/ld/testsuite/ld-ia64/tlspic.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-ia64/tlspic.rd 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-ia64/tlspic.rd 2005-08-22 12:27:45.000000000 -0700 @@ -45,97 +45,96 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 6 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+112f0 +0+d000000a7 R_IA64_DTPMOD64LSB +0+ sg1 \+ 0 -0+112f8 +0+d000000b7 R_IA64_DTPREL64LSB +0+ sg1 \+ 0 -0+11300 +0+1000000097 R_IA64_TPREL64LSB +0+4 sg2 \+ 0 -0+11308 +0+a7 R_IA64_DTPMOD64LSB +0+ -0+11310 +0+97 R_IA64_TPREL64LSB +0+44 -0+11320 +0+97 R_IA64_TPREL64LSB +0+24 +[0-9a-f ]+R_IA64_DTPMOD64LSB +0+ sg1 \+ 0 +[0-9a-f ]+R_IA64_DTPREL64LSB +0+ sg1 \+ 0 +[0-9a-f ]+R_IA64_TPREL64LSB +0+4 sg2 \+ 0 +[0-9a-f ]+R_IA64_DTPMOD64LSB +0+ +[0-9a-f ]+R_IA64_TPREL64LSB +0+44 +[0-9a-f ]+R_IA64_TPREL64LSB +0+24 Relocation section '.rela.IA_64.pltoff' at offset 0x[0-9a-f]+ contains 1 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+[0-9a-f]+ +0+c00000081 R_IA64_IPLTLSB +0+ __tls_get_addr \+ 0 +[0-9a-f ]+R_IA64_IPLTLSB +0+ __tls_get_addr \+ 0 -Symbol table '.dynsym' contains 21 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 * - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +10 sg8 - +[0-9]+: 0+11[0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +10 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +10 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +10 sg5 - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +10 sg1 - +[0-9]+: 0+1000 +272 FUNC +GLOBAL DEFAULT +7 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +10 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +10 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +10 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +9 * +.* SECTION LOCAL +DEFAULT +10 * +.* SECTION LOCAL +DEFAULT +11 * +.* SECTION LOCAL +DEFAULT +14 * +.* TLS +GLOBAL DEFAULT +10 sg8 +.* TLS +GLOBAL DEFAULT +10 sg3 +.* TLS +GLOBAL DEFAULT +10 sg4 +.* TLS +GLOBAL DEFAULT +10 sg5 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +10 sg1 +.* FUNC +GLOBAL DEFAULT +7 fn1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +10 sg2 +.* TLS +GLOBAL DEFAULT +10 sg6 +.* TLS +GLOBAL DEFAULT +10 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '.symtab' contains 57 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +16 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +17 * - +[0-9]+: 0+20 +0 TLS +LOCAL +DEFAULT +10 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL +DEFAULT +10 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL +DEFAULT +10 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL +DEFAULT +10 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL +DEFAULT +10 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL +DEFAULT +10 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL +DEFAULT +10 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL +DEFAULT +10 sl8 - +[0-9]+: 0+60 +0 TLS +LOCAL +HIDDEN +11 sH1 - +[0-9]+: 0+48 +0 TLS +LOCAL +HIDDEN +10 sh3 - +[0-9]+: 0+64 +0 TLS +LOCAL +HIDDEN +11 sH2 - +[0-9]+: 0+78 +0 TLS +LOCAL +HIDDEN +11 sH7 - +[0-9]+: 0+58 +0 TLS +LOCAL +HIDDEN +10 sh7 - +[0-9]+: 0+5c +0 TLS +LOCAL +HIDDEN +10 sh8 - +[0-9]+: 0+6c +0 TLS +LOCAL +HIDDEN +11 sH4 - +[0-9]+: 0+4c +0 TLS +LOCAL +HIDDEN +10 sh4 - +[0-9]+: 0+68 +0 TLS +LOCAL +HIDDEN +11 sH3 - +[0-9]+: 0+50 +0 TLS +LOCAL +HIDDEN +10 sh5 - +[0-9]+: 0+70 +0 TLS +LOCAL +HIDDEN +11 sH5 - +[0-9]+: 0+74 +0 TLS +LOCAL +HIDDEN +11 sH6 - +[0-9]+: 0+7c +0 TLS +LOCAL +HIDDEN +11 sH8 - +[0-9]+: 0+40 +0 TLS +LOCAL +HIDDEN +10 sh1 - +[0-9]+: 0+112d8 +0 OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: 0+44 +0 TLS +LOCAL +HIDDEN +10 sh2 - +[0-9]+: 0+54 +0 TLS +LOCAL +HIDDEN +10 sh6 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +10 sg8 - +[0-9]+: 0+11[0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +10 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +10 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +10 sg5 - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +10 sg1 - +[0-9]+: 0+1000 +272 FUNC +GLOBAL DEFAULT +7 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +10 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +10 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +10 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +1 * +.* SECTION LOCAL +DEFAULT +2 * +.* SECTION LOCAL +DEFAULT +3 * +.* SECTION LOCAL +DEFAULT +4 * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +9 * +.* SECTION LOCAL +DEFAULT +10 * +.* SECTION LOCAL +DEFAULT +11 * +.* SECTION LOCAL +DEFAULT +12 * +.* SECTION LOCAL +DEFAULT +13 * +.* SECTION LOCAL +DEFAULT +14 * +.* SECTION LOCAL +DEFAULT +15 * +.* SECTION LOCAL +DEFAULT +16 * +.* SECTION LOCAL +DEFAULT +17 * +.* TLS +LOCAL +DEFAULT +10 sl1 +.* TLS +LOCAL +DEFAULT +10 sl2 +.* TLS +LOCAL +DEFAULT +10 sl3 +.* TLS +LOCAL +DEFAULT +10 sl4 +.* TLS +LOCAL +DEFAULT +10 sl5 +.* TLS +LOCAL +DEFAULT +10 sl6 +.* TLS +LOCAL +DEFAULT +10 sl7 +.* TLS +LOCAL +DEFAULT +10 sl8 +.* TLS +LOCAL +HIDDEN +11 sH1 +.* OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC +.* TLS +LOCAL +HIDDEN +10 sh3 +.* TLS +LOCAL +HIDDEN +11 sH2 +.* TLS +LOCAL +HIDDEN +11 sH7 +.* TLS +LOCAL +HIDDEN +10 sh7 +.* TLS +LOCAL +HIDDEN +10 sh8 +.* TLS +LOCAL +HIDDEN +11 sH4 +.* TLS +LOCAL +HIDDEN +10 sh4 +.* TLS +LOCAL +HIDDEN +11 sH3 +.* TLS +LOCAL +HIDDEN +10 sh5 +.* TLS +LOCAL +HIDDEN +11 sH5 +.* TLS +LOCAL +HIDDEN +11 sH6 +.* TLS +LOCAL +HIDDEN +11 sH8 +.* TLS +LOCAL +HIDDEN +10 sh1 +.* OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +LOCAL +HIDDEN +10 sh2 +.* TLS +LOCAL +HIDDEN +10 sh6 +.* TLS +GLOBAL DEFAULT +10 sg8 +.* TLS +GLOBAL DEFAULT +10 sg3 +.* TLS +GLOBAL DEFAULT +10 sg4 +.* TLS +GLOBAL DEFAULT +10 sg5 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +10 sg1 +.* FUNC +GLOBAL DEFAULT +7 fn1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +10 sg2 +.* TLS +GLOBAL DEFAULT +10 sg6 +.* TLS +GLOBAL DEFAULT +10 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/mips-elf-flags.exp binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/mips-elf-flags.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/mips-elf-flags.exp 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/mips-elf-flags.exp 2005-08-22 12:27:45.000000000 -0700 @@ -158,3 +158,6 @@ good_combination { "-mips3 -32" "-mips64 good_combination { "-march=vr4120 -mabi=32" "-mips3 -mabi=32" } { 4120 o32 } good_combination { "-march=sb1 -mgp32 -32" "-march=4000 -mgp32 -32" } { sb1 o32 } +good_combination { "-mips32 -mabi=32" "-march=sb1 -mabi=32" } { sb1 o32 } +good_combination { "-mips64r2 -mabi=32" "-mips32 -mabi=32" } { mips64r2 o32 } +good_combination { "-mips5 -mabi=o64" "-mips64r2 -mabi=o64" } { mips64r2 o64 } diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/multi-got-1.d binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/multi-got-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/multi-got-1.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/multi-got-1.d 2005-08-22 12:27:46.000000000 -0700 @@ -10,7 +10,7 @@ Dynamic section at offset 0xcc contains 0x00000004 \(HASH\) 0x184 0x00000005 \(STRTAB\) 0x[0-9a-f]+ 0x00000006 \(SYMTAB\) 0x[0-9a-f]+ - 0x0000000a \(STRSZ\) 178090 \(bytes\) + 0x0000000a \(STRSZ\) [0-9]+ \(bytes\) 0x0000000b \(SYMENT\) 16 \(bytes\) 0x00000015 \(DEBUG\) 0x0 0x00000003 \(PLTGOT\) 0x[0-9a-f]+ @@ -21,9 +21,9 @@ Dynamic section at offset 0xcc contains 0x70000005 \(MIPS_FLAGS\) NOTPOT 0x70000006 \(MIPS_BASE_ADDRESS\) 0 0x7000000a \(MIPS_LOCAL_GOTNO\) 12 - 0x70000011 \(MIPS_SYMTABNO\) 16399 - 0x70000012 \(MIPS_UNREFEXTNO\) 14 - 0x70000013 \(MIPS_GOTSYM\) 0xf + 0x70000011 \(MIPS_SYMTABNO\) [0-9]+ + 0x70000012 \(MIPS_UNREFEXTNO\) [0-9]+ + 0x70000013 \(MIPS_GOTSYM\) 0x[0-9a-f]+ 0x00000000 \(NULL\) 0x0 Relocation section '\.rel\.dyn' at offset 0x[0-9a-f]+ contains 8203 entries: diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/multi-got-no-shared.d binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/multi-got-no-shared.d --- binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/multi-got-no-shared.d 2005-04-09 12:03:27.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/multi-got-no-shared.d 2005-08-22 12:27:46.000000000 -0700 @@ -8,11 +8,11 @@ .*: +file format.* Disassembly of section \.text: -004000b0 <[^>]*> 3c1c1000 lui gp,0x1000 -004000b4 <[^>]*> 279c7ff0 addiu gp,gp,32752 +004000b0 <[^>]*> 3c1c0046 lui gp,0x46 +004000b4 <[^>]*> 279c9ff0 addiu gp,gp,-24592 004000b8 <[^>]*> afbc0008 sw gp,8\(sp\) #... -00408d60 <[^>]*> 3c1c1002 lui gp,0x1002 -00408d64 <[^>]*> 279c9960 addiu gp,gp,-26272 +00408d60 <[^>]*> 3c1c0047 lui gp,0x47 +00408d64 <[^>]*> 279cb960 addiu gp,gp,-18080 00408d68 <[^>]*> afbc0008 sw gp,8\(sp\) #pass diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/rel32-n32.d binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/rel32-n32.d --- binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/rel32-n32.d 2005-04-09 12:03:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/rel32-n32.d 2005-08-22 12:27:46.000000000 -0700 @@ -4,12 +4,12 @@ #readelf: -x 5 -r #ld: -shared -melf32btsmipn32 -Relocation section '.rel.dyn' at offset 0x304 contains 2 entries: +Relocation section '.rel.dyn' at offset 0x2c0 contains 2 entries: Offset Info Type Sym.Value Sym. Name 00000000 00000000 R_MIPS_NONE -00000330 00000003 R_MIPS_REL32 +000002e0 00000003 R_MIPS_REL32 Hex dump of section '.text': - 0x00000320 00000000 00000000 00000000 00000000 ................ - 0x00000330 00000330 00000000 00000000 00000000 ................ - 0x00000340 00000000 00000000 00000000 00000000 ................ + 0x000002d0 00000000 00000000 00000000 00000000 ................ + 0x000002e0 000002e0 00000000 00000000 00000000 ................ + 0x000002f0 00000000 00000000 00000000 00000000 ................ diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/rel32-o32.d binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/rel32-o32.d --- binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/rel32-o32.d 2005-04-09 12:03:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/rel32-o32.d 2005-08-22 12:27:46.000000000 -0700 @@ -4,12 +4,12 @@ #readelf: -x 6 -r #ld: -shared -melf32btsmip -Relocation section '.rel.dyn' at offset 0x31c contains 2 entries: +Relocation section '.rel.dyn' at offset 0x2d8 contains 2 entries: Offset Info Type Sym.Value Sym. Name 00000000 00000000 R_MIPS_NONE -00000340 00000003 R_MIPS_REL32 +00000300 00000003 R_MIPS_REL32 Hex dump of section '.text': - 0x00000330 00000000 00000000 00000000 00000000 ................ - 0x00000340 00000340 00000000 00000000 00000000 ................ - 0x00000350 00000000 00000000 00000000 00000000 ................ + 0x000002f0 00000000 00000000 00000000 00000000 ................ + 0x00000300 00000300 00000000 00000000 00000000 ................ + 0x00000310 00000000 00000000 00000000 00000000 ................ diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/rel64.d binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/rel64.d --- binutils-2.16.91.0.2/ld/testsuite/ld-mips-elf/rel64.d 2005-04-09 12:03:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-mips-elf/rel64.d 2005-08-22 12:27:46.000000000 -0700 @@ -4,16 +4,16 @@ #readelf: -x 6 -r #ld: -shared -melf64btsmip -Relocation section '.rel.dyn' at offset 0x498 contains 2 entries: +Relocation section '.rel.dyn' at offset 0x440 contains 2 entries: Offset Info Type Sym. Value Sym. Name 000000000000 000000000000 R_MIPS_NONE Type2: R_MIPS_NONE Type3: R_MIPS_NONE -0000000004d0 000000001203 R_MIPS_REL32 +000000000470 000000001203 R_MIPS_REL32 Type2: R_MIPS_64 Type3: R_MIPS_NONE Hex dump of section '.text': - 0x000004c0 00000000 00000000 00000000 00000000 ................ - 0x000004d0 00000000 000004d0 00000000 00000000 ................ - 0x000004e0 00000000 00000000 00000000 00000000 ................ + 0x00000460 00000000 00000000 00000000 00000000 ................ + 0x00000470 00000000 00000470 00000000 00000000 ................ + 0x00000480 00000000 00000000 00000000 00000000 ................ diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe32.d binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe32.d --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe32.d 2005-05-10 15:46:53.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe32.d 2005-08-22 12:27:46.000000000 -0700 @@ -44,4 +44,4 @@ Disassembly of section \.got: .*: 4e 80 00 21 blrl .* <_GLOBAL_OFFSET_TABLE_>: -.*: 01 81 02 d0 00 00 00 00 00 00 00 00 .* +.*: 01 81 02 b4 00 00 00 00 00 00 00 00 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe32.g binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe32.g --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe32.g 2005-05-10 15:46:53.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe32.g 2005-08-22 12:27:46.000000000 -0700 @@ -8,4 +8,4 @@ Contents of section \.got: .* 00000000 00000000 00000000 4e800021 .* -.* 018102d0 00000000 00000000 .* +.* 018102b4 00000000 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe32.r binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe32.r --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe32.r 2005-05-10 15:46:53.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe32.r 2005-08-22 12:27:46.000000000 -0700 @@ -9,18 +9,18 @@ There are 16 section headers.* Section Headers: +\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al - +\[ 0\] +NULL +00000000 000000 000000 00 +0 +0 +0 + +\[ 0\] +NULL +0+ 0+ 0+ 00 +0 +0 +0 +\[ 1\] \.interp +.* +\[ 2\] \.hash +.* +\[ 3\] \.dynsym +.* +\[ 4\] \.dynstr +.* +\[ 5\] \.rela\.dyn +.* +\[ 6\] \.rela\.plt +.* - +\[ 7\] \.text +PROGBITS +01800244 000244 000070 00 +AX +0 +0 +1 - +\[ 8\] \.tdata +PROGBITS +018102b4 0002b4 00001c 00 WAT +0 +0 +4 - +\[ 9\] \.tbss +NOBITS +018102d0 0002d0 00001c 00 WAT +0 +0 +4 - +\[10\] \.dynamic +DYNAMIC +018102d0 0002d0 0000a0 08 +WA +4 +0 +4 - +\[11\] \.got +PROGBITS +01810370 000370 00001c 04 WAX +0 +0 +4 + +\[ 7\] \.text +PROGBITS +[0-9a-f]+ [0-9a-f]+ 000070 00 +AX +0 +0 +1 + +\[ 8\] \.tdata +PROGBITS +[0-9a-f]+ [0-9a-f]+ 00001c 00 WAT +0 +0 +4 + +\[ 9\] \.tbss +NOBITS +[0-9a-f]+ [0-9a-f]+ 00001c 00 WAT +0 +0 +4 + +\[10\] \.dynamic +DYNAMIC +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 08 +WA +4 +0 +4 + +\[11\] \.got +PROGBITS +[0-9a-f]+ [0-9a-f]+ 00001c 04 WAX +0 +0 +4 +\[12\] \.plt +NOBITS +.* +\[13\] \.shstrtab +STRTAB +.* +\[14\] \.symtab +SYMTAB +.* @@ -28,7 +28,7 @@ Section Headers: #... Elf file type is EXEC \(Executable file\) -Entry point 0x1800244 +Entry point .* There are 6 program headers, starting at offset 52 Program Headers: @@ -36,10 +36,10 @@ Program Headers: +PHDR +0x000034 0x01800034 0x01800034 0x000c0 0x000c0 R E 0x4 +INTERP +0x0000f4 0x018000f4 0x018000f4 0x00011 0x00011 R +0x1 +\[Requesting program interpreter: .*\] - +LOAD +0x000000 0x01800000 0x01800000 0x002b4 0x002b4 R E 0x10000 - +LOAD +0x0002b4 0x018102b4 0x018102b4 0x000d8 0x0012c RWE 0x10000 - +DYNAMIC +0x0002d0 0x018102d0 0x018102d0 0x000a0 0x000a0 RW +0x4 - +TLS +0x0002b4 0x018102b4 0x018102b4 0x0001c 0x00038 R +0x4 + +LOAD .* R E 0x10000 + +LOAD .* RWE 0x10000 + +DYNAMIC .* RW +0x4 + +TLS .* 0x0001c 0x00038 R +0x4 Section to Segment mapping: +Segment Sections\.\.\. @@ -50,66 +50,65 @@ Program Headers: +04 +\.dynamic +05 +\.tdata \.tbss -Relocation section '\.rela\.dyn' at offset 0x220 contains 2 entries: +Relocation section '\.rela\.dyn' at offset .* contains 2 entries: Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend -01810370 +00000249 R_PPC_TPREL32 +00000000 +gd \+ 0 -01810374 +00000444 R_PPC_DTPMOD32 +00000000 +ld \+ 0 +[0-9a-f ]+R_PPC_TPREL32 +00000000 +gd \+ 0 +[0-9a-f ]+R_PPC_DTPMOD32 +00000000 +ld \+ 0 -Relocation section '\.rela\.plt' at offset 0x238 contains 1 entries: +Relocation section '\.rela\.plt' at offset .* contains 1 entries: Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend -018103d4 +00000315 R_PPC_JMP_SLOT +018103d4 +__tls_get_addr \+ 0 +[0-9a-f ]+R_PPC_JMP_SLOT[0-9a-f ]+__tls_get_addr \+ 0 -Symbol table '\.dynsym' contains 9 entries: +Symbol table '\.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name -.*: 00000000 +0 NOTYPE +LOCAL +DEFAULT +UND -.*: 018102d0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC -.*: 00000000 +0 TLS +GLOBAL DEFAULT +UND gd -.*: 018103d4 +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr -.*: 00000000 +0 TLS +GLOBAL DEFAULT +UND ld -.*: 018103e0 +0 NOTYPE +GLOBAL DEFAULT +ABS __end -.*: 0181038c +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start -.*: 0181038c +0 NOTYPE +GLOBAL DEFAULT +ABS _edata -.*: 018103e0 +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND +.* TLS +GLOBAL DEFAULT +UND gd +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +ABS __end +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '\.symtab' contains 40 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name -.*: 00000000 +0 NOTYPE +LOCAL +DEFAULT +UND -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 -.*: 01800244 +0 SECTION LOCAL +DEFAULT +7 -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 -.*: 018102d0 +0 SECTION LOCAL +DEFAULT +9 -.*: 018102d0 +0 SECTION LOCAL +DEFAULT +10 -.*: 01810370 +0 SECTION LOCAL +DEFAULT +11 -.*: 0181038c +0 SECTION LOCAL +DEFAULT +12 -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 -.*: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 -.*: 00000000 +0 TLS +LOCAL +DEFAULT +8 gd4 -.*: 00000004 +0 TLS +LOCAL +DEFAULT +8 ld4 -.*: 00000008 +0 TLS +LOCAL +DEFAULT +8 ld5 -.*: 0000000c +0 TLS +LOCAL +DEFAULT +8 ld6 -.*: 00000010 +0 TLS +LOCAL +DEFAULT +8 ie4 -.*: 00000014 +0 TLS +LOCAL +DEFAULT +8 le4 -.*: 00000018 +0 TLS +LOCAL +DEFAULT +8 le5 -.*: 018102d0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC -.*: 00000000 +0 TLS +GLOBAL DEFAULT +UND gd -.*: 00000030 +0 TLS +GLOBAL DEFAULT +9 le0 -.*: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr -.*: 00000020 +0 TLS +GLOBAL DEFAULT +9 ld0 -.*: 00000034 +0 TLS +GLOBAL DEFAULT +9 le1 -.*: 00000000 +0 TLS +GLOBAL DEFAULT +UND ld -.*: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +7 _start -.*: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __end -.*: 00000028 +0 TLS +GLOBAL DEFAULT +9 ld2 -.*: 00000024 +0 TLS +GLOBAL DEFAULT +9 ld1 -.*: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start -.*: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata -.*: 01810380 +0 OBJECT +GLOBAL +HIDDEN +11 _GLOBAL_OFFSET_TABLE_ -.*: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end -.*: 0000001c +0 TLS +GLOBAL DEFAULT +9 gd0 -.*: 0000002c +0 TLS +GLOBAL DEFAULT +9 ie0 +.* NOTYPE +LOCAL +DEFAULT +UND +.* SECTION LOCAL +DEFAULT +1 +.* SECTION LOCAL +DEFAULT +2 +.* SECTION LOCAL +DEFAULT +3 +.* SECTION LOCAL +DEFAULT +4 +.* SECTION LOCAL +DEFAULT +5 +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* SECTION LOCAL +DEFAULT +9 +.* SECTION LOCAL +DEFAULT +10 +.* SECTION LOCAL +DEFAULT +11 +.* SECTION LOCAL +DEFAULT +12 +.* SECTION LOCAL +DEFAULT +13 +.* SECTION LOCAL +DEFAULT +14 +.* SECTION LOCAL +DEFAULT +15 +.* TLS +LOCAL +DEFAULT +8 gd4 +.* TLS +LOCAL +DEFAULT +8 ld4 +.* TLS +LOCAL +DEFAULT +8 ld5 +.* TLS +LOCAL +DEFAULT +8 ld6 +.* TLS +LOCAL +DEFAULT +8 ie4 +.* TLS +LOCAL +DEFAULT +8 le4 +.* TLS +LOCAL +DEFAULT +8 le5 +.* OBJECT +LOCAL +HIDDEN +10 _DYNAMIC +.* OBJECT +LOCAL +HIDDEN +11 _GLOBAL_OFFSET_TABLE_ +.* TLS +GLOBAL DEFAULT +UND gd +.* TLS +GLOBAL DEFAULT +9 le0 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +9 ld0 +.* TLS +GLOBAL DEFAULT +9 le1 +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +7 _start +.* NOTYPE +GLOBAL DEFAULT +ABS __end +.* TLS +GLOBAL DEFAULT +9 ld2 +.* TLS +GLOBAL DEFAULT +9 ld1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL DEFAULT +9 gd0 +.* TLS +GLOBAL DEFAULT +9 ie0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe.g binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe.g --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe.g 2005-04-09 12:03:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe.g 2005-08-22 12:27:46.000000000 -0700 @@ -7,6 +7,6 @@ .*: +file format elf64-powerpc Contents of section \.got: - 100105f0 00000000 100185f0 ffffffff ffff8018 .* - 10010600 00000000 00000000 00000000 00000000 .* - 10010610 00000000 00000000 00000000 00000000 .* +.* 00000000 100185d0 ffffffff ffff8018 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe.r binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe.r --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexe.r 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexe.r 2005-08-22 12:27:46.000000000 -0700 @@ -37,10 +37,10 @@ Program Headers: +PHDR +0x0+40 0x0+10000040 0x0+10000040 0x0+150 0x0+150 R E 0x8 +INTERP +0x0+190 0x0+10000190 0x0+10000190 0x0+11 0x0+11 R +0x1 +\[Requesting program interpreter: .*\] - +LOAD +0x0+ 0x0+10000000 0x0+10000000 0x0+468 0x0+468 R E 0x10000 - +LOAD +0x0+468 0x0+10010468 0x0+10010468 0x0+1b8 0x0+1e8 RW +0x10000 - +DYNAMIC +0x0+4a0 0x0+100104a0 0x0+100104a0 0x0+150 0x0+150 RW +0x8 - +TLS +0x0+468 0x0+10010468 0x0+10010468 0x0+38 0x0+70 R +0x8 + +LOAD .* R E 0x10000 + +LOAD .* RW +0x10000 + +DYNAMIC .* RW +0x8 + +TLS .* 0x0+38 0x0+70 R +0x8 Section to Segment mapping: +Segment Sections\.\.\. @@ -59,59 +59,58 @@ Relocation section '\.rela\.dyn' at offs Relocation section '\.rela\.plt' at offset .* contains 1 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+10010638 +0+300000015 R_PPC64_JMP_SLOT +0+ __tls_get_addr \+ 0 +[0-9a-f ]+R_PPC64_JMP_SLOT +0+ __tls_get_addr \+ 0 -Symbol table '\.dynsym' contains 9 entries: +Symbol table '\.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name -.* 0+ +0 NOTYPE +LOCAL +DEFAULT +UND -.* 0+100104a0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC -.* 0+ +0 TLS +GLOBAL DEFAULT +UND gd -.* 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr -.* 0+ +0 TLS +GLOBAL DEFAULT +UND ld -.* 0+50 +0 TLS +GLOBAL DEFAULT +10 ld2 -.* 0+10010620 +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start -.* 0+10010620 +0 NOTYPE +GLOBAL DEFAULT +ABS _edata -.* 0+10010650 +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND +.* TLS +GLOBAL DEFAULT +UND gd +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +UND ld +.* TLS +GLOBAL DEFAULT +10 ld2 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '\.symtab' contains 40 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name .* 0+ +0 NOTYPE +LOCAL +DEFAULT +UND -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 -.* 0+10000368 +0 SECTION LOCAL +DEFAULT +7 -.* 0+10000468 +0 SECTION LOCAL +DEFAULT +8 -.* 0+10010468 +0 SECTION LOCAL +DEFAULT +9 -.* 0+100104a0 +0 SECTION LOCAL +DEFAULT +10 -.* 0+100104a0 +0 SECTION LOCAL +DEFAULT +11 -.* 0+100105f0 +0 SECTION LOCAL +DEFAULT +12 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +16 -.* 0+ +0 TLS +LOCAL +DEFAULT +9 gd4 -.* 0+8 +0 TLS +LOCAL +DEFAULT +9 ld4 -.* 0+10 +0 TLS +LOCAL +DEFAULT +9 ld5 -.* 0+18 +0 TLS +LOCAL +DEFAULT +9 ld6 -.* 0+20 +0 TLS +LOCAL +DEFAULT +9 ie4 -.* 0+28 +0 TLS +LOCAL +DEFAULT +9 le4 -.* 0+30 +0 TLS +LOCAL +DEFAULT +9 le5 -.* 0+ +0 FUNC +LOCAL +DEFAULT +UND \.__tls_get_addr -.* 0+100104a0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC -.* 0+ +0 TLS +GLOBAL DEFAULT +UND gd -.* 0+60 +0 TLS +GLOBAL DEFAULT +10 le0 -.* 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr -.* 0+40 +0 TLS +GLOBAL DEFAULT +10 ld0 -.* 0+68 +0 TLS +GLOBAL DEFAULT +10 le1 -.* 0+ +0 TLS +GLOBAL DEFAULT +UND ld -.* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +7 _start -.* 0+50 +0 TLS +GLOBAL DEFAULT +10 ld2 -.* 0+48 +0 TLS +GLOBAL DEFAULT +10 ld1 -.* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start -.* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata -.* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end -.* 0+38 +0 TLS +GLOBAL DEFAULT +10 gd0 -.* 0+58 +0 TLS +GLOBAL DEFAULT +10 ie0 +.* SECTION LOCAL +DEFAULT +1 +.* SECTION LOCAL +DEFAULT +2 +.* SECTION LOCAL +DEFAULT +3 +.* SECTION LOCAL +DEFAULT +4 +.* SECTION LOCAL +DEFAULT +5 +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* SECTION LOCAL +DEFAULT +9 +.* SECTION LOCAL +DEFAULT +10 +.* SECTION LOCAL +DEFAULT +11 +.* SECTION LOCAL +DEFAULT +12 +.* SECTION LOCAL +DEFAULT +13 +.* SECTION LOCAL +DEFAULT +14 +.* SECTION LOCAL +DEFAULT +15 +.* SECTION LOCAL +DEFAULT +16 +.* TLS +LOCAL +DEFAULT +9 gd4 +.* TLS +LOCAL +DEFAULT +9 ld4 +.* TLS +LOCAL +DEFAULT +9 ld5 +.* TLS +LOCAL +DEFAULT +9 ld6 +.* TLS +LOCAL +DEFAULT +9 ie4 +.* TLS +LOCAL +DEFAULT +9 le4 +.* TLS +LOCAL +DEFAULT +9 le5 +.* OBJECT +LOCAL +HIDDEN +11 _DYNAMIC +.* FUNC +LOCAL +DEFAULT +UND \.__tls_get_addr +.* GLOBAL DEFAULT +UND gd +.* GLOBAL DEFAULT +10 le0 +.* GLOBAL DEFAULT +UND __tls_get_addr +.* GLOBAL DEFAULT +10 ld0 +.* GLOBAL DEFAULT +10 le1 +.* GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +7 _start +.* TLS +GLOBAL DEFAULT +10 ld2 +.* TLS +GLOBAL DEFAULT +10 ld1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL DEFAULT +10 gd0 +.* TLS +GLOBAL DEFAULT +10 ie0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexetoc.g binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexetoc.g --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexetoc.g 2005-04-09 12:03:29.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexetoc.g 2005-08-22 12:27:46.000000000 -0700 @@ -7,9 +7,9 @@ .*: +file format elf64-powerpc Contents of section \.got: - 10010580 00000000 10018580 00000000 00000000 .* - 10010590 00000000 00000000 00000000 00000000 .* - 100105a0 00000000 00000000 00000000 00000001 .* - 100105b0 00000000 00000000 00000000 00000001 .* - 100105c0 00000000 00000000 ffffffff ffff8050 .* - 100105d0 00000000 00000000 .* +.* 00000000 10018558 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 00000000 00000001 .* +.* 00000000 00000000 00000000 00000001 .* +.* 00000000 00000000 ffffffff ffff8050 .* +.* 00000000 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexetoc.r binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexetoc.r --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsexetoc.r 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsexetoc.r 2005-08-22 12:27:46.000000000 -0700 @@ -37,10 +37,10 @@ Program Headers: +PHDR +0x0+40 0x0+10000040 0x0+10000040 0x0+150 0x0+150 R E 0x8 +INTERP +0x0+190 0x0+10000190 0x0+10000190 0x0+11 0x0+11 R +0x1 +\[Requesting program interpreter: .*\] - +LOAD +0x0+ 0x0+10000000 0x0+10000000 0x0+3f8 0x0+3f8 R E 0x10000 - +LOAD +0x0+3f8 0x0+100103f8 0x0+100103f8 0x0+1e0 0x0+210 RW +0x10000 - +DYNAMIC +0x0+430 0x0+10010430 0x0+10010430 0x0+150 0x0+150 RW +0x8 - +TLS +0x0+3f8 0x0+100103f8 0x0+100103f8 0x0+38 0x0+70 R +0x8 + +LOAD .* R E 0x10000 + +LOAD .* RW +0x10000 + +DYNAMIC .* RW +0x8 + +TLS .* 0x0+38 0x0+70 R +0x8 Section to Segment mapping: +Segment Sections\.\.\. @@ -53,64 +53,63 @@ Program Headers: Relocation section '\.rela\.dyn' at offset .* contains 2 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+10010588 +0+200000049 R_PPC64_TPREL64 +0+ gd \+ 0 -0+10010598 +0+400000044 R_PPC64_DTPMOD64 +0+ ld \+ 0 +[0-9a-f ]+R_PPC64_TPREL64 +0+ gd \+ 0 +[0-9a-f ]+R_PPC64_DTPMOD64 +0+ ld \+ 0 Relocation section '\.rela\.plt' at offset .* contains 1 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+100105f0 +0+300000015 R_PPC64_JMP_SLOT +0+ __tls_get_addr \+ 0 +[0-9a-f ]+R_PPC64_JMP_SLOT +0+ __tls_get_addr \+ 0 -Symbol table '\.dynsym' contains 8 entries: +Symbol table '\.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name -.* 0+ +0 NOTYPE +LOCAL +DEFAULT +UND -.* 0+10010430 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC -.* 0+ +0 TLS +GLOBAL DEFAULT +UND gd -.* 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr -.* 0+ +0 TLS +GLOBAL DEFAULT +UND ld -.* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start -.* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata -.* [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND +.* TLS +GLOBAL DEFAULT +UND gd +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '\.symtab' contains 41 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name -.* 0+ +0 NOTYPE +LOCAL +DEFAULT +UND -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 -.* 0+10000338 +0 SECTION LOCAL +DEFAULT +7 -.* 0+100003f8 +0 SECTION LOCAL +DEFAULT +8 -.* 0+100103f8 +0 SECTION LOCAL +DEFAULT +9 -.* 0+10010430 +0 SECTION LOCAL +DEFAULT +10 -.* 0+10010430 +0 SECTION LOCAL +DEFAULT +11 -.* 0+10010580 +0 SECTION LOCAL +DEFAULT +12 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 -.* [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +16 -.* 0+ +0 TLS +LOCAL +DEFAULT +9 gd4 -.* 0+8 +0 TLS +LOCAL +DEFAULT +9 ld4 -.* 0+10 +0 TLS +LOCAL +DEFAULT +9 ld5 -.* 0+18 +0 TLS +LOCAL +DEFAULT +9 ld6 -.* 0+20 +0 TLS +LOCAL +DEFAULT +9 ie4 -.* 0+28 +0 TLS +LOCAL +DEFAULT +9 le4 -.* 0+30 +0 TLS +LOCAL +DEFAULT +9 le5 -.* 0+100105d0 +0 NOTYPE +LOCAL +DEFAULT +12 \.Lie0 -.* 0+ +0 FUNC +LOCAL +DEFAULT +UND \.__tls_get_addr -.* 0+10010430 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC -.* 0+ +0 TLS +GLOBAL DEFAULT +UND gd -.* 0+60 +0 TLS +GLOBAL DEFAULT +10 le0 -.* 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr -.* 0+40 +0 TLS +GLOBAL DEFAULT +10 ld0 -.* 0+68 +0 TLS +GLOBAL DEFAULT +10 le1 -.* 0+ +0 TLS +GLOBAL DEFAULT +UND ld -.* 0+10000354 +0 NOTYPE +GLOBAL DEFAULT +7 _start -.* 0+50 +0 TLS +GLOBAL DEFAULT +10 ld2 -.* 0+48 +0 TLS +GLOBAL DEFAULT +10 ld1 -.* 0+100105d8 +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start -.* 0+100105d8 +0 NOTYPE +GLOBAL DEFAULT +ABS _edata -.* 0+10010608 +0 NOTYPE +GLOBAL DEFAULT +ABS _end -.* 0+38 +0 TLS +GLOBAL DEFAULT +10 gd0 -.* 0+58 +0 TLS +GLOBAL DEFAULT +10 ie0 +.* NOTYPE +LOCAL +DEFAULT +UND +.* SECTION LOCAL +DEFAULT +1 +.* SECTION LOCAL +DEFAULT +2 +.* SECTION LOCAL +DEFAULT +3 +.* SECTION LOCAL +DEFAULT +4 +.* SECTION LOCAL +DEFAULT +5 +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* SECTION LOCAL +DEFAULT +9 +.* SECTION LOCAL +DEFAULT +10 +.* SECTION LOCAL +DEFAULT +11 +.* SECTION LOCAL +DEFAULT +12 +.* SECTION LOCAL +DEFAULT +13 +.* SECTION LOCAL +DEFAULT +14 +.* SECTION LOCAL +DEFAULT +15 +.* SECTION LOCAL +DEFAULT +16 +.* TLS +LOCAL +DEFAULT +9 gd4 +.* TLS +LOCAL +DEFAULT +9 ld4 +.* TLS +LOCAL +DEFAULT +9 ld5 +.* TLS +LOCAL +DEFAULT +9 ld6 +.* TLS +LOCAL +DEFAULT +9 ie4 +.* TLS +LOCAL +DEFAULT +9 le4 +.* TLS +LOCAL +DEFAULT +9 le5 +.* NOTYPE +LOCAL +DEFAULT +12 \.Lie0 +.* OBJECT +LOCAL +HIDDEN +11 _DYNAMIC +.* FUNC +LOCAL +DEFAULT +UND \.__tls_get_addr +.* TLS +GLOBAL DEFAULT +UND gd +.* TLS +GLOBAL DEFAULT +10 le0 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +10 ld0 +.* TLS +GLOBAL DEFAULT +10 le1 +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +7 _start +.* TLS +GLOBAL DEFAULT +10 ld2 +.* TLS +GLOBAL DEFAULT +10 ld1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL DEFAULT +10 gd0 +.* TLS +GLOBAL DEFAULT +10 ie0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso32.d binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso32.d --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso32.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso32.d 2005-08-22 12:27:46.000000000 -0700 @@ -42,5 +42,5 @@ Disassembly of section \.got: .* <\.got>: \.\.\. .*: 4e 80 00 21 blrl -.*: 00 01 04 54 .* +.*: 00 01 04 38 .* \.\.\. diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso32.g binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso32.g --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso32.g 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso32.g 2005-08-22 12:27:46.000000000 -0700 @@ -9,5 +9,5 @@ Contents of section \.got: .* 00000000 00000000 00000000 00000000 .* .* 00000000 00000000 00000000 00000000 .* -.* 00000000 4e800021 00010454 00000000 .* +.* 00000000 4e800021 00010438 00000000 .* .* 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso32.r binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso32.r --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso32.r 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso32.r 2005-08-22 12:27:46.000000000 -0700 @@ -14,11 +14,11 @@ Section Headers: +\[ 3\] \.dynstr +.* +\[ 4\] \.rela\.dyn +.* +\[ 5\] \.rela\.plt +.* - +\[ 6\] \.text +PROGBITS +0+3c8 0+3c8 0+70 0+ +AX +0 +0 +1 - +\[ 7\] \.tdata +PROGBITS +0+10438 0+438 0+1c 0+ WAT +0 +0 +4 - +\[ 8\] \.tbss +NOBITS +0+10454 0+454 0+1c 0+ WAT +0 +0 +4 - +\[ 9\] \.dynamic +DYNAMIC +0+10454 0+454 0+a0 08 +WA +3 +0 +4 - +\[10\] \.got +PROGBITS +0+104f4 0+4f4 0+34 04 WAX +0 +0 +4 + +\[ 6\] \.text +PROGBITS .* 0+70 0+ +AX +0 +0 +1 + +\[ 7\] \.tdata +PROGBITS .* 0+1c 0+ WAT +0 +0 +4 + +\[ 8\] \.tbss +NOBITS .* 0+1c 0+ WAT +0 +0 +4 + +\[ 9\] \.dynamic +DYNAMIC .* 08 +WA +3 +0 +4 + +\[10\] \.got +PROGBITS .* 0+34 04 WAX +0 +0 +4 +\[11\] \.plt +.* +\[12\] \.shstrtab +.* +\[13\] \.symtab +.* @@ -31,10 +31,10 @@ There are 4 program headers.* Program Headers: +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align - +LOAD +0x0+ 0x0+ 0x0+ 0x0+438 0x0+438 R E 0x10000 - +LOAD +0x0+438 0x0+10438 0x0+10438 0x0+f0 0x0+144 RWE 0x10000 - +DYNAMIC +0x0+454 0x0+10454 0x0+10454 0x0+a0 0x0+a0 RW +0x4 - +TLS +0x0+438 0x0+10438 0x0+10438 0x0+1c 0x0+38 R +0x4 + +LOAD .* R E 0x10000 + +LOAD .* RWE 0x10000 + +DYNAMIC .* RW +0x4 + +TLS .* 0x0+1c 0x0+38 R +0x4 Section to Segment mapping: +Segment Sections\.\.\. @@ -52,9 +52,9 @@ Relocation section '\.rela\.dyn' at offs [0-9a-f ]+R_PPC_TPREL16 +0+30 +le0 \+ 0 [0-9a-f ]+R_PPC_TPREL16_HA +0+34 +le1 \+ 0 [0-9a-f ]+R_PPC_TPREL16_LO +0+34 +le1 \+ 0 -[0-9a-f ]+R_PPC_TPREL16 +0+10438 +\.tdata \+ 1044c -[0-9a-f ]+R_PPC_TPREL16_HA +0+10438 +\.tdata \+ 10450 -[0-9a-f ]+R_PPC_TPREL16_LO +0+10438 +\.tdata \+ 10450 +[0-9a-f ]+R_PPC_TPREL16 +0+1041c +\.tdata \+ 10430 +[0-9a-f ]+R_PPC_TPREL16_HA +0+1041c +\.tdata \+ 10434 +[0-9a-f ]+R_PPC_TPREL16_LO +0+1041c +\.tdata \+ 10434 [0-9a-f ]+R_PPC_DTPMOD32 +0+ [0-9a-f ]+R_PPC_DTPREL32 +0+ [0-9a-f ]+R_PPC_DTPMOD32 +0+ @@ -68,67 +68,66 @@ Relocation section '\.rela\.plt' at offs Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend [0-9a-f ]+R_PPC_JMP_SLOT +0+ +__tls_get_addr \+ 0 -Symbol table '\.dynsym' contains 20 entries: +Symbol table '\.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +[0-9]+: 0+3c8 +0 SECTION LOCAL +DEFAULT +6 - +[0-9]+: 0+10438 +0 SECTION LOCAL +DEFAULT +7 - +[0-9]+: 0+10454 +0 SECTION LOCAL +DEFAULT +8 - +[0-9]+: 0+10454 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND gd - +[0-9]+: 0+30 +0 TLS +GLOBAL DEFAULT +8 le0 - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+20 +0 TLS +GLOBAL DEFAULT +8 ld0 - +[0-9]+: 0+34 +0 TLS +GLOBAL DEFAULT +8 le1 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND ld - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +6 _start - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __end - +[0-9]+: 0+28 +0 TLS +GLOBAL DEFAULT +8 ld2 - +[0-9]+: 0+24 +0 TLS +GLOBAL DEFAULT +8 ld1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 gd0 - +[0-9]+: 0+2c +0 TLS +GLOBAL DEFAULT +8 ie0 +.* NOTYPE +LOCAL +DEFAULT +UND +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* TLS +GLOBAL DEFAULT +UND gd +.* TLS +GLOBAL DEFAULT +8 le0 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +8 ld0 +.* TLS +GLOBAL DEFAULT +8 le1 +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +6 _start +.* NOTYPE +GLOBAL DEFAULT +ABS __end +.* TLS +GLOBAL DEFAULT +8 ld2 +.* TLS +GLOBAL DEFAULT +8 ld1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL DEFAULT +8 gd0 +.* TLS +GLOBAL DEFAULT +8 ie0 Symbol table '\.symtab' contains 39 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 - +[0-9]+: 0+ +0 SECTION LOCAL +DEFAULT +12 - +[0-9]+: 0+ +0 SECTION LOCAL +DEFAULT +13 - +[0-9]+: 0+ +0 SECTION LOCAL +DEFAULT +14 - +[0-9]+: 0+ +0 TLS +LOCAL +DEFAULT +7 gd4 - +[0-9]+: 0+4 +0 TLS +LOCAL +DEFAULT +7 ld4 - +[0-9]+: 0+8 +0 TLS +LOCAL +DEFAULT +7 ld5 - +[0-9]+: 0+c +0 TLS +LOCAL +DEFAULT +7 ld6 - +[0-9]+: 0+10 +0 TLS +LOCAL +DEFAULT +7 ie4 - +[0-9]+: 0+14 +0 TLS +LOCAL +DEFAULT +7 le4 - +[0-9]+: 0+18 +0 TLS +LOCAL +DEFAULT +7 le5 - +[0-9]+: 0+1051c +0 OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: 0+10454 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND gd - +[0-9]+: 0+30 +0 TLS +GLOBAL DEFAULT +8 le0 - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+20 +0 TLS +GLOBAL DEFAULT +8 ld0 - +[0-9]+: 0+34 +0 TLS +GLOBAL DEFAULT +8 le1 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND ld - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +6 _start - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __end - +[0-9]+: 0+28 +0 TLS +GLOBAL DEFAULT +8 ld2 - +[0-9]+: 0+24 +0 TLS +GLOBAL DEFAULT +8 ld1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 gd0 - +[0-9]+: 0+2c +0 TLS +GLOBAL DEFAULT +8 ie0 +.* NOTYPE +LOCAL +DEFAULT +UND +.* SECTION LOCAL +DEFAULT +1 +.* SECTION LOCAL +DEFAULT +2 +.* SECTION LOCAL +DEFAULT +3 +.* SECTION LOCAL +DEFAULT +4 +.* SECTION LOCAL +DEFAULT +5 +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* SECTION LOCAL +DEFAULT +9 +.* SECTION LOCAL +DEFAULT +10 +.* SECTION LOCAL +DEFAULT +11 +.* SECTION LOCAL +DEFAULT +12 +.* SECTION LOCAL +DEFAULT +13 +.* SECTION LOCAL +DEFAULT +14 +.* TLS +LOCAL +DEFAULT +7 gd4 +.* TLS +LOCAL +DEFAULT +7 ld4 +.* TLS +LOCAL +DEFAULT +7 ld5 +.* TLS +LOCAL +DEFAULT +7 ld6 +.* TLS +LOCAL +DEFAULT +7 ie4 +.* TLS +LOCAL +DEFAULT +7 le4 +.* TLS +LOCAL +DEFAULT +7 le5 +.* OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC +.* OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +GLOBAL DEFAULT +UND gd +.* TLS +GLOBAL DEFAULT +8 le0 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +8 ld0 +.* TLS +GLOBAL DEFAULT +8 le1 +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +6 _start +.* NOTYPE +GLOBAL DEFAULT +ABS __end +.* TLS +GLOBAL DEFAULT +8 ld2 +.* TLS +GLOBAL DEFAULT +8 ld1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL DEFAULT +8 gd0 +.* TLS +GLOBAL DEFAULT +8 ie0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso.g binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso.g --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso.g 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso.g 2005-08-22 12:27:46.000000000 -0700 @@ -7,9 +7,9 @@ .*: +file format elf64-powerpc Contents of section \.got: - 10818 00000000 00018818 00000000 00000000 .* - 10828 00000000 00000000 00000000 00000000 .* - 10838 00000000 00000000 00000000 00000000 .* - 10848 00000000 00000000 00000000 00000000 .* - 10858 00000000 00000000 00000000 00000000 .* - 10868 00000000 00000000 00000000 00000000 .* +.* 00000000 000187f0 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso.r binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso.r --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlsso.r 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlsso.r 2005-08-22 12:27:46.000000000 -0700 @@ -9,21 +9,21 @@ There are 16 section headers.* Section Headers: +\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al +\[ 0\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0 - +\[ 1\] \.hash +.* - +\[ 2\] \.dynsym +.* - +\[ 3\] \.dynstr +.* - +\[ 4\] \.rela\.dyn +.* - +\[ 5\] \.rela\.plt +.* - +\[ 6\] \.text +PROGBITS +0+590 0+590 0+fc 0+ +AX +0 +0 +4 - +\[ 7\] \.tdata +PROGBITS +0+10690 0+690 0+38 0+ WAT +0 +0 +8 - +\[ 8\] \.tbss +NOBITS +0+106c8 0+6c8 0+38 0+ WAT +0 +0 +8 - +\[ 9\] \.data\.rel\.ro +PROGBITS .* - +\[10\] \.dynamic +DYNAMIC +0+106c8 0+6c8 0+150 10 +WA +3 +0 +8 - +\[11\] \.got +PROGBITS +0+10818 0+818 0+60 08 +WA +0 +0 +8 - +\[12\] \.plt +.* - +\[13\] \.shstrtab +.* - +\[14\] \.symtab +.* - +\[15\] \.strtab +.* + +\[ 1\] \.hash .* + +\[ 2\] \.dynsym .* + +\[ 3\] \.dynstr .* + +\[ 4\] \.rela\.dyn .* + +\[ 5\] \.rela\.plt .* + +\[ 6\] \.text .* + +\[ 7\] \.tdata +PROGBITS .* 0+38 0+ WAT +0 +0 +8 + +\[ 8\] \.tbss +NOBITS .* 0+38 0+ WAT +0 +0 +8 + +\[ 9\] \.data\.rel\.ro .* + +\[10\] \.dynamic .* + +\[11\] \.got .* + +\[12\] \.plt .* + +\[13\] \.shstrtab .* + +\[14\] \.symtab .* + +\[15\] \.strtab .* #... Elf file type is DYN \(Shared object file\) @@ -32,10 +32,10 @@ There are 4 program headers.* Program Headers: +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align - +LOAD +0x0+ 0x0+ 0x0+ 0x0+68c 0x0+68c R E 0x10000 - +LOAD +0x0+690 0x0+10690 0x0+10690 0x0+1e8 0x0+218 RW +0x10000 - +DYNAMIC +0x0+6c8 0x0+106c8 0x0+106c8 0x0+150 0x0+150 RW +0x8 - +TLS +0x0+690 0x0+10690 0x0+10690 0x0+38 0x0+70 R +0x8 + +LOAD .* R E 0x10000 + +LOAD .* RW +0x10000 + +DYNAMIC .* RW +0x8 + +TLS .* 0x0+38 0x0+70 R +0x8 Section to Segment mapping: +Segment Sections\.\.\. @@ -49,9 +49,9 @@ Relocation section '\.rela\.dyn' at offs [0-9a-f ]+R_PPC64_TPREL16 +0+60 le0 \+ 0 [0-9a-f ]+R_PPC64_TPREL16_HA +0+68 le1 \+ 0 [0-9a-f ]+R_PPC64_TPREL16_LO +0+68 le1 \+ 0 -[0-9a-f ]+R_PPC64_TPREL16_DS +0+10690 \.tdata \+ 28 -[0-9a-f ]+R_PPC64_TPREL16_HA +0+10690 \.tdata \+ 30 -[0-9a-f ]+R_PPC64_TPREL16_LO +0+10690 \.tdata \+ 30 +[0-9a-f ]+R_PPC64_TPREL16_DS +0+10668 \.tdata \+ 28 +[0-9a-f ]+R_PPC64_TPREL16_HA +0+10668 \.tdata \+ 30 +[0-9a-f ]+R_PPC64_TPREL16_LO +0+10668 \.tdata \+ 30 [0-9a-f ]+R_PPC64_DTPMOD64 +0+ [0-9a-f ]+R_PPC64_DTPMOD64 +0+ [0-9a-f ]+R_PPC64_DTPREL64 +0+ @@ -67,67 +67,66 @@ Relocation section '\.rela\.plt' at offs +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend [0-9a-f ]+R_PPC64_JMP_SLOT +0+ __tls_get_addr \+ 0 -Symbol table '\.dynsym' contains 20 entries: +Symbol table '\.dynsym' contains .* entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +[0-9]+: 0+590 +0 SECTION LOCAL +DEFAULT +6 - +[0-9]+: 0+10690 +0 SECTION LOCAL +DEFAULT +7 - +[0-9]+: 0+106c8 +0 SECTION LOCAL +DEFAULT +8 - +[0-9]+: 0+106c8 +0 SECTION LOCAL +DEFAULT +9 - +[0-9]+: 0+106c8 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND gd - +[0-9]+: 0+60 +0 TLS +GLOBAL DEFAULT +8 le0 - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+40 +0 TLS +GLOBAL DEFAULT +8 ld0 - +[0-9]+: 0+68 +0 TLS +GLOBAL DEFAULT +8 le1 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND ld - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +6 _start - +[0-9]+: 0+50 +0 TLS +GLOBAL DEFAULT +8 ld2 - +[0-9]+: 0+48 +0 TLS +GLOBAL DEFAULT +8 ld1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+38 +0 TLS +GLOBAL DEFAULT +8 gd0 - +[0-9]+: 0+58 +0 TLS +GLOBAL DEFAULT +8 ie0 +.* NOTYPE +LOCAL +DEFAULT +UND +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* SECTION LOCAL +DEFAULT +9 +.* TLS +GLOBAL DEFAULT +UND gd +.* TLS +GLOBAL DEFAULT +8 le0 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +8 ld0 +.* TLS +GLOBAL DEFAULT +8 le1 +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +6 _start +.* TLS +GLOBAL DEFAULT +8 ld2 +.* TLS +GLOBAL DEFAULT +8 ld1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL DEFAULT +8 gd0 +.* TLS +GLOBAL DEFAULT +8 ie0 Symbol table '\.symtab' contains 39 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 - +[0-9]+: 0+590 +0 SECTION LOCAL +DEFAULT +6 - +[0-9]+: 0+10690 +0 SECTION LOCAL +DEFAULT +7 - +[0-9]+: 0+106c8 +0 SECTION LOCAL +DEFAULT +8 - +[0-9]+: 0+106c8 +0 SECTION LOCAL +DEFAULT +9 - +[0-9]+: 0+106c8 +0 SECTION LOCAL +DEFAULT +10 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 - +[0-9]+: 0+ +0 TLS +LOCAL +DEFAULT +7 gd4 - +[0-9]+: 0+8 +0 TLS +LOCAL +DEFAULT +7 ld4 - +[0-9]+: 0+10 +0 TLS +LOCAL +DEFAULT +7 ld5 - +[0-9]+: 0+18 +0 TLS +LOCAL +DEFAULT +7 ld6 - +[0-9]+: 0+20 +0 TLS +LOCAL +DEFAULT +7 ie4 - +[0-9]+: 0+28 +0 TLS +LOCAL +DEFAULT +7 le4 - +[0-9]+: 0+30 +0 TLS +LOCAL +DEFAULT +7 le5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +LOCAL +DEFAULT +6 \.__tls_get_addr - +[0-9]+: 0+106c8 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND gd - +[0-9]+: 0+60 +0 TLS +GLOBAL DEFAULT +8 le0 - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+40 +0 TLS +GLOBAL DEFAULT +8 ld0 - +[0-9]+: 0+68 +0 TLS +GLOBAL DEFAULT +8 le1 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND ld - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +6 _start - +[0-9]+: 0+50 +0 TLS +GLOBAL DEFAULT +8 ld2 - +[0-9]+: 0+48 +0 TLS +GLOBAL DEFAULT +8 ld1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+38 +0 TLS +GLOBAL DEFAULT +8 gd0 - +[0-9]+: 0+58 +0 TLS +GLOBAL DEFAULT +8 ie0 +.* NOTYPE +LOCAL +DEFAULT +UND +.* SECTION LOCAL +DEFAULT +1 +.* SECTION LOCAL +DEFAULT +2 +.* SECTION LOCAL +DEFAULT +3 +.* SECTION LOCAL +DEFAULT +4 +.* SECTION LOCAL +DEFAULT +5 +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* SECTION LOCAL +DEFAULT +9 +.* SECTION LOCAL +DEFAULT +10 +.* SECTION LOCAL +DEFAULT +11 +.* SECTION LOCAL +DEFAULT +12 +.* SECTION LOCAL +DEFAULT +13 +.* SECTION LOCAL +DEFAULT +14 +.* SECTION LOCAL +DEFAULT +15 +.* TLS +LOCAL +DEFAULT +7 gd4 +.* TLS +LOCAL +DEFAULT +7 ld4 +.* TLS +LOCAL +DEFAULT +7 ld5 +.* TLS +LOCAL +DEFAULT +7 ld6 +.* TLS +LOCAL +DEFAULT +7 ie4 +.* TLS +LOCAL +DEFAULT +7 le4 +.* TLS +LOCAL +DEFAULT +7 le5 +.* OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC +.* NOTYPE +LOCAL +DEFAULT +6 \.__tls_get_addr +.* TLS +GLOBAL DEFAULT +UND gd +.* TLS +GLOBAL DEFAULT +8 le0 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +8 ld0 +.* TLS +GLOBAL DEFAULT +8 le1 +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +6 _start +.* TLS +GLOBAL DEFAULT +8 ld2 +.* TLS +GLOBAL DEFAULT +8 ld1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL DEFAULT +8 gd0 +.* TLS +GLOBAL DEFAULT +8 ie0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlstocso.g binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlstocso.g --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlstocso.g 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlstocso.g 2005-08-22 12:27:46.000000000 -0700 @@ -7,9 +7,9 @@ .*: +file format elf64-powerpc Contents of section \.got: - 10760 00000000 00018760 00000000 00000000 .* - 10770 00000000 00000000 00000000 00000000 .* - 10780 00000000 00000000 00000000 00000000 .* - 10790 00000000 00000000 00000000 00000000 .* - 107a0 00000000 00000000 00000000 00000000 .* - 107b0 00000000 00000000 .* +.* 00000000 00018738 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 00000000 00000000 .* +.* 00000000 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlstocso.r binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlstocso.r --- binutils-2.16.91.0.2/ld/testsuite/ld-powerpc/tlstocso.r 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-powerpc/tlstocso.r 2005-08-22 12:27:46.000000000 -0700 @@ -9,21 +9,21 @@ There are 16 section headers.* Section Headers: +\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al +\[ 0\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0 - +\[ 1\] \.hash +.* - +\[ 2\] \.dynsym +.* - +\[ 3\] \.dynstr +.* - +\[ 4\] \.rela\.dyn +.* - +\[ 5\] \.rela\.plt +.* - +\[ 6\] \.text +PROGBITS +0+518 0+518 0+bc 0+ +AX +0 +0 +4 - +\[ 7\] \.tdata +PROGBITS +0+105d8 0+5d8 0+38 0+ WAT +0 +0 +8 - +\[ 8\] \.tbss +NOBITS +0+10610 0+610 0+38 0+ WAT +0 +0 +8 - +\[ 9\] \.data\.rel\.ro +PROGBITS .* - +\[10\] \.dynamic +DYNAMIC +0+10610 0+610 0+150 10 +WA +3 +0 +8 - +\[11\] \.got +PROGBITS +0+10760 0+760 0+58 08 +WA +0 +0 +8 - +\[12\] \.plt +.* - +\[13\] \.shstrtab +.* - +\[14\] \.symtab +.* - +\[15\] \.strtab +.* + +\[ 1\] \.hash .* + +\[ 2\] \.dynsym .* + +\[ 3\] \.dynstr .* + +\[ 4\] \.rela\.dyn .* + +\[ 5\] \.rela\.plt .* + +\[ 6\] \.text .* + +\[ 7\] \.tdata +PROGBITS .* 0+38 0+ WAT +0 +0 +8 + +\[ 8\] \.tbss +NOBITS .* 0+38 0+ WAT +0 +0 +8 + +\[ 9\] \.data\.rel\.ro .* + +\[10\] \.dynamic .* + +\[11\] \.got .* + +\[12\] \.plt .* + +\[13\] \.shstrtab .* + +\[14\] \.symtab .* + +\[15\] \.strtab .* #... Elf file type is DYN \(Shared object file\) @@ -32,10 +32,10 @@ There are 4 program headers.* Program Headers: +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align - +LOAD +0x0+ 0x0+ 0x0+ 0x0+5d4 0x0+5d4 R E 0x10000 - +LOAD +0x0+5d8 0x0+105d8 0x0+105d8 0x0+1e0 0x0+210 RW +0x10000 - +DYNAMIC +0x0+610 0x0+10610 0x0+10610 0x0+150 0x0+150 RW +0x8 - +TLS +0x0+5d8 0x0+105d8 0x0+105d8 0x0+38 0x0+70 R +0x8 + +LOAD .* R E 0x10000 + +LOAD .* RW +0x10000 + +DYNAMIC .* RW +0x8 + +TLS .* 0x0+38 0x0+70 R +0x8 Section to Segment mapping: +Segment Sections\.\.\. @@ -62,68 +62,67 @@ Relocation section '\.rela\.plt' at offs +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend [0-9a-f ]+R_PPC64_JMP_SLOT +0+ __tls_get_addr \+ 0 -Symbol table '\.dynsym' contains 20 entries: +Symbol table '\.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +[0-9]+: 0+518 +0 SECTION LOCAL +DEFAULT +6 - +[0-9]+: 0+105d8 +0 SECTION LOCAL +DEFAULT +7 - +[0-9]+: 0+10610 +0 SECTION LOCAL +DEFAULT +8 - +[0-9]+: 0+10610 +0 SECTION LOCAL +DEFAULT +9 - +[0-9]+: 0+10610 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND gd - +[0-9]+: 0+60 +0 TLS +GLOBAL DEFAULT +8 le0 - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+40 +0 TLS +GLOBAL DEFAULT +8 ld0 - +[0-9]+: 0+68 +0 TLS +GLOBAL DEFAULT +8 le1 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND ld - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +6 _start - +[0-9]+: 0+50 +0 TLS +GLOBAL DEFAULT +8 ld2 - +[0-9]+: 0+48 +0 TLS +GLOBAL DEFAULT +8 ld1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+38 +0 TLS +GLOBAL DEFAULT +8 gd0 - +[0-9]+: 0+58 +0 TLS +GLOBAL DEFAULT +8 ie0 +.* NOTYPE +LOCAL +DEFAULT +UND +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* SECTION LOCAL +DEFAULT +9 +.* TLS +GLOBAL DEFAULT +UND gd +.* TLS +GLOBAL DEFAULT +8 le0 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +8 ld0 +.* TLS +GLOBAL DEFAULT +8 le1 +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +6 _start +.* TLS +GLOBAL DEFAULT +8 ld2 +.* TLS +GLOBAL DEFAULT +8 ld1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL DEFAULT +8 gd0 +.* TLS +GLOBAL DEFAULT +8 ie0 Symbol table '\.symtab' contains 40 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +[0-9]+: 0+120 +0 SECTION LOCAL +DEFAULT +1 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 - +[0-9]+: 0+518 +0 SECTION LOCAL +DEFAULT +6 - +[0-9]+: 0+105d8 +0 SECTION LOCAL +DEFAULT +7 - +[0-9]+: 0+10610 +0 SECTION LOCAL +DEFAULT +8 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 - +[0-9]+: 0+10760 +0 SECTION LOCAL +DEFAULT +11 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 - +[0-9]+: 0+ +0 TLS +LOCAL +DEFAULT +7 gd4 - +[0-9]+: 0+8 +0 TLS +LOCAL +DEFAULT +7 ld4 - +[0-9]+: 0+10 +0 TLS +LOCAL +DEFAULT +7 ld5 - +[0-9]+: 0+18 +0 TLS +LOCAL +DEFAULT +7 ld6 - +[0-9]+: 0+20 +0 TLS +LOCAL +DEFAULT +7 ie4 - +[0-9]+: 0+28 +0 TLS +LOCAL +DEFAULT +7 le4 - +[0-9]+: 0+30 +0 TLS +LOCAL +DEFAULT +7 le5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +LOCAL +DEFAULT +11 \.Lie0 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +LOCAL +DEFAULT +6 \.__tls_get_addr - +[0-9]+: 0+10610 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND gd - +[0-9]+: 0+60 +0 TLS +GLOBAL DEFAULT +8 le0 - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+40 +0 TLS +GLOBAL DEFAULT +8 ld0 - +[0-9]+: 0+68 +0 TLS +GLOBAL DEFAULT +8 le1 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND ld - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +6 _start - +[0-9]+: 0+50 +0 TLS +GLOBAL DEFAULT +8 ld2 - +[0-9]+: 0+48 +0 TLS +GLOBAL DEFAULT +8 ld1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+38 +0 TLS +GLOBAL DEFAULT +8 gd0 - +[0-9]+: 0+58 +0 TLS +GLOBAL DEFAULT +8 ie0 +.* NOTYPE +LOCAL +DEFAULT +UND +.* SECTION LOCAL +DEFAULT +1 +.* SECTION LOCAL +DEFAULT +2 +.* SECTION LOCAL +DEFAULT +3 +.* SECTION LOCAL +DEFAULT +4 +.* SECTION LOCAL +DEFAULT +5 +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* SECTION LOCAL +DEFAULT +9 +.* SECTION LOCAL +DEFAULT +10 +.* SECTION LOCAL +DEFAULT +11 +.* SECTION LOCAL +DEFAULT +12 +.* SECTION LOCAL +DEFAULT +13 +.* SECTION LOCAL +DEFAULT +14 +.* SECTION LOCAL +DEFAULT +15 +.* TLS +LOCAL +DEFAULT +7 gd4 +.* TLS +LOCAL +DEFAULT +7 ld4 +.* TLS +LOCAL +DEFAULT +7 ld5 +.* TLS +LOCAL +DEFAULT +7 ld6 +.* TLS +LOCAL +DEFAULT +7 ie4 +.* TLS +LOCAL +DEFAULT +7 le4 +.* TLS +LOCAL +DEFAULT +7 le5 +.* NOTYPE +LOCAL +DEFAULT +11 \.Lie0 +.* OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC +.* NOTYPE +LOCAL +DEFAULT +6 \.__tls_get_addr +.* TLS +GLOBAL DEFAULT +UND gd +.* TLS +GLOBAL DEFAULT +8 le0 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +8 ld0 +.* TLS +GLOBAL DEFAULT +8 le1 +.* TLS +GLOBAL DEFAULT +UND ld +.* NOTYPE +GLOBAL DEFAULT +6 _start +.* TLS +GLOBAL DEFAULT +8 ld2 +.* TLS +GLOBAL DEFAULT +8 ld1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL DEFAULT +8 gd0 +.* TLS +GLOBAL DEFAULT +8 ie0 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-s390/tlsbin_64.rd binutils-2.16.91.0.3/ld/testsuite/ld-s390/tlsbin_64.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-s390/tlsbin_64.rd 2005-04-09 12:03:29.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-s390/tlsbin_64.rd 2005-08-22 12:27:46.000000000 -0700 @@ -10,21 +10,21 @@ There are 16 section headers, starting a Section Headers: \[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al \[ 0\] +NULL +0+ 0+ 0+ 00 +0 +0 +0 - \[ 1\] .interp +.* - \[ 2\] .hash +.* - \[ 3\] .dynsym +.* - \[ 4\] .dynstr +.* - \[ 5\] .rela.dyn +.* - \[ 6\] .rela.plt +.* - \[ 7\] .plt +.* - \[ 8\] .text +PROGBITS +.* - \[ 9\] .tdata +PROGBITS +0+800016e0 0+6e0 0+60 00 WAT +0 +0 +32 - \[10\] .tbss +NOBITS +0+80001740 0+740 0+40 00 WAT +0 +0 +1 - \[11\] .dynamic +DYNAMIC +0+80001740 0+740 0+140 10 +WA +4 +0 +8 - \[12\] .got +PROGBITS +0+80001880 0+880 0+78 08 +WA +0 +0 +8 - \[13\] .shstrtab +.* - \[14\] .symtab +.* - \[15\] .strtab +.* + \[ 1\] .interp .* + \[ 2\] .hash .* + \[ 3\] .dynsym .* + \[ 4\] .dynstr .* + \[ 5\] .rela.dyn .* + \[ 6\] .rela.plt .* + \[ 7\] .plt .* + \[ 8\] .text +PROGBITS .* + \[ 9\] .tdata +PROGBITS .* 0+60 00 WAT +0 +0 +32 + \[10\] .tbss +NOBITS .* 0+40 00 WAT +0 +0 +1 + \[11\] .dynamic +DYNAMIC .* + \[12\] .got +PROGBITS .* + \[13\] .shstrtab .* + \[14\] .symtab .* + \[15\] .strtab .* Key to Flags: .* .* @@ -39,10 +39,10 @@ Program Headers: PHDR +0x0+40 0x0+80000040 0x0+80000040 0x0+150 0x0+150 R E 0x8 INTERP +0x0+190 0x0+80000190 0x0+80000190 0x0+11 0x0+11 R +0x1 .*Requesting program interpreter.* - LOAD +0x0+ 0x0+80000000 0x0+80000000 0x0+6e0 0x0+6e0 R E 0x1000 - LOAD +0x0+6e0 0x0+800016e0 0x0+800016e0 0x0+218 0x0+218 RW 0x1000 - DYNAMIC +0x0+740 0x0+80001740 0x0+80001740 0x0+140 0x0+140 RW 0x8 - TLS +0x0+6e0 0x0+800016e0 0x0+800016e0 0x0+60 0x0+a0 R +0x20 + LOAD .* R E 0x1000 + LOAD .* RW 0x1000 + DYNAMIC .* RW 0x8 + TLS .* 0x0+60 0x0+a0 R +0x20 Section to Segment mapping: Segment Sections... @@ -55,95 +55,94 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -[0-9a-f]+ +0+10+38 R_390_TLS_TPOFF +0+ sG3 \+ 0 -[0-9a-f]+ +0+30+38 R_390_TLS_TPOFF +0+ sG2 \+ 0 -[0-9a-f]+ +0+60+38 R_390_TLS_TPOFF +0+ sG6 \+ 0 -[0-9a-f]+ +0+70+38 R_390_TLS_TPOFF +0+ sG1 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+ sG3 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+ sG2 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+ sG6 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+ sG1 \+ 0 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -[0-9a-f]+ +0+40+b R_390_JMP_SLOT +0+80+408 __tls_get_offset \+ 0 +[0-9a-f ]+R_390_JMP_SLOT[0-9a-f ]+__tls_get_offset \+ 0 -Symbol table '.dynsym' contains 10 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG3 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_offset - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND +.* TLS +GLOBAL DEFAULT +UND sG3 +.* TLS +GLOBAL DEFAULT +UND sG2 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_offset +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sG6 +.* TLS +GLOBAL DEFAULT +UND sG1 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '.symtab' contains 68 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 - +[0-9]+: 0+20 +0 TLS +LOCAL +DEFAULT +9 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL +DEFAULT +9 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL +DEFAULT +9 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL +DEFAULT +9 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL +DEFAULT +9 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL +DEFAULT +9 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL +DEFAULT +9 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL +DEFAULT +9 sl8 - +[0-9]+: 0+80 +0 TLS +LOCAL +DEFAULT +10 bl1 - +[0-9]+: 0+84 +0 TLS +LOCAL +DEFAULT +10 bl2 - +[0-9]+: 0+88 +0 TLS +LOCAL +DEFAULT +10 bl3 - +[0-9]+: 0+8c +0 TLS +LOCAL +DEFAULT +10 bl4 - +[0-9]+: 0+90 +0 TLS +LOCAL +DEFAULT +10 bl5 - +[0-9]+: 0+94 +0 TLS +LOCAL +DEFAULT +10 bl6 - +[0-9]+: 0+98 +0 TLS +LOCAL +DEFAULT +10 bl7 - +[0-9]+: 0+9c +0 TLS +LOCAL +DEFAULT +10 bl8 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG3 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +9 sg8 - +[0-9]+: 0+7c +0 TLS +GLOBAL DEFAULT +10 bg8 - +[0-9]+: 0+74 +0 TLS +GLOBAL DEFAULT +10 bg6 - +[0-9]+: 0+68 +0 TLS +GLOBAL DEFAULT +10 bg3 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +9 sg3 - +[0-9]+: 0+48 +0 TLS +GLOBAL HIDDEN +9 sh3 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +9 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +9 sg5 - +[0-9]+: 0+70 +0 TLS +GLOBAL DEFAULT +10 bg5 - +[0-9]+: 0+58 +0 TLS +GLOBAL HIDDEN +9 sh7 - +[0-9]+: 0+5c +0 TLS +GLOBAL HIDDEN +9 sh8 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_offset - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +9 sg1 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +8 _start - +[0-9]+: 0+4c +0 TLS +GLOBAL HIDDEN +9 sh4 - +[0-9]+: 0+78 +0 TLS +GLOBAL DEFAULT +10 bg7 - +[0-9]+: 0+50 +0 TLS +GLOBAL HIDDEN +9 sh5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +8 fn2 - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +9 sg2 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +[0-9]+: 0+40 +0 TLS +GLOBAL HIDDEN +9 sh1 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL HIDDEN +12 _GLOBAL_OFFSET_TABLE_ - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+44 +0 TLS +GLOBAL HIDDEN +9 sh2 - +[0-9]+: 0+54 +0 TLS +GLOBAL HIDDEN +9 sh6 - +[0-9]+: 0+64 +0 TLS +GLOBAL DEFAULT +10 bg2 - +[0-9]+: 0+60 +0 TLS +GLOBAL DEFAULT +10 bg1 - +[0-9]+: 0+6c +0 TLS +GLOBAL DEFAULT +10 bg4 +.* NOTYPE +LOCAL +DEFAULT +UND +.* SECTION LOCAL +DEFAULT +1 +.* SECTION LOCAL +DEFAULT +2 +.* SECTION LOCAL +DEFAULT +3 +.* SECTION LOCAL +DEFAULT +4 +.* SECTION LOCAL +DEFAULT +5 +.* SECTION LOCAL +DEFAULT +6 +.* SECTION LOCAL +DEFAULT +7 +.* SECTION LOCAL +DEFAULT +8 +.* SECTION LOCAL +DEFAULT +9 +.* SECTION LOCAL +DEFAULT +10 +.* SECTION LOCAL +DEFAULT +11 +.* SECTION LOCAL +DEFAULT +12 +.* SECTION LOCAL +DEFAULT +13 +.* SECTION LOCAL +DEFAULT +14 +.* SECTION LOCAL +DEFAULT +15 +.* TLS +LOCAL +DEFAULT +9 sl1 +.* TLS +LOCAL +DEFAULT +9 sl2 +.* TLS +LOCAL +DEFAULT +9 sl3 +.* TLS +LOCAL +DEFAULT +9 sl4 +.* TLS +LOCAL +DEFAULT +9 sl5 +.* TLS +LOCAL +DEFAULT +9 sl6 +.* TLS +LOCAL +DEFAULT +9 sl7 +.* TLS +LOCAL +DEFAULT +9 sl8 +.* TLS +LOCAL +DEFAULT +10 bl1 +.* TLS +LOCAL +DEFAULT +10 bl2 +.* TLS +LOCAL +DEFAULT +10 bl3 +.* TLS +LOCAL +DEFAULT +10 bl4 +.* TLS +LOCAL +DEFAULT +10 bl5 +.* TLS +LOCAL +DEFAULT +10 bl6 +.* TLS +LOCAL +DEFAULT +10 bl7 +.* TLS +LOCAL +DEFAULT +10 bl8 +.* OBJECT +LOCAL +HIDDEN +11 _DYNAMIC +.* OBJECT +LOCAL +HIDDEN +12 _GLOBAL_OFFSET_TABLE_ +.* TLS +GLOBAL DEFAULT +UND sG3 +.* TLS +GLOBAL DEFAULT +9 sg8 +.* TLS +GLOBAL DEFAULT +10 bg8 +.* TLS +GLOBAL DEFAULT +10 bg6 +.* TLS +GLOBAL DEFAULT +10 bg3 +.* TLS +GLOBAL DEFAULT +9 sg3 +.* TLS +GLOBAL HIDDEN +9 sh3 +.* TLS +GLOBAL DEFAULT +UND sG2 +.* TLS +GLOBAL DEFAULT +9 sg4 +.* TLS +GLOBAL DEFAULT +9 sg5 +.* TLS +GLOBAL DEFAULT +10 bg5 +.* TLS +GLOBAL HIDDEN +9 sh7 +.* TLS +GLOBAL HIDDEN +9 sh8 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_offset +.* TLS +GLOBAL DEFAULT +9 sg1 +.* FUNC +GLOBAL DEFAULT +8 _start +.* TLS +GLOBAL HIDDEN +9 sh4 +.* TLS +GLOBAL DEFAULT +10 bg7 +.* TLS +GLOBAL HIDDEN +9 sh5 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sG6 +.* FUNC +GLOBAL DEFAULT +8 fn2 +.* TLS +GLOBAL DEFAULT +9 sg2 +.* TLS +GLOBAL DEFAULT +UND sG1 +.* TLS +GLOBAL HIDDEN +9 sh1 +.* TLS +GLOBAL DEFAULT +9 sg6 +.* TLS +GLOBAL DEFAULT +9 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL HIDDEN +9 sh2 +.* TLS +GLOBAL HIDDEN +9 sh6 +.* TLS +GLOBAL DEFAULT +10 bg2 +.* TLS +GLOBAL DEFAULT +10 bg1 +.* TLS +GLOBAL DEFAULT +10 bg4 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-s390/tlsbin.rd binutils-2.16.91.0.3/ld/testsuite/ld-s390/tlsbin.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-s390/tlsbin.rd 2005-04-09 12:03:29.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-s390/tlsbin.rd 2005-08-22 12:27:46.000000000 -0700 @@ -10,21 +10,21 @@ There are 16 section headers, starting a Section Headers: \[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al \[ 0\] +NULL +0+ 0+ 0+ 00 +0 +0 +0 - \[ 1\] .interp +.* - \[ 2\] .hash +.* - \[ 3\] .dynsym +.* - \[ 4\] .dynstr +.* - \[ 5\] .rela.dyn +.* - \[ 6\] .rela.plt +.* - \[ 7\] .plt +.* - \[ 8\] .text +PROGBITS +.* - \[ 9\] .tdata +PROGBITS +0+401480 0+480 0+60 00 WAT +0 +0 +32 - \[10\] .tbss +NOBITS +0+4014e0 0+4e0 0+40 00 WAT +0 +0 +1 - \[11\] .dynamic +DYNAMIC +0+4014e0 0+4e0 0+a0 08 +WA +4 +0 +4 - \[12\] .got +PROGBITS +0+401580 0+580 0+2c 04 +WA +0 +0 +4 - \[13\] .shstrtab +.* - \[14\] .symtab +.* - \[15\] .strtab +.* + \[ 1\] .interp .* + \[ 2\] .hash .* + \[ 3\] .dynsym .* + \[ 4\] .dynstr .* + \[ 5\] .rela.dyn .* + \[ 6\] .rela.plt .* + \[ 7\] .plt .* + \[ 8\] .text +PROGBITS .* + \[ 9\] .tdata +PROGBITS .* 0+60 00 WAT +0 +0 +32 + \[10\] .tbss +NOBITS .* 0+40 00 WAT +0 +0 +1 + \[11\] .dynamic +DYNAMIC .* + \[12\] .got +PROGBITS .* + \[13\] .shstrtab .* + \[14\] .symtab .* + \[15\] .strtab .* Key to Flags: .* .* @@ -39,10 +39,10 @@ Program Headers: PHDR +0x0+34 0x0+400034 0x0+400034 0x0+c0 0x0+c0 R E 0x4 INTERP +0x0+f4 0x0+4000f4 0x0+4000f4 0x0+11 0x0+11 R +0x1 .*Requesting program interpreter.* - LOAD +0x0+ 0x0+400000 0x0+400000 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x1000 - LOAD +0x0+480 0x0+401480 0x0+401480 0x0+12c 0x0+12c RW 0x1000 - DYNAMIC +0x0+4e0 0x0+4014e0 0x0+4014e0 0x0+a0 0x0+a0 RW 0x4 - TLS +0x0+480 0x0+401480 0x0+401480 0x0+60 0x0+a0 R +0x20 + LOAD .* R E 0x1000 + LOAD .* RW 0x1000 + DYNAMIC .* RW 0x4 + TLS .* 0x0+60 0x0+a0 R +0x20 Section to Segment mapping: Segment Sections... @@ -53,97 +53,96 @@ Program Headers: 04 +.dynamic * 05 +.tdata .tbss * -Relocation section '.rela.dyn' at offset 0x23c contains 4 entries: +Relocation section '.rela.dyn' at offset .* contains 4 entries: Offset +Info +Type +Sym.Value Sym. Name \+ Addend -[0-9a-f]+ 0+138 R_390_TLS_TPOFF +0+ +sG3 \+ 0 -[0-9a-f]+ 0+338 R_390_TLS_TPOFF +0+ +sG2 \+ 0 -[0-9a-f]+ 0+638 R_390_TLS_TPOFF +0+ +sG6 \+ 0 -[0-9a-f]+ 0+738 R_390_TLS_TPOFF +0+ +sG1 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+ +sG3 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+ +sG2 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+ +sG6 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+ +sG1 \+ 0 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: Offset +Info +Type +Sym.Value Sym. Name \+ Addend -[0-9a-f]+ 0+40b R_390_JMP_SLOT +0+40+298 +__tls_get_offset \+ 0 +[0-9a-f ]+R_390_JMP_SLOT[0-9a-f ]+__tls_get_offset \+ 0 -Symbol table '.dynsym' contains 10 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG3 - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG2 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT UND __tls_get_offset - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG6 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end +.* NOTYPE LOCAL DEFAULT UND +.* TLS +GLOBAL DEFAULT UND sG3 +.* TLS +GLOBAL DEFAULT UND sG2 +.* FUNC +GLOBAL DEFAULT UND __tls_get_offset +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT UND sG6 +.* TLS +GLOBAL DEFAULT UND sG1 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end Symbol table '.symtab' contains 68 entries: +Num: +Value Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +14 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +15 - +[0-9]+: 0+20 +0 TLS +LOCAL DEFAULT +9 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL DEFAULT +9 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL DEFAULT +9 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL DEFAULT +9 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL DEFAULT +9 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL DEFAULT +9 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL DEFAULT +9 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL DEFAULT +9 sl8 - +[0-9]+: 0+80 +0 TLS +LOCAL DEFAULT +10 bl1 - +[0-9]+: 0+84 +0 TLS +LOCAL DEFAULT +10 bl2 - +[0-9]+: 0+88 +0 TLS +LOCAL DEFAULT +10 bl3 - +[0-9]+: 0+8c +0 TLS +LOCAL DEFAULT +10 bl4 - +[0-9]+: 0+90 +0 TLS +LOCAL DEFAULT +10 bl5 - +[0-9]+: 0+94 +0 TLS +LOCAL DEFAULT +10 bl6 - +[0-9]+: 0+98 +0 TLS +LOCAL DEFAULT +10 bl7 - +[0-9]+: 0+9c +0 TLS +LOCAL DEFAULT +10 bl8 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG3 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +9 sg8 - +[0-9]+: 0+7c +0 TLS +GLOBAL DEFAULT +10 bg8 - +[0-9]+: 0+74 +0 TLS +GLOBAL DEFAULT +10 bg6 - +[0-9]+: 0+68 +0 TLS +GLOBAL DEFAULT +10 bg3 - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +9 sg3 - +[0-9]+: 0+48 +0 TLS +GLOBAL HIDDEN +9 sh3 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG2 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +9 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +9 sg5 - +[0-9]+: 0+70 +0 TLS +GLOBAL DEFAULT +10 bg5 - +[0-9]+: 0+58 +0 TLS +GLOBAL HIDDEN +9 sh7 - +[0-9]+: 0+5c +0 TLS +GLOBAL HIDDEN +9 sh8 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT UND __tls_get_offset - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +9 sg1 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +8 _start - +[0-9]+: 0+4c +0 TLS +GLOBAL HIDDEN +9 sh4 - +[0-9]+: 0+78 +0 TLS +GLOBAL DEFAULT +10 bg7 - +[0-9]+: 0+50 +0 TLS +GLOBAL HIDDEN +9 sh5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG6 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +8 fn2 - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +9 sg2 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG1 - +[0-9]+: 0+40 +0 TLS +GLOBAL HIDDEN +9 sh1 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL HIDDEN 12 _GLOBAL_OFFSET_TABLE_ - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end - +[0-9]+: 0+44 +0 TLS +GLOBAL HIDDEN +9 sh2 - +[0-9]+: 0+54 +0 TLS +GLOBAL HIDDEN +9 sh6 - +[0-9]+: 0+64 +0 TLS +GLOBAL DEFAULT +10 bg2 - +[0-9]+: 0+60 +0 TLS +GLOBAL DEFAULT +10 bg1 - +[0-9]+: 0+6c +0 TLS +GLOBAL DEFAULT +10 bg4 +.* NOTYPE LOCAL DEFAULT UND +.* SECTION LOCAL DEFAULT +1 +.* SECTION LOCAL DEFAULT +2 +.* SECTION LOCAL DEFAULT +3 +.* SECTION LOCAL DEFAULT +4 +.* SECTION LOCAL DEFAULT +5 +.* SECTION LOCAL DEFAULT +6 +.* SECTION LOCAL DEFAULT +7 +.* SECTION LOCAL DEFAULT +8 +.* SECTION LOCAL DEFAULT +9 +.* SECTION LOCAL DEFAULT +10 +.* SECTION LOCAL DEFAULT +11 +.* SECTION LOCAL DEFAULT +12 +.* SECTION LOCAL DEFAULT +13 +.* SECTION LOCAL DEFAULT +14 +.* SECTION LOCAL DEFAULT +15 +.* TLS +LOCAL DEFAULT +9 sl1 +.* TLS +LOCAL DEFAULT +9 sl2 +.* TLS +LOCAL DEFAULT +9 sl3 +.* TLS +LOCAL DEFAULT +9 sl4 +.* TLS +LOCAL DEFAULT +9 sl5 +.* TLS +LOCAL DEFAULT +9 sl6 +.* TLS +LOCAL DEFAULT +9 sl7 +.* TLS +LOCAL DEFAULT +9 sl8 +.* TLS +LOCAL DEFAULT +10 bl1 +.* TLS +LOCAL DEFAULT +10 bl2 +.* TLS +LOCAL DEFAULT +10 bl3 +.* TLS +LOCAL DEFAULT +10 bl4 +.* TLS +LOCAL DEFAULT +10 bl5 +.* TLS +LOCAL DEFAULT +10 bl6 +.* TLS +LOCAL DEFAULT +10 bl7 +.* TLS +LOCAL DEFAULT +10 bl8 +.* OBJECT LOCAL HIDDEN +11 _DYNAMIC +.* OBJECT LOCAL HIDDEN +12 _GLOBAL_OFFSET_TABLE_ +.* TLS +GLOBAL DEFAULT UND sG3 +.* TLS +GLOBAL DEFAULT +9 sg8 +.* TLS +GLOBAL DEFAULT +10 bg8 +.* TLS +GLOBAL DEFAULT +10 bg6 +.* TLS +GLOBAL DEFAULT +10 bg3 +.* TLS +GLOBAL DEFAULT +9 sg3 +.* TLS +GLOBAL HIDDEN +9 sh3 +.* TLS +GLOBAL DEFAULT UND sG2 +.* TLS +GLOBAL DEFAULT +9 sg4 +.* TLS +GLOBAL DEFAULT +9 sg5 +.* TLS +GLOBAL DEFAULT +10 bg5 +.* TLS +GLOBAL HIDDEN +9 sh7 +.* TLS +GLOBAL HIDDEN +9 sh8 +.* FUNC +GLOBAL DEFAULT UND __tls_get_offset +.* TLS +GLOBAL DEFAULT +9 sg1 +.* FUNC +GLOBAL DEFAULT +8 _start +.* TLS +GLOBAL HIDDEN +9 sh4 +.* TLS +GLOBAL DEFAULT +10 bg7 +.* TLS +GLOBAL HIDDEN +9 sh5 +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT UND sG6 +.* FUNC +GLOBAL DEFAULT +8 fn2 +.* TLS +GLOBAL DEFAULT +9 sg2 +.* TLS +GLOBAL DEFAULT UND sG1 +.* TLS +GLOBAL HIDDEN +9 sh1 +.* TLS +GLOBAL DEFAULT +9 sg6 +.* TLS +GLOBAL DEFAULT +9 sg7 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end +.* TLS +GLOBAL HIDDEN +9 sh2 +.* TLS +GLOBAL HIDDEN +9 sh6 +.* TLS +GLOBAL DEFAULT +10 bg2 +.* TLS +GLOBAL DEFAULT +10 bg1 +.* TLS +GLOBAL DEFAULT +10 bg4 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-s390/tlspic_64.rd binutils-2.16.91.0.3/ld/testsuite/ld-s390/tlspic_64.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-s390/tlspic_64.rd 2005-04-09 12:03:29.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-s390/tlspic_64.rd 2005-08-22 12:27:46.000000000 -0700 @@ -10,20 +10,20 @@ There are 15 section headers, starting a Section Headers: \[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al \[ 0\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0 - \[ 1\] .hash +.* - \[ 2\] .dynsym +.* - \[ 3\] .dynstr +.* - \[ 4\] .rela.dyn +.* - \[ 5\] .rela.plt +.* - \[ 6\] .plt +.* - \[ 7\] .text +PROGBITS +.* - \[ 8\] .tdata +PROGBITS +0+18c0 0+8c0 0+60 00 WAT +0 +0 +32 - \[ 9\] .tbss +NOBITS +0+1920 0+920 0+20 00 WAT +0 +0 +1 - \[10\] .dynamic +DYNAMIC +0+1920 0+920 0+130 10 +WA +3 +0 +8 - \[11\] .got +PROGBITS +0+1a50 0+a50 0+b0 08 +WA +0 +0 +8 - \[12\] .shstrtab +.* - \[13\] .symtab +.* - \[14\] .strtab +.* + \[ 1\] .hash .* + \[ 2\] .dynsym .* + \[ 3\] .dynstr .* + \[ 4\] .rela.dyn .* + \[ 5\] .rela.plt .* + \[ 6\] .plt .* + \[ 7\] .text +PROGBITS .* + \[ 8\] .tdata +PROGBITS .* 0+60 00 WAT +0 +0 +32 + \[ 9\] .tbss +NOBITS .* 0+20 00 WAT +0 +0 +1 + \[10\] .dynamic +DYNAMIC .* + \[11\] .got +PROGBITS .* + \[12\] .shstrtab .* + \[13\] .symtab .* + \[14\] .strtab .* Key to Flags: .* .* @@ -35,10 +35,10 @@ There are 4 program headers, starting at Program Headers: Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align - LOAD +0x0+ 0x0+ 0x0+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x1000 - LOAD +0x0+8c0 0x0+18c0 0x0+18c0 0x0+240 0x0+240 RW +0x1000 - DYNAMIC +0x0+920 0x0+1920 0x0+1920 0x0+130 0x0+130 RW +0x8 - TLS +0x0+8c0 0x0+18c0 0x0+18c0 0x0+60 0x0+80 R +0x20 + LOAD .* R E 0x1000 + LOAD .* RW +0x1000 + DYNAMIC .* RW +0x8 + TLS .* 0x0+60 0x0+80 R +0x20 Section to Segment mapping: Segment Sections... @@ -49,101 +49,98 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: +Offset +Info +Type +Symbol's Value Symbol's Name \+ Addend -[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+ -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+24 -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+30 -[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+ -[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+ -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+64 -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+50 -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+70 -[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+ -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+44 -[0-9a-f]+ 0+a0+38 R_390_TLS_TPOFF +0+10 sg5 \+ 0 -[0-9a-f]+ 0+c0+36 R_390_TLS_DTPMOD +0+ sg1 \+ 0 -[0-9a-f]+ 0+c0+37 R_390_TLS_DTPOFF +0+ sg1 \+ 0 -[0-9a-f]+ 0+f0+38 R_390_TLS_TPOFF +0+4 sg2 \+ 0 +[0-9a-f ]+R_390_TLS_DTPMOD +0+ +[0-9a-f ]+R_390_TLS_TPOFF +0+24 +[0-9a-f ]+R_390_TLS_TPOFF +0+30 +[0-9a-f ]+R_390_TLS_DTPMOD +0+ +[0-9a-f ]+R_390_TLS_DTPMOD +0+ +[0-9a-f ]+R_390_TLS_TPOFF +0+64 +[0-9a-f ]+R_390_TLS_TPOFF +0+50 +[0-9a-f ]+R_390_TLS_TPOFF +0+70 +[0-9a-f ]+R_390_TLS_DTPMOD +0+ +[0-9a-f ]+R_390_TLS_TPOFF +0+44 +[0-9a-f ]+R_390_TLS_TPOFF +0+10 sg5 \+ 0 +[0-9a-f ]+R_390_TLS_DTPMOD +0+ sg1 \+ 0 +[0-9a-f ]+R_390_TLS_DTPOFF +0+ sg1 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+4 sg2 \+ 0 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: +Offset +Info +Type +Symbol's Value Symbol's Name \+ Addend -[0-9a-f]+ 0+b0+b R_390_JMP_SLOT +0+ __tls_get_offset \+ 0 +[0-9a-f ]+R_390_JMP_SLOT +0+ __tls_get_offset \+ 0 -Symbol table '.dynsym' contains 20 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8 - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +8 sg5 - +[0-9]+: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_offset - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +8 sg1 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +8 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end +.* NOTYPE LOCAL DEFAULT UND +.* SECTION LOCAL DEFAULT +7 +.* SECTION LOCAL DEFAULT +8 +.* SECTION LOCAL DEFAULT +9 +.* TLS +GLOBAL DEFAULT +8 sg8 +.* TLS +GLOBAL DEFAULT +8 sg3 +.* TLS +GLOBAL DEFAULT +8 sg4 +.* TLS +GLOBAL DEFAULT +8 sg5 +.* NOTYPE GLOBAL DEFAULT UND __tls_get_offset +.* TLS +GLOBAL DEFAULT +8 sg1 +.* FUNC +GLOBAL DEFAULT +7 fn1 +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT +8 sg2 +.* TLS +GLOBAL DEFAULT +8 sg6 +.* TLS +GLOBAL DEFAULT +8 sg7 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end Symbol table '.symtab' contains 54 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +14 - +[0-9]+: 0+20 +0 TLS +LOCAL DEFAULT +8 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL DEFAULT +8 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL DEFAULT +8 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL DEFAULT +8 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL DEFAULT +8 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL DEFAULT +8 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL DEFAULT +8 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL DEFAULT +8 sl8 - +[0-9]+: 0+60 +0 TLS +LOCAL HIDDEN +9 sH1 - +[0-9]+: 0+48 +0 TLS +LOCAL HIDDEN +8 sh3 - +[0-9]+: 0+64 +0 TLS +LOCAL HIDDEN +9 sH2 - +[0-9]+: 0+78 +0 TLS +LOCAL HIDDEN +9 sH7 - +[0-9]+: 0+58 +0 TLS +LOCAL HIDDEN +8 sh7 - +[0-9]+: 0+5c +0 TLS +LOCAL HIDDEN +8 sh8 - +[0-9]+: 0+6c +0 TLS +LOCAL HIDDEN +9 sH4 - +[0-9]+: 0+4c +0 TLS +LOCAL HIDDEN +8 sh4 - +[0-9]+: 0+68 +0 TLS +LOCAL HIDDEN +9 sH3 - +[0-9]+: 0+50 +0 TLS +LOCAL HIDDEN +8 sh5 - +[0-9]+: 0+70 +0 TLS +LOCAL HIDDEN +9 sH5 - +[0-9]+: 0+74 +0 TLS +LOCAL HIDDEN +9 sH6 - +[0-9]+: 0+7c +0 TLS +LOCAL HIDDEN +9 sH8 - +[0-9]+: 0+40 +0 TLS +LOCAL HIDDEN +8 sh1 - +[0-9]+: [0-9a-f]+ +0 OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: 0+44 +0 TLS +LOCAL HIDDEN +8 sh2 - +[0-9]+: 0+54 +0 TLS +LOCAL HIDDEN +8 sh6 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8 - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +8 sg5 - +[0-9]+: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_offset - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +8 sg1 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +8 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end +.* NOTYPE LOCAL DEFAULT UND +.* SECTION LOCAL DEFAULT +1 +.* SECTION LOCAL DEFAULT +2 +.* SECTION LOCAL DEFAULT +3 +.* SECTION LOCAL DEFAULT +4 +.* SECTION LOCAL DEFAULT +5 +.* SECTION LOCAL DEFAULT +6 +.* SECTION LOCAL DEFAULT +7 +.* SECTION LOCAL DEFAULT +8 +.* SECTION LOCAL DEFAULT +9 +.* SECTION LOCAL DEFAULT +10 +.* SECTION LOCAL DEFAULT +11 +.* SECTION LOCAL DEFAULT +12 +.* SECTION LOCAL DEFAULT +13 +.* SECTION LOCAL DEFAULT +14 +.* TLS +LOCAL DEFAULT +8 sl1 +.* TLS +LOCAL DEFAULT +8 sl2 +.* TLS +LOCAL DEFAULT +8 sl3 +.* TLS +LOCAL DEFAULT +8 sl4 +.* TLS +LOCAL DEFAULT +8 sl5 +.* TLS +LOCAL DEFAULT +8 sl6 +.* TLS +LOCAL DEFAULT +8 sl7 +.* TLS +LOCAL DEFAULT +8 sl8 +.* TLS +LOCAL HIDDEN +9 sH1 +.* OBJECT LOCAL HIDDEN ABS _DYNAMIC +.* TLS +LOCAL HIDDEN +8 sh3 +.* TLS +LOCAL HIDDEN +9 sH2 +.* TLS +LOCAL HIDDEN +9 sH7 +.* TLS +LOCAL HIDDEN +8 sh7 +.* TLS +LOCAL HIDDEN +8 sh8 +.* TLS +LOCAL HIDDEN +9 sH4 +.* TLS +LOCAL HIDDEN +8 sh4 +.* TLS +LOCAL HIDDEN +9 sH3 +.* TLS +LOCAL HIDDEN +8 sh5 +.* TLS +LOCAL HIDDEN +9 sH5 +.* TLS +LOCAL HIDDEN +9 sH6 +.* TLS +LOCAL HIDDEN +9 sH8 +.* TLS +LOCAL HIDDEN +8 sh1 +.* OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +LOCAL HIDDEN +8 sh2 +.* TLS +LOCAL HIDDEN +8 sh6 +.* TLS +GLOBAL DEFAULT +8 sg8 +.* TLS +GLOBAL DEFAULT +8 sg3 +.* TLS +GLOBAL DEFAULT +8 sg4 +.* TLS +GLOBAL DEFAULT +8 sg5 +.* NOTYPE GLOBAL DEFAULT UND __tls_get_offset +.* TLS +GLOBAL DEFAULT +8 sg1 +.* FUNC +GLOBAL DEFAULT +7 fn1 +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT +8 sg2 +.* TLS +GLOBAL DEFAULT +8 sg6 +.* TLS +GLOBAL DEFAULT +8 sg7 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-s390/tlspic.rd binutils-2.16.91.0.3/ld/testsuite/ld-s390/tlspic.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-s390/tlspic.rd 2005-04-09 12:03:29.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-s390/tlspic.rd 2005-08-22 12:27:46.000000000 -0700 @@ -10,20 +10,20 @@ There are 15 section headers, starting a Section Headers: \[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al \[ 0\] +NULL +0+ 0+ 0+ 00 +0 +0 0 - \[ 1\] .hash +.* - \[ 2\] .dynsym +.* - \[ 3\] .dynstr +.* - \[ 4\] .rela.dyn +.* - \[ 5\] .rela.plt +.* - \[ 6\] .plt +.* - \[ 7\] .text +PROGBITS +.* - \[ 8\] .tdata +PROGBITS +0+15c0 0+5c0 0+60 00 WAT 0 +0 32 - \[ 9\] .tbss +NOBITS +0+1620 0+620 0+20 00 WAT 0 +0 1 - \[10\] .dynamic +DYNAMIC +0+1620 0+620 0+98 08 WA 3 +0 4 - \[11\] .got +PROGBITS +0+16b8 0+6b8 0+58 04 WA 0 +0 4 - \[12\] .shstrtab +.* - \[13\] .symtab +.* - \[14\] .strtab +.* + \[ 1\] .hash .* + \[ 2\] .dynsym .* + \[ 3\] .dynstr .* + \[ 4\] .rela.dyn .* + \[ 5\] .rela.plt .* + \[ 6\] .plt .* + \[ 7\] .text +PROGBITS .* + \[ 8\] .tdata +PROGBITS .* 0+60 00 WAT 0 +0 32 + \[ 9\] .tbss +NOBITS .* 0+20 00 WAT 0 +0 1 + \[10\] .dynamic +DYNAMIC .* + \[11\] .got +PROGBITS .* + \[12\] .shstrtab .* + \[13\] .symtab .* + \[14\] .strtab .* Key to Flags: .* .* @@ -35,10 +35,10 @@ There are 4 program headers, starting at Program Headers: Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz Flg Align - LOAD +0x0+ 0x0+ 0x0+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x1000 - LOAD +0x0+5c0 0x0+15c0 0x0+15c0 0x00150 0x00150 RW 0x1000 - DYNAMIC +0x0+620 0x0+1620 0x0+1620 0x0+98 0x0+98 RW 0x4 - TLS +0x0+5c0 0x0+15c0 0x0+15c0 0x0+60 0x0+80 R +0x20 + LOAD .* R E 0x1000 + LOAD .* RW 0x1000 + DYNAMIC .* RW 0x4 + TLS .* 0x0+60 0x0+80 R +0x20 Section to Segment mapping: Segment Sections... @@ -49,101 +49,98 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: Offset +Info +Type +Sym.Value Sym. Name \+ Addend -[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+ -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+24 -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+30 -[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+ -[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+ -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+64 -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+50 -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+70 -[0-9a-f]+ 0+36 R_390_TLS_DTPMOD +0+ -[0-9a-f]+ 0+38 R_390_TLS_TPOFF +0+44 -[0-9a-f]+ 0+a38 R_390_TLS_TPOFF +0+10 +sg5 \+ 0 -[0-9a-f]+ 0+c36 R_390_TLS_DTPMOD 0+ +sg1 \+ 0 -[0-9a-f]+ 0+c37 R_390_TLS_DTPOFF 0+ +sg1 \+ 0 -[0-9a-f]+ 0+f38 R_390_TLS_TPOFF +0+4 +sg2 \+ 0 +[0-9a-f ]+R_390_TLS_DTPMOD +0+ +[0-9a-f ]+R_390_TLS_TPOFF +0+24 +[0-9a-f ]+R_390_TLS_TPOFF +0+30 +[0-9a-f ]+R_390_TLS_DTPMOD +0+ +[0-9a-f ]+R_390_TLS_DTPMOD +0+ +[0-9a-f ]+R_390_TLS_TPOFF +0+64 +[0-9a-f ]+R_390_TLS_TPOFF +0+50 +[0-9a-f ]+R_390_TLS_TPOFF +0+70 +[0-9a-f ]+R_390_TLS_DTPMOD +0+ +[0-9a-f ]+R_390_TLS_TPOFF +0+44 +[0-9a-f ]+R_390_TLS_TPOFF +0+10 +sg5 \+ 0 +[0-9a-f ]+R_390_TLS_DTPMOD 0+ +sg1 \+ 0 +[0-9a-f ]+R_390_TLS_DTPOFF 0+ +sg1 \+ 0 +[0-9a-f ]+R_390_TLS_TPOFF +0+4 +sg2 \+ 0 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: Offset +Info +Type +Sym.Value Sym. Name \+ Addend -[0-9a-f]+ 0+b0b R_390_JMP_SLOT +0+ +__tls_get_offset \+ 0 +[0-9a-f ]+R_390_JMP_SLOT +0+ +__tls_get_offset \+ 0 -Symbol table '.dynsym' contains 20 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8 - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +8 sg5 - +[0-9]+: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_offset - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +8 sg1 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +8 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end +.* NOTYPE LOCAL DEFAULT UND +.* SECTION LOCAL DEFAULT +7 +.* SECTION LOCAL DEFAULT +8 +.* SECTION LOCAL DEFAULT +9 +.* TLS +GLOBAL DEFAULT +8 sg8 +.* TLS +GLOBAL DEFAULT +8 sg3 +.* TLS +GLOBAL DEFAULT +8 sg4 +.* TLS +GLOBAL DEFAULT +8 sg5 +.* NOTYPE GLOBAL DEFAULT UND __tls_get_offset +.* TLS +GLOBAL DEFAULT +8 sg1 +.* FUNC +GLOBAL DEFAULT +7 fn1 +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT +8 sg2 +.* TLS +GLOBAL DEFAULT +8 sg6 +.* TLS +GLOBAL DEFAULT +8 sg7 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end Symbol table '.symtab' contains 54 entries: +Num: +Value Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13 - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +14 - +[0-9]+: 0+20 +0 TLS +LOCAL DEFAULT +8 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL DEFAULT +8 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL DEFAULT +8 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL DEFAULT +8 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL DEFAULT +8 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL DEFAULT +8 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL DEFAULT +8 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL DEFAULT +8 sl8 - +[0-9]+: 0+60 +0 TLS +LOCAL HIDDEN +9 sH1 - +[0-9]+: 0+48 +0 TLS +LOCAL HIDDEN +8 sh3 - +[0-9]+: 0+64 +0 TLS +LOCAL HIDDEN +9 sH2 - +[0-9]+: 0+78 +0 TLS +LOCAL HIDDEN +9 sH7 - +[0-9]+: 0+58 +0 TLS +LOCAL HIDDEN +8 sh7 - +[0-9]+: 0+5c +0 TLS +LOCAL HIDDEN +8 sh8 - +[0-9]+: 0+6c +0 TLS +LOCAL HIDDEN +9 sH4 - +[0-9]+: 0+4c +0 TLS +LOCAL HIDDEN +8 sh4 - +[0-9]+: 0+68 +0 TLS +LOCAL HIDDEN +9 sH3 - +[0-9]+: 0+50 +0 TLS +LOCAL HIDDEN +8 sh5 - +[0-9]+: 0+70 +0 TLS +LOCAL HIDDEN +9 sH5 - +[0-9]+: 0+74 +0 TLS +LOCAL HIDDEN +9 sH6 - +[0-9]+: 0+7c +0 TLS +LOCAL HIDDEN +9 sH8 - +[0-9]+: 0+40 +0 TLS +LOCAL HIDDEN +8 sh1 - +[0-9]+: [0-9a-f]+ +0 OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: 0+44 +0 TLS +LOCAL HIDDEN +8 sh2 - +[0-9]+: 0+54 +0 TLS +LOCAL HIDDEN +8 sh6 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8 - +[0-9]+: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +8 sg5 - +[0-9]+: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_offset - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +8 sg1 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +8 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end +.* NOTYPE LOCAL DEFAULT UND +.* SECTION LOCAL DEFAULT +1 +.* SECTION LOCAL DEFAULT +2 +.* SECTION LOCAL DEFAULT +3 +.* SECTION LOCAL DEFAULT +4 +.* SECTION LOCAL DEFAULT +5 +.* SECTION LOCAL DEFAULT +6 +.* SECTION LOCAL DEFAULT +7 +.* SECTION LOCAL DEFAULT +8 +.* SECTION LOCAL DEFAULT +9 +.* SECTION LOCAL DEFAULT +10 +.* SECTION LOCAL DEFAULT +11 +.* SECTION LOCAL DEFAULT +12 +.* SECTION LOCAL DEFAULT +13 +.* SECTION LOCAL DEFAULT +14 +.* TLS +LOCAL DEFAULT +8 sl1 +.* TLS +LOCAL DEFAULT +8 sl2 +.* TLS +LOCAL DEFAULT +8 sl3 +.* TLS +LOCAL DEFAULT +8 sl4 +.* TLS +LOCAL DEFAULT +8 sl5 +.* TLS +LOCAL DEFAULT +8 sl6 +.* TLS +LOCAL DEFAULT +8 sl7 +.* TLS +LOCAL DEFAULT +8 sl8 +.* TLS +LOCAL HIDDEN +9 sH1 +.* OBJECT LOCAL HIDDEN ABS _DYNAMIC +.* TLS +LOCAL HIDDEN +8 sh3 +.* TLS +LOCAL HIDDEN +9 sH2 +.* TLS +LOCAL HIDDEN +9 sH7 +.* TLS +LOCAL HIDDEN +8 sh7 +.* TLS +LOCAL HIDDEN +8 sh8 +.* TLS +LOCAL HIDDEN +9 sH4 +.* TLS +LOCAL HIDDEN +8 sh4 +.* TLS +LOCAL HIDDEN +9 sH3 +.* TLS +LOCAL HIDDEN +8 sh5 +.* TLS +LOCAL HIDDEN +9 sH5 +.* TLS +LOCAL HIDDEN +9 sH6 +.* TLS +LOCAL HIDDEN +9 sH8 +.* TLS +LOCAL HIDDEN +8 sh1 +.* OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +LOCAL HIDDEN +8 sh2 +.* TLS +LOCAL HIDDEN +8 sh6 +.* TLS +GLOBAL DEFAULT +8 sg8 +.* TLS +GLOBAL DEFAULT +8 sg3 +.* TLS +GLOBAL DEFAULT +8 sg4 +.* TLS +GLOBAL DEFAULT +8 sg5 +.* NOTYPE GLOBAL DEFAULT UND __tls_get_offset +.* TLS +GLOBAL DEFAULT +8 sg1 +.* FUNC +GLOBAL DEFAULT +7 fn1 +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT +8 sg2 +.* TLS +GLOBAL DEFAULT +8 sg6 +.* TLS +GLOBAL DEFAULT +8 sg7 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-scripts/crossref.exp binutils-2.16.91.0.3/ld/testsuite/ld-scripts/crossref.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-scripts/crossref.exp 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-scripts/crossref.exp 2005-08-22 12:27:46.000000000 -0700 @@ -42,13 +42,6 @@ if { ![ld_compile $CC "$srcdir/$subdir/c set flags [big_or_little_endian] -# The a29k compiled code calls V_SPILL and V_FILL. Since we don't -# need to run this code, but we don't have definitions for those -# functions, we just define them out. -if [istarget a29k*-*-*] { - set flags "$flags --defsym V_SPILL=0 --defsym V_FILL=0" -} - if [istarget sh64*-*-elf] { # This is what gcc passes to ld by default. set flags "-mshelf32" diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-scripts/defined2.d binutils-2.16.91.0.3/ld/testsuite/ld-scripts/defined2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-scripts/defined2.d 2004-04-12 12:56:37.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-scripts/defined2.d 2005-08-22 12:27:46.000000000 -0700 @@ -1,6 +1,7 @@ #ld: -Tdefined2.t #nm: -B #source: phdrs.s +#xfail: "rs6000-*-aix*" # Check that arithmetic on DEFINED works. # Matching both A and T accounts for formats that can't tell a .text diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-scripts/defined3.d binutils-2.16.91.0.3/ld/testsuite/ld-scripts/defined3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-scripts/defined3.d 2004-04-12 12:56:37.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-scripts/defined3.d 2005-08-22 12:27:46.000000000 -0700 @@ -2,6 +2,7 @@ #nm: -B #source: phdrs.s #source: defined.s +#xfail: "rs6000-*-aix*" # Check that DEFINED matches only symbols defined before its location. # The ellipsis account for target-specific symbols. Matching both A and T diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-scripts/empty-aligned.d binutils-2.16.91.0.3/ld/testsuite/ld-scripts/empty-aligned.d --- binutils-2.16.91.0.2/ld/testsuite/ld-scripts/empty-aligned.d 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-scripts/empty-aligned.d 2005-08-22 12:27:46.000000000 -0700 @@ -1,6 +1,7 @@ #source: empty-aligned.s #ld: -T empty-aligned.t #readelf: -l --wide +#xfail: "hppa64-*-*" #... Program Headers: @@ -9,4 +10,4 @@ Program Headers: Section to Segment mapping: +Segment Sections\.\.\. - +00.*\.text.*\.data.* + +00 +.text diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-scripts/empty-aligned.s binutils-2.16.91.0.3/ld/testsuite/ld-scripts/empty-aligned.s --- binutils-2.16.91.0.2/ld/testsuite/ld-scripts/empty-aligned.s 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-scripts/empty-aligned.s 2005-08-22 12:27:46.000000000 -0700 @@ -1,4 +1,2 @@ .text .long 123 - .data - .long 123 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-scripts/empty-aligned.t binutils-2.16.91.0.3/ld/testsuite/ld-scripts/empty-aligned.t --- binutils-2.16.91.0.2/ld/testsuite/ld-scripts/empty-aligned.t 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-scripts/empty-aligned.t 2005-08-22 12:27:46.000000000 -0700 @@ -25,6 +25,5 @@ SECTIONS { *(.text4) } - .data : { *(.data) } - .bss : { *(.bss) } + /DISCARD/ : { *(*) } } diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-scripts/size-2.d binutils-2.16.91.0.3/ld/testsuite/ld-scripts/size-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-scripts/size-2.d 2004-07-27 21:36:11.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-scripts/size-2.d 2005-08-22 12:27:46.000000000 -0700 @@ -1,6 +1,7 @@ #source: size-2.s #ld: -T size-2.t #readelf: -l --wide +#xfail: "hppa64-*-*" "v850-*-*" #... Program Headers: diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-scripts/weak.exp binutils-2.16.91.0.3/ld/testsuite/ld-scripts/weak.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-scripts/weak.exp 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-scripts/weak.exp 2005-08-22 12:27:46.000000000 -0700 @@ -31,6 +31,9 @@ if {! [istarget i?86-*-*]} { setup_xfail *-*-pe* } +# hppa64 and or32 are incredibly broken +setup_xfail hppa64-*-* or32-*-* + if {! [ld_assemble $as $srcdir/$subdir/weak1.s tmpdir/weak1.o] || ! [ld_assemble $as $srcdir/$subdir/weak2.s tmpdir/weak2.o]} then { # It's OK if .weak doesn't work on this target. diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-selective/sel-dump.exp binutils-2.16.91.0.3/ld/testsuite/ld-selective/sel-dump.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-selective/sel-dump.exp 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-selective/sel-dump.exp 2005-08-22 12:27:46.000000000 -0700 @@ -25,7 +25,8 @@ set test_list [lsort [glob -nocomplain $ for { set i 0 } { $i < [llength $test_list] } { incr i } { # We need to strip the ".d", but can leave the dirname. verbose [file rootname [lindex $test_list $i]] - setup_xfail "alpha*-*" "arc*-*" "d30v*-*" "dlx*-*" "i370*-*" "i860*-*" - setup_xfail "i960*-*" "ia64*-*" "mn10200-*" "or32-*" "pj-*" + setup_xfail "alpha*-*" "arc*-*" "d30v*-*" "dlx*-*" "hppa64-*-*" + setup_xfail "i370*-*" "i860*-*" "i960*-*" "ia64*-*" "mn10200-*" + setup_xfail "or32-*" "pj-*" run_dump_test [file rootname [lindex $test_list $i]] } diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/abi32.xd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/abi32.xd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/abi32.xd 2004-12-20 11:16:52.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/abi32.xd 2005-08-22 12:27:46.000000000 -0700 @@ -17,25 +17,13 @@ Sections: Idx Name Size VMA LMA File off Algn 0 \.text 00000064 0+1000 0+1000 00000100 2\*\*0 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 \.ctors 00000000 0+10e8 0+10e8 00000184 2\*\*0 - CONTENTS - 2 \.dtors 00000000 0+10e8 0+10e8 00000184 2\*\*0 - CONTENTS - 3 \.data 00000018 0+10e8 0+10e8 00000168 2\*\*2 + 1 \.data 00000018 0+10e8 0+10e8 00000168 2\*\*2 CONTENTS, ALLOC, LOAD, DATA - 4 \.sbss 00000000 0+1100 0+1100 00000184 2\*\*0 - CONTENTS - 5 \.bss 00000000 0+1100 0+1100 00000180 2\*\*0 - ALLOC - 6 \.stack 00000004 0+80000 0+80000 00000180 2\*\*0 + 2 \.stack 00000004 0+80000 0+80000 00000180 2\*\*0 CONTENTS, ALLOC, LOAD, DATA SYMBOL TABLE: 0+1000 l d \.text 0+ (|\.text) -0+10e8 l d \.ctors 0+ (|\.ctors) -0+10e8 l d \.dtors 0+ (|\.dtors) 0+10e8 l d \.data 0+ (|\.data) -0+1100 l d \.sbss 0+ (|\.sbss) -0+1100 l d \.bss 0+ (|\.bss) 0+80000 l d \.stack 0+ (|\.stack) 0+ l d \*ABS\* 0+ (|\.shstrtab) 0+ l d \*ABS\* 0+ (|\.symtab) @@ -45,16 +33,16 @@ SYMBOL TABLE: 0+1060 l \.text 0+ 0x04 plugh 0+10f8 g \.data 0+ foobar 0+10e8 g \.data 0+ baz -0+10e8 g \.dtors 0+ ___dtors +0+10e8 g \*ABS\* 0+ ___dtors 0+105c g \.text 0+ 0x04 xyzzy 0+1100 g \*ABS\* 0+ __bss_start -0+10e8 g \.ctors 0+ ___ctors_end +0+10e8 g \*ABS\* 0+ ___ctors_end 0+10f0 g \.data 0+ baz2 -0+10e8 g \.ctors 0+ ___ctors +0+10e8 g \*ABS\* 0+ ___ctors 0+1000 g \.text 0+ 0x04 foo 0+1100 g \*ABS\* 0+ _edata 0+1100 g \*ABS\* 0+ _end 0+1010 g \.text 0+ 0x04 start 0+100c g \.text 0+ 0x04 bar 0+80000 g \.stack 0+ _stack -0+10e8 g \.dtors 0+ ___dtors_end +0+10e8 g \*ABS\* 0+ ___dtors_end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/abi64.xd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/abi64.xd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/abi64.xd 2004-12-20 11:16:52.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/abi64.xd 2005-08-22 12:27:46.000000000 -0700 @@ -16,25 +16,13 @@ Sections: Idx Name Size VMA LMA File off Algn 0 \.text 000000ac 0000000000001000 0000000000001000 00000100 2\*\*0 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 \.ctors 00000000 0000000000001130 0000000000001130 00000204 2\*\*0 - CONTENTS - 2 \.dtors 00000000 0000000000001130 0000000000001130 00000204 2\*\*0 - CONTENTS - 3 \.data 00000018 0000000000001130 0000000000001130 000001b0 2\*\*2 + 1 \.data 00000018 0000000000001130 0000000000001130 000001b0 2\*\*2 CONTENTS, ALLOC, LOAD, DATA - 4 \.sbss 00000000 0000000000001148 0000000000001148 00000204 2\*\*0 - CONTENTS - 5 \.bss 00000000 0000000000001148 0000000000001148 000001c8 2\*\*0 - ALLOC - 6 \.stack 00000004 0000000000080000 0000000000080000 00000200 2\*\*0 + 2 \.stack 00000004 0000000000080000 0000000000080000 00000200 2\*\*0 CONTENTS, ALLOC, LOAD, DATA SYMBOL TABLE: 0000000000001000 l d \.text 0000000000000000 (|\.text) -0000000000001130 l d \.ctors 0000000000000000 (|\.ctors) -0000000000001130 l d \.dtors 0000000000000000 (|\.dtors) 0000000000001130 l d \.data 0000000000000000 (|\.data) -0000000000001148 l d \.sbss 0000000000000000 (|\.sbss) -0000000000001148 l d \.bss 0000000000000000 (|\.bss) 0000000000080000 l d \.stack 0000000000000000 (|\.stack) 0000000000000000 l d \*ABS\* 0000000000000000 (|\.shstrtab) 0000000000000000 l d \*ABS\* 0000000000000000 (|\.symtab) @@ -44,16 +32,16 @@ SYMBOL TABLE: 00000000000010a8 l \.text 0000000000000000 0x04 plugh 0000000000001140 g \.data 0000000000000000 foobar 0000000000001130 g \.data 0000000000000000 baz -0000000000001130 g \.dtors 0000000000000000 ___dtors +0000000000001130 g \*ABS\* 0000000000000000 ___dtors 00000000000010a4 g \.text 0000000000000000 0x04 xyzzy 0000000000001148 g \*ABS\* 0000000000000000 __bss_start -0000000000001130 g \.ctors 0000000000000000 ___ctors_end +0000000000001130 g \*ABS\* 0000000000000000 ___ctors_end 0000000000001138 g \.data 0000000000000000 baz2 -0000000000001130 g \.ctors 0000000000000000 ___ctors +0000000000001130 g \*ABS\* 0000000000000000 ___ctors 0000000000001000 g \.text 0000000000000000 0x04 foo 0000000000001148 g \*ABS\* 0000000000000000 _edata 0000000000001148 g \*ABS\* 0000000000000000 _end 0000000000001018 g \.text 0000000000000000 0x04 start 0000000000001014 g \.text 0000000000000000 0x04 bar 0000000000080000 g \.stack 0000000000000000 _stack -0000000000001130 g \.dtors 0000000000000000 ___dtors_end +0000000000001130 g \*ABS\* 0000000000000000 ___dtors_end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/cmpct1.xd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/cmpct1.xd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/cmpct1.xd 2004-12-20 11:16:52.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/cmpct1.xd 2005-08-22 12:27:46.000000000 -0700 @@ -6,51 +6,34 @@ EXEC_P, HAS_SYMS, D_PAGED start address 0x0+1000 Program Header: - LOAD off 0x0+100 vaddr 0x0+1000 paddr 0x0+1000 align 2\*\*7 + LOAD off 0x0+80 vaddr 0x0+1000 paddr 0x0+1000 align 2\*\*7 filesz 0x0+14 memsz 0x0+14 flags r-x - LOAD off 0x0+118 vaddr 0x0+1098 paddr 0x0+1098 align 2\*\*7 - filesz 0x0+ memsz 0x0+ flags rw- - LOAD off 0x0+180 vaddr 0x0+80000 paddr 0x0+80000 align 2\*\*7 + LOAD off 0x0+100 vaddr 0x0+80000 paddr 0x0+80000 align 2\*\*7 filesz 0x00000004 memsz 0x00000004 flags rw- Sections: Idx Name Size VMA LMA File off Algn - 0 \.text 00000008 0+1000 0+1000 00000100 2\*\*0 + 0 \.text 00000008 0+1000 0+1000 00000080 2\*\*0 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 \.rodata 0000000c 0+1008 0+1008 00000108 2\*\*2 + 1 \.rodata 0000000c 0+1008 0+1008 00000088 2\*\*2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 2 \.ctors 00000000 0+1098 0+1098 00000184 2\*\*0 - CONTENTS - 3 \.dtors 00000000 0+1098 0+1098 00000184 2\*\*0 - CONTENTS - 4 \.data 00000000 0+1098 0+1098 00000118 2\*\*0 - CONTENTS, ALLOC, LOAD, DATA - 5 \.sbss 00000000 0+1098 0+1098 00000184 2\*\*0 - CONTENTS - 6 \.bss 00000000 0+1098 0+1098 00000118 2\*\*0 - ALLOC - 7 \.stack 00000004 0+80000 0+80000 00000180 2\*\*0 + 2 \.stack 00000004 0+80000 0+80000 00000100 2\*\*0 CONTENTS, ALLOC, LOAD, DATA SYMBOL TABLE: 0+1000 l d \.text 0+ (|\.text) 0+1008 l d \.rodata 0+ (|\.rodata) -0+1098 l d \.ctors 0+ (|\.ctors) -0+1098 l d \.dtors 0+ (|\.dtors) -0+1098 l d \.data 0+ (|\.data) -0+1098 l d \.sbss 0+ (|\.sbss) -0+1098 l d \.bss 0+ (|\.bss) 0+80000 l d \.stack 0+ (|\.stack) 0+ l d \*ABS\* 0+ (|\.shstrtab) 0+ l d \*ABS\* 0+ (|\.symtab) 0+ l d \*ABS\* 0+ (|\.strtab) 0+1004 l \.text 0+ next 0+100c l \.rodata 0+ here -0+1098 g \.dtors 0+ ___dtors +0+1098 g \*ABS\* 0+ ___dtors 0+1098 g \*ABS\* 0+ __bss_start -0+1098 g \.ctors 0+ ___ctors_end -0+1098 g \.ctors 0+ ___ctors +0+1098 g \*ABS\* 0+ ___ctors_end +0+1098 g \*ABS\* 0+ ___ctors 0+1098 g \*ABS\* 0+ _edata 0+1098 g \*ABS\* 0+ _end 0+1000 g \.text 0+ start 0+80000 g \.stack 0+ _stack -0+1098 g \.dtors 0+ ___dtors_end +0+1098 g \*ABS\* 0+ ___dtors_end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange1.rd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange1.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange1.rd 2004-07-27 21:36:11.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange1.rd 2005-08-22 12:27:46.000000000 -0700 @@ -1,20 +1,15 @@ -There are 13 section headers, starting at offset 0x1f8: +.* Section Headers: \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al \[ 0\] NULL 00000000 000000 000000 00 0 0 0 - \[ 1\] \.init PROGBITS 00001000 000100 000004 00 AXp 0 0 4 - \[ 2\] \.text PROGBITS 00001004 000104 000018 00 AXp 0 0 4 - \[ 3\] \.ctors PROGBITS 000010a0 000184 000000 00 W 0 0 1 - \[ 4\] \.dtors PROGBITS 000010a0 000184 000000 00 W 0 0 1 - \[ 5\] \.data PROGBITS 000010a0 000120 000000 00 WA 0 0 1 - \[ 6\] \.sbss PROGBITS 000010a0 000184 000000 00 W 0 0 1 - \[ 7\] \.bss NOBITS 000010a0 000120 000000 00 WA 0 0 1 - \[ 8\] \.stack PROGBITS 00080000 000180 000004 00 WA 0 0 1 - \[ 9\] \.cranges LOUSER\+1 00000000 000184 00001e 00 W 0 0 1 - \[10\] \.shstrtab STRTAB 00000000 0001a2 000056 00 0 0 1 - \[11\] \.symtab SYMTAB 00000000 000400 000180 10 12 14 4 - \[12\] \.strtab STRTAB 00000000 000580 000064 00 0 0 1 + \[ 1\] \.init PROGBITS 00001000 000080 000004 00 AXp 0 0 4 + \[ 2\] \.text PROGBITS 00001004 000084 000018 00 AXp 0 0 4 + \[ 3\] \.stack PROGBITS 00080000 000100 000004 00 WA 0 0 1 + \[ 4\] \.cranges LOUSER\+1 00000000 000104 00001e 00 W 0 0 1 + \[ 5\] \.shstrtab STRTAB .* + \[ 6\] \.symtab SYMTAB .* + \[ 7\] \.strtab STRTAB .* Key to Flags: W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) I \(info\), L \(link order\), G \(group\), x \(unknown\) @@ -22,32 +17,27 @@ Key to Flags: There are no relocations in this file\. -Symbol table '\.symtab' contains 24 entries: +Symbol table '\.symtab' contains [0-9]+ entries: Num: Value Size Type Bind Vis Ndx Name - 0: 00000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00001000 0 SECTION LOCAL DEFAULT 1 - 2: 00001004 0 SECTION LOCAL DEFAULT 2 - 3: 000010a0 0 SECTION LOCAL DEFAULT 3 - 4: 000010a0 0 SECTION LOCAL DEFAULT 4 - 5: 000010a0 0 SECTION LOCAL DEFAULT 5 - 6: 000010a0 0 SECTION LOCAL DEFAULT 6 - 7: 000010a0 0 SECTION LOCAL DEFAULT 7 - 8: 00080000 0 SECTION LOCAL DEFAULT 8 - 9: 00000000 0 SECTION LOCAL DEFAULT 9 - 10: 00000000 0 SECTION LOCAL DEFAULT 10 - 11: 00000000 0 SECTION LOCAL DEFAULT 11 - 12: 00000000 0 SECTION LOCAL DEFAULT 12 - 13: 00001004 0 NOTYPE LOCAL DEFAULT 2 start2 - 14: 000010a0 0 NOTYPE GLOBAL DEFAULT 4 ___dtors - 15: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS __bss_start - 16: 000010a0 0 NOTYPE GLOBAL DEFAULT 3 ___ctors_end - 17: 00001004 0 NOTYPE GLOBAL DEFAULT 2 diversion2 - 18: 000010a0 0 NOTYPE GLOBAL DEFAULT 3 ___ctors - 19: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS _edata - 20: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS _end - 21: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start - 22: 00080000 0 NOTYPE GLOBAL DEFAULT 8 _stack - 23: 000010a0 0 NOTYPE GLOBAL DEFAULT 4 ___dtors_end +.*: 00000000 0 NOTYPE LOCAL DEFAULT UND +.*: 00001000 0 SECTION LOCAL DEFAULT 1 +.*: 00001004 0 SECTION LOCAL DEFAULT 2 +.*: 00080000 0 SECTION LOCAL DEFAULT 3 +.*: 00000000 0 SECTION LOCAL DEFAULT 4 +.*: 00000000 0 SECTION LOCAL DEFAULT 5 +.*: 00000000 0 SECTION LOCAL DEFAULT 6 +.*: 00000000 0 SECTION LOCAL DEFAULT 7 +.*: 00001004 0 NOTYPE LOCAL DEFAULT 2 start2 +.*: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS ___dtors +.*: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS __bss_start +.*: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS ___ctors_end +.*: 00001004 0 NOTYPE GLOBAL DEFAULT 2 diversion2 +.*: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS ___ctors +.*: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS _edata +.*: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS _end +.*: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start +.*: 00080000 0 NOTYPE GLOBAL DEFAULT 3 _stack +.*: 000010a0 0 NOTYPE GLOBAL DEFAULT ABS ___dtors_end Hex dump of section '\.init': 0x00001000 6ff0fff0 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange2.rd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange2.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange2.rd 2004-07-27 21:36:11.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange2.rd 2005-08-22 12:27:46.000000000 -0700 @@ -1,20 +1,15 @@ -There are 13 section headers, starting at offset 0x220: +.* Section Headers: \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al \[ 0\] NULL 00000000 000000 000000 00 0 0 0 - \[ 1\] \.init PROGBITS 00001000 000100 000004 00 AXp 0 0 4 - \[ 2\] \.text PROGBITS 00001004 000104 00005c 00 AXp 0 0 4 - \[ 3\] \.ctors PROGBITS 000010e0 000184 000000 00 W 0 0 1 - \[ 4\] \.dtors PROGBITS 000010e0 000184 000000 00 W 0 0 1 - \[ 5\] \.data PROGBITS 000010e0 000160 000000 00 WA 0 0 1 - \[ 6\] \.sbss PROGBITS 000010e0 000184 000000 00 W 0 0 1 - \[ 7\] \.bss NOBITS 000010e0 000160 000000 00 WA 0 0 1 - \[ 8\] \.stack PROGBITS 00080000 000180 000004 00 WA 0 0 1 - \[ 9\] \.cranges LOUSER\+1 00000000 000184 000046 00 W 0 0 1 - \[10\] \.shstrtab STRTAB 00000000 0001ca 000056 00 0 0 1 - \[11\] \.symtab SYMTAB 00000000 000428 0001c0 10 12 18 4 - \[12\] \.strtab STRTAB 00000000 0005e8 000078 00 0 0 1 + \[ 1\] \.init PROGBITS 00001000 000080 000004 00 AXp 0 0 4 + \[ 2\] \.text PROGBITS 00001004 000084 00005c 00 AXp 0 0 4 + \[ 3\] \.stack PROGBITS 00080000 000100 000004 00 WA 0 0 1 + \[ 4\] \.cranges LOUSER\+1 00000000 000104 000046 00 W 0 0 1 + \[ 5\] \.shstrtab STRTAB .* + \[ 6\] \.symtab SYMTAB .* + \[ 7\] \.strtab STRTAB .* Key to Flags: W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) I \(info\), L \(link order\), G \(group\), x \(unknown\) @@ -22,36 +17,31 @@ Key to Flags: There are no relocations in this file\. -Symbol table '\.symtab' contains 28 entries: +Symbol table '\.symtab' contains [0-9]+ entries: Num: Value Size Type Bind Vis Ndx Name - 0: 00000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00001000 0 SECTION LOCAL DEFAULT 1 - 2: 00001004 0 SECTION LOCAL DEFAULT 2 - 3: 000010e0 0 SECTION LOCAL DEFAULT 3 - 4: 000010e0 0 SECTION LOCAL DEFAULT 4 - 5: 000010e0 0 SECTION LOCAL DEFAULT 5 - 6: 000010e0 0 SECTION LOCAL DEFAULT 6 - 7: 000010e0 0 SECTION LOCAL DEFAULT 7 - 8: 00080000 0 SECTION LOCAL DEFAULT 8 - 9: 00000000 0 SECTION LOCAL DEFAULT 9 - 10: 00000000 0 SECTION LOCAL DEFAULT 10 - 11: 00000000 0 SECTION LOCAL DEFAULT 11 - 12: 00000000 0 SECTION LOCAL DEFAULT 12 - 13: 00001004 0 NOTYPE LOCAL DEFAULT 2 start2 - 14: 0000101c 0 NOTYPE LOCAL DEFAULT 2 sec1 - 15: 0000102c 0 NOTYPE LOCAL DEFAULT 2 sec2 - 16: 00001040 0 NOTYPE LOCAL DEFAULT 2 sec3 - 17: 00001048 0 NOTYPE LOCAL DEFAULT 2 sec4 - 18: 000010e0 0 NOTYPE GLOBAL DEFAULT 4 ___dtors - 19: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS __bss_start - 20: 000010e0 0 NOTYPE GLOBAL DEFAULT 3 ___ctors_end - 21: 00001004 0 NOTYPE GLOBAL DEFAULT 2 diversion2 - 22: 000010e0 0 NOTYPE GLOBAL DEFAULT 3 ___ctors - 23: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS _edata - 24: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS _end - 25: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start - 26: 00080000 0 NOTYPE GLOBAL DEFAULT 8 _stack - 27: 000010e0 0 NOTYPE GLOBAL DEFAULT 4 ___dtors_end +.*: 00000000 0 NOTYPE LOCAL DEFAULT UND +.*: 00001000 0 SECTION LOCAL DEFAULT 1 +.*: 00001004 0 SECTION LOCAL DEFAULT 2 +.*: 00080000 0 SECTION LOCAL DEFAULT 3 +.*: 00000000 0 SECTION LOCAL DEFAULT 4 +.*: 00000000 0 SECTION LOCAL DEFAULT 5 +.*: 00000000 0 SECTION LOCAL DEFAULT 6 +.*: 00000000 0 SECTION LOCAL DEFAULT 7 +.*: 00001004 0 NOTYPE LOCAL DEFAULT 2 start2 +.*: 0000101c 0 NOTYPE LOCAL DEFAULT 2 sec1 +.*: 0000102c 0 NOTYPE LOCAL DEFAULT 2 sec2 +.*: 00001040 0 NOTYPE LOCAL DEFAULT 2 sec3 +.*: 00001048 0 NOTYPE LOCAL DEFAULT 2 sec4 +.*: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS ___dtors +.*: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS __bss_start +.*: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS ___ctors_end +.*: 00001004 0 NOTYPE GLOBAL DEFAULT 2 diversion2 +.*: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS ___ctors +.*: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS _edata +.*: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS _end +.*: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start +.*: 00080000 0 NOTYPE GLOBAL DEFAULT 3 _stack +.*: 000010e0 0 NOTYPE GLOBAL DEFAULT ABS ___dtors_end Hex dump of section '\.text': 0x00001004 6ff0fff0 6ff0fff0 6ff0fff0 0000002a .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange3-cmpct.rd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange3-cmpct.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange3-cmpct.rd 2004-09-15 12:05:04.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange3-cmpct.rd 2005-08-22 12:27:46.000000000 -0700 @@ -10,64 +10,54 @@ ELF Header: Version: 0x1 Entry point address: 0x10c4 Start of program headers: 52 \(bytes into file\) - Start of section headers: 664 \(bytes into file\) + Start of section headers: 504 \(bytes into file\) Flags: 0xa, sh5 Size of this header: 52 \(bytes\) Size of program headers: 32 \(bytes\) - Number of program headers: 3 + Number of program headers: 2 Size of section headers: 40 \(bytes\) - Number of section headers: 13 - Section header string table index: 10 + Number of section headers: 8 + Section header string table index: 5 Section Headers: \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al \[ 0\] NULL 00000000 000000 000000 00 0 0 0 - \[ 1\] \.init PROGBITS 00001000 000100 000004 00 AXp 0 0 4 - \[ 2\] \.text PROGBITS 00001004 000104 0000d8 00 AXp 0 0 4 - \[ 3\] \.ctors PROGBITS 00001160 000204 000000 00 W 0 0 1 - \[ 4\] \.dtors PROGBITS 00001160 000204 000000 00 W 0 0 1 - \[ 5\] \.data PROGBITS 00001160 0001e0 000000 00 WA 0 0 1 - \[ 6\] \.sbss PROGBITS 00001160 000204 000000 00 W 0 0 1 - \[ 7\] \.bss NOBITS 00001160 0001e0 000000 00 WA 0 0 1 - \[ 8\] \.stack PROGBITS 00080000 000200 000004 00 WA 0 0 1 - \[ 9\] \.cranges LOUSER\+1 00000000 000204 00003c 00 W 0 0 1 - \[10\] \.shstrtab STRTAB 00000000 000240 000056 00 0 0 1 - \[11\] \.symtab SYMTAB 00000000 0004a0 0001b0 10 12 16 4 - \[12\] \.strtab STRTAB 00000000 000650 000078 00 0 0 1 + \[ 1\] \.init PROGBITS 00001000 000080 000004 00 AXp 0 0 4 + \[ 2\] \.text PROGBITS 00001004 000084 0000d8 00 AXp 0 0 4 + \[ 3\] \.stack PROGBITS 00080000 000180 000004 00 WA 0 0 1 + \[ 4\] \.cranges LOUSER\+1 00000000 000184 00003c 00 W 0 0 1 + \[ 5\] \.shstrtab STRTAB .* + \[ 6\] \.symtab SYMTAB .* + \[ 7\] \.strtab STRTAB .* Key to Flags: W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) I \(info\), L \(link order\), G \(group\), x \(unknown\) O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) -Symbol table '\.symtab' contains 27 entries: +Symbol table '\.symtab' contains [0-9]+ entries: Num: Value Size Type Bind Vis Ndx Name - 0: 00000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00001000 0 SECTION LOCAL DEFAULT 1 - 2: 00001004 0 SECTION LOCAL DEFAULT 2 - 3: 00001160 0 SECTION LOCAL DEFAULT 3 - 4: 00001160 0 SECTION LOCAL DEFAULT 4 - 5: 00001160 0 SECTION LOCAL DEFAULT 5 - 6: 00001160 0 SECTION LOCAL DEFAULT 6 - 7: 00001160 0 SECTION LOCAL DEFAULT 7 - 8: 00080000 0 SECTION LOCAL DEFAULT 8 - 9: 00000000 0 SECTION LOCAL DEFAULT 9 - 10: 00000000 0 SECTION LOCAL DEFAULT 10 - 11: 00000000 0 SECTION LOCAL DEFAULT 11 - 12: 00000000 0 SECTION LOCAL DEFAULT 12 - 13: 00001004 0 NOTYPE LOCAL DEFAULT 2 sec4 - 14: 000010a4 0 NOTYPE LOCAL DEFAULT 2 start2 - 15: 000010bc 0 NOTYPE LOCAL DEFAULT 2 sec3 - 16: 000010c4 0 NOTYPE GLOBAL DEFAULT 2 diversion - 17: 00001160 0 NOTYPE GLOBAL DEFAULT 4 ___dtors - 18: 00001160 0 NOTYPE GLOBAL DEFAULT ABS __bss_start - 19: 00001160 0 NOTYPE GLOBAL DEFAULT 3 ___ctors_end - 20: 000010a4 0 NOTYPE GLOBAL DEFAULT 2 diversion2 - 21: 00001160 0 NOTYPE GLOBAL DEFAULT 3 ___ctors - 22: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _edata - 23: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _end - 24: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start - 25: 00080000 0 NOTYPE GLOBAL DEFAULT 8 _stack - 26: 00001160 0 NOTYPE GLOBAL DEFAULT 4 ___dtors_end +.*: 00000000 0 NOTYPE LOCAL DEFAULT UND +.*: 00001000 0 SECTION LOCAL DEFAULT 1 +.*: 00001004 0 SECTION LOCAL DEFAULT 2 +.*: 00080000 0 SECTION LOCAL DEFAULT 3 +.*: 00000000 0 SECTION LOCAL DEFAULT 4 +.*: 00000000 0 SECTION LOCAL DEFAULT 5 +.*: 00000000 0 SECTION LOCAL DEFAULT 6 +.*: 00000000 0 SECTION LOCAL DEFAULT 7 +.*: 00001004 0 NOTYPE LOCAL DEFAULT 2 sec4 +.*: 000010a4 0 NOTYPE LOCAL DEFAULT 2 start2 +.*: 000010bc 0 NOTYPE LOCAL DEFAULT 2 sec3 +.*: 000010c4 0 NOTYPE GLOBAL DEFAULT 2 diversion +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___dtors +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS __bss_start +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___ctors_end +.*: 000010a4 0 NOTYPE GLOBAL DEFAULT 2 diversion2 +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___ctors +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _edata +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _end +.*: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start +.*: 00080000 0 NOTYPE GLOBAL DEFAULT 3 _stack +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___dtors_end Hex dump of section '\.text': 0x00001004 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange3-media.rd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange3-media.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange3-media.rd 2004-09-15 12:05:04.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange3-media.rd 2005-08-22 12:27:46.000000000 -0700 @@ -10,64 +10,54 @@ ELF Header: Version: 0x1 Entry point address: 0x10a5 Start of program headers: 52 \(bytes into file\) - Start of section headers: 664 \(bytes into file\) + Start of section headers: 504 \(bytes into file\) Flags: 0xa, sh5 Size of this header: 52 \(bytes\) Size of program headers: 32 \(bytes\) - Number of program headers: 3 + Number of program headers: 2 Size of section headers: 40 \(bytes\) - Number of section headers: 13 - Section header string table index: 10 + Number of section headers: 8 + Section header string table index: 5 Section Headers: \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al \[ 0\] NULL 00000000 000000 000000 00 0 0 0 - \[ 1\] \.init PROGBITS 00001000 000100 000004 00 AXp 0 0 4 - \[ 2\] \.text PROGBITS 00001004 000104 0000d8 00 AXp 0 0 4 - \[ 3\] \.ctors PROGBITS 00001160 000204 000000 00 W 0 0 1 - \[ 4\] \.dtors PROGBITS 00001160 000204 000000 00 W 0 0 1 - \[ 5\] \.data PROGBITS 00001160 0001e0 000000 00 WA 0 0 1 - \[ 6\] \.sbss PROGBITS 00001160 000204 000000 00 W 0 0 1 - \[ 7\] \.bss NOBITS 00001160 0001e0 000000 00 WA 0 0 1 - \[ 8\] \.stack PROGBITS 00080000 000200 000004 00 WA 0 0 1 - \[ 9\] \.cranges LOUSER\+1 00000000 000204 00003c 00 W 0 0 1 - \[10\] \.shstrtab STRTAB 00000000 000240 000056 00 0 0 1 - \[11\] \.symtab SYMTAB 00000000 0004a0 0001b0 10 12 16 4 - \[12\] \.strtab STRTAB 00000000 000650 000078 00 0 0 1 + \[ 1\] \.init PROGBITS 00001000 000080 000004 00 AXp 0 0 4 + \[ 2\] \.text PROGBITS 00001004 000084 0000d8 00 AXp 0 0 4 + \[ 3\] \.stack PROGBITS 00080000 000180 000004 00 WA 0 0 1 + \[ 4\] \.cranges LOUSER\+1 00000000 000184 00003c 00 W 0 0 1 + \[ 5\] \.shstrtab STRTAB .* + \[ 6\] \.symtab SYMTAB .* + \[ 7\] \.strtab STRTAB .* Key to Flags: W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) I \(info\), L \(link order\), G \(group\), x \(unknown\) O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) -Symbol table '\.symtab' contains 27 entries: +Symbol table '\.symtab' contains [0-9]+ entries: Num: Value Size Type Bind Vis Ndx Name - 0: 00000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00001000 0 SECTION LOCAL DEFAULT 1 - 2: 00001004 0 SECTION LOCAL DEFAULT 2 - 3: 00001160 0 SECTION LOCAL DEFAULT 3 - 4: 00001160 0 SECTION LOCAL DEFAULT 4 - 5: 00001160 0 SECTION LOCAL DEFAULT 5 - 6: 00001160 0 SECTION LOCAL DEFAULT 6 - 7: 00001160 0 SECTION LOCAL DEFAULT 7 - 8: 00080000 0 SECTION LOCAL DEFAULT 8 - 9: 00000000 0 SECTION LOCAL DEFAULT 9 - 10: 00000000 0 SECTION LOCAL DEFAULT 10 - 11: 00000000 0 SECTION LOCAL DEFAULT 11 - 12: 00000000 0 SECTION LOCAL DEFAULT 12 - 13: 00001004 0 NOTYPE LOCAL DEFAULT 2 sec4 - 14: 000010a4 0 NOTYPE LOCAL DEFAULT 2 start2 - 15: 000010bc 0 NOTYPE LOCAL DEFAULT 2 sec3 - 16: 000010c4 0 NOTYPE GLOBAL DEFAULT 2 diversion - 17: 00001160 0 NOTYPE GLOBAL DEFAULT 4 ___dtors - 18: 00001160 0 NOTYPE GLOBAL DEFAULT ABS __bss_start - 19: 00001160 0 NOTYPE GLOBAL DEFAULT 3 ___ctors_end - 20: 000010a4 0 NOTYPE GLOBAL DEFAULT 2 diversion2 - 21: 00001160 0 NOTYPE GLOBAL DEFAULT 3 ___ctors - 22: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _edata - 23: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _end - 24: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start - 25: 00080000 0 NOTYPE GLOBAL DEFAULT 8 _stack - 26: 00001160 0 NOTYPE GLOBAL DEFAULT 4 ___dtors_end +.*: 00000000 0 NOTYPE LOCAL DEFAULT UND +.*: 00001000 0 SECTION LOCAL DEFAULT 1 +.*: 00001004 0 SECTION LOCAL DEFAULT 2 +.*: 00080000 0 SECTION LOCAL DEFAULT 3 +.*: 00000000 0 SECTION LOCAL DEFAULT 4 +.*: 00000000 0 SECTION LOCAL DEFAULT 5 +.*: 00000000 0 SECTION LOCAL DEFAULT 6 +.*: 00000000 0 SECTION LOCAL DEFAULT 7 +.*: 00001004 0 NOTYPE LOCAL DEFAULT 2 sec4 +.*: 000010a4 0 NOTYPE LOCAL DEFAULT 2 start2 +.*: 000010bc 0 NOTYPE LOCAL DEFAULT 2 sec3 +.*: 000010c4 0 NOTYPE GLOBAL DEFAULT 2 diversion +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___dtors +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS __bss_start +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___ctors_end +.*: 000010a4 0 NOTYPE GLOBAL DEFAULT 2 diversion2 +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___ctors +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _edata +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _end +.*: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start +.*: 00080000 0 NOTYPE GLOBAL DEFAULT 3 _stack +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___dtors_end Hex dump of section '\.text': 0x00001004 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange3.rd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange3.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/crange3.rd 2004-07-27 21:36:11.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/crange3.rd 2005-08-22 12:27:46.000000000 -0700 @@ -1,54 +1,44 @@ -There are 13 section headers, starting at offset 0x298: +.* Section Headers: \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al \[ 0\] NULL 00000000 000000 000000 00 0 0 0 - \[ 1\] \.init PROGBITS 00001000 000100 000004 00 AXp 0 0 4 - \[ 2\] \.text PROGBITS 00001004 000104 0000d8 00 AXp 0 0 4 - \[ 3\] \.ctors PROGBITS 00001160 000204 000000 00 W 0 0 1 - \[ 4\] \.dtors PROGBITS 00001160 000204 000000 00 W 0 0 1 - \[ 5\] \.data PROGBITS 00001160 0001e0 000000 00 WA 0 0 1 - \[ 6\] \.sbss PROGBITS 00001160 000204 000000 00 W 0 0 1 - \[ 7\] \.bss NOBITS 00001160 0001e0 000000 00 WA 0 0 1 - \[ 8\] \.stack PROGBITS 00080000 000200 000004 00 WA 0 0 1 - \[ 9\] \.cranges LOUSER\+1 00000000 000204 00003c 00 W 0 0 1 - \[10\] \.shstrtab STRTAB 00000000 000240 000056 00 0 0 1 - \[11\] \.symtab SYMTAB 00000000 0004a0 0001b0 10 12 16 4 - \[12\] \.strtab STRTAB 00000000 000650 000078 00 0 0 1 + \[ 1\] \.init PROGBITS 00001000 000080 000004 00 AXp 0 0 4 + \[ 2\] \.text PROGBITS 00001004 000084 0000d8 00 AXp 0 0 4 + \[ 3\] \.stack PROGBITS 00080000 000180 000004 00 WA 0 0 1 + \[ 4\] \.cranges LOUSER\+1 00000000 000184 00003c 00 W 0 0 1 + \[ 5\] \.shstrtab STRTAB .* + \[ 6\] \.symtab SYMTAB .* + \[ 7\] \.strtab STRTAB .* Key to Flags: W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) I \(info\), L \(link order\), G \(group\), x \(unknown\) O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) -Symbol table '\.symtab' contains 27 entries: +Symbol table '\.symtab' contains [0-9]+ entries: Num: Value Size Type Bind Vis Ndx Name - 0: 00000000 0 NOTYPE LOCAL DEFAULT UND - 1: 00001000 0 SECTION LOCAL DEFAULT 1 - 2: 00001004 0 SECTION LOCAL DEFAULT 2 - 3: 00001160 0 SECTION LOCAL DEFAULT 3 - 4: 00001160 0 SECTION LOCAL DEFAULT 4 - 5: 00001160 0 SECTION LOCAL DEFAULT 5 - 6: 00001160 0 SECTION LOCAL DEFAULT 6 - 7: 00001160 0 SECTION LOCAL DEFAULT 7 - 8: 00080000 0 SECTION LOCAL DEFAULT 8 - 9: 00000000 0 SECTION LOCAL DEFAULT 9 - 10: 00000000 0 SECTION LOCAL DEFAULT 10 - 11: 00000000 0 SECTION LOCAL DEFAULT 11 - 12: 00000000 0 SECTION LOCAL DEFAULT 12 - 13: 00001004 0 NOTYPE LOCAL DEFAULT 2 sec4 - 14: 000010a4 0 NOTYPE LOCAL DEFAULT 2 start2 - 15: 000010bc 0 NOTYPE LOCAL DEFAULT 2 sec3 - 16: 000010c4 0 NOTYPE GLOBAL DEFAULT 2 diversion - 17: 00001160 0 NOTYPE GLOBAL DEFAULT 4 ___dtors - 18: 00001160 0 NOTYPE GLOBAL DEFAULT ABS __bss_start - 19: 00001160 0 NOTYPE GLOBAL DEFAULT 3 ___ctors_end - 20: 000010a4 0 NOTYPE GLOBAL DEFAULT 2 diversion2 - 21: 00001160 0 NOTYPE GLOBAL DEFAULT 3 ___ctors - 22: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _edata - 23: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _end - 24: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start - 25: 00080000 0 NOTYPE GLOBAL DEFAULT 8 _stack - 26: 00001160 0 NOTYPE GLOBAL DEFAULT 4 ___dtors_end +.*: 00000000 0 NOTYPE LOCAL DEFAULT UND +.*: 00001000 0 SECTION LOCAL DEFAULT 1 +.*: 00001004 0 SECTION LOCAL DEFAULT 2 +.*: 00080000 0 SECTION LOCAL DEFAULT 3 +.*: 00000000 0 SECTION LOCAL DEFAULT 4 +.*: 00000000 0 SECTION LOCAL DEFAULT 5 +.*: 00000000 0 SECTION LOCAL DEFAULT 6 +.*: 00000000 0 SECTION LOCAL DEFAULT 7 +.*: 00001004 0 NOTYPE LOCAL DEFAULT 2 sec4 +.*: 000010a4 0 NOTYPE LOCAL DEFAULT 2 start2 +.*: 000010bc 0 NOTYPE LOCAL DEFAULT 2 sec3 +.*: 000010c4 0 NOTYPE GLOBAL DEFAULT 2 diversion +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___dtors +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS __bss_start +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___ctors_end +.*: 000010a4 0 NOTYPE GLOBAL DEFAULT 2 diversion2 +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___ctors +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _edata +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS _end +.*: 00001000 0 NOTYPE GLOBAL DEFAULT 1 start +.*: 00080000 0 NOTYPE GLOBAL DEFAULT 3 _stack +.*: 00001160 0 NOTYPE GLOBAL DEFAULT ABS ___dtors_end Hex dump of section '\.text': 0x00001004 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/gotplt.d binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/gotplt.d --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/gotplt.d 2005-04-09 12:03:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/gotplt.d 2005-08-22 12:27:46.000000000 -0700 @@ -7,6 +7,6 @@ # Make sure that gotplt relocations of forced local symbols # use the GOT. -Relocation section '\.rela\.dyn' at offset 0x270 contains 1 entries: +Relocation section '\.rela\.dyn' at offset .* contains 1 entries: Offset Info Type Sym\.Value Sym\. Name \+ Addend -0000039c 000000a5 R_SH_RELATIVE 0000027c +[0-9a-f ]+R_SH_RELATIVE[0-9a-f ]+ diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/init64.d binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/init64.d --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/init64.d 2005-04-09 12:03:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/init64.d 2005-08-22 12:27:46.000000000 -0700 @@ -7,13 +7,8 @@ # Make sure that the lsb of DT_INIT and DT_FINI entries is set # when _init and _fini are SHmedia code. -Dynamic section at offset 0x300 contains 8 entries: +.* Tag Type Name/Value - 0x000000000000000c \(INIT\) 0x2df - 0x000000000000000d \(FINI\) 0x2ef - 0x0000000000000004 \(HASH\) 0xe8 - 0x0000000000000005 \(STRTAB\) 0x288 - 0x0000000000000006 \(SYMTAB\) 0x138 - 0x000000000000000a \(STRSZ\) 85 \(bytes\) - 0x000000000000000b \(SYMENT\) 24 \(bytes\) - 0x0000000000000000 \(NULL\) 0x0 + 0x000000000000000c \(INIT\) .*[13579bdf] + 0x000000000000000d \(FINI\) .*[13579bdf] +#pass diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/init-cmpct.d binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/init-cmpct.d --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/init-cmpct.d 2005-04-09 12:03:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/init-cmpct.d 2005-08-22 12:27:46.000000000 -0700 @@ -7,14 +7,8 @@ # Make sure that the lsb of DT_INIT and DT_FINI entries is not set # when _init and _fini are SHcompact code. -Dynamic section at offset 0x228 contains 8 entries: +Dynamic section at offset .* contains 8 entries: Tag Type Name/Value - 0x0000000c \(INIT\) 0x216 - 0x0000000d \(FINI\) 0x21e - 0x00000004 \(HASH\) 0x94 - 0x00000005 \(STRTAB\) 0x1c0 - 0x00000006 \(SYMTAB\) 0xe0 - 0x0000000a \(STRSZ\) 85 \(bytes\) - 0x0000000b \(SYMENT\) 16 \(bytes\) - 0x00000000 \(NULL\) 0x0 - + 0x0000000c \(INIT\) .*[02468ace] + 0x0000000d \(FINI\) .*[02468ace] +#pass diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/init-media.d binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/init-media.d --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/init-media.d 2005-04-09 12:03:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/init-media.d 2005-08-22 12:27:46.000000000 -0700 @@ -7,13 +7,8 @@ # Make sure that the lsb of DT_INIT and DT_FINI entries is set # when _init and _fini are SHmedia code. -Dynamic section at offset 0x238 contains 8 entries: +.* Tag Type Name/Value - 0x0000000c \(INIT\) 0x217 - 0x0000000d \(FINI\) 0x227 - 0x00000004 \(HASH\) 0x94 - 0x00000005 \(STRTAB\) 0x1c0 - 0x00000006 \(SYMTAB\) 0xe0 - 0x0000000a \(STRSZ\) 85 \(bytes\) - 0x0000000b \(SYMENT\) 16 \(bytes\) - 0x00000000 \(NULL\) 0x0 + 0x0000000c \(INIT\) .*[13579bdf] + 0x0000000d \(FINI\) .*[13579bdf] +#pass diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/mix1.xd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/mix1.xd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/mix1.xd 2004-12-20 11:16:52.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/mix1.xd 2005-08-22 12:27:46.000000000 -0700 @@ -9,34 +9,22 @@ Program Header: LOAD off 0x0+100 vaddr 0x0+1000 paddr 0x0+1000 align 2\*\*7 filesz 0x0+48 memsz 0x0+48 flags r-x LOAD off 0x0+148 vaddr 0x0+10c8 paddr 0x0+10c8 align 2\*\*7 - filesz 0x0+c memsz 0x0+10 flags rw- + filesz 0x0+c memsz 0x0+c flags rw- LOAD off 0x0+180 vaddr 0x0+80000 paddr 0x0+80000 align 2\*\*7 filesz 0x0+4 memsz 0x0+4 flags rw- Sections: Idx Name Size VMA LMA File off Algn 0 \.text 00000048 0+1000 0+1000 00000100 2\*\*2 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 \.ctors 00000000 0+10c8 0+10c8 00000184 2\*\*0 - CONTENTS - 2 \.dtors 00000000 0+10c8 0+10c8 00000184 2\*\*0 - CONTENTS - 3 \.data 0000000c 0+10c8 0+10c8 00000148 2\*\*2 + 1 \.data 0000000c 0+10c8 0+10c8 00000148 2\*\*2 CONTENTS, ALLOC, LOAD, DATA - 4 \.sbss 00000000 0+10d8 0+10d8 00000184 2\*\*0 - CONTENTS - 5 \.bss 00000000 0+10d8 0+10d8 00000154 2\*\*0 - ALLOC - 6 \.stack 00000004 0+80000 0+80000 00000180 2\*\*0 + 2 \.stack 00000004 0+80000 0+80000 00000180 2\*\*0 CONTENTS, ALLOC, LOAD, DATA - 7 \.cranges 00000014 0+ 0+ 00000184 2\*\*0 + 3 \.cranges 00000014 0+ 0+ 00000184 2\*\*0 CONTENTS, DEBUGGING, SORT_ENTRIES SYMBOL TABLE: 0+1000 l d \.text 0+ (|\.text) -0+10c8 l d \.ctors 0+ (|\.ctors) -0+10c8 l d \.dtors 0+ (|\.dtors) 0+10c8 l d \.data 0+ (|\.data) -0+10d8 l d \.sbss 0+ (|\.sbss) -0+10d8 l d \.bss 0+ (|\.bss) 0+80000 l d \.stack 0+ (|\.stack) 0+ l d \.cranges 0+ (|\.cranges) 0+ l d \*ABS\* 0+ (|\.shstrtab) @@ -46,12 +34,12 @@ SYMBOL TABLE: 0+1004 l \.text 0+ start2 0+1030 l \.text 0+ 0x04 mediacode2 0+1018 l \.text 0+ 0x04 mediacode -0+10c8 g \.dtors 0+ ___dtors +0+10c8 g \*ABS\* 0+ ___dtors 0+10d8 g \*ABS\* 0+ __bss_start -0+10c8 g \.ctors 0+ ___ctors_end -0+10c8 g \.ctors 0+ ___ctors +0+10c8 g \*ABS\* 0+ ___ctors_end +0+10c8 g \*ABS\* 0+ ___ctors 0+10d8 g \*ABS\* 0+ _edata 0+10d8 g \*ABS\* 0+ _end 0+1000 g \.text 0+ start 0+80000 g \.stack 0+ _stack -0+10c8 g \.dtors 0+ ___dtors_end +0+10c8 g \*ABS\* 0+ ___dtors_end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/mix2.xd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/mix2.xd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/mix2.xd 2004-12-20 11:16:52.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/mix2.xd 2005-08-22 12:27:46.000000000 -0700 @@ -19,28 +19,16 @@ Idx Name Size VMA LM CONTENTS, ALLOC, LOAD, READONLY, CODE 1 \.rodata 00000010 0+1034 0+1034 00000134 2\*\*2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 2 \.ctors 00000000 0+10c8 0+10c8 00000184 2\*\*0 - CONTENTS - 3 \.dtors 00000000 0+10c8 0+10c8 00000184 2\*\*0 - CONTENTS - 4 \.data 00000010 0+10c8 0+10c8 00000148 2\*\*2 + 2 \.data 00000010 0+10c8 0+10c8 00000148 2\*\*2 CONTENTS, ALLOC, LOAD, DATA - 5 \.sbss 00000000 0+10d8 0+10d8 00000184 2\*\*0 - CONTENTS - 6 \.bss 00000000 0+10d8 0+10d8 00000158 2\*\*0 - ALLOC - 7 \.stack 00000004 0+80000 0+80000 00000180 2\*\*0 + 3 \.stack 00000004 0+80000 0+80000 00000180 2\*\*0 CONTENTS, ALLOC, LOAD, DATA - 8 \.cranges 00000014 0+ 0+ 00000184 2\*\*0 + 4 \.cranges 00000014 0+ 0+ 00000184 2\*\*0 CONTENTS, DEBUGGING, SORT_ENTRIES SYMBOL TABLE: 0+1000 l d \.text 0+ (|\.text) 0+1034 l d \.rodata 0+ (|\.rodata) -0+10c8 l d \.ctors 0+ (|\.ctors) -0+10c8 l d \.dtors 0+ (|\.dtors) 0+10c8 l d \.data 0+ (|\.data) -0+10d8 l d \.sbss 0+ (|\.sbss) -0+10d8 l d \.bss 0+ (|\.bss) 0+80000 l d \.stack 0+ (|\.stack) 0+ l d \.cranges 0+ (|\.cranges) 0+ l d \*ABS\* 0+ (|\.shstrtab) @@ -54,14 +42,14 @@ SYMBOL TABLE: 0+1024 g \.text 0+ compactlabel2 0+1028 g \.text 0+ compactlabel3 0+1010 g \.text 0+ 0x04 medialabel1 -0+10c8 g \.dtors 0+ ___dtors +0+10c8 g \*ABS\* 0+ ___dtors 0+10cc g \.data 0+ medialabel4 0+10d8 g \*ABS\* 0+ __bss_start -0+10c8 g \.ctors 0+ ___ctors_end +0+10c8 g \*ABS\* 0+ ___ctors_end 0+10d4 g \.data 0+ compactlabel5 -0+10c8 g \.ctors 0+ ___ctors +0+10c8 g \*ABS\* 0+ ___ctors 0+10d8 g \*ABS\* 0+ _edata 0+10d8 g \*ABS\* 0+ _end 0+1000 g \.text 0+ 0x04 start 0+80000 g \.stack 0+ _stack -0+10c8 g \.dtors 0+ ___dtors_end +0+10c8 g \*ABS\* 0+ ___dtors_end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/sh64.exp binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/sh64.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/sh64.exp 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/sh64.exp 2005-08-22 12:27:46.000000000 -0700 @@ -97,13 +97,13 @@ set sh64tests { {{readelf {-s -r -x 1 -x 3} reldl64.rd}} "reldl64.bin" } {"Handling SH64 assembler-generated .cranges" "-mshelf32" "--abi=32" {crange-2a.s crange-1.s} - {{readelf {-S -s -r -x 1 -x 2 -x 9} crange1.rd}} "crange1.bin" } + {{readelf {-S -s -r -x 1 -x 2 -x 4} crange1.rd}} "crange1.bin" } {"Handling SH64 assembler-generated .cranges, partial linking" "-mshelf32 -r" "--abi=32" {crange-2a.s} {{readelf {-S -s -r -x 2 -x 6} crangerel1.rd}} "crangerel1.bin" } {"Mixing SH64 assembler-generated with linker-generated .cranges" "-mshelf32" "--abi=32" {crange-2a.s crange-2b.s crange-1.s} - {{readelf {-S -s -r -x 2 -x 9} crange2.rd}} "crange2.bin" } + {{readelf {-S -s -r -x 2 -x 4} crange2.rd}} "crange2.bin" } {"Mixing SH64 assembler-generated with linker-generated .cranges, partial linking" "-mshelf32 -r" "--abi=32" {crange-2a.s crange-2c.s crange-2d.s crange-2e.s} @@ -112,17 +112,17 @@ set sh64tests { "--abi=32" {crange-2e.s crange-2f.s crange-2g.s crange-2a.s crange-2d.s crange-2i.s crange-2h.s crange-1.s} - {{readelf {-S -s -x 2 -x 9} crange3.rd} {objdump -d crange3.dd}} "crange3.bin" } + {{readelf {-S -s -x 2 -x 4} crange3.rd} {objdump -d crange3.dd}} "crange3.bin" } {"Sorted SH64 .cranges, entry at SHcompact code" "-mshelf32 --entry diversion" "--abi=32" {crange-2e.s crange-2f.s crange-2g.s crange-2a.s crange-2d.s crange-2i.s crange-2h.s crange-1.s} - {{readelf {-h -S -s -x 2 -x 9} crange3-cmpct.rd}} "crange3-cmpct.bin" } + {{readelf {-h -S -s -x 2 -x 4} crange3-cmpct.rd}} "crange3-cmpct.bin" } {"Sorted SH64 .cranges, entry at SHmedia code" "-mshelf32 --entry diversion2" "--abi=32" {crange-2e.s crange-2f.s crange-2g.s crange-2a.s crange-2d.s crange-2i.s crange-2h.s crange-1.s} - {{readelf {-h -S -s -x 2 -x 9} crange3-media.rd}} "crange3-media.bin" } + {{readelf {-h -S -s -x 2 -x 4} crange3-media.rd}} "crange3-media.bin" } {"SH64 Big Endianness" "-mshelf64 -Tendian.ld" "--abi=64" {endian.s} {{objdump -s endian.sbd} {objdump -d endian.dbd}} "endianb.bin" } diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/shdl32.xd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/shdl32.xd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/shdl32.xd 2004-12-20 11:16:52.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/shdl32.xd 2005-08-22 12:27:46.000000000 -0700 @@ -8,7 +8,7 @@ Program Header: LOAD off 0x0+100 vaddr 0x0+1000 paddr 0x0+1000 align 2\*\*7 filesz 0x0+348 memsz 0x0+348 flags r-x LOAD off 0x0+448 vaddr 0x0+13c8 paddr 0x0+13c8 align 2\*\*7 - filesz 0x0+194 memsz 0x0+198 flags rw- + filesz 0x0+194 memsz 0x0+194 flags rw- LOAD off 0x0+600 vaddr 0x0+80000 paddr 0x0+80000 align 2\*\*7 filesz 0x00000004 memsz 0x00000004 flags rw- @@ -18,26 +18,14 @@ Idx Name Size VMA LM CONTENTS, ALLOC, LOAD, READONLY, CODE 1 \.rodata 0+144 0+1204 0+1204 0+304 2\*\*2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 2 \.ctors 0+ 0+13c8 0+13c8 0+604 2\*\*0 - CONTENTS - 3 \.dtors 0+ 0+13c8 0+13c8 0+604 2\*\*0 - CONTENTS - 4 \.data 0+194 0+13c8 0+13c8 0+448 2\*\*2 + 2 \.data 0+194 0+13c8 0+13c8 0+448 2\*\*2 CONTENTS, ALLOC, LOAD, DATA - 5 \.sbss 0+ 0+1560 0+1560 0+604 2\*\*0 - CONTENTS - 6 \.bss 0+ 0+1560 0+1560 0+5dc 2\*\*0 - ALLOC - 7 \.stack 0+4 0+80000 0+80000 0+600 2\*\*0 + 3 \.stack 0+4 0+80000 0+80000 0+600 2\*\*0 CONTENTS, ALLOC, LOAD, DATA SYMBOL TABLE: 0+1000 l d \.text 0+ (|\.text) 0+1204 l d \.rodata 0+ (|\.rodata) -0+13c8 l d \.ctors 0+ (|\.ctors) -0+13c8 l d \.dtors 0+ (|\.dtors) 0+13c8 l d \.data 0+ (|\.data) -0+1560 l d \.sbss 0+ (|\.sbss) -0+1560 l d \.bss 0+ (|\.bss) 0+80000 l d \.stack 0+ (|\.stack) 0+ l d \*ABS\* 0+ (|\.shstrtab) 0+ l d \*ABS\* 0+ (|\.symtab) @@ -88,7 +76,7 @@ SYMBOL TABLE: 0+14e0 g \.data 0+ dbar_mixboth2 0+14ec g \.data 0+ dbaz 0+1524 g \.data 0+ dbaz_mix -0+13c8 g \.dtors 0+ ___dtors +0+13c8 g \*ABS\* 0+ ___dtors 0+141c g \.data 0+ dfoo_mixboth2 0+119c g \.text 0+ 0x04 bazboth 0+13f0 g \.data 0+ dfoo_other @@ -104,13 +92,13 @@ SYMBOL TABLE: 0+14f4 g \.data 0+ dbazboth 0+1038 g \.text 0+ 0x04 foo_otherwithout 0+1190 g \.text 0+ 0x04 bar_mixwithout2 -0+13c8 g \.ctors 0+ ___ctors_end +0+13c8 g \*ABS\* 0+ ___ctors_end 0+1064 g \.text 0+ 0x04 foo_mixwithout 0+116c g \.text 0+ 0x04 bar_other 0+13d0 g \.data 0+ dfooboth 0+1034 g \.text 0+ 0x04 foo_otherboth2 0+1400 g \.data 0+ dfoo_mix -0+13c8 g \.ctors 0+ ___ctors +0+13c8 g \*ABS\* 0+ ___ctors 0+14d4 g \.data 0+ dbar_mix 0+100c g \.text 0+ 0x04 fooboth 0+1170 g \.text 0+ 0x04 bar_otherboth @@ -133,6 +121,6 @@ SYMBOL TABLE: 0+1160 g \.text 0+ 0x04 barboth 0+14b8 g \.data 0+ dbarboth 0+1188 g \.text 0+ 0x04 bar_mixboth2 -0+13c8 g \.dtors 0+ ___dtors_end +0+13c8 g \*ABS\* 0+ ___dtors_end 0+151c g \.data 0+ dbaz_otherboth2 0+1500 g \.data 0+ dbazboth2 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/shdl64.xd binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/shdl64.xd --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/sh64/shdl64.xd 2004-12-20 11:16:52.000000000 -0800 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/sh64/shdl64.xd 2005-08-22 12:27:46.000000000 -0700 @@ -8,7 +8,7 @@ Program Header: LOAD off 0x0+100 vaddr 0x0+1000 paddr 0x0+1000 align 2\*\*7 filesz 0x0+348 memsz 0x0+348 flags r-x LOAD off 0x0+448 vaddr 0x0+13c8 paddr 0x0+13c8 align 2\*\*7 - filesz 0x0+194 memsz 0x0+198 flags rw- + filesz 0x0+194 memsz 0x0+194 flags rw- LOAD off 0x0+600 vaddr 0x0+80000 paddr 0x0+80000 align 2\*\*7 filesz 0x0+4 memsz 0x0+4 flags rw- @@ -18,26 +18,14 @@ Idx Name Size VMA CONTENTS, ALLOC, LOAD, READONLY, CODE 1 \.rodata 0+144 0+1204 0+1204 0+304 2\*\*2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 2 \.ctors 0+ 0+13c8 0+13c8 0+604 2\*\*0 - CONTENTS - 3 \.dtors 0+ 0+13c8 0+13c8 0+604 2\*\*0 - CONTENTS - 4 \.data 0+194 0+13c8 0+13c8 0+448 2\*\*2 + 2 \.data 0+194 0+13c8 0+13c8 0+448 2\*\*2 CONTENTS, ALLOC, LOAD, DATA - 5 \.sbss 0+ 0+1560 0+1560 0+604 2\*\*0 - CONTENTS - 6 \.bss 0+ 0+1560 0+1560 0+5dc 2\*\*0 - ALLOC - 7 \.stack 0+4 0+80000 0+80000 0+600 2\*\*0 + 3 \.stack 0+4 0+80000 0+80000 0+600 2\*\*0 CONTENTS, ALLOC, LOAD, DATA SYMBOL TABLE: 0+1000 l d \.text 0+ (|\.text) 0+1204 l d \.rodata 0+ (|\.rodata) -0+13c8 l d \.ctors 0+ (|\.ctors) -0+13c8 l d \.dtors 0+ (|\.dtors) 0+13c8 l d \.data 0+ (|\.data) -0+1560 l d \.sbss 0+ (|\.sbss) -0+1560 l d \.bss 0+ (|\.bss) 0+80000 l d \.stack 0+ (|\.stack) 0+ l d \*ABS\* 0+ (|\.shstrtab) 0+ l d \*ABS\* 0+ (|\.symtab) @@ -88,7 +76,7 @@ SYMBOL TABLE: 0+14e0 g \.data 0+ dbar_mixboth2 0+14ec g \.data 0+ dbaz 0+1524 g \.data 0+ dbaz_mix -0+13c8 g \.dtors 0+ ___dtors +0+13c8 g \*ABS\* 0+ ___dtors 0+141c g \.data 0+ dfoo_mixboth2 0+119c g \.text 0+ 0x04 bazboth 0+13f0 g \.data 0+ dfoo_other @@ -104,13 +92,13 @@ SYMBOL TABLE: 0+14f4 g \.data 0+ dbazboth 0+1038 g \.text 0+ 0x04 foo_otherwithout 0+1190 g \.text 0+ 0x04 bar_mixwithout2 -0+13c8 g \.ctors 0+ ___ctors_end +0+13c8 g \*ABS\* 0+ ___ctors_end 0+1064 g \.text 0+ 0x04 foo_mixwithout 0+116c g \.text 0+ 0x04 bar_other 0+13d0 g \.data 0+ dfooboth 0+1034 g \.text 0+ 0x04 foo_otherboth2 0+1400 g \.data 0+ dfoo_mix -0+13c8 g \.ctors 0+ ___ctors +0+13c8 g \*ABS\* 0+ ___ctors 0+14d4 g \.data 0+ dbar_mix 0+100c g \.text 0+ 0x04 fooboth 0+1170 g \.text 0+ 0x04 bar_otherboth @@ -133,6 +121,6 @@ SYMBOL TABLE: 0+1160 g \.text 0+ 0x04 barboth 0+14b8 g \.data 0+ dbarboth 0+1188 g \.text 0+ 0x04 bar_mixboth2 -0+13c8 g \.dtors 0+ ___dtors_end +0+13c8 g \*ABS\* 0+ ___dtors_end 0+151c g \.data 0+ dbaz_otherboth2 0+1500 g \.data 0+ dbazboth2 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/shared-1.d binutils-2.16.91.0.3/ld/testsuite/ld-sh/shared-1.d --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/shared-1.d 2005-04-09 12:03:29.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/shared-1.d 2005-08-22 12:27:46.000000000 -0700 @@ -13,10 +13,10 @@ Relocation section '\.rela\.text' at offset 0x[0-9a-f]+ contains 1 entries: .* -000001f8 000000a5 R_SH_RELATIVE +000001fc +000001b0 000000a5 R_SH_RELATIVE +000001b4 Hex dump of section '\.rela\.text': - 0x000001e4 000001fc 000000a5 000001f8 .* + 0x0000019c 000001b4 000000a5 000001b0 .* Hex dump of section '\.text': - 0x000001f0 000001fc 00090009 00090009 .* + 0x000001a8 000001b4 00090009 00090009 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/tlsbin-2.d binutils-2.16.91.0.3/ld/testsuite/ld-sh/tlsbin-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/tlsbin-2.d 2005-04-09 12:03:29.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/tlsbin-2.d 2005-08-22 12:27:46.000000000 -0700 @@ -10,22 +10,22 @@ There are [0-9]+ section headers, starti Section Headers: \[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al \[ 0\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0 - \[ 1\] \.interp +.* - \[ 2\] \.hash +.* - \[ 3\] \.dynsym +.* - \[ 4\] \.dynstr +.* - \[ 5\] \.rela\.dyn +.* - \[ 6\] \.rela\.plt +.* - \[ 7\] \.plt +.* - \[ 8\] \.text +PROGBITS +0+401000 .* - \[ 9\] \.tdata +PROGBITS +0+413000 [0-9a-f]+ 0+018 00 WAT 0 0 4 - \[10\] \.tbss +NOBITS +0+413018 [0-9a-f]+ 0+010 00 WAT 0 0 1 + \[ 1\] \.interp .* + \[ 2\] \.hash .* + \[ 3\] \.dynsym .* + \[ 4\] \.dynstr .* + \[ 5\] \.rela\.dyn .* + \[ 6\] \.rela\.plt .* + \[ 7\] \.plt .* + \[ 8\] \.text +PROGBITS .* + \[ 9\] \.tdata +PROGBITS .* 0+018 00 WAT 0 0 4 + \[10\] \.tbss +NOBITS .* 0+010 00 WAT 0 0 1 #... - \[[0-9a-f]+\] \.got +PROGBITS +0+414000 .* + \[[0-9a-f]+\] \.got +PROGBITS .* #... - \[[0-9a-f]+\] \.shstrtab +.* - \[[0-9a-f]+\] \.symtab +.* - \[[0-9a-f]+\] \.strtab +.* + \[[0-9a-f]+\] \.shstrtab .* + \[[0-9a-f]+\] \.symtab .* + \[[0-9a-f]+\] \.strtab .* Key to Flags: .* .* @@ -56,25 +56,24 @@ Program Headers: Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 4 entries: Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend -0+414010 00000197 R_SH_TLS_TPOFF32 +0+ +sG3 \+ 0 -0+414014 00000397 R_SH_TLS_TPOFF32 +0+ +sG2 \+ 0 -0+414018 00000497 R_SH_TLS_TPOFF32 +0+ +sG4 \+ 0 -0+41401c 0000[0-9a-f]+97 R_SH_TLS_TPOFF32 +0+ +sG1 \+ 0 +[0-9a-f ]+R_SH_TLS_TPOFF32 +0+ +sG3 \+ 0 +[0-9a-f ]+R_SH_TLS_TPOFF32 +0+ +sG2 \+ 0 +[0-9a-f ]+R_SH_TLS_TPOFF32 +0+ +sG4 \+ 0 +[0-9a-f ]+R_SH_TLS_TPOFF32 +0+ +sG1 \+ 0 Relocation section '\.rela\.plt' at offset 0x[0-9a-f]+ contains 1 entries: Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend -0+41400c 000005a4 R_SH_JMP_SLOT +[0-9a-f]+ +__tls_get_addr \+ [0-9a-f]+ +[0-9a-f ]+R_SH_JMP_SLOT[0-9a-f ]+__tls_get_addr \+ [0-9a-f]+ Symbol table '\.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT UND * - +1: 0+ +0 TLS +GLOBAL DEFAULT UND sG3 - +2: [0-9a-f]+ +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +3: 0+ +0 TLS +GLOBAL DEFAULT UND sG2 - +4: 0+ +0 TLS +GLOBAL DEFAULT UND sG4 - +5: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT UND __tls_get_addr +.* NOTYPE +LOCAL +DEFAULT UND * +.* TLS +GLOBAL DEFAULT UND sG3 +.* TLS +GLOBAL DEFAULT UND sG2 +.* TLS +GLOBAL DEFAULT UND sG4 +.* FUNC +GLOBAL DEFAULT UND __tls_get_addr #... - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG1 +.* TLS +GLOBAL DEFAULT UND sG1 #... #pass diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/tlsbin-3.d binutils-2.16.91.0.3/ld/testsuite/ld-sh/tlsbin-3.d --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/tlsbin-3.d 2004-05-27 11:26:06.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/tlsbin-3.d 2005-08-22 12:27:46.000000000 -0700 @@ -8,5 +8,5 @@ .*: +file format elf32-sh.* Contents of section \.got: - 414000 [0-9a-f]+ 00000000 00000000 [0-9a-f]+ .* - 414010 00000000 00000000 00000000 00000000 .* + [0-9a-f]+ [0-9a-f]+ 00000000 00000000 [0-9a-f]+ .* + [0-9a-f]+ 00000000 00000000 00000000 00000000 .* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/tlsbin-4.d binutils-2.16.91.0.3/ld/testsuite/ld-sh/tlsbin-4.d --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/tlsbin-4.d 2002-10-12 09:02:23.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/tlsbin-4.d 2005-08-22 12:27:46.000000000 -0700 @@ -8,5 +8,5 @@ .*: +file format elf32-sh.* Contents of section .tdata: - 413000 11000000 12000000 41000000 42000000 .* - 413010 01010000 02010000 +.* + [0-9a-f]+ 11000000 12000000 41000000 42000000 .* + [0-9a-f]+ 01010000 02010000 +.* diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sh/tlspic-2.d binutils-2.16.91.0.3/ld/testsuite/ld-sh/tlspic-2.d --- binutils-2.16.91.0.2/ld/testsuite/ld-sh/tlspic-2.d 2005-04-09 12:03:29.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sh/tlspic-2.d 2005-08-22 12:27:46.000000000 -0700 @@ -10,21 +10,21 @@ There are [0-9]+ section headers, starti Section Headers: \[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al \[ 0\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0 - \[ 1\] \.hash +.* - \[ 2\] \.dynsym +.* - \[ 3\] \.dynstr +.* - \[ 4\] \.rela\.dyn +.* - \[ 5\] \.rela\.plt +.* - \[ 6\] \.plt +.* - \[ 7\] \.text +PROGBITS +0+[0-9a-f]+ .* - \[ 8\] \.tdata +PROGBITS +0+[0-9a-f]+ [0-9a-f]+ 0+018 00 WAT 0 0 4 - \[ 9\] \.tbss +NOBITS +0+[0-9a-f]+ [0-9a-f]+ 0+008 00 WAT 0 0 1 + \[ 1\] \.hash .* + \[ 2\] \.dynsym .* + \[ 3\] \.dynstr .* + \[ 4\] \.rela\.dyn .* + \[ 5\] \.rela\.plt .* + \[ 6\] \.plt .* + \[ 7\] \.text +PROGBITS .* + \[ 8\] \.tdata +PROGBITS .* 0+18 00 WAT 0 0 4 + \[ 9\] \.tbss +NOBITS .* 0+08 00 WAT 0 0 1 #... - \[[0-9a-f]+\] \.got +PROGBITS +0+[0-9a-f]+ .* + \[[0-9a-f]+\] \.got +PROGBITS .* #... - \[[0-9a-f]+\] \.shstrtab +.* - \[[0-9a-f]+\] \.symtab +.* - \[[0-9a-f]+\] \.strtab +.* + \[[0-9a-f]+\] \.shstrtab .* + \[[0-9a-f]+\] \.symtab .* + \[[0-9a-f]+\] \.strtab .* Key to Flags: .* .* @@ -39,7 +39,7 @@ Program Headers: LOAD.* LOAD.* DYNAMIC.* - TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+18 0x0+20 R +0x4 + TLS .* 0x0+18 0x0+20 R +0x4 Section to Segment mapping: Segment Sections\.\.\. @@ -50,37 +50,33 @@ Program Headers: Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 10 entries: Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend -0+[0-9a-f]+ 00000095 R_SH_TLS_DTPMOD32 +0+00 -0+[0-9a-f]+ 00000097 R_SH_TLS_TPOFF32 +0+0c -0+[0-9a-f]+ 00000095 R_SH_TLS_DTPMOD32 +0+00 -0+[0-9a-f]+ 00000095 R_SH_TLS_DTPMOD32 +0+00 -0+[0-9a-f]+ 00000097 R_SH_TLS_TPOFF32 +0+1c -0+[0-9a-f]+ 00000095 R_SH_TLS_DTPMOD32 +0+00 -0+[0-9a-f]+ 00000097 R_SH_TLS_TPOFF32 +0+14 -0+[0-9a-f]+ 0000[0-9a-f]+95 R_SH_TLS_DTPMOD32 +0+ +sg1 \+ 0 -0+[0-9a-f]+ 0000[0-9a-f]+96 R_SH_TLS_DTPOFF32 +0+ +sg1 \+ 0 -0+[0-9a-f]+ 0000[0-9a-f]+97 R_SH_TLS_TPOFF32 +0+04 +sg2 \+ 0 +[0-9a-f ]+R_SH_TLS_DTPMOD32 +0+00 +[0-9a-f ]+R_SH_TLS_TPOFF32 +0+0c +[0-9a-f ]+R_SH_TLS_DTPMOD32 +0+00 +[0-9a-f ]+R_SH_TLS_DTPMOD32 +0+00 +[0-9a-f ]+R_SH_TLS_TPOFF32 +0+1c +[0-9a-f ]+R_SH_TLS_DTPMOD32 +0+00 +[0-9a-f ]+R_SH_TLS_TPOFF32 +0+14 +[0-9a-f ]+R_SH_TLS_DTPMOD32 +0+ +sg1 \+ 0 +[0-9a-f ]+R_SH_TLS_DTPOFF32 +0+ +sg1 \+ 0 +[0-9a-f ]+R_SH_TLS_TPOFF32 +0+04 +sg2 \+ 0 Relocation section '\.rela\.plt' at offset 0x[0-9a-f]+ contains 1 entries: Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend -0+[0-9a-f]+ 0000[0-9a-f]+a4 R_SH_JMP_SLOT +[0-9a-f]+ +__tls_get_addr \+ [0-9a-f]+ +[0-9a-f ]+R_SH_JMP_SLOT[0-9a-f ]+__tls_get_addr \+ [0-9a-f]+ Symbol table '\.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT UND * - +1: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 * - +2: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 * - +3: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 * - +4: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +[0-9]+ * - +5: 0+ +0 NOTYPE +LOCAL +DEFAULT UND * - +6: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9a-f]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_addr - +[0-9a-f]+: 0+00 +0 TLS +GLOBAL DEFAULT +8 sg1 +.* NOTYPE +LOCAL +DEFAULT UND * +.* SECTION LOCAL DEFAULT +7 * +.* SECTION LOCAL DEFAULT +8 * +.* SECTION LOCAL DEFAULT +9 * +.* NOTYPE GLOBAL DEFAULT UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +8 sg1 #... - +[0-9a-f]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1 +.* FUNC +GLOBAL DEFAULT +7 fn1 #... - +[0-9a-f]+: 0+04 +0 TLS +GLOBAL DEFAULT +8 sg2 +.* TLS +GLOBAL DEFAULT +8 sg2 #... #pass - diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunbin32.rd binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunbin32.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunbin32.rd 2005-04-29 10:50:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunbin32.rd 2005-08-22 12:27:46.000000000 -0700 @@ -4,7 +4,7 @@ #readelf: -WSsrl #target: sparc*-*-* -There are 15 section headers, starting at offset 0x[0-9a-f]+: +.* Section Headers: +\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al @@ -19,10 +19,9 @@ Section Headers: +\[ 8\] .tbss +NOBITS +0+231f4 0+31f4 0+40 00 WAT +0 +0 +4 +\[ 9\] .dynamic +DYNAMIC +0+231f4 0+31f4 0+80 08 +WA +4 +0 +4 +\[10\] .got +PROGBITS +0+23274 0+3274 0+14 04 +WA +0 +0 +4 - +\[11\] .plt +.* - +\[12\] .shstrtab +.* - +\[13\] .symtab +.* - +\[14\] .strtab +.* + +\[11\] .shstrtab +.* + +\[12\] .symtab +.* + +\[13\] .strtab +.* #... Elf file type is EXEC \(Executable file\) @@ -34,100 +33,97 @@ Program Headers: +PHDR +0x0+34 0x0+10034 0x0+10034 0x0+c0 0x0+c0 R E 0x4 +INTERP +0x0+f4 0x0+100f4 0x0+100f4 0x0+11 0x0+11 R +0x1 .*Requesting program interpreter.* - +LOAD +0x0+ 0x0+10000 0x0+10000 0x0+2194 0x0+2194 R E 0x10000 - +LOAD +0x0+2194 0x0+22194 0x0+22194 0x0+10f4 0x0+10f4 RWE 0x10000 - +DYNAMIC +0x0+31f4 0x0+231f4 0x0+231f4 0x0+80 0x0+80 RW +0x4 - +TLS +0x0+2194 0x0+22194 0x0+22194 0x0+1060 0x0+10a0 R +0x4 + +LOAD .* R E 0x10000 + +LOAD .* RW +0x10000 + +DYNAMIC .* RW +0x4 + +TLS .* 0x0+1060 0x0+10a0 R +0x4 #... Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend -00023278 +0000014e R_SPARC_TLS_TPOFF32 +00000000 +sG5 \+ 0 -0002327c +0000034e R_SPARC_TLS_TPOFF32 +00000000 +sG2 \+ 0 -00023280 +0000074e R_SPARC_TLS_TPOFF32 +00000000 +sG6 \+ 0 -00023284 +0000084e R_SPARC_TLS_TPOFF32 +00000000 +sG1 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +00000000 +sG5 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +00000000 +sG2 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +00000000 +sG6 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +00000000 +sG1 \+ 0 -Symbol table '.dynsym' contains 11 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +1: 0+ +0 TLS +GLOBAL DEFAULT +UND sG5 - +2: 0+231f4 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +3: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +4: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +5: 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +6: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +7: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6 - +8: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +9: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +10: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* TLS +GLOBAL DEFAULT +UND sG5 +.* TLS +GLOBAL DEFAULT +UND sG2 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sG6 +.* TLS +GLOBAL DEFAULT +UND sG1 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end -Symbol table '.symtab' contains 68 entries: +Symbol table '.symtab' contains 67 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +1: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 * - +2: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 * - +3: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 * - +4: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 * - +5: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +6: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +7: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +8: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +9: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 * - +[0-9]+: 0+1020 +0 TLS +LOCAL +DEFAULT +7 sl1 - +[0-9]+: 0+1024 +0 TLS +LOCAL +DEFAULT +7 sl2 - +[0-9]+: 0+1028 +0 TLS +LOCAL +DEFAULT +7 sl3 - +[0-9]+: 0+102c +0 TLS +LOCAL +DEFAULT +7 sl4 - +[0-9]+: 0+1030 +0 TLS +LOCAL +DEFAULT +7 sl5 - +[0-9]+: 0+1034 +0 TLS +LOCAL +DEFAULT +7 sl6 - +[0-9]+: 0+1038 +0 TLS +LOCAL +DEFAULT +7 sl7 - +[0-9]+: 0+103c +0 TLS +LOCAL +DEFAULT +7 sl8 - +[0-9]+: 0+1080 +0 TLS +LOCAL +DEFAULT +8 bl1 - +[0-9]+: 0+1084 +0 TLS +LOCAL +DEFAULT +8 bl2 - +[0-9]+: 0+1088 +0 TLS +LOCAL +DEFAULT +8 bl3 - +[0-9]+: 0+108c +0 TLS +LOCAL +DEFAULT +8 bl4 - +[0-9]+: 0+1090 +0 TLS +LOCAL +DEFAULT +8 bl5 - +[0-9]+: 0+1094 +0 TLS +LOCAL +DEFAULT +8 bl6 - +[0-9]+: 0+1098 +0 TLS +LOCAL +DEFAULT +8 bl7 - +[0-9]+: 0+109c +0 TLS +LOCAL +DEFAULT +8 bl8 - +[0-9]+: 0+101c +0 TLS +GLOBAL DEFAULT +7 sg8 - +[0-9]+: 0+107c +0 TLS +GLOBAL DEFAULT +8 bg8 - +[0-9]+: 0+1074 +0 TLS +GLOBAL DEFAULT +8 bg6 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG5 - +[0-9]+: 0+1068 +0 TLS +GLOBAL DEFAULT +8 bg3 - +[0-9]+: 0+231f4 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+1008 +0 TLS +GLOBAL DEFAULT +7 sg3 - +[0-9]+: 0+1048 +0 TLS +GLOBAL HIDDEN +7 sh3 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +[0-9]+: 0+100c +0 TLS +GLOBAL DEFAULT +7 sg4 - +[0-9]+: 0+1010 +0 TLS +GLOBAL DEFAULT +7 sg5 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: 0+1070 +0 TLS +GLOBAL DEFAULT +8 bg5 - +[0-9]+: 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+1058 +0 TLS +GLOBAL HIDDEN +7 sh7 - +[0-9]+: 0+105c +0 TLS +GLOBAL HIDDEN +7 sh8 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1 - +[0-9]+: 0+12000 +0 FUNC +GLOBAL DEFAULT +6 _start - +[0-9]+: 0+104c +0 TLS +GLOBAL HIDDEN +7 sh4 - +[0-9]+: 0+1078 +0 TLS +GLOBAL DEFAULT +8 bg7 - +[0-9]+: 0+1050 +0 TLS +GLOBAL HIDDEN +7 sh5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6 - +[0-9]+: 0+11008 +0 FUNC +GLOBAL DEFAULT +6 fn2 - +[0-9]+: 0+1004 +0 TLS +GLOBAL DEFAULT +7 sg2 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +[0-9]+: 0+1040 +0 TLS +GLOBAL HIDDEN +7 sh1 - +[0-9]+: 0+1014 +0 TLS +GLOBAL DEFAULT +7 sg6 - +[0-9]+: 0+1018 +0 TLS +GLOBAL DEFAULT +7 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: 0+23274 +0 OBJECT +GLOBAL +HIDDEN +10 _GLOBAL_OFFSET_TABLE_ - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+1044 +0 TLS +GLOBAL HIDDEN +7 sh2 - +[0-9]+: 0+1054 +0 TLS +GLOBAL HIDDEN +7 sh6 - +[0-9]+: 0+1064 +0 TLS +GLOBAL DEFAULT +8 bg2 - +[0-9]+: 0+1060 +0 TLS +GLOBAL DEFAULT +8 bg1 - +[0-9]+: 0+106c +0 TLS +GLOBAL DEFAULT +8 bg4 +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +1 * +.* SECTION LOCAL +DEFAULT +2 * +.* SECTION LOCAL +DEFAULT +3 * +.* SECTION LOCAL +DEFAULT +4 * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +9 * +.* SECTION LOCAL +DEFAULT +10 * +.* SECTION LOCAL +DEFAULT +11 * +.* SECTION LOCAL +DEFAULT +12 * +.* SECTION LOCAL +DEFAULT +13 * +.* TLS +LOCAL +DEFAULT +7 sl1 +.* TLS +LOCAL +DEFAULT +7 sl2 +.* TLS +LOCAL +DEFAULT +7 sl3 +.* TLS +LOCAL +DEFAULT +7 sl4 +.* TLS +LOCAL +DEFAULT +7 sl5 +.* TLS +LOCAL +DEFAULT +7 sl6 +.* TLS +LOCAL +DEFAULT +7 sl7 +.* TLS +LOCAL +DEFAULT +7 sl8 +.* TLS +LOCAL +DEFAULT +8 bl1 +.* TLS +LOCAL +DEFAULT +8 bl2 +.* TLS +LOCAL +DEFAULT +8 bl3 +.* TLS +LOCAL +DEFAULT +8 bl4 +.* TLS +LOCAL +DEFAULT +8 bl5 +.* TLS +LOCAL +DEFAULT +8 bl6 +.* TLS +LOCAL +DEFAULT +8 bl7 +.* TLS +LOCAL +DEFAULT +8 bl8 +.* OBJECT +LOCAL +HIDDEN +9 _DYNAMIC +.* OBJECT +LOCAL +HIDDEN +ABS _PROCEDURE_LINKAGE_TABLE_ +.* OBJECT +LOCAL +HIDDEN +10 _GLOBAL_OFFSET_TABLE_ +.* TLS +GLOBAL DEFAULT +7 sg8 +.* TLS +GLOBAL DEFAULT +8 bg8 +.* TLS +GLOBAL DEFAULT +8 bg6 +.* TLS +GLOBAL DEFAULT +UND sG5 +.* TLS +GLOBAL DEFAULT +8 bg3 +.* TLS +GLOBAL DEFAULT +7 sg3 +.* TLS +GLOBAL HIDDEN +7 sh3 +.* TLS +GLOBAL DEFAULT +UND sG2 +.* TLS +GLOBAL DEFAULT +7 sg4 +.* TLS +GLOBAL DEFAULT +7 sg5 +.* TLS +GLOBAL DEFAULT +8 bg5 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL HIDDEN +7 sh7 +.* TLS +GLOBAL HIDDEN +7 sh8 +.* TLS +GLOBAL DEFAULT +7 sg1 +.* FUNC +GLOBAL DEFAULT +6 _start +.* TLS +GLOBAL HIDDEN +7 sh4 +.* TLS +GLOBAL DEFAULT +8 bg7 +.* TLS +GLOBAL HIDDEN +7 sh5 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sG6 +.* FUNC +GLOBAL DEFAULT +6 fn2 +.* TLS +GLOBAL DEFAULT +7 sg2 +.* TLS +GLOBAL DEFAULT +UND sG1 +.* TLS +GLOBAL HIDDEN +7 sh1 +.* TLS +GLOBAL DEFAULT +7 sg6 +.* TLS +GLOBAL DEFAULT +7 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL HIDDEN +7 sh2 +.* TLS +GLOBAL HIDDEN +7 sh6 +.* TLS +GLOBAL DEFAULT +8 bg2 +.* TLS +GLOBAL DEFAULT +8 bg1 +.* TLS +GLOBAL DEFAULT +8 bg4 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunbin64.rd binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunbin64.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunbin64.rd 2005-04-29 10:50:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunbin64.rd 2005-08-22 12:27:46.000000000 -0700 @@ -4,7 +4,7 @@ #readelf: -WSsrl #target: sparc*-*-* -There are 15 section headers, starting at offset 0x[0-9a-f]+: +.* Section Headers: +\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al @@ -19,10 +19,9 @@ Section Headers: +\[ 8\] .tbss +NOBITS +0+202204 0+2204 0+40 00 WAT +0 +0 +4 +\[ 9\] .dynamic +DYNAMIC +0+202208 0+2208 0+100 10 +WA +4 +0 +8 +\[10\] .got +PROGBITS +0+202308 0+2308 0+28 08 +WA +0 +0 +8 - +\[11\] .plt +.* - +\[12\] .shstrtab +.* - +\[13\] .symtab +.* - +\[14\] .strtab +.* + +\[11\] .shstrtab +.* + +\[12\] .symtab +.* + +\[13\] .strtab +.* #... Elf file type is EXEC \(Executable file\) @@ -34,100 +33,97 @@ Program Headers: +PHDR +0x0+40 0x0+100040 0x0+100040 0x0+150 0x0+150 R E 0x8 +INTERP +0x0+190 0x0+100190 0x0+100190 0x0+19 0x0+19 R +0x1 .*Requesting program interpreter.* - +LOAD +0x0+ 0x0+100000 0x0+100000 0x0+21a4 0x0+21a4 R E 0x100000 - +LOAD +0x0+21a4 0x0+2021a4 0x0+2021a4 0x0+25c 0x0+25c RWE 0x100000 - +DYNAMIC +0x0+2208 0x0+202208 0x0+202208 0x0+100 0x0+100 RW +0x8 - +TLS +0x0+21a4 0x0+2021a4 0x0+2021a4 0x0+60 0x0+a0 R +0x4 + +LOAD .* R E 0x100000 + +LOAD .* RW +0x100000 + +DYNAMIC .* RW +0x8 + +TLS .* 0x0+60 0x0+a0 R +0x4 #... Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+202310 +0+10000004f R_SPARC_TLS_TPOFF64 +0+ +sG5 \+ 0 -0+202318 +0+30000004f R_SPARC_TLS_TPOFF64 +0+ +sG2 \+ 0 -0+202320 +0+70000004f R_SPARC_TLS_TPOFF64 +0+ +sG6 \+ 0 -0+202328 +0+80000004f R_SPARC_TLS_TPOFF64 +0+ +sG1 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sG5 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sG2 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sG6 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sG1 \+ 0 -Symbol table '.dynsym' contains 11 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +1: 0+ +0 TLS +GLOBAL DEFAULT +UND sG5 - +2: 0+202208 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +3: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +4: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +5: 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +6: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +7: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6 - +8: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +9: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +10: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* TLS +GLOBAL DEFAULT +UND sG5 +.* TLS +GLOBAL DEFAULT +UND sG2 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sG6 +.* TLS +GLOBAL DEFAULT +UND sG1 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end -Symbol table '.symtab' contains 68 entries: +Symbol table '.symtab' contains 67 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +1: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 * - +2: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 * - +3: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 * - +4: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 * - +5: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +6: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +7: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +8: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +9: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 * - +[0-9]+: 0+20 +0 TLS +LOCAL +DEFAULT +7 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL +DEFAULT +7 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL +DEFAULT +7 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL +DEFAULT +7 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL +DEFAULT +7 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL +DEFAULT +7 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL +DEFAULT +7 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL +DEFAULT +7 sl8 - +[0-9]+: 0+80 +0 TLS +LOCAL +DEFAULT +8 bl1 - +[0-9]+: 0+84 +0 TLS +LOCAL +DEFAULT +8 bl2 - +[0-9]+: 0+88 +0 TLS +LOCAL +DEFAULT +8 bl3 - +[0-9]+: 0+8c +0 TLS +LOCAL +DEFAULT +8 bl4 - +[0-9]+: 0+90 +0 TLS +LOCAL +DEFAULT +8 bl5 - +[0-9]+: 0+94 +0 TLS +LOCAL +DEFAULT +8 bl6 - +[0-9]+: 0+98 +0 TLS +LOCAL +DEFAULT +8 bl7 - +[0-9]+: 0+9c +0 TLS +LOCAL +DEFAULT +8 bl8 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +7 sg8 - +[0-9]+: 0+7c +0 TLS +GLOBAL DEFAULT +8 bg8 - +[0-9]+: 0+74 +0 TLS +GLOBAL DEFAULT +8 bg6 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG5 - +[0-9]+: 0+68 +0 TLS +GLOBAL DEFAULT +8 bg3 - +[0-9]+: 0+202208 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+08 +0 TLS +GLOBAL DEFAULT +7 sg3 - +[0-9]+: 0+48 +0 TLS +GLOBAL HIDDEN +7 sh3 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2 - +[0-9]+: 0+0c +0 TLS +GLOBAL DEFAULT +7 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +7 sg5 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: 0+70 +0 TLS +GLOBAL DEFAULT +8 bg5 - +[0-9]+: 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+58 +0 TLS +GLOBAL HIDDEN +7 sh7 - +[0-9]+: 0+5c +0 TLS +GLOBAL HIDDEN +7 sh8 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1 - +[0-9]+: 0+102000 +0 FUNC +GLOBAL DEFAULT +6 _start - +[0-9]+: 0+4c +0 TLS +GLOBAL HIDDEN +7 sh4 - +[0-9]+: 0+78 +0 TLS +GLOBAL DEFAULT +8 bg7 - +[0-9]+: 0+50 +0 TLS +GLOBAL HIDDEN +7 sh5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6 - +[0-9]+: 0+101008 +0 FUNC +GLOBAL DEFAULT +6 fn2 - +[0-9]+: 0+04 +0 TLS +GLOBAL DEFAULT +7 sg2 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1 - +[0-9]+: 0+40 +0 TLS +GLOBAL HIDDEN +7 sh1 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +7 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +7 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: 0+202308 +0 OBJECT +GLOBAL +HIDDEN +10 _GLOBAL_OFFSET_TABLE_ - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end - +[0-9]+: 0+44 +0 TLS +GLOBAL HIDDEN +7 sh2 - +[0-9]+: 0+54 +0 TLS +GLOBAL HIDDEN +7 sh6 - +[0-9]+: 0+64 +0 TLS +GLOBAL DEFAULT +8 bg2 - +[0-9]+: 0+60 +0 TLS +GLOBAL DEFAULT +8 bg1 - +[0-9]+: 0+6c +0 TLS +GLOBAL DEFAULT +8 bg4 +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +1 * +.* SECTION LOCAL +DEFAULT +2 * +.* SECTION LOCAL +DEFAULT +3 * +.* SECTION LOCAL +DEFAULT +4 * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +9 * +.* SECTION LOCAL +DEFAULT +10 * +.* SECTION LOCAL +DEFAULT +11 * +.* SECTION LOCAL +DEFAULT +12 * +.* SECTION LOCAL +DEFAULT +13 * +.* TLS +LOCAL +DEFAULT +7 sl1 +.* TLS +LOCAL +DEFAULT +7 sl2 +.* TLS +LOCAL +DEFAULT +7 sl3 +.* TLS +LOCAL +DEFAULT +7 sl4 +.* TLS +LOCAL +DEFAULT +7 sl5 +.* TLS +LOCAL +DEFAULT +7 sl6 +.* TLS +LOCAL +DEFAULT +7 sl7 +.* TLS +LOCAL +DEFAULT +7 sl8 +.* TLS +LOCAL +DEFAULT +8 bl1 +.* TLS +LOCAL +DEFAULT +8 bl2 +.* TLS +LOCAL +DEFAULT +8 bl3 +.* TLS +LOCAL +DEFAULT +8 bl4 +.* TLS +LOCAL +DEFAULT +8 bl5 +.* TLS +LOCAL +DEFAULT +8 bl6 +.* TLS +LOCAL +DEFAULT +8 bl7 +.* TLS +LOCAL +DEFAULT +8 bl8 +.* OBJECT +LOCAL +HIDDEN +9 _DYNAMIC +.* OBJECT +LOCAL +HIDDEN +ABS _PROCEDURE_LINKAGE_TABLE_ +.* OBJECT +LOCAL +HIDDEN +10 _GLOBAL_OFFSET_TABLE_ +.* TLS +GLOBAL DEFAULT +7 sg8 +.* TLS +GLOBAL DEFAULT +8 bg8 +.* TLS +GLOBAL DEFAULT +8 bg6 +.* TLS +GLOBAL DEFAULT +UND sG5 +.* TLS +GLOBAL DEFAULT +8 bg3 +.* TLS +GLOBAL DEFAULT +7 sg3 +.* TLS +GLOBAL HIDDEN +7 sh3 +.* TLS +GLOBAL DEFAULT +UND sG2 +.* TLS +GLOBAL DEFAULT +7 sg4 +.* TLS +GLOBAL DEFAULT +7 sg5 +.* TLS +GLOBAL DEFAULT +8 bg5 +.* FUNC +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL HIDDEN +7 sh7 +.* TLS +GLOBAL HIDDEN +7 sh8 +.* TLS +GLOBAL DEFAULT +7 sg1 +.* FUNC +GLOBAL DEFAULT +6 _start +.* TLS +GLOBAL HIDDEN +7 sh4 +.* TLS +GLOBAL DEFAULT +8 bg7 +.* TLS +GLOBAL HIDDEN +7 sh5 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sG6 +.* FUNC +GLOBAL DEFAULT +6 fn2 +.* TLS +GLOBAL DEFAULT +7 sg2 +.* TLS +GLOBAL DEFAULT +UND sG1 +.* TLS +GLOBAL HIDDEN +7 sh1 +.* TLS +GLOBAL DEFAULT +7 sg6 +.* TLS +GLOBAL DEFAULT +7 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end +.* TLS +GLOBAL HIDDEN +7 sh2 +.* TLS +GLOBAL HIDDEN +7 sh6 +.* TLS +GLOBAL DEFAULT +8 bg2 +.* TLS +GLOBAL DEFAULT +8 bg1 +.* TLS +GLOBAL DEFAULT +8 bg4 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunnopic32.rd binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunnopic32.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunnopic32.rd 2005-04-09 12:03:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunnopic32.rd 2005-08-22 12:27:46.000000000 -0700 @@ -5,7 +5,7 @@ #readelf: -WSsrl #target: sparc-*-* -There are 13 section headers, starting at offset 0x[0-9a-f]+: +.* Section Headers: +\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al @@ -18,10 +18,9 @@ Section Headers: +\[ 6\] .tbss +NOBITS +0+12000 0+2000 0+24 0+ WAT +0 +0 +4 +\[ 7\] .dynamic +DYNAMIC +0+12000 0+2000 0+80 08 +WA +3 +0 +4 +\[ 8\] .got +PROGBITS +0+12080 0+2080 0+1c 04 +WA +0 +0 +4 - +\[ 9\] .plt +.* - +\[10\] .shstrtab +.* - +\[11\] .symtab +.* - +\[12\] .strtab +.* + +\[ 9\] .shstrtab +.* + +\[10\] .symtab +.* + +\[11\] .strtab +.* #... Elf file type is DYN \(Shared object file\) Entry point 0x1000 @@ -29,74 +28,69 @@ There are 4 program headers, starting at Program Headers: +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align - +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x10000 - +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+9c 0x0+9c RWE 0x10000 - +DYNAMIC +0x0+2000 0x0+12000 0x0+12000 0x0+80 0x0+80 RW +0x4 - +TLS +0x0+2000 0x0+12000 0x0+12000 0x0+ 0x0+24 R +0x4 + +LOAD .* R E 0x10000 + +LOAD .* RW +0x10000 + +DYNAMIC .* RW +0x4 + +TLS .* 0x0+ 0x0+24 R +0x4 #... Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 12 entries: Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend -0+1004 +0+309 R_SPARC_HI22 +0+12080 +\.got \+ 12080 -0+1008 +0+30c R_SPARC_LO10 +0+12080 +\.got \+ 12080 -0+10dc +0+48 R_SPARC_TLS_LE_HIX22 +0+9 -0+10e0 +0+49 R_SPARC_TLS_LE_LOX10 +0+9 -0+10f8 +0+48 R_SPARC_TLS_LE_HIX22 +0+1c -0+10fc +0+49 R_SPARC_TLS_LE_LOX10 +0+1c -0+12084 +0+4e R_SPARC_TLS_TPOFF32 +0+ -0+12088 +0+4e R_SPARC_TLS_TPOFF32 +0+4 -0+12094 +0+4e R_SPARC_TLS_TPOFF32 +0+14 -0+12098 +0+4e R_SPARC_TLS_TPOFF32 +0+18 -0+1208c +0+94e R_SPARC_TLS_TPOFF32 +0+ +sg1 \+ 0 -0+12090 +0+b4e R_SPARC_TLS_TPOFF32 +0+ +sg2 \+ 0 +[0-9a-f ]+R_SPARC_HI22 +0+12080 +\.got \+ 12080 +[0-9a-f ]+R_SPARC_LO10 +0+12080 +\.got \+ 12080 +[0-9a-f ]+R_SPARC_TLS_LE_HIX22 +0+9 +[0-9a-f ]+R_SPARC_TLS_LE_LOX10 +0+9 +[0-9a-f ]+R_SPARC_TLS_LE_HIX22 +0+1c +[0-9a-f ]+R_SPARC_TLS_LE_LOX10 +0+1c +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+ +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+4 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+14 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+18 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+ +sg1 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+ +sg2 \+ 0 -Symbol table '.dynsym' contains 14 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +1: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +2: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +3: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +4: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +5: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +6: 0+12000 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +7: 0+1000 +0 FUNC +GLOBAL DEFAULT +5 fn3 - +8: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +9: 0+ +0 TLS +GLOBAL DEFAULT +UND sg1 - +10: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +11: 0+ +0 TLS +GLOBAL DEFAULT +UND sg2 - +12: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +13: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +8 * +.* FUNC +GLOBAL DEFAULT +5 fn3 +.* TLS +GLOBAL DEFAULT +UND sg1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sg2 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end -Symbol table '.symtab' contains 31 entries: +Symbol table '.symtab' contains 30 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +1: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 * - +2: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 * - +3: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 * - +4: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 * - +5: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +6: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +7: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +8: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +9: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 * - +[0-9]+: 0+ +0 TLS +LOCAL +DEFAULT +6 bl1 - +[0-9]+: 0+4 +0 TLS +LOCAL +DEFAULT +6 bl2 - +[0-9]+: 0+8 +0 TLS +LOCAL +DEFAULT +6 bl3 - +[0-9]+: 0+c +0 TLS +LOCAL +DEFAULT +6 bl4 - +[0-9]+: 0+10 +0 TLS +LOCAL +DEFAULT +6 bl5 - +[0-9]+: 0+1c +0 TLS +LOCAL +HIDDEN +6 sh3 - +[0-9]+: 0+20 +0 TLS +LOCAL +HIDDEN +6 sh4 - +[0-9]+: 0+14 +0 TLS +LOCAL +HIDDEN +6 sh1 - +[0-9]+: 0+12080 +0 OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: 0+18 +0 TLS +LOCAL +HIDDEN +6 sh2 - +[0-9]+: 0+12000 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+1000 +0 FUNC +GLOBAL DEFAULT +5 fn3 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sg1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sg2 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +1 * +.* SECTION LOCAL +DEFAULT +2 * +.* SECTION LOCAL +DEFAULT +3 * +.* SECTION LOCAL +DEFAULT +4 * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +9 * +.* SECTION LOCAL +DEFAULT +10 * +.* SECTION LOCAL +DEFAULT +11 * +.* TLS +LOCAL +DEFAULT +6 bl1 +.* TLS +LOCAL +DEFAULT +6 bl2 +.* TLS +LOCAL +DEFAULT +6 bl3 +.* TLS +LOCAL +DEFAULT +6 bl4 +.* TLS +LOCAL +DEFAULT +6 bl5 +.* OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC +.* TLS +LOCAL +HIDDEN +6 sh3 +.* OBJECT +LOCAL +HIDDEN +ABS _PROCEDURE_LINKAGE_TABLE_ +.* TLS +LOCAL +HIDDEN +6 sh4 +.* TLS +LOCAL +HIDDEN +6 sh1 +.* OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +LOCAL +HIDDEN +6 sh2 +.* FUNC +GLOBAL DEFAULT +5 fn3 +.* TLS +GLOBAL DEFAULT +UND sg1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sg2 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunnopic64.rd binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunnopic64.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunnopic64.rd 2005-04-29 10:50:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunnopic64.rd 2005-08-22 12:27:46.000000000 -0700 @@ -5,7 +5,7 @@ #readelf: -WSsrl #target: sparc-*-* -There are 13 section headers, starting at offset 0x[0-9a-f]+: +.* Section Headers: +\[Nr\] Name +Type +Address +Off +Size +ES Flg Lk Inf Al @@ -18,10 +18,9 @@ Section Headers: +\[ 6\] .tbss +NOBITS +0+102000 0+2000 0+24 0+ WAT +0 +0 +4 +\[ 7\] .dynamic +DYNAMIC +0+102000 0+2000 0+100 10 +WA +3 +0 +8 +\[ 8\] .got +PROGBITS +0+102100 0+2100 0+38 08 +WA +0 +0 +8 - +\[ 9\] .plt +.* - +\[10\] .shstrtab +.* - +\[11\] .symtab +.* - +\[12\] .strtab +.* + +\[ 9\] .shstrtab +.* + +\[10\] .symtab +.* + +\[11\] .strtab +.* #... Elf file type is DYN \(Shared object file\) Entry point 0x1000 @@ -29,76 +28,71 @@ There are 4 program headers, starting at Program Headers: +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align - +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x100000 - +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+200 0x0+200 RWE 0x100000 - +DYNAMIC +0x0+2000 0x0+102000 0x0+102000 0x0+100 0x0+100 RW +0x8 - +TLS +0x0+2000 0x0+102000 0x0+102000 0x0+ 0x0+24 R +0x4 + +LOAD .* R E 0x100000 + +LOAD .* RW +0x100000 + +DYNAMIC .* RW +0x8 + +TLS .* 0x0+ 0x0+24 R +0x4 #... Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+1004 +0+300000022 R_SPARC_HH22 +0+102100 +\.got \+ 102100 -0+1008 +0+300000024 R_SPARC_LM22 +0+102100 +\.got \+ 102100 -0+100c +0+300000023 R_SPARC_HM10 +0+102100 +\.got \+ 102100 -0+1010 +0+30000000c R_SPARC_LO10 +0+102100 +\.got \+ 102100 -0+10ec +0+48 R_SPARC_TLS_LE_HIX22 +0+9 -0+10f0 +0+49 R_SPARC_TLS_LE_LOX10 +0+9 -0+1108 +0+48 R_SPARC_TLS_LE_HIX22 +0+1c -0+110c +0+49 R_SPARC_TLS_LE_LOX10 +0+1c -0+102108 +0+4f R_SPARC_TLS_TPOFF64 +0+ -0+102110 +0+4f R_SPARC_TLS_TPOFF64 +0+4 -0+102128 +0+4f R_SPARC_TLS_TPOFF64 +0+14 -0+102130 +0+4f R_SPARC_TLS_TPOFF64 +0+18 -0+102118 +0+90000004f R_SPARC_TLS_TPOFF64 +0+ +sg1 \+ 0 -0+102120 +0+b0000004f R_SPARC_TLS_TPOFF64 +0+ +sg2 \+ 0 +[0-9a-f ]+R_SPARC_HH22 +0+102100 +\.got \+ 102100 +[0-9a-f ]+R_SPARC_LM22 +0+102100 +\.got \+ 102100 +[0-9a-f ]+R_SPARC_HM10 +0+102100 +\.got \+ 102100 +[0-9a-f ]+R_SPARC_LO10 +0+102100 +\.got \+ 102100 +[0-9a-f ]+R_SPARC_TLS_LE_HIX22 +0+9 +[0-9a-f ]+R_SPARC_TLS_LE_LOX10 +0+9 +[0-9a-f ]+R_SPARC_TLS_LE_HIX22 +0+1c +[0-9a-f ]+R_SPARC_TLS_LE_LOX10 +0+1c +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+4 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+14 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+18 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sg1 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+ +sg2 \+ 0 -Symbol table '.dynsym' contains 14 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +1: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +2: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +3: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +4: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +5: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +6: 0+102000 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +7: 0+1000 +0 FUNC +GLOBAL DEFAULT +5 fn3 - +8: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +9: 0+ +0 TLS +GLOBAL DEFAULT +UND sg1 - +10: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +11: 0+ +0 TLS +GLOBAL DEFAULT +UND sg2 - +12: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +13: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +8 * +.* FUNC +GLOBAL DEFAULT +5 fn3 +.* TLS +GLOBAL DEFAULT +UND sg1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sg2 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end -Symbol table '.symtab' contains 31 entries: +Symbol table '.symtab' contains 30 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +1: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 * - +2: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 * - +3: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 * - +4: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 * - +5: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +6: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +7: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +8: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +9: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 * - +[0-9]+: 0+ +0 TLS +LOCAL +DEFAULT +6 bl1 - +[0-9]+: 0+4 +0 TLS +LOCAL +DEFAULT +6 bl2 - +[0-9]+: 0+8 +0 TLS +LOCAL +DEFAULT +6 bl3 - +[0-9]+: 0+c +0 TLS +LOCAL +DEFAULT +6 bl4 - +[0-9]+: 0+10 +0 TLS +LOCAL +DEFAULT +6 bl5 - +[0-9]+: 0+1c +0 TLS +LOCAL +HIDDEN +6 sh3 - +[0-9]+: 0+20 +0 TLS +LOCAL +HIDDEN +6 sh4 - +[0-9]+: 0+14 +0 TLS +LOCAL +HIDDEN +6 sh1 - +[0-9]+: 0+102100 +0 OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: 0+18 +0 TLS +LOCAL +HIDDEN +6 sh2 - +[0-9]+: 0+102000 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+1000 +0 FUNC +GLOBAL DEFAULT +5 fn3 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sg1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND sg2 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +1 * +.* SECTION LOCAL +DEFAULT +2 * +.* SECTION LOCAL +DEFAULT +3 * +.* SECTION LOCAL +DEFAULT +4 * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +9 * +.* SECTION LOCAL +DEFAULT +10 * +.* SECTION LOCAL +DEFAULT +11 * +.* TLS +LOCAL +DEFAULT +6 bl1 +.* TLS +LOCAL +DEFAULT +6 bl2 +.* TLS +LOCAL +DEFAULT +6 bl3 +.* TLS +LOCAL +DEFAULT +6 bl4 +.* TLS +LOCAL +DEFAULT +6 bl5 +.* OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC +.* TLS +LOCAL +HIDDEN +6 sh3 +.* OBJECT +LOCAL +HIDDEN +ABS _PROCEDURE_LINKAGE_TABLE_ +.* TLS +LOCAL +HIDDEN +6 sh4 +.* TLS +LOCAL +HIDDEN +6 sh1 +.* OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +LOCAL +HIDDEN +6 sh2 +.* FUNC +GLOBAL DEFAULT +5 fn3 +.* TLS +GLOBAL DEFAULT +UND sg1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +UND sg2 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunpic32.rd binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunpic32.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunpic32.rd 2005-04-09 12:03:31.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunpic32.rd 2005-08-22 12:27:46.000000000 -0700 @@ -40,104 +40,100 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend -0+120fc +0+4a R_SPARC_TLS_DTPMOD32 +0+ -0+12104 +0+4e R_SPARC_TLS_TPOFF32 +0+24 -0+12108 +0+4e R_SPARC_TLS_TPOFF32 +0+30 -0+1210c +0+4a R_SPARC_TLS_DTPMOD32 +0+ -0+12114 +0+4a R_SPARC_TLS_DTPMOD32 +0+ -0+1211c +0+4e R_SPARC_TLS_TPOFF32 +0+64 -0+1212c +0+4e R_SPARC_TLS_TPOFF32 +0+50 -0+12130 +0+4e R_SPARC_TLS_TPOFF32 +0+70 -0+12138 +0+4a R_SPARC_TLS_DTPMOD32 +0+ -0+12140 +0+4e R_SPARC_TLS_TPOFF32 +0+44 -0+12120 +0+b4e R_SPARC_TLS_TPOFF32 +0+10 +sg5 \+ 0 -0+12124 +0+e4a R_SPARC_TLS_DTPMOD32 +0+ +sg1 \+ 0 -0+12128 +0+e4c R_SPARC_TLS_DTPOFF32 +0+ +sg1 \+ 0 -0+12134 +0+114e R_SPARC_TLS_TPOFF32 +0+4 +sg2 \+ 0 +[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+ +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+24 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+30 +[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+ +[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+ +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+64 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+50 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+70 +[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+ +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+44 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+10 +sg5 \+ 0 +[0-9a-f ]+R_SPARC_TLS_DTPMOD32 +0+ +sg1 \+ 0 +[0-9a-f ]+R_SPARC_TLS_DTPOFF32 +0+ +sg1 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF32 +0+4 +sg2 \+ 0 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend -0+12174 +0+d15 R_SPARC_JMP_SLOT +0+ +__tls_get_addr \+ 0 +[0-9a-f ]+R_SPARC_JMP_SLOT +0+ +__tls_get_addr \+ 0 -Symbol table '.dynsym' contains 22 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +7 sg8 - +[0-9]+: 0+12060 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +7 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +7 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +7 sg5 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1 - +[0-9]+: 0+1008 +0 FUNC +GLOBAL DEFAULT +6 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +7 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +7 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +7 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +10 * +.* TLS +GLOBAL DEFAULT +7 sg8 +.* TLS +GLOBAL DEFAULT +7 sg3 +.* TLS +GLOBAL DEFAULT +7 sg4 +.* TLS +GLOBAL DEFAULT +7 sg5 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +7 sg1 +.* FUNC +GLOBAL DEFAULT +6 fn1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +7 sg2 +.* TLS +GLOBAL DEFAULT +7 sg6 +.* TLS +GLOBAL DEFAULT +7 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '.symtab' contains 55 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 * - +[0-9]+: 0+20 +0 TLS +LOCAL +DEFAULT +7 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL +DEFAULT +7 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL +DEFAULT +7 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL +DEFAULT +7 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL +DEFAULT +7 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL +DEFAULT +7 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL +DEFAULT +7 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL +DEFAULT +7 sl8 - +[0-9]+: 0+60 +0 TLS +LOCAL +HIDDEN +8 sH1 - +[0-9]+: 0+48 +0 TLS +LOCAL +HIDDEN +7 sh3 - +[0-9]+: 0+64 +0 TLS +LOCAL +HIDDEN +8 sH2 - +[0-9]+: 0+78 +0 TLS +LOCAL +HIDDEN +8 sH7 - +[0-9]+: 0+58 +0 TLS +LOCAL +HIDDEN +7 sh7 - +[0-9]+: 0+5c +0 TLS +LOCAL +HIDDEN +7 sh8 - +[0-9]+: 0+6c +0 TLS +LOCAL +HIDDEN +8 sH4 - +[0-9]+: 0+4c +0 TLS +LOCAL +HIDDEN +7 sh4 - +[0-9]+: 0+68 +0 TLS +LOCAL +HIDDEN +8 sH3 - +[0-9]+: 0+50 +0 TLS +LOCAL +HIDDEN +7 sh5 - +[0-9]+: 0+70 +0 TLS +LOCAL +HIDDEN +8 sH5 - +[0-9]+: 0+74 +0 TLS +LOCAL +HIDDEN +8 sH6 - +[0-9]+: 0+7c +0 TLS +LOCAL +HIDDEN +8 sH8 - +[0-9]+: 0+40 +0 TLS +LOCAL +HIDDEN +7 sh1 - +[0-9]+: 0+120f8 +0 OBJECT +LOCAL HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: 0+44 +0 TLS +LOCAL +HIDDEN +7 sh2 - +[0-9]+: 0+54 +0 TLS +LOCAL +HIDDEN +7 sh6 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +7 sg8 - +[0-9]+: 0+12060 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +7 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +7 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +7 sg5 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1 - +[0-9]+: 0+1008 +0 FUNC +GLOBAL DEFAULT +6 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +7 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +7 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +7 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +1 * +.* SECTION LOCAL +DEFAULT +2 * +.* SECTION LOCAL +DEFAULT +3 * +.* SECTION LOCAL +DEFAULT +4 * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +9 * +.* SECTION LOCAL +DEFAULT +10 * +.* SECTION LOCAL +DEFAULT +11 * +.* SECTION LOCAL +DEFAULT +12 * +.* SECTION LOCAL +DEFAULT +13 * +.* SECTION LOCAL +DEFAULT +14 * +.* TLS +LOCAL +DEFAULT +7 sl1 +.* TLS +LOCAL +DEFAULT +7 sl2 +.* TLS +LOCAL +DEFAULT +7 sl3 +.* TLS +LOCAL +DEFAULT +7 sl4 +.* TLS +LOCAL +DEFAULT +7 sl5 +.* TLS +LOCAL +DEFAULT +7 sl6 +.* TLS +LOCAL +DEFAULT +7 sl7 +.* TLS +LOCAL +DEFAULT +7 sl8 +.* TLS +LOCAL +HIDDEN +8 sH1 +.* OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC +.* TLS +LOCAL +HIDDEN +7 sh3 +.* TLS +LOCAL +HIDDEN +8 sH2 +.* TLS +LOCAL +HIDDEN +8 sH7 +.* OBJECT +LOCAL +HIDDEN +ABS _PROCEDURE_LINKAGE_TABLE_ +.* TLS +LOCAL +HIDDEN +7 sh7 +.* TLS +LOCAL +HIDDEN +7 sh8 +.* TLS +LOCAL +HIDDEN +8 sH4 +.* TLS +LOCAL +HIDDEN +7 sh4 +.* TLS +LOCAL +HIDDEN +8 sH3 +.* TLS +LOCAL +HIDDEN +7 sh5 +.* TLS +LOCAL +HIDDEN +8 sH5 +.* TLS +LOCAL +HIDDEN +8 sH6 +.* TLS +LOCAL +HIDDEN +8 sH8 +.* TLS +LOCAL +HIDDEN +7 sh1 +.* OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +LOCAL +HIDDEN +7 sh2 +.* TLS +LOCAL +HIDDEN +7 sh6 +.* TLS +GLOBAL DEFAULT +7 sg8 +.* TLS +GLOBAL DEFAULT +7 sg3 +.* TLS +GLOBAL DEFAULT +7 sg4 +.* TLS +GLOBAL DEFAULT +7 sg5 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +7 sg1 +.* FUNC +GLOBAL DEFAULT +6 fn1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +7 sg2 +.* TLS +GLOBAL DEFAULT +7 sg6 +.* TLS +GLOBAL DEFAULT +7 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunpic64.rd binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunpic64.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-sparc/tlssunpic64.rd 2005-04-29 10:50:30.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-sparc/tlssunpic64.rd 2005-08-22 12:27:46.000000000 -0700 @@ -40,104 +40,100 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+102198 +0+4b R_SPARC_TLS_DTPMOD64 +0+ -0+1021a8 +0+4f R_SPARC_TLS_TPOFF64 +0+24 -0+1021b0 +0+4f R_SPARC_TLS_TPOFF64 +0+30 -0+1021b8 +0+4b R_SPARC_TLS_DTPMOD64 +0+ -0+1021c8 +0+4b R_SPARC_TLS_DTPMOD64 +0+ -0+1021d8 +0+4f R_SPARC_TLS_TPOFF64 +0+64 -0+1021f8 +0+4f R_SPARC_TLS_TPOFF64 +0+50 -0+102200 +0+4f R_SPARC_TLS_TPOFF64 +0+70 -0+102210 +0+4b R_SPARC_TLS_DTPMOD64 +0+ -0+102220 +0+4f R_SPARC_TLS_TPOFF64 +0+44 -0+1021e0 +0+b0000004f R_SPARC_TLS_TPOFF64 +0+10 +sg5 \+ 0 -0+1021e8 +0+e0000004b R_SPARC_TLS_DTPMOD64 +0+ +sg1 \+ 0 -0+1021f0 +0+e0000004d R_SPARC_TLS_DTPOFF64 +0+ +sg1 \+ 0 -0+102208 +0+110000004f R_SPARC_TLS_TPOFF64 +0+4 +sg2 \+ 0 +[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+ +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+24 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+30 +[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+ +[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+ +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+64 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+50 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+70 +[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+ +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+44 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+10 +sg5 \+ 0 +[0-9a-f ]+R_SPARC_TLS_DTPMOD64 +0+ +sg1 \+ 0 +[0-9a-f ]+R_SPARC_TLS_DTPOFF64 +0+ +sg1 \+ 0 +[0-9a-f ]+R_SPARC_TLS_TPOFF64 +0+4 +sg2 \+ 0 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+102380 +0+d00000015 R_SPARC_JMP_SLOT +0+ +__tls_get_addr \+ 0 +[0-9a-f ]+R_SPARC_JMP_SLOT +0+ +__tls_get_addr \+ 0 -Symbol table '.dynsym' contains 22 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +7 sg8 - +[0-9]+: 0+102060 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +7 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +7 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +7 sg5 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1 - +[0-9]+: 0+1008 +0 FUNC +GLOBAL DEFAULT +6 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +7 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +7 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +7 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +10 * +.* TLS +GLOBAL DEFAULT +7 sg8 +.* TLS +GLOBAL DEFAULT +7 sg3 +.* TLS +GLOBAL DEFAULT +7 sg4 +.* TLS +GLOBAL DEFAULT +7 sg5 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +7 sg1 +.* FUNC +GLOBAL DEFAULT +6 fn1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +7 sg2 +.* TLS +GLOBAL DEFAULT +7 sg6 +.* TLS +GLOBAL DEFAULT +7 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end Symbol table '.symtab' contains 55 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +2 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +12 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +13 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +14 * - +[0-9]+: 0+20 +0 TLS +LOCAL +DEFAULT +7 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL +DEFAULT +7 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL +DEFAULT +7 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL +DEFAULT +7 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL +DEFAULT +7 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL +DEFAULT +7 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL +DEFAULT +7 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL +DEFAULT +7 sl8 - +[0-9]+: 0+60 +0 TLS +LOCAL +HIDDEN +8 sH1 - +[0-9]+: 0+48 +0 TLS +LOCAL +HIDDEN +7 sh3 - +[0-9]+: 0+64 +0 TLS +LOCAL +HIDDEN +8 sH2 - +[0-9]+: 0+78 +0 TLS +LOCAL +HIDDEN +8 sH7 - +[0-9]+: 0+58 +0 TLS +LOCAL +HIDDEN +7 sh7 - +[0-9]+: 0+5c +0 TLS +LOCAL +HIDDEN +7 sh8 - +[0-9]+: 0+6c +0 TLS +LOCAL +HIDDEN +8 sH4 - +[0-9]+: 0+4c +0 TLS +LOCAL +HIDDEN +7 sh4 - +[0-9]+: 0+68 +0 TLS +LOCAL +HIDDEN +8 sH3 - +[0-9]+: 0+50 +0 TLS +LOCAL +HIDDEN +7 sh5 - +[0-9]+: 0+70 +0 TLS +LOCAL +HIDDEN +8 sH5 - +[0-9]+: 0+74 +0 TLS +LOCAL +HIDDEN +8 sH6 - +[0-9]+: 0+7c +0 TLS +LOCAL +HIDDEN +8 sH8 - +[0-9]+: 0+40 +0 TLS +LOCAL +HIDDEN +7 sh1 - +[0-9]+: 0+102190 +0 OBJECT +LOCAL HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: 0+44 +0 TLS +LOCAL +HIDDEN +7 sh2 - +[0-9]+: 0+54 +0 TLS +LOCAL +HIDDEN +7 sh6 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +7 sg8 - +[0-9]+: 0+102060 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +7 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +7 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +7 sg5 - +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_ - +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1 - +[0-9]+: 0+1008 +0 FUNC +GLOBAL DEFAULT +6 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +7 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +7 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +7 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end +.* NOTYPE +LOCAL +DEFAULT +UND * +.* SECTION LOCAL +DEFAULT +1 * +.* SECTION LOCAL +DEFAULT +2 * +.* SECTION LOCAL +DEFAULT +3 * +.* SECTION LOCAL +DEFAULT +4 * +.* SECTION LOCAL +DEFAULT +5 * +.* SECTION LOCAL +DEFAULT +6 * +.* SECTION LOCAL +DEFAULT +7 * +.* SECTION LOCAL +DEFAULT +8 * +.* SECTION LOCAL +DEFAULT +9 * +.* SECTION LOCAL +DEFAULT +10 * +.* SECTION LOCAL +DEFAULT +11 * +.* SECTION LOCAL +DEFAULT +12 * +.* SECTION LOCAL +DEFAULT +13 * +.* SECTION LOCAL +DEFAULT +14 * +.* TLS +LOCAL +DEFAULT +7 sl1 +.* TLS +LOCAL +DEFAULT +7 sl2 +.* TLS +LOCAL +DEFAULT +7 sl3 +.* TLS +LOCAL +DEFAULT +7 sl4 +.* TLS +LOCAL +DEFAULT +7 sl5 +.* TLS +LOCAL +DEFAULT +7 sl6 +.* TLS +LOCAL +DEFAULT +7 sl7 +.* TLS +LOCAL +DEFAULT +7 sl8 +.* TLS +LOCAL +HIDDEN +8 sH1 +.* OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC +.* TLS +LOCAL +HIDDEN +7 sh3 +.* TLS +LOCAL +HIDDEN +8 sH2 +.* TLS +LOCAL +HIDDEN +8 sH7 +.* OBJECT +LOCAL +HIDDEN +ABS _PROCEDURE_LINKAGE_TABLE_ +.* TLS +LOCAL +HIDDEN +7 sh7 +.* TLS +LOCAL +HIDDEN +7 sh8 +.* TLS +LOCAL +HIDDEN +8 sH4 +.* TLS +LOCAL +HIDDEN +7 sh4 +.* TLS +LOCAL +HIDDEN +8 sH3 +.* TLS +LOCAL +HIDDEN +7 sh5 +.* TLS +LOCAL +HIDDEN +8 sH5 +.* TLS +LOCAL +HIDDEN +8 sH6 +.* TLS +LOCAL +HIDDEN +8 sH8 +.* TLS +LOCAL +HIDDEN +7 sh1 +.* OBJECT +LOCAL HIDDEN +ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +LOCAL +HIDDEN +7 sh2 +.* TLS +LOCAL +HIDDEN +7 sh6 +.* TLS +GLOBAL DEFAULT +7 sg8 +.* TLS +GLOBAL DEFAULT +7 sg3 +.* TLS +GLOBAL DEFAULT +7 sg4 +.* TLS +GLOBAL DEFAULT +7 sg5 +.* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +7 sg1 +.* FUNC +GLOBAL DEFAULT +6 fn1 +.* NOTYPE +GLOBAL DEFAULT +ABS __bss_start +.* TLS +GLOBAL DEFAULT +7 sg2 +.* TLS +GLOBAL DEFAULT +7 sg6 +.* TLS +GLOBAL DEFAULT +7 sg7 +.* NOTYPE +GLOBAL DEFAULT +ABS _edata +.* NOTYPE +GLOBAL DEFAULT +ABS _end diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-srec/srec.exp binutils-2.16.91.0.3/ld/testsuite/ld-srec/srec.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-srec/srec.exp 2005-05-10 15:46:53.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-srec/srec.exp 2005-08-22 12:27:46.000000000 -0700 @@ -237,13 +237,6 @@ proc run_srec_test { test objs } { set flags "$flags -Ttext 0x1000" } - # The a29k compiled code calls V_SPILL and V_FILL. Since we don't - # need to run this code, but we don't have definitions for those - # functions, we just define them out. - if [istarget a29k*-*-*] { - set flags "$flags --defsym V_SPILL=0 --defsym V_FILL=0" - } - if [istarget sh64*-*-elf] { # This is what gcc passes to ld by default. set flags "-mshelf32" diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-undefined/weak-undef.exp binutils-2.16.91.0.3/ld/testsuite/ld-undefined/weak-undef.exp --- binutils-2.16.91.0.2/ld/testsuite/ld-undefined/weak-undef.exp 2005-06-22 13:53:35.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-undefined/weak-undef.exp 2005-08-22 12:27:46.000000000 -0700 @@ -46,6 +46,8 @@ if {! [istarget i?86-*-*]} { setup_xfail *-*-pe* } +setup_xfail hppa64-*-* pj-*-* + if {! [ld_assemble $as $srcdir/$subdir/weak-undef.s tmpdir/weak-undef.o]} then { # It's OK if .weak doesn't work on this target. unresolved $testname diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-x86-64/pcrel16.d binutils-2.16.91.0.3/ld/testsuite/ld-x86-64/pcrel16.d --- binutils-2.16.91.0.2/ld/testsuite/ld-x86-64/pcrel16.d 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-x86-64/pcrel16.d 2005-08-22 12:27:46.000000000 -0700 @@ -1,4 +1,15 @@ #name: PCREL16 overflow #source: ../ld-i386/pcrel16.s -#ld: -#error: .*relocation truncated to fit: R_X86_64_PC16 .* +#ld: -Ttext 0x0 +#objdump: -drj.text -m i8086 + +.*: +file format elf64-x86-64 + +Disassembly of section .text: + +0+ <_start>: + ... + 420: cd 42[ ]+int \$0x42 + 422: ca 02 00[ ]+lret \$0x2 + ... + f065: e9 b8 13[ ]+jmp 420 <_start\+0x420> diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-x86-64/tlsbin.rd binutils-2.16.91.0.3/ld/testsuite/ld-x86-64/tlsbin.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-x86-64/tlsbin.rd 2005-04-09 12:03:31.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-x86-64/tlsbin.rd 2005-08-22 12:27:46.000000000 -0700 @@ -56,96 +56,95 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: +Offset +Info +Type +Symbol's Value Symbol's Name \+ Addend -0+5013d0 0+100000012 R_X86_64_TPOFF64 +0+ sG5 \+ 0 -0+5013d8 0+300000012 R_X86_64_TPOFF64 +0+ sG2 \+ 0 -0+5013e0 0+600000012 R_X86_64_TPOFF64 +0+ sG6 \+ 0 -0+5013e8 0+700000012 R_X86_64_TPOFF64 +0+ sG1 \+ 0 +[0-9a-f ]+R_X86_64_TPOFF64 +0+ sG5 \+ 0 +[0-9a-f ]+R_X86_64_TPOFF64 +0+ sG2 \+ 0 +[0-9a-f ]+R_X86_64_TPOFF64 +0+ sG6 \+ 0 +[0-9a-f ]+R_X86_64_TPOFF64 +0+ sG1 \+ 0 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: +Offset +Info +Type +Symbol's Value Symbol's Name \+ Addend -0+[0-9a-f]+ 0+400000007 R_X86_64_JUMP_SLOT +0+[0-9a-f]+ __tls_get_addr \+ 0 +[0-9a-f ]+R_X86_64_JUMP_SLOT[0-9a-f ]+__tls_get_addr \+ 0 -Symbol table '.dynsym' contains 10 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG5 - +[0-9]+: 0+501290 +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG2 - +[0-9]+: 0+[0-9a-f]+ +0 FUNC +GLOBAL DEFAULT UND __tls_get_addr - +[0-9]+: 0+[0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG6 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG1 - +[0-9]+: 0+[0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: 0+[0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end +.* NOTYPE LOCAL DEFAULT UND * +.* TLS +GLOBAL DEFAULT UND sG5 +.* TLS +GLOBAL DEFAULT UND sG2 +.* FUNC +GLOBAL DEFAULT UND __tls_get_addr +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT UND sG6 +.* TLS +GLOBAL DEFAULT UND sG1 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end Symbol table '.symtab' contains 69 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +14 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +15 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +16 * - +[0-9]+: 0+20 +0 TLS +LOCAL DEFAULT +9 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL DEFAULT +9 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL DEFAULT +9 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL DEFAULT +9 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL DEFAULT +9 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL DEFAULT +9 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL DEFAULT +9 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL DEFAULT +9 sl8 - +[0-9]+: 0+80 +0 TLS +LOCAL DEFAULT +10 bl1 - +[0-9]+: 0+84 +0 TLS +LOCAL DEFAULT +10 bl2 - +[0-9]+: 0+88 +0 TLS +LOCAL DEFAULT +10 bl3 - +[0-9]+: 0+8c +0 TLS +LOCAL DEFAULT +10 bl4 - +[0-9]+: 0+90 +0 TLS +LOCAL DEFAULT +10 bl5 - +[0-9]+: 0+94 +0 TLS +LOCAL DEFAULT +10 bl6 - +[0-9]+: 0+98 +0 TLS +LOCAL DEFAULT +10 bl7 - +[0-9]+: 0+9c +0 TLS +LOCAL DEFAULT +10 bl8 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +9 sg8 - +[0-9]+: 0+7c +0 TLS +GLOBAL DEFAULT +10 bg8 - +[0-9]+: 0+74 +0 TLS +GLOBAL DEFAULT +10 bg6 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG5 - +[0-9]+: 0+68 +0 TLS +GLOBAL DEFAULT +10 bg3 - +[0-9]+: 0+501290 +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +9 sg3 - +[0-9]+: 0+48 +0 TLS +GLOBAL HIDDEN +9 sh3 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG2 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +9 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +9 sg5 - +[0-9]+: 0+70 +0 TLS +GLOBAL DEFAULT +10 bg5 - +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT UND __tls_get_addr - +[0-9]+: 0+58 +0 TLS +GLOBAL HIDDEN +9 sh7 - +[0-9]+: 0+5c +0 TLS +GLOBAL HIDDEN +9 sh8 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +9 sg1 - +[0-9]+: 0+40113c +0 FUNC +GLOBAL DEFAULT +8 _start - +[0-9]+: 0+4c +0 TLS +GLOBAL HIDDEN +9 sh4 - +[0-9]+: 0+78 +0 TLS +GLOBAL DEFAULT +10 bg7 - +[0-9]+: 0+50 +0 TLS +GLOBAL HIDDEN +9 sh5 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG6 - +[0-9]+: 0+401000 +0 FUNC +GLOBAL DEFAULT +8 fn2 - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +9 sg2 - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG1 - +[0-9]+: 0+40 +0 TLS +GLOBAL HIDDEN +9 sh1 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: 0+5013f0 +0 OBJECT GLOBAL HIDDEN 13 _GLOBAL_OFFSET_TABLE_ - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end - +[0-9]+: 0+44 +0 TLS +GLOBAL HIDDEN +9 sh2 - +[0-9]+: 0+54 +0 TLS +GLOBAL HIDDEN +9 sh6 - +[0-9]+: 0+64 +0 TLS +GLOBAL DEFAULT +10 bg2 - +[0-9]+: 0+60 +0 TLS +GLOBAL DEFAULT +10 bg1 - +[0-9]+: 0+6c +0 TLS +GLOBAL DEFAULT +10 bg4 +.* NOTYPE LOCAL DEFAULT UND * +.* SECTION LOCAL DEFAULT +1 * +.* SECTION LOCAL DEFAULT +2 * +.* SECTION LOCAL DEFAULT +3 * +.* SECTION LOCAL DEFAULT +4 * +.* SECTION LOCAL DEFAULT +5 * +.* SECTION LOCAL DEFAULT +6 * +.* SECTION LOCAL DEFAULT +7 * +.* SECTION LOCAL DEFAULT +8 * +.* SECTION LOCAL DEFAULT +9 * +.* SECTION LOCAL DEFAULT +10 * +.* SECTION LOCAL DEFAULT +11 * +.* SECTION LOCAL DEFAULT +12 * +.* SECTION LOCAL DEFAULT +13 * +.* SECTION LOCAL DEFAULT +14 * +.* SECTION LOCAL DEFAULT +15 * +.* SECTION LOCAL DEFAULT +16 * +.* TLS +LOCAL DEFAULT +9 sl1 +.* TLS +LOCAL DEFAULT +9 sl2 +.* TLS +LOCAL DEFAULT +9 sl3 +.* TLS +LOCAL DEFAULT +9 sl4 +.* TLS +LOCAL DEFAULT +9 sl5 +.* TLS +LOCAL DEFAULT +9 sl6 +.* TLS +LOCAL DEFAULT +9 sl7 +.* TLS +LOCAL DEFAULT +9 sl8 +.* TLS +LOCAL DEFAULT +10 bl1 +.* TLS +LOCAL DEFAULT +10 bl2 +.* TLS +LOCAL DEFAULT +10 bl3 +.* TLS +LOCAL DEFAULT +10 bl4 +.* TLS +LOCAL DEFAULT +10 bl5 +.* TLS +LOCAL DEFAULT +10 bl6 +.* TLS +LOCAL DEFAULT +10 bl7 +.* TLS +LOCAL DEFAULT +10 bl8 +.* OBJECT LOCAL HIDDEN +11 _DYNAMIC +.* OBJECT LOCAL HIDDEN +13 _GLOBAL_OFFSET_TABLE_ +.* TLS +GLOBAL DEFAULT +9 sg8 +.* TLS +GLOBAL DEFAULT +10 bg8 +.* TLS +GLOBAL DEFAULT +10 bg6 +.* TLS +GLOBAL DEFAULT UND sG5 +.* TLS +GLOBAL DEFAULT +10 bg3 +.* TLS +GLOBAL DEFAULT +9 sg3 +.* TLS +GLOBAL HIDDEN +9 sh3 +.* TLS +GLOBAL DEFAULT UND sG2 +.* TLS +GLOBAL DEFAULT +9 sg4 +.* TLS +GLOBAL DEFAULT +9 sg5 +.* TLS +GLOBAL DEFAULT +10 bg5 +.* FUNC +GLOBAL DEFAULT UND __tls_get_addr +.* TLS +GLOBAL HIDDEN +9 sh7 +.* TLS +GLOBAL HIDDEN +9 sh8 +.* TLS +GLOBAL DEFAULT +9 sg1 +.* FUNC +GLOBAL DEFAULT +8 _start +.* TLS +GLOBAL HIDDEN +9 sh4 +.* TLS +GLOBAL DEFAULT +10 bg7 +.* TLS +GLOBAL HIDDEN +9 sh5 +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT UND sG6 +.* FUNC +GLOBAL DEFAULT +8 fn2 +.* TLS +GLOBAL DEFAULT +9 sg2 +.* TLS +GLOBAL DEFAULT UND sG1 +.* TLS +GLOBAL HIDDEN +9 sh1 +.* TLS +GLOBAL DEFAULT +9 sg6 +.* TLS +GLOBAL DEFAULT +9 sg7 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end +.* TLS +GLOBAL HIDDEN +9 sh2 +.* TLS +GLOBAL HIDDEN +9 sh6 +.* TLS +GLOBAL DEFAULT +10 bg2 +.* TLS +GLOBAL DEFAULT +10 bg1 +.* TLS +GLOBAL DEFAULT +10 bg4 diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-x86-64/tlspic.dd binutils-2.16.91.0.3/ld/testsuite/ld-x86-64/tlspic.dd --- binutils-2.16.91.0.2/ld/testsuite/ld-x86-64/tlspic.dd 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-x86-64/tlspic.dd 2005-08-22 12:27:46.000000000 -0700 @@ -22,7 +22,7 @@ Disassembly of section .text: # -> R_X86_64_DTPMOD64 sg1 +1010: 66[ ]+data16 +1011: 66[ ]+data16 - +1012: 48 e8 20 f5 ff ff[ ]+rex64 callq [0-9a-f]+ <.*> + +1012: 48 e8 [0-9a-f ]+rex64 callq [0-9a-f]+ <.*> # -> R_X86_64_JUMP_SLOT __tls_get_addr +1018: 90[ ]+nop * +1019: 90[ ]+nop * @@ -43,7 +43,7 @@ Disassembly of section .text: # -> R_X86_64_DTPMOD64 [0 0x2000000000000000] +1038: 66[ ]+data16 +1039: 66[ ]+data16 - +103a: 48 e8 f8 f4 ff ff[ ]+rex64 callq [0-9a-f]+ <.*> + +103a: 48 e8 [0-9a-f ]+rex64 callq [0-9a-f]+ <.*> # -> R_X86_64_JUMP_SLOT __tls_get_addr +1040: 90[ ]+nop * +1041: 90[ ]+nop * @@ -64,7 +64,7 @@ Disassembly of section .text: # -> R_X86_64_DTPMOD64 [0 0x4000000000000000] +1060: 66[ ]+data16 +1061: 66[ ]+data16 - +1062: 48 e8 d0 f4 ff ff[ ]+rex64 callq [0-9a-f]+ <.*> + +1062: 48 e8 [0-9a-f ]+rex64 callq [0-9a-f]+ <.*> # -> R_X86_64_JUMP_SLOT __tls_get_addr +1068: 90[ ]+nop * +1069: 90[ ]+nop * @@ -85,7 +85,7 @@ Disassembly of section .text: # -> R_X86_64_DTPMOD64 [0 0x6000000000000000] +1088: 66[ ]+data16 +1089: 66[ ]+data16 - +108a: 48 e8 a8 f4 ff ff[ ]+rex64 callq [0-9a-f]+ <.*> + +108a: 48 e8 [0-9a-f ]+rex64 callq [0-9a-f]+ <.*> # -> R_X86_64_JUMP_SLOT __tls_get_addr +1090: 90[ ]+nop * +1091: 90[ ]+nop * @@ -103,7 +103,7 @@ Disassembly of section .text: # LD +10a8: 48 8d 3d b1 02 10 00[ ]+lea 1049265\(%rip\),%rdi +# 101360 <.*> # -> R_X86_64_DTPMOD64 [0 0x000000000000000] - +10af: e8 84 f4 ff ff[ ]+callq [0-9a-f]+ <.*> + +10af: e8 [0-9a-f ]+callq [0-9a-f]+ <.*> # -> R_X86_64_JUMP_SLOT __tls_get_addr +10b4: 90[ ]+nop * +10b5: 90[ ]+nop * @@ -118,7 +118,7 @@ Disassembly of section .text: # LD against hidden and local variables +10ca: 48 8d 3d 8f 02 10 00[ ]+lea 1049231\(%rip\),%rdi +# 101360 <.*> # -> R_X86_64_DTPMOD64 [0 0x000000000000000] - +10d1: e8 62 f4 ff ff[ ]+callq [0-9a-f]+ <.*> + +10d1: e8 [0-9a-f ]+callq [0-9a-f]+ <.*> # -> R_X86_64_JUMP_SLOT __tls_get_addr +10d6: 90[ ]+nop * +10d7: 90[ ]+nop * @@ -133,7 +133,7 @@ Disassembly of section .text: # LD against hidden but not local variables +10ec: 48 8d 3d 6d 02 10 00[ ]+lea 1049197\(%rip\),%rdi +# 101360 <.*> # -> R_X86_64_DTPMOD64 [0 0x000000000000000] - +10f3: e8 40 f4 ff ff[ ]+callq [0-9a-f]+ <.*> + +10f3: e8 [0-9a-f ]+callq [0-9a-f]+ <.*> # -> R_X86_64_JUMP_SLOT __tls_get_addr +10f8: 90[ ]+nop * +10f9: 90[ ]+nop * diff -uprN binutils-2.16.91.0.2/ld/testsuite/ld-x86-64/tlspic.rd binutils-2.16.91.0.3/ld/testsuite/ld-x86-64/tlspic.rd --- binutils-2.16.91.0.2/ld/testsuite/ld-x86-64/tlspic.rd 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/ld-x86-64/tlspic.rd 2005-08-22 12:27:46.000000000 -0700 @@ -50,100 +50,99 @@ Program Headers: Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend -0+101340 0+10 R_X86_64_DTPMOD64 +0+ -0+101350 0+12 R_X86_64_TPOFF64 +0+24 -0+101358 0+12 R_X86_64_TPOFF64 +0+30 -0+101360 0+10 R_X86_64_DTPMOD64 +0+ -0+101370 0+10 R_X86_64_DTPMOD64 +0+ -0+101380 0+12 R_X86_64_TPOFF64 +0+64 -0+1013a0 0+12 R_X86_64_TPOFF64 +0+50 -0+1013a8 0+12 R_X86_64_TPOFF64 +0+70 -0+1013b8 0+10 R_X86_64_DTPMOD64 +0+ -0+1013c8 0+12 R_X86_64_TPOFF64 +0+44 -0+101388 0+800000012 R_X86_64_TPOFF64 +0+10 sg5 \+ 0 -0+101390 0+a00000010 R_X86_64_DTPMOD64 +0+ sg1 \+ 0 -0+101398 0+a00000011 R_X86_64_DTPOFF64 +0+ sg1 \+ 0 -0+1013b0 0+d00000012 R_X86_64_TPOFF64 +0+4 sg2 \+ 0 +[0-9a-f ]+R_X86_64_DTPMOD64 +0+ +[0-9a-f ]+R_X86_64_TPOFF64 +0+24 +[0-9a-f ]+R_X86_64_TPOFF64 +0+30 +[0-9a-f ]+R_X86_64_DTPMOD64 +0+ +[0-9a-f ]+R_X86_64_DTPMOD64 +0+ +[0-9a-f ]+R_X86_64_TPOFF64 +0+64 +[0-9a-f ]+R_X86_64_TPOFF64 +0+50 +[0-9a-f ]+R_X86_64_TPOFF64 +0+70 +[0-9a-f ]+R_X86_64_DTPMOD64 +0+ +[0-9a-f ]+R_X86_64_TPOFF64 +0+44 +[0-9a-f ]+R_X86_64_TPOFF64 +0+10 sg5 \+ 0 +[0-9a-f ]+R_X86_64_DTPMOD64 +0+ sg1 \+ 0 +[0-9a-f ]+R_X86_64_DTPOFF64 +0+ sg1 \+ 0 +[0-9a-f ]+R_X86_64_TPOFF64 +0+4 sg2 \+ 0 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries: +Offset +Info +Type +Symbol's Value Symbol's Name \+ Addend -0+[0-9a-f]+ 0+900000007 R_X86_64_JUMP_SLOT +0+ __tls_get_addr \+ 0 +[0-9a-f ]+R_X86_64_JUMP_SLOT +0+ __tls_get_addr \+ 0 -Symbol table '.dynsym' contains 18 entries: +Symbol table '.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 * - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8 - +[0-9]+: 0+101210 +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +8 sg5 - +[0-9]+: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_addr - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +8 sg1 - +[0-9]+: 0+1000 +0 FUNC +GLOBAL DEFAULT +7 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +8 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end +.* NOTYPE LOCAL DEFAULT UND * +.* SECTION LOCAL DEFAULT +7 * +.* SECTION LOCAL DEFAULT +8 * +.* SECTION LOCAL DEFAULT +9 * +.* TLS +GLOBAL DEFAULT +8 sg8 +.* TLS +GLOBAL DEFAULT +8 sg3 +.* TLS +GLOBAL DEFAULT +8 sg4 +.* TLS +GLOBAL DEFAULT +8 sg5 +.* NOTYPE GLOBAL DEFAULT UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +8 sg1 +.* FUNC +GLOBAL DEFAULT +7 fn1 +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT +8 sg2 +.* TLS +GLOBAL DEFAULT +8 sg6 +.* TLS +GLOBAL DEFAULT +8 sg7 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end Symbol table '.symtab' contains 55 entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name - +[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +14 * - +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +15 * - +[0-9]+: 0+20 +0 TLS +LOCAL DEFAULT +8 sl1 - +[0-9]+: 0+24 +0 TLS +LOCAL DEFAULT +8 sl2 - +[0-9]+: 0+28 +0 TLS +LOCAL DEFAULT +8 sl3 - +[0-9]+: 0+2c +0 TLS +LOCAL DEFAULT +8 sl4 - +[0-9]+: 0+30 +0 TLS +LOCAL DEFAULT +8 sl5 - +[0-9]+: 0+34 +0 TLS +LOCAL DEFAULT +8 sl6 - +[0-9]+: 0+38 +0 TLS +LOCAL DEFAULT +8 sl7 - +[0-9]+: 0+3c +0 TLS +LOCAL DEFAULT +8 sl8 - +[0-9]+: 0+60 +0 TLS +LOCAL HIDDEN +9 sH1 - +[0-9]+: 0+48 +0 TLS +LOCAL HIDDEN +8 sh3 - +[0-9]+: 0+64 +0 TLS +LOCAL HIDDEN +9 sH2 - +[0-9]+: 0+78 +0 TLS +LOCAL HIDDEN +9 sH7 - +[0-9]+: 0+58 +0 TLS +LOCAL HIDDEN +8 sh7 - +[0-9]+: 0+5c +0 TLS +LOCAL HIDDEN +8 sh8 - +[0-9]+: 0+6c +0 TLS +LOCAL HIDDEN +9 sH4 - +[0-9]+: 0+4c +0 TLS +LOCAL HIDDEN +8 sh4 - +[0-9]+: 0+68 +0 TLS +LOCAL HIDDEN +9 sH3 - +[0-9]+: 0+50 +0 TLS +LOCAL HIDDEN +8 sh5 - +[0-9]+: 0+70 +0 TLS +LOCAL HIDDEN +9 sH5 - +[0-9]+: 0+74 +0 TLS +LOCAL HIDDEN +9 sH6 - +[0-9]+: 0+7c +0 TLS +LOCAL HIDDEN +9 sH8 - +[0-9]+: 0+40 +0 TLS +LOCAL HIDDEN +8 sh1 - +[0-9]+: 0+1013d0 +0 OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_ - +[0-9]+: 0+44 +0 TLS +LOCAL HIDDEN +8 sh2 - +[0-9]+: 0+54 +0 TLS +LOCAL HIDDEN +8 sh6 - +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8 - +[0-9]+: 0+101210 +0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC - +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3 - +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4 - +[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +8 sg5 - +[0-9]+: 0+ +0 NOTYPE GLOBAL DEFAULT UND __tls_get_addr - +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +8 sg1 - +[0-9]+: 0+1000 +0 FUNC +GLOBAL DEFAULT +7 fn1 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start - +[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +8 sg2 - +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6 - +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7 - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata - +[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end +.* NOTYPE LOCAL DEFAULT UND * +.* SECTION LOCAL DEFAULT +1 * +.* SECTION LOCAL DEFAULT +2 * +.* SECTION LOCAL DEFAULT +3 * +.* SECTION LOCAL DEFAULT +4 * +.* SECTION LOCAL DEFAULT +5 * +.* SECTION LOCAL DEFAULT +6 * +.* SECTION LOCAL DEFAULT +7 * +.* SECTION LOCAL DEFAULT +8 * +.* SECTION LOCAL DEFAULT +9 * +.* SECTION LOCAL DEFAULT +10 * +.* SECTION LOCAL DEFAULT +11 * +.* SECTION LOCAL DEFAULT +12 * +.* SECTION LOCAL DEFAULT +13 * +.* SECTION LOCAL DEFAULT +14 * +.* SECTION LOCAL DEFAULT +15 * +.* TLS +LOCAL DEFAULT +8 sl1 +.* TLS +LOCAL DEFAULT +8 sl2 +.* TLS +LOCAL DEFAULT +8 sl3 +.* TLS +LOCAL DEFAULT +8 sl4 +.* TLS +LOCAL DEFAULT +8 sl5 +.* TLS +LOCAL DEFAULT +8 sl6 +.* TLS +LOCAL DEFAULT +8 sl7 +.* TLS +LOCAL DEFAULT +8 sl8 +.* TLS +LOCAL HIDDEN +9 sH1 +.* OBJECT +LOCAL +HIDDEN +ABS _DYNAMIC +.* TLS +LOCAL HIDDEN +8 sh3 +.* TLS +LOCAL HIDDEN +9 sH2 +.* TLS +LOCAL HIDDEN +9 sH7 +.* TLS +LOCAL HIDDEN +8 sh7 +.* TLS +LOCAL HIDDEN +8 sh8 +.* TLS +LOCAL HIDDEN +9 sH4 +.* TLS +LOCAL HIDDEN +8 sh4 +.* TLS +LOCAL HIDDEN +9 sH3 +.* TLS +LOCAL HIDDEN +8 sh5 +.* TLS +LOCAL HIDDEN +9 sH5 +.* TLS +LOCAL HIDDEN +9 sH6 +.* TLS +LOCAL HIDDEN +9 sH8 +.* TLS +LOCAL HIDDEN +8 sh1 +.* OBJECT LOCAL HIDDEN ABS _GLOBAL_OFFSET_TABLE_ +.* TLS +LOCAL HIDDEN +8 sh2 +.* TLS +LOCAL HIDDEN +8 sh6 +.* TLS +GLOBAL DEFAULT +8 sg8 +.* TLS +GLOBAL DEFAULT +8 sg3 +.* TLS +GLOBAL DEFAULT +8 sg4 +.* TLS +GLOBAL DEFAULT +8 sg5 +.* NOTYPE GLOBAL DEFAULT UND __tls_get_addr +.* TLS +GLOBAL DEFAULT +8 sg1 +.* FUNC +GLOBAL DEFAULT +7 fn1 +.* NOTYPE GLOBAL DEFAULT ABS __bss_start +.* TLS +GLOBAL DEFAULT +8 sg2 +.* TLS +GLOBAL DEFAULT +8 sg6 +.* TLS +GLOBAL DEFAULT +8 sg7 +.* NOTYPE GLOBAL DEFAULT ABS _edata +.* NOTYPE GLOBAL DEFAULT ABS _end diff -uprN binutils-2.16.91.0.2/ld/testsuite/lib/ld-lib.exp binutils-2.16.91.0.3/ld/testsuite/lib/ld-lib.exp --- binutils-2.16.91.0.2/ld/testsuite/lib/ld-lib.exp 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/ld/testsuite/lib/ld-lib.exp 2005-08-22 12:27:46.000000000 -0700 @@ -226,8 +226,11 @@ proc default_ld_compile { cc source obje # based on the name of the compiler. set ccexe $cc set ccparm [string first " " $cc] + set ccflags "" if { $ccparm > 0 } then { + set ccflags [string range $cc $ccparm end] set ccexe [string range $cc 0 $ccparm] + set cc $ccexe } set ccexe [string replace $ccexe 0 [string last "/" $ccexe] ""] if {[string match "*gcc*" $ccexe] || [string match "*++*" $ccexe]} then { @@ -238,9 +241,9 @@ proc default_ld_compile { cc source obje append flags " [board_info [target_info name] multilib_flags]" } - verbose -log "$cc $flags -c $source -o $object" + verbose -log "$cc $flags $ccflags -c $source -o $object" - catch "exec $cc $flags -c $source -o $object" exec_output + catch "exec $cc $flags $ccflags -c $source -o $object" exec_output set exec_output [prune_warnings $exec_output] if [string match "" $exec_output] then { if {![file exists $object]} then { @@ -1263,17 +1266,18 @@ if ![string length [info proc prune_warn } } -# List contains test-items with 3 items followed by 1 lists, 2 items +# targets_to_xfail is a list of target triplets to be xfailed. +# ldtests contains test-items with 3 items followed by 1 lists, 2 items # and one optional item: -# 0:name -# 1:ld options -# 2:assembler options -# 3:filenames of assembler files -# 4:name of output file -# 5:expected output -# 6:compiler flags (optional) +# 0:name +# 1:ld options +# 2:assembler options +# 3:filenames of assembler files +# 4:name of output file +# 5:expected output +# 6:compiler flags (optional) -proc run_ld_link_exec_tests { ldtests } { +proc run_ld_link_exec_tests { targets_to_xfail ldtests } { global ld global as global srcdir @@ -1284,6 +1288,9 @@ proc run_ld_link_exec_tests { ldtests } global errcnt foreach testitem $ldtests { + foreach target $targets_to_xfail { + setup_xfail $target + } set testname [lindex $testitem 0] set ld_options [lindex $testitem 1] set as_options [lindex $testitem 2] diff -uprN binutils-2.16.91.0.2/libiberty/ChangeLog binutils-2.16.91.0.3/libiberty/ChangeLog --- binutils-2.16.91.0.2/libiberty/ChangeLog 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/ChangeLog 2005-08-22 12:27:46.000000000 -0700 @@ -1,3 +1,49 @@ +2005-08-17 Mark Kettenis + + * floatformat.c (floatformat_always_valid): Change type of last + argument to `void *'. + (floatformat_i387_ext_is_valid): Likewise. + (floatformat_to_double): Change type of second argument to `const + void *'. + (floatformat_from_double): Change type of last argument to `void + *'. + (floatformat_is_valid): Change type of last argument to `const + void *'. + (ieee_test): Remove redundant casts. + +2005-08-17 Kelley Cook + + * strverscmp.c: Update FSF address. + * testsuite/Makefile.in: Likewise. + * testsuite/test-demangle.c: Likewise. + * testsuite/test-pexecute.c: Likewise. + +2005-07-23 Kaveh R. Ghazi + + * getopt.c: Include ansidecl.h before system headers. + +2005-07-22 Ben Elliston + + * getopt.c: Include "ansidecl.h". + (_getopt_initialize): Mark argc and argv parameters as unused. + +2005-07-22 Ben Elliston + + * regex.c (regcomp): Change type of `i' from unsigned to int. + +2005-07-22 Ben Elliston + + Recover patch lost in the sourceware repository: + 2005-07-09 Ben Elliston + * memcpy.c: Remove ANSI_PROTOTYPES conditional code. + * memmove.c: Likewise. + * objalloc.c: Likewise. + +2005-07-22 Ben Elliston + + * configure.ac: Check for a getopt(3) declaration. + * configure, config.in: Regenerate. + 2005-07-15 Ben Elliston * regex.c (TRANSLATE): Cast rhs of ternary expression to char. diff -uprN binutils-2.16.91.0.2/libiberty/config.in binutils-2.16.91.0.3/libiberty/config.in --- binutils-2.16.91.0.2/libiberty/config.in 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/config.in 2005-08-22 12:27:46.000000000 -0700 @@ -56,6 +56,10 @@ */ #undef HAVE_DECL_GETENV +/* Define to 1 if you have the declaration of `getopt', and to 0 if you don't. + */ +#undef HAVE_DECL_GETOPT + /* Define to 1 if you have the declaration of `malloc', and to 0 if you don't. */ #undef HAVE_DECL_MALLOC diff -uprN binutils-2.16.91.0.2/libiberty/configure binutils-2.16.91.0.3/libiberty/configure --- binutils-2.16.91.0.2/libiberty/configure 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/configure 2005-08-22 12:27:46.000000000 -0700 @@ -957,7 +957,7 @@ esac else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi - cd $ac_popdir + cd "$ac_popdir" done fi @@ -2330,8 +2330,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2389,8 +2388,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2506,8 +2504,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2561,8 +2558,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2607,8 +2603,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2652,8 +2647,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3109,8 +3103,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3170,8 +3163,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3247,8 +3239,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3290,8 +3281,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3348,8 +3338,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3721,8 +3710,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3786,8 +3774,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3848,8 +3835,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3930,8 +3916,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4160,8 +4145,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4223,8 +4207,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4264,8 +4247,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4321,8 +4303,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4362,8 +4343,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4427,8 +4407,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4459,10 +4438,8 @@ See \`config.log' for more details." >&2 esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF @@ -4575,8 +4552,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4642,8 +4618,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4689,8 +4664,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4736,8 +4710,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5027,8 +5000,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5270,8 +5242,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5335,8 +5306,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5405,8 +5375,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5475,8 +5444,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5545,8 +5513,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5615,8 +5582,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -5685,8 +5651,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6112,8 +6077,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6172,8 +6136,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6273,8 +6236,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6412,8 +6374,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6634,8 +6595,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6980,8 +6940,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7092,8 +7051,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7162,8 +7120,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7228,8 +7185,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7325,8 +7281,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7390,8 +7345,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7460,8 +7414,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7530,8 +7483,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7600,8 +7552,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7670,8 +7621,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7740,8 +7690,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7812,8 +7761,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7882,8 +7830,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -7920,6 +7867,75 @@ _ACEOF fi +echo "$as_me:$LINENO: checking whether getopt is declared" >&5 +echo $ECHO_N "checking whether getopt is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_getopt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef getopt + char *p = (char *) getopt; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_getopt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_getopt=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_getopt" >&5 +echo "${ECHO_T}$ac_cv_have_decl_getopt" >&6 +if test $ac_cv_have_decl_getopt = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETOPT 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETOPT 0 +_ACEOF + + +fi echo "$as_me:$LINENO: checking whether malloc is declared" >&5 echo $ECHO_N "checking whether malloc is declared... $ECHO_C" >&6 if test "${ac_cv_have_decl_malloc+set}" = set; then @@ -7952,8 +7968,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8022,8 +8037,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8092,8 +8106,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8164,8 +8177,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8248,8 +8260,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_c cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8421,8 +8432,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -9610,11 +9620,6 @@ esac *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ @@ -9653,6 +9658,12 @@ echo "$as_me: error: cannot find input f fi;; esac done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub diff -uprN binutils-2.16.91.0.2/libiberty/configure.ac binutils-2.16.91.0.3/libiberty/configure.ac --- binutils-2.16.91.0.2/libiberty/configure.ac 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/configure.ac 2005-08-22 12:27:46.000000000 -0700 @@ -599,7 +599,7 @@ if test -z "${setobjs}"; then AC_CHECK_FUNCS($checkfuncs) AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf]) - AC_CHECK_DECLS([calloc, getenv, malloc, realloc, sbrk]) + AC_CHECK_DECLS([calloc, getenv, getopt, malloc, realloc, sbrk]) AC_CHECK_DECLS([strverscmp]) libiberty_NEED_DECLARATION(canonicalize_file_name) fi diff -uprN binutils-2.16.91.0.2/libiberty/floatformat.c binutils-2.16.91.0.3/libiberty/floatformat.c --- binutils-2.16.91.0.2/libiberty/floatformat.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/floatformat.c 2005-08-22 12:27:46.000000000 -0700 @@ -1,5 +1,6 @@ /* IEEE floating point support routines, for GDB, the GNU Debugger. - Copyright (C) 1991, 1994, 1999, 2000, 2003 Free Software Foundation, Inc. + Copyright 1991, 1994, 1999, 2000, 2003, 2005 + Free Software Foundation, Inc. This file is part of GDB. @@ -52,11 +53,11 @@ static unsigned long get_field (const un unsigned int, unsigned int); static int floatformat_always_valid (const struct floatformat *fmt, - const char *from); + const void *from); static int floatformat_always_valid (const struct floatformat *fmt ATTRIBUTE_UNUSED, - const char *from ATTRIBUTE_UNUSED) + const void *from ATTRIBUTE_UNUSED) { return 1; } @@ -107,23 +108,24 @@ const struct floatformat floatformat_iee floatformat_always_valid }; -static int floatformat_i387_ext_is_valid (const struct floatformat *fmt, const char *from); +static int floatformat_i387_ext_is_valid (const struct floatformat *fmt, + const void *from); static int -floatformat_i387_ext_is_valid (const struct floatformat *fmt, const char *from) +floatformat_i387_ext_is_valid (const struct floatformat *fmt, const void *from) { /* In the i387 double-extended format, if the exponent is all ones, then the integer bit must be set. If the exponent is neither 0 nor ~0, the intbit must also be set. Only if the exponent is zero can it be zero, and then it must be zero. */ unsigned long exponent, int_bit; - const unsigned char *ufrom = (const unsigned char *) from; - + const unsigned char *ufrom = from; + exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->exp_start, fmt->exp_len); int_bit = get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->man_start, 1); - + if ((exponent == 0) != (int_bit == 0)) return 0; else @@ -267,9 +269,9 @@ get_field (const unsigned char *data, en void floatformat_to_double (const struct floatformat *fmt, - const char *from, double *to) + const void *from, double *to) { - const unsigned char *ufrom = (const unsigned char *)from; + const unsigned char *ufrom = from; double dto; long exponent; unsigned long mant; @@ -438,14 +440,14 @@ put_field (unsigned char *data, enum flo void floatformat_from_double (const struct floatformat *fmt, - const double *from, char *to) + const double *from, void *to) { double dfrom; int exponent; double mant; unsigned int mant_bits, mant_off; int mant_bits_left; - unsigned char *uto = (unsigned char *)to; + unsigned char *uto = to; dfrom = *from; memset (uto, 0, fmt->totalsize / FLOATFORMAT_CHAR_BIT); @@ -533,7 +535,7 @@ floatformat_from_double (const struct fl /* Return non-zero iff the data at FROM is a valid number in format FMT. */ int -floatformat_is_valid (const struct floatformat *fmt, const char *from) +floatformat_is_valid (const struct floatformat *fmt, const void *from) { return fmt->is_valid (fmt, from); } @@ -550,15 +552,13 @@ ieee_test (double n) { double result; - floatformat_to_double (&floatformat_ieee_double_little, (char *) &n, - &result); + floatformat_to_double (&floatformat_ieee_double_little, &n, &result); if ((n != result && (! isnan (n) || ! isnan (result))) || (n < 0 && result >= 0) || (n >= 0 && result < 0)) printf ("Differ(to): %.20g -> %.20g\n", n, result); - floatformat_from_double (&floatformat_ieee_double_little, &n, - (char *) &result); + floatformat_from_double (&floatformat_ieee_double_little, &n, &result); if ((n != result && (! isnan (n) || ! isnan (result))) || (n < 0 && result >= 0) || (n >= 0 && result < 0)) diff -uprN binutils-2.16.91.0.2/libiberty/getopt.c binutils-2.16.91.0.3/libiberty/getopt.c --- binutils-2.16.91.0.2/libiberty/getopt.c 2005-06-22 13:53:36.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/getopt.c 2005-08-22 12:27:46.000000000 -0700 @@ -3,8 +3,8 @@ "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! - Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98 - Free Software Foundation, Inc. + Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, + 1996, 1997, 1998, 2005 Free Software Foundation, Inc. NOTE: This source is derived from an old version taken from the GNU C Library (glibc). @@ -42,6 +42,7 @@ # endif #endif +#include "ansidecl.h" #include /* Comment out all this code if we are using the GNU C Library, and are not @@ -397,7 +398,9 @@ exchange (char **argv) static const char *_getopt_initialize (int, char *const *, const char *); #endif static const char * -_getopt_initialize (int argc, char *const *argv, const char *optstring) +_getopt_initialize (int argc ATTRIBUTE_UNUSED, + char *const *argv ATTRIBUTE_UNUSED, + const char *optstring) { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped diff -uprN binutils-2.16.91.0.2/libiberty/memcpy.c binutils-2.16.91.0.3/libiberty/memcpy.c --- binutils-2.16.91.0.2/libiberty/memcpy.c 2005-04-09 12:03:32.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/memcpy.c 2005-08-22 12:27:46.000000000 -0700 @@ -13,11 +13,7 @@ Copies @var{length} bytes from memory re */ #include -#ifdef ANSI_PROTOTYPES #include -#else -#define size_t unsigned long -#endif void bcopy (const void*, void*, size_t); diff -uprN binutils-2.16.91.0.2/libiberty/memmove.c binutils-2.16.91.0.3/libiberty/memmove.c --- binutils-2.16.91.0.2/libiberty/memmove.c 2005-04-09 12:03:32.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/memmove.c 2005-08-22 12:27:46.000000000 -0700 @@ -13,11 +13,7 @@ Copies @var{count} bytes from memory are */ #include -#ifdef ANSI_PROTOTYPES #include -#else -#define size_t unsigned long -#endif void bcopy (const void*, void*, size_t); diff -uprN binutils-2.16.91.0.2/libiberty/objalloc.c binutils-2.16.91.0.3/libiberty/objalloc.c --- binutils-2.16.91.0.2/libiberty/objalloc.c 2005-06-22 13:53:36.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/objalloc.c 2005-08-22 12:27:46.000000000 -0700 @@ -30,10 +30,8 @@ Boston, MA 02110-1301, USA. */ #include #else -#ifdef ANSI_PROTOTYPES /* Get a definition for size_t. */ #include -#endif #ifdef HAVE_STDLIB_H #include diff -uprN binutils-2.16.91.0.2/libiberty/regex.c binutils-2.16.91.0.3/libiberty/regex.c --- binutils-2.16.91.0.2/libiberty/regex.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/regex.c 2005-08-22 12:27:46.000000000 -0700 @@ -7923,7 +7923,7 @@ regcomp (regex_t *preg, const char *patt if (cflags & REG_ICASE) { - unsigned i; + int i; preg->translate = (RE_TRANSLATE_TYPE) malloc (CHAR_SET_SIZE @@ -7933,7 +7933,7 @@ regcomp (regex_t *preg, const char *patt /* Map uppercase characters to corresponding lowercase ones. */ for (i = 0; i < CHAR_SET_SIZE; i++) - preg->translate[i] = ISUPPER (i) ? TOLOWER (i) : (int) i; + preg->translate[i] = ISUPPER (i) ? TOLOWER (i) : i; } else preg->translate = NULL; diff -uprN binutils-2.16.91.0.2/libiberty/strverscmp.c binutils-2.16.91.0.3/libiberty/strverscmp.c --- binutils-2.16.91.0.2/libiberty/strverscmp.c 2005-06-22 13:53:36.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/strverscmp.c 2005-08-22 12:27:46.000000000 -0700 @@ -15,8 +15,8 @@ You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA. */ #include "libiberty.h" #include "safe-ctype.h" diff -uprN binutils-2.16.91.0.2/libiberty/testsuite/Makefile.in binutils-2.16.91.0.3/libiberty/testsuite/Makefile.in --- binutils-2.16.91.0.2/libiberty/testsuite/Makefile.in 2005-04-09 12:03:33.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/testsuite/Makefile.in 2005-08-22 12:27:46.000000000 -0700 @@ -16,8 +16,8 @@ # # You should have received a copy of the GNU Library General Public # License along with libiberty; see the file COPYING.LIB. If not, -# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # This file was written by Tom Tromey . diff -uprN binutils-2.16.91.0.2/libiberty/testsuite/test-demangle.c binutils-2.16.91.0.3/libiberty/testsuite/test-demangle.c --- binutils-2.16.91.0.2/libiberty/testsuite/test-demangle.c 2004-04-12 12:56:38.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/testsuite/test-demangle.c 2005-08-22 12:27:46.000000000 -0700 @@ -16,7 +16,7 @@ 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. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff -uprN binutils-2.16.91.0.2/libiberty/testsuite/test-pexecute.c binutils-2.16.91.0.3/libiberty/testsuite/test-pexecute.c --- binutils-2.16.91.0.2/libiberty/testsuite/test-pexecute.c 2005-04-09 12:03:33.000000000 -0700 +++ binutils-2.16.91.0.3/libiberty/testsuite/test-pexecute.c 2005-08-22 12:27:46.000000000 -0700 @@ -16,7 +16,7 @@ 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. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff -uprN binutils-2.16.91.0.2/Makefile.def binutils-2.16.91.0.3/Makefile.def --- binutils-2.16.91.0.2/Makefile.def 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/Makefile.def 2005-08-22 12:27:41.000000000 -0700 @@ -223,6 +223,7 @@ flags_to_pass = { flag= DLLTOOL_FOR_TARG flags_to_pass = { flag= GCJ_FOR_TARGET ; }; flags_to_pass = { flag= GFORTRAN_FOR_TARGET ; }; flags_to_pass = { flag= LD_FOR_TARGET ; }; +flags_to_pass = { flag= LDFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= LIBCFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= LIBCXXFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= NM_FOR_TARGET ; }; diff -uprN binutils-2.16.91.0.2/Makefile.in binutils-2.16.91.0.3/Makefile.in --- binutils-2.16.91.0.2/Makefile.in 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/Makefile.in 2005-08-22 12:27:41.000000000 -0700 @@ -351,8 +351,8 @@ CONFIGURED_AS_FOR_TARGET=@CONFIGURED_AS_ USUAL_AS_FOR_TARGET = ` \ if [ -f $$r/$(HOST_SUBDIR)/gas/as-new ] ; then \ echo $$r/$(HOST_SUBDIR)/gas/as-new ; \ - elif [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ]; then \ - $(CC_FOR_TARGET) -print-prog-name=as ; \ + elif [ -f $$r/$(HOST_SUBDIR)/gcc/as ]; then \ + echo $$r/$(HOST_SUBDIR)/gcc/as ; \ else \ if [ '$(host)' = '$(target)' ] ; then \ echo $(AS); \ @@ -361,28 +361,93 @@ USUAL_AS_FOR_TARGET = ` \ fi; \ fi` -CC_FOR_TARGET = @CC_FOR_TARGET@ +CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CONFIGURED_CC_FOR_TARGET=@CONFIGURED_CC_FOR_TARGET@ +USUAL_CC_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ] ; then \ + echo $$r/$(HOST_SUBDIR)/gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/ ; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(CC); \ + else \ + echo $(CONFIGURED_CC_FOR_TARGET) ; \ + fi; \ + fi` + # During gcc bootstrap, if we use some random cc for stage1 then # CFLAGS will be just -g. We want to ensure that TARGET libraries # (which we know are built with gcc) are built with optimizations so # prepend -O2 when setting CFLAGS_FOR_TARGET. -CFLAGS_FOR_TARGET = -O2 $(CFLAGS) +CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) +SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ + # If GCC_FOR_TARGET is not overriden on the command line, then this # variable is passed down to the gcc Makefile, where it is used to # build libgcc2.a. We define it here so that it can itself be # overridden on the command line. GCC_FOR_TARGET=@GCC_FOR_TARGET@ +CONFIGURED_GCC_FOR_TARGET=@CONFIGURED_GCC_FOR_TARGET@ USUAL_GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) \ $$r/$(HOST_SUBDIR)/gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/ $(FLAGS_FOR_TARGET) LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) -CXX_FOR_TARGET = @CXX_FOR_TARGET@ -RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@ -CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ -RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ -CXXFLAGS_FOR_TARGET = $(CXXFLAGS) +CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CONFIGURED_CXX_FOR_TARGET=@CONFIGURED_CXX_FOR_TARGET@ +USUAL_CXX_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/g++ ] ; then \ + (echo $$r/$(HOST_SUBDIR)/gcc/g++ -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++; \ + test ! -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags || $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes; \ + echo -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs) | tr '\015\012' ' '; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(CXX); \ + else \ + echo $(CONFIGURED_CXX_FOR_TARGET) ; \ + fi; \ + fi` + +RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) +USUAL_RAW_CXX_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ] ; then \ + echo $$r/$(HOST_SUBDIR)/gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(CXX); \ + else \ + echo $(CONFIGURED_CXX_FOR_TARGET) ; \ + fi; \ + fi` + +CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates +GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CONFIGURED_GCJ_FOR_TARGET=@CONFIGURED_GCJ_FOR_TARGET@ +USUAL_GCJ_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/gcj ] ; then \ + echo $$r/$(HOST_SUBDIR)/gcc/gcj -B$$r/$(HOST_SUBDIR)/gcc ; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(GCJ); \ + else \ + echo $(CONFIGURED_GCJ_FOR_TARGET) ; \ + fi; \ + fi` + +GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CONFIGURED_GFORTRAN_FOR_TARGET=@CONFIGURED_GFORTRAN_FOR_TARGET@ +USUAL_GFORTRAN_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/gfortran ] ; then \ + echo $$r/$(HOST_SUBDIR)/gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc ; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(GFORTRAN); \ + else \ + echo $(CONFIGURED_GFORTRAN_FOR_TARGET) ; \ + fi; \ + fi` + + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ CONFIGURED_DLLTOOL_FOR_TARGET=@CONFIGURED_DLLTOOL_FOR_TARGET@ USUAL_DLLTOOL_FOR_TARGET = ` \ @@ -396,16 +461,13 @@ USUAL_DLLTOOL_FOR_TARGET = ` \ fi; \ fi` -GCJ_FOR_TARGET = @GCJ_FOR_TARGET@ -GFORTRAN_FOR_TARGET = @GFORTRAN_FOR_TARGET@ - LD_FOR_TARGET=@LD_FOR_TARGET@ CONFIGURED_LD_FOR_TARGET=@CONFIGURED_LD_FOR_TARGET@ USUAL_LD_FOR_TARGET = ` \ if [ -f $$r/$(HOST_SUBDIR)/ld/ld-new ] ; then \ echo $$r/$(HOST_SUBDIR)/ld/ld-new ; \ - elif [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ]; then \ - $(CC_FOR_TARGET) -print-prog-name=ld ; \ + elif [ -f $$r/$(HOST_SUBDIR)/gcc/collect-ld ]; then \ + echo $$r/$(HOST_SUBDIR)/gcc/collect-ld ; \ else \ if [ '$(host)' = '$(target)' ] ; then \ echo $(LD); \ @@ -421,8 +483,8 @@ CONFIGURED_NM_FOR_TARGET=@CONFIGURED_NM_ USUAL_NM_FOR_TARGET = ` \ if [ -f $$r/$(HOST_SUBDIR)/binutils/nm-new ] ; then \ echo $$r/$(HOST_SUBDIR)/binutils/nm-new ; \ - elif [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ]; then \ - $(CC_FOR_TARGET) -print-prog-name=nm ; \ + elif [ -f $$r/$(HOST_SUBDIR)/gcc/nm ]; then \ + echo $$r/$(HOST_SUBDIR)/gcc/nm ; \ else \ if [ '$(host)' = '$(target)' ] ; then \ echo $(NM); \ @@ -574,6 +636,7 @@ BASE_FLAGS_TO_PASS = \ "GCJ_FOR_TARGET=$(GCJ_FOR_TARGET)" \ "GFORTRAN_FOR_TARGET=$(GFORTRAN_FOR_TARGET)" \ "LD_FOR_TARGET=$(LD_FOR_TARGET)" \ + "LDFLAGS_FOR_TARGET=$(LDFLAGS_FOR_TARGET)" \ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ "LIBCXXFLAGS_FOR_TARGET=$(LIBCXXFLAGS_FOR_TARGET)" \ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ @@ -582,16 +645,8 @@ BASE_FLAGS_TO_PASS = \ "CONFIG_SHELL=$(SHELL)" \ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" -# For any flags above that may contain shell code that varies from one -# target library to another. When doing recursive invocations of the -# top-level Makefile, we don't want the outer make to evaluate them, -# so we pass these variables down unchanged. They must not contain -# single nor double quotes. -RECURSE_FLAGS = \ - CXX_FOR_TARGET='$(CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \ - RAW_CXX_FOR_TARGET='$(RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \ - -RECURSE_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) +# We leave this in just in case, but it is not needed anymore. +RECURSE_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) # Flags to pass down to most sub-makes, in which we're building with # the host environment. @@ -632,6 +687,7 @@ EXTRA_TARGET_FLAGS = \ 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ 'LD=$$(LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \ 'NM=$$(NM_FOR_TARGET)' \ diff -uprN binutils-2.16.91.0.2/Makefile.tpl binutils-2.16.91.0.3/Makefile.tpl --- binutils-2.16.91.0.2/Makefile.tpl 2005-07-20 12:27:26.000000000 -0700 +++ binutils-2.16.91.0.3/Makefile.tpl 2005-08-22 12:27:41.000000000 -0700 @@ -354,8 +354,8 @@ CONFIGURED_AS_FOR_TARGET=@CONFIGURED_AS_ USUAL_AS_FOR_TARGET = ` \ if [ -f $$r/$(HOST_SUBDIR)/gas/as-new ] ; then \ echo $$r/$(HOST_SUBDIR)/gas/as-new ; \ - elif [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ]; then \ - $(CC_FOR_TARGET) -print-prog-name=as ; \ + elif [ -f $$r/$(HOST_SUBDIR)/gcc/as ]; then \ + echo $$r/$(HOST_SUBDIR)/gcc/as ; \ else \ if [ '$(host)' = '$(target)' ] ; then \ echo $(AS); \ @@ -364,28 +364,93 @@ USUAL_AS_FOR_TARGET = ` \ fi; \ fi` -CC_FOR_TARGET = @CC_FOR_TARGET@ +CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CONFIGURED_CC_FOR_TARGET=@CONFIGURED_CC_FOR_TARGET@ +USUAL_CC_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ] ; then \ + echo $$r/$(HOST_SUBDIR)/gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/ ; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(CC); \ + else \ + echo $(CONFIGURED_CC_FOR_TARGET) ; \ + fi; \ + fi` + # During gcc bootstrap, if we use some random cc for stage1 then # CFLAGS will be just -g. We want to ensure that TARGET libraries # (which we know are built with gcc) are built with optimizations so # prepend -O2 when setting CFLAGS_FOR_TARGET. -CFLAGS_FOR_TARGET = -O2 $(CFLAGS) +CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) +SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ + # If GCC_FOR_TARGET is not overriden on the command line, then this # variable is passed down to the gcc Makefile, where it is used to # build libgcc2.a. We define it here so that it can itself be # overridden on the command line. GCC_FOR_TARGET=@GCC_FOR_TARGET@ +CONFIGURED_GCC_FOR_TARGET=@CONFIGURED_GCC_FOR_TARGET@ USUAL_GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) \ $$r/$(HOST_SUBDIR)/gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/ $(FLAGS_FOR_TARGET) LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) -CXX_FOR_TARGET = @CXX_FOR_TARGET@ -RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@ -CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ -RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ -CXXFLAGS_FOR_TARGET = $(CXXFLAGS) +CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CONFIGURED_CXX_FOR_TARGET=@CONFIGURED_CXX_FOR_TARGET@ +USUAL_CXX_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/g++ ] ; then \ + (echo $$r/$(HOST_SUBDIR)/gcc/g++ -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++; \ + test ! -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags || $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes; \ + echo -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs) | tr '\015\012' ' '; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(CXX); \ + else \ + echo $(CONFIGURED_CXX_FOR_TARGET) ; \ + fi; \ + fi` + +RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) +USUAL_RAW_CXX_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ] ; then \ + echo $$r/$(HOST_SUBDIR)/gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(CXX); \ + else \ + echo $(CONFIGURED_CXX_FOR_TARGET) ; \ + fi; \ + fi` + +CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates +GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CONFIGURED_GCJ_FOR_TARGET=@CONFIGURED_GCJ_FOR_TARGET@ +USUAL_GCJ_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/gcj ] ; then \ + echo $$r/$(HOST_SUBDIR)/gcc/gcj -B$$r/$(HOST_SUBDIR)/gcc ; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(GCJ); \ + else \ + echo $(CONFIGURED_GCJ_FOR_TARGET) ; \ + fi; \ + fi` + +GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CONFIGURED_GFORTRAN_FOR_TARGET=@CONFIGURED_GFORTRAN_FOR_TARGET@ +USUAL_GFORTRAN_FOR_TARGET = ` \ + if [ -f $$r/$(HOST_SUBDIR)/gcc/gfortran ] ; then \ + echo $$r/$(HOST_SUBDIR)/gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc ; \ + else \ + if [ '$(host)' = '$(target)' ] ; then \ + echo $(GFORTRAN); \ + else \ + echo $(CONFIGURED_GFORTRAN_FOR_TARGET) ; \ + fi; \ + fi` + + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ CONFIGURED_DLLTOOL_FOR_TARGET=@CONFIGURED_DLLTOOL_FOR_TARGET@ USUAL_DLLTOOL_FOR_TARGET = ` \ @@ -399,16 +464,13 @@ USUAL_DLLTOOL_FOR_TARGET = ` \ fi; \ fi` -GCJ_FOR_TARGET = @GCJ_FOR_TARGET@ -GFORTRAN_FOR_TARGET = @GFORTRAN_FOR_TARGET@ - LD_FOR_TARGET=@LD_FOR_TARGET@ CONFIGURED_LD_FOR_TARGET=@CONFIGURED_LD_FOR_TARGET@ USUAL_LD_FOR_TARGET = ` \ if [ -f $$r/$(HOST_SUBDIR)/ld/ld-new ] ; then \ echo $$r/$(HOST_SUBDIR)/ld/ld-new ; \ - elif [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ]; then \ - $(CC_FOR_TARGET) -print-prog-name=ld ; \ + elif [ -f $$r/$(HOST_SUBDIR)/gcc/collect-ld ]; then \ + echo $$r/$(HOST_SUBDIR)/gcc/collect-ld ; \ else \ if [ '$(host)' = '$(target)' ] ; then \ echo $(LD); \ @@ -424,8 +486,8 @@ CONFIGURED_NM_FOR_TARGET=@CONFIGURED_NM_ USUAL_NM_FOR_TARGET = ` \ if [ -f $$r/$(HOST_SUBDIR)/binutils/nm-new ] ; then \ echo $$r/$(HOST_SUBDIR)/binutils/nm-new ; \ - elif [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ]; then \ - $(CC_FOR_TARGET) -print-prog-name=nm ; \ + elif [ -f $$r/$(HOST_SUBDIR)/gcc/nm ]; then \ + echo $$r/$(HOST_SUBDIR)/gcc/nm ; \ else \ if [ '$(host)' = '$(target)' ] ; then \ echo $(NM); \ @@ -518,16 +580,8 @@ BASE_FLAGS_TO_PASS = [+ FOR flags_to_pas "CONFIG_SHELL=$(SHELL)" \ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" -# For any flags above that may contain shell code that varies from one -# target library to another. When doing recursive invocations of the -# top-level Makefile, we don't want the outer make to evaluate them, -# so we pass these variables down unchanged. They must not contain -# single nor double quotes. -RECURSE_FLAGS = \ - CXX_FOR_TARGET='$(CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \ - RAW_CXX_FOR_TARGET='$(RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \ - -RECURSE_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) +# We leave this in just in case, but it is not needed anymore. +RECURSE_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) # Flags to pass down to most sub-makes, in which we're building with # the host environment. @@ -568,6 +622,7 @@ EXTRA_TARGET_FLAGS = \ 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ 'LD=$$(LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \ 'NM=$$(NM_FOR_TARGET)' \ diff -uprN binutils-2.16.91.0.2/opcodes/a29k-dis.c binutils-2.16.91.0.3/opcodes/a29k-dis.c --- binutils-2.16.91.0.2/opcodes/a29k-dis.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/a29k-dis.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,358 +0,0 @@ -/* Instruction printing code for the AMD 29000 - Copyright 1990, 1993, 1994, 1995, 1998, 2000, 2001, 2002 - Free Software Foundation, Inc. - Contributed by Cygnus Support. Written by Jim Kingdon. - - This file is part of GDB and 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., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - -#include "sysdep.h" -#include "dis-asm.h" -#include "opcode/a29k.h" - -/* Print a symbolic representation of a general-purpose - register number NUM on STREAM. - NUM is a number as found in the instruction, not as found in - debugging symbols; it must be in the range 0-255. */ - -static void -print_general (int num, struct disassemble_info *info) -{ - if (num < 128) - (*info->fprintf_func) (info->stream, "gr%d", num); - else - (*info->fprintf_func) (info->stream, "lr%d", num - 128); -} - -/* Like print_general but a special-purpose register. - - The mnemonics used by the AMD assembler are not quite the same - as the ones in the User's Manual. We use the ones that the - assembler uses. */ - -static void -print_special (unsigned int num, struct disassemble_info *info) -{ - /* Register names of registers 0-SPEC0_NUM-1. */ - static char *spec0_names[] = - { - "vab", "ops", "cps", "cfg", "cha", "chd", "chc", "rbp", "tmc", "tmr", - "pc0", "pc1", "pc2", "mmu", "lru", "rsn", "rma0", "rmc0", "rma1", "rmc1", - "spc0", "spc1", "spc2", "iba0", "ibc0", "iba1", "ibc1", "dba", "dbc", - "cir", "cdr" - }; -#define SPEC0_NUM ((sizeof spec0_names) / (sizeof spec0_names[0])) - - /* Register names of registers 128-128+SPEC128_NUM-1. */ - static char *spec128_names[] = - { - "ipc", "ipa", "ipb", "q", "alu", "bp", "fc", "cr" - }; -#define SPEC128_NUM ((sizeof spec128_names) / (sizeof spec128_names[0])) - - /* Register names of registers 160-160+SPEC160_NUM-1. */ - static char *spec160_names[] = - { - "fpe", "inte", "fps", "sr163", "exop" - }; -#define SPEC160_NUM ((sizeof spec160_names) / (sizeof spec160_names[0])) - - if (num < SPEC0_NUM) - (*info->fprintf_func) (info->stream, spec0_names[num]); - else if (num >= 128 && num < 128 + SPEC128_NUM) - (*info->fprintf_func) (info->stream, spec128_names[num-128]); - else if (num >= 160 && num < 160 + SPEC160_NUM) - (*info->fprintf_func) (info->stream, spec160_names[num-160]); - else - (*info->fprintf_func) (info->stream, "sr%d", num); -} - -/* Is an instruction with OPCODE a delayed branch? */ - -static int -is_delayed_branch (int opcode) -{ - return (opcode == 0xa8 || opcode == 0xa9 || opcode == 0xa0 || opcode == 0xa1 - || opcode == 0xa4 || opcode == 0xa5 - || opcode == 0xb4 || opcode == 0xb5 - || opcode == 0xc4 || opcode == 0xc0 - || opcode == 0xac || opcode == 0xad - || opcode == 0xcc); -} - -/* Now find the four bytes of INSN and put them in *INSN{0,8,16,24}. */ - -static void -find_bytes_big (char *insn, - unsigned char *insn0, - unsigned char *insn8, - unsigned char *insn16, - unsigned char *insn24) -{ - *insn24 = insn[0]; - *insn16 = insn[1]; - *insn8 = insn[2]; - *insn0 = insn[3]; -} - -static void -find_bytes_little (char *insn, - unsigned char *insn0, - unsigned char *insn8, - unsigned char *insn16, - unsigned char *insn24) -{ - *insn24 = insn[3]; - *insn16 = insn[2]; - *insn8 = insn[1]; - *insn0 = insn[0]; -} - -typedef void (*find_byte_func_type) - (char *, unsigned char *, unsigned char *, - unsigned char *, unsigned char *); - -/* Print one instruction from MEMADDR on INFO->STREAM. - Return the size of the instruction (always 4 on a29k). */ - -static int -print_insn (bfd_vma memaddr, struct disassemble_info *info) -{ - /* The raw instruction. */ - char insn[4]; - - /* The four bytes of the instruction. */ - unsigned char insn24, insn16, insn8, insn0; - - find_byte_func_type find_byte_func = (find_byte_func_type)info->private_data; - - struct a29k_opcode const * opcode; - - { - int status = - (*info->read_memory_func) (memaddr, (bfd_byte *) &insn[0], 4, info); - if (status != 0) - { - (*info->memory_error_func) (status, memaddr, info); - return -1; - } - } - - (*find_byte_func) (insn, &insn0, &insn8, &insn16, &insn24); - - printf ("%02x%02x%02x%02x ", insn24, insn16, insn8, insn0); - - /* Handle the nop (aseq 0x40,gr1,gr1) specially. */ - if ( (insn24 == 0x70) - && (insn16 == 0x40) - && (insn8 == 0x01) - && (insn0 == 0x01)) - { - (*info->fprintf_func) (info->stream,"nop"); - return 4; - } - - /* The opcode is always in insn24. */ - for (opcode = &a29k_opcodes[0]; - opcode < &a29k_opcodes[num_opcodes]; - ++opcode) - { - if (((unsigned long) insn24 << 24) == opcode->opcode) - { - char *s; - - (*info->fprintf_func) (info->stream, "%s ", opcode->name); - for (s = opcode->args; *s != '\0'; ++s) - { - switch (*s) - { - case 'a': - print_general (insn8, info); - break; - - case 'b': - print_general (insn0, info); - break; - - case 'c': - print_general (insn16, info); - break; - - case 'i': - (*info->fprintf_func) (info->stream, "%d", insn0); - break; - - case 'x': - (*info->fprintf_func) (info->stream, "0x%x", - (insn16 << 8) + insn0); - break; - - case 'h': - /* This used to be %x for binutils. */ - (*info->fprintf_func) (info->stream, "0x%x", - (insn16 << 24) + (insn0 << 16)); - break; - - case 'X': - (*info->fprintf_func) (info->stream, "%d", - ((insn16 << 8) + insn0) | 0xffff0000); - break; - - case 'P': - /* This output looks just like absolute addressing, but - maybe that's OK (it's what the GDB m68k and EBMON - a29k disassemblers do). */ - /* All the shifting is to sign-extend it. p*/ - (*info->print_address_func) - (memaddr + - (((int)((insn16 << 10) + (insn0 << 2)) << 14) >> 14), - info); - break; - - case 'A': - (*info->print_address_func) - ((insn16 << 10) + (insn0 << 2), info); - break; - - case 'e': - (*info->fprintf_func) (info->stream, "%d", insn16 >> 7); - break; - - case 'n': - (*info->fprintf_func) (info->stream, "0x%x", insn16 & 0x7f); - break; - - case 'v': - (*info->fprintf_func) (info->stream, "0x%x", insn16); - break; - - case 's': - print_special (insn8, info); - break; - - case 'u': - (*info->fprintf_func) (info->stream, "%d", insn0 >> 7); - break; - - case 'r': - (*info->fprintf_func) (info->stream, "%d", (insn0 >> 4) & 7); - break; - - case 'I': - if ((insn16 & 3) != 0) - (*info->fprintf_func) (info->stream, "%d", insn16 & 3); - break; - - case 'd': - (*info->fprintf_func) (info->stream, "%d", (insn0 >> 2) & 3); - break; - - case 'f': - (*info->fprintf_func) (info->stream, "%d", insn0 & 3); - break; - - case 'F': - (*info->fprintf_func) (info->stream, "%d", - (insn16 >> 2) & 15); - break; - - case 'C': - (*info->fprintf_func) (info->stream, "%d", insn16 & 3); - break; - - default: - (*info->fprintf_func) (info->stream, "%c", *s); - } - } - - /* Now we look for a const,consth pair of instructions, - in which case we try to print the symbolic address. */ - if (insn24 == 2) /* consth */ - { - int errcode; - char prev_insn[4]; - unsigned char prev_insn0, prev_insn8, prev_insn16, prev_insn24; - - errcode = (*info->read_memory_func) (memaddr - 4, - (bfd_byte *) &prev_insn[0], - 4, - info); - if (errcode == 0) - { - /* If it is a delayed branch, we need to look at the - instruction before the delayed brach to handle - things like - - const _foo - call _printf - consth _foo - */ - (*find_byte_func) (prev_insn, & prev_insn0, & prev_insn8, - & prev_insn16, & prev_insn24); - if (is_delayed_branch (prev_insn24)) - { - errcode = (*info->read_memory_func) - (memaddr - 8, (bfd_byte *) & prev_insn[0], 4, info); - (*find_byte_func) (prev_insn, & prev_insn0, & prev_insn8, - & prev_insn16, & prev_insn24); - } - } - - /* If there was a problem reading memory, then assume - the previous instruction was not const. */ - if (errcode == 0) - { - /* Is it const to the same register? */ - if (prev_insn24 == 3 - && prev_insn8 == insn8) - { - (*info->fprintf_func) (info->stream, "\t; "); - (*info->print_address_func) - (((insn16 << 24) + (insn0 << 16) - + (prev_insn16 << 8) + (prev_insn0)), - info); - } - } - } - - return 4; - } - } - /* This used to be %8x for binutils. */ - (*info->fprintf_func) - (info->stream, ".word 0x%08x", - (insn24 << 24) + (insn16 << 16) + (insn8 << 8) + insn0); - return 4; -} - -/* Disassemble an big-endian a29k instruction. */ - -int -print_insn_big_a29k (bfd_vma memaddr, struct disassemble_info *info) -{ - info->private_data = (PTR) find_bytes_big; - return print_insn (memaddr, info); -} - -/* Disassemble a little-endian a29k instruction. */ - -int -print_insn_little_a29k (bfd_vma memaddr, struct disassemble_info *info) -{ - info->private_data = (PTR) find_bytes_little; - return print_insn (memaddr, info); -} diff -uprN binutils-2.16.91.0.2/opcodes/arm-dis.c binutils-2.16.91.0.3/opcodes/arm-dis.c --- binutils-2.16.91.0.2/opcodes/arm-dis.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/arm-dis.c 2005-08-22 12:27:46.000000000 -0700 @@ -839,7 +839,7 @@ static const struct opcode32 thumb32_opc {ARM_EXT_V6T2, 0xf3ef8000, 0xffeff0ff, "mrs\t%8-11r, %20?CSPSR"}, {ARM_EXT_V6T2, 0xf3af8100, 0xffffffe0, "cps\t#%0-4d"}, {ARM_EXT_V6T2, 0xe8d0f000, 0xfff0fff0, "tbb\t[%16-19r, %0-3r]"}, - {ARM_EXT_V6T2, 0xe8d0f010, 0xfff0fff0, "tbh\t[%16-19r, %0-3r]"}, + {ARM_EXT_V6T2, 0xe8d0f010, 0xfff0fff0, "tbh\t[%16-19r, %0-3r, lsl #1]"}, {ARM_EXT_V6T2, 0xf3af8500, 0xffffff00, "cpsie\t%7'a%6'i%5'f, #%0-4d"}, {ARM_EXT_V6T2, 0xf3af8700, 0xffffff00, "cpsid\t%7'a%6'i%5'f, #%0-4d"}, {ARM_EXT_V6T2, 0xf3de8f00, 0xffffff00, "subs\tpc, lr, #%0-7d"}, @@ -2132,7 +2132,7 @@ print_insn_thumb32 (bfd_vma pc, struct d unsigned int imm12 = 0; imm12 |= (given & 0x000000ffu); imm12 |= (given & 0x00007000u) >> 4; - imm12 |= (given & 0x04000000u) >> 12; + imm12 |= (given & 0x04000000u) >> 15; func (stream, "#%u\t; 0x%x", imm12, imm12); } break; @@ -2253,22 +2253,22 @@ print_insn_thumb32 (bfd_vma pc, struct d offset = -i8; break; - case 0xB: /* 8-bit + preindex with wb */ + case 0xF: /* 8-bit + preindex with wb */ offset = i8; writeback = TRUE; break; - case 0x9: /* 8-bit - preindex with wb */ + case 0xD: /* 8-bit - preindex with wb */ offset = -i8; writeback = TRUE; break; - case 0xF: /* 8-bit + postindex */ + case 0xB: /* 8-bit + postindex */ offset = i8; postind = TRUE; break; - case 0xD: /* 8-bit - postindex */ + case 0x9: /* 8-bit - postindex */ offset = -i8; postind = TRUE; break; diff -uprN binutils-2.16.91.0.2/opcodes/ChangeLog binutils-2.16.91.0.3/opcodes/ChangeLog --- binutils-2.16.91.0.2/opcodes/ChangeLog 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/ChangeLog 2005-08-22 12:27:46.000000000 -0700 @@ -1,3 +1,62 @@ +2005-08-18 Alan Modra + + * a29k-dis.c: Delete. + * Makefile.am: Remove a29k support. + * configure.in: Likewise. + * disassemble.c: Likewise. + * Makefile.in: Regenerate. + * configure: Regenerate. + * po/POTFILES.in: Regenerate. + +2005-08-15 Daniel Jacobowitz + + * ppc-dis.c (powerpc_dialect): Handle e300. + (print_ppc_disassembler_options): Likewise. + * ppc-opc.c (PPCE300): Define. + (powerpc_opcodes): Mark icbt as available for the e300. + +2005-08-13 John David Anglin + + * hppa-dis.c (print_insn_hppa): Don't print '%' before register names. + Use "rp" instead of "%r2" in "b,l" insns. + +2005-08-12 Martin Schwidefsky + + * s390-dis.c (print_insn_s390): Print unsigned operands with %u. + * s390-mkopc.c (s390_opcode_cpu_val): Add support for cpu type z9-109. + (main): Likewise. + * s390-opc.c (I32_16, U32_16, M_16): Add defines 32 bit immediates + and 4 bit optional masks. + (INSTR_RIL_RI, INSTR_RIL_RU, INSTR_RRF_M0RR, INSTR_RSE_CCRD, + INSTR_RSY_CCRD, INSTR_SSF_RRDRD): Add new instruction formats. + (MASK_RIL_RI, MASK_RIL_RU, MASK_RRF_M0RR, MASK_RSE_CCRD, + MASK_RSY_CCRD, MASK_SSF_RRDRD): Likewise. + (s390_opformats): Likewise. + * s390-opc.txt: Add new instructions for cpu type z9-109. + +2005-08-05 John David Anglin + + * hppa-dis.c (print_insn_hppa): Prefix 21-bit values with "L%". + +2005-07-29 Paul Brook + + * arm-dis.c: Fix disassebly of thumb2 writeback addressing modes. + +2005-07-29 Paul Brook + + * arm-dis.c (thumb32_opc): Fix addressing mode for tbh. + (print_insn_thumb32): Fix decoding of thumb2 'I' operands. + +2005-07-25 DJ Delorie + + * m32c-asm.c Regenerate. + * m32c-dis.c Regenerate. + +2005-07-20 DJ Delorie + + * disassemble.c (disassemble_init_for_target): M32C ISAs are + enums, so convert them to bit masks, which attributes are. + 2005-07-18 Nick Clifton * configure.in: Restore alpha ordering to list of arches. diff -uprN binutils-2.16.91.0.2/opcodes/configure binutils-2.16.91.0.3/opcodes/configure --- binutils-2.16.91.0.2/opcodes/configure 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/configure 2005-08-22 12:27:46.000000000 -0700 @@ -8693,19 +8693,17 @@ if test x${all_targets} = xfalse ; then ad=`echo $arch | sed -e s/bfd_//g -e s/_arch//g` archdefs="$archdefs -DARCH_$ad" case "$arch" in - bfd_a29k_arch) ta="$ta a29k-dis.lo" ;; - bfd_alliant_arch) ;; bfd_alpha_arch) ta="$ta alpha-dis.lo alpha-opc.lo" ;; bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;; bfd_arm_arch) ta="$ta arm-dis.lo" ;; bfd_avr_arch) ta="$ta avr-dis.lo" ;; - bfd_convex_arch) ;; bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo" ;; bfd_crx_arch) ta="$ta crx-dis.lo crx-opc.lo" ;; bfd_d10v_arch) ta="$ta d10v-dis.lo d10v-opc.lo" ;; bfd_d30v_arch) ta="$ta d30v-dis.lo d30v-opc.lo" ;; bfd_dlx_arch) ta="$ta dlx-dis.lo" ;; bfd_fr30_arch) ta="$ta fr30-asm.lo fr30-desc.lo fr30-dis.lo fr30-ibld.lo fr30-opc.lo" using_cgen=yes ;; + bfd_frv_arch) ta="$ta frv-asm.lo frv-desc.lo frv-dis.lo frv-ibld.lo frv-opc.lo" using_cgen=yes ;; bfd_h8300_arch) ta="$ta h8300-dis.lo" ;; bfd_h8500_arch) ta="$ta h8500-dis.lo" ;; bfd_hppa_arch) ta="$ta hppa-dis.lo" ;; @@ -8716,6 +8714,7 @@ if test x${all_targets} = xfalse ; then bfd_ia64_arch) ta="$ta ia64-dis.lo ia64-opc.lo" ;; bfd_ip2k_arch) ta="$ta ip2k-asm.lo ip2k-desc.lo ip2k-dis.lo ip2k-ibld.lo ip2k-opc.lo" using_cgen=yes ;; bfd_iq2000_arch) ta="$ta iq2000-asm.lo iq2000-desc.lo iq2000-dis.lo iq2000-ibld.lo iq2000-opc.lo" using_cgen=yes ;; + bfd_m32c_arch) ta="$ta m32c-asm.lo m32c-desc.lo m32c-dis.lo m32c-ibld.lo m32c-opc.lo" using_cgen=yes ;; bfd_m32r_arch) ta="$ta m32r-asm.lo m32r-desc.lo m32r-dis.lo m32r-ibld.lo m32r-opc.lo m32r-opinst.lo" using_cgen=yes ;; bfd_m68hc11_arch) ta="$ta m68hc11-dis.lo m68hc11-opc.lo" ;; bfd_m68hc12_arch) ta="$ta m68hc11-dis.lo m68hc11-opc.lo" ;; @@ -8770,8 +8769,6 @@ if test x${all_targets} = xfalse ; then bfd_xstormy16_arch) ta="$ta xstormy16-asm.lo xstormy16-desc.lo xstormy16-dis.lo xstormy16-ibld.lo xstormy16-opc.lo" using_cgen=yes ;; bfd_xtensa_arch) ta="$ta xtensa-dis.lo" ;; bfd_z8k_arch) ta="$ta z8k-dis.lo" ;; - bfd_frv_arch) ta="$ta frv-asm.lo frv-desc.lo frv-dis.lo frv-ibld.lo frv-opc.lo" using_cgen=yes ;; - bfd_m32c_arch) ta="$ta m32c-asm.lo m32c-desc.lo m32c-dis.lo m32c-ibld.lo m32c-opc.lo" using_cgen=yes ;; "") ;; *) { { echo "$as_me:$LINENO: error: *** unknown target architecture $arch" >&5 diff -uprN binutils-2.16.91.0.2/opcodes/configure.in binutils-2.16.91.0.3/opcodes/configure.in --- binutils-2.16.91.0.2/opcodes/configure.in 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/configure.in 2005-08-22 12:27:46.000000000 -0700 @@ -153,13 +153,10 @@ if test x${all_targets} = xfalse ; then ad=`echo $arch | sed -e s/bfd_//g -e s/_arch//g` archdefs="$archdefs -DARCH_$ad" case "$arch" in - bfd_a29k_arch) ta="$ta a29k-dis.lo" ;; - bfd_alliant_arch) ;; bfd_alpha_arch) ta="$ta alpha-dis.lo alpha-opc.lo" ;; bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;; bfd_arm_arch) ta="$ta arm-dis.lo" ;; bfd_avr_arch) ta="$ta avr-dis.lo" ;; - bfd_convex_arch) ;; bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo" ;; bfd_crx_arch) ta="$ta crx-dis.lo crx-opc.lo" ;; bfd_d10v_arch) ta="$ta d10v-dis.lo d10v-opc.lo" ;; diff -uprN binutils-2.16.91.0.2/opcodes/disassemble.c binutils-2.16.91.0.3/opcodes/disassemble.c --- binutils-2.16.91.0.2/opcodes/disassemble.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/disassemble.c 2005-08-22 12:27:46.000000000 -0700 @@ -20,7 +20,6 @@ #include "dis-asm.h" #ifdef ARCH_all -#define ARCH_a29k #define ARCH_alpha #define ARCH_arc #define ARCH_arm @@ -94,12 +93,6 @@ disassembler (abfd) { /* If you add a case to this table, also add it to the ARCH_all definition right above this function. */ -#ifdef ARCH_a29k - case bfd_arch_a29k: - /* As far as I know we only handle big-endian 29k objects. */ - disassemble = print_insn_big_a29k; - break; -#endif #ifdef ARCH_alpha case bfd_arch_alpha: disassemble = print_insn_alpha; @@ -452,9 +445,9 @@ disassemble_init_for_target (struct disa case bfd_arch_m32c: info->endian = BFD_ENDIAN_BIG; if (info->mach == bfd_mach_m16c) - info->insn_sets = ISA_M16C; + info->insn_sets = 1 << ISA_M16C; else - info->insn_sets = ISA_M32C; + info->insn_sets = 1 << ISA_M32C; break; #endif default: diff -uprN binutils-2.16.91.0.2/opcodes/hppa-dis.c binutils-2.16.91.0.3/opcodes/hppa-dis.c --- binutils-2.16.91.0.2/opcodes/hppa-dis.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/hppa-dis.c 2005-08-22 12:27:46.000000000 -0700 @@ -912,6 +912,7 @@ print_insn_hppa (bfd_vma memaddr, disass fput_const (extract_14 (insn), info); break; case 'k': + fputs_filtered ("L%", info); fput_const (extract_21 (insn), info); break; case '<': @@ -951,12 +952,12 @@ print_insn_hppa (bfd_vma memaddr, disass case 'Z': /* addil %r1 implicit output. */ - (*info->fprintf_func) (info->stream, "%%r1"); + fputs_filtered ("r1", info); break; case 'Y': /* be,l %sr0,%r31 implicit output. */ - (*info->fprintf_func) (info->stream, "%%sr0,%%r31"); + fputs_filtered ("sr0,r31", info); break; case '@': @@ -972,7 +973,7 @@ print_insn_hppa (bfd_vma memaddr, disass GET_FIELD (insn, 22, 25)); break; case '!': - (*info->fprintf_func) (info->stream, "%%sar"); + fputs_filtered ("sar", info); break; case 'p': (*info->fprintf_func) (info->stream, "%d", @@ -1218,7 +1219,7 @@ print_insn_hppa (bfd_vma memaddr, disass (memaddr + 8 + extract_22 (insn), info); break; case 'L': - fputs_filtered (",%r2", info); + fputs_filtered (",rp", info); break; default: (*info->fprintf_func) (info->stream, "%c", *s); diff -uprN binutils-2.16.91.0.2/opcodes/m32c-asm.c binutils-2.16.91.0.3/opcodes/m32c-asm.c --- binutils-2.16.91.0.2/opcodes/m32c-asm.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/m32c-asm.c 2005-08-22 12:27:46.000000000 -0700 @@ -127,6 +127,28 @@ parse_unsigned8 (CGEN_CPU_DESC cd, const unsigned long value; long have_zero = 0; + if (strncasecmp (*strp, "%dsp8(", 6) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 6; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_8, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + return _("%dsp8() takes a symbolic address, not a number"); + } + *valuep = value; + return errmsg; + } + if (strncmp (*strp, "0x0", 3) == 0 || (**strp == '0' && *(*strp + 1) != 'x')) have_zero = 1; @@ -175,7 +197,29 @@ parse_signed8 (CGEN_CPU_DESC cd, const c { const char *errmsg = 0; signed long value; - + + if (strncasecmp (*strp, "%hi8(", 5) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 5; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_M32C_HI8, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + value >>= 16; + } + *valuep = value; + return errmsg; + } + PARSE_SIGNED; if (value <= 255 && value > 127) @@ -195,7 +239,29 @@ parse_unsigned16 (CGEN_CPU_DESC cd, cons const char *errmsg = 0; unsigned long value; long have_zero = 0; - + + if (strncasecmp (*strp, "%dsp16(", 7) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 7; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_16, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + return _("%dsp16() takes a symbolic address, not a number"); + } + *valuep = value; + return errmsg; + } + /* Don't successfully parse literals beginning with '['. */ if (**strp == '[') return "Invalid literal"; /* Anything -- will not be seen. */ @@ -233,6 +299,50 @@ parse_signed16 (CGEN_CPU_DESC cd, const const char *errmsg = 0; signed long value; + if (strncasecmp (*strp, "%lo16(", 6) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 6; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_LO16, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + value &= 0xffff; + } + *valuep = value; + return errmsg; + } + + if (strncasecmp (*strp, "%hi16(", 6) == 0) + { + enum cgen_parse_operand_result result_type; + bfd_vma value; + const char *errmsg; + + *strp += 6; + errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_HI16, + & result_type, & value); + if (**strp != ')') + return _("missing `)'"); + (*strp) ++; + + if (errmsg == NULL + && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER) + { + value >>= 16; + } + *valuep = value; + return errmsg; + } + PARSE_SIGNED; if (value <= 65535 && value > 32767) @@ -354,10 +464,10 @@ parse_lab_5_3 (CGEN_CPU_DESC cd, int opindex ATTRIBUTE_UNUSED, int opinfo, enum cgen_parse_operand_result *type_addr, - unsigned long *valuep) + bfd_vma *valuep) { const char *errmsg = 0; - unsigned long value; + bfd_vma value; enum cgen_parse_operand_result op_res; errmsg = cgen_parse_address (cd, strp, M32C_OPERAND_LAB_5_3, diff -uprN binutils-2.16.91.0.2/opcodes/m32c-dis.c binutils-2.16.91.0.3/opcodes/m32c-dis.c --- binutils-2.16.91.0.2/opcodes/m32c-dis.c 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/m32c-dis.c 2005-08-22 12:27:46.000000000 -0700 @@ -1229,7 +1229,7 @@ print_insn_m32c (bfd_vma pc, disassemble break; } } - } + } /* If we haven't initialized yet, initialize the opcode table. */ if (! cd) diff -uprN binutils-2.16.91.0.2/opcodes/Makefile.am binutils-2.16.91.0.3/opcodes/Makefile.am --- binutils-2.16.91.0.2/opcodes/Makefile.am 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/Makefile.am 2005-08-22 12:27:46.000000000 -0700 @@ -47,7 +47,6 @@ HFILES = \ # C source files that correspond to .o's. CFILES = \ - a29k-dis.c \ alpha-dis.c \ alpha-opc.c \ arc-dis.c \ @@ -182,7 +181,6 @@ CFILES = \ z8kgen.c ALL_MACHINES = \ - a29k-dis.lo \ alpha-dis.lo \ alpha-opc.lo \ arc-dis.lo \ @@ -574,8 +572,6 @@ dep-am: DEP # DO NOT DELETE THIS LINE -- mkdep uses it. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. -a29k-dis.lo: a29k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/a29k.h alpha-dis.lo: alpha-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/alpha.h alpha-opc.lo: alpha-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \ diff -uprN binutils-2.16.91.0.2/opcodes/Makefile.in binutils-2.16.91.0.3/opcodes/Makefile.in --- binutils-2.16.91.0.2/opcodes/Makefile.in 2005-07-20 12:27:28.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/Makefile.in 2005-08-22 12:27:46.000000000 -0700 @@ -269,7 +269,6 @@ HFILES = \ # C source files that correspond to .o's. CFILES = \ - a29k-dis.c \ alpha-dis.c \ alpha-opc.c \ arc-dis.c \ @@ -404,7 +403,6 @@ CFILES = \ z8kgen.c ALL_MACHINES = \ - a29k-dis.lo \ alpha-dis.lo \ alpha-opc.lo \ arc-dis.lo \ @@ -1116,8 +1114,6 @@ dep-am: DEP # DO NOT DELETE THIS LINE -- mkdep uses it. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. -a29k-dis.lo: a29k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/a29k.h alpha-dis.lo: alpha-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/alpha.h alpha-opc.lo: alpha-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \ diff -uprN binutils-2.16.91.0.2/opcodes/po/POTFILES.in binutils-2.16.91.0.3/opcodes/po/POTFILES.in --- binutils-2.16.91.0.2/opcodes/po/POTFILES.in 2005-07-20 12:27:29.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/po/POTFILES.in 2005-08-22 12:27:46.000000000 -0700 @@ -1,4 +1,3 @@ -a29k-dis.c alpha-dis.c alpha-opc.c arc-dis.c diff -uprN binutils-2.16.91.0.2/opcodes/ppc-dis.c binutils-2.16.91.0.3/opcodes/ppc-dis.c --- binutils-2.16.91.0.2/opcodes/ppc-dis.c 2005-07-20 12:27:29.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/ppc-dis.c 2005-08-22 12:27:46.000000000 -0700 @@ -63,6 +63,9 @@ powerpc_dialect (struct disassemble_info else if (info->disassembler_options && strstr (info->disassembler_options, "efs") != NULL) dialect |= PPC_OPCODE_EFS; + else if (info->disassembler_options + && strstr (info->disassembler_options, "e300") != NULL) + dialect |= PPC_OPCODE_E300 | PPC_OPCODE_CLASSIC | PPC_OPCODE_COMMON; else dialect |= (PPC_OPCODE_403 | PPC_OPCODE_601 | PPC_OPCODE_CLASSIC | PPC_OPCODE_COMMON | PPC_OPCODE_ALTIVEC); @@ -303,6 +306,7 @@ The following PPC specific disassembler the -M switch:\n"); fprintf (stream, " booke|booke32|booke64 Disassemble the BookE instructions\n"); + fprintf (stream, " e300 Disassemble the e300 instructions\n"); fprintf (stream, " e500|e500x2 Disassemble the e500 instructions\n"); fprintf (stream, " efs Disassemble the EFS instructions\n"); fprintf (stream, " power4 Disassemble the Power4 instructions\n"); diff -uprN binutils-2.16.91.0.2/opcodes/ppc-opc.c binutils-2.16.91.0.3/opcodes/ppc-opc.c --- binutils-2.16.91.0.2/opcodes/ppc-opc.c 2005-06-22 13:53:36.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/ppc-opc.c 2005-08-22 12:27:46.000000000 -0700 @@ -1844,6 +1844,7 @@ extract_tbr (unsigned long insn, #define BOOKE PPC_OPCODE_BOOKE #define BOOKE64 PPC_OPCODE_BOOKE64 #define CLASSIC PPC_OPCODE_CLASSIC +#define PPCE300 PPC_OPCODE_E300 #define PPCSPE PPC_OPCODE_SPE #define PPCISEL PPC_OPCODE_ISEL #define PPCEFS PPC_OPCODE_EFS @@ -3327,7 +3328,7 @@ const struct powerpc_opcode powerpc_opco { "ldx", X(31,21), X_MASK, PPC64, { RT, RA0, RB } }, -{ "icbt", X(31,22), X_MASK, BOOKE, { CT, RA, RB } }, +{ "icbt", X(31,22), X_MASK, BOOKE|PPCE300, { CT, RA, RB } }, { "icbt", X(31,262), XRT_MASK, PPC403, { RA, RB } }, { "lwzx", X(31,23), X_MASK, PPCCOM, { RT, RA0, RB } }, diff -uprN binutils-2.16.91.0.2/opcodes/s390-dis.c binutils-2.16.91.0.3/opcodes/s390-dis.c --- binutils-2.16.91.0.2/opcodes/s390-dis.c 2005-07-20 12:27:29.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/s390-dis.c 2005-08-22 12:27:46.000000000 -0700 @@ -206,7 +206,7 @@ print_insn_s390 (bfd_vma memaddr, struct else if (operand->flags & S390_OPERAND_SIGNED) (*info->fprintf_func) (info->stream, "%i", (int) value); else - (*info->fprintf_func) (info->stream, "%i", value); + (*info->fprintf_func) (info->stream, "%u", value); if (operand->flags & S390_OPERAND_DISP) { diff -uprN binutils-2.16.91.0.2/opcodes/s390-mkopc.c binutils-2.16.91.0.3/opcodes/s390-mkopc.c --- binutils-2.16.91.0.2/opcodes/s390-mkopc.c 2005-05-10 15:46:54.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/s390-mkopc.c 2005-08-22 12:27:46.000000000 -0700 @@ -35,7 +35,8 @@ enum s390_opcode_cpu_val S390_OPCODE_G5 = 0, S390_OPCODE_G6, S390_OPCODE_Z900, - S390_OPCODE_Z990 + S390_OPCODE_Z990, + S390_OPCODE_Z9_109 }; struct op_struct @@ -195,6 +196,8 @@ main (void) min_cpu = S390_OPCODE_Z900; else if (strcmp (cpu_string, "z990") == 0) min_cpu = S390_OPCODE_Z990; + else if (strcmp (cpu_string, "z9-109") == 0) + min_cpu = S390_OPCODE_Z9_109; else { fprintf (stderr, "Couldn't parse cpu string %s\n", cpu_string); exit (1); diff -uprN binutils-2.16.91.0.2/opcodes/s390-opc.c binutils-2.16.91.0.3/opcodes/s390-opc.c --- binutils-2.16.91.0.2/opcodes/s390-opc.c 2005-05-10 15:46:54.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/s390-opc.c 2005-08-22 12:27:46.000000000 -0700 @@ -127,7 +127,13 @@ const struct s390_operand s390_operands[ #define J16_16 38 /* PC relative jump offset at 16 */ { 16, 16, S390_OPERAND_PCREL }, #define J32_16 39 /* PC relative long offset at 16 */ - { 32, 16, S390_OPERAND_PCREL } + { 32, 16, S390_OPERAND_PCREL }, +#define I32_16 40 /* 32 bit signed value starting at 16 */ + { 32, 16, S390_OPERAND_SIGNED }, +#define U32_16 41 /* 32 bit unsigned value starting at 16 */ + { 32, 16, 0 }, +#define M_16 42 /* 4 bit optional mask starting at 16 */ + { 4, 16, S390_OPERAND_OPTIONAL } }; @@ -151,11 +157,12 @@ const struct s390_operand s390_operands[ c - control register d - displacement, 12 bit f - floating pointer register - i - signed integer, 4 or 8 bit + i - signed integer, 4, 8, 16 or 32 bit l - length, 4 or 8 bit p - pc relative r - general purpose register - u - unsigned integer, 4 or 8 bit + u - unsigned integer, 4, 8, 16 or 32 bit + m - mode field, 4 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. @@ -178,6 +185,8 @@ const struct s390_operand s390_operands[ #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_RIL_RI 6, { R_8,I32_16,0,0,0,0 } /* e.g. afi */ +#define INSTR_RIL_RU 6, { R_8,U32_16,0,0,0,0 } /* e.g. alfi */ #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 */ @@ -200,6 +209,7 @@ const struct s390_operand s390_operands[ #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_RRF_M0RR 4, { R_24,R_28,M_16,0,0,0 } /* e.g. sske */ #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 */ @@ -207,12 +217,14 @@ const struct s390_operand s390_operands[ #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_CCRD 6, { C_8,C_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_RSL_R0RD 6, { R_8,D_20,B_16,0,0,0 } /* e.g. tp */ #define INSTR_RSI_RRP 4, { R_8,R_12,J16_16,0,0,0 } /* e.g. brxh */ #define INSTR_RSY_RRRD 6, { R_8,R_12,D20_20,B_16,0,0 } /* e.g. stmy */ #define INSTR_RSY_RURD 6, { R_8,U4_12,D20_20,B_16,0,0 } /* e.g. icmh */ #define INSTR_RSY_AARD 6, { A_8,A_12,D20_20,B_16,0,0 } /* e.g. lamy */ +#define INSTR_RSY_CCRD 6, { C_8,C_12,D20_20,B_16,0,0 } /* e.g. lamy */ #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 */ @@ -239,12 +251,15 @@ const struct s390_operand s390_operands[ #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 INSTR_SSF_RRDRD 6, { D_20,B_16,D_36,B_32,R_8,0 } /* e.g. mvcos */ #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_RIL_RI { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RIL_RU { 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 } @@ -267,6 +282,7 @@ const struct s390_operand s390_operands[ #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_RRF_M0RR { 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 } @@ -274,6 +290,7 @@ const struct s390_operand s390_operands[ #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_CCRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } #define MASK_RSE_RURD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } #define MASK_RSL_R0RD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } #define MASK_RSI_RRP { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } @@ -285,6 +302,7 @@ const struct s390_operand s390_operands[ #define MASK_RSY_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } #define MASK_RSY_RURD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } #define MASK_RSY_AARD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RSY_CCRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } #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 } @@ -306,6 +324,7 @@ const struct s390_operand s390_operands[ #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 } +#define MASK_SSF_RRDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } /* The opcode formats table (blueprints for .insn pseudo mnemonic). */ @@ -315,6 +334,7 @@ const struct s390_opcode s390_opformats[ { "ri", OP8(0x00LL), MASK_RI_RI, INSTR_RI_RI, 3, 0 }, { "rie", OP8(0x00LL), MASK_RIE_RRP, INSTR_RIE_RRP, 3, 0 }, { "ril", OP8(0x00LL), MASK_RIL_RP, INSTR_RIL_RP, 3, 0 }, + { "rilu", OP8(0x00LL), MASK_RIL_RU, INSTR_RIL_RU, 3, 0 }, { "rr", OP8(0x00LL), MASK_RR_RR, INSTR_RR_RR, 3, 0 }, { "rre", OP8(0x00LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0 }, { "rrf", OP8(0x00LL), MASK_RRF_RURR, INSTR_RRF_RURR, 3, 0 }, @@ -331,6 +351,7 @@ const struct s390_opcode s390_opformats[ { "siy", OP8(0x00LL), MASK_SIY_URD, INSTR_SIY_URD, 3, 3 }, { "ss", OP8(0x00LL), MASK_SS_RRRDRD, INSTR_SS_RRRDRD,3, 0 }, { "sse", OP8(0x00LL), MASK_SSE_RDRD, INSTR_SSE_RDRD, 3, 0 }, + { "ssf", OP8(0x00LL), MASK_SSF_RRDRD, INSTR_SSF_RRDRD,3, 0 }, }; const int s390_num_opformats = diff -uprN binutils-2.16.91.0.2/opcodes/s390-opc.txt binutils-2.16.91.0.3/opcodes/s390-opc.txt --- binutils-2.16.91.0.2/opcodes/s390-opc.txt 2005-04-09 12:03:36.000000000 -0700 +++ binutils-2.16.91.0.3/opcodes/s390-opc.txt 2005-08-22 12:27:46.000000000 -0700 @@ -464,7 +464,7 @@ b920 cgr RRE_RR "compare 64" z900 zarch b930 cgfr RRE_RR "compare 64<32" z900 zarch b908 agr RRE_RR "add 64" z900 zarch b918 agfr RRE_RR "add 64<32" z900 zarch -b909 sgr RRE_RR "subtract 64" z900 zarch zarch +b909 sgr RRE_RR "subtract 64" z900 zarch b919 sgfr RRE_RR "subtract 64<32" z900 zarch b90a algr RRE_RR "add logical 64" z900 zarch b91a algfr RRE_RR "add logical 64<32" z900 zarch @@ -510,8 +510,8 @@ ef lmd SS_RRRDRD3 "load multiple disjoin eb000000000f tracg RSE_RRRD "trace 64" z900 zarch e30000000003 lrag RXE_RRRD "load real address 64" z900 zarch e50000000002 strag SSE_RDRD "store read address" z900 zarch -eb0000000025 stctg RSE_RRRD "store control 64" z900 zarch -eb000000002f lctlg RSE_RRRD "load control 64" z900 zarch +eb0000000025 stctg RSE_CCRD "store control 64" z900 zarch +eb000000002f lctlg RSE_CCRD "load control 64" z900 zarch eb0000000030 csg RSE_RRRD "compare and swap 64" z900 zarch eb000000003e cdsg RSE_RRRD "compare double and swap 64" z900 zarch eb0000000020 clmh RSE_RURD "compare logical characters under mask high" z900 zarch @@ -648,7 +648,6 @@ ed0000000024 lde RXE_FRRD "load lengthen b361 lnxr RRE_FF "load negative long hfp" g5 esa,zarch b360 lpxr RRE_FF "load positive long hfp" g5 esa,zarch b366 lexr RRE_FF "load rounded extended to short hfp" g5 esa,zarch -35 ledr RR_FF "load rounded long to short hfp" g5 esa,zarch b337 meer RRE_FF "multiply short hfp" g5 esa,zarch ed0000000037 mee RXE_FRRD "multiply short hfp" g5 esa,zarch b336 sqxr RRE_FF "square root extended hfp" g5 esa,zarch @@ -763,10 +762,10 @@ eb000000001c rllg RSY_RRRD "rotate left eb000000001d rll RSY_RRRD "rotate left single logical 32" z990 esa,zarch eb0000000020 clmh RSY_RURD "compare logical characters under mask high with long offset" z990 zarch eb0000000024 stmg RSY_RRRD "store multiple with long offset 64" z990 zarch -eb0000000025 stctg RSY_RRRD "store control 64" z990 zarch +eb0000000025 stctg RSY_CCRD "store control 64" z990 zarch eb0000000026 stmh RSY_RRRD "store multiple high" z990 zarch eb000000002c stcmh RSY_RURD "store characters under mask high with long offset" z990 zarch -eb000000002f lctlg RSY_RRRD "load control 64" z990 zarch +eb000000002f lctlg RSY_CCRD "load control 64" z990 zarch eb0000000030 csg RSY_RRRD "compare and swap with long offset 64" z990 zarch eb000000003e cdsg RSY_RRRD "compare double and swap with long offset 64" z990 zarch eb0000000044 bxhg RSY_RRRD "branch on index high 64" z990 zarch @@ -781,7 +780,7 @@ b98e idte RRF_R0RR "invalidate dat table b33e madr RRF_F0FF "multiply and add long hfp" z990 esa,zarch ed000000003e mad RXF_FRRDF "multiply and add long hfp" z990 esa,zarch b32e maer RRF_F0FF "multiply and add short hfp" z990 esa,zarch -ed000000002e mae RXF_FRRDF "multiply and add shoft hfp" z990 esa,zarch +ed000000002e mae RXF_FRRDF "multiply and add short hfp" z990 esa,zarch b33f msdr RRF_F0FF "multiply and subtract long hfp" z990 esa,zarch ed000000003f msd RXF_FRRDF "multiply and subtract long hfp" z990 esa,zarch b32f mser RRF_F0FF "mutliply and subtract short hfp" z990 esa,zarch @@ -791,3 +790,63 @@ b92f kmc RRE_RR "cipher message with cha b93e kimd RRE_RR "compute intermediate message digest" z990 esa,zarch b93f klmd RRE_RR "compute last message digest" z990 esa,zarch b91e kmac RRE_RR "compute message authentication code" z990 esa,zarch +# z9-109 extended immediate instructions +c209 afi RIL_RI "add immediate 32" z9-109 zarch +c208 agfi RIL_RI "add immediate 64<32" z9-109 zarch +c20b alfi RIL_RU "add logical immediate 32" z9-109 zarch +c20a algfi RIL_RU "add logical immediate 64<32" z9-109 zarch +c00a nihf RIL_RU "and immediate high" z9-109 zarch +c00b nilf RIL_RU "and immediate low" z9-109 zarch +c20d cfi RIL_RI "compare immediate 32" z9-109 zarch +c20c cgfi RIL_RI "compare immediate 64<32" z9-109 zarch +c20f clfi RIL_RU "compare logical immediate 32" z9-109 zarch +c20e clgfi RIL_RU "compare logical immediate 64<32" z9-109 zarch +c006 xihf RIL_RU "exclusive or immediate high" z9-109 zarch +c007 xilf RIL_RU "exclusive or immediate low" z9-109 zarch +c008 iihf RIL_RU "insert immediate high" z9-109 zarch +c009 iilf RIL_RU "insert immediate low" z9-109 zarch +# z9-109 misc instruction +b983 flogr RRE_RR "find leftmost one" z9-109 zarch +e30000000012 lt RXY_RRRD "load and test 32" z9-109 zarch +e30000000002 ltg RXY_RRRD "load and test 64" z9-109 zarch +b926 lbr RRE_RR "load byte 32" z9-109 zarch +b906 lgbr RRE_RR "load byte 64" z9-109 zarch +b927 lhr RRE_RR "load halfword 32" z9-109 zarch +b907 lghr RRE_RR "load halfword 64" z9-109 zarch +c001 lgfi RIL_RI "load immediate 64<32" z9-109 zarch +e30000000094 llc RXY_RRRD "load logical character 32" z9-109 zarch +b994 llcr RRE_RR "load logical character 32" z9-109 zarch +b984 llgcr RRE_RR "load logical character 64" z9-109 zarch +e30000000095 llh RXY_RRRD "load logical halfword 32" z9-109 zarch +b995 llhr RRE_RR "load logical halfword 32" z9-109 zarch +b985 llghr RRE_RR "load logical halfword 64" z9-109 zarch +c00e llihf RIL_RU "load logical immediate high" z9-109 zarch +c00f llilf RIL_RU "load logical immediate low" z9-109 zarch +c00c oihf RIL_RU "or immediate high" z9-109 zarch +c00d oilf RIL_RU "or immediate low" z9-109 zarch +c205 slfi RIL_RU "subtract logical immediate 32" z9-109 zarch +c204 slgfi RIL_RU "subtract logical immediate 64<32" z9-109 zarch +# z9-109 store facility list extended +b2b0 stfle S_RD "store facility list extended" z9-109 zarch +# z9-109 store clock fast +b27c stckf S_RD "store clock fast" z9-109 zarch +# z9-109 move with optional specifications instruction +c800 mvcos SSF_RRDRD "move with optional specifications" z9-109 zarch +# z9-109 load page-table-entry address instruction +b9aa lptea RRF_RURR "load page-table-entry address" z9-109 zarch +# z9-109 conditional sske facility, sske instruction entered twice +b22b sske RRF_M0RR "set storage key extended" z9-109 zarch +# z9-109 etf2-enhancement facility, instructions entered twice +b993 troo RRF_M0RR "translate one to one" z9-109 esa,zarch +b992 trot RRF_M0RR "translate one to two" z9-109 esa,zarch +b991 trto RRF_M0RR "translate two to one" z9-109 esa,zarch +b990 trtt RRF_M0RR "translate two to two" z9-109 esa,zarch +# z9-109 etf3-enhancement facility, some instructions entered twice +b9b1 cu24 RRF_M0RR "convert utf-16 to utf-32" z9-109 zarch +b2a6 cu21 RRF_M0RR "convert utf-16 to utf-8" z9-109 zarch +b2a6 cuutf RRF_M0RR "convert unicode to utf-8" z9-109 zarch +b9b3 cu42 RRF_M0RR "convert utf-32 to utf-16" z9-109 zarch +b9b2 cu41 RRF_M0RR "convert utf-32 to utf-8" z9-109 zarch +b2a7 cu12 RRF_M0RR "convert utf-8 to utf-16" z9-109 zarch +b2a7 cutfu RRF_M0RR "convert utf-8 to unicode" z9-109 zarch +b9b0 cu14 RRF_M0RR "convert utf-8 to utf-32" z9-109 zarch diff -uprN binutils-2.16.91.0.2/patches/ChangeLog binutils-2.16.91.0.3/patches/ChangeLog --- binutils-2.16.91.0.2/patches/ChangeLog 2005-07-20 12:27:29.000000000 -0700 +++ binutils-2.16.91.0.3/patches/ChangeLog 2005-08-22 12:27:46.000000000 -0700 @@ -1,3 +1,13 @@ +2004-08-17 H.J. Lu + + * binutils-adjust-3.patch: Removed. + * README: Don't apply it. + +2004-08-15 H.J. Lu + + * binutils-adjust-3.patch: New file. + * README: Apply it. + 2004-07-11 H.J. Lu * binutils-provide-5.patchh: Removed.