+2007-09-04  Mike Frysinger  <vapier@gentoo.org>
+
+       * lib/ld-lib.exp (default_ld_compile): Pull in global CXXFLAGS and
+       add it to $flags when $ccexe matches *++*.
+       (run_ld_link_exec_tests): Pull in global CXXFLAGS and execute CXX
+       with CXXFLAGS when $lang matches c++.
+       (run_cc_link_tests): Likewise.
+
 2007-09-02  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/4986
 
 #
 proc default_ld_compile { cc source object } {
     global CFLAGS
+    global CXXFLAGS
     global srcdir
     global subdir
     global host_triplet
     remote_file build delete "$object"
     remote_file host delete "$object"
 
-    set flags "-I$srcdir/$subdir $CFLAGS"
+    set flags "-I$srcdir/$subdir"
 
     # If we are compiling with gcc, we want to add gcc_gas_flag to
     # flags.  Rather than determine this in some complex way, we guess
        set flags "$gcc_gas_flag $flags"
     }
 
+    if {[string match "*++*" $ccexe]} {
+       set flags "$flags $CXXFLAGS"
+    } else {
+       set flags "$flags $CFLAGS"
+    }
+
     if [board_info [target_info name] exists multilib_flags] {
        append flags " [board_info [target_info name] multilib_flags]"
     }
     global CC
     global CXX
     global CFLAGS
+    global CXXFLAGS
     global errcnt
     global exec_output
 
            # We ignore warnings since some compilers may generate
            # incorrect section attributes and the assembler will warn
            # them.
-           ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/$src_file $objfile
+           if { [ string match "c++" $lang ] } {
+               ld_compile "$CXX -c $CXXFLAGS $cflags" $srcdir/$subdir/$src_file $objfile
+           } else {
+               ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/$src_file $objfile
+           }
 
            # We have to use $CC to build PIE and shared library.
            if { [ string match "c" $lang ] } {
     global CC
     global CXX
     global CFLAGS
+    global CXXFLAGS
 
     foreach testitem $ldtests {
        set testname [lindex $testitem 0]
            # We ignore warnings since some compilers may generate
            # incorrect section attributes and the assembler will warn
            # them.
-           ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/$src_file $objfile
+           if { [ string match "c++" $lang ] } {
+               ld_compile "$CXX -c $CXXFLAGS $cflags" $srcdir/$subdir/$src_file $objfile
+           } else {
+               ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/$src_file $objfile
+           }
        }
 
        # Clear error and warning counts.