aboutsummaryrefslogtreecommitdiff
path: root/intl
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2022-01-25 11:26:15 -0700
committerTom Tromey <tromey@adacore.com>2022-02-28 10:49:29 -0700
commita7041de85a0cc43b86989eb697cef7a6cecdbdb7 (patch)
tree0e59babe7b0a46de2d60f82c2dc96d840754de71 /intl
parent659971cb0f8fd749aa951221d99de2868a860d07 (diff)
downloadfsf-binutils-gdb-a7041de85a0cc43b86989eb697cef7a6cecdbdb7.zip
fsf-binutils-gdb-a7041de85a0cc43b86989eb697cef7a6cecdbdb7.tar.gz
fsf-binutils-gdb-a7041de85a0cc43b86989eb697cef7a6cecdbdb7.tar.bz2
Handle 'QWW' encoding case in Ada enums
In Ada, an enum can contain character literals. GNAT encodes these values in a special way. For example, the Unicode character U+0178 would be represented as 'QW0178' in the DWARF: <3><112f>: Abbrev Number: 2 (DW_TAG_enumerator) <1130> DW_AT_name : (indirect string, offset: 0x19ff): QW0178 <1134> DW_AT_const_value : 2 gdb handles this reasonably well, but failed to handle the 'QWW' encoding, which is used for characters outside the base plane. Also, while working on this, I noticed that gdb will print the decimal value for an enum character constant: (gdb) print Char_X $2 = 1 'x' This is a nice feature, IMO, because in this situation the 'x' enum constant does not have its usual decimal value -- it has the value that's assigned based on the enumeration type. However, gdb did not do this when it decided to print the constant using the bracket notation: (gdb) print Char_Thorn $3 = ["de"] This patch changes gdb to print the decimal value here as well, and to put the bracket notation in single quotes -- otherwise gdb will be printing something that it can't then read. Now it looks like: (gdb) print Char_Thorn $3 = 4 '["de"]' Note that gdb can't read longer bracket notations, like the other ones printed in this test case: (gdb) print Char_King $4 = 3 '["01fa00"]' While I think this is a bug, I plan to fix it separately. Finally, in the new test case, the copyright dates are chosen this way because this all started as a copy of an existing test.
Diffstat (limited to 'intl')
0 files changed, 0 insertions, 0 deletions