libctf: deduplicate and sort the string table
[deliverable/binutils-gdb.git] / libctf / ctf-dump.c
index 28f31e4872a07b44fec6cebcf2fbd0cef938f0fb..0e8ab202dd8240f1e3b3934dc9dcfd55c525af19 100644 (file)
@@ -88,7 +88,7 @@ ctf_is_slice (ctf_file_t *fp, ctf_id_t id, ctf_encoding_t *enc)
   return (((kind == CTF_K_INTEGER) || (kind == CTF_K_ENUM)
           || (kind == CTF_K_FLOAT))
          && ctf_type_reference (fp, id) != CTF_ERR
-         && ctf_type_encoding (fp, id, enc) != CTF_ERR);
+         && ctf_type_encoding (fp, id, enc) == 0);
 }
 
 /* Return a dump for a single type, without member info: but do show the
@@ -121,8 +121,9 @@ ctf_dump_format_type (ctf_file_t *fp, ctf_id_t id)
        }
       else
        {
-         if (asprintf (&bit, " %lx: %s (size %lx)", id, buf[0] == '\0' ?
-                       "(nameless)" : buf, ctf_type_size (fp, id)) < 0)
+         if (asprintf (&bit, " %lx: %s (size 0x%lx)", id, buf[0] == '\0' ?
+                       "(nameless)" : buf,
+                       (unsigned long) ctf_type_size (fp, id)) < 0)
            goto oom;
        }
       free (buf);
@@ -168,7 +169,7 @@ ctf_dump_label (const char *name, const ctf_lblinfo_t *info,
   if ((typestr = ctf_dump_format_type (state->cds_fp, info->ctb_type)) == NULL)
     {
       free (str);
-      return CTF_ERR;                  /* errno is set for us.  */
+      return -1;                       /* errno is set for us.  */
     }
 
   str = ctf_str_append (str, typestr);
@@ -194,14 +195,14 @@ ctf_dump_objts (ctf_file_t *fp, ctf_dump_state_t *state)
       const char *sym_name;
       ctf_id_t type;
 
