xtensa: ld: add tests for static linkage relaxation
authorMax Filippov <jcmvbkbc@gmail.com>
Fri, 20 Jul 2018 04:00:29 +0000 (21:00 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Mon, 23 Jul 2018 19:05:43 +0000 (12:05 -0700)
ld/
2018-07-23  Max Filippov  <jcmvbkbc@gmail.com>

* testsuite/ld-xtensa/relax-static-defs.s: New file.
* testsuite/ld-xtensa/relax-static-local-pie.d: New file.
* testsuite/ld-xtensa/relax-static-local-shared.d: New file.
* testsuite/ld-xtensa/relax-static-local.s: New file.
* testsuite/ld-xtensa/relax-static-pie.d: New file.
* testsuite/ld-xtensa/relax-static-shared.d: New file.
* testsuite/ld-xtensa/relax-static.s: New file.
* testsuite/ld-xtensa/relax-undef-weak-local-pie.d: New file.
* testsuite/ld-xtensa/relax-undef-weak-local-shared.d: New file.
* testsuite/ld-xtensa/relax-undef-weak-local.s: New file.
* testsuite/ld-xtensa/relax-undef-weak-pie.d: New file.
* testsuite/ld-xtensa/relax-undef-weak-shared.d: New file.
* testsuite/ld-xtensa/relax-undef-weak.s: New file.
* testsuite/ld-xtensa/xtensa.exp: New file.

15 files changed:
ld/ChangeLog
ld/testsuite/ld-xtensa/relax-static-defs.s [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-static-local-pie.d [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-static-local-shared.d [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-static-local.s [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-static-pie.d [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-static-shared.d [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-static.s [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-undef-weak-local-pie.d [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-undef-weak-local-shared.d [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-undef-weak-local.s [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-undef-weak-pie.d [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-undef-weak-shared.d [new file with mode: 0644]
ld/testsuite/ld-xtensa/relax-undef-weak.s [new file with mode: 0644]
ld/testsuite/ld-xtensa/xtensa.exp [new file with mode: 0644]

index 9a46c0b5911c0d78749cfca8d02c632d7a44122f..acfebc8d2f9235ddaed96c49cc35f625285ee7f2 100644 (file)
@@ -1,3 +1,20 @@
+2018-07-23  Max Filippov  <jcmvbkbc@gmail.com>
+
+       * testsuite/ld-xtensa/relax-static-defs.s: New file.
+       * testsuite/ld-xtensa/relax-static-local-pie.d: New file.
+       * testsuite/ld-xtensa/relax-static-local-shared.d: New file.
+       * testsuite/ld-xtensa/relax-static-local.s: New file.
+       * testsuite/ld-xtensa/relax-static-pie.d: New file.
+       * testsuite/ld-xtensa/relax-static-shared.d: New file.
+       * testsuite/ld-xtensa/relax-static.s: New file.
+       * testsuite/ld-xtensa/relax-undef-weak-local-pie.d: New file.
+       * testsuite/ld-xtensa/relax-undef-weak-local-shared.d: New file.
+       * testsuite/ld-xtensa/relax-undef-weak-local.s: New file.
+       * testsuite/ld-xtensa/relax-undef-weak-pie.d: New file.
+       * testsuite/ld-xtensa/relax-undef-weak-shared.d: New file.
+       * testsuite/ld-xtensa/relax-undef-weak.s: New file.
+       * testsuite/ld-xtensa/xtensa.exp: New file.
+
 2018-07-23  Max Filippov  <jcmvbkbc@gmail.com>
 
        * testsuite/ld-xtensa/xtensa.exp: Rename to xtensa-linux.exp.
diff --git a/ld/testsuite/ld-xtensa/relax-static-defs.s b/ld/testsuite/ld-xtensa/relax-static-defs.s
new file mode 100644 (file)
index 0000000..cce2452
--- /dev/null
@@ -0,0 +1,33 @@
+       .type   fd,@function
+       .globl  fd
+
+       .type   fh,@function
+       .globl  fh
+       .hidden fh
+
+       .type   fp,@function
+       .globl  fp
+       .protected fp
+
+       .type   fi,@function
+       .globl  fi
+       .internal fi
+
+       .text
+       .globl  _start
+_start:
+       nop
+
+       .section ".text.f"
+       .align  4
+fd:
+       nop
+       .align  4
+fh:
+       nop
+       .align  4
+fp:
+       nop
+       .align  4
+fi:
+       nop
diff --git a/ld/testsuite/ld-xtensa/relax-static-local-pie.d b/ld/testsuite/ld-xtensa/relax-static-local-pie.d
new file mode 100644 (file)
index 0000000..c23e33f
--- /dev/null
@@ -0,0 +1,17 @@
+#source: relax-static-local.s
+#source: relax-static-defs.s
+#ld: -pie
+#readelf: -r
+#...
+Relocation section '\.rela\.dyn' .* 6 .*
+#...
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+#failif
+#...
+Relocation section '\.rela\.plt' .*
+#...
diff --git a/ld/testsuite/ld-xtensa/relax-static-local-shared.d b/ld/testsuite/ld-xtensa/relax-static-local-shared.d
new file mode 100644 (file)
index 0000000..8577894
--- /dev/null
@@ -0,0 +1,17 @@
+#source: relax-static-local.s
+#source: relax-static-defs.s
+#ld: -shared
+#readelf: -r
+#...
+Relocation section '\.rela\.dyn' .* 6 .*
+#...
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+#failif
+#...
+Relocation section '\.rela\.plt' .*
+#...
diff --git a/ld/testsuite/ld-xtensa/relax-static-local.s b/ld/testsuite/ld-xtensa/relax-static-local.s
new file mode 100644 (file)
index 0000000..002cb31
--- /dev/null
@@ -0,0 +1,19 @@
+       .text
+
+       movi    a2, fh@plt
+       movi    a2, fp@plt
+       movi    a2, fi@plt
+
+       movi    a2, fh
+       movi    a2, fp
+       movi    a2, fi
+
+       .section ".text.a"
+
+       movi    a2, fh@plt
+       movi    a2, fp@plt
+       movi    a2, fi@plt
+
+       movi    a2, fh
+       movi    a2, fp
+       movi    a2, fi
diff --git a/ld/testsuite/ld-xtensa/relax-static-pie.d b/ld/testsuite/ld-xtensa/relax-static-pie.d
new file mode 100644 (file)
index 0000000..ded9c1b
--- /dev/null
@@ -0,0 +1,13 @@
+#source: relax-static.s
+#source: relax-static-defs.s
+#ld: -pie
+#readelf: -r
+#...
+Relocation section '\.rela\.dyn' .* 2 .*
+#...
+.*R_XTENSA_RELATIVE.*
+.*R_XTENSA_RELATIVE.*
+#failif
+#...
+Relocation section '\.rela\.plt' .*
+#...
diff --git a/ld/testsuite/ld-xtensa/relax-static-shared.d b/ld/testsuite/ld-xtensa/relax-static-shared.d
new file mode 100644 (file)
index 0000000..a202810
--- /dev/null
@@ -0,0 +1,15 @@
+#source: relax-static.s
+#source: relax-static-defs.s
+#ld: -shared
+#readelf: -r
+#...
+Relocation section '\.rela\.dyn' .* 3 .*
+#...
+.*R_XTENSA_RTLD.*
+.*R_XTENSA_RTLD.*
+.*R_XTENSA_GLOB_DAT.*fd.*
+#...
+Relocation section '\.rela\.plt' .* 1 .*
+#...
+.*R_XTENSA_JMP_SLOT.*fd.*
+#...
diff --git a/ld/testsuite/ld-xtensa/relax-static.s b/ld/testsuite/ld-xtensa/relax-static.s
new file mode 100644 (file)
index 0000000..727d00a
--- /dev/null
@@ -0,0 +1,9 @@
+       .text
+
+       movi    a2, fd@plt
+       movi    a2, fd
+
+       .section ".text.a"
+
+       movi    a2, fd@plt
+       movi    a2, fd
diff --git a/ld/testsuite/ld-xtensa/relax-undef-weak-local-pie.d b/ld/testsuite/ld-xtensa/relax-undef-weak-local-pie.d
new file mode 100644 (file)
index 0000000..3603b25
--- /dev/null
@@ -0,0 +1,6 @@
+#source: relax-undef-weak-local.s
+#ld: -pie
+#readelf: -r
+#...
+There are no relocations in this file.
+#...
diff --git a/ld/testsuite/ld-xtensa/relax-undef-weak-local-shared.d b/ld/testsuite/ld-xtensa/relax-undef-weak-local-shared.d
new file mode 100644 (file)
index 0000000..2bcf373
--- /dev/null
@@ -0,0 +1,6 @@
+#source: relax-undef-weak-local.s
+#ld: -shared
+#readelf: -r
+#...
+There are no relocations in this file.
+#...
diff --git a/ld/testsuite/ld-xtensa/relax-undef-weak-local.s b/ld/testsuite/ld-xtensa/relax-undef-weak-local.s
new file mode 100644 (file)
index 0000000..93f393e
--- /dev/null
@@ -0,0 +1,31 @@
+       .type   fp,@function
+       .weak   fp
+       .protected fp
+
+       .type   fh,@function
+       .weak   fh
+       .hidden fh
+
+       .type   fi,@function
+       .weak   fi
+       .internal fi
+
+       .globl  _start
+_start:
+       movi    a5, fp@plt
+       movi    a5, fh@plt
+       movi    a5, fi@plt
+
+       movi    a6, fp
+       movi    a6, fh
+       movi    a6, fi
+
+       .section ".text.a"
+a:
+       movi    a5, fp@plt
+       movi    a5, fh@plt
+       movi    a5, fi@plt
+
+       movi    a6, fp
+       movi    a6, fh
+       movi    a6, fi
diff --git a/ld/testsuite/ld-xtensa/relax-undef-weak-pie.d b/ld/testsuite/ld-xtensa/relax-undef-weak-pie.d
new file mode 100644 (file)
index 0000000..3eec896
--- /dev/null
@@ -0,0 +1,6 @@
+#source: relax-undef-weak.s
+#ld: -pie
+#readelf: -r
+#...
+There are no relocations in this file.
+#...
diff --git a/ld/testsuite/ld-xtensa/relax-undef-weak-shared.d b/ld/testsuite/ld-xtensa/relax-undef-weak-shared.d
new file mode 100644 (file)
index 0000000..1d7b20b
--- /dev/null
@@ -0,0 +1,14 @@
+#source: relax-undef-weak.s
+#ld: -shared
+#readelf: -r
+#...
+Relocation section '\.rela\.dyn' .* 3 .*
+#...
+.*R_XTENSA_RTLD.*
+.*R_XTENSA_RTLD.*
+.*R_XTENSA_GLOB_DAT.*fd.*
+#...
+Relocation section '\.rela\.plt' .* 1 .*
+#...
+.*R_XTENSA_JMP_SLOT.*fd.*
+#...
diff --git a/ld/testsuite/ld-xtensa/relax-undef-weak.s b/ld/testsuite/ld-xtensa/relax-undef-weak.s
new file mode 100644 (file)
index 0000000..19e99b6
--- /dev/null
@@ -0,0 +1,12 @@
+       .type   fd,@function
+       .weak   fd
+
+       .globl  _start
+_start:
+       movi    a5, fd@plt
+       movi    a6, fd
+
+       .section ".text.a"
+a:
+       movi    a5, fd@plt
+       movi    a6, fd
diff --git a/ld/testsuite/ld-xtensa/xtensa.exp b/ld/testsuite/ld-xtensa/xtensa.exp
new file mode 100644 (file)
index 0000000..cd74be2
--- /dev/null
@@ -0,0 +1,34 @@
+# Expect script for ld-xtensa tests
+#   Copyright (C) 2008-2018 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+if { !([istarget "xtensa*-*-*"]) } {
+    return
+}
+
+run_dump_test "relax-static-pie"
+run_dump_test "relax-static-local-pie"
+run_dump_test "relax-static-shared"
+run_dump_test "relax-static-local-shared"
+
+run_dump_test "relax-undef-weak-pie"
+run_dump_test "relax-undef-weak-local-pie"
+run_dump_test "relax-undef-weak-shared"
+run_dump_test "relax-undef-weak-local-shared"