我正在遵循"学习Linux二进制分析"的第3章中的代码。代码是"一个简单的基于ptrace的调试器"。
我试图在我的Raspberry Pi 3中编写这个,它有一个ARM处理器。我知道错误意味着我没有包含正确的头文件,但我找不到正确的头文件。
我收到此错误消息:
field ‘pt_reg’ has incomplete type struct user_regs_struct pt_reg
在做了一些研究之后,我找到了asm / ptrace.h,它包含了一些特定于ARM的寄存器结构的宏。我是在正确的轨道上吗?我如何使用ARM处理器实现这一功能?
以下是标题:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <signal.h>
#include <elf.h>
#include <sys/types.h>
#include <sys/user.h>
#include <sys/stat.h>
#include <sys/ptrace.h>
#include <sys/mman.h>
typedef struct handle {
Elf64_Ehdr *ehdr;
Elf64_Phdr *phdr;
Elf64_Shdr *shdr;
uint8_t *mem;
char *symname;
Elf64_Addr symaddr;
struct user_regs_struct pt_reg;
char *exec;
} handle_t;