mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
[AArch64, ILP32] Retire -milp32 and -mlp64; use -mabi=ilp32 and -mabi=lp64.
gas/ * config/tc-aarch64.c (enum aarch64_abi_type): New enumeration tag. (AARCH64_ABI_LP64, AARCH64_ABI_ILP32): New enumerators. (aarch64_abi): New variable. (ilp32_p): Change to be a macro. (aarch64_opts): Remove the support for option -milp32 and -mlp64. (struct aarch64_option_abi_value_table): New struct. (aarch64_abis): New table. (aarch64_parse_abi): New function. (aarch64_long_opts): Add entry for -mabi=. * doc/as.texinfo (Target AArch64 options): Document -mabi. * doc/c-aarch64.texi: Likewise. gas/testsuite/ * gas/aarch64/ilp32-basic.d (#as): Update to use -mabi=ilp32
This commit is contained in:
parent
0a01f695e0
commit
69091a2cc4
@ -1,3 +1,17 @@
|
||||
2013-07-19 Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
|
||||
* config/tc-aarch64.c (enum aarch64_abi_type): New enumeration tag.
|
||||
(AARCH64_ABI_LP64, AARCH64_ABI_ILP32): New enumerators.
|
||||
(aarch64_abi): New variable.
|
||||
(ilp32_p): Change to be a macro.
|
||||
(aarch64_opts): Remove the support for option -milp32 and -mlp64.
|
||||
(struct aarch64_option_abi_value_table): New struct.
|
||||
(aarch64_abis): New table.
|
||||
(aarch64_parse_abi): New function.
|
||||
(aarch64_long_opts): Add entry for -mabi=.
|
||||
* doc/as.texinfo (Target AArch64 options): Document -mabi.
|
||||
* doc/c-aarch64.texi: Likewise.
|
||||
|
||||
2013-07-18 Jim Thomas <thomas@cfht.hawaii.edu>
|
||||
|
||||
* config/tc-i386-intel.c (i386_intel_operand): Fixed signed vs
|
||||
|
@ -61,11 +61,21 @@ static const aarch64_feature_set aarch64_arch_none = AARCH64_ARCH_NONE;
|
||||
/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
|
||||
static symbolS *GOT_symbol;
|
||||
|
||||
/* Which ABI to use. */
|
||||
enum aarch64_abi_type
|
||||
{
|
||||
AARCH64_ABI_LP64 = 0,
|
||||
AARCH64_ABI_ILP32 = 1
|
||||
};
|
||||
|
||||
/* AArch64 ABI for the output file. */
|
||||
static enum aarch64_abi_type aarch64_abi = AARCH64_ABI_LP64;
|
||||
|
||||
/* When non-zero, program to a 32-bit model, in which the C data types
|
||||
int, long and all pointer types are 32-bit objects (ILP32); or to a
|
||||
64-bit model, in which the C int type is 32-bits but the C long type
|
||||
and all pointer types are 64-bit objects (LP64). */
|
||||
static int ilp32_p = 0;
|
||||
#define ilp32_p (aarch64_abi == AARCH64_ABI_ILP32)
|
||||
#endif
|
||||
|
||||
enum neon_el_type
|
||||
@ -7090,10 +7100,6 @@ static struct aarch64_option_table aarch64_opts[] = {
|
||||
{"mbig-endian", N_("assemble for big-endian"), &target_big_endian, 1, NULL},
|
||||
{"mlittle-endian", N_("assemble for little-endian"), &target_big_endian, 0,
|
||||
NULL},
|
||||
#ifdef OBJ_ELF
|
||||
{"mlp64", N_("select the LP64 model"), &ilp32_p, 0, NULL},
|
||||
{"milp32", N_("select the ILP32 model"), &ilp32_p, 1, NULL},
|
||||
#endif /* OBJ_ELF */
|
||||
#ifdef DEBUG_AARCH64
|
||||
{"mdebug-dump", N_("temporary switch for dumping"), &debug_dump, 1, NULL},
|
||||
#endif /* DEBUG_AARCH64 */
|
||||
@ -7312,7 +7318,47 @@ aarch64_parse_arch (char *str)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ABIs. */
|
||||
struct aarch64_option_abi_value_table
|
||||
{
|
||||
char *name;
|
||||
enum aarch64_abi_type value;
|
||||
};
|
||||
|
||||
static const struct aarch64_option_abi_value_table aarch64_abis[] = {
|
||||
{"ilp32", AARCH64_ABI_ILP32},
|
||||
{"lp64", AARCH64_ABI_LP64},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
static int
|
||||
aarch64_parse_abi (char *str)
|
||||
{
|
||||
const struct aarch64_option_abi_value_table *opt;
|
||||
size_t optlen = strlen (str);
|
||||
|
||||
if (optlen == 0)
|
||||
{
|
||||
as_bad (_("missing abi name `%s'"), str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (opt = aarch64_abis; opt->name != NULL; opt++)
|
||||
if (strlen (opt->name) == optlen && strncmp (str, opt->name, optlen) == 0)
|
||||
{
|
||||
aarch64_abi = opt->value;
|
||||
return 1;
|
||||
}
|
||||
|
||||
as_bad (_("unknown abi `%s'\n"), str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct aarch64_long_option_table aarch64_long_opts[] = {
|
||||
#ifdef OBJ_ELF
|
||||
{"mabi=", N_("<abi name>\t specify for ABI <abi name>"),
|
||||
aarch64_parse_abi, NULL},
|
||||
#endif /* OBJ_ELF */
|
||||
{"mcpu=", N_("<cpu name>\t assemble for CPU <cpu name>"),
|
||||
aarch64_parse_cpu, NULL},
|
||||
{"march=", N_("<arch name>\t assemble for architecture <arch name>"),
|
||||
|
@ -248,6 +248,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
|
||||
|
||||
@emph{Target AArch64 options:}
|
||||
[@b{-EB}|@b{-EL}]
|
||||
[@b{-mabi}=@var{ABI}]
|
||||
@end ifset
|
||||
@ifset ALPHA
|
||||
|
||||
|
@ -44,6 +44,12 @@ be marked as being encoded for a big-endian processor.
|
||||
This option specifies that the output generated by the assembler should
|
||||
be marked as being encoded for a little-endian processor.
|
||||
|
||||
@cindex @code{-mabi=} command line option, AArch64
|
||||
@item -mabi=@var{abi}
|
||||
Specify which ABI the source code uses. The recognized arguments
|
||||
are: @code{ilp32} and @code{lp64}, which decides the generated object
|
||||
file in ELF32 and ELF64 format respectively. The default is @code{lp64}.
|
||||
|
||||
@end table
|
||||
@c man end
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2013-07-19 Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
|
||||
* gas/aarch64/ilp32-basic.d (#as): Update to use -mabi=ilp32
|
||||
|
||||
2013-07-14 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* gas/mips/vr5400-ill.s, gas/mips/vr5400-ill.l: Add some more cases.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#as: -milp32
|
||||
#as: -mabi=ilp32
|
||||
#objdump: -dr
|
||||
|
||||
.*: file format elf32-.*aarch64
|
||||
|
Loading…
Reference in New Issue
Block a user