* ld-frv: Update .d files with correct addresses displayed for
authorAlexandre Oliva <aoliva@redhat.com>
Tue, 6 Jan 2004 19:19:31 +0000 (19:19 +0000)
committerAlexandre Oliva <aoliva@redhat.com>
Tue, 6 Jan 2004 19:19:31 +0000 (19:19 +0000)
dynamic relocations.
2003-12-02  Alexandre Oliva  <aoliva@redhat.com>
* ld-frv/fdpic1.s (.D0): Move to separate data section.
2003-11-28  Alexandre Oliva  <aoliva@redhat.com>
* ld-frv/fdpic-static-1.d, ld-frv/fdpic-static-2.d,
* ld-frv/fdpic-static-7.d, ld-frv/fdpic-static-8.d: Update to
reflect EMBEDDED= change in linker script.
2003-11-27  Alexandre Oliva  <aoliva@redhat.com>
* ld-frv: Update .d files to reflect changes in the page size, the
addition of a stack segment, the use of a NULL function descriptor
for weakundef functions and the change in the lazy funcdesc_value
in-place addend value.
2003-11-05  Alexandre Oliva  <aoliva@redhat.com>
* lib/ld-lib.exp (is_elf_format): Match frv-uclinux.
2003-10-06  Alexandre Oliva  <aoliva@redhat.com>
* ld-frv/fdpic-static-1.d, ld-frv/fdpic-static-2.d,
ld-frv/fdpic-static-7.d, ld-frv/fdpic-static-8.d: Addresses are
now _gp-based, not .rofixup-based.
* ld-frv/fdpic-static-6.d: Likewise.  Match warning about
relocation to different section.
2003-09-30  Alexandre Oliva  <aoliva@redhat.com>
* ld-frv/fdpic.exp: Add -melf32frvfd to LDFLAGS.
2003-09-19  Alexandre Oliva  <aoliva@redhat.com>
* ld-frv/fdpic7.s, ld-frv/fdpic-static-7.d, ld-frv/fdpic-pie-7.d,
ld-frv/fdpic-shared-7.d: New.
* ld-frv/fdpic8.s, ld-frv/fdpic-static-8.d, ld-frv/fdpic-pie-8.d,
ld-frv/fdpic-shared-8.d: New.
* ld-frv/fdpic-pie-8-fail.d, ld-frv/fdpic-shared-8-fail.d: New.
* ld-frv/fdpic.exp: Run them.
* ld-frv/fdpic8.ldv, ld-frv/fdpic8min.ldv: New.
2003-09-18  Alexandre Oliva  <aoliva@redhat.com>
* ld-frv/fdpic5.s, ld-frv/fdpic-static-5.d, ld-frv/fdpic-pie-5.d,
ld-frv/fdpic-shared-5.d: New.
* ld-frv/fdpic6.s, ld-frv/fdpic-static-6.d, ld-frv/fdpic-pie-6.d,
ld-frv/fdpic-shared-6.d: New.
* ld-frv/fdpic.exp: Run them.
* ld-frv/fdpic*.d: Add -mfdpic to assembler flags.  Updated.
* ld-frv/fdpic2min.ldv: New, used by fdpic-shared-2.d.
* ld-frv/fdpic-shared-2-fail.d: New.
* ld-frv/fdpic.exp: Run it.
* ld-frv/fdpic4.s, ld-frv/fdpic-shared-4.d: New.
* ld-frv/fdpic.exp: Add new test.
* ld-frv/fdpic-pie-2.d: Remove unnecessary function descriptors.
* ld-frv/fdpic-shared-local-2.d, ld-frv/fdpic2.ldv: New.
* ld-frv/fdpic3.s, ld-frv/fdpic-shared-3.d: New.
* ld-frv/fdpic.exp: Add new tests.
* ld-frv/fdpic.exp, ld-frv/fdpic1.s, ld-frv/fdpic2.s,
* ld-frv/fdpic-static-1.d, ld-frv/fdpic-static-2.d,
* ld-frv/fdpic-pie-1.d, ld-frv/fdpic-pie-2.d,
* ld-frv/fdpic-shared-1.d, ld-frv/fdpic-shared-2.d: Renamed from
ucpic.
2003-09-15  Alexandre Oliva  <aoliva@redhat.com>
* ld-frv/ucpic.exp, ld-frv/ucpic1.s, ld-frv/ucpic2.s: New.
* ld-frv/ucpic-static-1.d, ld-frv/ucpic-static-2.d: New.
* ld-frv/ucpic-pie-1.d, ld-frv/ucpic-pie-2.d: New.
* ld-frv/ucpic-shared-1.d, ld-frv/ucpic-shared-2.d: New.

