diff options
author | Cyril SIX <cyril.six@kalray.eu> | 2019-01-17 13:45:42 +0100 |
---|---|---|
committer | Cyril SIX <cyril.six@kalray.eu> | 2019-01-17 13:45:42 +0100 |
commit | 1848a8f4c08ef55a045d4dc1e78f517182a50442 (patch) | |
tree | bc1d3147c2db76b962c8fa3682ac5dd1e4e6cd3a /test | |
parent | 15c5ca037eabb9891f7880bc2d517982ba34e769 (diff) | |
parent | fe3fc2fd3d5a312ac526c5596e851e315782d9f6 (diff) | |
download | compcert-kvx-1848a8f4c08ef55a045d4dc1e78f517182a50442.tar.gz compcert-kvx-1848a8f4c08ef55a045d4dc1e78f517182a50442.zip |
Merge branch 'mppa_k1c' into mppa_postpass
Diffstat (limited to 'test')
-rw-r--r-- | test/mppa/do_test.sh | 9 | ||||
-rw-r--r-- | test/mppa/instr/Makefile | 56 | ||||
-rw-r--r-- | test/mppa/instr/framework.h | 3 | ||||
-rw-r--r-- | test/mppa/interop/Makefile | 42 | ||||
-rw-r--r-- | test/mppa/interop/vaarg_common.c | 28 | ||||
-rw-r--r-- | test/mppa/lib/Makefile | 133 | ||||
-rw-r--r-- | test/mppa/lib/printf-test.c | 9 | ||||
-rw-r--r-- | test/mppa/lib/printf.c | 9 |
8 files changed, 231 insertions, 58 deletions
diff --git a/test/mppa/do_test.sh b/test/mppa/do_test.sh index bb626203..5cc23dee 100644 --- a/test/mppa/do_test.sh +++ b/test/mppa/do_test.sh @@ -38,4 +38,13 @@ cat << EOF ## EOF (cd interop && make $1 -j$2) + +cat << EOF + +## +# printf wrapper test +## +(cd lib && make $1 -j$2) +EOF + } diff --git a/test/mppa/instr/Makefile b/test/mppa/instr/Makefile index 9d1fbb5f..66e40365 100644 --- a/test/mppa/instr/Makefile +++ b/test/mppa/instr/Makefile @@ -1,15 +1,18 @@ K1CC ?= k1-mbr-gcc CC ?= gcc CCOMP ?= ccomp -CFLAGS ?= -O2 +OPTIM ?= -O2 +CFLAGS ?= $(OPTIM) -Wl,--wrap=printf SIMU ?= k1-mppa -TIMEOUT ?= --signal=SIGTERM 60s +TIMEOUT ?= --signal=SIGTERM 120s DIR=./ SRCDIR=$(DIR) OUTDIR=$(DIR)/out BINDIR=$(DIR)/bin ASMDIR=$(DIR)/asm +LIB=../lib/system.x86-gcc.a +K1LIB=../lib/system.gcc.a ## # Intended flow : .c -> .gcc.s -> .gcc.bin -> .gcc.out @@ -21,7 +24,7 @@ CCPATH=$(shell which $(CC)) CCOMPPATH=$(shell which $(CCOMP)) SIMUPATH=$(shell which $(SIMU)) -TESTNAMES=$(notdir $(subst .c,,$(wildcard $(DIR)/*.c))) +TESTNAMES?=$(notdir $(subst .c,,$(wildcard $(DIR)/*.c))) X86_GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .x86-gcc.out,$(TESTNAMES))) GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .gcc.out,$(TESTNAMES))) CCOMP_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .ccomp.out,$(TESTNAMES))) @@ -37,16 +40,20 @@ BIN=$(addprefix $(BINDIR)/,$(addsuffix .x86-gcc.bin,$(TESTNAMES)))\ all: $(BIN) +GREEN=\033[0;32m +RED=\033[0;31m +NC=\033[0m + .PHONY: test: $(X86_GCC_OUT) $(GCC_OUT) @echo "Comparing x86 gcc output to k1 gcc.." @for test in $(TESTNAMES); do\ x86out=$(OUTDIR)/$$test.x86-gcc.out;\ gccout=$(OUTDIR)/$$test.gcc.out;\ - if ! diff $$x86out $$gccout; then\ - >&2 echo "ERROR: $$x86out and $$gccout differ";\ + if diff -q $$x86out $$gccout > /dev/null; test $${PIPESTATUS[0]} -ne 0; then\ + >&2 printf "$(RED)ERROR: $$x86out and $$gccout differ$(NC)\n";\ else\ - echo "GOOD: $$x86out and $$gccout concur";\ + printf "$(GREEN)GOOD: $$x86out and $$gccout concur$(NC)\n";\ fi;\ done @@ -56,10 +63,10 @@ check: $(GCC_OUT) $(CCOMP_OUT) @for test in $(TESTNAMES); do\ gccout=$(OUTDIR)/$$test.gcc.out;\ ccompout=$(OUTDIR)/$$test.ccomp.out;\ - if ! diff $$ccompout $$gccout; then\ - >&2 echo "ERROR: $$ccompout and $$gccout differ";\ + if diff -q $$ccompout $$gccout > /dev/null; test $${PIPESTATUS[0]} -ne 0; then\ + >&2 printf "$(RED)ERROR: $$ccompout and $$gccout differ$(NC)\n";\ else\ - echo "GOOD: $$ccompout and $$gccout concur";\ + printf "$(GREEN)GOOD: $$ccompout and $$gccout concur$(NC)\n";\ fi;\ done @@ -68,20 +75,13 @@ check: $(GCC_OUT) $(CCOMP_OUT) ## .SECONDARY: -# Generating output +$(LIB): + (cd $(dir $(LIB)) && make) -## Version sans les timeout -#$(OUTDIR)/%.x86-gcc.out: $(BINDIR)/%.x86-gcc.bin -# @mkdir -p $(@D) -# ./$< > $@; echo $$? >> $@ -# -#$(OUTDIR)/%.gcc.out: $(BINDIR)/%.gcc.bin $(SIMUPATH) -# @mkdir -p $(@D) -# $(SIMU) -- $< > $@ ; echo $$? >> $@ -# -#$(OUTDIR)/%.ccomp.out: $(BINDIR)/%.ccomp.bin $(SIMUPATH) -# @mkdir -p $(@D) -# $(SIMU) -- $< > $@ ; echo $$? >> $@ +$(K1LIB): + (cd $(dir $(LIB)) && make) + +# Generating output ## Version avec timeout $(OUTDIR)/%.x86-gcc.out: $(BINDIR)/%.x86-gcc.bin @@ -98,17 +98,17 @@ $(OUTDIR)/%.ccomp.out: $(BINDIR)/%.ccomp.bin $(SIMUPATH) # Assembly to binary -$(BINDIR)/%.x86-gcc.bin: $(ASMDIR)/%.x86-gcc.s $(CCPATH) +$(BINDIR)/%.x86-gcc.bin: $(ASMDIR)/%.x86-gcc.s $(LIB) $(CCPATH) @mkdir -p $(@D) - $(CC) $(CFLAGS) $< -o $@ + $(CC) $(CFLAGS) $(filter-out $(CCPATH),$^) -o $@ -$(BINDIR)/%.gcc.bin: $(ASMDIR)/%.gcc.s $(K1CCPATH) +$(BINDIR)/%.gcc.bin: $(ASMDIR)/%.gcc.s $(K1LIB) $(K1CCPATH) @mkdir -p $(@D) - $(K1CC) $(CFLAGS) $< -o $@ + $(K1CC) $(CFLAGS) $(filter-out $(K1CCPATH),$^) -o $@ -$(BINDIR)/%.ccomp.bin: $(ASMDIR)/%.ccomp.s $(CCOMPPATH) +$(BINDIR)/%.ccomp.bin: $(ASMDIR)/%.ccomp.s $(K1LIB) $(CCOMPPATH) @mkdir -p $(@D) - $(CCOMP) $(CFLAGS) $< -o $@ + $(CCOMP) $(CFLAGS) $(filter-out $(CCOMPPATH),$^) -o $@ # Source to assembly diff --git a/test/mppa/instr/framework.h b/test/mppa/instr/framework.h index 52ba97bc..f43ec616 100644 --- a/test/mppa/instr/framework.h +++ b/test/mppa/instr/framework.h @@ -3,6 +3,8 @@ #include "../prng/prng.c" +int printf(const char *, ...); + #define BEGIN_TEST_N(type, N)\ int main(void){\ type t[N], c, i, j, S;\ @@ -28,6 +30,7 @@ /* In between BEGIN_TEST and END_TEST : definition of c */ #define END_TEST()\ + printf("%llu\n", c);\ S += c;\ }\ return S;\ diff --git a/test/mppa/interop/Makefile b/test/mppa/interop/Makefile index 78271a4e..5818cbcb 100644 --- a/test/mppa/interop/Makefile +++ b/test/mppa/interop/Makefile @@ -3,7 +3,7 @@ CC ?= gcc CCOMP ?= ccomp CFLAGS ?= -O2 -Wno-varargs SIMU ?= k1-mppa -TIMEOUT ?= --signal=SIGTERM 80s +TIMEOUT ?= --signal=SIGTERM 120s DIR=./ SRCDIR=$(DIR) @@ -57,6 +57,10 @@ BIN=$(addprefix $(BINDIR)/,$(addsuffix .x86-gcc.bin,$(TESTNAMES)))\ all: $(BIN) +GREEN=\033[0;32m +RED=\033[0;31m +NC=\033[0m + .PHONY: test: $(X86_GCC_OUT) $(GCC_OUT) $(VAARG_X86_GCC_OUT) $(VAARG_GCC_OUT) @echo "Comparing x86 gcc output to k1 gcc.." @@ -65,15 +69,15 @@ test: $(X86_GCC_OUT) $(GCC_OUT) $(VAARG_X86_GCC_OUT) $(VAARG_GCC_OUT) gccout=$(OUTDIR)/$$test.gcc.out;\ vaarg_x86out=$(OUTDIR)/$$test.x86-gcc.vaarg.out;\ vaarg_gccout=$(OUTDIR)/$$test.gcc.vaarg.out;\ - if ! diff $$x86out $$gccout; then\ - >&2 echo "ERROR: $$x86out and $$gccout differ";\ + if ! diff $$x86out $$gccout > /dev/null; then\ + >&2 printf "$(RED)ERROR: $$x86out and $$gccout differ$(NC)\n";\ else\ - echo "GOOD: $$x86out and $$gccout concur";\ + printf "$(GREEN)GOOD: $$x86out and $$gccout concur$(NC)\n";\ fi;\ - if ! diff $$vaarg_x86out $$vaarg_gccout; then\ - >&2 echo "ERROR: $$vaarg_x86out and $$vaarg_gccout differ";\ + if ! diff $$vaarg_x86out $$vaarg_gccout > /dev/null; then\ + >&2 printf "$(RED)ERROR: $$vaarg_x86out and $$vaarg_gccout differ$(NC)\n";\ else\ - echo "GOOD: $$vaarg_x86out and $$vaarg_gccout concur";\ + printf "$(GREEN)GOOD: $$vaarg_x86out and $$vaarg_gccout concur$(NC)\n";\ fi;\ done @@ -87,25 +91,25 @@ check: $(GCC_OUT) $(CCOMP_OUT) $(GCC_REV_OUT) $(VAARG_GCC_OUT) $(VAARG_CCOMP_OUT vaarg_gccout=$(OUTDIR)/$$test.gcc.vaarg.out;\ vaarg_ccompout=$(OUTDIR)/$$test.ccomp.vaarg.out;\ vaarg_gccrevout=$(OUTDIR)/$$test.gcc.rev.vaarg.out;\ - if ! diff $$ccompout $$gccout; then\ - >&2 echo "ERROR: $$ccompout and $$gccout differ";\ + if ! diff $$ccompout $$gccout > /dev/null; then\ + >&2 printf "$(RED)ERROR: $$ccompout and $$gccout differ$(NC)\n";\ else\ - echo "GOOD: $$ccompout and $$gccout concur";\ + printf "$(GREEN)GOOD: $$ccompout and $$gccout concur$(NC)\n";\ fi;\ - if ! diff $$gccrevout $$gccout; then\ - >&2 echo "ERROR: $$gccrevout and $$gccout differ";\ + if ! diff $$gccrevout $$gccout > /dev/null; then\ + >&2 printf "$(RED)ERROR: $$gccrevout and $$gccout differ$(NC)\n";\ else\ - echo "GOOD: $$gccrevout and $$gccout concur";\ + printf "$(GREEN)GOOD: $$gccrevout and $$gccout concur$(NC)\n";\ fi;\ - if ! diff $$vaarg_ccompout $$vaarg_gccout; then\ - >&2 echo "ERROR: $$vaarg_ccompout and $$vaarg_gccout differ";\ + if ! diff $$vaarg_ccompout $$vaarg_gccout > /dev/null; then\ + >&2 printf "$(RED)ERROR: $$vaarg_ccompout and $$vaarg_gccout differ$(NC)\n";\ else\ - echo "GOOD: $$vaarg_ccompout and $$vaarg_gccout concur";\ + printf "$(GREEN)GOOD: $$vaarg_ccompout and $$vaarg_gccout concur$(NC)\n";\ fi;\ - if ! diff $$vaarg_gccrevout $$vaarg_gccout; then\ - >&2 echo "ERROR: $$vaarg_gccrevout and $$vaarg_gccout differ";\ + if ! diff $$vaarg_gccrevout $$vaarg_gccout > /dev/null; then\ + >&2 printf "$(RED)ERROR: $$vaarg_gccrevout and $$vaarg_gccout differ$(NC)\n";\ else\ - echo "GOOD: $$vaarg_gccrevout and $$vaarg_gccout concur";\ + printf "$(GREEN)GOOD: $$vaarg_gccrevout and $$vaarg_gccout concur$(NC)\n";\ fi;\ done diff --git a/test/mppa/interop/vaarg_common.c b/test/mppa/interop/vaarg_common.c index a04b67bf..9033893b 100644 --- a/test/mppa/interop/vaarg_common.c +++ b/test/mppa/interop/vaarg_common.c @@ -14,7 +14,7 @@ a10 + a11 - a12 ^ a13 + a14 - a15 + a16 ^ a17 + a18 + a19 +\ a20 + a21 + a22 * a23 + a24 + a25 << a26 & a27 + a28 + a29) -#define VA_START(vl, n) va_list vl; va_start(vl, n) +#define VA_START(vl, arg) va_list vl; va_start(vl, arg) #define VA_END(vl) va_end(vl) void void_void(void){ @@ -29,7 +29,7 @@ long long ll_void(void){ // int i_oneiarg(int arg){ int i_oneiarg(int arg, ...){ STACK; - VA_START(vl, 0); + VA_START(vl, arg); VA_END(vl); return ONEARG_OP(arg); } @@ -37,7 +37,7 @@ int i_oneiarg(int arg, ...){ //int i_multiiargs(int arg1, char arg2, char arg3, int arg4){ int i_multiiargs(int arg1, ...){ STACK; - VA_START(vl, 3); + VA_START(vl, arg1); char arg2 = va_arg(vl, int); char arg3 = va_arg(vl, int); int arg4 = va_arg(vl, int); @@ -51,19 +51,23 @@ int i_multiiargs(int arg1, ...){ int i_manyiargs(char a0, ...) { STACK; - VA_START(vl, 29); + VA_START(vl, a0); + VA_START(vl2, a0); int a1 = va_arg(vl, int); char a2 = va_arg(vl, int); int a3 = va_arg(vl, int); char a4 = va_arg(vl, int); char a5 = va_arg(vl, int); + char b1 = va_arg(vl2, int); int a6 = va_arg(vl, int); int a7 = va_arg(vl, int); char a8 = va_arg(vl, int); + char b2 = va_arg(vl2, int); int a9 = va_arg(vl, int); char a10 = va_arg(vl, int); int a11 = va_arg(vl, int); char a12 = va_arg(vl, int); + char b3 = va_arg(vl2, int); int a13 = va_arg(vl, int); char a14 = va_arg(vl, int); char a15 = va_arg(vl, int); @@ -78,19 +82,21 @@ int i_manyiargs(char a0, ...) char a24 = va_arg(vl, int); char a25 = va_arg(vl, int); int a26 = va_arg(vl, int); + char b4 = va_arg(vl2, int); int a27 = va_arg(vl, int); char a28 = va_arg(vl, int); int a29 = va_arg(vl, int); VA_END(vl); - return MANYARG_OP(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, - a20, a21, a22, a23, a24, a25, a26, a27, a28, a29); + VA_END(vl); + return MANYARG_OP(a0, a1, a2, a3, a4, (a5*b2), a6, a7, a8, a9, + (a10*b3), a11, a12, a13, a14, a15, a16, a17, a18, a19, + a20, (a21*b1), a22, a23, (a24*b3), a25, a26, a27, a28, a29); } //int ll_onellarg(long long arg){ int ll_onellarg(long long arg, ...){ STACK; - VA_START(vl, 0); + VA_START(vl, arg); VA_END(vl); return ONEARG_OP(arg); } @@ -98,7 +104,7 @@ int ll_onellarg(long long arg, ...){ //long long ll_multillargs(long long arg1, char arg2, char arg3, long long arg4){ long long ll_multillargs(long long arg1, ...){ STACK; - VA_START(vl, 3); + VA_START(vl, arg1); char arg2 = va_arg(vl, int); char arg3 = va_arg(vl, int); long long arg4 = va_arg(vl, long long); @@ -112,7 +118,7 @@ long long ll_multillargs(long long arg1, ...){ long long ll_manyllargs(char a0, ...) { STACK; - VA_START(vl, 29); + VA_START(vl, a0); int a1 = va_arg(vl, int); char a2 = va_arg(vl, int); long long a3 = va_arg(vl, long long); @@ -153,7 +159,7 @@ long long ll_manyllargs(char a0, ...) // char a20, int a21, char a22, long long a23, char a24, char a25, long long a26, int a27, char a28, long long a29) long long stackhell(char a0, ...) { - VA_START(vl, 29); + VA_START(vl, a0); int a1 = va_arg(vl, int); char a2 = va_arg(vl, int); long long a3 = va_arg(vl, long long); diff --git a/test/mppa/lib/Makefile b/test/mppa/lib/Makefile new file mode 100644 index 00000000..affc1afd --- /dev/null +++ b/test/mppa/lib/Makefile @@ -0,0 +1,133 @@ +K1CC ?= k1-mbr-gcc +K1AR ?= k1-mbr-ar +CC ?= gcc +AR ?= gcc-ar +CCOMP ?= ccomp +CFLAGS ?= -O1 -Wl,--wrap=printf +SIMU ?= k1-mppa +TIMEOUT ?= --signal=SIGTERM 60s + +DIR=./ +SRCDIR=$(DIR) +OUTDIR=$(DIR)/out +BINDIR=$(DIR)/bin +ASMDIR=$(DIR)/asm +OBJDIR=$(DIR)/obj + +K1CCPATH=$(shell which $(K1CC)) +K1ARPATH=$(shell which $(K1AR)) +CCPATH=$(shell which $(CC)) +ARPATH=$(shell which $(AR)) +SIMUPATH=$(shell which $(SIMU)) + +TESTNAMES=printf-test +X86_GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .x86-gcc.out,$(TESTNAMES))) +GCC_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .gcc.out,$(TESTNAMES))) +CCOMP_OUT=$(addprefix $(OUTDIR)/,$(addsuffix .ccomp.out,$(TESTNAMES))) + +OUT=$(X86_GCC_OUT) $(GCC_OUT) $(CCOMP_OUT) +BIN=$(addprefix $(BINDIR)/,$(addsuffix .x86-gcc.bin,$(TESTNAMES)))\ + $(addprefix $(BINDIR)/,$(addsuffix .gcc.bin,$(TESTNAMES)))\ + $(addprefix $(BINDIR)/,$(addsuffix .ccomp.bin,$(TESTNAMES))) + +## +# Targets +## + +all: $(BIN) system.x86-gcc.a system.gcc.a + +.PHONY: +test: $(X86_GCC_OUT) $(GCC_OUT) + @echo "Comparing x86 gcc output to k1 gcc.." + @for test in $(TESTNAMES); do\ + x86out=$(OUTDIR)/$$test.x86-gcc.out;\ + gccout=$(OUTDIR)/$$test.gcc.out;\ + if ! diff $$x86out $$gccout; then\ + >&2 echo "ERROR: $$x86out and $$gccout differ";\ + else\ + echo "GOOD: $$x86out and $$gccout concur";\ + fi;\ + done + +.PHONY: +check: $(GCC_OUT) $(CCOMP_OUT) + @echo "Comparing k1 gcc output to ccomp.." + @for test in $(TESTNAMES); do\ + gccout=$(OUTDIR)/$$test.gcc.out;\ + ccompout=$(OUTDIR)/$$test.ccomp.out;\ + if ! diff $$ccompout $$gccout; then\ + >&2 echo "ERROR: $$ccompout and $$gccout differ";\ + else\ + echo "GOOD: $$ccompout and $$gccout concur";\ + fi;\ + done + +## +# Rules +## + +.SECONDARY: + +# Generating output + +## Version avec timeout +$(OUTDIR)/%.x86-gcc.out: $(BINDIR)/%.x86-gcc.bin + @mkdir -p $(@D) + ret=0; timeout $(TIMEOUT) ./$< > $@ || { ret=$$?; }; echo $$ret >> $@ + +$(OUTDIR)/%.gcc.out: $(BINDIR)/%.gcc.bin $(SIMUPATH) + @mkdir -p $(@D) + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< > $@ || { ret=$$?; }; echo $$ret >> $@ + +$(OUTDIR)/%.ccomp.out: $(BINDIR)/%.ccomp.bin $(SIMUPATH) + @mkdir -p $(@D) + ret=0; timeout $(TIMEOUT) $(SIMU) -- $< > $@ || { ret=$$?; }; echo $$ret >> $@ + +# Object to binary + +$(BINDIR)/%.x86-gcc.bin: $(OBJDIR)/%.x86-gcc.o system.x86-gcc.a $(CCPATH) + @mkdir -p $(@D) + $(CC) $(CFLAGS) $(filter-out $(CCPATH),$^) -o $@ + +$(BINDIR)/%.gcc.bin: $(OBJDIR)/%.gcc.o system.gcc.a $(K1CCPATH) + @mkdir -p $(@D) + $(K1CC) $(CFLAGS) $(filter-out $(K1CCPATH),$^) -o $@ + +$(BINDIR)/%.ccomp.bin: $(OBJDIR)/%.ccomp.o system.gcc.a $(CCOMPPATH) + @mkdir -p $(@D) + $(CCOMP) $(CFLAGS) $(filter-out $(CCOMPPATH),$^) -o $@ + +# Generating libraries +system.x86-gcc.a: $(OBJDIR)/printf.x86-gcc.o $(ARPATH) + $(AR) rcs $@ $< + +system.gcc.a: $(OBJDIR)/printf.gcc.o $(K1ARPATH) + $(K1AR) rcs $@ $< + +# Assembly to object + +$(OBJDIR)/%.x86-gcc.o: $(ASMDIR)/%.x86-gcc.s $(CCPATH) + @mkdir -p $(@D) + $(CC) $(CFLAGS) -c $< -o $@ + +$(OBJDIR)/%.gcc.o: $(ASMDIR)/%.gcc.s $(K1CCPATH) + @mkdir -p $(@D) + $(K1CC) $(CFLAGS) -c $< -o $@ + +$(OBJDIR)/%.ccomp.o: $(ASMDIR)/%.ccomp.s $(CCOMPPATH) + $(CCOMP) $(CFLAGS) -c $< -o $@ + +# Source to assembly + +$(ASMDIR)/%.x86-gcc.s: $(SRCDIR)/%.c $(CCPATH) + @mkdir -p $(@D) + $(CC) $(CFLAGS) -S $< -o $@ + +$(ASMDIR)/%.gcc.s: $(SRCDIR)/%.c $(K1CCPATH) + @mkdir -p $(@D) + $(K1CC) $(CFLAGS) -S $< -o $@ + +$(ASMDIR)/%.ccomp.s: $(SRCDIR)/%.c $(CCOMPPATH) + @mkdir -p $(@D) + $(CCOMP) $(CFLAGS) -S $< -o $@ + diff --git a/test/mppa/lib/printf-test.c b/test/mppa/lib/printf-test.c new file mode 100644 index 00000000..25afd436 --- /dev/null +++ b/test/mppa/lib/printf-test.c @@ -0,0 +1,9 @@ +int printf(const char *, ...); + +int main(void){ + int a = 42; + char *str = "Hi there"; + printf("%s, I am %u\n", str, a); + + return 0; +} diff --git a/test/mppa/lib/printf.c b/test/mppa/lib/printf.c new file mode 100644 index 00000000..79984ef6 --- /dev/null +++ b/test/mppa/lib/printf.c @@ -0,0 +1,9 @@ +#include <stdio.h> +#include <stdarg.h> + +int __wrap_printf(const char *format, ...){ + va_list args; + va_start(args, format); + vprintf(format, args); + va_end(args); +} |