[binutils-gdb] Remove backup ppc struct dis_private.

Alan Modra amodra@sourceware.org
Mon Dec 9 23:13:00 GMT 2019


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

commit 6f0e0752309e3e3016a48db1672e3092c677020c
Author: Alan Modra <amodra@gmail.com>
Date:   Mon Dec 9 22:57:15 2019 +1030

    Remove backup ppc struct dis_private.
    
    ppc-dis.c used a global struct whenever malloc failed to provide the
    eight bytes of memory necessary for struct dis_private.  Which is
    quite ridiculous.  If that malloc failed there is zero chance some
    other malloc won't fail too.
    
    	* ppc-dis.c (private): Delete variable.
    	(get_powerpc_dialect): Don't segfault on NULL info->private_data.
    	(powerpc_init_dialect): Don't use global private.

Diff:
---
 opcodes/ChangeLog | 6 ++++++
 opcodes/ppc-dis.c | 7 ++++---
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index a82f261..4d8dfe1 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,11 @@
 2019-12-10  Alan Modra  <amodra@gmail.com>
 
+	* ppc-dis.c (private): Delete variable.
+	(get_powerpc_dialect): Don't segfault on NULL info->private_data.
+	(powerpc_init_dialect): Don't use global private.
+
+2019-12-10  Alan Modra  <amodra@gmail.com>
+
 	* s12z-opc.c: Formatting.
 
 2019-12-08  Alan Modra  <amodra@gmail.com>
diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c
index 2f5756b..9add602 100644
--- a/opcodes/ppc-dis.c
+++ b/opcodes/ppc-dis.c
@@ -40,7 +40,7 @@ struct dis_private
 {
   /* Stash the result of parsing disassembler_options here.  */
   ppc_cpu_t dialect;
-} private;
+};
 
 #define POWERPC_DIALECT(INFO) \
   (((struct dis_private *) ((INFO)->private_data))->dialect)
@@ -259,7 +259,8 @@ get_powerpc_dialect (struct disassemble_info *info)
 {
   ppc_cpu_t dialect = 0;
 
-  dialect = POWERPC_DIALECT (info);
+  if (info->private_data)
+    dialect = POWERPC_DIALECT (info);
 
   /* Disassemble according to the section headers flags for VLE-mode.  */
   if (dialect & PPC_OPCODE_VLE
@@ -308,7 +309,7 @@ powerpc_init_dialect (struct disassemble_info *info)
   struct dis_private *priv = calloc (sizeof (*priv), 1);
 
   if (priv == NULL)
-    priv = &private;
+    return;
 
   switch (info->mach)
     {



More information about the Binutils-cvs mailing list