[ARC] Add JLI support.
authorJohn Eric Martin <John.Martin@emmicro-us.com>
Wed, 19 Jul 2017 07:56:55 +0000 (09:56 +0200)
committerclaziss <claziss@synopsys.com>
Wed, 19 Jul 2017 07:56:55 +0000 (09:56 +0200)
The following relocation types were added to GCC/binutils:

ARC_JLI_SECTOFF is a relocation type in Metaware that is now used by
GCC as well to adjust the index of function calls to functions with
attribute jli_call_always.

bfd/
2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>
    John Eric Martin  <John.Martin@emmicro-us.com>

* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* elf32-arc.c (JLI): Define.
* reloc.c: Add JLI relocations.

gas/
2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>

* testsuite/gas/arc/jli-1.d: New file.
* testsuite/gas/arc/jli-1.s: Likewise.
* testsuite/gas/arc/taux.d: Update for jli_base.

include/
2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>
    John Eric Martin  <John.Martin@emmicro-us.com>

* elf/arc-reloc.def: Add JLI relocs howto.
* opcode/arc-func.h (replace_jli): New function.

ld/
2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>
    John Eric Martin  <John.Martin@emmicro-us.com>

* emulparams/arcelf.sh (JLI_START_TABLE): Define.
* scripttempl/elfarc.sc: Handle jlitab section.
* scripttempl/elfarcv2.sc: Likewise.
* testsuite/ld-arc/arc.exp: Add JLI test.
* testsuite/ld-arc/jli-script.ld: New file.
* testsuite/ld-arc/jli-simple.dd: Likewise.
* testsuite/ld-arc/jli-simple.rd: Likewise.
* testsuite/ld-arc/jli-simple.s: Likewise.
* testsuite/ld/testsuite/ld-arc/jli-overflow.s: Likewise.
* testsuite/ld/testsuite/ld-arc/jli-overflow.d: Likewise.
* testsuite/ld/testsuite/ld-arc/jli-overflow.err: Likewise.

opcode/
2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>
    John Eric Martin  <John.Martin@emmicro-us.com>

* arc-opc.c (UIMM10_6_S_JLIOFF): Define.
(UIMM3_23): Adjust accordingly.
* arc-regs.h: Add/correct jli_base register.
* arc-tbl.h (jli_s): Likewise.

30 files changed:
bfd/ChangeLog
bfd/bfd-in2.h
bfd/elf32-arc.c
bfd/libbfd.h
bfd/reloc.c
gas/ChangeLog
gas/testsuite/gas/arc/jli-1.d [new file with mode: 0644]
gas/testsuite/gas/arc/jli-1.s [new file with mode: 0644]
gas/testsuite/gas/arc/taux.d
include/ChangeLog
include/elf/arc-reloc.def
include/opcode/arc-func.h
ld/ChangeLog
ld/emulparams/arcelf.sh
ld/emulparams/arcv2elf.sh
ld/emulparams/arcv2elfx.sh
ld/scripttempl/elfarc.sc
ld/scripttempl/elfarcv2.sc
ld/testsuite/ld-arc/arc.exp
ld/testsuite/ld-arc/jli-overflow.d [new file with mode: 0644]
ld/testsuite/ld-arc/jli-overflow.err [new file with mode: 0644]
ld/testsuite/ld-arc/jli-overflow.s [new file with mode: 0644]
ld/testsuite/ld-arc/jli-script.ld [new file with mode: 0644]
ld/testsuite/ld-arc/jli-simple.dd [new file with mode: 0644]
ld/testsuite/ld-arc/jli-simple.rd [new file with mode: 0644]
ld/testsuite/ld-arc/jli-simple.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/arc-opc.c
opcodes/arc-regs.h
opcodes/arc-tbl.h

index bdffccf..94ccaa0 100644 (file)
@@ -1,3 +1,11 @@
+2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>
+           John Eric Martin  <John.Martin@emmicro-us.com>
+
+       * bfd-in2.h: Regenerate.
+       * libbfd.h: Regenerate.
+       * elf32-arc.c (JLI): Define.
+       * reloc.c: Add JLI relocations.
+
 2017-07-18  Nick Clifton  <nickc@redhat.com>
 
        PR 21775
index 1343780..d126aed 100644 (file)
@@ -3800,6 +3800,7 @@ pc-relative or some form of GOT-indirect relocation.  */
   BFD_RELOC_ARC_S25W_PCREL_PLT,
   BFD_RELOC_ARC_S21H_PCREL_PLT,
   BFD_RELOC_ARC_NPS_CMEM16,
+  BFD_RELOC_ARC_JLI_SECTOFF,
 
 /* ADI Blackfin 16 bit immediate absolute reloc.  */
   BFD_RELOC_BFIN_16_IMM,
index 93b21de..cdecdb1 100644 (file)
@@ -1182,7 +1182,7 @@ arc_special_overflow_checks (const struct arc_relocation_data reloc_data,
             + (reloc_data.reloc_offset))))
 #define SECTSTART (bfd_signed_vma) (reloc_data.sym_section->output_section->vma \
                                    + reloc_data.sym_section->output_offset)
-
+#define JLI (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
 #define _SDA_BASE_ (bfd_signed_vma) (reloc_data.sdata_begin_symbol_vma)
 #define TLS_REL (bfd_signed_vma) \
   ((elf_hash_table (info))->tls_sec->output_section->vma)
