aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linearize.c
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-02-12 03:21:44 +0100
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-02-17 11:07:15 +0100
commit87d5acde0ae24d56524ffbc52a008f7a763fbcc8 (patch)
tree70ba86b19d6c785771c3ce0dfbe7cd1070f5851c /linearize.c
parentea23b16490c7c42cbf83cafde968ebbd78128ea4 (diff)
downloadsparse-dev-87d5acde0ae24d56524ffbc52a008f7a763fbcc8.tar.gz
use show_pseudo() for OP_SYMADDR's symbol
In show_instruction(), what is done to display OP_SYMADDR's symbol is very close to what is done to display a PSEUDO_SYM. In fact, what is done by show_pseudo() is more complete and more informative. So simply use show_pseudo() to display this part. This will also avoid crashes caused by a NULL symbol. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'linearize.c')
-rw-r--r--linearize.c19
1 files changed, 3 insertions, 16 deletions
diff --git a/linearize.c b/linearize.c
index c174d631..4995d06e 100644
--- a/linearize.c
+++ b/linearize.c
@@ -342,24 +342,11 @@ const char *show_instruction(struct instruction *insn)
buf += sprintf(buf, ".L%u", insn->bb_true->nr);
break;
- case OP_SYMADDR: {
- struct symbol *sym = insn->symbol->sym;
+ case OP_SYMADDR:
buf += sprintf(buf, "%s <- ", show_pseudo(insn->target));
-
- if (!insn->bb && !sym)
- break;
- if (sym->bb_target) {
- buf += sprintf(buf, ".L%u", sym->bb_target->nr);
- break;
- }
- if (sym->ident) {
- buf += sprintf(buf, "%s", show_ident(sym->ident));
- break;
- }
- buf += sprintf(buf, "<anon symbol:%p>", verbose ? sym : NULL);
+ buf += sprintf(buf, "%s", show_pseudo(insn->symbol));
break;
- }
-
+
case OP_SETVAL: {
struct expression *expr = insn->val;
struct symbol *sym;