[ARC] Don't allow pc-rel relocations for J* instructions.

gas/
2016-04-05  Claudiu Zissulescu  <claziss@synopsys.com>

        * config/tc-arc.c (assemble_insn): Prohibit pc-rel relocations for
        JUMP instructions type.
        * testsuite/gas/arc/relocs-errors.d: New file.
        * testsuite/gas/arc/relocs-errors.err: Likewise.
        * testsuite/gas/arc/relocs-errors.s: Likewise.
This commit is contained in:
Claudiu Zissulescu 2016-04-05 16:22:19 +02:00
parent 1f599d0e7b
commit 6ec1f28285
5 changed files with 28 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2016-04-05 Claudiu Zissulescu <claziss@synopsys.com>
* config/tc-arc.c (assemble_insn): Prohibit pc-rel relocations for
JUMP instructions type.
* testsuite/gas/arc/relocs-errors.d: New file.
* testsuite/gas/arc/relocs-errors.err: Likewise.
* testsuite/gas/arc/relocs-errors.s: Likewise.
2016-04-04 H.J. Lu <hongjiu.lu@intel.com>
PR gas/19498

View File

@ -3363,6 +3363,10 @@ assemble_insn (const struct arc_opcode *opcode,
switch (t->X_md)
{
case O_plt:
if (opcode->class == JUMP)
as_bad_where (frag_now->fr_file, frag_now->fr_line,
_("Unable to use @plt relocatio for insn %s"),
opcode->name);
needGOTSymbol = TRUE;
reloc = find_reloc ("plt", opcode->name,
pflags, nflg,
@ -3376,7 +3380,7 @@ assemble_insn (const struct arc_opcode *opcode,
break;
case O_pcl:
reloc = ARC_RELOC_TABLE (t->X_md)->reloc;
if (ARC_SHORT (opcode->mask))
if (ARC_SHORT (opcode->mask) || opcode->class == JUMP)
as_bad_where (frag_now->fr_file, frag_now->fr_line,
_("Unable to use @pcl relocation for insn %s"),
opcode->name);

View File

@ -0,0 +1 @@
#error-output: relocs-errors.err

View File

@ -0,0 +1,7 @@
[^:]*: Assembler messages:
[^:]*:1: Error: Unable to use @plt relocatio for insn j
[^:]*:2: Error: Unable to use @plt relocatio for insn jl
[^:]*:3: Error: Unable to use @plt relocatio for insn j
[^:]*:5: Error: Unable to use @pcl relocation for insn j
[^:]*:6: Error: Unable to use @pcl relocation for insn jl
[^:]*:7: Error: Unable to use @pcl relocation for insn j

View File

@ -0,0 +1,7 @@
j sym@plt
jl sym@plt
jeq sym@plt
j sym@pcl
jl sym@pcl
jeq sym@pcl