tests: OOT build fixes etc.
tests/Makefile: fix out-of-tree build issues Also: - win64: align(16) MEM_DEBUG user memory on win64 the struct jmp_buf in the TCCState structure which we allocate by tcc_malloc needs alignment 16 because the msvcrt setjmp uses MMX instructions. - libtcc_test.c: win32/64 need __attribute__((dllimport)) for extern data objects - tcctest.c: exclude stuff that gcc does not compile except for relocation_test() the other issues are mostly ASM related. We should probably check GCC versions but I have no idea which mingw/gcc versions support what and which don't. - lib/Makefile: use tcc to compile libtcc1.a (except on arm which needs arm-asm
This commit is contained in:
@ -2667,6 +2667,9 @@ int reltab[3] = { 1, 2, 3 };
|
||||
int reltab[3] = { 1, 2, 3 };
|
||||
|
||||
int *rel1 = &reltab[1];
|
||||
int *rel2 = &reltab[2];
|
||||
|
||||
#ifdef _WIN64
|
||||
void relocation_test(void) {}
|
||||
#else
|
||||
void getmyaddress(void)
|
||||
@ -2695,6 +2698,7 @@ void relocation_test(void)
|
||||
fptr();
|
||||
#ifdef __LP64__
|
||||
printf("pa_symbol=0x%lx\n", __pa_symbol() >> 63);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -3127,8 +3131,10 @@ void other_constraints_test(void)
|
||||
|
||||
void other_constraints_test(void)
|
||||
{
|
||||
unsigned long ret;
|
||||
int var;
|
||||
#ifndef _WIN64
|
||||
__asm__ volatile ("mov %P1,%0" : "=r" (ret) : "p" (&var));
|
||||
printf ("oc1: %d\n", ret == (unsigned long)&var);
|
||||
#endif
|
||||
}
|
||||
@ -3203,9 +3209,11 @@ void test_high_clobbers(void)
|
||||
registers if they are clobbered and if it's the high 8 x86-64
|
||||
registers. This is fragile for GCC as the constraints do not
|
||||
correctly capture the data flow, but good enough for us. */
|
||||
asm volatile("mov $0x4542, %%r12" : "=r" (val):: "memory");
|
||||
clobber_r12();
|
||||
#ifndef _WIN64
|
||||
asm volatile("mov %%r12, %0" : "=r" (val2) : "r" (val): "memory");
|
||||
printf("asmhc: 0x%x\n", val2);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user