This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Bug 20928 - Decode %ccr into individual flags in sparcv9 register output
On 6.12.2016 03:03, Luis Machado wrote:
On 12/05/2016 05:45 PM, Ivo Raisr wrote:
ChangeLog entry:
2016-12-05 Ivo Raisr <ivo.raisr@oracle.com>
PR tdep/20928
Decode %ccr into individual flags in sparcv9 register output.
* sparc-tdep.h: Declare %ccr type.
* sparc64-tdep.c: Decode %ccr. Fix %fsr decoding.
You need to mention the new sparc64_ccr_type field and the new
function in the ChangeLog. Also, you need to add the function where
you fixed the fsr decoding.
Here is the fixed ChangeLog entry (and attached new version of patch):
2016-12-05 Ivo Raisr <ivo.raisr@oracle.com>
PR tdep/20928
Decode %ccr into individual flags in sparcv9 register output.
* sparc-tdep.h: Declare sparc64_ccr_type.
* sparc64-tdep.c: Decode %ccr in a new function sparc64_ccr_type().
Fix %fsr decoding in sparc64_fsr_type().
diff -upr a/ChangeLog b/ChangeLog
--- a/ChangeLog 2016-02-24 01:55:15.000000000 +0000
+++ b/ChangeLog 2016-12-05 15:38:46.962931312 +0000
@@ -1,3 +1,11 @@
+2016-12-05 Ivo Raisr <ivo.raisr@oracle.com>
+
+ PR tdep/20928
+ Decode %ccr into individual flags in sparcv9 register output.
+ * sparc-tdep.h: Declare sparc64_ccr_type.
+ * sparc64-tdep.c: Decode %ccr in a new function sparc64_ccr_type().
+ Fix %fsr decoding in sparc64_fsr_type().
+
2016-01-12 H.J. Lu <hongjiu.lu@intel.com>
Sync with GCC
diff -upr a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h
--- a/gdb/sparc-tdep.h 2016-02-09 19:19:39.000000000 +0000
+++ b/gdb/sparc-tdep.h 2016-12-05 15:25:55.187764842 +0000
@@ -76,6 +76,7 @@ struct gdbarch_tdep
/* ISA-specific data types. */
struct type *sparc_psr_type;
struct type *sparc_fsr_type;
+ struct type *sparc64_ccr_type;
struct type *sparc64_pstate_type;
struct type *sparc64_fsr_type;
struct type *sparc64_fprs_type;
diff -upr a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c
--- a/gdb/sparc64-tdep.c 2016-02-09 19:19:39.000000000 +0000
+++ b/gdb/sparc64-tdep.c 2016-12-05 15:26:04.242830444 +0000
@@ -172,6 +172,31 @@ sparc64_pstate_type (struct gdbarch *gdb
}
static struct type *
+sparc64_ccr_type (struct gdbarch *gdbarch)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+ if (tdep->sparc64_ccr_type == NULL)
+ {
+ struct type *type;
+
+ type = arch_flags_type (gdbarch, "builtin_type_sparc64_ccr", 8);
+ append_flags_type_flag (type, 0, "icc.c");
+ append_flags_type_flag (type, 1, "icc.v");
+ append_flags_type_flag (type, 2, "icc.z");
+ append_flags_type_flag (type, 3, "icc.n");
+ append_flags_type_flag (type, 4, "xcc.c");
+ append_flags_type_flag (type, 5, "xcc.v");
+ append_flags_type_flag (type, 6, "xcc.z");
+ append_flags_type_flag (type, 7, "xcc.n");
+
+ tdep->sparc64_ccr_type = type;
+ }
+
+ return tdep->sparc64_ccr_type;
+}
+
+static struct type *
sparc64_fsr_type (struct gdbarch *gdbarch)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
@@ -181,16 +206,16 @@ sparc64_fsr_type (struct gdbarch *gdbarc
struct type *type;
type = arch_flags_type (gdbarch, "builtin_type_sparc64_fsr", 8);
- append_flags_type_flag (type, 0, "NXA");
- append_flags_type_flag (type, 1, "DZA");
- append_flags_type_flag (type, 2, "UFA");
- append_flags_type_flag (type, 3, "OFA");
- append_flags_type_flag (type, 4, "NVA");
- append_flags_type_flag (type, 5, "NXC");
- append_flags_type_flag (type, 6, "DZC");
- append_flags_type_flag (type, 7, "UFC");
- append_flags_type_flag (type, 8, "OFC");
- append_flags_type_flag (type, 9, "NVC");
+ append_flags_type_flag (type, 0, "NXC");
+ append_flags_type_flag (type, 1, "DZC");
+ append_flags_type_flag (type, 2, "UFC");
+ append_flags_type_flag (type, 3, "OFC");
+ append_flags_type_flag (type, 4, "NVC");
+ append_flags_type_flag (type, 5, "NXA");
+ append_flags_type_flag (type, 6, "DZA");
+ append_flags_type_flag (type, 7, "UFA");
+ append_flags_type_flag (type, 8, "OFA");
+ append_flags_type_flag (type, 9, "NVA");
append_flags_type_flag (type, 22, "NS");
append_flags_type_flag (type, 23, "NXM");
append_flags_type_flag (type, 24, "DZM");
@@ -327,7 +352,7 @@ sparc64_register_type (struct gdbarch *g
if (regnum == SPARC64_ASI_REGNUM)
return builtin_type (gdbarch)->builtin_int64;
if (regnum == SPARC64_CCR_REGNUM)
- return builtin_type (gdbarch)->builtin_int64;
+ return sparc64_ccr_type (gdbarch);
if (regnum >= SPARC64_D0_REGNUM && regnum <= SPARC64_D62_REGNUM)
return builtin_type (gdbarch)->builtin_double;
if (regnum >= SPARC64_Q0_REGNUM && regnum <= SPARC64_Q60_REGNUM)