#include "shared/log.h"
#include "shared/util.h"
+#include <elf.h>
#include <sys/user.h>
#include <string.h>
+#include <stdio.h>
static struct user_regs_struct g_registers; ///< static storage for registers
* @brief Important registers for unwinding stack on aarch64
*/
struct Regs {
- Dwarf_Addr x29; ///< x29 register contains frame pointer
- Dwarf_Addr x30; ///< x30 register contains return address
- Dwarf_Addr pc; ///< register: program counter
- Dwarf_Addr sp; ///< register: stack pointer
+ Elf64_Addr x29; ///< x29 register contains frame pointer
+ Elf64_Addr x30; ///< x30 register contains return address
+ Elf64_Addr pc; ///< register: program counter
+ Elf64_Addr sp; ///< register: stack pointer
};
#define REG_X29 29 ///< number of x29 register
if (!teu_getshdr(elf, i, &shdr))
break;
- char *str = teu_strptr(&elf, ehdr.e_shstrndx, shdr.sh_name);
+ char *str = teu_strptr(elf, ehdr.e_shstrndx, shdr.sh_name);
if (str != NULL && !strcmp(str, ".eh_frame_hdr")) {
void *data = teu_getsdata(elf, &shdr);
offset = *segbase = shdr.sh_offset;
- parse_eh_frame_hdr(data->d_buf, offset, table_data, fde_count);
+ parse_eh_frame_hdr(data, offset, table_data, fde_count);
break;
}
}