@@ -1359,6 +1359,7 @@ arc_do_relocation (bfd_byte * contents,
 #undef P
 #undef SECTSTAR
 #undef SECTSTART
+#undef JLI
 #undef _SDA_BASE_
 #undef none
 
index ae9bf76..17acda5 100644 (file)
@@ -1752,6 +1752,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_ARC_S25W_PCREL_PLT",
   "BFD_RELOC_ARC_S21H_PCREL_PLT",
   "BFD_RELOC_ARC_NPS_CMEM16",
+  "BFD_RELOC_ARC_JLI_SECTOFF",
   "BFD_RELOC_BFIN_16_IMM",
   "BFD_RELOC_BFIN_16_HIGH",
   "BFD_RELOC_BFIN_4_PCREL",
index aa70fa5..8512261 100644 (file)
@@ -3695,6 +3695,8 @@ ENUMX
   BFD_RELOC_ARC_S21H_PCREL_PLT
 ENUMX
   BFD_RELOC_ARC_NPS_CMEM16
+ENUMX
+  BFD_RELOC_ARC_JLI_SECTOFF
 ENUMDOC
   ARC relocs.
 
index dd6a34f..d247a5b 100644 (file)
@@ -1,3 +1,9 @@
+2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * testsuite/gas/arc/jli-1.d: New file.
+       * testsuite/gas/arc/jli-1.s: Likewise.
+       * testsuite/gas/arc/taux.d: Update for jli_base.
+
 2017-07-19  Tristan Gingold  <gingold@adacore.com>
 
        * as.c (start_sbrk): Remove.
diff --git a/gas/testsuite/gas/arc/jli-1.d b/gas/testsuite/gas/arc/jli-1.d
new file mode 100644 (file)
index 0000000..10550a2
--- /dev/null
@@ -0,0 +1,25 @@
+#as:
+#objdump: -Dr
+
+.*: +file format .*
+
+
+Disassembly of section .group:
+
+00000000 <jlitab.foo>:
+   0:  0[10] 00 00 0[01]               .word   0x00000001
+   4:  0[60] 00 00 0[06]               .word   0x00000006
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:  5800                    jli_s   0
+                       0: R_ARC_JLI_SECTOFF    __jli.foo
+
+Disassembly of section .jlitab:
+
+00000000 <__jli.foo>:
+   0:  0001 0000               b       0 <foo>
+                       0: R_ARC_S25H_PCREL     foo
+
+#...
diff --git a/gas/testsuite/gas/arc/jli-1.s b/gas/testsuite/gas/arc/jli-1.s
new file mode 100644 (file)
index 0000000..6890147
--- /dev/null
@@ -0,0 +1,11 @@
+;;; Test basic JLI relocs and constructs.
+
+       .cpu em4
+
+       jli_s   __jli.foo       ; Generates R_ARC_JLI_SECTOFF
+
+       .section        .jlitab,"axG",%progbits,jlitab.foo,comdat
+        .align  4
+__jli.foo:
+        .weak   __jli.foo
+        b       @foo
index 10f50ee..6303146 100644 (file)
@@ -16,6 +16,7 @@
 .* U d2l
 .* U dpfp_status
 .* U fp_status
+.* U jli_base
 .* mx0
 .* mx1
 .* my0
index cecaa88..a31f62e 100644 (file)
@@ -1,3 +1,9 @@
+2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>
+           John Eric Martin  <John.Martin@emmicro-us.com>
+
+       * elf/arc-reloc.def: Add JLI relocs howto.
+       * opcode/arc-func.h (replace_jli): New function.
+
 2017-07-18  Nick Clifton  <nickc@redhat.com>
 
        PR 21775
index aa2309c..c58ca96 100644 (file)
@@ -414,6 +414,13 @@ ARC_RELOC_HOWTO(ARC_S25H_PCREL_PLT, 61, \
                 signed, \
                 ( ME ( ( ( ( L + A ) - P ) >> 1 ) ) ))
 
+ARC_RELOC_HOWTO(ARC_JLI_SECTOFF, 63, \
+                1, \
+                10, \
+                replace_jli, \
+                bitfield, \
+                ( ( S - JLI ) >> 2))
+
 ARC_RELOC_HOWTO(ARC_TLS_DTPMOD, 66, \
                 2, \
                 32, \
index c794593..fb45b07 100644 (file)
@@ -274,8 +274,21 @@ replace_disp12s (unsigned insn, int value ATTRIBUTE_UNUSED)
   insn = insn & ~0xfff;
   insn |= ((value >> 0) & 0x003f) << 6;
   insn |= ((value >> 6) & 0x003f) << 0;
-
   return insn;
 }
 
 #endif /* REPLACE_disp12s */
+
+/* mask  = 0000001111111111.  */
+#ifndef REPLACE_jli
+#define REPLACE_jli
+ATTRIBUTE_UNUSED static unsigned
+replace_jli (unsigned insn, int value)
+{
+  insn = insn & ~0x3ff;
+  insn |= ((value >> 0) & 0x03ff) << 0;
+
+  return insn;
+}
+
+#endif /* REPLACE_jli */
index 4525236..00eada7 100644 (file)
@@ -1,3 +1,18 @@
+2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>
+           John Eric Martin  <John.Martin@emmicro-us.com>
+
+       * emulparams/arcelf.sh (JLI_START_TABLE): Define.
+       * scripttempl/elfarc.sc: Handle jlitab section.
+       * scripttempl/elfarcv2.sc: Likewise.
+       * testsuite/ld-arc/arc.exp: Add JLI test.
+       * testsuite/ld-arc/jli-script.ld: New file.
+       * testsuite/ld-arc/jli-simple.dd: Likewise.
+       * testsuite/ld-arc/jli-simple.rd: Likewise.
+       * testsuite/ld-arc/jli-simple.s: Likewise.
+       * testsuite/ld-arc/jli-overflow.s: Likewise.
+       * testsuite/ld-arc/jli-overflow.d: Likewise.
+       * testsuite/ld-arc/jli-overflow.err: Likewise.
+
 2017-07-19  Tristan Gingold  <gingold@adacore.com>
 
        * ldmain.c (main): Remove display of data size.
index 9b52e2c..21c5c82 100644 (file)
@@ -16,6 +16,7 @@ ARCH=arc
 MACHINE=
 ENTRY=__start
 SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'
+JLI_START_TABLE='__JLI_TABLE__ = .;'
 OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
 EMBEDDED=yes
 
index e21882b..feedbe8 100644 (file)
@@ -22,5 +22,6 @@ LITTLE_OUTPUT_FORMAT="elf32-littlearc"
 BIG_OUTPUT_FORMAT="elf32-bigarc"
 TEXT_START_ADDR=0x100
 ENTRY=__start
-SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;'
+SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'
+JLI_START_TABLE='__JLI_TABLE__ = .;'
 OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
index 7a4f284..8a56509 100644 (file)
@@ -18,6 +18,7 @@ LITTLE_OUTPUT_FORMAT="elf32-littlearc"
 BIG_OUTPUT_FORMAT="elf32-bigarc"
 TEXT_START_ADDR=0x100
 ENTRY=__start
-SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;'
+SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'
+JLI_START_TABLE='__JLI_TABLE__ = .;'
 OTHER_SECTIONS="/DISCARD/ : { *(.__arc_profile_*) }"
 EMBEDDED=yes
index 6754c02..4d8fef0 100644 (file)
@@ -262,6 +262,12 @@ cat <<EOF
   } =${NOP-0}
 
   ${DATA_PLT-${BSS_PLT-${PLT}}}
