diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/ChangeLog | 8 | ||||
-rw-r--r-- | include/ctf-api.h | 20 |
2 files changed, 28 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index fb7bd88..e8e80f8 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 4cac635..ee68efe 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 *); |