aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ChangeLog8
-rw-r--r--include/ctf-api.h20
2 files changed, 28 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index fb7bd884aa4..e8e80f872fc 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,5 +1,13 @@
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
+ * ctf-api.h (struct bfd): New forward.
+ (ctf_fdopen): New.
+ (ctf_bfdopen): Likewise.
+ (ctf_open): Likewise.
+ (ctf_arc_open): Likewise.
+
+2019-05-28 Nick Alcock <nick.alcock@oracle.com>
+
* ctf.h (CTFA_MAGIC): New.
(struct ctf_archive): New.
(struct ctf_archive_modent): Likewise.
diff --git a/include/ctf-api.h b/include/ctf-api.h
index 4cac635e57e..ee68efefe37 100644
--- a/include/ctf-api.h
+++ b/include/ctf-api.h
@@ -45,6 +45,11 @@ typedef struct ctf_file ctf_file_t;
typedef struct ctf_archive_internal ctf_archive_t;
typedef long ctf_id_t;
+/* This opaque definition allows libctf to accept BFD data structures without
+ importing all the BFD noise into users' namespaces. */
+
+struct bfd;
+
/* If the debugger needs to provide the CTF library with a set of raw buffers
for use as the CTF data, symbol table, and string table, it can do so by
filling in ctf_sect_t structures and passing them to ctf_bufopen().
@@ -205,8 +210,23 @@ typedef int ctf_archive_member_f (ctf_file_t *fp, const char *name, void *arg);
typedef int ctf_archive_raw_member_f (const char *name, const void *content,
size_t len, void *arg);
+/* Opening. These mostly return an abstraction over both CTF files and CTF
+ archives: so they can be used to open both. CTF files will appear to be an
+ archive with one member named '.ctf'. The low-level functions
+ ctf_simple_open() and ctf_bufopen() return ctf_file_t's directly, and cannot
+ be used on CTF archives. */
+
+extern ctf_archive_t *ctf_bfdopen (struct bfd *, int *);
+extern ctf_archive_t *ctf_bfdopen_ctfsect (struct bfd *, const ctf_sect_t *,
+ int *);
+extern ctf_archive_t *ctf_fdopen (int fd, const char *filename,
+ const char *target, int *errp);
+extern ctf_archive_t *ctf_open (const char *filename,
+ const char *target, int *errp);
+extern void ctf_close (ctf_archive_t *);
extern ctf_sect_t ctf_getdatasect (const ctf_file_t *);
extern ctf_archive_t *ctf_get_arc (const ctf_file_t *);
+extern ctf_archive_t *ctf_arc_open (const char *, int *);
extern void ctf_arc_close (ctf_archive_t *);
extern ctf_file_t *ctf_arc_open_by_name (const ctf_archive_t *,
const char *, int *);