summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/gdb.fortran/nested-funcs-2.exp29
1 files changed, 27 insertions, 2 deletions
diff --git a/gdb/testsuite/gdb.fortran/nested-funcs-2.exp b/gdb/testsuite/gdb.fortran/nested-funcs-2.exp
index d04fd0987e2..6009cb65c53 100644
--- a/gdb/testsuite/gdb.fortran/nested-funcs-2.exp
+++ b/gdb/testsuite/gdb.fortran/nested-funcs-2.exp
@@ -50,6 +50,31 @@ proc do_bp_tests {with_src_prefix_p with_nest_prefix_p} {
set nest_prefix ""
}
+ # Normally, info symbol prints the symbol table name for any fortran
+ # symbols (since symbol lookup happens via the minimal symbol
+ # table). This would correspond to the linkage name in the full symbol
+ # table.
+ # For gfortran (and maybe others) these names currently have the form
+ # XXXX.NUMBER where XXXX is the symbol name and NUMBER a compiler generated
+ # appendix for mangling. This mangled name gets recognized by the Ada
+ # demangler/decoder and decoded as Ada (setting the symbol language to Ada)
+ # to XXXX. This leads to the somewhat unexpected output of XXXX over
+ # XXXX.NUMBER for info symbol.
+ # For ifort and ifx the generated linkage names have the form
+ # SCOPEA_SCOPEB_XXXX_ which is not recognized by the Ada demangler and thus
+ # printed as is.
+ # Note that there is no Fortran mangling standard. We keep the
+ # gfortran behavior as is and extend the test to reflect ifx and ifort
+ # mangling.
+ proc get_linkage_name_pattern {symbol_name} {
+
+ if { [test_compiler_info icc*] || [test_compiler_info intel*]} {
+ return "\(?:.*_\)?${symbol_name}_?"
+ } else {
+ return ${symbol_name}
+ }
+ }
+
# Test setting up breakpoints and otherwise examining nested
# functions before the program starts.
with_test_prefix "before start" {
@@ -68,7 +93,7 @@ proc do_bp_tests {with_src_prefix_p with_nest_prefix_p} {
# is a failure, just a limitation in current GDB.
if { ${with_nest_prefix_p} } {
gdb_test "info symbol ${nest_prefix}${function}" \
- "${function} in section .*"
+ "[get_linkage_name_pattern ${function}] in section .*"
gdb_test "whatis ${nest_prefix}${function}" \
"type = ${type}"
gdb_test "ptype ${nest_prefix}${function}" \
@@ -134,7 +159,7 @@ proc do_bp_tests {with_src_prefix_p with_nest_prefix_p} {
set type [lindex $entry 1]
with_test_prefix $function {
gdb_test "info symbol ${nest_prefix}$function" \
- "$function in section .*"
+ "[get_linkage_name_pattern $function] in section .*"
gdb_test "whatis ${nest_prefix}$function" \
"type = ${type}"
gdb_test "ptype ${nest_prefix}$function" \