40 files changed:
ld/testsuite/ChangeLog
ld/testsuite/ld-frv/fdpic-pie-1.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-pie-2.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-pie-5.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-pie-6.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-pie-7.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-pie-8-fail.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-pie-8.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-1.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-2-fail.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-2.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-3.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-4.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-5.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-6.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-7.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-8-fail.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-8.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-local-2.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-shared-local-8.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-static-1.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-static-2.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-static-5.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-static-6.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-static-7.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic-static-8.d [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic.exp [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic1.s [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic2.ldv [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic2.s [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic2min.ldv [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic3.s [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic4.s [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic5.s [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic6.s [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic7.s [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic8.ldv [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic8.s [new file with mode: 0644]
ld/testsuite/ld-frv/fdpic8min.ldv [new file with mode: 0644]
ld/testsuite/lib/ld-lib.exp

index 19f3c33..7889ca6 100644 (file)
@@ -1,3 +1,63 @@
+2004-01-06  Alexandre Oliva  <aoliva@redhat.com>
+
+       * ld-frv: Update .d files with correct addresses displayed for
+       dynamic relocations.
+       2003-12-02  Alexandre Oliva  <aoliva@redhat.com>
+       * ld-frv/fdpic1.s (.D0): Move to separate data section.
+       2003-11-28  Alexandre Oliva  <aoliva@redhat.com>
+       * ld-frv/fdpic-static-1.d, ld-frv/fdpic-static-2.d,
+       * ld-frv/fdpic-static-7.d, ld-frv/fdpic-static-8.d: Update to
+       reflect EMBEDDED= change in linker script.
+       2003-11-27  Alexandre Oliva  <aoliva@redhat.com>
+       * ld-frv: Update .d files to reflect changes in the page size, the
+       addition of a stack segment, the use of a NULL function descriptor
+       for weakundef functions and the change in the lazy funcdesc_value
+       in-place addend value.
+       2003-11-05  Alexandre Oliva  <aoliva@redhat.com>
+       * lib/ld-lib.exp (is_elf_format): Match frv-uclinux.
+       2003-10-06  Alexandre Oliva  <aoliva@redhat.com>
+       * ld-frv/fdpic-static-1.d, ld-frv/fdpic-static-2.d,
+       ld-frv/fdpic-static-7.d, ld-frv/fdpic-static-8.d: Addresses are
+       now _gp-based, not \.rofixup-based.
+       * ld-frv/fdpic-static-6.d: Likewise.  Match warning about
+       relocation to different section.
+       2003-09-30  Alexandre Oliva  <aoliva@redhat.com>
+       * ld-frv/fdpic.exp: Add -melf32frvfd to LDFLAGS.
+       2003-09-19  Alexandre Oliva  <aoliva@redhat.com>
+       * ld-frv/fdpic7.s, ld-frv/fdpic-static-7.d, ld-frv/fdpic-pie-7.d,
+       ld-frv/fdpic-shared-7.d: New.
+       * ld-frv/fdpic8.s, ld-frv/fdpic-static-8.d, ld-frv/fdpic-pie-8.d,
+       ld-frv/fdpic-shared-8.d: New.
+       * ld-frv/fdpic-pie-8-fail.d, ld-frv/fdpic-shared-8-fail.d: New.
+       * ld-frv/fdpic.exp: Run them.
+       * ld-frv/fdpic8.ldv, ld-frv/fdpic8min.ldv: New.
+       2003-09-18  Alexandre Oliva  <aoliva@redhat.com>
+       * ld-frv/fdpic5.s, ld-frv/fdpic-static-5.d, ld-frv/fdpic-pie-5.d,
+       ld-frv/fdpic-shared-5.d: New.
+       * ld-frv/fdpic6.s, ld-frv/fdpic-static-6.d, ld-frv/fdpic-pie-6.d,
+       ld-frv/fdpic-shared-6.d: New.
+       * ld-frv/fdpic.exp: Run them.
+       * ld-frv/fdpic*.d: Add -mfdpic to assembler flags.  Updated.
+       * ld-frv/fdpic2min.ldv: New, used by fdpic-shared-2.d.
+       * ld-frv/fdpic-shared-2-fail.d: New.
+       * ld-frv/fdpic.exp: Run it.
+       * ld-frv/fdpic4.s, ld-frv/fdpic-shared-4.d: New.
+       * ld-frv/fdpic.exp: Add new test.
+       * ld-frv/fdpic-pie-2.d: Remove unnecessary function descriptors.
+       * ld-frv/fdpic-shared-local-2.d, ld-frv/fdpic2.ldv: New.
+       * ld-frv/fdpic3.s, ld-frv/fdpic-shared-3.d: New.
+       * ld-frv/fdpic.exp: Add new tests.
+       * ld-frv/fdpic.exp, ld-frv/fdpic1.s, ld-frv/fdpic2.s,
+       * ld-frv/fdpic-static-1.d, ld-frv/fdpic-static-2.d,
+       * ld-frv/fdpic-pie-1.d, ld-frv/fdpic-pie-2.d,
+       * ld-frv/fdpic-shared-1.d, ld-frv/fdpic-shared-2.d: Renamed from
+       ucpic.
+       2003-09-15  Alexandre Oliva  <aoliva@redhat.com>
+       * ld-frv/ucpic.exp, ld-frv/ucpic1.s, ld-frv/ucpic2.s: New.
+       * ld-frv/ucpic-static-1.d, ld-frv/ucpic-static-2.d: New.
+       * ld-frv/ucpic-pie-1.d, ld-frv/ucpic-pie-2.d: New.
+       * ld-frv/ucpic-shared-1.d, ld-frv/ucpic-shared-2.d: New.
+
 2004-01-02  Alan Modra  <amodra@bigpond.net.au>
 
        * ld-selective/sel-dump.exp: Use is_elf_format, xfail assorted targets.
diff --git a/ld/testsuite/ld-frv/fdpic-pie-1.d b/ld/testsuite/ld-frv/fdpic-pie-1.d
new file mode 100644 (file)
index 0000000..da356ae
--- /dev/null
@@ -0,0 +1,58 @@
+#name: FRV uClinux PIC relocs to local symbols, pie linking
+#source: fdpic1.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -pie
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+000003d0 <F1>:
+ 3d0:  80 3c 00 01     call 3d4 <\.F0>
+
+000003d4 <\.F0>:
+ 3d4:  80 40 f0 0c     addi gr15,12,gr0
+ 3d8:  80 fc 00 0c     setlos 0xc,gr0
+ 3dc:  80 f4 00 0c     setlo 0xc,gr0
+ 3e0:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 3e4:  80 40 f0 10     addi gr15,16,gr0
+ 3e8:  80 fc 00 10     setlos 0x10,gr0
+ 3ec:  80 f4 00 10     setlo 0x10,gr0
+ 3f0:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 3f4:  80 40 ff f8     addi gr15,-8,gr0
+ 3f8:  80 fc ff f8     setlos 0xfffffff8,gr0
+ 3fc:  80 f4 ff f8     setlo 0xfff8,gr0
+ 400:  80 f8 ff ff     sethi 0xffff,gr0
+ 404:  80 40 ff 74     addi gr15,-140,gr0
+ 408:  80 fc ff 74     setlos 0xffffff74,gr0
+ 40c:  80 f4 ff 74     setlo 0xff74,gr0
+ 410:  80 f8 ff ff     sethi 0xffff,gr0
+ 414:  80 f4 00 14     setlo 0x14,gr0
+ 418:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+00010430 <D1>:
+   10430:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10430: R_FRV_32 \.data
+
+00010434 <\.D0>:
+   10434:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10434: R_FRV_32 \.got
+   10438:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10438: R_FRV_32 \.text
+Disassembly of section \.got:
+
+000104b8 <_GLOBAL_OFFSET_TABLE_-0x8>:
+   104b8:      00 00 00 04     add\.p gr0,gr4,gr0
+                       104b8: R_FRV_FUNCDESC_VALUE     \.text
+   104bc:      00 00 00 02     add\.p gr0,fp,gr0
+
+000104c0 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   104cc:      00 00 00 04     add\.p gr0,gr4,gr0
+                       104cc: R_FRV_32 \.text
+   104d0:      00 00 00 00     add\.p gr0,gr0,gr0
+                       104d0: R_FRV_32 \.got
+   104d4:      00 00 00 04     add\.p gr0,gr4,gr0
+                       104d4: R_FRV_32 \.data
diff --git a/ld/testsuite/ld-frv/fdpic-pie-2.d b/ld/testsuite/ld-frv/fdpic-pie-2.d
new file mode 100644 (file)
index 0000000..fb7691a
--- /dev/null
@@ -0,0 +1,70 @@
+#name: FRV uClinux PIC relocs to global symbols, pie linking
+#source: fdpic2.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -pie
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+000005d0 <F2>:
+ 5d0:  80 3c 00 01     call 5d4 <GF0>
+
+000005d4 <GF0>:
+ 5d4:  80 40 f0 10     addi gr15,16,gr0
+ 5d8:  80 fc 00 24     setlos 0x24,gr0
+ 5dc:  80 f4 00 20     setlo 0x20,gr0
+ 5e0:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 5e4:  80 40 f0 0c     addi gr15,12,gr0
+ 5e8:  80 fc 00 18     setlos 0x18,gr0
+ 5ec:  80 f4 00 14     setlo 0x14,gr0
+ 5f0:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 5f4:  80 40 ff f8     addi gr15,-8,gr0
+ 5f8:  80 fc ff f0     setlos 0xfffffff0,gr0
+ 5fc:  80 f4 ff e8     setlo 0xffe8,gr0
+ 600:  80 f8 ff ff     sethi 0xffff,gr0
+ 604:  80 40 ff 64     addi gr15,-156,gr0
+ 608:  80 fc ff 64     setlos 0xffffff64,gr0
+ 60c:  80 f4 ff 64     setlo 0xff64,gr0
+ 610:  80 f8 ff ff     sethi 0xffff,gr0
+ 614:  80 f4 00 1c     setlo 0x1c,gr0
+ 618:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+00010630 <D2>:
+   10630:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10630: R_FRV_32 \.data
+
+00010634 <GD0>:
+   10634:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10634: R_FRV_FUNCDESC   GFb
+   10638:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10638: R_FRV_32 \.text
+Disassembly of section \.got:
+
+000106b8 <_GLOBAL_OFFSET_TABLE_-0x18>:
+   106b8:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106b8: R_FRV_FUNCDESC_VALUE     \.text
+   106bc:      00 00 00 02     add\.p gr0,fp,gr0
+   106c0:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106c0: R_FRV_FUNCDESC_VALUE     \.text
+   106c4:      00 00 00 02     add\.p gr0,fp,gr0
+   106c8:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106c8: R_FRV_FUNCDESC_VALUE     \.text
+   106cc:      00 00 00 02     add\.p gr0,fp,gr0
+
+000106d0 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+                       106dc: R_FRV_FUNCDESC   GF4
+   106e0:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106e0: R_FRV_32 \.text
+       \.\.\.
+                       106e4: R_FRV_FUNCDESC   GF6
+                       106e8: R_FRV_FUNCDESC   GF5
+   106ec:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106ec: R_FRV_32 \.data
+   106f0:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106f0: R_FRV_32 \.text
+   106f4:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106f4: R_FRV_32 \.text
diff --git a/ld/testsuite/ld-frv/fdpic-pie-5.d b/ld/testsuite/ld-frv/fdpic-pie-5.d
new file mode 100644 (file)
index 0000000..b2678e1
--- /dev/null
@@ -0,0 +1,6 @@
+#name: FRV uClinux PIC relocs to undefined symbols, pie linking
+#source: fdpic5.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -pie
+#error: undefined reference
diff --git a/ld/testsuite/ld-frv/fdpic-pie-6.d b/ld/testsuite/ld-frv/fdpic-pie-6.d
new file mode 100644 (file)
index 0000000..eaca671
--- /dev/null
@@ -0,0 +1,6 @@
+#name: FRV uClinux PIC relocs to undefined symbols, pie linking
+#source: fdpic6.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -pie
+#error: different segments
diff --git a/ld/testsuite/ld-frv/fdpic-pie-7.d b/ld/testsuite/ld-frv/fdpic-pie-7.d
new file mode 100644 (file)
index 0000000..a3f0478
--- /dev/null
@@ -0,0 +1,58 @@
+#name: FRV uClinux PIC relocs to local symbols with addends, pie linking
+#source: fdpic7.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -pie
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+000003d0 <F7>:
+ 3d0:  80 3c 00 02     call 3d8 <\.F0\+0x4>
+
+000003d4 <\.F0>:
+ 3d4:  80 40 f0 0c     addi gr15,12,gr0
+ 3d8:  80 fc 00 0c     setlos 0xc,gr0
+ 3dc:  80 f4 00 0c     setlo 0xc,gr0
+ 3e0:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 3e4:  80 40 f0 10     addi gr15,16,gr0
+ 3e8:  80 fc 00 10     setlos 0x10,gr0
+ 3ec:  80 f4 00 10     setlo 0x10,gr0
+ 3f0:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 3f4:  80 40 ff f8     addi gr15,-8,gr0
+ 3f8:  80 fc ff f8     setlos 0xfffffff8,gr0
+ 3fc:  80 f4 ff f8     setlo 0xfff8,gr0
+ 400:  80 f8 ff ff     sethi 0xffff,gr0
+ 404:  80 40 ff 78     addi gr15,-136,gr0
+ 408:  80 fc ff 78     setlos 0xffffff78,gr0
+ 40c:  80 f4 ff 78     setlo 0xff78,gr0
+ 410:  80 f8 ff ff     sethi 0xffff,gr0
+ 414:  80 f4 00 14     setlo 0x14,gr0
+ 418:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+00010430 <D7>:
+   10430:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10430: R_FRV_32 \.data
+
+00010434 <\.D0>:
+   10434:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10434: R_FRV_32 \.got
+   10438:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10438: R_FRV_32 \.text
+Disassembly of section \.got:
+
+000104b8 <_GLOBAL_OFFSET_TABLE_-0x8>:
+   104b8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       104b8: R_FRV_FUNCDESC_VALUE     \.text
+   104bc:      00 00 00 02     add\.p gr0,fp,gr0
+
+000104c0 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   104cc:      00 00 00 08     add\.p gr0,gr8,gr0
+                       104cc: R_FRV_32 \.text
+   104d0:      00 00 00 00     add\.p gr0,gr0,gr0
+                       104d0: R_FRV_32 \.got
+   104d4:      00 00 00 08     add\.p gr0,gr8,gr0
+                       104d4: R_FRV_32 \.data
diff --git a/ld/testsuite/ld-frv/fdpic-pie-8-fail.d b/ld/testsuite/ld-frv/fdpic-pie-8-fail.d
new file mode 100644 (file)
index 0000000..f797b6a
--- /dev/null
@@ -0,0 +1,6 @@
+#name: FRV uClinux PIC relocs to global symbols with addends, failing pie linking
+#source: fdpic8.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -pie
+#error: nonzero addend
diff --git a/ld/testsuite/ld-frv/fdpic-pie-8.d b/ld/testsuite/ld-frv/fdpic-pie-8.d
new file mode 100644 (file)
index 0000000..882f816
--- /dev/null
@@ -0,0 +1,84 @@
+#name: FRV uClinux PIC relocs to global symbols with addends, pie linking
+#source: fdpic8.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -pie --version-script fdpic8min.ldv
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+00000498 <F8>:
+ 498:  80 3c 00 02     call 4a0 <GF1\+0x4>
+
+0000049c <GF1>:
+ 49c:  80 40 f0 10     addi gr15,16,gr0
+ 4a0:  80 fc 00 14     setlos 0x14,gr0
+ 4a4:  80 f4 00 24     setlo 0x24,gr0
+ 4a8:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 4ac:  80 40 f0 0c     addi gr15,12,gr0
+ 4b0:  80 fc 00 1c     setlos 0x1c,gr0
+ 4b4:  80 f4 00 18     setlo 0x18,gr0
+ 4b8:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 4bc:  80 40 ff f8     addi gr15,-8,gr0
+ 4c0:  80 fc ff f0     setlos 0xfffffff0,gr0
+ 4c4:  80 f4 ff c8     setlo 0xffc8,gr0
+ 4c8:  80 f8 ff ff     sethi 0xffff,gr0
+ 4cc:  80 40 ff 48     addi gr15,-184,gr0
+ 4d0:  80 fc ff 48     setlos 0xffffff48,gr0
+ 4d4:  80 f4 ff 48     setlo 0xff48,gr0
+ 4d8:  80 f8 ff ff     sethi 0xffff,gr0
+ 4dc:  80 f4 00 20     setlo 0x20,gr0
+ 4e0:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+000104f8 <D8>:
+   104f8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       104f8: R_FRV_32 \.data
+
+000104fc <GD0>:
+   104fc:      00 00 00 10     add\.p gr0,gr16,gr0
+                       104fc: R_FRV_32 \.got
+   10500:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10500: R_FRV_32 \.text
+Disassembly of section \.got:
+
+00010580 <_GLOBAL_OFFSET_TABLE_-0x38>:
+   10580:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10580: R_FRV_FUNCDESC_VALUE     \.text
+   10584:      00 00 00 02     add\.p gr0,fp,gr0
+   10588:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10588: R_FRV_FUNCDESC_VALUE     \.text
+   1058c:      00 00 00 02     add\.p gr0,fp,gr0
+   10590:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10590: R_FRV_FUNCDESC_VALUE     \.text
+   10594:      00 00 00 02     add\.p gr0,fp,gr0
+   10598:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10598: R_FRV_FUNCDESC_VALUE     \.text
+   1059c:      00 00 00 02     add\.p gr0,fp,gr0
+   105a0:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105a0: R_FRV_FUNCDESC_VALUE     \.text
+   105a4:      00 00 00 02     add\.p gr0,fp,gr0
+   105a8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105a8: R_FRV_FUNCDESC_VALUE     \.text
+   105ac:      00 00 00 02     add\.p gr0,fp,gr0
+   105b0:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105b0: R_FRV_FUNCDESC_VALUE     \.text
+   105b4:      00 00 00 02     add\.p gr0,fp,gr0
+
+000105b8 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   105c4:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105c4: R_FRV_32 \.got
+   105c8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105c8: R_FRV_32 \.text
+   105cc:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105cc: R_FRV_32 \.text
+   105d0:      00 00 00 20     add\.p gr0,gr32,gr0
+                       105d0: R_FRV_32 \.got
+   105d4:      00 00 00 18     add\.p gr0,gr24,gr0
+                       105d4: R_FRV_32 \.got
+   105d8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105d8: R_FRV_32 \.data
+   105dc:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105dc: R_FRV_32 \.text
diff --git a/ld/testsuite/ld-frv/fdpic-shared-1.d b/ld/testsuite/ld-frv/fdpic-shared-1.d
new file mode 100644 (file)
index 0000000..aeb3bc4
--- /dev/null
@@ -0,0 +1,58 @@
+#name: FRV uClinux PIC relocs to local symbols, shared linking
+#source: fdpic1.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+000003dc <F1>:
+ 3dc:  80 3c 00 01     call 3e0 <\.F0>
+
+000003e0 <\.F0>:
+ 3e0:  80 40 f0 0c     addi gr15,12,gr0
+ 3e4:  80 fc 00 0c     setlos 0xc,gr0
+ 3e8:  80 f4 00 0c     setlo 0xc,gr0
+ 3ec:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 3f0:  80 40 f0 10     addi gr15,16,gr0
+ 3f4:  80 fc 00 10     setlos 0x10,gr0
+ 3f8:  80 f4 00 10     setlo 0x10,gr0
+ 3fc:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 400:  80 40 ff f8     addi gr15,-8,gr0
+ 404:  80 fc ff f8     setlos 0xfffffff8,gr0
+ 408:  80 f4 ff f8     setlo 0xfff8,gr0
+ 40c:  80 f8 ff ff     sethi 0xffff,gr0
+ 410:  80 40 ff 78     addi gr15,-136,gr0
+ 414:  80 fc ff 78     setlos 0xffffff78,gr0
+ 418:  80 f4 ff 78     setlo 0xff78,gr0
+ 41c:  80 f8 ff ff     sethi 0xffff,gr0
+ 420:  80 f4 00 14     setlo 0x14,gr0
+ 424:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+0001042c <D1>:
+   1042c:      00 00 00 04     add\.p gr0,gr4,gr0
+                       1042c: R_FRV_32 \.data
+
+00010430 <\.D0>:
+   10430:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10430: R_FRV_32 \.got
+   10434:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10434: R_FRV_32 \.text
+Disassembly of section \.got:
+
+000104b0 <_GLOBAL_OFFSET_TABLE_-0x8>:
+   104b0:      00 00 00 04     add\.p gr0,gr4,gr0
+                       104b0: R_FRV_FUNCDESC_VALUE     \.text
+   104b4:      00 00 00 00     add\.p gr0,gr0,gr0
+
+000104b8 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   104c4:      00 00 00 04     add\.p gr0,gr4,gr0
+                       104c4: R_FRV_32 \.text
+   104c8:      00 00 00 00     add\.p gr0,gr0,gr0
+                       104c8: R_FRV_32 \.got
+   104cc:      00 00 00 04     add\.p gr0,gr4,gr0
+                       104cc: R_FRV_32 \.data
diff --git a/ld/testsuite/ld-frv/fdpic-shared-2-fail.d b/ld/testsuite/ld-frv/fdpic-shared-2-fail.d
new file mode 100644 (file)
index 0000000..5840d4b
--- /dev/null
@@ -0,0 +1,5 @@
+#name: FRV uClinux PIC relocs to global symbols, failing shared linking
+#source: fdpic2.s
+#as: -mfdpic
+#ld: -shared
+#error: relocations between different segments are not supported
diff --git a/ld/testsuite/ld-frv/fdpic-shared-2.d b/ld/testsuite/ld-frv/fdpic-shared-2.d
new file mode 100644 (file)
index 0000000..b506788
--- /dev/null
@@ -0,0 +1,81 @@
+#name: FRV uClinux PIC relocs to (mostly) global symbols, shared linking
+#source: fdpic2.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared --version-script fdpic2min.ldv
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.plt:
+
+000005c8 <\.plt>:
+ 5c8:  00 00 00 00     add\.p gr0,gr0,gr0
+ 5cc:  c0 1a 00 06     bra 5e4 <F2-0x10>
+ 5d0:  00 00 00 10     add\.p gr0,gr16,gr0
+ 5d4:  c0 1a 00 04     bra 5e4 <F2-0x10>
+ 5d8:  00 00 00 18     add\.p gr0,gr24,gr0
+ 5dc:  c0 1a 00 02     bra 5e4 <F2-0x10>
+ 5e0:  00 00 00 08     add\.p gr0,gr8,gr0
+ 5e4:  88 08 f1 40     ldd @\(gr15,gr0\),gr4
+ 5e8:  80 30 40 00     jmpl @\(gr4,gr0\)
+ 5ec:  9c cc ff f8     lddi @\(gr15,-8\),gr14
+ 5f0:  80 30 e0 00     jmpl @\(gr14,gr0\)
+Disassembly of section \.text:
+
+000005f4 <F2>:
+ 5f4:  fe 3f ff fe     call 5ec <F2-0x8>
+
+000005f8 <GF0>:
+ 5f8:  80 40 f0 10     addi gr15,16,gr0
+ 5fc:  80 fc 00 24     setlos 0x24,gr0
+ 600:  80 f4 00 20     setlo 0x20,gr0
+ 604:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 608:  80 40 f0 0c     addi gr15,12,gr0
+ 60c:  80 fc 00 18     setlos 0x18,gr0
+ 610:  80 f4 00 14     setlo 0x14,gr0
+ 614:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 618:  80 40 ff f0     addi gr15,-16,gr0
+ 61c:  80 fc ff e8     setlos 0xffffffe8,gr0
+ 620:  80 f4 ff e0     setlo 0xffe0,gr0
+ 624:  80 f8 ff ff     sethi 0xffff,gr0
+ 628:  80 40 ff 48     addi gr15,-184,gr0
+ 62c:  80 fc ff 48     setlos 0xffffff48,gr0
+ 630:  80 f4 ff 48     setlo 0xff48,gr0
+ 634:  80 f8 ff ff     sethi 0xffff,gr0
+ 638:  80 f4 00 1c     setlo 0x1c,gr0
+ 63c:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+00010644 <D2>:
+   10644:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10644: R_FRV_32 GD0
+
+00010648 <GD0>:
+       \.\.\.
+                       10648: R_FRV_FUNCDESC   GFb
+                       1064c: R_FRV_32 GFb
+Disassembly of section \.got:
+
+000106e0 <_GLOBAL_OFFSET_TABLE_-0x20>:
+   106e0:      00 00 05 dc     subxcc\.p gr0,gr28,gr0,icc1
+                       106e0: R_FRV_FUNCDESC_VALUE     GF9
+   106e4:      00 00 00 00     add\.p gr0,gr0,gr0
+   106e8:      00 00 05 d4     subxcc\.p gr0,gr20,gr0,icc1
+                       106e8: R_FRV_FUNCDESC_VALUE     GF8
+   106ec:      00 00 00 00     add\.p gr0,gr0,gr0
+   106f0:      00 00 05 e4     subxcc\.p gr0,gr36,gr0,icc1
+                       106f0: R_FRV_FUNCDESC_VALUE     GF7
+   106f4:      00 00 00 00     add\.p gr0,gr0,gr0
+   106f8:      00 00 05 cc     subxcc\.p gr0,gr12,gr0,icc1
+                       106f8: R_FRV_FUNCDESC_VALUE     GF0
+   106fc:      00 00 00 00     add\.p gr0,gr0,gr0
+
+00010700 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+                       1070c: R_FRV_FUNCDESC   GF4
+                       10710: R_FRV_32 GF1
+                       10714: R_FRV_FUNCDESC   GF6
+                       10718: R_FRV_FUNCDESC   GF5
+                       1071c: R_FRV_32 GD4
+                       10720: R_FRV_32 GF3
+                       10724: R_FRV_32 GF2
diff --git a/ld/testsuite/ld-frv/fdpic-shared-3.d b/ld/testsuite/ld-frv/fdpic-shared-3.d
new file mode 100644 (file)
index 0000000..625975b
--- /dev/null
@@ -0,0 +1,84 @@
+#name: FRV uClinux PIC relocs to hidden symbols, shared linking
+#source: fdpic3.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+0000042c <F3>:
+ 42c:  80 3c 00 01     call 430 <HF0>
+
+00000430 <HF0>:
+ 430:  80 40 f0 0c     addi gr15,12,gr0
+ 434:  80 fc 00 18     setlos 0x18,gr0
+ 438:  80 f4 00 1c     setlo 0x1c,gr0
+ 43c:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 440:  80 40 f0 10     addi gr15,16,gr0
+ 444:  80 fc 00 20     setlos 0x20,gr0
+ 448:  80 f4 00 14     setlo 0x14,gr0
+ 44c:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 450:  80 40 ff f8     addi gr15,-8,gr0
+ 454:  80 fc ff e8     setlos 0xffffffe8,gr0
+ 458:  80 f4 ff d8     setlo 0xffd8,gr0
+ 45c:  80 f8 ff ff     sethi 0xffff,gr0
+ 460:  80 40 ff 48     addi gr15,-184,gr0
+ 464:  80 fc ff 48     setlos 0xffffff48,gr0
+ 468:  80 f4 ff 48     setlo 0xff48,gr0
+ 46c:  80 f8 ff ff     sethi 0xffff,gr0
+ 470:  80 f4 00 24     setlo 0x24,gr0
+ 474:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+0001047c <D3>:
+   1047c:      00 00 00 04     add\.p gr0,gr4,gr0
+                       1047c: R_FRV_32 \.data
+
+00010480 <HD0>:
+   10480:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10480: R_FRV_32 \.got
+   10484:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10484: R_FRV_32 \.text
+Disassembly of section \.got:
+
+00010500 <_GLOBAL_OFFSET_TABLE_-0x38>:
+   10500:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10500: R_FRV_FUNCDESC_VALUE     \.text
+   10504:      00 00 00 00     add\.p gr0,gr0,gr0
+   10508:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10508: R_FRV_FUNCDESC_VALUE     \.text
+   1050c:      00 00 00 00     add\.p gr0,gr0,gr0
+   10510:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10510: R_FRV_FUNCDESC_VALUE     \.text
+   10514:      00 00 00 00     add\.p gr0,gr0,gr0
+   10518:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10518: R_FRV_FUNCDESC_VALUE     \.text
+   1051c:      00 00 00 00     add\.p gr0,gr0,gr0
+   10520:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10520: R_FRV_FUNCDESC_VALUE     \.text
+   10524:      00 00 00 00     add\.p gr0,gr0,gr0
+   10528:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10528: R_FRV_FUNCDESC_VALUE     \.text
+   1052c:      00 00 00 00     add\.p gr0,gr0,gr0
+   10530:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10530: R_FRV_FUNCDESC_VALUE     \.text
+   10534:      00 00 00 00     add\.p gr0,gr0,gr0
+
+00010538 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   10544:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10544: R_FRV_32 \.text
+   10548:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10548: R_FRV_32 \.got
+   1054c:      00 00 00 28     add\.p gr0,gr40,gr0
+                       1054c: R_FRV_32 \.got
+   10550:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10550: R_FRV_32 \.text
+   10554:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10554: R_FRV_32 \.text
+   10558:      00 00 00 18     add\.p gr0,gr24,gr0
+                       10558: R_FRV_32 \.got
+   1055c:      00 00 00 04     add\.p gr0,gr4,gr0
+                       1055c: R_FRV_32 \.data
diff --git a/ld/testsuite/ld-frv/fdpic-shared-4.d b/ld/testsuite/ld-frv/fdpic-shared-4.d
new file mode 100644 (file)
index 0000000..a441832
--- /dev/null
@@ -0,0 +1,71 @@
+#name: FRV uClinux PIC relocs to protected symbols, shared linking
+#source: fdpic4.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+00000604 <F4>:
+ 604:  80 3c 00 01     call 608 <PF0>
+
+00000608 <PF0>:
+ 608:  80 40 f0 10     addi gr15,16,gr0
+ 60c:  80 fc 00 20     setlos 0x20,gr0
+ 610:  80 f4 00 1c     setlo 0x1c,gr0
+ 614:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 618:  80 40 f0 0c     addi gr15,12,gr0
+ 61c:  80 fc 00 24     setlos 0x24,gr0
+ 620:  80 f4 00 18     setlo 0x18,gr0
+ 624:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 628:  80 40 ff f8     addi gr15,-8,gr0
+ 62c:  80 fc ff f0     setlos 0xfffffff0,gr0
+ 630:  80 f4 ff e8     setlo 0xffe8,gr0
+ 634:  80 f8 ff ff     sethi 0xffff,gr0
+ 638:  80 40 ff 68     addi gr15,-152,gr0
+ 63c:  80 fc ff 68     setlos 0xffffff68,gr0
+ 640:  80 f4 ff 68     setlo 0xff68,gr0
+ 644:  80 f8 ff ff     sethi 0xffff,gr0
+ 648:  80 f4 00 14     setlo 0x14,gr0
+ 64c:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+00010654 <D4>:
+   10654:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10654: R_FRV_32 \.data
+
+00010658 <PD0>:
+   10658:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10658: R_FRV_FUNCDESC   PFb
+   1065c:      00 00 00 04     add\.p gr0,gr4,gr0
+                       1065c: R_FRV_32 \.text
+Disassembly of section \.got:
+
+000106d8 <_GLOBAL_OFFSET_TABLE_-0x18>:
+   106d8:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106d8: R_FRV_FUNCDESC_VALUE     \.text
+   106dc:      00 00 00 00     add\.p gr0,gr0,gr0
+   106e0:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106e0: R_FRV_FUNCDESC_VALUE     \.text
+   106e4:      00 00 00 00     add\.p gr0,gr0,gr0
+   106e8:      00 00 00 04     add\.p gr0,gr4,gr0
+                       106e8: R_FRV_FUNCDESC_VALUE     \.text
+   106ec:      00 00 00 00     add\.p gr0,gr0,gr0
+
+000106f0 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+                       106fc: R_FRV_FUNCDESC   PF4
+   10700:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10700: R_FRV_32 \.text
+   10704:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10704: R_FRV_32 \.data
+   10708:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10708: R_FRV_FUNCDESC   PF6
+   1070c:      00 00 00 04     add\.p gr0,gr4,gr0
+                       1070c: R_FRV_32 \.text
+   10710:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10710: R_FRV_32 \.text
+   10714:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10714: R_FRV_FUNCDESC   PF5
diff --git a/ld/testsuite/ld-frv/fdpic-shared-5.d b/ld/testsuite/ld-frv/fdpic-shared-5.d
new file mode 100644 (file)
index 0000000..d0767f6
--- /dev/null
@@ -0,0 +1,83 @@
+#name: FRV uClinux PIC relocs to undefined symbols, shared linking
+#source: fdpic5.s
+#objdump: -DRz -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.plt:
+
+00000598 <\.plt>:
+ 598:  00 00 00 10     add\.p gr0,gr16,gr0
+ 59c:  c0 1a 00 06     bra 5b4 <F5-0x10>
+ 5a0:  00 00 00 08     add\.p gr0,gr8,gr0
+ 5a4:  c0 1a 00 04     bra 5b4 <F5-0x10>
+ 5a8:  00 00 00 00     add\.p gr0,gr0,gr0
+ 5ac:  c0 1a 00 02     bra 5b4 <F5-0x10>
+ 5b0:  00 00 00 18     add\.p gr0,gr24,gr0
+ 5b4:  88 08 f1 40     ldd @\(gr15,gr0\),gr4
+ 5b8:  80 30 40 00     jmpl @\(gr4,gr0\)
+ 5bc:  9c cc ff f0     lddi @\(gr15,-16\),gr14
+ 5c0:  80 30 e0 00     jmpl @\(gr14,gr0\)
+Disassembly of section \.text:
+
+000005c4 <F5>:
+ 5c4:  fe 3f ff fe     call 5bc <F5-0x8>
+ 5c8:  80 40 f0 0c     addi gr15,12,gr0
+ 5cc:  80 fc 00 24     setlos 0x24,gr0
+ 5d0:  80 f4 00 20     setlo 0x20,gr0
+ 5d4:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 5d8:  80 40 f0 10     addi gr15,16,gr0
+ 5dc:  80 fc 00 1c     setlos 0x1c,gr0
+ 5e0:  80 f4 00 18     setlo 0x18,gr0
+ 5e4:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 5e8:  80 40 ff f8     addi gr15,-8,gr0
+ 5ec:  80 fc ff e8     setlos 0xffffffe8,gr0
+ 5f0:  80 f4 ff e0     setlo 0xffe0,gr0
+ 5f4:  80 f8 ff ff     sethi 0xffff,gr0
+ 5f8:  80 f4 00 14     setlo 0x14,gr0
+ 5fc:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+00010604 <D5>:
+   10604:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10604: R_FRV_32 UD0
+   10608:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10608: R_FRV_FUNCDESC   UFb
+   1060c:      00 00 00 00     add\.p gr0,gr0,gr0
+                       1060c: R_FRV_32 UFb
+Disassembly of section \.got:
+
+000106a0 <_GLOBAL_OFFSET_TABLE_-0x20>:
+   106a0:      00 00 05 b4     subx\.p gr0,gr52,gr0,icc1
+                       106a0: R_FRV_FUNCDESC_VALUE     UF9
+   106a4:      00 00 00 00     add\.p gr0,gr0,gr0
+   106a8:      00 00 05 9c     subx\.p gr0,gr28,gr0,icc1
+                       106a8: R_FRV_FUNCDESC_VALUE     UF8
+   106ac:      00 00 00 00     add\.p gr0,gr0,gr0
+   106b0:      00 00 05 ac     subx\.p gr0,gr44,gr0,icc1
+                       106b0: R_FRV_FUNCDESC_VALUE     UF0
+   106b4:      00 00 00 00     add\.p gr0,gr0,gr0
+   106b8:      00 00 05 a4     subx\.p gr0,gr36,gr0,icc1
+                       106b8: R_FRV_FUNCDESC_VALUE     UF7
+   106bc:      00 00 00 00     add\.p gr0,gr0,gr0
+
+000106c0 <_GLOBAL_OFFSET_TABLE_>:
+   106c0:      00 00 00 00     add\.p gr0,gr0,gr0
+   106c4:      00 00 00 00     add\.p gr0,gr0,gr0
+   106c8:      00 00 00 00     add\.p gr0,gr0,gr0
+   106cc:      00 00 00 00     add\.p gr0,gr0,gr0
+                       106cc: R_FRV_32 UF1
+   106d0:      00 00 00 00     add\.p gr0,gr0,gr0
+                       106d0: R_FRV_FUNCDESC   UF4
+   106d4:      00 00 00 00     add\.p gr0,gr0,gr0
+                       106d4: R_FRV_32 UD1
+   106d8:      00 00 00 00     add\.p gr0,gr0,gr0
+                       106d8: R_FRV_FUNCDESC   UF6
+   106dc:      00 00 00 00     add\.p gr0,gr0,gr0
+                       106dc: R_FRV_FUNCDESC   UF5
+   106e0:      00 00 00 00     add\.p gr0,gr0,gr0
+                       106e0: R_FRV_32 UF3
+   106e4:      00 00 00 00     add\.p gr0,gr0,gr0
+                       106e4: R_FRV_32 UF2
diff --git a/ld/testsuite/ld-frv/fdpic-shared-6.d b/ld/testsuite/ld-frv/fdpic-shared-6.d
new file mode 100644 (file)
index 0000000..492fe1c
--- /dev/null
@@ -0,0 +1,6 @@
+#name: FRV uClinux PIC relocs to undefined symbols, shared linking
+#source: fdpic6.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared
+#error: different segments
diff --git a/ld/testsuite/ld-frv/fdpic-shared-7.d b/ld/testsuite/ld-frv/fdpic-shared-7.d
new file mode 100644 (file)
index 0000000..2b95623
--- /dev/null
@@ -0,0 +1,58 @@
+#name: FRV uClinux PIC relocs to local symbols with addends, shared linking
+#source: fdpic7.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+000003dc <F7>:
+ 3dc:  80 3c 00 02     call 3e4 <\.F0\+0x4>
+
+000003e0 <\.F0>:
+ 3e0:  80 40 f0 0c     addi gr15,12,gr0
+ 3e4:  80 fc 00 0c     setlos 0xc,gr0
+ 3e8:  80 f4 00 0c     setlo 0xc,gr0
+ 3ec:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 3f0:  80 40 f0 10     addi gr15,16,gr0
+ 3f4:  80 fc 00 10     setlos 0x10,gr0
+ 3f8:  80 f4 00 10     setlo 0x10,gr0
+ 3fc:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 400:  80 40 ff f8     addi gr15,-8,gr0
+ 404:  80 fc ff f8     setlos 0xfffffff8,gr0
+ 408:  80 f4 ff f8     setlo 0xfff8,gr0
+ 40c:  80 f8 ff ff     sethi 0xffff,gr0
+ 410:  80 40 ff 7c     addi gr15,-132,gr0
+ 414:  80 fc ff 7c     setlos 0xffffff7c,gr0
+ 418:  80 f4 ff 7c     setlo 0xff7c,gr0
+ 41c:  80 f8 ff ff     sethi 0xffff,gr0
+ 420:  80 f4 00 14     setlo 0x14,gr0
+ 424:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+0001042c <D7>:
+   1042c:      00 00 00 08     add\.p gr0,gr8,gr0
+                       1042c: R_FRV_32 \.data
+
+00010430 <\.D0>:
+   10430:      00 00 00 00     add\.p gr0,gr0,gr0
+                       10430: R_FRV_32 \.got
+   10434:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10434: R_FRV_32 \.text
+Disassembly of section \.got:
+
+000104b0 <_GLOBAL_OFFSET_TABLE_-0x8>:
+   104b0:      00 00 00 08     add\.p gr0,gr8,gr0
+                       104b0: R_FRV_FUNCDESC_VALUE     \.text
+   104b4:      00 00 00 00     add\.p gr0,gr0,gr0
+
+000104b8 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   104c4:      00 00 00 08     add\.p gr0,gr8,gr0
+                       104c4: R_FRV_32 \.text
+   104c8:      00 00 00 00     add\.p gr0,gr0,gr0
+                       104c8: R_FRV_32 \.got
+   104cc:      00 00 00 08     add\.p gr0,gr8,gr0
+                       104cc: R_FRV_32 \.data
diff --git a/ld/testsuite/ld-frv/fdpic-shared-8-fail.d b/ld/testsuite/ld-frv/fdpic-shared-8-fail.d
new file mode 100644 (file)
index 0000000..7f16a42
--- /dev/null
@@ -0,0 +1,6 @@
+#name: FRV uClinux PIC relocs to (mostly) global symbols with addends, failing shared linking
+#source: fdpic8.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared
+#error: nonzero addend
diff --git a/ld/testsuite/ld-frv/fdpic-shared-8.d b/ld/testsuite/ld-frv/fdpic-shared-8.d
new file mode 100644 (file)
index 0000000..fdeea73
--- /dev/null
@@ -0,0 +1,84 @@
+#name: FRV uClinux PIC relocs to (mostly) global symbols with addends, shared linking
+#source: fdpic8.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared --version-script fdpic8min.ldv
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+000004d4 <F8>:
+ 4d4:  80 3c 00 02     call 4dc <GF1\+0x4>
+
+000004d8 <GF1>:
+ 4d8:  80 40 f0 10     addi gr15,16,gr0
+ 4dc:  80 fc 00 14     setlos 0x14,gr0
+ 4e0:  80 f4 00 24     setlo 0x24,gr0
+ 4e4:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 4e8:  80 40 f0 0c     addi gr15,12,gr0
+ 4ec:  80 fc 00 1c     setlos 0x1c,gr0
+ 4f0:  80 f4 00 18     setlo 0x18,gr0
+ 4f4:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 4f8:  80 40 ff f8     addi gr15,-8,gr0
+ 4fc:  80 fc ff f0     setlos 0xfffffff0,gr0
+ 500:  80 f4 ff c8     setlo 0xffc8,gr0
+ 504:  80 f8 ff ff     sethi 0xffff,gr0
+ 508:  80 40 ff 4c     addi gr15,-180,gr0
+ 50c:  80 fc ff 4c     setlos 0xffffff4c,gr0
+ 510:  80 f4 ff 4c     setlo 0xff4c,gr0
+ 514:  80 f8 ff ff     sethi 0xffff,gr0
+ 518:  80 f4 00 20     setlo 0x20,gr0
+ 51c:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+00010524 <D8>:
+   10524:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10524: R_FRV_32 GD0
+
+00010528 <GD0>:
+   10528:      00 00 00 10     add\.p gr0,gr16,gr0
+                       10528: R_FRV_32 \.got
+   1052c:      00 00 00 08     add\.p gr0,gr8,gr0
+                       1052c: R_FRV_32 \.text
+Disassembly of section \.got:
+
+000105a8 <_GLOBAL_OFFSET_TABLE_-0x38>:
+   105a8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105a8: R_FRV_FUNCDESC_VALUE     \.text
+   105ac:      00 00 00 00     add\.p gr0,gr0,gr0
+   105b0:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105b0: R_FRV_FUNCDESC_VALUE     \.text
+   105b4:      00 00 00 00     add\.p gr0,gr0,gr0
+   105b8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105b8: R_FRV_FUNCDESC_VALUE     \.text
+   105bc:      00 00 00 00     add\.p gr0,gr0,gr0
+   105c0:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105c0: R_FRV_FUNCDESC_VALUE     \.text
+   105c4:      00 00 00 00     add\.p gr0,gr0,gr0
+   105c8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105c8: R_FRV_FUNCDESC_VALUE     \.text
+   105cc:      00 00 00 00     add\.p gr0,gr0,gr0
+   105d0:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105d0: R_FRV_FUNCDESC_VALUE     \.text
+   105d4:      00 00 00 00     add\.p gr0,gr0,gr0
+   105d8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105d8: R_FRV_FUNCDESC_VALUE     \.text
+   105dc:      00 00 00 00     add\.p gr0,gr0,gr0
+
+000105e0 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   105ec:      00 00 00 08     add\.p gr0,gr8,gr0
+                       105ec: R_FRV_32 \.got
+   105f0:      00 00 00 04     add\.p gr0,gr4,gr0
+                       105f0: R_FRV_32 GF1
+   105f4:      00 00 00 04     add\.p gr0,gr4,gr0
+                       105f4: R_FRV_32 GF2
+   105f8:      00 00 00 20     add\.p gr0,gr32,gr0
+                       105f8: R_FRV_32 \.got
+   105fc:      00 00 00 18     add\.p gr0,gr24,gr0
+                       105fc: R_FRV_32 \.got
+   10600:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10600: R_FRV_32 GD4
+   10604:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10604: R_FRV_32 GF3
diff --git a/ld/testsuite/ld-frv/fdpic-shared-local-2.d b/ld/testsuite/ld-frv/fdpic-shared-local-2.d
new file mode 100644 (file)
index 0000000..6f7b205
--- /dev/null
@@ -0,0 +1,84 @@
+#name: FRV uClinux PIC relocs to forced-local symbols, shared linking
+#source: fdpic2.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared --version-script fdpic2.ldv
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+00000300 <F2>:
+ 300:  80 3c 00 01     call 304 <GF0>
+
+00000304 <GF0>:
+ 304:  80 40 f0 10     addi gr15,16,gr0
+ 308:  80 fc 00 24     setlos 0x24,gr0
+ 30c:  80 f4 00 20     setlo 0x20,gr0
+ 310:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 314:  80 40 f0 0c     addi gr15,12,gr0
+ 318:  80 fc 00 18     setlos 0x18,gr0
+ 31c:  80 f4 00 14     setlo 0x14,gr0
+ 320:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 324:  80 40 ff f8     addi gr15,-8,gr0
+ 328:  80 fc ff d0     setlos 0xffffffd0,gr0
+ 32c:  80 f4 ff c8     setlo 0xffc8,gr0
+ 330:  80 f8 ff ff     sethi 0xffff,gr0
+ 334:  80 40 ff 44     addi gr15,-188,gr0
+ 338:  80 fc ff 44     setlos 0xffffff44,gr0
+ 33c:  80 f4 ff 44     setlo 0xff44,gr0
+ 340:  80 f8 ff ff     sethi 0xffff,gr0
+ 344:  80 f4 00 1c     setlo 0x1c,gr0
+ 348:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+00010350 <D2>:
+   10350:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10350: R_FRV_32 \.data
+
+00010354 <GD0>:
+   10354:      00 00 00 18     add\.p gr0,gr24,gr0
+                       10354: R_FRV_32 \.got
+   10358:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10358: R_FRV_32 \.text
+Disassembly of section \.got:
+
+000103d8 <_GLOBAL_OFFSET_TABLE_-0x38>:
+   103d8:      00 00 00 04     add\.p gr0,gr4,gr0
+                       103d8: R_FRV_FUNCDESC_VALUE     \.text
+   103dc:      00 00 00 00     add\.p gr0,gr0,gr0
+   103e0:      00 00 00 04     add\.p gr0,gr4,gr0
+                       103e0: R_FRV_FUNCDESC_VALUE     \.text
+   103e4:      00 00 00 00     add\.p gr0,gr0,gr0
+   103e8:      00 00 00 04     add\.p gr0,gr4,gr0
+                       103e8: R_FRV_FUNCDESC_VALUE     \.text
+   103ec:      00 00 00 00     add\.p gr0,gr0,gr0
+   103f0:      00 00 00 04     add\.p gr0,gr4,gr0
+                       103f0: R_FRV_FUNCDESC_VALUE     \.text
+   103f4:      00 00 00 00     add\.p gr0,gr0,gr0
+   103f8:      00 00 00 04     add\.p gr0,gr4,gr0
+                       103f8: R_FRV_FUNCDESC_VALUE     \.text
+   103fc:      00 00 00 00     add\.p gr0,gr0,gr0
+   10400:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10400: R_FRV_FUNCDESC_VALUE     \.text
+   10404:      00 00 00 00     add\.p gr0,gr0,gr0
+   10408:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10408: R_FRV_FUNCDESC_VALUE     \.text
+   1040c:      00 00 00 00     add\.p gr0,gr0,gr0
+
+00010410 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   1041c:      00 00 00 10     add\.p gr0,gr16,gr0
+                       1041c: R_FRV_32 \.got
+   10420:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10420: R_FRV_32 \.text
+   10424:      00 00 00 28     add\.p gr0,gr40,gr0
+                       10424: R_FRV_32 \.got
+   10428:      00 00 00 20     add\.p gr0,gr32,gr0
+                       10428: R_FRV_32 \.got
+   1042c:      00 00 00 04     add\.p gr0,gr4,gr0
+                       1042c: R_FRV_32 \.data
+   10430:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10430: R_FRV_32 \.text
+   10434:      00 00 00 04     add\.p gr0,gr4,gr0
+                       10434: R_FRV_32 \.text
diff --git a/ld/testsuite/ld-frv/fdpic-shared-local-8.d b/ld/testsuite/ld-frv/fdpic-shared-local-8.d
new file mode 100644 (file)
index 0000000..7b12051
--- /dev/null
@@ -0,0 +1,84 @@
+#name: FRV uClinux PIC relocs to forced-local symbols with addends, shared linking
+#source: fdpic8.s
+#objdump: -DR -j .text -j .data -j .got -j .plt
+#as: -mfdpic
+#ld: -shared --version-script fdpic8.ldv
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+00000300 <F8>:
+ 300:  80 3c 00 02     call 308 <GF0\+0x4>
+
+00000304 <GF0>:
+ 304:  80 40 f0 10     addi gr15,16,gr0
+ 308:  80 fc 00 14     setlos 0x14,gr0
+ 30c:  80 f4 00 24     setlo 0x24,gr0
+ 310:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 314:  80 40 f0 0c     addi gr15,12,gr0
+ 318:  80 fc 00 1c     setlos 0x1c,gr0
+ 31c:  80 f4 00 18     setlo 0x18,gr0
+ 320:  80 f8 00 00     sethi hi\(0x0\),gr0
+ 324:  80 40 ff f8     addi gr15,-8,gr0
+ 328:  80 fc ff f0     setlos 0xfffffff0,gr0
+ 32c:  80 f4 ff c8     setlo 0xffc8,gr0
+ 330:  80 f8 ff ff     sethi 0xffff,gr0
+ 334:  80 40 ff 48     addi gr15,-184,gr0
+ 338:  80 fc ff 48     setlos 0xffffff48,gr0
+ 33c:  80 f4 ff 48     setlo 0xff48,gr0
+ 340:  80 f8 ff ff     sethi 0xffff,gr0
+ 344:  80 f4 00 20     setlo 0x20,gr0
+ 348:  80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.data:
+
+00010350 <D8>:
+   10350:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10350: R_FRV_32 \.data
+
+00010354 <GD0>:
+   10354:      00 00 00 10     add\.p gr0,gr16,gr0
+                       10354: R_FRV_32 \.got
+   10358:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10358: R_FRV_32 \.text
+Disassembly of section \.got:
+
+000103d8 <_GLOBAL_OFFSET_TABLE_-0x38>:
+   103d8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       103d8: R_FRV_FUNCDESC_VALUE     \.text
+   103dc:      00 00 00 00     add\.p gr0,gr0,gr0
+   103e0:      00 00 00 08     add\.p gr0,gr8,gr0
+                       103e0: R_FRV_FUNCDESC_VALUE     \.text
+   103e4:      00 00 00 00     add\.p gr0,gr0,gr0
+   103e8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       103e8: R_FRV_FUNCDESC_VALUE     \.text
+   103ec:      00 00 00 00     add\.p gr0,gr0,gr0
+   103f0:      00 00 00 08     add\.p gr0,gr8,gr0
+                       103f0: R_FRV_FUNCDESC_VALUE     \.text
+   103f4:      00 00 00 00     add\.p gr0,gr0,gr0
+   103f8:      00 00 00 08     add\.p gr0,gr8,gr0
+                       103f8: R_FRV_FUNCDESC_VALUE     \.text
+   103fc:      00 00 00 00     add\.p gr0,gr0,gr0
+   10400:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10400: R_FRV_FUNCDESC_VALUE     \.text
+   10404:      00 00 00 00     add\.p gr0,gr0,gr0
+   10408:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10408: R_FRV_FUNCDESC_VALUE     \.text
+   1040c:      00 00 00 00     add\.p gr0,gr0,gr0
+
+00010410 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   1041c:      00 00 00 08     add\.p gr0,gr8,gr0
+                       1041c: R_FRV_32 \.got
+   10420:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10420: R_FRV_32 \.text
+   10424:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10424: R_FRV_32 \.text
+   10428:      00 00 00 20     add\.p gr0,gr32,gr0
+                       10428: R_FRV_32 \.got
+   1042c:      00 00 00 18     add\.p gr0,gr24,gr0
+                       1042c: R_FRV_32 \.got
+   10430:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10430: R_FRV_32 \.data
+   10434:      00 00 00 08     add\.p gr0,gr8,gr0
+                       10434: R_FRV_32 \.text
diff --git a/ld/testsuite/ld-frv/fdpic-static-1.d b/ld/testsuite/ld-frv/fdpic-static-1.d
new file mode 100644 (file)
index 0000000..246e24e
--- /dev/null
@@ -0,0 +1,63 @@
+#name: FRV uClinux PIC relocs to local symbols, static linking
+#source: fdpic1.s
+#objdump: -D
+#as: -mfdpic
+#ld: -static
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+00010094 <F1>:
+   10094:      80 3c 00 01     call 10098 <\.F0>
+
+00010098 <\.F0>:
+   10098:      80 40 f0 0c     addi gr15,12,gr0
+   1009c:      80 fc 00 0c     setlos 0xc,gr0
+   100a0:      80 f4 00 0c     setlo 0xc,gr0
+   100a4:      80 f8 00 00     sethi hi\(0x0\),gr0
+   100a8:      80 40 f0 10     addi gr15,16,gr0
+   100ac:      80 fc 00 10     setlos 0x10,gr0
+   100b0:      80 f4 00 10     setlo 0x10,gr0
+   100b4:      80 f8 00 00     sethi hi\(0x0\),gr0
+   100b8:      80 40 ff f8     addi gr15,-8,gr0
+   100bc:      80 fc ff f8     setlos 0xfffffff8,gr0
+   100c0:      80 f4 ff f8     setlo 0xfff8,gr0
+   100c4:      80 f8 ff ff     sethi 0xffff,gr0
+   100c8:      80 40 ff f0     addi gr15,-16,gr0
+   100cc:      80 fc ff f0     setlos 0xfffffff0,gr0
+   100d0:      80 f4 ff f0     setlo 0xfff0,gr0
+   100d4:      80 f8 ff ff     sethi 0xffff,gr0
+   100d8:      80 f4 00 14     setlo 0x14,gr0
+   100dc:      80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.rofixup:
+
+000100e0 <__ROFIXUP_LIST__>:
+   100e0:      00 02 01 24     sub\.p gr32,gr36,gr0
+   100e4:      00 02 01 28     sub\.p gr32,gr40,gr0
+   100e8:      00 02 01 10     sub\.p gr32,gr16,gr0
+   100ec:      00 02 01 14     sub\.p gr32,gr20,gr0
+   100f0:      00 02 01 2c     sub\.p gr32,gr44,gr0
+   100f4:      00 02 01 04     sub\.p gr32,gr4,gr0
+   100f8:      00 02 01 08     sub\.p gr32,gr8,gr0
+   100fc:      00 02 01 0c     sub\.p gr32,gr12,gr0
+   10100:      00 02 01 18     sub\.p gr32,gr24,gr0
+Disassembly of section \.data:
+
+00020104 <D1>:
+   20104:      00 02 01 08     sub\.p gr32,gr8,gr0
+
+00020108 <\.D0>:
+   20108:      00 02 01 10     sub\.p gr32,gr16,gr0
+   2010c:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+Disassembly of section \.got:
+
+00020110 <_GLOBAL_OFFSET_TABLE_-0x8>:
+   20110:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   20114:      00 02 01 18     sub\.p gr32,gr24,gr0
+
+00020118 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   20124:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   20128:      00 02 01 10     sub\.p gr32,gr16,gr0
+   2012c:      00 02 01 08     sub\.p gr32,gr8,gr0
diff --git a/ld/testsuite/ld-frv/fdpic-static-2.d b/ld/testsuite/ld-frv/fdpic-static-2.d
new file mode 100644 (file)
index 0000000..1c6b371
--- /dev/null
@@ -0,0 +1,95 @@
+#name: FRV uClinux PIC relocs to global symbols, static linking
+#source: fdpic2.s
+#objdump: -D
+#as: -mfdpic
+#ld: -static
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+00010094 <F2>:
+   10094:      80 3c 00 01     call 10098 <GF0>
+
+00010098 <GF0>:
+   10098:      80 40 f0 10     addi gr15,16,gr0
+   1009c:      80 fc 00 24     setlos 0x24,gr0
+   100a0:      80 f4 00 20     setlo 0x20,gr0
+   100a4:      80 f8 00 00     sethi hi\(0x0\),gr0
+   100a8:      80 40 f0 0c     addi gr15,12,gr0
+   100ac:      80 fc 00 18     setlos 0x18,gr0
+   100b0:      80 f4 00 14     setlo 0x14,gr0
+   100b4:      80 f8 00 00     sethi hi\(0x0\),gr0
+   100b8:      80 40 ff f8     addi gr15,-8,gr0
+   100bc:      80 fc ff d0     setlos 0xffffffd0,gr0
+   100c0:      80 f4 ff c8     setlo 0xffc8,gr0
+   100c4:      80 f8 ff ff     sethi 0xffff,gr0
+   100c8:      80 40 ff c0     addi gr15,-64,gr0
+   100cc:      80 fc ff c0     setlos 0xffffffc0,gr0
+   100d0:      80 f4 ff c0     setlo 0xffc0,gr0
+   100d4:      80 f8 ff ff     sethi 0xffff,gr0
+   100d8:      80 f4 00 1c     setlo 0x1c,gr0
+   100dc:      80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.rofixup:
+
+000100e0 <__ROFIXUP_LIST__>:
+   100e0:      00 02 01 98     subx\.p gr32,gr24,gr0,icc0
+   100e4:      00 02 01 ac     subx\.p gr32,gr44,gr0,icc0
+   100e8:      00 02 01 a8     subx\.p gr32,gr40,gr0,icc0
+   100ec:      00 02 01 94     subx\.p gr32,gr20,gr0,icc0
+   100f0:      00 02 01 60     subcc\.p gr32,gr32,gr0,icc0
+   100f4:      00 02 01 64     subcc\.p gr32,gr36,gr0,icc0
+   100f8:      00 02 01 a0     subx\.p gr32,gr32,gr0,icc0
+   100fc:      00 02 01 70     subcc\.p gr32,gr48,gr0,icc0
+   10100:      00 02 01 74     subcc\.p gr32,gr52,gr0,icc0
+   10104:      00 02 01 9c     subx\.p gr32,gr28,gr0,icc0
+   10108:      00 02 01 78     subcc\.p gr32,gr56,gr0,icc0
+   1010c:      00 02 01 7c     subcc\.p gr32,gr60,gr0,icc0
+   10110:      00 02 01 80     subx\.p gr32,gr0,gr0,icc0
+   10114:      00 02 01 84     subx\.p gr32,gr4,gr0,icc0
+   10118:      00 02 01 58     subcc\.p gr32,gr24,gr0,icc0
+   1011c:      00 02 01 5c     subcc\.p gr32,gr28,gr0,icc0
+   10120:      00 02 01 50     subcc\.p gr32,gr16,gr0,icc0
+   10124:      00 02 01 54     subcc\.p gr32,gr20,gr0,icc0
+   10128:      00 02 01 a4     subx\.p gr32,gr36,gr0,icc0
+   1012c:      00 02 01 44     subcc\.p gr32,gr4,gr0,icc0
+   10130:      00 02 01 68     subcc\.p gr32,gr40,gr0,icc0
+   10134:      00 02 01 6c     subcc\.p gr32,gr44,gr0,icc0
+   10138:      00 02 01 48     subcc\.p gr32,gr8,gr0,icc0
+   1013c:      00 02 01 4c     subcc\.p gr32,gr12,gr0,icc0
+   10140:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+Disassembly of section \.data:
+
+00020144 <D2>:
+   20144:      00 02 01 48     subcc\.p gr32,gr8,gr0,icc0
+
+00020148 <GD0>:
+   20148:      00 02 01 68     subcc\.p gr32,gr40,gr0,icc0
+   2014c:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+Disassembly of section \.got:
+
+00020150 <_GLOBAL_OFFSET_TABLE_-0x38>:
+   20150:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   20154:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20158:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   2015c:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20160:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   20164:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20168:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   2016c:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20170:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   20174:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20178:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   2017c:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20180:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   20184:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+
+00020188 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   20194:      00 02 01 60     subcc\.p gr32,gr32,gr0,icc0
+   20198:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   2019c:      00 02 01 78     subcc\.p gr32,gr56,gr0,icc0
+   201a0:      00 02 01 70     subcc\.p gr32,gr48,gr0,icc0
+   201a4:      00 02 01 48     subcc\.p gr32,gr8,gr0,icc0
+   201a8:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
+   201ac:      00 01 00 98     addx\.p gr16,gr24,gr0,icc0
diff --git a/ld/testsuite/ld-frv/fdpic-static-5.d b/ld/testsuite/ld-frv/fdpic-static-5.d
new file mode 100644 (file)
index 0000000..a14e19a
--- /dev/null
@@ -0,0 +1,6 @@
+#name: FRV uClinux PIC relocs to undefined symbols, static linking
+#source: fdpic5.s
+#objdump: -D
+#as: -mfdpic
+#ld: -static
+#error: undefined reference
diff --git a/ld/testsuite/ld-frv/fdpic-static-6.d b/ld/testsuite/ld-frv/fdpic-static-6.d
new file mode 100644 (file)
index 0000000..5b59947
--- /dev/null
@@ -0,0 +1,74 @@
+#name: FRV uClinux PIC relocs to undefined symbols, static linking
+#source: fdpic6.s
+#objdump: -D
+#as: -mfdpic
+#ld: -static
+#error: warn.*different segment
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+00010000 <F6>:
+   10000:      fe 3f c0 00     call 0 <F6-0x10000>
+   10004:      80 40 f0 0c     addi gr15,12,gr0
+   10008:      80 fc 00 24     setlos 0x24,gr0
+   1000c:      80 f4 00 20     setlo 0x20,gr0
+   10010:      80 f8 00 00     sethi hi\(0x0\),gr0
+   10014:      80 40 f0 10     addi gr15,16,gr0
+   10018:      80 fc 00 18     setlos 0x18,gr0
+   1001c:      80 f4 00 1c     setlo 0x1c,gr0
+   10020:      80 f8 00 00     sethi hi\(0x0\),gr0
+   10024:      80 40 ff f8     addi gr15,-8,gr0
+   10028:      80 fc ff f0     setlos 0xfffffff0,gr0
+   1002c:      80 f4 ff e8     setlo 0xffe8,gr0
+   10030:      80 f8 ff ff     sethi 0xffff,gr0
+   10034:      80 f4 ff 18     setlo 0xff18,gr0
+   10038:      80 f8 ff fa     sethi 0xfffa,gr0
+   1003c:      80 f4 00 14     setlo 0x14,gr0
+   10040:      80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.rofixup:
+
+00010044 <_gp\+0x800>:
+   10044:      00 05 00 f4     orcc\.p gr16,gr52,gr0,icc0
+   10048:      00 05 01 0c     xor\.p gr16,gr12,gr0
+   1004c:      00 05 01 08     xor\.p gr16,gr8,gr0
+   10050:      00 05 00 f8     orcc\.p gr16,gr56,gr0,icc0
+   10054:      00 05 00 c0     orcc\.p gr16,gr0,gr0,icc0
+   10058:      00 05 00 c4     orcc\.p gr16,gr4,gr0,icc0
+   1005c:      00 05 01 00     xor\.p gr16,gr0,gr0
+   10060:      00 05 00 c8     orcc\.p gr16,gr8,gr0,icc0
+   10064:      00 05 00 cc     orcc\.p gr16,gr12,gr0,icc0
+   10068:      00 05 01 04     xor\.p gr16,gr4,gr0
+   1006c:      00 05 00 b8     or\.p gr16,gr56,gr0
+   10070:      00 05 00 bc     or\.p gr16,gr60,gr0
+   10074:      00 05 00 e0     orcc\.p gr16,gr32,gr0,icc0
+   10078:      00 05 00 e4     orcc\.p gr16,gr36,gr0,icc0
+   1007c:      00 05 00 d8     orcc\.p gr16,gr24,gr0,icc0
+   10080:      00 05 00 dc     orcc\.p gr16,gr28,gr0,icc0
+   10084:      00 05 00 d0     orcc\.p gr16,gr16,gr0,icc0
+   10088:      00 05 00 d4     orcc\.p gr16,gr20,gr0,icc0
+   1008c:      00 05 00 fc     orcc\.p gr16,gr60,gr0,icc0
+   10090:      00 05 00 a4     or\.p gr16,gr36,gr0
+   10094:      00 05 00 b0     or\.p gr16,gr48,gr0
+   10098:      00 05 00 b4     or\.p gr16,gr52,gr0
+   1009c:      00 05 00 a8     or\.p gr16,gr40,gr0
+   100a0:      00 05 00 ac     or\.p gr16,gr44,gr0
+Disassembly of section \.data:
+
+000500a4 <D6>:
+   500a4:      00 00 00 00     add\.p gr0,gr0,gr0
+   500a8:      00 05 00 b0     or\.p gr16,gr48,gr0
+   500ac:      00 00 00 00     add\.p gr0,gr0,gr0
+Disassembly of section \.got:
+
+000500b0 <_GLOBAL_OFFSET_TABLE_-0x38>:
+       \.\.\.
+
+000500e8 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   500f8:      00 05 00 c0     orcc\.p gr16,gr0,gr0,icc0
+   500fc:      00 00 00 00     add\.p gr0,gr0,gr0
+   50100:      00 05 00 c8     orcc\.p gr16,gr8,gr0,icc0
+   50104:      00 05 00 b8     or\.p gr16,gr56,gr0
+       \.\.\.
diff --git a/ld/testsuite/ld-frv/fdpic-static-7.d b/ld/testsuite/ld-frv/fdpic-static-7.d
new file mode 100644 (file)
index 0000000..b8eba61
--- /dev/null
@@ -0,0 +1,63 @@
+#name: FRV uClinux PIC relocs to local symbols with addends, static linking
+#source: fdpic7.s
+#objdump: -D
+#as: -mfdpic
+#ld: -static
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+00010094 <F7>:
+   10094:      80 3c 00 02     call 1009c <\.F0\+0x4>
+
+00010098 <\.F0>:
+   10098:      80 40 f0 0c     addi gr15,12,gr0
+   1009c:      80 fc 00 0c     setlos 0xc,gr0
+   100a0:      80 f4 00 0c     setlo 0xc,gr0
+   100a4:      80 f8 00 00     sethi hi\(0x0\),gr0
+   100a8:      80 40 f0 10     addi gr15,16,gr0
+   100ac:      80 fc 00 10     setlos 0x10,gr0
+   100b0:      80 f4 00 10     setlo 0x10,gr0
+   100b4:      80 f8 00 00     sethi hi\(0x0\),gr0
+   100b8:      80 40 ff f8     addi gr15,-8,gr0
+   100bc:      80 fc ff f8     setlos 0xfffffff8,gr0
+   100c0:      80 f4 ff f8     setlo 0xfff8,gr0
+   100c4:      80 f8 ff ff     sethi 0xffff,gr0
+   100c8:      80 40 ff f4     addi gr15,-12,gr0
+   100cc:      80 fc ff f4     setlos 0xfffffff4,gr0
+   100d0:      80 f4 ff f4     setlo 0xfff4,gr0
+   100d4:      80 f8 ff ff     sethi 0xffff,gr0
+   100d8:      80 f4 00 14     setlo 0x14,gr0
+   100dc:      80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.rofixup:
+
+000100e0 <__ROFIXUP_LIST__>:
+   100e0:      00 02 01 24     sub\.p gr32,gr36,gr0
+   100e4:      00 02 01 28     sub\.p gr32,gr40,gr0
+   100e8:      00 02 01 10     sub\.p gr32,gr16,gr0
+   100ec:      00 02 01 14     sub\.p gr32,gr20,gr0
+   100f0:      00 02 01 2c     sub\.p gr32,gr44,gr0
+   100f4:      00 02 01 04     sub\.p gr32,gr4,gr0
+   100f8:      00 02 01 08     sub\.p gr32,gr8,gr0
+   100fc:      00 02 01 0c     sub\.p gr32,gr12,gr0
+   10100:      00 02 01 18     sub\.p gr32,gr24,gr0
+Disassembly of section \.data:
+
+00020104 <D7>:
+   20104:      00 02 01 0c     sub\.p gr32,gr12,gr0
+
+00020108 <\.D0>:
+   20108:      00 02 01 10     sub\.p gr32,gr16,gr0
+   2010c:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+Disassembly of section \.got:
+
+00020110 <_GLOBAL_OFFSET_TABLE_-0x8>:
+   20110:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   20114:      00 02 01 18     sub\.p gr32,gr24,gr0
+
+00020118 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   20124:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   20128:      00 02 01 10     sub\.p gr32,gr16,gr0
+   2012c:      00 02 01 0c     sub\.p gr32,gr12,gr0
diff --git a/ld/testsuite/ld-frv/fdpic-static-8.d b/ld/testsuite/ld-frv/fdpic-static-8.d
new file mode 100644 (file)
index 0000000..cbebb17
--- /dev/null
@@ -0,0 +1,95 @@
+#name: FRV uClinux PIC relocs to global symbols with addends, static linking
+#source: fdpic8.s
+#objdump: -D
+#as: -mfdpic
+#ld: -static
+
+.*:     file format elf.*frv.*
+
+Disassembly of section \.text:
+
+00010094 <F8>:
+   10094:      80 3c 00 02     call 1009c <GF0\+0x4>
+
+00010098 <GF0>:
+   10098:      80 40 f0 10     addi gr15,16,gr0
+   1009c:      80 fc 00 14     setlos 0x14,gr0
+   100a0:      80 f4 00 24     setlo 0x24,gr0
+   100a4:      80 f8 00 00     sethi hi\(0x0\),gr0
+   100a8:      80 40 f0 0c     addi gr15,12,gr0
+   100ac:      80 fc 00 1c     setlos 0x1c,gr0
+   100b0:      80 f4 00 18     setlo 0x18,gr0
+   100b4:      80 f8 00 00     sethi hi\(0x0\),gr0
+   100b8:      80 40 ff f8     addi gr15,-8,gr0
+   100bc:      80 fc ff f0     setlos 0xfffffff0,gr0
+   100c0:      80 f4 ff c8     setlo 0xffc8,gr0
+   100c4:      80 f8 ff ff     sethi 0xffff,gr0
+   100c8:      80 40 ff c4     addi gr15,-60,gr0
+   100cc:      80 fc ff c4     setlos 0xffffffc4,gr0
+   100d0:      80 f4 ff c4     setlo 0xffc4,gr0
+   100d4:      80 f8 ff ff     sethi 0xffff,gr0
+   100d8:      80 f4 00 20     setlo 0x20,gr0
+   100dc:      80 f8 00 00     sethi hi\(0x0\),gr0
+Disassembly of section \.rofixup:
+
+000100e0 <__ROFIXUP_LIST__>:
+   100e0:      00 02 01 98     subx\.p gr32,gr24,gr0,icc0
+   100e4:      00 02 01 9c     subx\.p gr32,gr28,gr0,icc0
+   100e8:      00 02 01 ac     subx\.p gr32,gr44,gr0,icc0
+   100ec:      00 02 01 94     subx\.p gr32,gr20,gr0,icc0
+   100f0:      00 02 01 58     subcc\.p gr32,gr24,gr0,icc0
+   100f4:      00 02 01 5c     subcc\.p gr32,gr28,gr0,icc0
+   100f8:      00 02 01 a4     subx\.p gr32,gr36,gr0,icc0
+   100fc:      00 02 01 68     subcc\.p gr32,gr40,gr0,icc0
+   10100:      00 02 01 6c     subcc\.p gr32,gr44,gr0,icc0
+   10104:      00 02 01 a0     subx\.p gr32,gr32,gr0,icc0
+   10108:      00 02 01 70     subcc\.p gr32,gr48,gr0,icc0
+   1010c:      00 02 01 74     subcc\.p gr32,gr52,gr0,icc0
+   10110:      00 02 01 80     subx\.p gr32,gr0,gr0,icc0
+   10114:      00 02 01 84     subx\.p gr32,gr4,gr0,icc0
+   10118:      00 02 01 78     subcc\.p gr32,gr56,gr0,icc0
+   1011c:      00 02 01 7c     subcc\.p gr32,gr60,gr0,icc0
+   10120:      00 02 01 50     subcc\.p gr32,gr16,gr0,icc0
+   10124:      00 02 01 54     subcc\.p gr32,gr20,gr0,icc0
+   10128:      00 02 01 a8     subx\.p gr32,gr40,gr0,icc0
+   1012c:      00 02 01 44     subcc\.p gr32,gr4,gr0,icc0
+   10130:      00 02 01 60     subcc\.p gr32,gr32,gr0,icc0
+   10134:      00 02 01 64     subcc\.p gr32,gr36,gr0,icc0
+   10138:      00 02 01 48     subcc\.p gr32,gr8,gr0,icc0
+   1013c:      00 02 01 4c     subcc\.p gr32,gr12,gr0,icc0
+   10140:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+Disassembly of section \.data:
+
+00020144 <D8>:
+   20144:      00 02 01 4c     subcc\.p gr32,gr12,gr0,icc0
+
+00020148 <GD0>:
+   20148:      00 02 01 60     subcc\.p gr32,gr32,gr0,icc0
+   2014c:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+Disassembly of section \.got:
+
+00020150 <_GLOBAL_OFFSET_TABLE_-0x38>:
+   20150:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   20154:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20158:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   2015c:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20160:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   20164:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20168:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   2016c:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20170:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   20174:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20178:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   2017c:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+   20180:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   20184:      00 02 01 88     subx\.p gr32,gr8,gr0,icc0
+
+00020188 <_GLOBAL_OFFSET_TABLE_>:
+       \.\.\.
+   20194:      00 02 01 58     subcc\.p gr32,gr24,gr0,icc0
+   20198:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   2019c:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
+   201a0:      00 02 01 70     subcc\.p gr32,gr48,gr0,icc0
+   201a4:      00 02 01 68     subcc\.p gr32,gr40,gr0,icc0
+   201a8:      00 02 01 4c     subcc\.p gr32,gr12,gr0,icc0
+   201ac:      00 01 00 9c     addx\.p gr16,gr28,gr0,icc0
diff --git a/ld/testsuite/ld-frv/fdpic.exp b/ld/testsuite/ld-frv/fdpic.exp
new file mode 100644 (file)
index 0000000..dc06d4e
--- /dev/null
@@ -0,0 +1,57 @@
+# Expect script for FRV FDPIC linker tests
+#   Copyright 2003 Free Software Foundation, Inc.
+#
+# This file 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+if {![istarget frv*-*-*] || ![is_elf_format]} {
+    return
+}
+
+global LDFLAGS
+set LDFLAGS "$LDFLAGS -melf32frvfd"
+
+run_dump_test "fdpic-static-1"
+run_dump_test "fdpic-pie-1"
+run_dump_test "fdpic-shared-1"
+
+run_dump_test "fdpic-static-2"
+run_dump_test "fdpic-pie-2"
+run_dump_test "fdpic-shared-2-fail"
+run_dump_test "fdpic-shared-2"
+run_dump_test "fdpic-shared-local-2"
+
+run_dump_test "fdpic-shared-3"
+
+run_dump_test "fdpic-shared-4"
+
+run_dump_test "fdpic-static-5"
+run_dump_test "fdpic-pie-5"
+run_dump_test "fdpic-shared-5"
+
+run_dump_test "fdpic-static-6"
+run_dump_test "fdpic-pie-6"
+run_dump_test "fdpic-shared-6"
+
+run_dump_test "fdpic-static-7"
+run_dump_test "fdpic-pie-7"
+run_dump_test "fdpic-shared-7"
+
+run_dump_test "fdpic-static-8"
+run_dump_test "fdpic-pie-8-fail"
+run_dump_test "fdpic-pie-8"
+run_dump_test "fdpic-shared-8-fail"
+run_dump_test "fdpic-shared-8"
+run_dump_test "fdpic-shared-local-8"
diff --git a/ld/testsuite/ld-frv/fdpic1.s b/ld/testsuite/ld-frv/fdpic1.s
new file mode 100644 (file)
index 0000000..29f7fff
--- /dev/null
@@ -0,0 +1,64 @@
+       .text
+       .weak _start
+_start:
+       .global F1
+       .type F1,@function
+F1:
+       call    .F0
+
+.F0:
+.F1:
+.F2:
+.F3:
+.F4:
+.F5:
+.F6:
+.F7:
+.F8:
+.F9:
+.Fa:
+.Fb:
+.Fc:
+       addi    gr15, #got12(.F1), gr0
+       
+       setlos  #gotlo(.F2), gr0
+       
+       setlo   #gotlo(.F3), gr0
+       sethi   #gothi(.F3), gr0
+
+       addi    gr15, #gotfuncdesc12(.F4), gr0
+
+       setlos  #gotfuncdesclo(.F5), gr0
+
+       setlo   #gotfuncdesclo(.F6), gr0
+       sethi   #gotfuncdeschi(.F6), gr0
+
+       addi    gr15, #gotofffuncdesc12(.F7), gr0
+
+       setlos  #gotofffuncdesclo(.F8), gr0
+
+       setlo   #gotofffuncdesclo(.F9), gr0
+       sethi   #gotofffuncdeschi(.F9), gr0
+
+       addi    gr15, #gotoff12(.D1), gr0
+       
+       setlos  #gotofflo(.D2), gr0
+
+       setlo   #gotofflo(.D3), gr0
+       sethi   #gotoffhi(.D3), gr0
+
+       setlo   #gotlo(.D4), gr0
+       sethi   #gothi(.D4), gr0
+
+       .data
+       .global D1
+D1:
+       .word   .D0
+       .section .data.rel.local
+.D0:
+.D1:
+.D2:
+.D3:
+.D4:
+       .picptr funcdesc(.Fb)
+       .word   .Fb
diff --git a/ld/testsuite/ld-frv/fdpic2.ldv b/ld/testsuite/ld-frv/fdpic2.ldv
new file mode 100644 (file)
index 0000000..b5aad4f
--- /dev/null
@@ -0,0 +1 @@
+{ global: _start; F2; D2; local: *; };
diff --git a/ld/testsuite/ld-frv/fdpic2.s b/ld/testsuite/ld-frv/fdpic2.s
new file mode 100644 (file)
index 0000000..2987643
--- /dev/null
@@ -0,0 +1,81 @@
+       .text
+       .weak _start
+_start:
+       .global F2
+       .type F2,@function
+F2:
+       call    GF0
+       .global GF0
+       .global GF1
+       .global GF2
+       .global GF3
+       .global GF4
+       .global GF5
+       .global GF6
+       .global GF7
+       .global GF8
+       .global GF9
+       .global GFa
+       .global GFb
+       .global GFc
+GF0:
+GF1:
+GF2:
+GF3:
+GF4:
+GF5:
+GF6:
+GF7:
+GF8:
+GF9:
+GFa:
+GFb:
+GFc:
+       addi    gr15, #got12(GF1), gr0
+       
+       setlos  #gotlo(GF2), gr0
+       
+       setlo   #gotlo(GF3), gr0
+       sethi   #gothi(GF3), gr0
+
+       addi    gr15, #gotfuncdesc12(GF4), gr0
+
+       setlos  #gotfuncdesclo(GF5), gr0
+
+       setlo   #gotfuncdesclo(GF6), gr0
+       sethi   #gotfuncdeschi(GF6), gr0
+
+       addi    gr15, #gotofffuncdesc12(GF7), gr0
+
+       setlos  #gotofffuncdesclo(GF8), gr0
+
+       setlo   #gotofffuncdesclo(GF9), gr0
+       sethi   #gotofffuncdeschi(GF9), gr0
+
+       addi    gr15, #gotoff12(GD1), gr0
+       
+       setlos  #gotofflo(GD2), gr0
+
+       setlo   #gotofflo(GD3), gr0
+       sethi   #gotoffhi(GD3), gr0
+
+       setlo   #gotlo(GD4), gr0
+       sethi   #gothi(GD4), gr0
+
+       .data
+       .global D2
+D2:
+       .word   GD0
+       
+       .global GD0
+       .global GD1
+       .global GD2
+       .global GD3
+       .global GD4
+GD0:
+GD1:
+GD2:
+GD3:
+GD4:
+       .picptr funcdesc(GFb)
+       .word   GFb
diff --git a/ld/testsuite/ld-frv/fdpic2min.ldv b/ld/testsuite/ld-frv/fdpic2min.ldv
new file mode 100644 (file)
index 0000000..2804526
--- /dev/null
@@ -0,0 +1 @@
+{ global: _start; F*; GF*; D2; GD0; GD4; local: GD1; GD2; GD3; };
diff --git a/ld/testsuite/ld-frv/fdpic3.s b/ld/testsuite/ld-frv/fdpic3.s
new file mode 100644 (file)
index 0000000..f867b93
--- /dev/null
@@ -0,0 +1,99 @@
+       .text
+       .weak _start
+_start:
+       .global F3
+       .type F3,@function
+F3:
+       call    HF0
+       .global HF0
+       .hidden HF0
+       .global HF1
+       .hidden HF1
+       .global HF2
+       .hidden HF2
+       .global HF3
+       .hidden HF3
+       .global HF4
+       .hidden HF4
+       .global HF5
+       .hidden HF5
+       .global HF6
+       .hidden HF6
+       .global HF7
+       .hidden HF7
+       .global HF8
+       .hidden HF8
+       .global HF9
+       .hidden HF9
+       .global HFa
+       .hidden HFa
+       .global HFb
+       .hidden HFb
+       .global HFc
+       .hidden HFc
+HF0:
+HF1:
+HF2:
+HF3:
+HF4:
+HF5:
+HF6:
+HF7:
+HF8:
+HF9:
+HFa:
+HFb:
+HFc:
+       addi    gr15, #got12(HF1), gr0
+       
+       setlos  #gotlo(HF2), gr0
+       
+       setlo   #gotlo(HF3), gr0
+       sethi   #gothi(HF3), gr0
+
+       addi    gr15, #gotfuncdesc12(HF4), gr0
+
+       setlos  #gotfuncdesclo(HF5), gr0
+
+       setlo   #gotfuncdesclo(HF6), gr0
+       sethi   #gotfuncdeschi(HF6), gr0
+
+       addi    gr15, #gotofffuncdesc12(HF7), gr0
+
+       setlos  #gotofffuncdesclo(HF8), gr0
+
+       setlo   #gotofffuncdesclo(HF9), gr0
+       sethi   #gotofffuncdeschi(HF9), gr0
+
+       addi    gr15, #gotoff12(HD1), gr0
+       
+       setlos  #gotofflo(HD2), gr0
+
+       setlo   #gotofflo(HD3), gr0
+       sethi   #gotoffhi(HD3), gr0
+
+       setlo   #gotlo(HD4), gr0
+       sethi   #gothi(HD4), gr0
+
+       .data
+       .global D3
+D3:
+       .word   HD0
+       
+       .global HD0
+       .hidden HD0
+       .global HD1
+       .hidden HD1
+       .global HD2
+       .hidden HD2
+       .global HD3
+       .hidden HD3
+       .global HD4
+       .hidden HD4
+HD0:
+HD1:
+HD2:
+HD3:
+HD4:
+       .picptr funcdesc(HFb)
+       .word   HFb
diff --git a/ld/testsuite/ld-frv/fdpic4.s b/ld/testsuite/ld-frv/fdpic4.s
new file mode 100644 (file)
index 0000000..795ae45
--- /dev/null
@@ -0,0 +1,99 @@
+       .text
+       .weak _start
+_start:
+       .global F4
+       .type F4,@function
+F4:
+       call    PF0
+       .global PF0
+       .protected PF0
+       .global PF1
+       .protected PF1
+       .global PF2
+       .protected PF2
+       .global PF3
+       .protected PF3
+       .global PF4
+       .protected PF4
+       .global PF5
+       .protected PF5
+       .global PF6
+       .protected PF6
+       .global PF7
+       .protected PF7
+       .global PF8
+       .protected PF8
+       .global PF9
+       .protected PF9
+       .global PFa
+       .protected PFa
+       .global PFb
+       .protected PFb
+       .global PFc
+       .protected PFc
+PF0:
+PF1:
+PF2:
+PF3:
+PF4:
+PF5:
+PF6:
+PF7:
+PF8:
+PF9:
+PFa:
+PFb:
+PFc:
+       addi    gr15, #got12(PF1), gr0
+       
+       setlos  #gotlo(PF2), gr0
+       
+       setlo   #gotlo(PF3), gr0
+       sethi   #gothi(PF3), gr0
+
+       addi    gr15, #gotfuncdesc12(PF4), gr0
+
+       setlos  #gotfuncdesclo(PF5), gr0
+
+       setlo   #gotfuncdesclo(PF6), gr0
+       sethi   #gotfuncdeschi(PF6), gr0
+
+       addi    gr15, #gotofffuncdesc12(PF7), gr0
+
+       setlos  #gotofffuncdesclo(PF8), gr0
+
+       setlo   #gotofffuncdesclo(PF9), gr0
+       sethi   #gotofffuncdeschi(PF9), gr0
+
+       addi    gr15, #gotoff12(PD1), gr0
+       
+       setlos  #gotofflo(PD2), gr0
+
+       setlo   #gotofflo(PD3), gr0
+       sethi   #gotoffhi(PD3), gr0
+
+       setlo   #gotlo(PD4), gr0
+       sethi   #gothi(PD4), gr0
+
+       .data
+       .global D4
+D4:
+       .word   PD0
+       
+       .global PD0
+       .protected PD0
+       .global PD1
+       .protected PD1
+       .global PD2
+       .protected PD2
+       .global PD3
+       .protected PD3
+       .global PD4
+       .protected PD4
+PD0:
+PD1:
+PD2:
+PD3:
+PD4:
+       .picptr funcdesc(PFb)
+       .word   PFb
diff --git a/ld/testsuite/ld-frv/fdpic5.s b/ld/testsuite/ld-frv/fdpic5.s
new file mode 100644 (file)
index 0000000..f4d466a
--- /dev/null
@@ -0,0 +1,38 @@
+       .text
+       .weak _start
+_start:
+       .global F5
+       .type F5,@function
+F5:
+       call    UF0
+       addi    gr15, #got12(UF1), gr0
+       
+       setlos  #gotlo(UF2), gr0
+       
+       setlo   #gotlo(UF3), gr0
+       sethi   #gothi(UF3), gr0
+
+       addi    gr15, #gotfuncdesc12(UF4), gr0
+
+       setlos  #gotfuncdesclo(UF5), gr0
+
+       setlo   #gotfuncdesclo(UF6), gr0
+       sethi   #gotfuncdeschi(UF6), gr0
+
+       addi    gr15, #gotofffuncdesc12(UF7), gr0
+
+       setlos  #gotofffuncdesclo(UF8), gr0
+
+       setlo   #gotofffuncdesclo(UF9), gr0
+       sethi   #gotofffuncdeschi(UF9), gr0
+
+       setlo   #gotlo(UD1), gr0
+       sethi   #gothi(UD1), gr0
+
+       .data
+       .global D5
+D5:
+       .word   UD0
+       
+       .picptr funcdesc(UFb)
+       .word   UFb
diff --git a/ld/testsuite/ld-frv/fdpic6.s b/ld/testsuite/ld-frv/fdpic6.s
new file mode 100644 (file)
index 0000000..cd8e1d0
--- /dev/null
@@ -0,0 +1,55 @@
+       .text
+       .weak _start
+_start:
+       .weak WF0
+       .weak WF1
+       .weak WF2
+       .weak WF3
+       .weak WF4
+       .weak WF5
+       .weak WF6
+       .weak WF7
+       .weak WF8
+       .weak WF9
+       .weak WFb
+       .weak WD0
+       .weak WD1
+       .weak WD2
+       .global F6
+       .type F6,@function
+F6:
+       call    WF0
+       addi    gr15, #got12(WF1), gr0
+       
+       setlos  #gotlo(WF2), gr0
+       
+       setlo   #gotlo(WF3), gr0
+       sethi   #gothi(WF3), gr0
+
+       addi    gr15, #gotfuncdesc12(WF4), gr0
+
+       setlos  #gotfuncdesclo(WF5), gr0
+
+       setlo   #gotfuncdesclo(WF6), gr0
+       sethi   #gotfuncdeschi(WF6), gr0
+
+       addi    gr15, #gotofffuncdesc12(WF7), gr0
+
+       setlos  #gotofffuncdesclo(WF8), gr0
+
+       setlo   #gotofffuncdesclo(WF9), gr0
+       sethi   #gotofffuncdeschi(WF9), gr0
+
+       setlo   #gotofflo(WD1), gr0
+       sethi   #gotoffhi(WD1), gr0
+
+       setlo   #gotlo(WD2), gr0
+       sethi   #gothi(WD2), gr0
+
+       .data
+       .global D6
+D6:
+       .word   WD0
+       
+       .picptr funcdesc(WFb)
+       .word   WFb
diff --git a/ld/testsuite/ld-frv/fdpic7.s b/ld/testsuite/ld-frv/fdpic7.s
new file mode 100644 (file)
index 0000000..ceac5fc
--- /dev/null
@@ -0,0 +1,63 @@
+       .text
+       .weak _start
+_start:
+       .global F7
+       .type F7,@function
+F7:
+       call    .F0+4
+
+.F0:
+.F1:
+.F2:
+.F3:
+.F4:
+.F5:
+.F6:
+.F7:
+.F8:
+.F9:
+.Fa:
+.Fb:
+.Fc:
+       addi    gr15, #got12(.F1+4), gr0
+       
+       setlos  #gotlo(.F2+4), gr0
+       
+       setlo   #gotlo(.F3+4), gr0
+       sethi   #gothi(.F3+4), gr0
+
+       addi    gr15, #gotfuncdesc12(.F4+4), gr0
+
+       setlos  #gotfuncdesclo(.F5+4), gr0
+
+       setlo   #gotfuncdesclo(.F6+4), gr0
+       sethi   #gotfuncdeschi(.F6+4), gr0
+
+       addi    gr15, #gotofffuncdesc12(.F7+4), gr0
+
+       setlos  #gotofffuncdesclo(.F8+4), gr0
+
+       setlo   #gotofffuncdesclo(.F9+4), gr0
+       sethi   #gotofffuncdeschi(.F9+4), gr0
+
+       addi    gr15, #gotoff12(.D1+4), gr0
+       
+       setlos  #gotofflo(.D2+4), gr0
+
+       setlo   #gotofflo(.D3+4), gr0
+       sethi   #gotoffhi(.D3+4), gr0
+
+       setlo   #gotlo(.D4+4), gr0
+       sethi   #gothi(.D4+4), gr0
+
+       .data
+       .global D7
+D7:
+       .word   .D0+4
+.D0:
+.D1:
+.D2:
+.D3:
+.D4:
+       .picptr funcdesc(.Fb+4)
+       .word   .Fb+4
diff --git a/ld/testsuite/ld-frv/fdpic8.ldv b/ld/testsuite/ld-frv/fdpic8.ldv
new file mode 100644 (file)
index 0000000..d258f96
--- /dev/null
@@ -0,0 +1 @@
+{ global: _start; F8; D8; local: *; };
diff --git a/ld/testsuite/ld-frv/fdpic8.s b/ld/testsuite/ld-frv/fdpic8.s
new file mode 100644 (file)
index 0000000..037250f
--- /dev/null
@@ -0,0 +1,81 @@
+       .text
+       .weak _start
+_start:
+       .global F8
+       .type F8,@function
+F8:
+       call    GF0+4
+       .global GF0
+       .global GF1
+       .global GF2
+       .global GF3
+       .global GF4
+       .global GF5
+       .global GF6
+       .global GF7
+       .global GF8
+       .global GF9
+       .global GFa
+       .global GFb
+       .global GFc
+GF0:
+GF1:
+GF2:
+GF3:
+GF4:
+GF5:
+GF6:
+GF7:
+GF8:
+GF9:
+GFa:
+GFb:
+GFc:
+       addi    gr15, #got12(GF1+4), gr0
+       
+       setlos  #gotlo(GF2+4), gr0
+       
+       setlo   #gotlo(GF3+4), gr0
+       sethi   #gothi(GF3+4), gr0
+
+       addi    gr15, #gotfuncdesc12(GF4+4), gr0
+
+       setlos  #gotfuncdesclo(GF5+4), gr0
+
+       setlo   #gotfuncdesclo(GF6+4), gr0
+       sethi   #gotfuncdeschi(GF6+4), gr0
+
+       addi    gr15, #gotofffuncdesc12(GF7+4), gr0
+
+       setlos  #gotofffuncdesclo(GF8+4), gr0
+
+       setlo   #gotofffuncdesclo(GF9+4), gr0
+       sethi   #gotofffuncdeschi(GF9+4), gr0
+
+       addi    gr15, #gotoff12(GD1+4), gr0
+       
+       setlos  #gotofflo(GD2+4), gr0
+
+       setlo   #gotofflo(GD3+4), gr0
+       sethi   #gotoffhi(GD3+4), gr0
+
+       setlo   #gotlo(GD4+4), gr0
+       sethi   #gothi(GD4+4), gr0
+
+       .data
+       .global D8
+D8:
+       .word   GD0+4
+       
+       .global GD0
+       .global GD1
+       .global GD2
+       .global GD3
+       .global GD4
+GD0:
+GD1:
+GD2:
+GD3:
+GD4:
+       .picptr funcdesc(GFb+4)
+       .word   GFb+4
diff --git a/ld/testsuite/ld-frv/fdpic8min.ldv b/ld/testsuite/ld-frv/fdpic8min.ldv
new file mode 100644 (file)
index 0000000..aeadb79
--- /dev/null
@@ -0,0 +1 @@
+{ global: _start; F8; GF1; GF2; GF3; D8; GD0; GD4; local: GF0; GF4; GF5; GF6; GF7; GF8; GF9; GFb; GD1; GD2; GD3; };
index 92d0a87..acb7a5d 100644 (file)
@@ -363,6 +363,7 @@ proc is_elf_format {} {
         && ![istarget *-*-eabi*] \
         && ![istarget hppa*64*-*-hpux*] \
         && ![istarget *-*-linux*] \
+        && ![istarget frv-*-uclinux*] \
         && ![istarget *-*-irix5*] \
         && ![istarget *-*-irix6*] \
         && ![istarget *-*-netbsd*] \