#include <stdio.h> | |
#include <string.h> | |
#include <unistd.h> | |
int main() | |
{ | |
FILE *maps; | |
void *vdso_begin, *vdso_end; | |
int found_vdso = 0; | |
maps = fopen("/proc/self/maps", "r"); | |
char buf[1024]; | |
while (fgets(buf, 1024, maps)) { | |
if (strstr(buf, "[vdso]")) { | |
found_vdso = 1; | |
break; | |
} | |
} | |
fclose(maps); | |
if (!found_vdso) { | |
fprintf(stderr, "Could not find vdso mapping\n"); | |
return 1; | |
} | |
sscanf(buf, "%p-%p", &vdso_begin, &vdso_end); | |
write(1, vdso_begin, vdso_end - vdso_begin); | |
return 0; | |
} |