summaryrefslogtreecommitdiff
path: root/ld/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite')
-rw-r--r--ld/testsuite/ld-i386/i386.exp6
-rw-r--r--ld/testsuite/ld-i386/pr27491-1.s14
-rw-r--r--ld/testsuite/ld-i386/pr27491-1a.d14
-rw-r--r--ld/testsuite/ld-i386/pr27491-1b.d11
-rw-r--r--ld/testsuite/ld-i386/pr27491-1c.d14
-rw-r--r--ld/testsuite/ld-i386/pr27491-2.d22
-rw-r--r--ld/testsuite/ld-i386/pr27491-2.s16
-rw-r--r--ld/testsuite/ld-i386/pr27491-3.d21
-rw-r--r--ld/testsuite/ld-i386/pr27491-3.s14
-rw-r--r--ld/testsuite/ld-i386/pr27491-4.d23
-rw-r--r--ld/testsuite/ld-i386/pr27491-4a.s11
-rw-r--r--ld/testsuite/ld-i386/pr27491-4b.s2
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-1.s14
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-1a.d14
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-1b.d11
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-1c.d21
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-2.d23
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-2.s20
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-3.d21
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-3.s14
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-4.d23
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-4a.s11
-rw-r--r--ld/testsuite/ld-x86-64/pr27491-4b.s2
-rw-r--r--ld/testsuite/ld-x86-64/x86-64.exp6
24 files changed, 348 insertions, 0 deletions
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index ceb60002d1..23ab8544c7 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -493,6 +493,12 @@ run_dump_test "property-x86-isa3"
run_dump_test "property-x86-isa4"
run_dump_test "pr26869"
run_dump_test "code16"
+run_dump_test "pr27491-1a"
+run_dump_test "pr27491-1b"
+run_dump_test "pr27491-1c"
+run_dump_test "pr27491-2"
+run_dump_test "pr27491-3"
+run_dump_test "pr27491-4"
if { !([istarget "i?86-*-linux*"]
|| [istarget "i?86-*-gnu*"]
diff --git a/ld/testsuite/ld-i386/pr27491-1.s b/ld/testsuite/ld-i386/pr27491-1.s
new file mode 100644
index 0000000000..89155aee5f
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-1.s
@@ -0,0 +1,14 @@
+ .weak __start_xx
+ .weak __stop_xx
+
+ .text
+ .global foo
+foo:
+ movl __start_xx@got(%ebx), %eax
+ movl __stop_xx@got(%ebx), %eax
+
+ .section xx,"a",unique,0
+ .byte 0
+
+ .section xx,"a",unique,1
+ .byte 1
diff --git a/ld/testsuite/ld-i386/pr27491-1a.d b/ld/testsuite/ld-i386/pr27491-1a.d
new file mode 100644
index 0000000000..006c17695c
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-1a.d
@@ -0,0 +1,14 @@
+#source: pr27491-1.s
+#as: --32
+#ld: --gc-sections -melf_i386 -z start-stop-gc -shared
+#objdump: -dw
+
+.*: +file format elf32-i386
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 8b 83 ([0-9a-f]{2} ){4}[ \t]+mov +-0x[a-f0-9]+\(%ebx\),%eax
+ +[a-f0-9]+: 8b 83 ([0-9a-f]{2} ){4}[ \t]+mov +-0x[a-f0-9]+\(%ebx\),%eax
+#pass
diff --git a/ld/testsuite/ld-i386/pr27491-1b.d b/ld/testsuite/ld-i386/pr27491-1b.d
new file mode 100644
index 0000000000..69b9ac3b08
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-1b.d
@@ -0,0 +1,11 @@
+#source: pr27491-1.s
+#as: --32
+#ld: --gc-sections -melf_i386 -z start-stop-gc -shared
+#nm: -n
+
+#failif
+#...
+[a-f0-9]+ R __start_xx
+#...
+[a-f0-9]+ R __stop_xx
+#...
diff --git a/ld/testsuite/ld-i386/pr27491-1c.d b/ld/testsuite/ld-i386/pr27491-1c.d
new file mode 100644
index 0000000000..730e975d17
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-1c.d
@@ -0,0 +1,14 @@
+#source: pr27491-1.s
+#as: --32
+#ld: --gc-sections -melf_i386 -shared
+#objdump: -dw
+
+.*: +file format elf32-i386
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 8d 83 ([0-9a-f]{2} ){4}[ \t]+lea +-0x[a-f0-9]+\(%ebx\),%eax
+ +[a-f0-9]+: 8d 83 ([0-9a-f]{2} ){4}[ \t]+lea +-0x[a-f0-9]+\(%ebx\),%eax
+#pass
diff --git a/ld/testsuite/ld-i386/pr27491-2.d b/ld/testsuite/ld-i386/pr27491-2.d
new file mode 100644
index 0000000000..02b310aab6
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-2.d
@@ -0,0 +1,22 @@
+#as: --32
+#ld: --gc-sections -melf_i386 -z start-stop-gc -shared
+#objdump: --syms -dw
+
+.*: +file format elf32-i386
+
+
+SYMBOL TABLE:
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __stop_xx
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __start_xx
+#...
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 8d 83 ([0-9a-f]{2} ){4}[ \t]+lea +-0x[a-f0-9]+\(%ebx\),%eax
+ +[a-f0-9]+: 8d 83 ([0-9a-f]{2} ){4}[ \t]+lea +-0x[a-f0-9]+\(%ebx\),%eax
+ +[a-f0-9]+: 8d 83 ([0-9a-f]{2} ){4}[ \t]+lea +-0x[a-f0-9]+\(%ebx\),%eax
+#pass
diff --git a/ld/testsuite/ld-i386/pr27491-2.s b/ld/testsuite/ld-i386/pr27491-2.s
new file mode 100644
index 0000000000..17871dddd7
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-2.s
@@ -0,0 +1,16 @@
+ .weak __start_xx
+ .weak __stop_xx
+
+ .text
+ .global foo
+foo:
+ movl __start_xx@got(%ebx), %eax
+ movl __stop_xx@got(%ebx), %eax
+ leal bar1@got(%ebx), %eax
+
+ .section xx,"a",unique,0
+bar1:
+ .byte 0
+
+ .section xx,"a",unique,1
+ .byte 1
diff --git a/ld/testsuite/ld-i386/pr27491-3.d b/ld/testsuite/ld-i386/pr27491-3.d
new file mode 100644
index 0000000000..7749570168
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-3.d
@@ -0,0 +1,21 @@
+#as: --32
+#ld: --gc-sections -melf_i386 -z start-stop-gc -shared
+#objdump: --syms -dw
+
+.*: +file format elf32-i386
+
+
+SYMBOL TABLE:
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __stop_xx
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __start_xx
+#...
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 8d 83 ([0-9a-f]{2} ){4}[ \t]+lea +-0x[a-f0-9]+\(%ebx\),%eax
+ +[a-f0-9]+: 8d 83 ([0-9a-f]{2} ){4}[ \t]+lea +-0x[a-f0-9]+\(%ebx\),%eax
+#pass
diff --git a/ld/testsuite/ld-i386/pr27491-3.s b/ld/testsuite/ld-i386/pr27491-3.s
new file mode 100644
index 0000000000..85fc3ddfff
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-3.s
@@ -0,0 +1,14 @@
+ .weak __start_xx
+ .weak __stop_xx
+
+ .text
+ .global foo
+foo:
+ movl __start_xx@got(%ebx), %eax
+ movl __stop_xx@got(%ebx), %eax
+
+ .section xx,"a",unique,0
+ .byte 0
+
+ .section xx,"aR",unique,1
+ .byte 1
diff --git a/ld/testsuite/ld-i386/pr27491-4.d b/ld/testsuite/ld-i386/pr27491-4.d
new file mode 100644
index 0000000000..4a305da1ea
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-4.d
@@ -0,0 +1,23 @@
+#source: pr27491-4a.s
+#source: pr27491-4b.s
+#as: --32
+#ld: --gc-sections -melf_i386 -z start-stop-gc -shared
+#objdump: --syms -dw
+
+.*: +file format elf32-i386
+
+
+SYMBOL TABLE:
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __stop_xx
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __start_xx
+#...
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 8d 83 ([0-9a-f]{2} ){4}[ \t]+lea +-0x[a-f0-9]+\(%ebx\),%eax
+ +[a-f0-9]+: 8d 83 ([0-9a-f]{2} ){4}[ \t]+lea +-0x[a-f0-9]+\(%ebx\),%eax
+#pass
diff --git a/ld/testsuite/ld-i386/pr27491-4a.s b/ld/testsuite/ld-i386/pr27491-4a.s
new file mode 100644
index 0000000000..a183b2f820
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-4a.s
@@ -0,0 +1,11 @@
+ .weak __start_xx
+ .weak __stop_xx
+
+ .text
+ .global foo
+foo:
+ movl __start_xx@got(%ebx), %eax
+ movl __stop_xx@got(%ebx), %eax
+
+ .section xx,"a",unique,0
+ .byte 0
diff --git a/ld/testsuite/ld-i386/pr27491-4b.s b/ld/testsuite/ld-i386/pr27491-4b.s
new file mode 100644
index 0000000000..d0b83e92b6
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr27491-4b.s
@@ -0,0 +1,2 @@
+ .section xx,"aR",unique,1
+ .byte 1
diff --git a/ld/testsuite/ld-x86-64/pr27491-1.s b/ld/testsuite/ld-x86-64/pr27491-1.s
new file mode 100644
index 0000000000..0d5b7714d8
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-1.s
@@ -0,0 +1,14 @@
+ .weak __start_xx
+ .weak __stop_xx
+
+ .text
+ .global foo
+foo:
+ movq __start_xx@gotpcrel(%rip), %rax
+ movq __stop_xx@gotpcrel(%rip), %rax
+
+ .section xx,"a",unique,0
+ .byte 0
+
+ .section xx,"a",unique,1
+ .byte 1
diff --git a/ld/testsuite/ld-x86-64/pr27491-1a.d b/ld/testsuite/ld-x86-64/pr27491-1a.d
new file mode 100644
index 0000000000..ade5c6fa4f
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-1a.d
@@ -0,0 +1,14 @@
+#source: pr27491-1.s
+#as: --64
+#ld: --gc-sections -melf_x86_64 -z start-stop-gc -shared
+#objdump: -dw
+
+.*: +file format elf64-x86-64
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4}[ \t]+mov +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+ +[a-f0-9]+: 48 8b 05 ([0-9a-f]{2} ){4}[ \t]+mov +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pr27491-1b.d b/ld/testsuite/ld-x86-64/pr27491-1b.d
new file mode 100644
index 0000000000..a6e21dac21
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-1b.d
@@ -0,0 +1,11 @@
+#source: pr27491-1.s
+#as: --64
+#ld: --gc-sections -melf_x86_64 -z start-stop-gc -shared
+#nm: -n
+
+#failif
+#...
+[a-f0-9]+ R __start_xx
+#...
+[a-f0-9]+ R __stop_xx
+#...
diff --git a/ld/testsuite/ld-x86-64/pr27491-1c.d b/ld/testsuite/ld-x86-64/pr27491-1c.d
new file mode 100644
index 0000000000..1288361463
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-1c.d
@@ -0,0 +1,21 @@
+#source: pr27491-1.s
+#as: --64
+#ld: --gc-sections -melf_x86_64 -shared
+#objdump: --syms -dw
+
+.*: +file format elf64-x86-64
+
+SYMBOL TABLE:
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __stop_xx
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __start_xx
+#...
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <__start_xx>
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <__stop_xx>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pr27491-2.d b/ld/testsuite/ld-x86-64/pr27491-2.d
new file mode 100644
index 0000000000..753ebb6408
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-2.d
@@ -0,0 +1,23 @@
+#as: --64
+#ld: --gc-sections -melf_x86_64 -z start-stop-gc -shared
+#objdump: --syms -dw
+
+.*: +file format elf64-x86-64
+
+
+SYMBOL TABLE:
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __stop_xx
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __start_xx
+#...
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <__start_xx>
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <__stop_xx>
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <bar1>
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <bar2>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pr27491-2.s b/ld/testsuite/ld-x86-64/pr27491-2.s
new file mode 100644
index 0000000000..a0975ff42c
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-2.s
@@ -0,0 +1,20 @@
+ .weak __start_xx
+ .weak __stop_xx
+
+ .text
+ .global foo
+foo:
+ movq __start_xx@gotpcrel(%rip), %rax
+ movq __stop_xx@gotpcrel(%rip), %rax
+ leaq bar1(%rip), %rax
+ leaq bar2(%rip), %rax
+
+ .section xx,"a",unique,0
+ .byte 0
+bar1:
+ .byte 0
+bar2:
+ .byte 0
+
+ .section xx,"a",unique,1
+ .byte 1
diff --git a/ld/testsuite/ld-x86-64/pr27491-3.d b/ld/testsuite/ld-x86-64/pr27491-3.d
new file mode 100644
index 0000000000..6dda5424ff
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-3.d
@@ -0,0 +1,21 @@
+#as: --64
+#ld: --gc-sections -melf_x86_64 -z start-stop-gc -shared
+#objdump: --syms -dw
+
+.*: +file format elf64-x86-64
+
+
+SYMBOL TABLE:
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __stop_xx
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __start_xx
+#...
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <__start_xx>
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <__stop_xx>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pr27491-3.s b/ld/testsuite/ld-x86-64/pr27491-3.s
new file mode 100644
index 0000000000..efdcba401b
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-3.s
@@ -0,0 +1,14 @@
+ .weak __start_xx
+ .weak __stop_xx
+
+ .text
+ .global foo
+foo:
+ movq __start_xx@gotpcrel(%rip), %rax
+ movq __stop_xx@gotpcrel(%rip), %rax
+
+ .section xx,"a",unique,1
+ .byte 0
+
+ .section xx,"aR",unique,0
+ .byte 1
diff --git a/ld/testsuite/ld-x86-64/pr27491-4.d b/ld/testsuite/ld-x86-64/pr27491-4.d
new file mode 100644
index 0000000000..54542fd2d1
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-4.d
@@ -0,0 +1,23 @@
+#source: pr27491-4a.s
+#source: pr27491-4b.s
+#as: --64
+#ld: --gc-sections -melf_x86_64 -z start-stop-gc -shared
+#objdump: --syms -dw
+
+.*: +file format elf64-x86-64
+
+
+SYMBOL TABLE:
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __stop_xx
+#...
+[a-f0-9]+ g xx [a-f0-9]+ \.protected __start_xx
+#...
+
+
+Disassembly of section .text:
+
+[a-f0-9]+ <foo>:
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <__start_xx>
+ +[a-f0-9]+: 48 8d 05 ([0-9a-f]{2} ){4}[ \t]+lea +0x[a-f0-9]+\(%rip\),%rax[ \t]+# [a-f0-9]+ <__stop_xx>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pr27491-4a.s b/ld/testsuite/ld-x86-64/pr27491-4a.s
new file mode 100644
index 0000000000..3b17a813e8
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-4a.s
@@ -0,0 +1,11 @@
+ .weak __start_xx
+ .weak __stop_xx
+
+ .text
+ .global foo
+foo:
+ movq __start_xx@gotpcrel(%rip), %rax
+ movq __stop_xx@gotpcrel(%rip), %rax
+
+ .section xx,"a",unique,1
+ .byte 0
diff --git a/ld/testsuite/ld-x86-64/pr27491-4b.s b/ld/testsuite/ld-x86-64/pr27491-4b.s
new file mode 100644
index 0000000000..2b46b21d3f
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27491-4b.s
@@ -0,0 +1,2 @@
+ .section xx,"aR",unique,0
+ .byte 1
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index 064438a3f9..ba065c0fe7 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -480,6 +480,12 @@ run_dump_test "property-x86-isa3-x32"
run_dump_test "property-x86-isa4"
run_dump_test "property-x86-isa4-x32"
run_dump_test "code16"
+run_dump_test "pr27491-1a"
+run_dump_test "pr27491-1b"
+run_dump_test "pr27491-1c"
+run_dump_test "pr27491-2"
+run_dump_test "pr27491-3"
+run_dump_test "pr27491-4"
if ![istarget "x86_64-*-linux*"] {
return