From: Pedro Alves Date: Fri, 10 Feb 2023 11:55:00 +0000 (+0000) Subject: Make "ptype INTERNAL_FUNCTION" in Ada print like other languages X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=751495be92b2b319fb66ce4e12b562a0e27c15fe;p=binutils-gdb.git Make "ptype INTERNAL_FUNCTION" in Ada print like other languages Currently, printing the type of an internal function in Ada shows double <>s, like: (gdb) with language ada -- ptype $_isvoid type = <> while all other languages print it with a single <>, like: (gdb) with language c -- ptype $_isvoid type = I don't think there's a reason that Ada needs to be different. We currently print the double <>s because we take this path in ada_print_type: switch (type->code ()) { default: gdb_printf (stream, "<"); c_print_type (type, "", stream, show, level, language_ada, flags); gdb_printf (stream, ">"); break; ... and the type's name already has the <>s. Fix this by simply adding an early check for TYPE_CODE_INTERNAL_FUNCTION. Approved-By: Andrew Burgess Approved-By: Tom Tromey Change-Id: Ic2b6527b9240a367471431023f6e27e6daed5501 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30105 --- diff --git a/gdb/ada-typeprint.c b/gdb/ada-typeprint.c index e95034c9285..3866b2d35eb 100644 --- a/gdb/ada-typeprint.c +++ b/gdb/ada-typeprint.c @@ -941,6 +941,13 @@ ada_print_type (struct type *type0, const char *varstring, struct ui_file *stream, int show, int level, const struct type_print_options *flags) { + if (type0->code () == TYPE_CODE_INTERNAL_FUNCTION) + { + c_print_type (type0, "", stream, show, level, + language_ada, flags); + return; + } + struct type *type = ada_check_typedef (ada_get_base_type (type0)); /* If we can decode the original type name, use it. However, there are cases where the original type is an internally-generated type diff --git a/gdb/testsuite/gdb.base/internal-functions-ptype.exp b/gdb/testsuite/gdb.base/internal-functions-ptype.exp index 42caae05aad..748f33a87cd 100644 --- a/gdb/testsuite/gdb.base/internal-functions-ptype.exp +++ b/gdb/testsuite/gdb.base/internal-functions-ptype.exp @@ -29,8 +29,6 @@ proc test_ptype_internal_function {} { if {$lang == "unknown"} { gdb_test "ptype \$_isvoid" \ "expression parsing not implemented for language \"Unknown\"" - } elseif {$lang == "ada"} { - gdb_test "ptype \$_isvoid" "<>" } else { gdb_test "ptype \$_isvoid" "" }