PR ld/12761
* elflink.c (elf_link_add_object_symbols): Process .gnu.warning sections when building shared libraries. * lib/ld-lib.exp (run_cc_link_tests): Add an optional 8th parameter - an expected warning message from the linker. * ld-elf/shared.exp (build_tests): Expect a warning message when building the libbarw.so library. * ld-elf/shared.exp: Run library building tests even when not building a native toolchain.
This commit is contained in:
parent
d0da06e2df
commit
dd98f8d276
5 changed files with 45 additions and 12 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2011-05-18 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR ld/12761
|
||||||
|
* elflink.c (elf_link_add_object_symbols): Process .gnu.warning
|
||||||
|
sections when building shared libraries.
|
||||||
|
|
||||||
2011-05-18 Rafał Krypa <r.krypa@samsung.com>
|
2011-05-18 Rafał Krypa <r.krypa@samsung.com>
|
||||||
|
|
||||||
PR ld/12778
|
PR ld/12778
|
||||||
|
|
|
@ -3423,7 +3423,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
||||||
.gnu.warning.SYMBOL are treated as warning symbols for the given
|
.gnu.warning.SYMBOL are treated as warning symbols for the given
|
||||||
symbol. This differs from .gnu.warning sections, which generate
|
symbol. This differs from .gnu.warning sections, which generate
|
||||||
warnings when they are included in an output file. */
|
warnings when they are included in an output file. */
|
||||||
if (info->executable)
|
/* PR 12761: Also generate this warning when building shared libraries. */
|
||||||
|
if (info->executable || info->shared)
|
||||||
{
|
{
|
||||||
asection *s;
|
asection *s;
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
|
2011-05-18 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR ld/12761
|
||||||
|
* lib/ld-lib.exp (run_cc_link_tests): Add an optional 8th
|
||||||
|
parameter - an expected warning message from the linker.
|
||||||
|
* ld-elf/shared.exp (build_tests): Expect a warning message when
|
||||||
|
building the libbarw.so library.
|
||||||
|
|
||||||
|
* ld-elf/shared.exp: Run library building tests even when not
|
||||||
|
building a native toolchain.
|
||||||
|
|
||||||
2011-05-16 H.J. Lu <hongjiu.lu@intel.com>
|
2011-05-16 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* ld-scripts/phdrs.exp: Replace --private with
|
* ld-scripts/phdrs.exp: Replace --private with
|
||||||
|
|
|
@ -25,12 +25,7 @@ if ![is_elf_format] {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
# The following tests require running the executable generated by ld.
|
# Check to see if the C compiler works
|
||||||
if ![isnative] {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if compiler works
|
|
||||||
if { [which $CC] == 0 } {
|
if { [which $CC] == 0 } {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -47,7 +42,8 @@ set build_tests {
|
||||||
{begin.c end.c} {} "libbar.so"}
|
{begin.c end.c} {} "libbar.so"}
|
||||||
{"Build warn libbar.so"
|
{"Build warn libbar.so"
|
||||||
"-shared" "-fPIC"
|
"-shared" "-fPIC"
|
||||||
{beginwarn.c end.c} {} "libbarw.so"}
|
{beginwarn.c end.c} {} "libbarw.so"
|
||||||
|
"C" "^.*\\\): warning: function foo is deprecated$"}
|
||||||
{"Build hidden libbar.so"
|
{"Build hidden libbar.so"
|
||||||
"-shared" "-fPIC"
|
"-shared" "-fPIC"
|
||||||
{begin.c endhidden.c} {} "libbarh.so"}
|
{begin.c endhidden.c} {} "libbarh.so"}
|
||||||
|
@ -156,6 +152,13 @@ set build_tests {
|
||||||
{pr11138-2.c} {} "libpr11138-2.o"}
|
{pr11138-2.c} {} "libpr11138-2.o"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_cc_link_tests $build_tests
|
||||||
|
|
||||||
|
# The following tests require running the executable generated by ld.
|
||||||
|
if ![isnative] {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
set run_tests {
|
set run_tests {
|
||||||
{"Run normal with libfoo.so"
|
{"Run normal with libfoo.so"
|
||||||
"tmpdir/begin.o tmpdir/libfoo.so tmpdir/end.o" ""
|
"tmpdir/begin.o tmpdir/libfoo.so tmpdir/end.o" ""
|
||||||
|
@ -280,11 +283,10 @@ set run_tests {
|
||||||
{dummy.c} "pr11138b" "pr11138.out"}
|
{dummy.c} "pr11138b" "pr11138.out"}
|
||||||
}
|
}
|
||||||
|
|
||||||
run_cc_link_tests $build_tests
|
|
||||||
# NetBSD ELF systems do not currently support the .*_array sections.
|
# NetBSD ELF systems do not currently support the .*_array sections.
|
||||||
run_ld_link_exec_tests [list "*-*-netbsdelf*"] $run_tests
|
run_ld_link_exec_tests [list "*-*-netbsdelf*"] $run_tests
|
||||||
|
|
||||||
# Check if compiler works
|
# Check to see if the C++ compiler works
|
||||||
if { [which $CXX] == 0 } {
|
if { [which $CXX] == 0 } {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -1243,6 +1243,7 @@ proc run_ld_link_exec_tests { targets_to_xfail ldtests } {
|
||||||
# 4:action and options.
|
# 4:action and options.
|
||||||
# 5:name of output file
|
# 5:name of output file
|
||||||
# 6:language (optional)
|
# 6:language (optional)
|
||||||
|
# 7:linker warnings (optional)
|
||||||
#
|
#
|
||||||
# Actions:
|
# Actions:
|
||||||
# objdump: Apply objdump options on result. Compare with regex (last arg).
|
# objdump: Apply objdump options on result. Compare with regex (last arg).
|
||||||
|
@ -1261,6 +1262,7 @@ proc run_cc_link_tests { ldtests } {
|
||||||
global CFLAGS
|
global CFLAGS
|
||||||
global CXXFLAGS
|
global CXXFLAGS
|
||||||
global ar
|
global ar
|
||||||
|
global exec_output
|
||||||
|
|
||||||
foreach testitem $ldtests {
|
foreach testitem $ldtests {
|
||||||
set testname [lindex $testitem 0]
|
set testname [lindex $testitem 0]
|
||||||
|
@ -1270,6 +1272,7 @@ proc run_cc_link_tests { ldtests } {
|
||||||
set actions [lindex $testitem 4]
|
set actions [lindex $testitem 4]
|
||||||
set binfile tmpdir/[lindex $testitem 5]
|
set binfile tmpdir/[lindex $testitem 5]
|
||||||
set lang [lindex $testitem 6]
|
set lang [lindex $testitem 6]
|
||||||
|
set warnings [lindex $testitem 7]
|
||||||
set objfiles {}
|
set objfiles {}
|
||||||
set is_unresolved 0
|
set is_unresolved 0
|
||||||
set failed 0
|
set failed 0
|
||||||
|
@ -1306,8 +1309,18 @@ proc run_cc_link_tests { ldtests } {
|
||||||
set failed 0
|
set failed 0
|
||||||
}
|
}
|
||||||
} elseif { ![ld_simple_link $cc_cmd $binfile "-L$srcdir/$subdir $ldflags $objfiles"] } {
|
} elseif { ![ld_simple_link $cc_cmd $binfile "-L$srcdir/$subdir $ldflags $objfiles"] } {
|
||||||
fail $testname
|
# Check if exec_output is expected.
|
||||||
set failed 1
|
if { $warnings != "" } then {
|
||||||
|
verbose -log "returned with: <$exec_output>, expected: <$warnings>"
|
||||||
|
if { [regexp $warnings $exec_output] } then {
|
||||||
|
set failed 0
|
||||||
|
} else {
|
||||||
|
set failed 1
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fail $testname
|
||||||
|
set failed 1
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
set failed 0
|
set failed 0
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue