* config/tc-sh.c (shl): Remove.
(big): New function. (little): Remove shl handling. Emit error for endian mismatch. (md_show_usage): Add description of -big. (md_parse_option): Handle OPTION_BIG. Remove shl handling. (OPTION_BIG): Add. (md_pseudo_table): Add .big. (md_longopts): Add -big. (md_begin): Don't set target_big_endian here. * config/tc-sh.h (TARGET_BYTES_BIG_ENDIAN): Remove. (LISTING_HEADER, COFF_MAGIC, TARGET_FORMAT): Use target_big_endian. (shl): Remove. * configure.in (endian): Default is big. (sh-*-pe*): Little endian. (cpu_type): Set sh for target sh*. * configure: Regenerate.
This commit is contained in:
parent
1aa20aa88f
commit
05982cacb9
5 changed files with 223 additions and 192 deletions
|
@ -1,3 +1,23 @@
|
|||
2001-10-16 NIIBE Yutaka <gniibe@m17n.org>,
|
||||
Hans-Peter Nilsson <hp@bitrange.com>
|
||||
|
||||
* config/tc-sh.c (shl): Remove.
|
||||
(big): New function.
|
||||
(little): Remove shl handling. Emit error for endian mismatch.
|
||||
(md_show_usage): Add description of -big.
|
||||
(md_parse_option): Handle OPTION_BIG. Remove shl handling.
|
||||
(OPTION_BIG): Add.
|
||||
(md_pseudo_table): Add .big.
|
||||
(md_longopts): Add -big.
|
||||
(md_begin): Don't set target_big_endian here.
|
||||
* config/tc-sh.h (TARGET_BYTES_BIG_ENDIAN): Remove.
|
||||
(LISTING_HEADER, COFF_MAGIC, TARGET_FORMAT): Use target_big_endian.
|
||||
(shl): Remove.
|
||||
* configure.in (endian): Default is big.
|
||||
(sh-*-pe*): Little endian.
|
||||
(cpu_type): Set sh for target sh*.
|
||||
* configure: Regenerate.
|
||||
|
||||
2001-10-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
||||
|
||||
* config/tc-mips.c (md_apply_fix): Preliminary handling of NewABI
|
||||
|
|
|
@ -57,6 +57,7 @@ static void s_uacons PARAMS ((int));
|
|||
static sh_opcode_info *find_cooked_opcode PARAMS ((char **));
|
||||
static unsigned int assemble_ppi PARAMS ((char *, sh_opcode_info *));
|
||||
static void little PARAMS ((int));
|
||||
static void big PARAMS ((int));
|
||||
static bfd_reloc_code_real_type sh_elf_suffix
|
||||
PARAMS ((char **str_p, expressionS *, expressionS *new_exp_p));
|
||||
static int parse_reg PARAMS ((char *, int *, int *));
|
||||
|
@ -80,13 +81,25 @@ static void sh_elf_cons PARAMS ((int));
|
|||
symbolS *GOT_symbol; /* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
|
||||
#endif
|
||||
|
||||
int shl = 0;
|
||||
static void
|
||||
big (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
{
|
||||
if (! target_big_endian)
|
||||
as_bad (_("directive .big encountered when option -big required"));
|
||||
|
||||
/* Stop further messages. */
|
||||
target_big_endian = 1;
|
||||
}
|
||||
|
||||
static void
|
||||
little (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
{
|
||||
shl = 1;
|
||||
if (target_big_endian)
|
||||
as_bad (_("directive .little encountered when option -little required"));
|
||||
|
||||
/* Stop further messages. */
|
||||
target_big_endian = 0;
|
||||
}
|
||||
|
||||
|
@ -107,6 +120,7 @@ const pseudo_typeS md_pseudo_table[] =
|
|||
{"int", cons, 4},
|
||||
{"word", cons, 2},
|
||||
#endif /* OBJ_ELF */
|
||||
{"big", big, 0},
|
||||
{"form", listing_psize, 0},
|
||||
{"little", little, 0},
|
||||
{"heading", listing_title, 0},
|
||||
|
@ -439,14 +453,6 @@ md_begin ()
|
|||
char *prev_name = "";
|
||||
int target_arch;
|
||||
|
||||
#ifdef TE_PE
|
||||
/* The WinCE OS only supports little endian executables. */
|
||||
target_big_endian = 0;
|
||||
#else
|
||||
if (! shl)
|
||||
target_big_endian = 1;
|
||||
#endif
|
||||
|
||||
target_arch = arch_sh1_up & ~(sh_dsp ? arch_sh3e_up : arch_sh_dsp_up);
|
||||
valid_arch = target_arch;
|
||||
|
||||
|
@ -2127,11 +2133,13 @@ CONST char *md_shortopts = "";
|
|||
struct option md_longopts[] =
|
||||
{
|
||||
#define OPTION_RELAX (OPTION_MD_BASE)
|
||||
#define OPTION_LITTLE (OPTION_MD_BASE + 1)
|
||||
#define OPTION_BIG (OPTION_MD_BASE + 1)
|
||||
#define OPTION_LITTLE (OPTION_BIG + 1)
|
||||
#define OPTION_SMALL (OPTION_LITTLE + 1)
|
||||
#define OPTION_DSP (OPTION_SMALL + 1)
|
||||
|
||||
{"relax", no_argument, NULL, OPTION_RELAX},
|
||||
{"big", no_argument, NULL, OPTION_BIG},
|
||||
{"little", no_argument, NULL, OPTION_LITTLE},
|
||||
{"small", no_argument, NULL, OPTION_SMALL},
|
||||
{"dsp", no_argument, NULL, OPTION_DSP},
|
||||
|
@ -2150,8 +2158,11 @@ md_parse_option (c, arg)
|
|||
sh_relax = 1;
|
||||
break;
|
||||
|
||||
case OPTION_BIG:
|
||||
target_big_endian = 1;
|
||||
break;
|
||||
|
||||
case OPTION_LITTLE:
|
||||
shl = 1;
|
||||
target_big_endian = 0;
|
||||
break;
|
||||
|
||||
|
@ -2177,6 +2188,7 @@ md_show_usage (stream)
|
|||
fprintf (stream, _("\
|
||||
SH options:\n\
|
||||
-little generate little endian code\n\
|
||||
-big generate big endian code\n\
|
||||
-relax alter jump instructions for long displacements\n\
|
||||
-small align sections to 4 byte boundaries, not 16\n\
|
||||
-dsp enable sh-dsp insns, and disable sh3e / sh4 insns.\n"));
|
||||
|
|
|
@ -21,8 +21,6 @@
|
|||
|
||||
#define TC_SH
|
||||
|
||||
#define TARGET_BYTES_BIG_ENDIAN 0
|
||||
|
||||
#define TARGET_ARCH bfd_arch_sh
|
||||
|
||||
#if ANSI_PROTOTYPES
|
||||
|
@ -30,9 +28,6 @@ struct segment_info_struct;
|
|||
struct internal_reloc;
|
||||
#endif
|
||||
|
||||
/* Whether in little endian mode. */
|
||||
extern int shl;
|
||||
|
||||
/* Whether -relax was used. */
|
||||
extern int sh_relax;
|
||||
|
||||
|
@ -81,7 +76,9 @@ extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
|
|||
|
||||
#define IGNORE_NONSTANDARD_ESCAPES
|
||||
|
||||
#define LISTING_HEADER (shl ? "Hitachi Super-H GAS Little Endian" : "Hitachi Super-H GAS Big Endian")
|
||||
#define LISTING_HEADER \
|
||||
(!target_big_endian \
|
||||
? "Hitachi Super-H GAS Little Endian" : "Hitachi Super-H GAS Big Endian")
|
||||
|
||||
#define md_operand(x)
|
||||
|
||||
|
@ -123,7 +120,7 @@ extern void sh_frob_file PARAMS ((void));
|
|||
|
||||
#define BFD_ARCH TARGET_ARCH
|
||||
|
||||
#define COFF_MAGIC (shl ? SH_ARCH_MAGIC_LITTLE : SH_ARCH_MAGIC_BIG)
|
||||
#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)
|
||||
|
@ -168,9 +165,9 @@ extern int tc_coff_sizemachdep PARAMS ((fragS *));
|
|||
extern int target_big_endian;
|
||||
|
||||
#ifdef TE_LINUX
|
||||
#define TARGET_FORMAT (shl ? "elf32-sh-linux" : "elf32-shbig-linux")
|
||||
#define TARGET_FORMAT (!target_big_endian ? "elf32-sh-linux" : "elf32-shbig-linux")
|
||||
#else
|
||||
#define TARGET_FORMAT (shl ? "elf32-shl" : "elf32-sh")
|
||||
#define TARGET_FORMAT (!target_big_endian ? "elf32-shl" : "elf32-sh")
|
||||
#endif
|
||||
|
||||
#define elf_tc_final_processing sh_elf_final_processing
|
||||
|
|
341
gas/configure
vendored
341
gas/configure
vendored
File diff suppressed because it is too large
Load diff
|
@ -144,6 +144,7 @@ changequote([,])dnl
|
|||
rs6000*) cpu_type=ppc ;;
|
||||
s390x*) cpu_type=s390 arch=s390x ;;
|
||||
s390*) cpu_type=s390 arch=s390 ;;
|
||||
sh*) cpu_type=sh endian=big ;;
|
||||
sparclite*) cpu_type=sparc arch=sparclite ;;
|
||||
sparclet*) cpu_type=sparc arch=sparclet ;;
|
||||
sparc64*) cpu_type=sparc arch=v9-64 ;;
|
||||
|
@ -401,7 +402,7 @@ changequote([,])dnl
|
|||
sh-*-linux*) fmt=elf em=linux ;;
|
||||
sh-*-elf*) fmt=elf ;;
|
||||
sh-*-coff*) fmt=coff bfd_gas=yes;;
|
||||
sh-*-pe*) fmt=coff em=pe bfd_gas=yes;;
|
||||
sh-*-pe*) fmt=coff em=pe bfd_gas=yes endian=little ;;
|
||||
sh-*-rtemself*) fmt=elf ;;
|
||||
sh-*-rtems*) fmt=coff bfd_gas=yes;;
|
||||
|
||||
|
|
Loading…
Reference in a new issue