0
我想獲得一個系統調用的地址,生成一個sigsys信號!但我從GCC收到以下錯誤:siginfo匿名工會
gcc emulator.c -fms-extensions
error: ‘siginfo_t’ has no member named ‘si_call_addr’
我使用的代碼是:
static void emulator(int nr, siginfo_t *siginfo, void *void_context)
{
ucontext_t *ctx = (ucontext_t *)(void_context);
int syscall;
char *buf;
ssize_t bytes;
size_t len;
if (siginfo->si_code != SYS_SECCOMP)
return;
if (!ctx)
return;
syscall = ctx->uc_mcontext.gregs[REG_SYSCALL];
printf("System call %d ADDR %X\n", syscall, siginfo->si_call_addr);
setcontext(ctx);
return;
}
的si_call_addr被定義爲siginfo_t匿名結構。
這是不是當前版本..因爲kernle 3.5本已改爲http://lxr.oss.org.cn/source/include/asm -generic/siginfo.h –
@GiuseppePes此處顯示的結構是呈現給用戶空間的ABI(在glibc 2.16中)如果有其他成員可用,那麼您可能沒有更新的頭文件用於用戶空間代碼 - 您擁有的鏈接顯示內核頭文件。 – nos