mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 02:24:17 +08:00
[ARC] Check if an input asm file is rf16 compliant
Check if an input asm file is rf16 compliant; if not, and the tag says otherwise, fix the tag and emit a warning. gas/ 2017-09-20 Claudiu Zissulescu <claziss@synopsys.com> * config/tc-arc.c (rf16_only): New static variable. (autodetect_attributes): Check if we are rf16 compliant. (arc_set_public_attributes): Fix and emit the warning is required. * testsuite/gas/arc/attr-rf16.d: New file. * testsuite/gas/arc/attr-rf16.err: Likewise. * testsuite/gas/arc/attr-rf16.s: Likewise.
This commit is contained in:

committed by
Claudiu Zissulescu

parent
6af0448446
commit
63741043bd
@ -1,3 +1,12 @@
|
|||||||
|
2018-08-06 Claudiu Zissulescu <claziss@synopsys.com>
|
||||||
|
|
||||||
|
* config/tc-arc.c (rf16_only): New static variable.
|
||||||
|
(autodetect_attributes): Check if we are rf16 compliant.
|
||||||
|
(arc_set_public_attributes): Fix and emit the warning is required.
|
||||||
|
* testsuite/gas/arc/attr-rf16.d: New file.
|
||||||
|
* testsuite/gas/arc/attr-rf16.err: Likewise.
|
||||||
|
* testsuite/gas/arc/attr-rf16.s: Likewise.
|
||||||
|
|
||||||
2018-08-06 Claudiu Zissulescu <claziss@synopsys.com>
|
2018-08-06 Claudiu Zissulescu <claziss@synopsys.com>
|
||||||
|
|
||||||
* config/tc-arc.c (arc_set_public_attributes): Add
|
* config/tc-arc.c (arc_set_public_attributes): Add
|
||||||
|
@ -475,6 +475,9 @@ static const struct cpu_type
|
|||||||
/* Information about the cpu/variant we're assembling for. */
|
/* Information about the cpu/variant we're assembling for. */
|
||||||
static struct cpu_type selected_cpu = { 0, 0, 0, E_ARC_OSABI_CURRENT, 0 };
|
static struct cpu_type selected_cpu = { 0, 0, 0, E_ARC_OSABI_CURRENT, 0 };
|
||||||
|
|
||||||
|
/* TRUE if current assembly code uses RF16 only registers. */
|
||||||
|
static bfd_boolean rf16_only = TRUE;
|
||||||
|
|
||||||
/* MPY option. */
|
/* MPY option. */
|
||||||
static unsigned mpy_option = 0;
|
static unsigned mpy_option = 0;
|
||||||
|
|
||||||
@ -2383,6 +2386,17 @@ autodetect_attributes (const struct arc_opcode *opcode,
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (tok[i].X_op)
|
||||||
|
{
|
||||||
|
case O_register:
|
||||||
|
if ((tok[i].X_add_number >= 4 && tok[i].X_add_number <= 9)
|
||||||
|
|| (tok[i].X_add_number >= 16 && tok[i].X_add_number <= 25))
|
||||||
|
rf16_only = FALSE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5017,6 +5031,17 @@ arc_set_public_attributes (void)
|
|||||||
|
|
||||||
/* Tag_ARC_ATR_version. */
|
/* Tag_ARC_ATR_version. */
|
||||||
arc_set_attribute_int (Tag_ARC_ATR_version, 1);
|
arc_set_attribute_int (Tag_ARC_ATR_version, 1);
|
||||||
|
|
||||||
|
/* Tag_ARC_ABI_rf16. */
|
||||||
|
if (attributes_set_explicitly[Tag_ARC_ABI_rf16]
|
||||||
|
&& bfd_elf_get_obj_attr_int (stdoutput, OBJ_ATTR_PROC,
|
||||||
|
Tag_ARC_ABI_rf16)
|
||||||
|
&& !rf16_only)
|
||||||
|
{
|
||||||
|
as_warn (_("Overwrite explicitly set Tag_ARC_ABI_rf16 to full "
|
||||||
|
"register file"));
|
||||||
|
bfd_elf_add_proc_attr_int (stdoutput, Tag_ARC_ABI_rf16, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add the default contents for the .ARC.attributes section. */
|
/* Add the default contents for the .ARC.attributes section. */
|
||||||
|
10
gas/testsuite/gas/arc/attr-rf16.d
Normal file
10
gas/testsuite/gas/arc/attr-rf16.d
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#error-output: attr-rf16.err
|
||||||
|
#as:
|
||||||
|
#readelf: -A
|
||||||
|
|
||||||
|
Attribute Section: ARC
|
||||||
|
File Attributes
|
||||||
|
Tag_ARC_CPU_base: ARCEM
|
||||||
|
Tag_ARC_CPU_name: "em"
|
||||||
|
Tag_ARC_ABI_osver: v4
|
||||||
|
Tag_ARC_ATR_version: 1
|
2
gas/testsuite/gas/arc/attr-rf16.err
Normal file
2
gas/testsuite/gas/arc/attr-rf16.err
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[^:]*: Assembler messages:
|
||||||
|
[^:]*: Warning: Overwrite explicitly set Tag_ARC_ABI_rf16 to full register file
|
4
gas/testsuite/gas/arc/attr-rf16.s
Normal file
4
gas/testsuite/gas/arc/attr-rf16.s
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.cpu em
|
||||||
|
.arc_attribute Tag_ARC_ABI_rf16,1
|
||||||
|
mov r8,0
|
||||||
|
mov r16,0
|
Reference in New Issue
Block a user