From 4cc81497afe989623dca1b45f3ae950dffb92021 Mon Sep 17 00:00:00 2001 From: Daniel Beer <daniel@tortek.co.nz> Date: Fri, 13 Aug 2010 12:12:50 +1200 Subject: [PATCH] Create default stab to avoid carrying around stab_t. --- cproc.c | 17 ++++------------- cproc.h | 4 +--- cproc_util.c | 19 +++++++++---------- devcmd.c | 32 ++++++++++++-------------------- main.c | 33 +++++++++++++-------------------- rtools.c | 34 +++++++++++++++++----------------- stab.c | 2 ++ stab.h | 2 ++ sym.c | 42 +++++++++++++++++------------------------- 9 files changed, 77 insertions(+), 108 deletions(-) diff --git a/cproc.c b/cproc.c index 946e95a..561bfeb 100644 --- a/cproc.c +++ b/cproc.c @@ -43,7 +43,6 @@ struct cproc { int in_reader_loop; device_t device; - stab_t stab; }; static struct cproc_option *find_option(cproc_t cp, const char *name) @@ -199,8 +198,7 @@ static int cmd_help(cproc_t cp, char **arg) return 0; } -static int parse_option(stab_t stab, - struct cproc_option *o, const char *word) +static int parse_option(struct cproc_option *o, const char *word) { switch (o->type) { case CPROC_OPTION_BOOL: @@ -210,7 +208,7 @@ static int parse_option(stab_t stab, break; case CPROC_OPTION_NUMERIC: - return expr_eval(stab, word, &o->data.numeric); + return expr_eval(stab_default, word, &o->data.numeric); case CPROC_OPTION_STRING: strncpy(o->data.text, word, sizeof(o->data.text)); @@ -260,7 +258,7 @@ static int cmd_opt(cproc_t cp, char **arg) } if (**arg) { - if (parse_option(cp->stab, opt, *arg) < 0) { + if (parse_option(opt, *arg) < 0) { fprintf(stderr, "opt: can't parse option: %s\n", *arg); return -1; @@ -324,7 +322,7 @@ static const struct cproc_option built_in_options[] = { } }; -cproc_t cproc_new(device_t dev, stab_t st) +cproc_t cproc_new(device_t dev) { cproc_t cp = malloc(sizeof(*cp)); @@ -334,7 +332,6 @@ cproc_t cproc_new(device_t dev, stab_t st) memset(cp, 0, sizeof(*cp)); cp->device = dev; - cp->stab = st; vector_init(&cp->command_list, sizeof(struct cproc_command)); vector_init(&cp->option_list, sizeof(struct cproc_option)); @@ -357,7 +354,6 @@ void cproc_destroy(cproc_t cp) cp->device->destroy(cp->device); vector_destroy(&cp->command_list); vector_destroy(&cp->option_list); - stab_destroy(cp->stab); free(cp); } @@ -366,11 +362,6 @@ device_t cproc_device(cproc_t cp) return cp->device; } -stab_t cproc_stab(cproc_t cp) -{ - return cp->stab; -} - int cproc_register_commands(cproc_t cp, const struct cproc_command *cmd, int count) { diff --git a/cproc.h b/cproc.h index 7623974..7bff3f7 100644 --- a/cproc.h +++ b/cproc.h @@ -20,7 +20,6 @@ #define CPROC_H_ #include "device.h" -#include "stab.h" /* Command processor. * @@ -90,12 +89,11 @@ struct cproc_option { * has been given. When you destroy a command processor, the device is * also destroyed. */ -cproc_t cproc_new(device_t dev, stab_t st); +cproc_t cproc_new(device_t dev); void cproc_destroy(cproc_t cp); /* Fetch the command processor's device and symbol table */ device_t cproc_device(cproc_t cp); -stab_t cproc_stab(cproc_t cp); /* Register commands and options with the command processor. These functions * return 0 on success or -1 if an error occurs (failure to allocate memory). diff --git a/cproc_util.c b/cproc_util.c index 3f9fb44..f929832 100644 --- a/cproc_util.c +++ b/cproc_util.c @@ -24,7 +24,7 @@ #include "stab.h" #include "util.h" -static int format_addr(stab_t stab, char *buf, int max_len, +static int format_addr(char *buf, int max_len, msp430_amode_t amode, uint16_t addr) { char name[64]; @@ -54,7 +54,7 @@ static int format_addr(stab_t stab, char *buf, int max_len, if ((!numeric || (addr >= 0x200 && addr < 0xfff0)) && - !stab_nearest(stab, addr, name, sizeof(name), &offset) && + !stab_nearest(stab_default, addr, name, sizeof(name), &offset) && !offset) return snprintf(buf, max_len, "%s\x1b[1m%s\x1b[0m", prefix, name); @@ -108,19 +108,19 @@ static int format_reg(char *buf, int max_len, * * Returns the number of characters printed. */ -static int format_operand(stab_t stab, char *buf, int max_len, +static int format_operand(char *buf, int max_len, msp430_amode_t amode, uint16_t addr, msp430_reg_t reg) { int len = 0; - len += format_addr(stab, buf, max_len, amode, addr); + len += format_addr(buf, max_len, amode, addr); len += format_reg(buf + len, max_len - len, amode, reg); return len; } /* Write assembly language for the instruction to this buffer */ -static int dis_format(stab_t stab, char *buf, int max_len, +static int dis_format(char *buf, int max_len, const struct msp430_instruction *insn) { int len; @@ -157,7 +157,7 @@ static int dis_format(stab_t stab, char *buf, int max_len, /* Source operand */ if (insn->itype == MSP430_ITYPE_DOUBLE) { - len = format_operand(stab, buf + total, + len = format_operand(buf + total, max_len - total, insn->src_mode, insn->src_addr, @@ -179,7 +179,7 @@ static int dis_format(stab_t stab, char *buf, int max_len, /* Destination operand */ if (insn->itype != MSP430_ITYPE_NOARG) - total += format_operand(stab, buf + total, + total += format_operand(buf + total, max_len - total, insn->dst_mode, insn->dst_addr, @@ -207,7 +207,6 @@ static int dis_format(stab_t stab, char *buf, int max_len, void cproc_disassemble(cproc_t cp, address_t offset, const uint8_t *data, int length) { - stab_t stab = cproc_stab(cp); int first_line = 1; while (length) { @@ -220,7 +219,7 @@ void cproc_disassemble(cproc_t cp, char buf[256]; int len = 0; - if (!stab_nearest(stab, offset, obname, sizeof(obname), + if (!stab_nearest(stab_default, offset, obname, sizeof(obname), &oboff)) { if (!oboff) cproc_printf(cp, "\x1b[m%s:\x1b[0m", obname); @@ -250,7 +249,7 @@ void cproc_disassemble(cproc_t cp, } if (retval >= 0) - len += dis_format(stab, buf + len, sizeof(buf) - len, + len += dis_format(buf + len, sizeof(buf) - len, &insn); buf[len] = 0; diff --git a/devcmd.c b/devcmd.c index b2f1197..07d38f3 100644 --- a/devcmd.c +++ b/devcmd.c @@ -54,7 +54,6 @@ static int cmd_regs(cproc_t cp, char **arg) static int cmd_md(cproc_t cp, char **arg) { - stab_t stab = cproc_stab(cp); device_t dev = cproc_device(cp); char *off_text = get_arg(arg); char *len_text = get_arg(arg); @@ -66,13 +65,13 @@ static int cmd_md(cproc_t cp, char **arg) return -1; } - if (expr_eval(stab, off_text, &offset) < 0) { + if (expr_eval(stab_default, off_text, &offset) < 0) { fprintf(stderr, "md: can't parse offset: %s\n", off_text); return -1; } if (len_text) { - if (expr_eval(stab, len_text, &length) < 0) { + if (expr_eval(stab_default, len_text, &length) < 0) { fprintf(stderr, "md: can't parse length: %s\n", len_text); return -1; @@ -99,7 +98,6 @@ static int cmd_md(cproc_t cp, char **arg) static int cmd_mw(cproc_t cp, char **arg) { device_t dev = cproc_device(cp); - stab_t stab = cproc_stab(cp); char *off_text = get_arg(arg); char *byte_text; address_t offset = 0; @@ -111,7 +109,7 @@ static int cmd_mw(cproc_t cp, char **arg) return -1; } - if (expr_eval(stab, off_text, &offset) < 0) { + if (expr_eval(stab_default, off_text, &offset) < 0) { fprintf(stderr, "md: can't parse offset: %s\n", off_text); return -1; } @@ -222,7 +220,6 @@ static int cmd_run(cproc_t cp, char **arg) static int cmd_set(cproc_t cp, char **arg) { device_t dev = cproc_device(cp); - stab_t stab = cproc_stab(cp); char *reg_text = get_arg(arg); char *val_text = get_arg(arg); int reg; @@ -240,7 +237,7 @@ static int cmd_set(cproc_t cp, char **arg) return -1; } - if (expr_eval(stab, val_text, &value) < 0) { + if (expr_eval(stab_default, val_text, &value) < 0) { fprintf(stderr, "set: can't parse value: %s\n", val_text); return -1; } @@ -258,7 +255,6 @@ static int cmd_set(cproc_t cp, char **arg) static int cmd_dis(cproc_t cp, char **arg) { device_t dev = cproc_device(cp); - stab_t stab = cproc_stab(cp); char *off_text = get_arg(arg); char *len_text = get_arg(arg); address_t offset = 0; @@ -270,13 +266,13 @@ static int cmd_dis(cproc_t cp, char **arg) return -1; } - if (expr_eval(stab, off_text, &offset) < 0) { + if (expr_eval(stab_default, off_text, &offset) < 0) { fprintf(stderr, "dis: can't parse offset: %s\n", off_text); return -1; } if (len_text) { - if (expr_eval(stab, len_text, &length) < 0) { + if (expr_eval(stab_default, len_text, &length) < 0) { fprintf(stderr, "dis: can't parse length: %s\n", len_text); return -1; @@ -408,7 +404,6 @@ static int hexout_feed(struct hexout_data *hexout, static int cmd_hexout(cproc_t cp, char **arg) { device_t dev = cproc_device(cp); - stab_t stab = cproc_stab(cp); char *off_text = get_arg(arg); char *len_text = get_arg(arg); char *filename = *arg; @@ -421,8 +416,8 @@ static int cmd_hexout(cproc_t cp, char **arg) return -1; } - if (expr_eval(stab, off_text, &off) < 0 || - expr_eval(stab, len_text, &length) < 0) + if (expr_eval(stab_default, off_text, &off) < 0 || + expr_eval(stab_default, len_text, &length) < 0) return -1; if (hexout_start(&hexout, filename) < 0) @@ -547,7 +542,6 @@ static int prog_feed(void *user_data, static int cmd_prog(cproc_t cp, char **arg) { device_t dev = cproc_device(cp); - stab_t stab = cproc_stab(cp); FILE *in; struct prog_data prog; @@ -573,8 +567,8 @@ static int cmd_prog(cproc_t cp, char **arg) } if (binfile_info(in) & BINFILE_HAS_SYMS) { - stab_clear(stab); - binfile_syms(in, stab); + stab_clear(stab_default); + binfile_syms(in, stab_default); } fclose(in); @@ -594,7 +588,6 @@ static int cmd_prog(cproc_t cp, char **arg) static int cmd_setbreak(cproc_t cp, char **arg) { device_t dev = cproc_device(cp); - stab_t stab = cproc_stab(cp); char *addr_text = get_arg(arg); char *index_text = get_arg(arg); int index = -1; @@ -605,7 +598,7 @@ static int cmd_setbreak(cproc_t cp, char **arg) return -1; } - if (expr_eval(stab, addr_text, &addr) < 0) { + if (expr_eval(stab_default, addr_text, &addr) < 0) { fprintf(stderr, "setbreak: invalid address\n"); return -1; } @@ -662,7 +655,6 @@ static int cmd_delbreak(cproc_t cp, char **arg) static int cmd_break(cproc_t cp, char **arg) { device_t dev = cproc_device(cp); - stab_t stab = cproc_stab(cp); int i; printf("%d breakpoints available:\n", dev->max_breakpoints); @@ -674,7 +666,7 @@ static int cmd_break(cproc_t cp, char **arg) address_t offset; printf(" %d. 0x%05x", i, bp->addr); - if (!stab_nearest(stab, bp->addr, name, + if (!stab_nearest(stab_default, bp->addr, name, sizeof(name), &offset)) { printf(" (%s", name); if (offset) diff --git a/main.c b/main.c index e965674..dc36d14 100644 --- a/main.c +++ b/main.c @@ -46,14 +46,13 @@ #include "olimex.h" #include "rf2500.h" -static void io_prefix(stab_t stab, - const char *prefix, uint16_t pc, +static void io_prefix(const char *prefix, uint16_t pc, uint16_t addr, int is_byte) { char name[64]; address_t offset; - if (!stab_nearest(stab, pc, name, sizeof(name), &offset)) { + if (!stab_nearest(stab_default, pc, name, sizeof(name), &offset)) { printf("%s", name); if (offset) printf("+0x%x", offset); @@ -62,7 +61,7 @@ static void io_prefix(stab_t stab, } printf(": IO %s.%c: 0x%04x", prefix, is_byte ? 'B' : 'W', addr); - if (!stab_nearest(stab, addr, name, sizeof(name), &offset)) { + if (!stab_nearest(stab_default, addr, name, sizeof(name), &offset)) { printf(" (%s", name); if (offset) printf("+0x%x", offset); @@ -73,9 +72,7 @@ static void io_prefix(stab_t stab, static int fetch_io(void *user_data, uint16_t pc, uint16_t addr, int is_byte, uint16_t *data_ret) { - stab_t stab = (stab_t)user_data; - - io_prefix(stab, "READ", pc, addr, is_byte); + io_prefix("READ", pc, addr, is_byte); for (;;) { char text[128]; @@ -97,7 +94,7 @@ static int fetch_io(void *user_data, uint16_t pc, if (!len) return 0; - if (!expr_eval(stab, text, &data)) { + if (!expr_eval(stab_default, text, &data)) { if (data_ret) *data_ret = data; return 0; @@ -110,9 +107,7 @@ static int fetch_io(void *user_data, uint16_t pc, static void store_io(void *user_data, uint16_t pc, uint16_t addr, int is_byte, uint16_t data) { - stab_t stab = (stab_t)user_data; - - io_prefix(stab, "WRITE", pc, addr, is_byte); + io_prefix("WRITE", pc, addr, is_byte); if (is_byte) printf(" => 0x%02x\n", data & 0xff); @@ -128,7 +123,6 @@ struct cmdline_args { int want_jtag; int no_rc; int vcc_mv; - stab_t stab; }; struct driver { @@ -187,7 +181,7 @@ static device_t driver_open_olimex(const struct cmdline_args *args) static device_t driver_open_sim(const struct cmdline_args *args) { - return sim_open(fetch_io, store_io, args->stab); + return sim_open(fetch_io, store_io, NULL); } static device_t driver_open_uif(const struct cmdline_args *args) @@ -414,7 +408,6 @@ cproc_t setup_cproc(struct cmdline_args *args) { int i; device_t msp430_dev; - stab_t stab; cproc_t cp; i = 0; @@ -427,21 +420,20 @@ cproc_t setup_cproc(struct cmdline_args *args) return NULL; } - stab = stab_new(); - if (!stab) + stab_default = stab_new(); + if (!stab_default) return NULL; - args->stab = stab; msp430_dev = driver_table[i].func(args); if (!msp430_dev) { - stab_destroy(stab); + stab_destroy(stab_default); return NULL; } - cp = cproc_new(msp430_dev, stab); + cp = cproc_new(msp430_dev); if (!cp) { msp430_dev->destroy(msp430_dev); - stab_destroy(stab); + stab_destroy(stab_default); return NULL; } @@ -495,6 +487,7 @@ int main(int argc, char **argv) } cproc_destroy(cp); + stab_destroy(stab_default); return ret; } diff --git a/rtools.c b/rtools.c index e42f876..dc0580e 100644 --- a/rtools.c +++ b/rtools.c @@ -154,7 +154,7 @@ static int isearch_addr(cproc_t cp, const char *term, char **arg, return -1; } - if (expr_eval(cproc_stab(cp), addr_text, &addr) < 0) + if (expr_eval(stab_default, addr_text, &addr) < 0) return -1; q->flags |= which; @@ -397,7 +397,6 @@ static int cmd_isearch(cproc_t cp, char **arg) {"dstmode", isearch_mode} }; - stab_t stab = cproc_stab(cp); struct isearch_query q; const char *addr_text; const char *len_text; @@ -412,8 +411,8 @@ static int cmd_isearch(cproc_t cp, char **arg) return -1; } - if (expr_eval(stab, addr_text, &addr) < 0 || - expr_eval(stab, len_text, &len) < 0) + if (expr_eval(stab_default, addr_text, &addr) < 0 || + expr_eval(stab_default, len_text, &len) < 0) return -1; q.flags = 0; @@ -745,7 +744,7 @@ static int add_symbol_nodes(void *user_data, const char *name, } static int cgraph_init(address_t offset, address_t len, uint8_t *memory, - struct call_graph *graph, stab_t stab) + struct call_graph *graph) { vector_init(&graph->edge_to, sizeof(struct cg_edge)); vector_init(&graph->edge_from, sizeof(struct cg_edge)); @@ -759,7 +758,7 @@ static int cgraph_init(address_t offset, address_t len, uint8_t *memory, if (add_irq_edges(offset, len, memory, graph) < 0) goto fail; - if (stab_enum(stab, add_symbol_nodes, graph) < 0) + if (stab_enum(stab_default, add_symbol_nodes, graph) < 0) goto fail; if (add_nodes_from_edges(graph) < 0) goto fail; @@ -780,7 +779,6 @@ static int cgraph_init(address_t offset, address_t len, uint8_t *memory, static void cgraph_summary(struct call_graph *graph, cproc_t cp) { - stab_t stab = cproc_stab(cp); int i; int j = 0; /* Edge from index */ int k = 0; /* Edge to index */ @@ -812,7 +810,8 @@ static void cgraph_summary(struct call_graph *graph, cproc_t cp) k++; } - if (stab_nearest(stab, n->offset, name, sizeof(name), &o) || + if (stab_nearest(stab_default, n->offset, + name, sizeof(name), &o) || o) name[0] = 0; @@ -824,7 +823,6 @@ static void cgraph_summary(struct call_graph *graph, cproc_t cp) static void cgraph_func_info(struct call_graph *graph, cproc_t cp, int addr) { - stab_t stab = cproc_stab(cp); int i = 0; int j = 0; int k = 0; @@ -851,7 +849,8 @@ static void cgraph_func_info(struct call_graph *graph, cproc_t cp, CG_EDGE_TO(graph, k)->dst < n->offset) k++; - if (stab_nearest(stab, n->offset, name, sizeof(name), &offset)) + if (stab_nearest(stab_default, n->offset, + name, sizeof(name), &offset)) printf("0x%04x:\n", n->offset); else if (offset) printf("0x%04x %s+0x%x:\n", n->offset, name, offset); @@ -867,7 +866,8 @@ static void cgraph_func_info(struct call_graph *graph, cproc_t cp, if (e->src != n->offset) break; - if (stab_nearest(stab, e->dst, name, sizeof(name), + if (stab_nearest(stab_default, e->dst, + name, sizeof(name), &offset) || offset) snprintf(name, sizeof(name), "0x%04x", e->dst); @@ -888,7 +888,8 @@ static void cgraph_func_info(struct call_graph *graph, cproc_t cp, if (e->dst != n->offset) break; - if (stab_nearest(stab, e->src, name, sizeof(name), + if (stab_nearest(stab_default, e->src, + name, sizeof(name), &offset) || offset) snprintf(name, sizeof(name), "0x%04x", e->src); @@ -902,7 +903,6 @@ static void cgraph_func_info(struct call_graph *graph, cproc_t cp, static int cmd_cgraph(cproc_t cp, char **arg) { - stab_t stab = cproc_stab(cp); device_t dev = cproc_device(cp); char *offset_text, *len_text, *addr_text;; address_t offset, len, addr; @@ -920,19 +920,19 @@ static int cmd_cgraph(cproc_t cp, char **arg) return -1; } - if (expr_eval(stab, offset_text, &offset) < 0) { + if (expr_eval(stab_default, offset_text, &offset) < 0) { fprintf(stderr, "cgraph: invalid offset: %s\n", offset_text); return -1; } offset &= ~1; - if (expr_eval(stab, len_text, &len) < 0) { + if (expr_eval(stab_default, len_text, &len) < 0) { fprintf(stderr, "cgraph: invalid length: %s\n", len_text); return -1; } len &= ~1; - if (addr_text && expr_eval(stab, addr_text, &addr) < 0) { + if (addr_text && expr_eval(stab_default, addr_text, &addr) < 0) { fprintf(stderr, "cgraph: invalid address: %s\n", addr_text); return -1; } @@ -952,7 +952,7 @@ static int cmd_cgraph(cproc_t cp, char **arg) } /* Produce and display the call graph */ - if (cgraph_init(offset, len, memory, &graph, cproc_stab(cp)) < 0) { + if (cgraph_init(offset, len, memory, &graph) < 0) { fprintf(stderr, "cgraph: couldn't build call graph\n"); free(memory); return -1; diff --git a/stab.c b/stab.c index f526856..d9113b8 100644 --- a/stab.c +++ b/stab.c @@ -28,6 +28,8 @@ #include "stab.h" #include "util.h" +stab_t stab_default; + /************************************************************************ * B+Tree definitions */ diff --git a/stab.h b/stab.h index d7824e6..e1c018d 100644 --- a/stab.h +++ b/stab.h @@ -25,6 +25,8 @@ struct stab; typedef struct stab *stab_t; +extern stab_t stab_default; + /* Create/destroy a symbol table. The constructor returns NULL if it * was unable to allocate memory for the table. */ diff --git a/sym.c b/sym.c index 6d38720..dad0092 100644 --- a/sym.c +++ b/sym.c @@ -32,18 +32,17 @@ static int cmd_eval(cproc_t cp, char **arg) { - stab_t stab = cproc_stab(cp); address_t addr; address_t offset; char name[64]; - if (expr_eval(stab, *arg, &addr) < 0) { + if (expr_eval(stab_default, *arg, &addr) < 0) { fprintf(stderr, "=: can't parse: %s\n", *arg); return -1; } printf("0x%05x", addr); - if (!stab_nearest(stab, addr, name, sizeof(name), &offset)) { + if (!stab_nearest(stab_default, addr, name, sizeof(name), &offset)) { printf(" = %s", name); if (offset) printf("+0x%x", offset); @@ -55,7 +54,6 @@ static int cmd_eval(cproc_t cp, char **arg) static int cmd_sym_load_add(cproc_t cp, int clear, char **arg) { - stab_t stab = cproc_stab(cp); FILE *in; if (clear && cproc_prompt_abort(cp, CPROC_MODIFY_SYMS)) @@ -68,13 +66,13 @@ static int cmd_sym_load_add(cproc_t cp, int clear, char **arg) } if (clear) { - stab_clear(stab); + stab_clear(stab_default); cproc_unmodify(cp, CPROC_MODIFY_SYMS); } else { cproc_modify(cp, CPROC_MODIFY_SYMS); } - if (binfile_syms(in, stab) < 0) { + if (binfile_syms(in, stab_default) < 0) { fclose(in); return -1; } @@ -97,7 +95,6 @@ static int savemap_cb(void *user_data, const char *name, address_t value) static int cmd_sym_savemap(cproc_t cp, char **arg) { - stab_t stab = cproc_stab(cp); FILE *savemap_out; char *fname = get_arg(arg); @@ -113,7 +110,7 @@ static int cmd_sym_savemap(cproc_t cp, char **arg) return -1; } - if (stab_enum(stab, savemap_cb, savemap_out) < 0) { + if (stab_enum(stab_default, savemap_cb, savemap_out) < 0) { fclose(savemap_out); return -1; } @@ -145,12 +142,11 @@ static int find_sym(void *user_data, const char *name, address_t value) static int cmd_sym_find(cproc_t cp, char **arg) { - stab_t stab = cproc_stab(cp); regex_t find_preg; char *expr = get_arg(arg); if (!expr) { - stab_enum(stab, print_sym, NULL); + stab_enum(stab_default, print_sym, NULL); return 0; } @@ -159,7 +155,7 @@ static int cmd_sym_find(cproc_t cp, char **arg) return -1; } - stab_enum(stab, find_sym, &find_preg); + stab_enum(stab_default, find_sym, &find_preg); regfree(&find_preg); return 0; } @@ -174,8 +170,7 @@ struct rename_data { regex_t preg; }; -static int renames_do(stab_t stab, - struct rename_data *rename, const char *replace) +static int renames_do(struct rename_data *rename, const char *replace) { int i; int count = 0; @@ -197,13 +192,13 @@ static int renames_do(stab_t stab, printf("%s -> %s\n", r->old_name, new_name); - if (stab_get(stab, r->old_name, &value) < 0) { + if (stab_get(stab_default, r->old_name, &value) < 0) { fprintf(stderr, "sym: warning: " "symbol missing: %s\n", r->old_name); } else { - stab_del(stab, r->old_name); - if (stab_set(stab, new_name, value) < 0) { + stab_del(stab_default, r->old_name); + if (stab_set(stab_default, new_name, value) < 0) { fprintf(stderr, "sym: warning: " "failed to set new name: %s\n", new_name); @@ -243,7 +238,6 @@ static int cmd_sym_rename(cproc_t cp, char **arg) const char *replace = get_arg(arg); int ret; struct rename_data rename; - stab_t stab = cproc_stab(cp); if (!(expr && replace)) { fprintf(stderr, "sym: expected pattern and replacement\n"); @@ -257,7 +251,7 @@ static int cmd_sym_rename(cproc_t cp, char **arg) vector_init(&rename.list, sizeof(struct rename_record)); - if (stab_enum(stab, find_renames, &rename) < 0) { + if (stab_enum(stab_default, find_renames, &rename) < 0) { fprintf(stderr, "sym: rename failed\n"); regfree(&rename.preg); vector_destroy(&rename.list); @@ -265,7 +259,7 @@ static int cmd_sym_rename(cproc_t cp, char **arg) } regfree(&rename.preg); - ret = renames_do(stab, &rename, replace); + ret = renames_do(&rename, replace); vector_destroy(&rename.list); if (ret > 0) @@ -276,7 +270,6 @@ static int cmd_sym_rename(cproc_t cp, char **arg) static int cmd_sym_del(cproc_t cp, char **arg) { - stab_t stab = cproc_stab(cp); char *name = get_arg(arg); if (!name) { @@ -285,7 +278,7 @@ static int cmd_sym_del(cproc_t cp, char **arg) return -1; } - if (stab_del(stab, name) < 0) { + if (stab_del(stab_default, name) < 0) { fprintf(stderr, "sym: can't delete nonexistent symbol: %s\n", name); return -1; @@ -297,7 +290,6 @@ static int cmd_sym_del(cproc_t cp, char **arg) static int cmd_sym(cproc_t cp, char **arg) { - stab_t stab = cproc_stab(cp); char *subcmd = get_arg(arg); if (!subcmd) { @@ -309,7 +301,7 @@ static int cmd_sym(cproc_t cp, char **arg) if (!strcasecmp(subcmd, "clear")) { if (cproc_prompt_abort(cp, CPROC_MODIFY_SYMS)) return 0; - stab_clear(stab); + stab_clear(stab_default); cproc_unmodify(cp, CPROC_MODIFY_SYMS); return 0; } @@ -325,13 +317,13 @@ static int cmd_sym(cproc_t cp, char **arg) return -1; } - if (expr_eval(stab, val_text, &value) < 0) { + if (expr_eval(stab_default, val_text, &value) < 0) { fprintf(stderr, "sym: can't parse value: %s\n", val_text); return -1; } - if (stab_set(stab, name, value) < 0) + if (stab_set(stab_default, name, value) < 0) return -1; cproc_modify(cp, CPROC_MODIFY_SYMS);