aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/ldlang.c2
-rw-r--r--ld/testsuite/ChangeLog8
-rw-r--r--ld/testsuite/ld-pie/pie.exp11
-rw-r--r--ld/testsuite/ld-pie/start.d8
-rw-r--r--ld/testsuite/ld-pie/start.s4
6 files changed, 35 insertions, 3 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index a0bc21c..2eefd16 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2009-03-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/9970
+ * ldlang.c (lang_end): Warn missing entry symbol for -pie.
+
2009-03-19 Alan Modra <amodra@bigpond.net.au>
* emultempl/spuelf.em (spu_before_allocation): Report errors from
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 9f62e9f..55d1043 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -5417,7 +5417,7 @@ lang_end (void)
bfd_boolean warn;
if ((link_info.relocatable && !link_info.gc_sections)
- || link_info.shared)
+ || (link_info.shared && !link_info.executable))
warn = entry_from_cmdline;
else
warn = TRUE;
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index f50755f..5a806ff 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2009-03-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/9970
+ * ld-pie/pie.exp: Use -fpie to compile. Run *.d tests.
+
+ * ld-pie/start.d: New.
+ * ld-pie/start.s: Likewise.
+
2009-03-18 H.J. Lu <hongjiu.lu@intel.com>
PR ld/6766
diff --git a/ld/testsuite/ld-pie/pie.exp b/ld/testsuite/ld-pie/pie.exp
index 064d9cd..1f4effc 100644
--- a/ld/testsuite/ld-pie/pie.exp
+++ b/ld/testsuite/ld-pie/pie.exp
@@ -28,8 +28,8 @@ if { ![istarget *-*-linux*] } {
}
# Check if -pie is supported or not.
-send_log "$CC -pie $srcdir/$subdir/pie.c -o tmpdir/pie"
-catch "exec $CC -pie $srcdir/$subdir/pie.c -o tmpdir/pie" exec_output
+send_log "$CC -fpie -pie $srcdir/$subdir/pie.c -o tmpdir/pie"
+catch "exec $CC -fpie -pie $srcdir/$subdir/pie.c -o tmpdir/pie" exec_output
send_log "$exec_output\n"
if { ![string match "" $exec_output] } {
return
@@ -41,3 +41,10 @@ set array_tests {
}
run_ld_link_exec_tests [] $array_tests
+
+set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
+foreach t $test_list {
+ # We need to strip the ".d", but can leave the dirname.
+ verbose [file rootname $t]
+ run_dump_test [file rootname $t]
+}
diff --git a/ld/testsuite/ld-pie/start.d b/ld/testsuite/ld-pie/start.d
new file mode 100644
index 0000000..1ee22e0
--- /dev/null
+++ b/ld/testsuite/ld-pie/start.d
@@ -0,0 +1,8 @@
+#name: missing entry symbol
+#ld: -pie
+#warning: .*: warning: cannot find entry symbol .*
+#nm: -n
+
+#...
+[0-9a-f]+ T +foo
+#...
diff --git a/ld/testsuite/ld-pie/start.s b/ld/testsuite/ld-pie/start.s
new file mode 100644
index 0000000..4a70181
--- /dev/null
+++ b/ld/testsuite/ld-pie/start.s
@@ -0,0 +1,4 @@
+ .text
+ .globl foo
+foo:
+ .byte 0