Previously this was incorrectly assumed to be an ULEB128. Hilarity
ensued.

This appears to be the case in both DWARF 3, DWARF 4, and LSB 5.
---
 src/readelf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/readelf.c b/src/readelf.c
index 5f6e4ed..7c3237f 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -4971,7 +4971,7 @@ print_cfa_program (const unsigned char *readp, const 
unsigned char *const endp,
          case DW_CFA_set_loc:
            if ((uint64_t) (endp - readp) < 1)
              goto invalid;
-           get_uleb128 (op1, readp, endp);
+           op1 = read_addr_unaligned_inc (ptr_size, dbg, readp);
            op1 += vma_base;
            printf ("     set_loc %" PRIu64 "\n", op1 * code_align);
            break;
-- 
2.6.2

Reply via email to