Commit 6d0f7cac by Benjamin Kosnik Committed by Benjamin Kosnik

re PR libstdc++/52689 (static linking with libstdc++ fails)

2012-04-25  Benjamin Kosnik  <bkoz@redhat.com>

	PR libstdc++/52689
	* testsuite/17_intro/static.cc: Fix.
	* testsuite/lib/dg-options.exp (dg-require-static-libstdcxx): New.

From-SVN: r186845
parent 8ca72b98
2012-04-25 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/52689
* testsuite/17_intro/static.cc: Fix.
* testsuite/lib/dg-options.exp (dg-require-static-libstdcxx): New.
* testsuite/lib/libstdc++.exp (check_v3_target_static_libstdcxx): New.
2012-04-25 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/std/scoped_allocator (scoped_allocator::__outermost): Do
......
// { dg-do link }
// { dg-require-effective-target static }
// { dg-options "-static -std=gnu++11" }
// { dg-require-static-libstdcxx }
// { dg-options "-static-libstdc++ -std=gnu++11" }
// Copyright (C) 2012 Free Software Foundation, Inc.
//
......@@ -25,7 +25,7 @@
int main()
{
std::locale c = std::locale::global();
std::locale c __attribute__((unused)) = std::locale::classic();
std::cout << "i am old-skool\n";
return 0;
}
......@@ -197,6 +197,15 @@ proc dg-require-nprocs { args } {
return
}
proc dg-require-static-libstdcxx { args } {
if { ![ check_v3_target_static_libstdcxx ] } {
upvar dg-do-what dg-do-what
set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
return
}
return
}
proc add_options_for_no_pch { flags } {
# This forces any generated and possibly included PCH to be invalid.
return "-D__GLIBCXX__=99999999"
......
......@@ -1693,5 +1693,49 @@ proc check_v3_target_nprocs { } {
return $et_nprocs
}
proc check_v3_target_static_libstdcxx { } {
global cxxflags
global DEFAULT_CXXFLAGS
global et_static_libstdcxx
global tool
if [info exists et_static_libstdcxx] {
verbose "check_v3_target_static_libstdcxx: using cached result" 2
} else {
set et_static_libstdcxx 0
# Set up and link a C++0x test program that depends
# on static linking
set src static-maybe[pid].cc
set f [open $src "w"]
puts $f "#include <iostream>"
puts $f "int main() {"
puts $f "int i(415);"
puts $f "std::cout<< i << std::endl;"
puts $f "return 0; }"
puts $f ""
close $f
set cxxflags_saved $cxxflags
set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -static-libstdc++"
set lines [v3_target_compile $src /dev/null executable ""]
set cxxflags $cxxflags_saved
file delete $src
if [string match "" $lines] {
# No error message, link succeeded.
set et_static_libstdcxx 1
} else {
verbose "check_v3_target_static_libstdcxx: compilation failed" 2
}
}
verbose "check_v3_target_static_libstdcxx: $et_static_libstdcxx" 2
return $et_static_libstdcxx
}
set additional_prunes ""
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment