From a297ccb52e0c894e8160c60319b71f5dedf28643 Mon Sep 17 00:00:00 2001 From: James Bowman Date: Tue, 7 Nov 2017 01:10:18 +0000 Subject: [PATCH] FT32 makes use of multiple address spaces. FT32 makes use of multiple address spaces. When trying to inspect objects in GDB, GDB was treating them as a straight "const". The cause seems to be in GCC DWARF2 output. This output is handled in gcc/gcc/dwarf2out.c, where modified_type_die() checks that TYPE has qualifiers CV_QUALS. However while TYPE has ADDR_SPACE qualifiers, the modified_type_die() explicitly discards the ADDR_SPACE qualifiers. This patch retains the ADDR_SPACE qualifiers as modified_type_die() outputs the DWARF type tree. This allows the types to match, and correct type information for the object is emitted. [gcc] 2017-11-06 James Bowman * gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE qualifiers. (add_type_attribute) likewise. From-SVN: r254484 --- gcc/ChangeLog | 6 ++++++ gcc/dwarf2out.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9353fd3586d..3690705de0d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-11-06 James Bowman + + * gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE + qualifiers. + (add_type_attribute) likewise. + 2017-11-06 H.J. Lu * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 734476750e8..f39699761b0 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -12481,7 +12481,8 @@ modified_type_die (tree type, int cv_quals, bool reverse, dw_die_ref mod_scope; /* Only these cv-qualifiers are currently handled. */ const int cv_qual_mask = (TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE - | TYPE_QUAL_RESTRICT | TYPE_QUAL_ATOMIC); + | TYPE_QUAL_RESTRICT | TYPE_QUAL_ATOMIC | + ENCODE_QUAL_ADDR_SPACE(~0U)); const bool reverse_base_type = need_endianity_attribute_p (reverse) && is_base_type (type); @@ -20708,7 +20709,7 @@ add_type_attribute (dw_die_ref object_die, tree type, int cv_quals, return; type_die = modified_type_die (type, - cv_quals | TYPE_QUALS_NO_ADDR_SPACE (type), + cv_quals | TYPE_QUALS (type), reverse, context_die); -- 2.30.2