[rfa][gold] build debug_msg.o without -fdebug-prefix-map
Chris Demetriou
cgd@google.com
Wed Aug 19 13:02:00 GMT 2009
in the gold tests, the error messages from linking debug_msg.o are
checked to verify that the source file names show up correctly in
error messages.
Use of -fdebug-prefix-map in CXX or CXXFLAGS breaks that test.
To repro, build/test like:
export CC="$GCC_PREFIX/bin/gcc -fdebug-prefix-map=${topdir}=/tmp/foobar"
export CXX="$GCC_PREFIX//bin/g++ -fdebug-prefix-map=${topdir}=/tmp/foobar"
CC="${CC}" CXX="${CXX}" "${topdir}/gold/configure" --enable-gold
make all-gold
make check-gold
(GCC_PREFIX must contain a version of gcc that supports
-fdebug-prefix-map, of course.)
the errors you get are like:
Did not find expected error in debug_msg.err:
debug_msg.o: in function
Base::virtfn():/home/cgd/proj/gcctools/sources/gold/gold/testsuite/debug_msg.cc:50:
error: undefined reference to 'undef_fn1()'
Actual error output below:
gcctestdir/ld: warning: while linking debug_msg: symbol
'Ordering::operator()(int, int)' defined in multiple places (possible
ODR violation):
/tmp/foobar/gold/gold/testsuite/odr_violation1.cc:5
/tmp/foobar/gold/gold/testsuite/odr_violation2.cc:5
gcctestdir/ld: debug_msg.o: in function
badref1:debug_msg.cc(.data+0x0): error: undefined reference to
'undef_int'
gcctestdir/ld: debug_msg.o: in function
fn_array:debug_msg.cc(.data+0x10): error: undefined reference to
'undef_fn1()'
gcctestdir/ld: debug_msg.o: in function
fn_array:debug_msg.cc(.data+0x18): error: undefined reference to
'undef_fn2()'
gcctestdir/ld: debug_msg.o: in function
Base::virtfn():/tmp/foobar/gold/gold/testsuite/debug_msg.cc:50: error:
undefined reference to 'undef_fn1()'
gcctestdir/ld: debug_msg.o: in function int
testfn<int>(int):/tmp/foobar/gold/gold/testsuite/debug_msg.cc:43:
error: undefined reference to 'undef_fn1()'
gcctestdir/ld: debug_msg.o: in function int
testfn<int>(int):/tmp/foobar/gold/gold/testsuite/debug_msg.cc:44:
error: undefined reference to 'undef_fn2()'
gcctestdir/ld: debug_msg.o: in function int
testfn<int>(int):/tmp/foobar/gold/gold/testsuite/debug_msg.cc:45:
error: undefined reference to 'undef_int'
gcctestdir/ld: debug_msg.o: in function int
testfn<double>(double):/tmp/foobar/gold/gold/testsuite/debug_msg.cc:43:
error: undefined reference to 'undef_fn1()'
gcctestdir/ld: debug_msg.o: in function int
testfn<double>(double):/tmp/foobar/gold/gold/testsuite/debug_msg.cc:44:
error: undefined reference to 'undef_fn2()'
gcctestdir/ld: debug_msg.o: in function int
testfn<double>(double):/tmp/foobar/gold/gold/testsuite/debug_msg.cc:45:
error: undefined reference to 'undef_int'
gcctestdir/ld: debug_msg.o: in function
Derived::virtfn():/tmp/foobar/gold/gold/testsuite/debug_msg.cc:55:
error: undefined reference to 'undef_fn2()'
collect2: ld returned 1 exit status
FAIL: debug_msg.sh
The patch attached fixes it. This doesn't work if the
-fdebug-prefix-map mapping includes spaces, but i couldn't immediately
think of a better way to do it. (This seemed a lot more
straightforward than trying to apply the prefix mappings to the source
dir name used in the test, tho...)
Tested with gold sources as of 2009-08-15 00:00 UTC.
Please double-check the ChangeLog, i'm rusty. 8-)
chris
---
2009-08-18 Chris Demetriou <cgd@google.com>
* configure.ac (CXX_NO_DEBUG_PREFIX_MAP)
(CXXFLAGS_NO_DEBUG_PREFIX_MAP): New variables.
* testsuite/Makefile.am (CXXCOMPILE_NO_DEBUG_PREFIX_MAP): New variable.
(debug_msg.o): Build using CXXCOMPILE_NO_DEBUG_PREFIX_MAP.
* Makefile.in: Regenerate.
* configure: Likewise.
* testsuite/Makefile.in: Likewise.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: debug_msg_test.patch
Type: application/octet-stream
Size: 2277 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20090819/3521a129/attachment.obj>
More information about the Binutils
mailing list