Fix building on aarch64, after changing the ELF parser. 23/241123/3
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Thu, 13 Aug 2020 15:06:55 +0000 (17:06 +0200)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Mon, 17 Aug 2020 13:36:24 +0000 (15:36 +0200)
Change-Id: I41557a2149ca4b6c5d89ab16a89199d1cdf33170

src/crash-stack/crash-stack-aarch64.c
src/crash-stack/unwind.c

index 0671115..03b8aa1 100644 (file)
 #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
 
@@ -33,10 +35,10 @@ 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
index a4da0b9..cda0e10 100644 (file)
@@ -255,12 +255,12 @@ static int find_eh_frame_hdr(int fd, char *image, uint64_t size,
         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;
         }
     }