summaryrefslogtreecommitdiffstats
path: root/src/readelf.c
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2012-08-27 14:30:05 +0200
committerMark Wielaard <[email protected]>2012-08-27 14:30:05 +0200
commite89c500fbbd7a54912b06fce0729367b94b52a50 (patch)
treef7b7646f7ef081e1af842315359b7dcefd0e0bc7 /src/readelf.c
parente0ebc5a45896d2232f525601251ef781c10fedaa (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]>
Diffstat (limited to 'src/readelf.c')
-rw-r--r--src/readelf.c9
1 files changed, 6 insertions, 3 deletions
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;