mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 09:14:14 +08:00
Allow ada_decode not to decode operators
The new DWARF scanner records names as they appear in DWARF. However, because Ada is unusual, it also decodes the Ada names to synthesize package components for them. In order for this to work out properly, gdb also needs a mode where ada_decode can be instructed not to decode Ada operator names. That is what this patch implements.
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user