[ARC] Fix parsing dtpoff relocation expression.
The assembler accepts dtpoff complex relocation expression like identifier@dtpoff + const. However, it doesn't accept an expression such as identifier@dtpoff@base + const. This patch solves this issue, and adds a number of tests. ld/ 2016-09-14 Claudiu Zissulescu <claziss@synopsys.com> * testsuite/ld-arc/tls-dtpoff.dd: New file. * testsuite/ld-arc/tls-dtpoff.rd: Likewise. * testsuite/ld-arc/tls-dtpoff.s: Likewise. * testsuite/ld-arc/tls-relocs.ld: Likewise. * testsuite/ld-arc/arc.exp: Add new tdpoff test. gas/ 2016-09-14 Claudiu Zissulescu <claziss@synopsys.com> * testsuite/gas/arc/tls-relocs2.d: New file. * testsuite/gas/arc/tls-relocs2.s: Likewise. * config/tc-arc.c (tokenize_arguments): Accept offsets when base is used.
This commit is contained in:
parent
dce084426d
commit
32348c581b
10 changed files with 90 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2016-09-14 Claudiu Zissulescu <claziss@synopsys.com>
|
||||||
|
|
||||||
|
* testsuite/gas/arc/tls-relocs2.d: New file.
|
||||||
|
* testsuite/gas/arc/tls-relocs2.s: Likewise.
|
||||||
|
* config/tc-arc.c (tokenize_arguments): Accept offsets when base
|
||||||
|
is used.
|
||||||
|
|
||||||
2016-09-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
|
2016-09-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
|
||||||
|
|
||||||
* config/tc-s390.c (s390_parse_cpu): Support alternate arch
|
* config/tc-s390.c (s390_parse_cpu): Support alternate arch
|
||||||
|
|
|
@ -1157,7 +1157,7 @@ tokenize_arguments (char *str,
|
||||||
restore_line_pointer (c);
|
restore_line_pointer (c);
|
||||||
tmpE.X_add_number = 0;
|
tmpE.X_add_number = 0;
|
||||||
}
|
}
|
||||||
else if ((*input_line_pointer != '+')
|
if ((*input_line_pointer != '+')
|
||||||
&& (*input_line_pointer != '-'))
|
&& (*input_line_pointer != '-'))
|
||||||
{
|
{
|
||||||
tmpE.X_add_number = 0;
|
tmpE.X_add_number = 0;
|
||||||
|
|
10
gas/testsuite/gas/arc/tls-relocs2.d
Normal file
10
gas/testsuite/gas/arc/tls-relocs2.d
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#as: -mcpu=archs
|
||||||
|
#objdump: -dr
|
||||||
|
|
||||||
|
.*: +file format .*arc.*
|
||||||
|
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
00000000 <.text>:
|
||||||
|
0: 70c3 0000 0804 add_s r0,r0,0x804
|
12
gas/testsuite/gas/arc/tls-relocs2.s
Normal file
12
gas/testsuite/gas/arc/tls-relocs2.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
.cpu HS
|
||||||
|
;;; Test if palette is resolved by the assembler.
|
||||||
|
add_s r0,r0,@palette@dtpoff@.tbss+2048
|
||||||
|
|
||||||
|
.section .tbss,"awT",@nobits
|
||||||
|
.align 4
|
||||||
|
.zero 4
|
||||||
|
.align 4
|
||||||
|
.type palette, @object
|
||||||
|
.size palette, 6144
|
||||||
|
palette:
|
||||||
|
.zero 6144
|
|
@ -1,3 +1,11 @@
|
||||||
|
2016-09-14 Claudiu Zissulescu <claziss@synopsys.com>
|
||||||
|
|
||||||
|
* testsuite/ld-arc/tls-dtpoff.dd: New file.
|
||||||
|
* testsuite/ld-arc/tls-dtpoff.rd: Likewise.
|
||||||
|
* testsuite/ld-arc/tls-dtpoff.s: Likewise.
|
||||||
|
* testsuite/ld-arc/tls-relocs.ld: Likewise.
|
||||||
|
* testsuite/ld-arc/arc.exp: Add new tdpoff test.
|
||||||
|
|
||||||
2016-09-14 Nick Clifton <nickc@redhat.com>
|
2016-09-14 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR ld/20537
|
PR ld/20537
|
||||||
|
|
|
@ -35,6 +35,11 @@ set arccommon_tests {
|
||||||
"-q -T sda-relocs.ld -A elf32-arclittle" "" "-mcpu=archs -EL" {sda-relocs.s}
|
"-q -T sda-relocs.ld -A elf32-arclittle" "" "-mcpu=archs -EL" {sda-relocs.s}
|
||||||
{{objdump -fdw sda-relocs.dd} {readelf --relocs sda-relocs.rd}}
|
{{objdump -fdw sda-relocs.dd} {readelf --relocs sda-relocs.rd}}
|
||||||
"sda-relocs.so" }
|
"sda-relocs.so" }
|
||||||
|
{ "TLS reloc dtpoff"
|
||||||
|
"-q -T tls-relocs.ld -A elf32-arclittle" "" "-mcpu=archs -EL"
|
||||||
|
{tls-dtpoff.s}
|
||||||
|
{{objdump -fdw tls-dtpoff.dd} {readelf --relocs tls-dtpoff.rd}}
|
||||||
|
"sda-relocs.so" }
|
||||||
}
|
}
|
||||||
|
|
||||||
run_ld_link_tests $arccommon_tests
|
run_ld_link_tests $arccommon_tests
|
||||||
|
|
11
ld/testsuite/ld-arc/tls-dtpoff.dd
Normal file
11
ld/testsuite/ld-arc/tls-dtpoff.dd
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
.*: file format .*arc.*
|
||||||
|
architecture: ARCv2, flags 0x00000113:
|
||||||
|
HAS_RELOC, EXEC_P, HAS_SYMS, D_PAGED
|
||||||
|
start address 0x00010000
|
||||||
|
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
[0-9a-f]+ <.text>:
|
||||||
|
[0-9a-f]+: 70c3 0000 0804 add_s r0,r0,0x804
|
4
ld/testsuite/ld-arc/tls-dtpoff.rd
Normal file
4
ld/testsuite/ld-arc/tls-dtpoff.rd
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
Relocation section '\.rela\.text' .*:
|
||||||
|
Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
|
||||||
|
[0-9a-f]+ [0-9a-f]+ R_ARC_TLS_DTPOFF [0-9a-f]+ palette \+ 800
|
12
ld/testsuite/ld-arc/tls-dtpoff.s
Normal file
12
ld/testsuite/ld-arc/tls-dtpoff.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
.cpu HS
|
||||||
|
;;; Test if palette is resolved by the linker.
|
||||||
|
add_s r0,r0,@palette@dtpoff+2048
|
||||||
|
|
||||||
|
.section .tbss,"awT",@nobits
|
||||||
|
.align 4
|
||||||
|
.zero 4
|
||||||
|
.align 4
|
||||||
|
.type palette, @object
|
||||||
|
.size palette, 6144
|
||||||
|
palette:
|
||||||
|
.zero 6144
|
20
ld/testsuite/ld-arc/tls-relocs.ld
Normal file
20
ld/testsuite/ld-arc/tls-relocs.ld
Normal file
|
@ -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
|
||||||
|
.tdata : {.tdata = .; *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||||
|
.tbss : {.tbss = .; *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||||
|
|
||||||
|
/DISCARD/ : { *(.__arc_profile_*) }
|
||||||
|
/DISCARD/ : { *(.note.GNU-stack) }
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue