From b239e90902caf9a002527981187e64063baeb8ef Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 4 Oct 2005 19:54:08 +0000 Subject: [PATCH] 2005-10-04 H.J. Lu PR ld/1396 * ld-scripts/cross3.t: New file. * ld-scripts/cross4.c: Likewise. * ld-scripts/crossref.exp: Add a new test for "ld -r". --- ld/testsuite/ChangeLog | 8 ++++++++ ld/testsuite/ld-scripts/cross3.t | 10 ++++++++++ ld/testsuite/ld-scripts/cross4.c | 7 +++++++ ld/testsuite/ld-scripts/crossref.exp | 29 ++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 ld/testsuite/ld-scripts/cross3.t create mode 100644 ld/testsuite/ld-scripts/cross4.c diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 3fdfa9e8e16..684b7d3dd0f 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2005-10-04 H.J. Lu + + PR ld/1396 + * ld-scripts/cross3.t: New file. + * ld-scripts/cross4.c: Likewise. + + * ld-scripts/crossref.exp: Add a new test for "ld -r". + 2005-09-30 H.J. Lu * ld-elf/sec64k.exp: Enabled for all ELF targets. diff --git a/ld/testsuite/ld-scripts/cross3.t b/ld/testsuite/ld-scripts/cross3.t new file mode 100644 index 00000000000..5411b9b6804 --- /dev/null +++ b/ld/testsuite/ld-scripts/cross3.t @@ -0,0 +1,10 @@ +NOCROSSREFS(.nocrossrefs .text) + +SECTIONS +{ + .text : { *(.text) } + .nocrossrefs : { *(.nocrossrefs) } + .data : { *(.data) } + .bss : { *(.bss) *(COMMON) } + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/cross4.c b/ld/testsuite/ld-scripts/cross4.c new file mode 100644 index 00000000000..aef8dfd1ffe --- /dev/null +++ b/ld/testsuite/ld-scripts/cross4.c @@ -0,0 +1,7 @@ +__attribute__ ((section (".nocrossrefs"))) +static void +foo () +{ +} + +void (*dummy) () = foo; diff --git a/ld/testsuite/ld-scripts/crossref.exp b/ld/testsuite/ld-scripts/crossref.exp index 7c5fcbe65f9..686b327318f 100644 --- a/ld/testsuite/ld-scripts/crossref.exp +++ b/ld/testsuite/ld-scripts/crossref.exp @@ -19,10 +19,12 @@ set test1 "NOCROSSREFS 1" set test2 "NOCROSSREFS 2" +set test3 "NOCROSSREFS 3" if { [which $CC] == 0 } { untested $test1 untested $test2 + untested $test3 return } @@ -94,3 +96,30 @@ if [string match "" $exec_output] then { fail $test2 } } + +# Check cross references for ld -r + +if { ![ld_compile $CC "$srcdir/$subdir/cross4.c" tmpdir/cross4.o] } { + unresolved $test3 + return +} + +if ![ld_relocate $ld tmpdir/cross3-partial.o "tmpdir/cross1.o tmpdir/cross4.o"] { + unresolved $test3 + return +} + +verbose -log "$ld $flags -o tmpdir/cross3 -T $srcdir/$subdir/cross3.t tmpdir/cross3-partial.o tmpdir/cross2.o" + +catch "exec $ld $flags -o tmpdir/cross3 -T $srcdir/$subdir/cross3.t tmpdir/cross3-partial.o tmpdir/cross2.o" exec_output + +set exec_output [prune_warnings $exec_output] + +regsub -all "(^|\n)($ld: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output + +if [string match "" $exec_output] then { + pass $test3 +} else { + verbose -log "$exec_output" + fail $test3 +} -- 2.30.2