#include <stdio.h> | |
__thread int foo; | |
int | |
in_dso (int n, int *caller_foop) | |
{ | |
int *foop; | |
int result = 0; | |
puts ("foo"); /* Make sure PLT is used before macros. */ | |
asm ("" ::: "memory"); | |
foop = &foo; | |
if (caller_foop != NULL && foop != caller_foop) | |
{ | |
printf ("callers address of foo differs: %p vs %p\n", caller_foop, foop); | |
result = 1; | |
} | |
else if (*foop != n) | |
{ | |
printf ("foo != %d\n", n); | |
result = 1; | |
} | |
*foop = 16; | |
return result; | |
} |