proc gdb_gnu_strip_debug { dest args } {
- # First, make sure that we can do this. This is nasty. We need to
- # check for the stabs debug format. To do this we must run gdb on
- # the unstripped executable, list 'main' (as to have a default
- # source file), use get_debug_format (which does 'info source')
- # and then see if the debug info is stabs. If so, we bail out. We
- # cannot do this any other way because get_debug_format finds out
- # the debug format using gdb itself, and in case of stabs we get
- # an error loading the program if it is already stripped. An
- # alternative would be to find out the debug info from the flags
- # passed to dejagnu when the test is run.
-
- gdb_exit
- gdb_start
- gdb_load ${dest}
- gdb_test "list main" "" ""
- get_debug_format
- if { [test_debug_format "stabs"] } then {
- # The separate debug info feature doesn't work well in
- # binutils with stabs. It produces a corrupted debug info
- # only file, and gdb chokes on it. It is almost impossible to
- # capture the failing message out of gdb, because it happens
- # inside gdb_load. At that point any error message is
- # intercepted by dejagnu itself, and, because of the error
- # threshold, any faulty test result is changed into an
- # UNRESOLVED. (see dejagnu/lib/framework.exp)
- unsupported "no separate debug info handling with stabs"
- return -1
- } elseif { [test_debug_format "unknown"] } then {
- # gdb doesn't know what the debug format is. We are out of luck here.
- unsupported "unknown debugging format"
- return -1
- }
- gdb_exit
-
set debug_file [separate_debug_filename $dest]
set strip_to_file_program [transform strip]
set objcopy_program [transform objcopy]