gprofng: fprintf_styled_func not inizialized for disassembler
authorVladimir Mezentsev <vladimir.mezentsev@oracle.com>
Thu, 7 Apr 2022 07:15:55 +0000 (00:15 -0700)
committerVladimir Mezentsev <vladimir.mezentsev@oracle.com>
Fri, 8 Apr 2022 16:05:37 +0000 (09:05 -0700)
gprofng/ChangeLog
2022-04-07  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>

* libcollector/unwind.c: inizialize fprintf_styled_func.
* src/Disasm.cc: Likewise.

gprofng/libcollector/unwind.c
gprofng/src/Disasm.cc

index ffb06f938f387900f2741f710588928e75f0876c..f309c54bd335f1ef0624fddff43d7742edbaaa7f 100644 (file)
@@ -120,6 +120,14 @@ fprintf_func (void *arg ATTRIBUTE_UNUSED, const char *fmt ATTRIBUTE_UNUSED, ...)
   return 0;
 }
 
+static int
+fprintf_styled_func (void *arg ATTRIBUTE_UNUSED,
+                     enum disassembler_style st ATTRIBUTE_UNUSED,
+                     const char *fmt ATTRIBUTE_UNUSED, ...)
+{
+  return 0;
+}
+
 /* Get LENGTH bytes from info's buffer, at target address memaddr.
    Transfer them to myaddr.  */
 static int
@@ -4347,6 +4355,7 @@ parse_x86_AVX_instruction (unsigned char *pc)
   dis_info.octets_per_byte = 1;
   dis_info.disassembler_needs_relocs = FALSE;
   dis_info.fprintf_func = fprintf_func;
+  dis_info.fprintf_styled_func = fprintf_styled_func;
   dis_info.stream = NULL;
   dis_info.disassembler_options = NULL;
   dis_info.read_memory_func = read_memory_func;
index 0fec9c3c76a19ccf31166938a8efc16994201409..a5cca13950f2bf387eb7bdff1a195c4b8bc819a3 100644 (file)
@@ -88,6 +88,21 @@ fprintf_func (void *arg, const char *fmt, ...)
   return cnt;
 }
 
+static int
+fprintf_styled_func (void *arg, enum disassembler_style st ATTRIBUTE_UNUSED,
+                     const char *fmt, ...)
+{
+  char buf[512];
+  va_list vp;
+  va_start (vp, fmt);
+  int cnt = vsnprintf (buf, sizeof (buf), fmt, vp);
+  va_end (vp);
+
+  Disasm *dis = (Disasm *) arg;
+  dis->dis_str->append (buf);
+  return cnt;
+}
+
 /* Get LENGTH bytes from info's buffer, at target address memaddr.
    Transfer them to myaddr.  */
 static int
@@ -165,6 +180,7 @@ Disasm::disasm_open ()
   dis_info.octets_per_byte = 1;
   dis_info.disassembler_needs_relocs = FALSE;
   dis_info.fprintf_func = fprintf_func;
+  dis_info.fprintf_styled_func = fprintf_styled_func;
   dis_info.stream = this;
   dis_info.disassembler_options = NULL;
   dis_info.read_memory_func = read_memory_func;