-      if ((type = ctf_lookup_by_symbol (state->cds_fp, i)) < 0)
+      if ((type = ctf_lookup_by_symbol (state->cds_fp, i)) == CTF_ERR)
        switch (ctf_errno (state->cds_fp))
          {
            /* Most errors are just an indication that this symbol is not a data
               symbol, but this one indicates that we were called wrong, on a
               CTF file with no associated symbol table.  */
          case ECTF_NOSYMTAB:
-           return CTF_ERR;
+           return -1;
          case ECTF_NOTDATA:
          case ECTF_NOTYPEDAT:
            continue;
@@ -211,12 +212,12 @@ ctf_dump_objts (ctf_file_t *fp, ctf_dump_state_t *state)
       sym_name = ctf_lookup_symbol_name (fp, i);
       if (sym_name[0] == '\0')
        {
-         if (asprintf (&str, "%lx -> ", i) < 0)
+         if (asprintf (&str, "%lx -> ", (unsigned long) i) < 0)
            return (ctf_set_errno (fp, ENOMEM));
        }
       else
        {
-         if (asprintf (&str, "%s (%lx) -> ", sym_name, i) < 0)
+         if (asprintf (&str, "%s (%lx) -> ", sym_name, (unsigned long) i) < 0)
            return (ctf_set_errno (fp, ENOMEM));
        }
 
@@ -224,7 +225,7 @@ ctf_dump_objts (ctf_file_t *fp, ctf_dump_state_t *state)
       if ((typestr = ctf_dump_format_type (state->cds_fp, type)) == NULL)
        {
          free (str);
-         return CTF_ERR;               /* errno is set for us.  */
+         return -1;                    /* errno is set for us.  */
        }
 
       str = ctf_str_append (str, typestr);
@@ -253,14 +254,14 @@ ctf_dump_funcs (ctf_file_t *fp, ctf_dump_state_t *state)
       size_t j;
       ctf_id_t *args;
 
-      if ((type = ctf_func_info (state->cds_fp, i, &fi)) < 0)
+      if ((type = ctf_func_info (state->cds_fp, i, &fi)) == CTF_ERR)
        switch (ctf_errno (state->cds_fp))
          {
            /* Most errors are just an indication that this symbol is not a data
               symbol, but this one indicates that we were called wrong, on a
               CTF file with no associated symbol table.  */
          case ECTF_NOSYMTAB:
-           return CTF_ERR;
+           return -1;
          case ECTF_NOTDATA:
          case ECTF_NOTYPEDAT:
            continue;
@@ -273,23 +274,23 @@ ctf_dump_funcs (ctf_file_t *fp, ctf_dump_state_t *state)
        goto err;
 
       str = ctf_str_append (str, " ");
-      free (bit);
 
       /* Function name.  */
 
       sym_name = ctf_lookup_symbol_name (fp, i);
       if (sym_name[0] == '\0')
        {
-         if (asprintf (&bit, "%lx ", i) < 0)
+         if (asprintf (&bit, "0x%lx ", (unsigned long) i) < 0)
            goto oom;
        }
       else
        {
-         if (asprintf (&bit, "%s (%lx) ", sym_name, i) < 0)
+         if (asprintf (&bit, "%s (0x%lx) ", sym_name, (unsigned long) i) < 0)
            goto oom;
        }
       str = ctf_str_append (str, bit);
       str = ctf_str_append (str, " (");
+      free (bit);
 
       /* Function arguments.  */
 
@@ -321,7 +322,7 @@ ctf_dump_funcs (ctf_file_t *fp, ctf_dump_state_t *state)
     err:
       free (args);
       free (str);
-      return CTF_ERR;          /* errno is set for us.  */
+      return -1;               /* errno is set for us.  */
     }
   return 0;
 }
@@ -340,7 +341,7 @@ ctf_dump_var (const char *name, ctf_id_t type, void *arg)
   if ((typestr = ctf_dump_format_type (state->cds_fp, type)) == NULL)
     {
       free (str);
-      return CTF_ERR;                  /* errno is set for us.  */
+      return -1;                       /* errno is set for us.  */
     }
 
   str = ctf_str_append (str, typestr);
@@ -369,7 +370,7 @@ ctf_dump_member (const char *name, ctf_id_t id, unsigned long offset,
 
   if (asprintf (&bit, "    [0x%lx] (ID 0x%lx) (kind %i) %s %s (aligned at 0x%lx",
                offset, id, ctf_type_kind (state->cdm_fp, id), typestr, name,
-               ctf_type_align (state->cdm_fp, id)) < 0)
+               (unsigned long) ctf_type_align (state->cdm_fp, id)) < 0)
     goto oom;
   *state->cdm_str = ctf_str_append (*state->cdm_str, bit);
   free (typestr);
@@ -426,7 +427,7 @@ ctf_dump_type (ctf_id_t id, void *arg)
 
  err:
   free (str);
-  return CTF_ERR;                      /* errno is set for us.  */
+  return -1;                           /* errno is set for us.  */
 }
 
 /* Dump the string table into the cds_items.  */
@@ -440,7 +441,8 @@ ctf_dump_str (ctf_file_t *fp, ctf_dump_state_t *state)
         fp->ctf_str[CTF_STRTAB_0].cts_len;)
     {
       char *str;
-      if (asprintf (&str, "%lx: %s", s - fp->ctf_str[CTF_STRTAB_0].cts_strs,
+      if (asprintf (&str, "%lx: %s",
+                   (unsigned long) (s - fp->ctf_str[CTF_STRTAB_0].cts_strs),
                    s) < 0)
        return (ctf_set_errno (fp, ENOMEM));
       ctf_dump_append (state, str);
This page took 0.027944 seconds and 4 git commands to generate.