diff options
| author | grischka <grischka> | 2016-12-18 22:05:42 +0100 |
|---|---|---|
| committer | grischka <grischka> | 2016-12-18 22:05:42 +0100 |
| commit | a1c12b9fb9bd2452a90d3cf504574b3605c09702 (patch) | |
| tree | 3166ee219d1463f5ed5bfc00aada753502fbe706 /tests | |
| parent | f7fc4f02cf15e061b98b2224332b1739c69ef9db (diff) | |
| download | tinycc-a1c12b9fb9bd2452a90d3cf504574b3605c09702.tar.gz tinycc-a1c12b9fb9bd2452a90d3cf504574b3605c09702.tar.bz2 | |
tests: add memory leak test
Also ...
tcctest.c:
- exclude stuff that gcc doesn't compile on windows.
libtcc.c/tccpp.c:
- use unsigned for memory sizes to avoid printf format warnings
- use "file:line: message" to make IDE error parsers happy.
tccgen.c: fix typo
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/Makefile | 9 | ||||
| -rw-r--r-- | tests/tcctest.c | 8 | ||||
| -rw-r--r-- | tests/tests2/Makefile | 2 |
3 files changed, 16 insertions, 3 deletions
diff --git a/tests/Makefile b/tests/Makefile index a86e8a2..0cdca35 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -5,7 +5,7 @@ TOP = .. include $(TOP)/Makefile VPATH = $(TOPSRC)/tests $(TOPSRC) $(TOP) -CFLAGS = -I$(TOPSRC) -I$(TOP) +CFLAGS := $(filter-out -W% -g% -O%,$(CFLAGS)) -I$(TOPSRC) # what tests to run TESTS = \ @@ -13,6 +13,7 @@ TESTS = \ hello-run \ libtest \ test3 \ + memtest \ dlltest \ abitest \ vla_test-run \ @@ -145,6 +146,12 @@ ifndef CONFIG_WIN32 endif @rm tcc2$(EXESUF) libtcc2$(DLLSUF) +memtest: + @echo ------------ $@ ------------ + $(CC) $(CFLAGS) $(NATIVE_DEFINES) -DONE_SOURCE -DMEM_DEBUG=2 ../tcc.c $(LIBS) -o memtest-tcc$(EXESUF) + ./memtest-tcc$(EXESUF) $(TCCFLAGS) $(NATIVE_DEFINES) -DONE_SOURCE ../tcc.c $(LIBS) + ./memtest-tcc$(EXESUF) $(TCCFLAGS) $(NATIVE_DEFINES) -DONE_SOURCE -run ../tcc.c $(TCCFLAGS) tcctest.c + # memory and bound check auto test BOUNDS_OK = 1 4 8 10 14 diff --git a/tests/tcctest.c b/tests/tcctest.c index 0f71482..2789255 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -3122,6 +3122,7 @@ void other_constraints_test(void) printf ("oc1: %d\n", ret == (unsigned long)&var); } +#ifndef _WIN32 /* Test global asm blocks playing with aliases. */ void base_func(void) { @@ -3161,6 +3162,7 @@ char * get_asm_string (void) char * str = ((char*)bug_table) + bug_table[1]; return str; } +#endif unsigned int set; @@ -3301,12 +3303,15 @@ void asm_test(void) printf("set=0x%x\n", set); val = 0x01020304; printf("swab32(0x%08x) = 0x%0x\n", val, swab32(val)); +#ifndef _WIN32 override_func1(); override_func2(); /* The base_func ref from the following inline asm should find the global one, not the local decl from this function. */ asm volatile(".weak override_func3\n.set override_func3, base_func"); override_func3(); + printf("asmstr: %s\n", get_asm_string()); +#endif /* Check that we can also load structs of appropriate layout into registers. */ asm volatile("" : "=r" (asmret) : "0"(s2)); @@ -3319,7 +3324,6 @@ void asm_test(void) if (!somebool) printf("asmbool: failed\n"); #endif - printf("asmstr: %s\n", get_asm_string()); val = 43; fancy_copy (&val, &val2); printf ("fancycpy(%d)=%d\n", val, val2); @@ -3677,10 +3681,12 @@ typedef struct gate_struct64 gate_desc; gate_desc a_gate_desc; void attrib_test(void) { +#ifndef _WIN32 printf("attr: %d %d %d %d\n", sizeof(struct Spacked), sizeof(spacked), sizeof(Spacked2), sizeof(spacked2)); printf("attr: %d %d\n", sizeof(Spacked3), sizeof(spacked3)); printf("attr: %d %d\n", sizeof(gate_desc), sizeof(a_gate_desc)); +#endif } extern __attribute__((__unused__)) char * __attribute__((__unused__)) * strange_attrib_placement (void); diff --git a/tests/tests2/Makefile b/tests/tests2/Makefile index 166fb2a..ababb43 100644 --- a/tests/tests2/Makefile +++ b/tests/tests2/Makefile @@ -63,7 +63,7 @@ all test: $(filter-out $(SKIP),$(TESTS)) # automatically generate .expect files with gcc: %.expect : %.c - (gcc -w $*.c -o a.exe && ./a.exe $(ARGS)) >$*.expect 2>&1; rm -f a.exe + (gcc -w $*.c -o a.exe && ./a.exe $(ARGS)) $(FILTER) >$*.expect 2>&1; rm -f a.exe # tell make not to delete .PRECIOUS: %.expect |
