From d95b73282a3dcab0c2eab32f327491147a651173 Mon Sep 17 00:00:00 2001 From: Gavin Romig-Koch Date: Sun, 20 Dec 1998 00:01:51 +0000 Subject: [PATCH] * config/tc-mips.c (mips_eabi64): New. (md_begin): Set mips_eabi64. (mips_elf_final_processing): Use it. --- gas/ChangeLog | 6 ++++++ gas/config/tc-mips.c | 26 +++++++++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 236a160..cbfb4e1 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +1998-12-19 Gavin Romig-Koch + + * config/tc-mips.c (mips_eabi64): New. + (md_begin): Set mips_eabi64. + (mips_elf_final_processing): Use it. + 1998-12-18 Gavin Romig-Koch * config/tc-mips.c (mips_elf_final_processing): diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 3de536d..87343be 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -201,6 +201,9 @@ static int mips_cpu = -1; /* The argument of the -mabi= flag. */ static char* mips_abi_string = 0; +/* Wether we should mark the file EABI64 or EABI32. */ +static int mips_eabi64 = 0; + /* Whether the 4650 instructions (mad/madu) are permitted. */ static int mips_4650 = -1; @@ -1012,6 +1015,7 @@ md_begin () else if (mips_cpu == 4000 || mips_cpu == 4100 /* start-sanitize-vr4xxx */ + || mips_cpu == 4111 || mips_cpu == 4121 /* end-sanitize-vr4xxx */ || mips_cpu == 4400 @@ -1056,7 +1060,11 @@ md_begin () mips_4010 = (mips_cpu == 4010); if (mips_4100 < 0) - mips_4100 = (mips_cpu == 4100); + mips_4100 = (mips_cpu == 4100 + /* start-sanitize-vr4xxx */ + || mips_cpu == 4111 + /* end-sanitize-vr4xxx */ + ); /* start-sanitize-vr4xxx */ if (mips_4121 < 0) @@ -1099,6 +1107,12 @@ md_begin () if (mips_opts.isa < 2 && mips_trap) as_bad (_("trap exception not supported at ISA 1")); + /* Set the EABI kind based on the ISA before the user gets + to change the ISA with directives. This isn't really + the best, but then neither is basing the abi on the isa. */ + if (mips_opts.isa > 2 && strcmp (mips_abi_string,"eabi")) + mips_eabi64 = 1; + if (mips_cpu != 0 && mips_cpu != -1) { ok = bfd_set_arch_mach (stdoutput, bfd_arch_mips, mips_cpu); @@ -9603,7 +9617,7 @@ md_parse_option (c, arg) mips_cpu = 4100; /* start-sanitize-vr4xxx */ else if (strcmp (p, "4111") == 0) - mips_cpu = 4100; + mips_cpu = 4111; else if (strcmp (p, "4121") == 0) mips_cpu = 4121; /* end-sanitize-vr4xxx */ @@ -9918,6 +9932,8 @@ MIPS options:\n\ -no-m4100 do not permit VR4100 instructions\n")); /* start-sanitize-vr4xxx */ fprintf(stream, _("\ +-mcpu=vr4111 generate code for vr4111\n")); + fprintf(stream, _("\ -mcpu=vr4121 generate code for vr4121\n\ -m4121 permit VR4121 instructions\n\ -no-m4121 do not permit VR4121 instructions\n")); @@ -12092,10 +12108,10 @@ mips_elf_final_processing () elf_elfheader (stdoutput)->e_flags |= E_MIPS_ABI_O64; else if (strcmp (mips_abi_string,"eabi") == 0) { - if (mips_opts.isa > 2) - elf_elfheader (stdoutput)->e_flags |= E_MIPS_ABI_EABI32; - else + if (mips_eabi64) elf_elfheader (stdoutput)->e_flags |= E_MIPS_ABI_EABI64; + else + elf_elfheader (stdoutput)->e_flags |= E_MIPS_ABI_EABI32; } } -- 2.7.4