aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ada-lang.c13
-rw-r--r--gdb/ada-lang.h6
2 files changed, 12 insertions, 7 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index ffe3550..7623d0e 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -1304,7 +1304,7 @@ convert_from_hex_encoded (std::string &out, const char *str, int n)
/* See ada-lang.h. */
std::string
-ada_decode (const char *encoded, bool wrap)
+ada_decode (const char *encoded, bool wrap, bool operators)
{
int i;
int len0;
@@ -1399,7 +1399,7 @@ ada_decode (const char *encoded, bool wrap)
while (i < len0)
{
/* Is this a symbol function? */
- if (at_start_name && encoded[i] == 'O')
+ if (operators && at_start_name && encoded[i] == 'O')
{
int k;
@@ -1558,9 +1558,12 @@ ada_decode (const char *encoded, bool wrap)
/* Decoded names should never contain any uppercase character.
Double-check this, and abort the decoding if we find one. */
- for (i = 0; i < decoded.length(); ++i)
- if (isupper (decoded[i]) || decoded[i] == ' ')
- goto Suppress;
+ if (operators)
+ {
+ for (i = 0; i < decoded.length(); ++i)
+ if (isupper (decoded[i]) || decoded[i] == ' ')
+ goto Suppress;
+ }
/* If the compiler added a suffix, append it now. */
if (suffix >= 0)
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
index a6caf35..0dcdb56 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -218,8 +218,10 @@ extern const char *ada_decode_symbol (const struct general_symbol_info *);
the name does not appear to be GNAT-encoded, then the result
depends on WRAP. If WRAP is true (the default), then the result is
simply wrapped in <...>. If WRAP is false, then the empty string
- will be returned. */
-extern std::string ada_decode (const char *name, bool wrap = true);
+ will be returned. Also, when OPERATORS is false, operator names
+ will not be decoded. */
+extern std::string ada_decode (const char *name, bool wrap = true,
+ bool operators = true);
extern std::vector<struct block_symbol> ada_lookup_symbol_list
(const char *, const struct block *, domain_enum);