diff options
| author | Mark Wielaard <[email protected]> | 2012-08-27 14:30:05 +0200 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2012-08-27 14:30:05 +0200 |
| commit | e89c500fbbd7a54912b06fce0729367b94b52a50 (patch) | |
| tree | f7b7646f7ef081e1af842315359b7dcefd0e0bc7 | |
| parent | e0ebc5a45896d2232f525601251ef781c10fedaa (diff) | |
readelf.c (register_info): Handle loc == NULL.
register_info is called by print_cfa_program with loc being NULL.
Signed-off-by: Mark Wielaard <[email protected]>
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/readelf.c | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index d80f844f..72804bd9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-08-27 Mark Wielaard <[email protected]> + + * readelf.c (register_info): Handle loc == NULL. + 2012-08-22 Jeff Kenton <[email protected]> * elflint.c (valid_e_machine): Add EM_TILEGX and EM_TILEPRO. diff --git a/src/readelf.c b/src/readelf.c index dc496695..4ff8ebbd 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -4305,9 +4305,12 @@ register_info (Ebl *ebl, unsigned int regno, const Ebl_Register_Location *loc, bits ?: &ignore, type ?: &ignore); if (n <= 0) { - snprintf (name, REGNAMESZ, "reg%u", loc->regno); + if (loc != NULL) + snprintf (name, REGNAMESZ, "reg%u", loc->regno); + else + snprintf (name, REGNAMESZ, "??? 0x%x", regno); if (bits != NULL) - *bits = loc->bits; + *bits = loc != NULL ? loc->bits : 0; if (type != NULL) *type = DW_ATE_unsigned; set = "??? unrecognized"; @@ -4315,7 +4318,7 @@ register_info (Ebl *ebl, unsigned int regno, const Ebl_Register_Location *loc, else { if (bits != NULL && *bits <= 0) - *bits = loc->bits; + *bits = loc != NULL ? loc->bits : 0; if (type != NULL && *type == DW_ATE_void) *type = DW_ATE_unsigned; |
