aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/testsuite/ChangeLog5
-rw-r--r--ld/testsuite/ld-cris/dsofnf.s7
-rw-r--r--ld/testsuite/ld-cris/dsofnf2.s8
-rw-r--r--ld/testsuite/ld-cris/gotplt1.d48
-rw-r--r--ld/testsuite/ld-cris/gotplt2.d37
-rw-r--r--ld/testsuite/ld-cris/gotplt3.d35
6 files changed, 140 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index eb1a897..4a1cc75 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-22 Hans-Peter Nilsson <hp@axis.com>
+
+ * ld-cris/dsofnf.s, ld-cris/dsofnf2.s, ld-cris/gotplt1.d,
+ ld-cris/gotplt2.d, ld-cris/gotplt3.d: New tests.
+
2004-03-19 H.J. Lu <hongjiu.lu@intel.com>
* ld-elfvers/vers.exp: Add new tests for versioned weak
diff --git a/ld/testsuite/ld-cris/dsofnf.s b/ld/testsuite/ld-cris/dsofnf.s
new file mode 100644
index 0000000..bf0a4fa
--- /dev/null
+++ b/ld/testsuite/ld-cris/dsofnf.s
@@ -0,0 +1,7 @@
+ .text
+ .global f
+ .type f,@function
+f:
+ move.d [$r0+dsofn:GOT],$r1
+0:
+ .size f,0b-f
diff --git a/ld/testsuite/ld-cris/dsofnf2.s b/ld/testsuite/ld-cris/dsofnf2.s
new file mode 100644
index 0000000..fbf2384
--- /dev/null
+++ b/ld/testsuite/ld-cris/dsofnf2.s
@@ -0,0 +1,8 @@
+ .text
+ .global f
+ .type f,@function
+f:
+ move.d [$r0+dsofn:GOT],$r1
+ move.d dsofn,$r2
+0:
+ .size f,0b-f
diff --git a/ld/testsuite/ld-cris/gotplt1.d b/ld/testsuite/ld-cris/gotplt1.d
new file mode 100644
index 0000000..0065421
--- /dev/null
+++ b/ld/testsuite/ld-cris/gotplt1.d
@@ -0,0 +1,48 @@
+#source: dso-2.s
+#source: dsofnf2.s
+#source: gotrel1.s
+#as: --pic --no-underscore
+#ld: -m crislinux tmpdir/libdso-1.so
+#objdump: -sR
+
+# Make sure we don't merge a PLT-specific entry
+# (R_CRIS_JUMP_SLOT) with a non-PLT-GOT-specific entry
+# (R_CRIS_GLOB_DAT) in an executable, since they may have
+# different contents there. (If we merge them in a DSO it's ok:
+# we make a round-trip to the PLT in the executable if it's
+# referenced there, but that's still perceived as better than
+# having an unnecessary PLT, dynamic reloc and lookup in the
+# DSO.) In the executable, the GOT contents for the non-PLT
+# reloc should be constant.
+
+.*: file format elf32-cris
+
+DYNAMIC RELOCATION RECORDS
+OFFSET TYPE VALUE
+000822d4 R_CRIS_JUMP_SLOT dsofn
+
+Contents of section .*
+#...
+Contents of section \.rela\.plt:
+ 801d8 d4220800 0b060000 00000000 .*
+Contents of section \.plt:
+ 801e4 fce17e7e 7f0dcc22 0800307a 7f0dd022 .*
+ 801f4 08003009 7f0dd422 08003009 3f7e0000 .*
+ 80204 00002ffe d8ffffff .*
+Contents of section \.text:
+ 8020c 5f1d0c00 30096f1d 0c000000 30090000 .*
+ 8021c 6f0d1000 0000611a 6f2ef801 08000000 .*
+ 8022c 6f3e64df ffff0000 .*
+Contents of section \.dynamic:
+ 82240 01000000 01000000 04000000 e4000800 .*
+ 82250 05000000 84010800 06000000 14010800 .*
+ 82260 0a000000 51000000 0b000000 10000000 .*
+ 82270 15000000 00000000 03000000 c8220800 .*
+ 82280 02000000 0c000000 14000000 07000000 .*
+ 82290 17000000 d8010800 00000000 00000000 .*
+ 822a0 00000000 00000000 00000000 00000000 .*
+ 822b0 00000000 00000000 00000000 00000000 .*
+ 822c0 00000000 00000000 .*
+Contents of section \.got:
+ 822c8 40220800 00000000 00000000 00020800 .*
+ 822d8 f8010800 .*
diff --git a/ld/testsuite/ld-cris/gotplt2.d b/ld/testsuite/ld-cris/gotplt2.d
new file mode 100644
index 0000000..82fac09
--- /dev/null
+++ b/ld/testsuite/ld-cris/gotplt2.d
@@ -0,0 +1,37 @@
+#source: dso-2.s
+#source: dsofnf.s
+#source: gotrel1.s
+#as: --pic --no-underscore
+#ld: -shared -m crislinux -z nocombreloc
+#objdump: -sR
+
+# Make sure we merge a PLT-specific entry (usually
+# R_CRIS_JUMP_SLOT) with a GOT-specific entry (R_CRIS_GLOB_DAT)
+# in a DSO. It's ok: we make a round-trip to the PLT in the
+# executable if it's referenced there, but that's still
+# perceived as better than having an unnecessary PLT, dynamic
+# reloc and lookup in the DSO.)
+
+.*: file format elf32-cris
+
+DYNAMIC RELOCATION RECORDS
+OFFSET TYPE VALUE
+0000235c R_CRIS_GLOB_DAT dsofn
+
+Contents of section .*
+#...
+Contents of section \.rela\.got:
+ 02a8 5c230000 0a120000 00000000 .*
+Contents of section \.text:
+ 02b4 5f1d0c00 30096f1d 0c000000 30090000 .*
+ 02c4 6f0d0c00 0000611a 6f3e7cdf ffff0000 .*
+Contents of section \.dynamic:
+ 22e0 04000000 94000000 05000000 5c020000 .*
+ 22f0 06000000 2c010000 0a000000 49000000 .*
+ 2300 0b000000 10000000 07000000 a8020000 .*
+ 2310 08000000 0c000000 09000000 0c000000 .*
+ 2320 00000000 00000000 00000000 00000000 .*
+ 2330 00000000 00000000 00000000 00000000 .*
+ 2340 00000000 00000000 00000000 00000000 .*
+Contents of section \.got:
+ 2350 e0220000 00000000 00000000 00000000 .*
diff --git a/ld/testsuite/ld-cris/gotplt3.d b/ld/testsuite/ld-cris/gotplt3.d
new file mode 100644
index 0000000..a79af50
--- /dev/null
+++ b/ld/testsuite/ld-cris/gotplt3.d
@@ -0,0 +1,35 @@
+#source: dso-2.s
+#source: dsofnf.s
+#source: gotrel1.s
+#source: dso-1.s
+#as: --pic --no-underscore
+#ld: -shared -m crislinux -z nocombreloc
+#objdump: -sR
+
+# Like gotplt2, but make sure we merge right when we have a
+# definition of the function too.
+
+.*: file format elf32-cris
+
+DYNAMIC RELOCATION RECORDS
+OFFSET TYPE VALUE
+0000235c R_CRIS_GLOB_DAT dsofn
+
+Contents of section .*
+#...
+Contents of section \.rela\.got:
+ 02a8 5c230000 0a120000 00000000 .*
+Contents of section \.text:
+ 02b4 5f1d0c00 30096f1d 0c000000 30090000 .*
+ 02c4 6f0d0c00 0000611a 6f3e7cdf ffff0000 .*
+ 02d4 0f050000 .*
+Contents of section \.dynamic:
+ 22e0 04000000 94000000 05000000 5c020000 .*
+ 22f0 06000000 2c010000 0a000000 49000000 .*
+ 2300 0b000000 10000000 07000000 a8020000 .*
+ 2310 08000000 0c000000 09000000 0c000000 .*
+ 2320 00000000 00000000 00000000 00000000 .*
+ 2330 00000000 00000000 00000000 00000000 .*
+ 2340 00000000 00000000 00000000 00000000 .*
+Contents of section \.got:
+ 2350 e0220000 00000000 00000000 00000000 .*