| #include <libunwind.h> | |
| unw_word_t | |
| _ReadULEB (unsigned char **dpp) | |
| { | |
| unsigned shift = 0; | |
| unw_word_t byte, result = 0; | |
| unsigned char *bp = *dpp; | |
| while (1) | |
| { | |
| byte = *bp++; | |
| result |= (byte & 0x7f) << shift; | |
| if ((byte & 0x80) == 0) | |
| break; | |
| shift += 7; | |
| } | |
| *dpp = bp; | |
| return result; | |
| } |