aboutsummaryrefslogtreecommitdiff
path: root/gas/config/te-lynx.h
diff options
context:
space:
mode:
authorFelix Willgerodt <felix.willgerodt@intel.com>2021-04-20 08:44:17 +0200
committerFelix Willgerodt <felix.willgerodt@intel.com>2021-04-20 08:44:17 +0200
commit184dcd81c7972c3fd3557ec4a04064529ee3ca8d (patch)
treefd8ff7933eddff55fed0a32f39347a1971fddb07 /gas/config/te-lynx.h
parent525174e886044ce3538b13545939421032f77a1b (diff)
downloadgdb-184dcd81c7972c3fd3557ec4a04064529ee3ca8d.zip
gdb-184dcd81c7972c3fd3557ec4a04064529ee3ca8d.tar.gz
gdb-184dcd81c7972c3fd3557ec4a04064529ee3ca8d.tar.bz2
gdb: Fix reduce/reduce conflicts for qualifier_seq_noopt in the C parser.
This fixes a problem with GDB's address space qualifier parsing. GDB uses '@' as a way to express an address space in expression evaluation. This can currently lead to a crash for "Add support for the __flash qualifier on AVR" (487d975399dfcb2bb2f0998a7d12bd62acdd9fa1), the only user I am aware of. Program: ~~~ const __flash char data_in_flash = 0xab; int main (void) { const __flash char *pointer_to_flash = &data_in_flash; } ~~~ Before: ~~~ (gdb) p data_in_flash $1 = -85 '\253' (gdb) p *(const char * @flash) pointer_to_flash $2 = -85 '\253' (gdb) p *(@flash const char *) pointer_to_flash type-stack.c:201: internal-error: type* type_stack::follow_types(type*): unrecognized tp_ value in follow_types A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) ~~~ After: ~~~ (gdb) p data_in_flash $1 = -85 '\253' (gdb) p *(const char *) pointer_to_flash $2 = 0 '\000' (gdb) p *(const char * @flash) pointer_to_flash $3 = -85 '\253' (gdb) p *(@flash const char *) pointer_to_flash $4 = 0 '\000' (gdb) ~~~ Note that how the binding of this qualifier is interpreted and resolved for an address/pointer is target specific. Hence only the prepended qualifier works for AVR, even if it seems syntactically incorrect. I won't change this for AVR, as I am not familiar with that target. Bison now also complains about less conflicts: Before: YACC c-exp.c gdb/gdb/c-exp.y: warning: 153 shift/reduce conflicts [-Wconflicts-sr] gdb/gdb/c-exp.y: warning: 70 reduce/reduce conflicts [-Wconflicts-rr] After: YACC c-exp.c gdb/gdb/c-exp.y: warning: 60 shift/reduce conflicts [-Wconflicts-sr] gdb/gdb/c-exp.y: warning: 69 reduce/reduce conflicts [-Wconflicts-rr] gdb/ChangeLog: 2021-04-20 Felix Willgerodt <felix.willgerodt@intel.com> * c-exp.y (qualifier_seq_noopt): Replace qualifier_seq with qualifier_seq_noopt.
Diffstat (limited to 'gas/config/te-lynx.h')
0 files changed, 0 insertions, 0 deletions