libctf: introduce ctf_func_type_{info,args}, ctf_type_aname_raw
[external/binutils.git] / include / ctf-api.h
index 822b3bf..1a0d47e 100644 (file)
@@ -43,7 +43,7 @@ extern "C"
 
 typedef struct ctf_file ctf_file_t;
 typedef struct ctf_archive_internal ctf_archive_t;
-typedef long ctf_id_t;
+typedef unsigned long ctf_id_t;
 
 /* This opaque definition allows libctf to accept BFD data structures without
    importing all the BFD noise into users' namespaces.  */
@@ -60,12 +60,9 @@ struct bfd;
 typedef struct ctf_sect
 {
   const char *cts_name;                  /* Section name (if any).  */
-  unsigned long cts_type;        /* Section type (ELF SHT_... value).  */
-  unsigned long cts_flags;       /* Section flags (ELF SHF_... value).  */
   const void *cts_data;                  /* Pointer to section data.  */
   size_t cts_size;               /* Size of data in bytes.  */
   size_t cts_entsize;            /* Size of each section entry (symtab only).  */
-  off64_t cts_offset;            /* File offset of this section (if any).  */
 } ctf_sect_t;
 
 /* Symbolic names for CTF sections.  */
@@ -125,9 +122,10 @@ typedef struct ctf_snapshot_id
 
 #define        CTF_FUNC_VARARG 0x1     /* Function arguments end with varargs.  */
 
-/* Functions that return integer status or a ctf_id_t use the following value
-   to indicate failure.  ctf_errno() can be used to obtain an error code.  */
-#define        CTF_ERR (-1L)
+/* Functions that return a ctf_id_t use the following value to indicate failure.
+   ctf_errno() can be used to obtain an error code.  Functions that return
+   a straight integral -1 also use ctf_errno().  */
+#define        CTF_ERR ((ctf_id_t) -1L)
 
 #define        ECTF_BASE       1000    /* Base value for libctf errnos.  */
 
@@ -162,7 +160,7 @@ enum
    ECTF_NAMELEN,               /* Buffer is too small to hold type name.  */
    ECTF_NOTYPE,                        /* No type found corresponding to name.  */
    ECTF_SYNTAX,                        /* Syntax error in type name.  */
-   ECTF_NOTFUNC,               /* Symtab entry does not refer to a function.  */
+   ECTF_NOTFUNC,               /* Symbol entry or type is not a function.  */
    ECTF_NOFUNCDAT,             /* No func info available for function.  */
    ECTF_NOTDATA,               /* Symtab entry does not refer to a data obj.  */
    ECTF_NOTYPEDAT,             /* No type info available for object.  */
@@ -279,6 +277,8 @@ extern int ctf_version (int);
 
 extern int ctf_func_info (ctf_file_t *, unsigned long, ctf_funcinfo_t *);
 extern int ctf_func_args (ctf_file_t *, unsigned long, uint32_t, ctf_id_t *);
+extern int ctf_func_type_info (ctf_file_t *, ctf_id_t, ctf_funcinfo_t *);
+extern int ctf_func_type_args (ctf_file_t *, ctf_id_t, uint32_t, ctf_id_t *);
 
 extern ctf_id_t ctf_lookup_by_name (ctf_file_t *, const char *);
 extern ctf_id_t ctf_lookup_by_symbol (ctf_file_t *, unsigned long);
@@ -286,6 +286,7 @@ extern ctf_id_t ctf_lookup_variable (ctf_file_t *, const char *);
 
 extern ctf_id_t ctf_type_resolve (ctf_file_t *, ctf_id_t);
 extern char *ctf_type_aname (ctf_file_t *, ctf_id_t);
+extern char *ctf_type_aname_raw (ctf_file_t *, ctf_id_t);
 extern ssize_t ctf_type_lname (ctf_file_t *, ctf_id_t, char *, size_t);
 extern char *ctf_type_name (ctf_file_t *, ctf_id_t, char *, size_t);
 extern ssize_t ctf_type_size (ctf_file_t *, ctf_id_t);