[PATCH 2/3] CSKY: Support option -mfloat-abi.
Cooper Qu
cooper.qu@linux.alibaba.com
Mon Sep 7 09:25:02 GMT 2020
More information about the Binutils mailing list
Mon Sep 7 09:25:02 GMT 2020
- Previous message (by thread): [PATCH 1/3] CSKY: Add FPUV3 instructions, which supported by ck860f.
- Next message (by thread): [PATCH 3/3] CSKY: Change mvtc and mulsw's ISA flag.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
The option corresponds to GCC to control the float calling conversion, and the value will be stored in .csky.attributes section. Co-Authored-By: Lifang Xia <lifang_xia@c-sky.com> gas/ * config/tc-csky.c (float_abi): New. (md_longopts): Add mfloat-abi. (struct sky_option_value_table): New. (csky_float_abis): New, the possible values for -mfloat-abi. (parse_float_abi): New funtion. (md_show_usage): Show help information for -mfloat-abi. (set_csky_attribute): Store float-abi value. --- gas/ChangeLog | 10 ++++++++ gas/config/tc-csky.c | 57 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/gas/ChangeLog b/gas/ChangeLog index 3ded717681d..a7afe8798c3 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +2020-09-07 Cooper Qu <cooper.qu@linux.alibaba.com> + + * config/tc-csky.c (float_abi): New. + (md_longopts): Add mfloat-abi. + (struct sky_option_value_table): New. + (csky_float_abis): New, the possible values for -mfloat-abi. + (parse_float_abi): New funtion. + (md_show_usage): Show help information for -mfloat-abi. + (set_csky_attribute): Store float-abi value. + 2020-09-07 Cooper Qu <cooper.qu@linux.alibaba.com> * config/tc-csky.c (float_work_fpuv3_fmovi): New function, diff --git a/gas/config/tc-csky.c b/gas/config/tc-csky.c index 14155459cab..25f77131d34 100644 --- a/gas/config/tc-csky.c +++ b/gas/config/tc-csky.c @@ -463,6 +463,7 @@ static int do_func_dump = 0; /* dump literals after every function. */ static int do_br_dump = 1; /* work for -mabr/-mno-abr, control the literals dump. */ static int do_intr_stack = -1; /* control interrupt stack module, 801&802&803 default on, 807&810, default off. */ +static int float_abi = 0; #ifdef INCLUDE_BRANCH_STUB static int do_use_branchstub = -1; @@ -750,6 +751,8 @@ struct option md_longopts[] = { {"march", required_argument, NULL, OPTION_MARCH}, #define OPTION_MCPU (OPTION_MD_BASE + 1) {"mcpu", required_argument, NULL, OPTION_MCPU}, +#define OPTION_FLOAT_ABI (OPTION_MD_BASE + 2) + {"mfloat-abi", required_argument, NULL, OPTION_FLOAT_ABI}, /* Remaining options just set boolean flags. */ {"EL", no_argument, &target_big_endian, 0}, @@ -960,6 +963,35 @@ parse_arch (const char *str) as_bad (_("unknown architecture `%s'"), str); } +struct csky_option_value_table +{ + const char *name; + long value; +}; + +static const struct csky_option_value_table csky_float_abis[] = +{ + {"hard", VAL_CSKY_FPU_ABI_HARD}, + {"softfp", VAL_CSKY_FPU_ABI_SOFTFP}, + {"soft", VAL_CSKY_FPU_ABI_SOFT}, + {NULL, 0} +}; + +static bfd_boolean +parse_float_abi (const char *str) +{ + const struct csky_option_value_table * opt; + + for (opt = csky_float_abis; opt->name != NULL; opt++) + if (strcasecmp (opt->name, str) == 0) + { + float_abi = opt->value; + return TRUE; + } + + as_bad (_("unknown floating point abi `%s'\n"), str); + return FALSE; +} #ifdef OBJ_ELF /* Implement the TARGET_FORMAT macro. */ @@ -1141,6 +1173,25 @@ md_show_usage (FILE *fp) } fprintf (fp, "\n"); + fprintf (fp, _("\ + -mfloat-abi=ABI select float ABI:")); + for (i = 0, n = margin; csky_float_abis[i].name != NULL; i++) + { + int l = strlen (csky_float_abis[i].name); + if (n + l >= margin) + { + fprintf (fp, "\n\t\t\t\t"); + n = l; + } + else + { + fprintf (fp, " "); + n += l + 1; + } + fprintf (fp, "%s", csky_float_abis[i].name); + } + fprintf (fp, "\n"); + fprintf (fp, _("\ -EL -mlittle-endian generate little-endian output\n")); fprintf (fp, _("\ @@ -1271,6 +1322,9 @@ static void set_csky_attribute (void) bfd_elf_add_obj_attr_string (stdoutput, OBJ_ATTR_PROC, Tag_CSKY_FPU_NUMBER_MODULE, "IEEE 754"); + bfd_elf_add_obj_attr_int (stdoutput, OBJ_ATTR_PROC, + Tag_CSKY_FPU_ABI, + float_abi); } } @@ -4506,6 +4560,9 @@ md_parse_option (int c, const char *arg) case OPTION_MCPU: parse_cpu (arg); break; + case OPTION_FLOAT_ABI: + parse_float_abi (arg); + break; default: return 0; } -- 2.26.2
- Previous message (by thread): [PATCH 1/3] CSKY: Add FPUV3 instructions, which supported by ck860f.
- Next message (by thread): [PATCH 3/3] CSKY: Change mvtc and mulsw's ISA flag.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list