Eu acredito que o primeiro argumento para GETAUXVAL()
diz algo,
getauxval(31, 9, 5, 0x7fe0d034ea67)
Abertura /usr/include/x86_64-linux-gnu/bits/auxv.h
, eu posso ver isso
#define AT_EXECFN 31 /* Filename of executable. */
Então, eles estão tentando obter o nome do arquivo do executável - na verdade, o nome do caminho pelos documentos e o exemplo abaixo. Nesse caso, esse é o nome do caminho do rastreador e não o alvo. Eles estão chamando realpath
para garantir que os caminhos sejam os mesmos. Você pode ver o que é getauxval()
$ LD_SHOW_AUXV=1 strace sleep 1
AT_SYSINFO_EHDR: 0x7ffd6d96f000
AT_HWCAP: bfebfbff
AT_PAGESZ: 4096
AT_CLKTCK: 100
AT_PHDR: 0x5640b6cad040
AT_PHENT: 56
AT_PHNUM: 9
AT_BASE: 0x7fc9ce4fc000
AT_FLAGS: 0x0
AT_ENTRY: 0x5640b6d09440
AT_UID: 1000
AT_EUID: 1000
AT_GID: 1000
AT_EGID: 1000
AT_SECURE: 0
AT_RANDOM: 0x7ffd6d909669
AT_HWCAP2: 0x0
AT_EXECFN: /usr/bin/strace
AT_PLATFORM: x86_64