+  .jlitab       ${RELOCATING-0} :
+  {
+    ${RELOCATING+${JLI_START_TABLE}}
+    jlitab*.o(.jlitab*)
+    *(.jlitab*)
+  } =${NOP-0}
   .text         ${RELOCATING-0} :
   {
     ${RELOCATING+${TEXT_START_SYMBOLS}}
index 0232d81..21bc74c 100644 (file)
@@ -179,6 +179,11 @@ SECTIONS
   .eh_frame : { KEEP (*(.eh_frame)) } ${RELOCATING+> ${TEXT_MEMORY}}
   .gcc_except_table : { *(.gcc_except_table) *(.gcc_except_table.*) } ${RELOCATING+> ${TEXT_MEMORY}}
   .plt : { *(.plt) } ${RELOCATING+> ${TEXT_MEMORY}}
+  .jlitab :
+  {
+    ${RELOCATING+${JLI_START_TABLE}}
+     jlitab*.o:(.jlitab*) *(.jlitab*)
+  } ${RELOCATING+> ${TEXT_MEMORY}}
 
   .rodata ${RELOCATING-0} :
   {
index 2f2abe2..66f39cd 100644 (file)
@@ -40,6 +40,11 @@ set arccommon_tests {
        {tls-dtpoff.s}
         {{objdump -fdw tls-dtpoff.dd} {readelf --relocs tls-dtpoff.rd}}
         "sda-relocs.so" }
+    { "JLI simple"
+        "-q -T jli-script.ld -A elf32-arclittle" "" "-mcpu=em4 -EL"
+       {jli-simple.s}
+        {{objdump -fdw jli-simple.dd} {readelf --relocs jli-simple.rd}}
+        "jli-simple.so" }
 }
 
 run_ld_link_tests $arccommon_tests
diff --git a/ld/testsuite/ld-arc/jli-overflow.d b/ld/testsuite/ld-arc/jli-overflow.d
new file mode 100644 (file)
index 0000000..b1a2663
--- /dev/null
@@ -0,0 +1,4 @@
+#source: jli-overflow.s
+#as:
+#ld: -q -T jli-script.ld
+#error_output: jli-overflow.err
diff --git a/ld/testsuite/ld-arc/jli-overflow.err b/ld/testsuite/ld-arc/jli-overflow.err
new file mode 100644 (file)
index 0000000..022434e
--- /dev/null
@@ -0,0 +1,3 @@
+.*\.o: In function `test_1025':
+.*: relocation truncated to fit: R_ARC_JLI_SECTOFF against symbol.*
+#...
diff --git a/ld/testsuite/ld-arc/jli-overflow.s b/ld/testsuite/ld-arc/jli-overflow.s
new file mode 100644 (file)
index 0000000..7961cc9
--- /dev/null
@@ -0,0 +1,1050 @@
+;;;Macro
+       .macro jlifunc num
+       .section        .text
+       .align 4
+       .global func\num
+       .type   func\num, @function
+func\num:
+       j_s.d [blink]
+       add_s r0,r0,1
+       .size   func\num, .-func\num
+       .align 4
+       .global test_\num
+       .type   test_\num, @function
+test_\num:
+       jli_s @__jli.func\num
+       j_s [blink]
+       .size   test_\num, .-test_\num
+       .section .jlitab, "axG", @progbits, .jlitab.func\num, comdat
+       .align  4
+__jli.func\num:
+       .weak __jli.func\num
+       b       @func\num
+       .endm
+
+       .cpu HS
+       jlifunc 1
+       jlifunc 2
+       jlifunc 3
+       jlifunc 4
+       jlifunc 5
+       jlifunc 6
+       jlifunc 7
+       jlifunc 8
+       jlifunc 9
+       jlifunc 10
+       jlifunc 11
+       jlifunc 12
+       jlifunc 13
+       jlifunc 14
+       jlifunc 15
+       jlifunc 16
+       jlifunc 17
+       jlifunc 18
+       jlifunc 19
+       jlifunc 20
+       jlifunc 21
+       jlifunc 22
+       jlifunc 23
+       jlifunc 24
+       jlifunc 25
+       jlifunc 26
+       jlifunc 27
+       jlifunc 28
+       jlifunc 29
+       jlifunc 30
+       jlifunc 31
+       jlifunc 32
+       jlifunc 33
+       jlifunc 34
+       jlifunc 35
+       jlifunc 36
+       jlifunc 37
+       jlifunc 38
+       jlifunc 39
+       jlifunc 40
+       jlifunc 41
+       jlifunc 42
+       jlifunc 43
+       jlifunc 44
+       jlifunc 45
+       jlifunc 46
+       jlifunc 47
+       jlifunc 48
+       jlifunc 49
+       jlifunc 50
+       jlifunc 51
+       jlifunc 52
+       jlifunc 53
+       jlifunc 54
+       jlifunc 55
+       jlifunc 56
+       jlifunc 57
+       jlifunc 58
+       jlifunc 59
+       jlifunc 60
+       jlifunc 61
+       jlifunc 62
+       jlifunc 63
+       jlifunc 64
+       jlifunc 65
+       jlifunc 66
+       jlifunc 67
+       jlifunc 68
+       jlifunc 69
+       jlifunc 70
+       jlifunc 71
+       jlifunc 72
+       jlifunc 73
+       jlifunc 74
+       jlifunc 75
+       jlifunc 76
+       jlifunc 77
+       jlifunc 78
+       jlifunc 79
+       jlifunc 80
+       jlifunc 81
+       jlifunc 82
+       jlifunc 83
+       jlifunc 84
+       jlifunc 85
+       jlifunc 86
+       jlifunc 87
+       jlifunc 88
+       jlifunc 89
+       jlifunc 90
+       jlifunc 91
+       jlifunc 92
+       jlifunc 93
+       jlifunc 94
+       jlifunc 95
+       jlifunc 96
+       jlifunc 97
+       jlifunc 98
+       jlifunc 99
+       jlifunc 100
+       jlifunc 101
+       jlifunc 102
+       jlifunc 103
+       jlifunc 104
+       jlifunc 105
+       jlifunc 106
+       jlifunc 107
+       jlifunc 108
+       jlifunc 109
+       jlifunc 110
+       jlifunc 111
+       jlifunc 112
+       jlifunc 113
+       jlifunc 114
+       jlifunc 115
+       jlifunc 116
+       jlifunc 117
+       jlifunc 118
+       jlifunc 119
+       jlifunc 120
+       jlifunc 121
+       jlifunc 122
+       jlifunc 123
+       jlifunc 124
+       jlifunc 125
+       jlifunc 126
+       jlifunc 127
+       jlifunc 128
+       jlifunc 129
+       jlifunc 130
+       jlifunc 131
+       jlifunc 132
+       jlifunc 133
+       jlifunc 134
+       jlifunc 135
+       jlifunc 136
+       jlifunc 137
+       jlifunc 138
+       jlifunc 139
+       jlifunc 140
+       jlifunc 141
+       jlifunc 142
+       jlifunc 143
+       jlifunc 144
+       jlifunc 145
+       jlifunc 146
+       jlifunc 147
+       jlifunc 148
+       jlifunc 149
+       jlifunc 150
+       jlifunc 151
+       jlifunc 152
+       jlifunc 153
+       jlifunc 154
+       jlifunc 155
+       jlifunc 156
+       jlifunc 157
+       jlifunc 158
+       jlifunc 159
+       jlifunc 160
+       jlifunc 161
+       jlifunc 162
+       jlifunc 163
+       jlifunc 164
+       jlifunc 165
+       jlifunc 166
+       jlifunc 167
+       jlifunc 168
+       jlifunc 169
+       jlifunc 170
+       jlifunc 171
+       jlifunc 172
+       jlifunc 173
+       jlifunc 174
+       jlifunc 175
+       jlifunc 176
+       jlifunc 177
+       jlifunc 178
+       jlifunc 179
+       jlifunc 180
+       jlifunc 181
+       jlifunc 182
+       jlifunc 183
+       jlifunc 184
+       jlifunc 185
+       jlifunc 186
+       jlifunc 187
+       jlifunc 188
+       jlifunc 189
+       jlifunc 190
+       jlifunc 191
+       jlifunc 192
+       jlifunc 193
+       jlifunc 194
+       jlifunc 195
+       jlifunc 196
+       jlifunc 197
+       jlifunc 198
+       jlifunc 199
+       jlifunc 200
+       jlifunc 201
+       jlifunc 202
+       jlifunc 203
+       jlifunc 204
+       jlifunc 205
+       jlifunc 206
+       jlifunc 207
+       jlifunc 208
+       jlifunc 209
+       jlifunc 210
+       jlifunc 211
+       jlifunc 212
+       jlifunc 213
+       jlifunc 214
+       jlifunc 215
+       jlifunc 216
+       jlifunc 217
+       jlifunc 218
+       jlifunc 219
+       jlifunc 220
+       jlifunc 221
+       jlifunc 222
+       jlifunc 223
+       jlifunc 224
+       jlifunc 225
+       jlifunc 226
+       jlifunc 227
+       jlifunc 228
+       jlifunc 229
+       jlifunc 230
+       jlifunc 231
+       jlifunc 232
+       jlifunc 233
+       jlifunc 234
+       jlifunc 235
+       jlifunc 236
+       jlifunc 237
+       jlifunc 238
+       jlifunc 239
+       jlifunc 240
+       jlifunc 241
+       jlifunc 242
+       jlifunc 243
+       jlifunc 244
+       jlifunc 245
+       jlifunc 246
+       jlifunc 247
+       jlifunc 248
+       jlifunc 249
+       jlifunc 250
+       jlifunc 251
+       jlifunc 252
+       jlifunc 253
+       jlifunc 254
+       jlifunc 255
+       jlifunc 256
+       jlifunc 257
+       jlifunc 258
+       jlifunc 259
+       jlifunc 260
+       jlifunc 261
+       jlifunc 262
+       jlifunc 263
+       jlifunc 264
+       jlifunc 265
+       jlifunc 266
+       jlifunc 267
+       jlifunc 268
+       jlifunc 269
+       jlifunc 270
+       jlifunc 271
+       jlifunc 272
+       jlifunc 273
+       jlifunc 274
+       jlifunc 275
+       jlifunc 276
+       jlifunc 277
+       jlifunc 278
+       jlifunc 279
+       jlifunc 280
+       jlifunc 281
+       jlifunc 282
+       jlifunc 283
+       jlifunc 284
+       jlifunc 285
+       jlifunc 286
+       jlifunc 287
+       jlifunc 288
+       jlifunc 289
+       jlifunc 290
+       jlifunc 291
+       jlifunc 292
+       jlifunc 293
+       jlifunc 294
+       jlifunc 295
+       jlifunc 296
+       jlifunc 297
+       jlifunc 298
+       jlifunc 299
+       jlifunc 300
+       jlifunc 301
+       jlifunc 302
+       jlifunc 303
+       jlifunc 304
+       jlifunc 305
+       jlifunc 306
+       jlifunc 307
+       jlifunc 308
+       jlifunc 309
+       jlifunc 310
+       jlifunc 311
+       jlifunc 312
+       jlifunc 313
+       jlifunc 314
+       jlifunc 315
+       jlifunc 316
+       jlifunc 317
+       jlifunc 318
+       jlifunc 319
+       jlifunc 320
+       jlifunc 321
+       jlifunc 322
+       jlifunc 323
+       jlifunc 324
+       jlifunc 325
+       jlifunc 326
+       jlifunc 327
+       jlifunc 328
+       jlifunc 329
+       jlifunc 330
+       jlifunc 331
+       jlifunc 332
+       jlifunc 333
+       jlifunc 334
+       jlifunc 335
+       jlifunc 336
+       jlifunc 337
+       jlifunc 338
+       jlifunc 339
+       jlifunc 340
+       jlifunc 341
+       jlifunc 342
+       jlifunc 343
+       jlifunc 344
+       jlifunc 345
+       jlifunc 346
+       jlifunc 347
+       jlifunc 348
+       jlifunc 349
+       jlifunc 350
+       jlifunc 351
+       jlifunc 352
+       jlifunc 353
+       jlifunc 354
+       jlifunc 355
+       jlifunc 356
+       jlifunc 357
+       jlifunc 358
+       jlifunc 359
+       jlifunc 360
+       jlifunc 361
+       jlifunc 362
+       jlifunc 363
+       jlifunc 364
+       jlifunc 365
+       jlifunc 366
+       jlifunc 367
+       jlifunc 368
+       jlifunc 369
+       jlifunc 370
+       jlifunc 371
+       jlifunc 372
+       jlifunc 373
+       jlifunc 374
+       jlifunc 375
+       jlifunc 376
+       jlifunc 377
+       jlifunc 378
+       jlifunc 379
+       jlifunc 380
+       jlifunc 381
+       jlifunc 382
+       jlifunc 383
+       jlifunc 384
+       jlifunc 385
+       jlifunc 386
+       jlifunc 387
+       jlifunc 388
+       jlifunc 389
+       jlifunc 390
+       jlifunc 391
+       jlifunc 392
+       jlifunc 393
+       jlifunc 394
+       jlifunc 395
+       jlifunc 396
+       jlifunc 397
+       jlifunc 398
+       jlifunc 399
+       jlifunc 400
+       jlifunc 401
+       jlifunc 402
+       jlifunc 403
+       jlifunc 404
+       jlifunc 405
+       jlifunc 406
+       jlifunc 407
+       jlifunc 408
+       jlifunc 409
+       jlifunc 410
+       jlifunc 411
+       jlifunc 412
+       jlifunc 413
+       jlifunc 414
+       jlifunc 415
+       jlifunc 416
+       jlifunc 417
+       jlifunc 418
+       jlifunc 419
+       jlifunc 420
+       jlifunc 421
+       jlifunc 422
+       jlifunc 423
+       jlifunc 424
+       jlifunc 425
+       jlifunc 426
+       jlifunc 427
+       jlifunc 428
+       jlifunc 429
+       jlifunc 430
+       jlifunc 431
+       jlifunc 432
+       jlifunc 433
+       jlifunc 434
+       jlifunc 435
+       jlifunc 436
+       jlifunc 437
+       jlifunc 438
+       jlifunc 439
+       jlifunc 440
+       jlifunc 441
+       jlifunc 442
+       jlifunc 443
+       jlifunc 444
+       jlifunc 445
+       jlifunc 446
+       jlifunc 447
+       jlifunc 448
+       jlifunc 449
+       jlifunc 450
+       jlifunc 451
+       jlifunc 452
+       jlifunc 453
+       jlifunc 454
+       jlifunc 455
+       jlifunc 456
+       jlifunc 457
+       jlifunc 458
+       jlifunc 459
+       jlifunc 460
+       jlifunc 461
+       jlifunc 462
+       jlifunc 463
+       jlifunc 464
+       jlifunc 465
+       jlifunc 466
+       jlifunc 467
+       jlifunc 468
+       jlifunc 469
+       jlifunc 470
+       jlifunc 471
+       jlifunc 472
+       jlifunc 473
+       jlifunc 474
+       jlifunc 475
+       jlifunc 476
+       jlifunc 477
+       jlifunc 478
+       jlifunc 479
+       jlifunc 480
+       jlifunc 481
+       jlifunc 482
+       jlifunc 483
+       jlifunc 484
+       jlifunc 485
+       jlifunc 486
+       jlifunc 487
+       jlifunc 488
+       jlifunc 489
+       jlifunc 490
+       jlifunc 491
+       jlifunc 492
+       jlifunc 493
+       jlifunc 494
+       jlifunc 495
+       jlifunc 496
+       jlifunc 497
+       jlifunc 498
+       jlifunc 499
+       jlifunc 500
+       jlifunc 501
+       jlifunc 502
+       jlifunc 503
+       jlifunc 504
+       jlifunc 505
+       jlifunc 506
+       jlifunc 507
+       jlifunc 508
+       jlifunc 509
+       jlifunc 510
+       jlifunc 511
+       jlifunc 512
+       jlifunc 513
+       jlifunc 514
+       jlifunc 515
+       jlifunc 516
+       jlifunc 517
+       jlifunc 518
+       jlifunc 519
+       jlifunc 520
+       jlifunc 521
+       jlifunc 522
+       jlifunc 523
+       jlifunc 524
+       jlifunc 525
+       jlifunc 526
+       jlifunc 527
+       jlifunc 528
+       jlifunc 529
+       jlifunc 530
+       jlifunc 531
+       jlifunc 532
+       jlifunc 533
+       jlifunc 534
+       jlifunc 535
+       jlifunc 536
+       jlifunc 537
+       jlifunc 538
+       jlifunc 539
+       jlifunc 540
+       jlifunc 541
+       jlifunc 542
+       jlifunc 543
+       jlifunc 544
+       jlifunc 545
+       jlifunc 546
+       jlifunc 547
+       jlifunc 548
+       jlifunc 549
+       jlifunc 550
+       jlifunc 551
+       jlifunc 552
+       jlifunc 553
+       jlifunc 554
+       jlifunc 555
+       jlifunc 556
+       jlifunc 557
+       jlifunc 558
+       jlifunc 559
+       jlifunc 560
+       jlifunc 561
+       jlifunc 562
+       jlifunc 563
+       jlifunc 564
+       jlifunc 565
+       jlifunc 566
+       jlifunc 567
+       jlifunc 568
+       jlifunc 569
+       jlifunc 570
+       jlifunc 571
+       jlifunc 572
+       jlifunc 573
+       jlifunc 574
+       jlifunc 575
+       jlifunc 576
+       jlifunc 577
+       jlifunc 578
+       jlifunc 579
+       jlifunc 580
+       jlifunc 581
+       jlifunc 582
+       jlifunc 583
+       jlifunc 584
+       jlifunc 585
+       jlifunc 586
+       jlifunc 587
+       jlifunc 588
+       jlifunc 589
+       jlifunc 590
+       jlifunc 591
+       jlifunc 592
+       jlifunc 593
+       jlifunc 594
+       jlifunc 595
+       jlifunc 596
+       jlifunc 597
+       jlifunc 598
+       jlifunc 599
+       jlifunc 600
+       jlifunc 601
+       jlifunc 602
+       jlifunc 603
+       jlifunc 604
+       jlifunc 605
+       jlifunc 606
+       jlifunc 607
+       jlifunc 608
+       jlifunc 609
+       jlifunc 610
+       jlifunc 611
+       jlifunc 612
+       jlifunc 613
+       jlifunc 614
+       jlifunc 615
+       jlifunc 616
+       jlifunc 617
+       jlifunc 618
+       jlifunc 619
+       jlifunc 620
+       jlifunc 621
+       jlifunc 622
+       jlifunc 623
+       jlifunc 624
+       jlifunc 625
+       jlifunc 626
+       jlifunc 627
+       jlifunc 628
+       jlifunc 629
+       jlifunc 630
+       jlifunc 631
+       jlifunc 632
+       jlifunc 633
+       jlifunc 634
+       jlifunc 635
+       jlifunc 636
+       jlifunc 637
+       jlifunc 638
+       jlifunc 639
+       jlifunc 640
+       jlifunc 641
+       jlifunc 642
+       jlifunc 643
+       jlifunc 644
+       jlifunc 645
+       jlifunc 646
+       jlifunc 647
+       jlifunc 648
+       jlifunc 649
+       jlifunc 650
+       jlifunc 651
+       jlifunc 652
+       jlifunc 653
+       jlifunc 654
+       jlifunc 655
+       jlifunc 656
+       jlifunc 657
+       jlifunc 658
+       jlifunc 659
+       jlifunc 660
+       jlifunc 661
+       jlifunc 662
+       jlifunc 663
+       jlifunc 664
+       jlifunc 665
+       jlifunc 666
+       jlifunc 667
+       jlifunc 668
+       jlifunc 669
+       jlifunc 670
+       jlifunc 671
+       jlifunc 672
+       jlifunc 673
+       jlifunc 674
+       jlifunc 675
+       jlifunc 676
+       jlifunc 677
+       jlifunc 678
+       jlifunc 679
+       jlifunc 680
+       jlifunc 681
+       jlifunc 682
+       jlifunc 683
+       jlifunc 684
+       jlifunc 685
+       jlifunc 686
+       jlifunc 687
+       jlifunc 688
+       jlifunc 689
+       jlifunc 690
+       jlifunc 691
+       jlifunc 692
+       jlifunc 693
+       jlifunc 694
+       jlifunc 695
+       jlifunc 696
+       jlifunc 697
+       jlifunc 698
+       jlifunc 699
+       jlifunc 700
+       jlifunc 701
+       jlifunc 702
+       jlifunc 703
+       jlifunc 704
+       jlifunc 705
+       jlifunc 706
+       jlifunc 707
+       jlifunc 708
+       jlifunc 709
+       jlifunc 710
+       jlifunc 711
+       jlifunc 712
+       jlifunc 713
+       jlifunc 714
+       jlifunc 715
+       jlifunc 716
+       jlifunc 717
+       jlifunc 718
+       jlifunc 719
+       jlifunc 720
+       jlifunc 721
+       jlifunc 722
+       jlifunc 723
+       jlifunc 724
+       jlifunc 725
+       jlifunc 726
+       jlifunc 727
+       jlifunc 728
+       jlifunc 729
+       jlifunc 730
+       jlifunc 731
+       jlifunc 732
+       jlifunc 733
+       jlifunc 734
+       jlifunc 735
+       jlifunc 736
+       jlifunc 737
+       jlifunc 738
+       jlifunc 739
+       jlifunc 740
+       jlifunc 741
+       jlifunc 742
+       jlifunc 743
+       jlifunc 744
+       jlifunc 745
+       jlifunc 746
+       jlifunc 747
+       jlifunc 748
+       jlifunc 749
+       jlifunc 750
+       jlifunc 751
+       jlifunc 752
+       jlifunc 753
+       jlifunc 754
+       jlifunc 755
+       jlifunc 756
+       jlifunc 757
+       jlifunc 758
+       jlifunc 759
+       jlifunc 760
+       jlifunc 761
+       jlifunc 762
+       jlifunc 763
+       jlifunc 764
+       jlifunc 765
+       jlifunc 766
+       jlifunc 767
+       jlifunc 768
+       jlifunc 769
+       jlifunc 770
+       jlifunc 771
+       jlifunc 772
+       jlifunc 773
+       jlifunc 774
+       jlifunc 775
+       jlifunc 776
+       jlifunc 777
+       jlifunc 778
+       jlifunc 779
+       jlifunc 780
+       jlifunc 781
+       jlifunc 782
+       jlifunc 783
+       jlifunc 784
+       jlifunc 785
+       jlifunc 786
+       jlifunc 787
+       jlifunc 788
+       jlifunc 789
+       jlifunc 790
+       jlifunc 791
+       jlifunc 792
+       jlifunc 793
+       jlifunc 794
+       jlifunc 795
+       jlifunc 796
+       jlifunc 797
+       jlifunc 798
+       jlifunc 799
+       jlifunc 800
+       jlifunc 801
+       jlifunc 802
+       jlifunc 803
+       jlifunc 804
+       jlifunc 805
+       jlifunc 806
+       jlifunc 807
+       jlifunc 808
+       jlifunc 809
+       jlifunc 810
+       jlifunc 811
+       jlifunc 812
+       jlifunc 813
+       jlifunc 814
+       jlifunc 815
+       jlifunc 816
+       jlifunc 817
+       jlifunc 818
+       jlifunc 819
+       jlifunc 820
+       jlifunc 821
+       jlifunc 822
+       jlifunc 823
+       jlifunc 824
+       jlifunc 825
+       jlifunc 826
+       jlifunc 827
+       jlifunc 828
+       jlifunc 829
+       jlifunc 830
+       jlifunc 831
+       jlifunc 832
+       jlifunc 833
+       jlifunc 834
+       jlifunc 835
+       jlifunc 836
+       jlifunc 837
+       jlifunc 838
+       jlifunc 839
+       jlifunc 840
+       jlifunc 841
+       jlifunc 842
+       jlifunc 843
+       jlifunc 844
+       jlifunc 845
+       jlifunc 846
+       jlifunc 847
+       jlifunc 848
+       jlifunc 849
+       jlifunc 850
+       jlifunc 851
+       jlifunc 852
+       jlifunc 853
+       jlifunc 854
+       jlifunc 855
+       jlifunc 856
+       jlifunc 857
+       jlifunc 858
+       jlifunc 859
+       jlifunc 860
+       jlifunc 861
+       jlifunc 862
+       jlifunc 863
+       jlifunc 864
+       jlifunc 865
+       jlifunc 866
+       jlifunc 867
+       jlifunc 868
+       jlifunc 869
+       jlifunc 870
+       jlifunc 871
+       jlifunc 872
+       jlifunc 873
+       jlifunc 874
+       jlifunc 875
+       jlifunc 876
+       jlifunc 877
+       jlifunc 878
+       jlifunc 879
+       jlifunc 880
+       jlifunc 881
+       jlifunc 882
+       jlifunc 883
+       jlifunc 884
+       jlifunc 885
+       jlifunc 886
+       jlifunc 887
+       jlifunc 888
+       jlifunc 889
+       jlifunc 890
+       jlifunc 891
+       jlifunc 892
+       jlifunc 893
+       jlifunc 894
+       jlifunc 895
+       jlifunc 896
+       jlifunc 897
+       jlifunc 898
+       jlifunc 899
+       jlifunc 900
+       jlifunc 901
+       jlifunc 902
+       jlifunc 903
+       jlifunc 904
+       jlifunc 905
+       jlifunc 906
+       jlifunc 907
+       jlifunc 908
+       jlifunc 909
+       jlifunc 910
+       jlifunc 911
+       jlifunc 912
+       jlifunc 913
+       jlifunc 914
+       jlifunc 915
+       jlifunc 916
+       jlifunc 917
+       jlifunc 918
+       jlifunc 919
+       jlifunc 920
+       jlifunc 921
+       jlifunc 922
+       jlifunc 923
+       jlifunc 924
+       jlifunc 925
+       jlifunc 926
+       jlifunc 927
+       jlifunc 928
+       jlifunc 929
+       jlifunc 930
+       jlifunc 931
+       jlifunc 932
+       jlifunc 933
+       jlifunc 934
+       jlifunc 935
+       jlifunc 936
+       jlifunc 937
+       jlifunc 938
+       jlifunc 939
+       jlifunc 940
+       jlifunc 941
+       jlifunc 942
+       jlifunc 943
+       jlifunc 944
+       jlifunc 945
+       jlifunc 946
+       jlifunc 947
+       jlifunc 948
+       jlifunc 949
+       jlifunc 950
+       jlifunc 951
+       jlifunc 952
+       jlifunc 953
+       jlifunc 954
+       jlifunc 955
+       jlifunc 956
+       jlifunc 957
+       jlifunc 958
+       jlifunc 959
+       jlifunc 960
+       jlifunc 961
+       jlifunc 962
+       jlifunc 963
+       jlifunc 964
+       jlifunc 965
+       jlifunc 966
+       jlifunc 967
+       jlifunc 968
+       jlifunc 969
+       jlifunc 970
+       jlifunc 971
+       jlifunc 972
+       jlifunc 973
+       jlifunc 974
+       jlifunc 975
+       jlifunc 976
+       jlifunc 977
+       jlifunc 978
+       jlifunc 979
+       jlifunc 980
+       jlifunc 981
+       jlifunc 982
+       jlifunc 983
+       jlifunc 984
+       jlifunc 985
+       jlifunc 986
+       jlifunc 987
+       jlifunc 988
+       jlifunc 989
+       jlifunc 990
+       jlifunc 991
+       jlifunc 992
+       jlifunc 993
+       jlifunc 994
+       jlifunc 995
+       jlifunc 996
+       jlifunc 997
+       jlifunc 998
+       jlifunc 999
+       jlifunc 1000
+       jlifunc 1001
+       jlifunc 1002
+       jlifunc 1003
+       jlifunc 1004
+       jlifunc 1005
+       jlifunc 1006
+       jlifunc 1007
+       jlifunc 1008
+       jlifunc 1009
+       jlifunc 1010
+       jlifunc 1011
+       jlifunc 1012
+       jlifunc 1013
+       jlifunc 1014
+       jlifunc 1015
+       jlifunc 1016
+       jlifunc 1017
+       jlifunc 1018
+       jlifunc 1019
+       jlifunc 1020
+       jlifunc 1021
+       jlifunc 1022
+       jlifunc 1023
+       jlifunc 1024
+       jlifunc 1025
diff --git a/ld/testsuite/ld-arc/jli-script.ld b/ld/testsuite/ld-arc/jli-script.ld
new file mode 100644 (file)
index 0000000..fdb9e90
--- /dev/null
@@ -0,0 +1,20 @@
+/* Default linker script, for normal executables.  */
+OUTPUT_FORMAT("elf32-littlearc", "elf32-bigarc",
+              "elf32-littlearc")
+
+OUTPUT_ARCH(arc)
+ENTRY(__start)
+
+SECTIONS
+{
+  /* Read-only sections, merged into text segment: */
+  PROVIDE (__start = 0x10000);
+  . = 0x10000 + SIZEOF_HEADERS;
+
+  .text           : {*(.text .stub .text.*)} =0
+  .jlitab        : {jlitab*.o(.jlitab*) *(.jlitab*) }
+  .tdata          : {.tdata = .; *(.tdata .tdata.* .gnu.linkonce.td.*) }
+  .tbss           : {.tbss = .; *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
+
+  /DISCARD/ : { *(.note.GNU-stack) }
+}
diff --git a/ld/testsuite/ld-arc/jli-simple.dd b/ld/testsuite/ld-arc/jli-simple.dd
new file mode 100644 (file)
index 0000000..cea0194
--- /dev/null
@@ -0,0 +1,26 @@
+
+.*:     file format .*
+architecture: ARCv2, flags 0x00000113:
+HAS_RELOC, EXEC_P, HAS_SYMS, D_PAGED
+start address 0x00010000
+
+
+Disassembly of section .text:
+
+00010054 <test>:
+   10054:      5800                    jli_s   0
+   10056:      5801                    jli_s   0x1
+
+00010058 <foo>:
+   10058:      2000 0000               add     r0,r0,r0
+
+0001005c <bar>:
+   1005c:      2100 0080               add     r0,r1,r2
+
+Disassembly of section .jlitab:
+
+00010060 <__jli.foo>:
+   10060:      07f9 ffcf               b       10058 <foo>
+
+00010064 <__jli.bar>:
+   10064:      07f9 ffcf               b       1005c <bar>
diff --git a/ld/testsuite/ld-arc/jli-simple.rd b/ld/testsuite/ld-arc/jli-simple.rd
new file mode 100644 (file)
index 0000000..13b85bb
--- /dev/null
@@ -0,0 +1,10 @@
+
+Relocation section '\.rela\.text' .*:
+ Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
+00010054  [0-9a-f]+ R_ARC_JLI_SECTOFF 00010060   __jli\.foo \+ 0
+00010056  [0-9a-f]+ R_ARC_JLI_SECTOFF 00010064   __jli\.bar \+ 0
+
+Relocation section '\.rela\.jlitab' .*:
+ Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
+00010060  [0-9a-f]+ R_ARC_S25H_PCREL  00010054   .text \+ 4
+00010064  [0-9a-f]+ R_ARC_S25H_PCREL  00010054   .text \+ 8
diff --git a/ld/testsuite/ld-arc/jli-simple.s b/ld/testsuite/ld-arc/jli-simple.s
new file mode 100644 (file)
index 0000000..660fa05
--- /dev/null
@@ -0,0 +1,24 @@
+       .cpu em4
+       .text
+       .align  4
+test:
+       jli_s   __jli.foo
+       jli_s   __jli.bar
+
+       .align  4
+foo:
+       add     r0,r0,r0
+
+       .align  4
+bar:
+       add     r0,r1,r2
+
+       .section        .jlitab,"axG",%progbits,jli_group,comdat
+        .align  4
+__jli.foo:
+        .weak   __jli.foo
+        b       @foo
+        .align  4
+__jli.bar:
+        .weak   __jli.bar
+        b       @bar
index c013974..e789003 100644 (file)
@@ -1,3 +1,11 @@
+2017-07-19  Claudiu Zissulescu  <claziss@synopsys.com>
+           John Eric Martin  <John.Martin@emmicro-us.com>
+
+       * arc-opc.c (UIMM10_6_S_JLIOFF): Define.
+       (UIMM3_23): Adjust accordingly.
+       * arc-regs.h: Add/correct jli_base register.
+       * arc-tbl.h (jli_s): Likewise.
+
 2017-07-18  Nick Clifton  <nickc@redhat.com>
 
        PR 21775
index c266f4f..7f934ce 100644 (file)
@@ -2039,8 +2039,14 @@ const struct arc_operand arc_operands[] =
    | ARC_OPERAND_TRUNCATE | ARC_OPERAND_PCREL, insert_simm8_a16_9_s,
    extract_simm8_a16_9_s},
 
+/* UIMM10_6_S_JLIOFF mask = 0000001111111111.  */
+#define UIMM10_6_S_JLIOFF     (SIMM8_A16_9_S + 1)
+  {12, 0, BFD_RELOC_ARC_JLI_SECTOFF, ARC_OPERAND_UNSIGNED
+   | ARC_OPERAND_ALIGNED32 | ARC_OPERAND_TRUNCATE, insert_uimm10_6_s,
+   extract_uimm10_6_s},
+
   /* UIMM3_23 mask = 00000000000000000000000111000000.  */
-#define UIMM3_23       (SIMM8_A16_9_S + 1)
+#define UIMM3_23       (UIMM10_6_S_JLIOFF + 1)
   {3, 0, 0, ARC_OPERAND_UNSIGNED, insert_uimm3_23, extract_uimm3_23},
 
   /* UIMM10_6_S mask = 0000001111111111.  */
index 0bdbd92..99c39a4 100644 (file)
@@ -69,7 +69,6 @@ DEF (0x23,  ARC_OPCODE_ARCALL, NONE, limit0)
 DEF (0x24,  ARC_OPCODE_ARCALL, NONE, pcport)
 DEF (0x25,  ARC_OPCODE_ARCALL, NONE, int_vector_base)
 DEF (0x26,  ARC_OPCODE_ARCALL, NONE, aux_vbfdw_mode)
-DEF (0x26,  ARC_OPCODE_ARCALL, NONE, jli_base)
 DEF (0x27,  ARC_OPCODE_ARCALL, NONE, aux_vbfdw_bm0)
 DEF (0x28,  ARC_OPCODE_ARCALL, NONE, aux_vbfdw_bm1)
 DEF (0x29,  ARC_OPCODE_ARCALL, NONE, aux_vbfdw_accu)
@@ -261,6 +260,7 @@ DEF (0x236, ARC_OPCODE_ARCALL, NONE, ap_amm7)
 DEF (0x237, ARC_OPCODE_ARCALL, NONE, ap_ac7)
 DEF (0x278, ARC_OPCODE_ARCALL, NONE, pct_control)
 DEF (0x279, ARC_OPCODE_ARCALL, NONE, pct_bank)
+DEF (0x290, ARC_OPCODE_ARCV2,  NONE, jli_base)
 DEF (0x300, ARC_OPCODE_ARCFPX, DPX,  fp_status)
 DEF (0x301, ARC_OPCODE_ARCFPX, DPX,  aux_dpfp1l)
 DEF (0x301, ARC_OPCODE_ARCFPX, DPX,  d1l)
index 79e6b89..07ff304 100644 (file)
 
 /* jli_s u10 010110uuuuuuuuuu.  */
 { "jli_s", 0x00005800, 0x0000FC00, ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS, JLI, CD1, { UIMM10_6_S }, { 0 }},
+{ "jli_s", 0x00005800, 0x0000FC00, ARC_OPCODE_ARCv2EM | ARC_OPCODE_ARCv2HS, JLI, CD1, { UIMM10_6_S_JLIOFF }, { 0 }},
 
 /* jl_s b 01111bbb01000000.  */
 { "jl_s", 0x00007840, 0x0000F8FF, ARC_OPCODE_ARC600 | ARC_OPCODE_ARC700, JUMP, NONE, { BRAKET, RB_S, BRAKETdup }, { 0 }},