Function is_elf_target.

2013-10-29  Nicolas Blanc  <nicolas.blanc@intel.com>

gdb/testsuite
	* lib/gdb.exp (is_elf_target): New function.

Signed-off-by: Nicolas Blanc <nicolas.blanc@intel.com>
This commit is contained in:
Nicolas Blanc 2013-07-17 11:40:12 +02:00
parent 76ad5e1e2a
commit e9f0e62efd
1 changed files with 39 additions and 0 deletions

View File

@ -1796,6 +1796,45 @@ proc supports_reverse {} {
return 0
}
# Return 1 if target is ELF.
gdb_caching_proc is_elf_target {
set me "is_elf_target"
set src [standard_temp_file is_elf_target[pid].c]
set obj [standard_temp_file is_elf_target[pid].o]
set fp_src [open $src "w"]
puts $fp_src "int foo () {return 0;}"
close $fp_src
verbose "$me: compiling testfile $src" 2
set lines [gdb_compile $src $obj object {quiet}]
file delete $src
if ![string match "" $lines] then {
verbose "$me: testfile compilation failed, returning 0" 2
return 0
}
set fp_obj [open $obj "r"]
fconfigure $fp_obj -translation binary
set data [read $fp_obj]
close $fp_obj
file delete $obj
set ELFMAG "\u007FELF"
if {[string compare -length 4 $data $ELFMAG] != 0} {
verbose "$me: returning 0" 2
return 0
}
verbose "$me: returning 1" 2
return 1
}
# Return 1 if target is ILP32.
# This cannot be decided simply from looking at the target string,
# as it might depend on externally passed compiler options like -m64.