summaryrefslogtreecommitdiff
path: root/libcpu/i386_disasm.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2008-01-12 07:15:51 +0000
committerUlrich Drepper <drepper@redhat.com>2008-01-12 07:15:51 +0000
commitebe0fcef1bbc8327d99b435ea346bba5858fd3bd (patch)
tree3ae58edc80dd78b82f2a7083c929fab4a9c66771 /libcpu/i386_disasm.c
parentfd47989094090138b0c857d067ac7ff05e7b6d91 (diff)
downloadelfutils-ebe0fcef1bbc8327d99b435ea346bba5858fd3bd.tar.gz
Minimal use of symbol callback functions.
Diffstat (limited to 'libcpu/i386_disasm.c')
-rw-r--r--libcpu/i386_disasm.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c
index 57a870f1..f8a06cc4 100644
--- a/libcpu/i386_disasm.c
+++ b/libcpu/i386_disasm.c
@@ -197,8 +197,6 @@ struct output_data
const uint8_t *data;
const uint8_t **param_start;
const uint8_t *end;
- DisasmGetSymCB_t symcb;
- void *symcbarg;
char *labelbuf;
size_t labelbufsize;
enum
@@ -237,7 +235,6 @@ struct output_data
} while (0)
-#include <stdio.h>
int
i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr,
const char *fmt, DisasmOutputCB_t outcb, DisasmGetSymCB_t symcb,
@@ -260,9 +257,7 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr,
.bufsize = bufsize,
.bufcntp = &bufcnt,
.param_start = &param_start,
- .end = end,
- .symcb = symcb,
- .symcbarg = symcbarg
+ .end = end
};
int retval = 0;
@@ -840,11 +835,17 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr,
// XXX Lookup symbol based on symaddr
const char *symstr = NULL;
+ if (symcb != NULL
+ && symcb (0 /* XXX */, 0 /* XXX */, symaddr,
+ &output_data.labelbuf,
+ &output_data.labelbufsize, symcbarg) == 0)
+ symstr = output_data.labelbuf;
size_t bufavail = bufsize - bufcnt;
int r = 0;
if (symstr != NULL)
- r = snprintf (&buf[bufcnt], bufavail, "# %s", symstr);
+ r = snprintf (&buf[bufcnt], bufavail, "# <%s>",
+ symstr);
else if (output_data.symaddr_use == addr_abs_always
|| output_data.symaddr_use == addr_rel_always)
r = snprintf (&buf[bufcnt], bufavail, "# %#" PRIx64,