+2020-12-16 Tom de Vries <tdevries@suse.de>
+
+ * lib/gdb.exp (gdb_compile_shlib_1): Factor out of ...
+ (gdb_compile_shlib): ... here. Filter out PIE-related flags.
+
2020-12-16 Luis Machado <luis.machado@linaro.org>
* gdb.arch/aarch64-tagged-pointer.c (main): Add a few more
# Build a shared library from SOURCES.
-proc gdb_compile_shlib {sources dest options} {
+proc gdb_compile_shlib_1 {sources dest options} {
set obj_options $options
set ada 0
return ""
}
+# Build a shared library from SOURCES. Ignore target boards PIE-related
+# multilib_flags.
+
+proc gdb_compile_shlib {sources dest options} {
+ global board
+
+ # Save multilib_flags.
+ set board [target_info name]
+ set save_multilib_flag [board_info $board multilib_flags]
+
+ # Ignore PIE-related setting in multilib_flags.
+ set multilib_flag ""
+ foreach op $save_multilib_flag {
+ if { $op == "-pie" || $op == "-no-pie" \
+ || $op == "-fPIE" || $op == "-fno-PIE"} {
+ } else {
+ append multilib_flag " $op"
+ }
+ }
+ unset_board_info "multilib_flags"
+ set_board_info multilib_flags "$multilib_flag"
+ set code [catch {gdb_compile_shlib_1 $sources $dest $options} result]
+
+ # Restore multilib_flags.
+ unset_board_info "multilib_flags"
+ set_board_info multilib_flags $save_multilib_flag
+
+ if {$code == 1} {
+ global errorInfo errorCode
+ return -code error -errorinfo $errorInfo -errorcode $errorCode $result
+ } elseif {$code > 1} {
+ return -code $code $result
+ }
+
+ return $result
+}
+
# This is just like gdb_compile_shlib, above, except that it tries compiling
# against several different thread libraries, to see which one this
# system has.