aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-08-22 14:28:54 +0000
committerAlan Modra <amodra@gmail.com>2011-08-22 14:28:54 +0000
commit365b60b058820ac395db8305aa5ab4ff5ce1a3af (patch)
treea8fb5f0524a7262813534ed1e425f98ef628070f
parent08efffb82dbcbb34f9704f63cd1c51a252e2f710 (diff)
downloadbinutils-365b60b058820ac395db8305aa5ab4ff5ce1a3af.zip
binutils-365b60b058820ac395db8305aa5ab4ff5ce1a3af.tar.gz
binutils-365b60b058820ac395db8305aa5ab4ff5ce1a3af.tar.bz2
* ld-powerpc/tocopt4a.s, * ld-powerpc/tocopt4b.s,
* ld-powerpc/tocopt4.d: New test. * ld-powerpc/powerpc.exp: Run it.
-rw-r--r--ld/testsuite/ChangeLog6
-rw-r--r--ld/testsuite/ld-powerpc/powerpc.exp2
-rw-r--r--ld/testsuite/ld-powerpc/tocopt4.d7
-rw-r--r--ld/testsuite/ld-powerpc/tocopt4a.s4
-rw-r--r--ld/testsuite/ld-powerpc/tocopt4b.s17
5 files changed, 36 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 013fbeb..2edc17d 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2011-08-22 Alan Modra <amodra@gmail.com>
+
+ * ld-powerpc/tocopt4a.s, * ld-powerpc/tocopt4b.s,
+ * ld-powerpc/tocopt4.d: New test.
+ * ld-powerpc/powerpc.exp: Run it.
+
2011-08-12 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13082
diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp
index d48b148..5ec36b2 100644
--- a/ld/testsuite/ld-powerpc/powerpc.exp
+++ b/ld/testsuite/ld-powerpc/powerpc.exp
@@ -209,6 +209,8 @@ set ppc64elftests {
{{ld tocopt2.out} {objdump -s tocopt2.d}} "tocopt2"}
{"TOC opt3" "-melf64ppc -no-keep-memory --defsym x=2" "-a64" {tocopt3.s}
{{objdump -s tocopt3.d}} "tocopt3"}
+ {"TOC opt4" "-melf64ppc -no-keep-memory --defsym x=2" "-a64"
+ {tocopt4a.s tocopt4b.s} {{objdump -s tocopt4.d}} "tocopt4"}
}
diff --git a/ld/testsuite/ld-powerpc/tocopt4.d b/ld/testsuite/ld-powerpc/tocopt4.d
new file mode 100644
index 0000000..4f450e4
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/tocopt4.d
@@ -0,0 +1,7 @@
+
+.*: file format .*
+
+Contents of section \.text:
+ 100000b0 e9298000 .*
+Contents of section \.got:
+ 100100b8 00000000 00000002 .*
diff --git a/ld/testsuite/ld-powerpc/tocopt4a.s b/ld/testsuite/ld-powerpc/tocopt4a.s
new file mode 100644
index 0000000..3d6f28e
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/tocopt4a.s
@@ -0,0 +1,4 @@
+ .globl _start
+ .text
+_start:
+ ld 9,xt@toc(9)
diff --git a/ld/testsuite/ld-powerpc/tocopt4b.s b/ld/testsuite/ld-powerpc/tocopt4b.s
new file mode 100644
index 0000000..ee77d10
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/tocopt4b.s
@@ -0,0 +1,17 @@
+ .section .toc,"aw"
+ .globl xt
+xt:
+ .quad x
+#
+# This testcase will fail with a warning "xt defined on removed toc entry"
+# if a large-toc access like the following is added to this file, because
+# toc analysis only considers toc accesses from the current object file.
+# The small-toc access from tocopt4a.s doesn't cause xt entry to be marked
+# !can_optimize. The testcase only passes because toc analysis considers
+# *no* access from the current file as being sufficiently unusual to
+# warrant keeping the toc entry. So, if you use global symbols on toc
+# entries, don't mix code models.
+#
+# .text
+# addis 9,2,xt@toc@ha
+# ld 9,xt@toc@l(9)