--- a/gdb/testsuite/gdb.base/shreloc.exp +++ b/gdb/testsuite/gdb.base/shreloc.exp @@ -157,14 +157,14 @@ proc send_gdb_discard { command } { } } -proc get_msym_addrs { var msymfile } { +proc get_msym_addrs { var msymfile { msym_type "" } } { # 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" + send_gdb "shell grep -E \"${msym_type} ${var}(\[ \t\]+.*)?\$\" ${msymfile}\n" while 1 { gdb_expect { @@ -201,10 +201,10 @@ proc check_same {var msymfile} { } } -proc check_different {var msymfile} { +proc check_different {var msymfile { msym_type "" } } { # 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}" "${msym_type}"]] set prev "" if { [llength ${addr_list}] < 2 } { @@ -236,7 +236,9 @@ if [send_gdb_discard "maint print msymbo fail "(msymbol) relocated extern vars have different addresses" } - if {[check_different "fn_\[12\]" "${msymfile}"]} { + # Msymbol type of "relocated function" should be 'T', so we just + # check 'T' type. + if {[check_different "fn_\[12\]" "${msymfile}" "T.*"]} { pass "(msymbol) relocated functions have different addresses" } else { fail "(msymbol) relocated functions have different addresses"