aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/emultempl/armelf.em4
-rw-r--r--ld/ld.texinfo4
-rw-r--r--ld/testsuite/ChangeLog7
-rw-r--r--ld/testsuite/ld-arm/arm-elf.exp60
5 files changed, 49 insertions, 31 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 0d892c1..d896b6f 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-28 Christophe Lyon <christophe.lyon@st.com>
+
+ * ld.texinfo: State that farcalls stubs are supported for ARM-EABI
+ only.
+
2008-05-27 Kai Tietz <kai.tietz@onevision.com>
* pe-dll.c (fill_edata): Make sure we calculate vma's in
diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
index 57842f4..6ebb30e 100644
--- a/ld/emultempl/armelf.em
+++ b/ld/emultempl/armelf.em
@@ -355,7 +355,7 @@ gld${EMULATION_NAME}_finish (void)
{
if (ret < 0)
{
- einfo ("%X%P: can not size stub section: %E\n");
+ einfo ("%X%P: could not compute sections lists for stub generation: %E\n");
return;
}
@@ -369,7 +369,7 @@ gld${EMULATION_NAME}_finish (void)
& elf32_arm_add_stub_section,
& gldarm_layout_sections_again))
{
- einfo ("%X%P: can not size stub section: %E\n");
+ einfo ("%X%P: cannot size stub section: %E\n");
return;
}
}
diff --git a/ld/ld.texinfo b/ld/ld.texinfo
index e7dbd7b..f4a3473 100644
--- a/ld/ld.texinfo
+++ b/ld/ld.texinfo
@@ -5713,6 +5713,10 @@ from the input sections.
The default, if @option{--stub-group-size=} is not specified, is
@samp{N = +1}.
+Farcalls stubs insertion is fully supported for the ARM-EABI target
+only, because it relies on object files properties not present
+otherwise.
+
@ifclear GENERIC
@lowersections
@end ifclear
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index be242b6..8a04642 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2008-05-28 Christophe Lyon <christophe.lyon@st.com>
+
+ * ld-arm/arm-elf.exp: Skip farcalls tests for non-ARM-EABI
+ targets.
+ * ld-arm/thumb2-bl-as-thumb1-bad-noeabi.d: New file.
+ * ld-arm/thumb2-bl-bad-noeabi.d: Likewise.
+
2008-05-22 Christophe Lyon <christophe.lyon@st.com>
* ld-arm/farcall-arm-arm.s: Force function type on 'bar'.
diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp
index 62a7ef0..5f2af9d 100644
--- a/ld/testsuite/ld-arm/arm-elf.exp
+++ b/ld/testsuite/ld-arm/arm-elf.exp
@@ -177,6 +177,36 @@ set armelftests {
{"callweak" "-static -T arm.ld" "" {callweak.s}
{{objdump -dr callweak.d}}
"callweak"}
+}
+
+run_ld_link_tests $armelftests
+run_dump_test "group-relocs-alu-bad"
+run_dump_test "group-relocs-ldr-bad"
+run_dump_test "group-relocs-ldrs-bad"
+run_dump_test "group-relocs-ldc-bad"
+run_dump_test "emit-relocs1"
+
+# Exclude non-ARM-EABI targets.
+
+if { ![istarget "arm*-*-*eabi"] } {
+ # Special variants of these tests, as no farcall stub is generated
+ # for a non-ARM-EABI target
+ run_dump_test "thumb2-bl-as-thumb1-bad-noeabi"
+ run_dump_test "thumb2-bl-bad-noeabi"
+ return
+}
+
+# Farcalls stubs are fully supported for ARM-EABI only
+set armeabitests {
+ {"EABI attribute merging" "-r" "" {attr-merge.s attr-merge.s}
+ {{readelf -A attr-merge.attr}}
+ "attr-merge"}
+ {"EABI attribute merging 2" "-r" "" {attr-merge-2a.s attr-merge-2b.s}
+ {{readelf -A attr-merge-2.attr}}
+ "attr-merge-2"}
+ {"Thumb-2 BL" "-Ttext 0x1000 --section-start .foo=0x1001000" "" {thumb2-bl.s}
+ {{objdump -dr thumb2-bl.d}}
+ "thumb2-bl"}
{"ARMv4 interworking" "-static -T arm.ld --fix-v4bx-interworking" "--fix-v4bx -meabi=4" {armv4-bx.s}
{{objdump -d armv4-bx.d}}
@@ -252,37 +282,9 @@ set armelftests {
"farcall-group-size2"}
}
-run_ld_link_tests $armelftests
-run_dump_test "group-relocs-alu-bad"
-run_dump_test "group-relocs-ldr-bad"
-run_dump_test "group-relocs-ldrs-bad"
-run_dump_test "group-relocs-ldc-bad"
-run_dump_test "emit-relocs1"
+run_ld_link_tests $armeabitests
run_dump_test "farcall-thumb-thumb"
run_dump_test "farcall-thumb-thumb-pic-veneer"
run_dump_test "farcall-thumb-thumb-m-pic-veneer"
run_dump_test "farcall-thumb-arm-pic-veneer"
run_dump_test "farcall-section"
-
-# Exclude non-ARM-EABI targets.
-
-if { ![istarget "arm*-*-*eabi"] } {
- return
-}
-
-set armeabitests {
- {"EABI attribute merging" "-r" "" {attr-merge.s attr-merge.s}
- {{readelf -A attr-merge.attr}}
- "attr-merge"}
- {"EABI attribute merging 2" "-r" "" {attr-merge-2a.s attr-merge-2b.s}
- {{readelf -A attr-merge-2.attr}}
- "attr-merge-2"}
- {"Thumb-2 BL" "-Ttext 0x1000 --section-start .foo=0x1001000" "" {thumb2-bl.s}
- {{objdump -dr thumb2-bl.d}}
- "thumb2-bl"}
- {"Thumb-2 Interworked branch" "-T arm.ld" "" {thumb2-b-interwork.s}
- {{objdump -dr thumb2-b-interwork.d}}
- "thumb2-b-interwork"}
-}
-
-run_ld_link_tests $armeabitests