--- a/gdb/testsuite/gdb.base/shreloc.exp +++ b/gdb/testsuite/gdb.base/shreloc.exp @@ -157,14 +157,18 @@ proc send_gdb_discard { command } { } } -proc get_msym_addrs { var msymfile } { +proc get_msym_addrs { var msymfile { plus_var "" } } { # Extract the list of values for symbols matching var in the # minimal symbol output file global gdb_prompt hex set result "" - send_gdb "shell grep -E \" ${var}(\[ \t\]+.*)?\$\" ${msymfile}\n" + if { "${plus_var}" == "" } { + send_gdb "shell grep -E \" ${var}(\[ \t\]+.*)?\$\" ${msymfile}\n" + } else { + send_gdb "shell grep -E \" ${plus_var} .* ${var}(\[ \t\]+.*)?\$\" ${msymfile}\n" + } while 1 { gdb_expect { @@ -201,10 +205,10 @@ proc check_same {var msymfile} { } } -proc check_different {var msymfile} { +proc check_different {var msymfile { plus_var "" } } { # Check that the minimal symbol values matching var are different - set addr_list [lsort [get_msym_addrs "${var}" "${msymfile}"]] + set addr_list [lsort [get_msym_addrs "${var}" "${msymfile}" "${plus_var}"]] set prev "" if { [llength ${addr_list}] < 2 } { @@ -236,7 +240,12 @@ if [send_gdb_discard "maint print msymbo fail "(msymbol) relocated extern vars have different addresses" } - if {[check_different "fn_\[12\]" "${msymfile}"]} { + if {([istarget "*pc-cygwin"] || [istarget "*pc-mingw32"]) } { + set check_str "T" + } else { + set check_str "" + } + if {[check_different "fn_\[12\]" "${msymfile}" "${check_str}"]} { pass "(msymbol) relocated functions have different addresses" } else { fail "(msymbol) relocated functions have different addresses"