[gdb/testsuite] Fix ada tests with -fPIE/-pie

When running the gdb testsuite with target board unix/-fPIE/-pie, the
resulting ada executables are not PIE executables, because gnatmake doesn't
recognize -pie, and consequently doesn't pass it to gnatlink.

Fix this by replacing "-pie" with "-largs -pie -margs" in
target_compile_ada_from_dir, and doing the same for -no-pie.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-10-10  Tom de Vries  <tdevries@suse.de>

	PR testsuite/24888
	* lib/ada.exp (target_compile_ada_from_dir): Route -pie/-no-pie to
	gnatlink.
This commit is contained in:
Tom de Vries
2019-10-10 11:51:34 +02:00
parent 61f0556832
commit abcf2cc85a
2 changed files with 31 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2019-10-10 Tom de Vries <tdevries@suse.de>
PR testsuite/24888
* lib/ada.exp (target_compile_ada_from_dir): Route -pie/-no-pie to
gnatlink.
2019-10-09 Tom de Vries <tdevries@suse.de>
PR testsuite/25048

View File

@ -19,11 +19,36 @@
proc target_compile_ada_from_dir {builddir source dest type options} {
set saved_cwd [pwd]
global board
set board [target_info name]
set save_multilib_flag [board_info $board multilib_flags]
set multilib_flag ""
foreach op $save_multilib_flag {
if { $op == "-pie" || $op == "-no-pie" } {
# Pretend gnatmake supports -pie/-no-pie, route it to
# linker.
append multilib_flag " -largs $op -margs"
} else {
append multilib_flag " $op"
}
}
if { $multilib_flag != "" } {
unset_board_info "multilib_flags"
set_board_info multilib_flags "$multilib_flag"
}
catch {
cd $builddir
return [target_compile $source $dest $type $options]
} result options
cd $saved_cwd
if { $save_multilib_flag != "" } {
unset_board_info "multilib_flags"
set_board_info multilib_flags $save_multilib_flag
}
return -options $options $result
}