aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@adacore.com>2015-10-09 14:14:43 -0700
committerJoel Brobecker <brobecker@adacore.com>2015-10-09 14:32:23 -0700
commit220475ed8b0c1ef7b4eabf64bcc723e14fd78209 (patch)
treea435a257c733ca27a35aacbe17a01e543931505a /gdb
parentd0a9e8108942ebeb68d9b0b39bebb37369e0f701 (diff)
downloadgdb-220475ed8b0c1ef7b4eabf64bcc723e14fd78209.zip
gdb-220475ed8b0c1ef7b4eabf64bcc723e14fd78209.tar.gz
gdb-220475ed8b0c1ef7b4eabf64bcc723e14fd78209.tar.bz2
make is_scalar_type non-static and use it in ada-lang.c
Just a small cleanup, to avoid code duplication... gdb/ChangeLog: * gdbtypes.h (is_scalar_type): Add extern declaration. * gdbtypes.c (is_scalar_type): Make non-static. * ada-lang.c (ada_value_primitive_packed_val): Use is_scalar_type to compute IS_SCALAR instead of doing it ourselves.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/ada-lang.c14
-rw-r--r--gdb/gdbtypes.c2
-rw-r--r--gdb/gdbtypes.h2
4 files changed, 11 insertions, 14 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 06a0637..9787afe 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2015-10-09 Joel Brobecker <brobecker@adacore.com>
+ * gdbtypes.h (is_scalar_type): Add extern declaration.
+ * gdbtypes.c (is_scalar_type): Make non-static.
+ * ada-lang.c (ada_value_primitive_packed_val): Use is_scalar_type
+ to compute IS_SCALAR instead of doing it ourselves.
+
+2015-10-09 Joel Brobecker <brobecker@adacore.com>
+
* ada-lang.c (ada_value_primitive_packed_val): Rework handling
of case where TYPE is dynamic.
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 2b2c47c..d9bbed9 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -2519,7 +2519,7 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
gdb_byte *src; /* First byte containing data to unpack */
int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
gdb_byte *unpacked;
- int is_scalar;
+ const int is_scalar = is_scalar_type (type);
const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
gdb_byte *staging = NULL;
int staging_len = 0;
@@ -2527,18 +2527,6 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
type = ada_check_typedef (type);
- switch (TYPE_CODE (type))
- {
- case TYPE_CODE_ARRAY:
- case TYPE_CODE_UNION:
- case TYPE_CODE_STRUCT:
- is_scalar = 0;
- break;
- default:
- is_scalar = 1;
- break;
- }
-
if (obj == NULL)
src = (gdb_byte *) valaddr + offset;
else
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index b406550..919cac9 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -2717,7 +2717,7 @@ is_integral_type (struct type *t)
/* Return true if TYPE is scalar. */
-static int
+int
is_scalar_type (struct type *type)
{
type = check_typedef (type);
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 9c64569..0828723 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -1912,6 +1912,8 @@ extern int can_dereference (struct type *);
extern int is_integral_type (struct type *);
+extern int is_scalar_type (struct type *type);
+
extern int is_scalar_type_recursive (struct type *);
extern int class_or_union_p (const struct type *);