diff options
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r-- | gdb/ada-lang.c | 13 |
1 files changed, 8 insertions, 5 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) |