This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Remove TYPE_NOSIGN "char" hack


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c413c44801e449f1f0b9828b81770e752b8219af

commit c413c44801e449f1f0b9828b81770e752b8219af
Author: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Date:   Tue Sep 6 17:30:13 2016 +0200

    Remove TYPE_NOSIGN "char" hack
    
    init_type (and arch_integer_type) currently use a special hack to set the
    TYPE_NOSIGN flag if the type name is exactly "char".  This commit moves the
    hack up to the callers of those routines.
    
    The special case currently can hit only for types created from dwarf2read,
    but read_base_type actually implements the "char" check itself, so it is
    redundant to do it in init_type as well.  (Note that stabsread.c and the
    other type readers always pass NULL as name to init_type, so the special
    case can never hit for those.)
    
    A few other cases create pre-definded types with a hard-coded name of "char";
    the commit simply moves setting the TYPE_NOSIGN flag to those places.
    
    No functional change intended.
    
    gdb/ChangeLog:
    
    	* gdbtypes.c (init_type): Remove "char" special case.
    	(arch_integer_type): Likewise.
    	(gdbtypes_post_init): Set TYPE_NOSIGN for "char" type.
    	(objfile_type): Likewise.
    	* mdebugread.c (basic_type): Likewise.
    	* stabsread.c (rs6000_builtin_type): Likewise.
    
    Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>

Diff:
---
 gdb/ChangeLog    | 9 +++++++++
 gdb/gdbtypes.c   | 9 ++-------
 gdb/mdebugread.c | 1 +
 gdb/stabsread.c  | 1 +
 4 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1fe30fd..5db0f66 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
 2016-09-05  Ulrich Weigand  <uweigand@de.ibm.com>
 
+	* gdbtypes.c (init_type): Remove "char" special case.
+	(arch_integer_type): Likewise.
+	(gdbtypes_post_init): Set TYPE_NOSIGN for "char" type.
+	(objfile_type): Likewise.
+	* mdebugread.c (basic_type): Likewise.
+	* stabsread.c (rs6000_builtin_type): Likewise.
+
+2016-09-05  Ulrich Weigand  <uweigand@de.ibm.com>
+
 	* gdbtypes.h (enum type_flag_value): Remove.
 	Remove references to TYPE_FLAG_... in comments throughout.
 	* gdbtypes.c (recursive_dump_type): Do not print TYPE_FLAG_... 
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index ab853d7..b7b638e 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -2748,11 +2748,6 @@ init_type (struct objfile *objfile, enum type_code code, int length,
   TYPE_LENGTH (type) = length;
   TYPE_NAME (type) = name;
 
-  /* C++ fancies.  */
-
-  if (name && strcmp (name, "char") == 0)
-    TYPE_NOSIGN (type) = 1;
-
   return type;
 }
 
@@ -4780,8 +4775,6 @@ arch_integer_type (struct gdbarch *gdbarch,
   t = arch_type (gdbarch, TYPE_CODE_INT, bit / TARGET_CHAR_BIT, name);
   if (unsigned_p)
     TYPE_UNSIGNED (t) = 1;
-  if (name && strcmp (name, "char") == 0)
-    TYPE_NOSIGN (t) = 1;
 
   return t;
 }
@@ -5046,6 +5039,7 @@ gdbtypes_post_init (struct gdbarch *gdbarch)
   builtin_type->builtin_char
     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
 			 !gdbarch_char_signed (gdbarch), "char");
+  TYPE_NOSIGN (builtin_type->builtin_char) = 1;
   builtin_type->builtin_signed_char
     = arch_integer_type (gdbarch, TARGET_CHAR_BIT,
 			 0, "signed char");
@@ -5193,6 +5187,7 @@ objfile_type (struct objfile *objfile)
   objfile_type->builtin_char
     = init_integer_type (objfile, TARGET_CHAR_BIT,
 			 !gdbarch_char_signed (gdbarch), "char");
+  TYPE_NOSIGN (objfile_type->builtin_char) = 1;
   objfile_type->builtin_signed_char
     = init_integer_type (objfile, TARGET_CHAR_BIT,
 			 0, "signed char");
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index f5aa33e..336609a 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -1408,6 +1408,7 @@ basic_type (int bt, struct objfile *objfile)
 
     case btChar:
       tp = init_integer_type (objfile, 8, 0, "char");
+      TYPE_NOSIGN (tp) = 1;
       break;
 
     case btUChar:
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index d929fe4..6a4734c 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -2102,6 +2102,7 @@ rs6000_builtin_type (int typenum, struct objfile *objfile)
       break;
     case 2:
       rettype = init_integer_type (objfile, 8, 0, "char");
+      TYPE_NOSIGN (rettype) = 1;
       break;
     case 3:
       rettype = init_integer_type (objfile, 16, 0, "short");


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]