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:
grischka
2016-12-20 18:05:33 +01:00
parent 4beb469c91
commit 71c5ce5ced
7 changed files with 36 additions and 23 deletions

View File

@ -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
}