[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-08-08 Tom de Vries PR testsuite/24888 * lib/ada.exp (target_compile_ada_from_dir): Route -pie/-no-pie to gnatlink. --- gdb/testsuite/lib/ada.exp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gdb/testsuite/lib/ada.exp b/gdb/testsuite/lib/ada.exp index 1345c747c5..6a3fd33240 100644 --- a/gdb/testsuite/lib/ada.exp +++ b/gdb/testsuite/lib/ada.exp @@ -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 }