From fdfbc7f2466cba296ef3316b84dd4d902add4872 Mon Sep 17 00:00:00 2001 From: borutr Date: Sun, 1 Feb 2009 11:11:47 +0000 Subject: [PATCH] * device/lib/Makefile.in, device/lib/gbz80/Makefile.in, device/lib/hc08/Makefile.in, device/lib/incl.mk, device/lib/z80/Makefile.in: don't remake libraries * support/regression/tests/snprintf.c: git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5351 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 9 ++ device/lib/Makefile.in | 187 +++------------------------ device/lib/gbz80/Makefile.in | 37 ++++-- device/lib/hc08/Makefile.in | 42 +++++-- device/lib/incl.mk | 96 ++++++++++++++ device/lib/z80/Makefile.in | 43 +++++-- support/regression/tests/snprintf.c | 189 ++++++++++++++-------------- 7 files changed, 317 insertions(+), 286 deletions(-) diff --git a/ChangeLog b/ChangeLog index acf3e1c8..f38d90ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-02-01 Borut Razem + + * device/lib/Makefile.in, device/lib/gbz80/Makefile.in, + device/lib/hc08/Makefile.in, device/lib/incl.mk, + device/lib/z80/Makefile.in: + don't remake libraries + * support/regression/tests/snprintf.c: + reenable floating point in small-xstack-auto library + 2008-01-26 Raphael Neider * src/pic16/ralloc.c (packForPush): disabled to fix #2496919 diff --git a/device/lib/Makefile.in b/device/lib/Makefile.in index 44fc4143..fc5d9050 100644 --- a/device/lib/Makefile.in +++ b/device/lib/Makefile.in @@ -69,102 +69,6 @@ OPT_DISABLE_PIC16 = @OPT_DISABLE_PIC16@ OPT_DISABLE_XA51 = @OPT_DISABLE_XA51@ OPT_DISABLE_Z80 = @OPT_DISABLE_Z80@ -COMMON_FLOAT = \ - _atof.c \ - _schar2fs.c \ - _sint2fs.c \ - _slong2fs.c \ - _uchar2fs.c \ - _uint2fs.c \ - _ulong2fs.c \ - _fs2schar.c \ - _fs2sint.c \ - _fs2slong.c \ - _fs2uchar.c \ - _fs2uint.c \ - _fs2ulong.c \ - _fsadd.c \ - _fsdiv.c \ - _fsmul.c \ - _fssub.c \ - _fseq.c \ - _fsgt.c \ - _fslt.c \ - _fsneq.c \ - fabsf.c \ - frexpf.c \ - ldexpf.c \ - expf.c \ - powf.c \ - sincosf.c \ - sinf.c \ - cosf.c \ - logf.c \ - log10f.c \ - sqrtf.c \ - tancotf.c \ - tanf.c \ - cotf.c \ - asincosf.c \ - asinf.c \ - acosf.c \ - atanf.c \ - atan2f.c \ - sincoshf.c \ - sinhf.c \ - coshf.c \ - tanhf.c \ - floorf.c \ - ceilf.c \ - modff.c \ - errno.c - -COMMON_LONG = \ - _divslong.c \ - _modslong.c \ - _modulong.c - -COMMON_SDCC = \ - _atoi.c \ - _atol.c \ - abs.c \ - labs.c \ - rand.c \ - _iscntrl.c \ - _isdigit.c \ - _isgraph.c \ - _isprint.c \ - _ispunct.c \ - _isspace.c \ - _islower.c \ - _isupper.c \ - _isxdigit.c \ - _strcat.c \ - _strchr.c \ - _strcmp.c \ - _strcpy.c \ - _strcspn.c \ - _strncat.c \ - _strncmp.c \ - _strncpy.c \ - _strpbrk.c \ - _strrchr.c \ - _strspn.c \ - _strstr.c \ - _strtok.c \ - _memcmp.c \ - _memcpy.c \ - _memset.c \ - _calloc.c \ - _malloc.c \ - _realloc.c \ - _free.c \ - printf_large.c \ - puts.c \ - gets.c \ - assert.c \ - time.c - SOURCES_FLOAT = $(COMMON_FLOAT) \ _fscmp.c \ _fsget1arg.c \ @@ -220,24 +124,6 @@ OBJECTS_SDCC = $(SOURCES_SDCC:%.c=$(PORT)/%.rel) OBJECTS = $(OBJECTS_FLOAT) $(OBJECTS_INT) $(OBJECTS_LONG) $(OBJECTS_SDCC) -Z80_FLOAT = $(COMMON_FLOAT) - -Z80_INT = $(COMMON_INT) - -Z80_LONG = $(COMMON_LONG) \ - _divulong.c \ - _mullong.c - -Z80_SDCC = $(COMMON_SDCC) \ - _itoa.c \ - _ltoa.c \ - _startup.c \ - sprintf.c \ - vprintf.c - -Z80SOURCES = $(Z80_FLOAT) $(Z80_INT) $(Z80_LONG) $(Z80_SDCC) -Z80OBJECTS = $(Z80SOURCES:%.c=$(PORT)/%.o) - XA51_FLOAT = $(COMMON_FLOAT) XA51_INT = $(COMMON_INT) \ @@ -256,31 +142,18 @@ XA51_SDCC = $(COMMON_SDCC) \ _strlen.c \ _heap.c -XA51SOURCES = $(Z80_FLOAT) $(XA51_INT) $(XA51_LONG) $(XA51_SDCC) +XA51SOURCES = $(XA51_FLOAT) $(XA51_INT) $(XA51_LONG) $(XA51_SDCC) XA51OBJECTS = $(XA51SOURCES:%.c=$(PORT)/%.rel) -HC08_FLOAT = $(COMMON_FLOAT) - -HC08_INT = $(COMMON_INT) \ - _divsint.c \ - _modsint.c \ - _moduint.c - -HC08_LONG = $(COMMON_LONG) - -HC08_SDCC = $(COMMON_SDCC) \ - _itoa.c \ - _ltoa.c \ - _spx.c \ - _startup.c \ - _strlen.c \ - _memmove.c \ - _heap.c \ - sprintf.c \ - vprintf.c - -HC08SOURCES = $(HC08_FLOAT) $(HC08_INT) $(HC08_LONG) $(HC08_SDCC) -HC08OBJECTS = $(patsubst %.c,$(PORT)/%.rel,$(HC08SOURCES)) +ifeq ($(LIB_TYPE), SDCCLIB) +LIB_FILES = $(PORTDIR)/libfloat.lib $(PORTDIR)/libint.lib $(PORTDIR)/liblong.lib $(PORTDIR)/libsdcc.lib +else ifeq ($(LIB_TYPE), AR) +LIB_FILES = $(PORTDIR)/libfloat.lib $(PORTDIR)/libint.lib $(PORTDIR)/liblong.lib $(PORTDIR)/libsdcc.lib +else ifeq ($(LIB_TYPE), RANLIB) +LIB_FILES = $(PORTDIR)/libfloat.lib $(PORTDIR)/libint.lib $(PORTDIR)/liblong.lib $(PORTDIR)/libsdcc.lib +else +LIB_FILES = $($(OBJECTS_FLOAT) $(OBJECTS_INT) $(OBJECTS_LONG) $(OBJECTS_SDCC) $(PORTDIR)/libfloat.lib $(PORTDIR)/libint.lib $(PORTDIR)/liblong.lib $(PORTDIR)/libsdcc.lib +endif OEXT = .rel @@ -322,7 +195,7 @@ endif # ------------------------------------------ all: checkconf $(TARGETS) -objects: build-dir $(OBJECTS) port-specific-objects lib-files clean_intermediate +objects: build-dir $(OBJECTS) port-specific-objects $(LIB_FILES) clean_intermediate models: if grep '^mcs51\>' $(top_builddir)/ports.build > /dev/null; then \ @@ -340,7 +213,7 @@ small-mcs51-stack-auto: model-mcs51-stack-auto: if grep '^mcs51\>' $(top_builddir)/ports.build > /dev/null; then \ for model in $(MODELS); do \ - mkdir -p $${model}-stack-auto; cp $${model}/Makefile $${model}-stack-auto; \ + mkdir -p $${model}-stack-auto; cp $${model}/Makefile $${model}-stack-auto; \ $(MAKE) MODELFLAGS="--model-$$model --stack-auto" PORT=$${model}-stack-auto PORTDIR=$(abspath $(BUILDDIR)/$${model}-stack-auto) PORTINCDIR=$(INCDIR)/mcs51 objects; \ done \ fi @@ -349,7 +222,9 @@ model-mcs51-xstack-auto: if grep '^mcs51\>' $(top_builddir)/ports.build > /dev/null; then \ for model in $(MODELS); do \ mkdir -p $${model}-xstack-auto; cp $${model}/Makefile $${model}-xstack-auto; \ - $(MAKE) MODELFLAGS="--model-$$model --stack-auto --xstack" PORT=$${model}-xstack-auto PORTDIR=$(abspath $(BUILDDIR)/$${model}-xstack-auto) PORTINCDIR=$(INCDIR)/mcs51 objects; \ + MODELFLAGS="--model-$$model --stack-auto --xstack"; \ + if test "$$model" = "large"; then MODELFLAGS="$$MODELFLAGS -DUSE_FLOATS=1"; fi; \ + $(MAKE) MODELFLAGS="$$MODELFLAGS" PORT=$${model}-xstack-auto PORTDIR=$(abspath $(BUILDDIR)/$${model}-xstack-auto) PORTINCDIR=$(INCDIR)/mcs51 objects; \ done \ fi @@ -369,6 +244,8 @@ model-xa51: fi objects-xa51: build-dir $(XA51OBJECTS) port-specific-objects + +$(PORTDIR)/lib$(PORT).lib: $(XA51OBJECTS) ifeq ($(LIB_TYPE), SDCCLIB) ../../bin/sdcclib -a $(PORTDIR)/lib$(PORT).lib $(XA51OBJECTS) else ifeq ($(LIB_TYPE), AR) @@ -392,38 +269,14 @@ model-gbz80: $(MAKE) MODELFLAGS="-mgbz80" PORT=gbz80 objects-z80 OEXT=.o; \ fi -objects-z80: build-dir $(Z80OBJECTS) port-specific-objects clean_intermediate -ifeq ($(LIB_TYPE), SDCCLIB) - ../../bin/sdcclib -a $(PORTDIR)/$(PORT).lib $(Z80OBJECTS) -else ifeq ($(LIB_TYPE), AR) - ar -Sq $(PORTDIR)/$(PORT).lib $(Z80OBJECTS) -else ifeq ($(LIB_TYPE), RANLIB) - ar -Sq $(PORTDIR)/$(PORT).lib $(Z80OBJECTS) - $(top_builddir)/bin/asranlib $(PORTDIR)/$(PORT).lib -else - rm -f $(PORTDIR)/lib$(PORT).lib - for i in $(notdir $(basename $(Z80OBJECTS))); do echo $$i >> $(PORTDIR)/lib$(PORT).lib; done - cp $(Z80OBJECTS) $(PORTDIR) -endif +objects-z80: build-dir port-specific-objects clean_intermediate model-hc08: if grep '^hc08\>' $(top_builddir)/ports.build > /dev/null; then \ $(MAKE) MODELFLAGS="-mhc08" PORT=hc08 objects-hc08; \ fi -objects-hc08: build-dir $(HC08OBJECTS) port-specific-objects clean_intermediate -ifeq ($(LIB_TYPE), SDCCLIB) - ../../bin/sdcclib -a $(PORTDIR)/$(PORT).lib $(HC08OBJECTS) -else ifeq ($(LIB_TYPE), AR) - ar -Sq $(PORTDIR)/$(PORT).lib $(HC08OBJECTS) -else ifeq ($(LIB_TYPE), RANLIB) - ar -Sq $(PORTDIR)/$(PORT).lib $(HC08OBJECTS) - $(top_builddir)/bin/asranlib $(PORTDIR)/$(PORT).lib -else - rm -f $(PORTDIR)/lib$(PORT).lib - for i in $(notdir $(basename $(HC08OBJECTS))); do echo $$i >> $(PORTDIR)/lib$(PORT).lib; done - cp $(HC08OBJECTS) $(PORTDIR) -endif +objects-hc08: build-dir port-specific-objects clean_intermediate model-pic16: if grep '^pic16\>' $(top_builddir)/ports.build > /dev/null; then \ @@ -472,7 +325,7 @@ port-specific-objects-pic14: cp -f $(PORT)/bin/*.* $(PORTDIR); \ fi -lib-files: +$(LIB_FILES): $(OBJECTS_FLOAT) $(OBJECTS_INT) $(OBJECTS_LONG) $(OBJECTS_SDCC) ifeq ($(LIB_TYPE), SDCCLIB) ../../bin/sdcclib -a $(PORTDIR)/libfloat.lib $(OBJECTS_FLOAT) ../../bin/sdcclib -a $(PORTDIR)/libint.lib $(OBJECTS_INT) diff --git a/device/lib/gbz80/Makefile.in b/device/lib/gbz80/Makefile.in index 1828b971..fbd635b6 100644 --- a/device/lib/gbz80/Makefile.in +++ b/device/lib/gbz80/Makefile.in @@ -13,34 +13,55 @@ SAS = $(TOPDIR)/bin/as-gbz80 PORTDIR = ../build/gbz80 +include $(srcdir)/../incl.mk + +Z80_FLOAT = $(COMMON_FLOAT) + +Z80_INT = $(COMMON_INT) + +Z80_LONG = $(COMMON_LONG) \ + _divulong.c \ + _mullong.c + +Z80_SDCC = $(COMMON_SDCC) \ + _itoa.c \ + _ltoa.c \ + _startup.c \ + sprintf.c \ + vprintf.c + +Z80SOURCES = $(addprefix ../,$(Z80_FLOAT) $(Z80_INT) $(Z80_LONG) $(Z80_SDCC)) +Z8OBJECTS = $(patsubst %.c,%.o,$(Z80_FLOAT) $(Z80_INT) $(Z80_LONG) $(Z80_SDCC)) + OBJ = div.o mul.o putchar.o printf.o shift.o stubs.o crt0_rle.o heap.o fstubs.o LIB = gbz80.lib CC = $(SCC) AS = $(SAS) -CFLAGS = -I$(srcdir)/../../include -I. --std-c89 +CFLAGS = -I$(srcdir)/../../include -I. --std-c99 all: $(PORTDIR)/$(LIB) crt0.o -$(PORTDIR)/$(LIB): $(OBJ) Makefile _dummy +$(PORTDIR)/$(LIB): $(OBJ) $(Z8OBJECTS) Makefile ifeq ($(LIB_TYPE), SDCCLIB) rm -f $@; \ - ../../../bin/sdcclib -a $@ $(OBJ) + ../../../bin/sdcclib -a $@ $(OBJ) $(Z8OBJECTS) else ifeq ($(LIB_TYPE), AR) ar -Scq $@ $(OBJ) else ifeq ($(LIB_TYPE), RANLIB) - ar -Scq $@ $(OBJ) + ar -Scq $@ $(OBJ) $(Z8OBJECTS) $(top_builddir)/bin/asranlib $@ else rm -f $@ - for i in $(basename $(OBJ)); do echo $$i >>$@; done - cp $(OBJ) $(PORTDIR) + for i in $(basename $(OBJ) $(Z8OBJECTS)); do echo $$i >>$@; done + cp $(OBJ) $(Z8OBJECTS) $(PORTDIR) endif -.c.o: +%.o: ../%.c $(CC) $(CFLAGS) -c $< -_dummy: +%.o: %.c + $(CC) $(CFLAGS) -c $< clean: rm -f *.o *.sym *.lst *~ $(CLEANSPEC) *.dump* *.asm *.lib diff --git a/device/lib/hc08/Makefile.in b/device/lib/hc08/Makefile.in index 7b8e7a07..1df65adf 100644 --- a/device/lib/hc08/Makefile.in +++ b/device/lib/hc08/Makefile.in @@ -13,6 +13,31 @@ SAS = $(TOPDIR)/bin/as6808 PORTDIR = ../build/hc08 +include $(srcdir)/../incl.mk + +HC08_FLOAT = $(COMMON_FLOAT) + +HC08_INT = $(COMMON_INT) \ + _divsint.c \ + _modsint.c \ + _moduint.c + +HC08_LONG = $(COMMON_LONG) + +HC08_SDCC = $(COMMON_SDCC) \ + _itoa.c \ + _ltoa.c \ + _spx.c \ + _startup.c \ + _strlen.c \ + _memmove.c \ + _heap.c \ + sprintf.c \ + vprintf.c + +HC08SOURCES = $(addprefix ../,$(HC08_FLOAT) $(HC08_INT) $(HC08_LONG) $(HC08_SDCC)) +HC08OBJECTS = $(patsubst %.c,%.rel,$(HC08_FLOAT) $(HC08_INT) $(HC08_LONG) $(HC08_SDCC)) + OBJ = _ret.rel _divuint.rel _divulong.rel _mulint.rel _mullong.rel LIB = hc08.lib @@ -24,29 +49,30 @@ CFLAGS = -I$(srcdir)/../../include -I. --std-c99 all: $(PORTDIR)/$(LIB) -$(PORTDIR)/$(LIB): $(OBJ) Makefile _dummy +$(PORTDIR)/$(LIB): $(OBJ) $(HC08OBJECTS) Makefile ifeq ($(LIB_TYPE), SDCCLIB) rm -f $@; \ - ../../../bin/sdcclib -a $@ $(OBJ) + ../../../bin/sdcclib -a $@ $(OBJ) $(HC08OBJECTS) else ifeq ($(LIB_TYPE), AR) - ar -Scq $@ $(OBJ) + ar -Scq $@ $(OBJ) $(HC08OBJECTS) else ifeq ($(LIB_TYPE), RANLIB) - ar -Scq $@ $(OBJ) + ar -Scq $@ $(OBJ) $(HC08OBJECTS) $(top_builddir)/bin/asranlib $@ else rm -f $@ - for i in $(basename $(OBJ)); do echo $$i >>$@; done - cp $(OBJ) $(PORTDIR) + for i in $(basename $(OBJ) $(HC08OBJECTS)); do echo $$i >>$@; done + cp $(OBJ) $(HC08OBJECTS) $(PORTDIR) endif +%.rel: ../%.c + $(CC) $(CFLAGS) -c $< + %.rel: %.c $(CC) $(CFLAGS) -c $< %.rel: %.asm $(AS) $(ASFLAGS) $@ $< -_dummy: - clean: rm -f *.rel *.sym *.lst *~ $(CLEANSPEC) *.dump* *.asm *.lib diff --git a/device/lib/incl.mk b/device/lib/incl.mk index 5e7888ac..7ab6038b 100644 --- a/device/lib/incl.mk +++ b/device/lib/incl.mk @@ -1 +1,97 @@ +COMMON_FLOAT = \ + _atof.c \ + _schar2fs.c \ + _sint2fs.c \ + _slong2fs.c \ + _uchar2fs.c \ + _uint2fs.c \ + _ulong2fs.c \ + _fs2schar.c \ + _fs2sint.c \ + _fs2slong.c \ + _fs2uchar.c \ + _fs2uint.c \ + _fs2ulong.c \ + _fsadd.c \ + _fsdiv.c \ + _fsmul.c \ + _fssub.c \ + _fseq.c \ + _fsgt.c \ + _fslt.c \ + _fsneq.c \ + fabsf.c \ + frexpf.c \ + ldexpf.c \ + expf.c \ + powf.c \ + sincosf.c \ + sinf.c \ + cosf.c \ + logf.c \ + log10f.c \ + sqrtf.c \ + tancotf.c \ + tanf.c \ + cotf.c \ + asincosf.c \ + asinf.c \ + acosf.c \ + atanf.c \ + atan2f.c \ + sincoshf.c \ + sinhf.c \ + coshf.c \ + tanhf.c \ + floorf.c \ + ceilf.c \ + modff.c \ + errno.c + +COMMON_LONG = \ + _divslong.c \ + _modslong.c \ + _modulong.c + +COMMON_SDCC = \ + _atoi.c \ + _atol.c \ + abs.c \ + labs.c \ + rand.c \ + _iscntrl.c \ + _isdigit.c \ + _isgraph.c \ + _isprint.c \ + _ispunct.c \ + _isspace.c \ + _islower.c \ + _isupper.c \ + _isxdigit.c \ + _strcat.c \ + _strchr.c \ + _strcmp.c \ + _strcpy.c \ + _strcspn.c \ + _strncat.c \ + _strncmp.c \ + _strncpy.c \ + _strpbrk.c \ + _strrchr.c \ + _strspn.c \ + _strstr.c \ + _strtok.c \ + _memcmp.c \ + _memcpy.c \ + _memset.c \ + _calloc.c \ + _malloc.c \ + _realloc.c \ + _free.c \ + printf_large.c \ + puts.c \ + gets.c \ + assert.c \ + time.c + MODELS = small medium large diff --git a/device/lib/z80/Makefile.in b/device/lib/z80/Makefile.in index cf98fbfe..af720307 100644 --- a/device/lib/z80/Makefile.in +++ b/device/lib/z80/Makefile.in @@ -13,6 +13,26 @@ SAS = $(TOPDIR)/bin/as-z80 PORTDIR = ../build/z80 +include $(srcdir)/../incl.mk + +Z80_FLOAT = $(COMMON_FLOAT) + +Z80_INT = $(COMMON_INT) + +Z80_LONG = $(COMMON_LONG) \ + _divulong.c \ + _mullong.c + +Z80_SDCC = $(COMMON_SDCC) \ + _itoa.c \ + _ltoa.c \ + _startup.c \ + sprintf.c \ + vprintf.c + +Z80SOURCES = $(addprefix ../,$(Z80_FLOAT) $(Z80_INT) $(Z80_LONG) $(Z80_SDCC)) +Z8OBJECTS = $(patsubst %.c,%.o,$(Z80_FLOAT) $(Z80_INT) $(Z80_LONG) $(Z80_SDCC)) + OBJ = div.o divsigned.o mod.o mul.o mulchar.o putchar.o shift.o stubs.o crt0_rle.o heap.o fstubs.o memmove.o strlen.o LIB = z80.lib @@ -20,35 +40,36 @@ CC = $(SCC) AS = $(SAS) ASFLAGS = -plosgff -CFLAGS = -I$(srcdir)/../../include -I. --std-c89 +CFLAGS = -I$(srcdir)/../../include -I. --std-c99 all: $(PORTDIR)/$(LIB) $(PORTDIR)/crt0.o $(PORTDIR)/crt0.o: crt0.o cp crt0.o $(PORTDIR)/crt0.o -$(PORTDIR)/$(LIB): $(OBJ) Makefile _dummy +$(PORTDIR)/$(LIB): $(OBJ) $(Z8OBJECTS) Makefile ifeq ($(LIB_TYPE), SDCCLIB) rm -f $@; \ - ../../../bin/sdcclib -a $@ $(OBJ) + ../../../bin/sdcclib -a $@ $(OBJ) $(Z8OBJECTS) else ifeq ($(LIB_TYPE), AR) - ar -Scq $@ $(OBJ) + ar -Scq $@ $(OBJ) $(Z8OBJECTS) else ifeq ($(LIB_TYPE), RANLIB) - ar -Scq $@ $(OBJ) + ar -Scq $@ $(OBJ) $(Z8OBJECTS) $(top_builddir)/bin/asranlib $@ else rm -f $@; \ - for i in $(basename $(OBJ)); do echo $$i >>$@; done - cp $(OBJ) $(PORTDIR) + for i in $(basename $(OBJ) $(Z8OBJECTS)); do echo $$i >>$@; done + cp $(OBJ) $(Z8OBJECTS) $(PORTDIR) endif -.c.o: +%.o: ../%.c $(CC) $(CFLAGS) -c $< -.s.o: - $(AS) $(ASFLAGS) $@ $< +%.o: %.c + $(CC) $(CFLAGS) -c $< -_dummy: +%.o: %.s + $(AS) $(ASFLAGS) $@ $< clean: rm -f *.o *.sym *.lst *~ $(CLEANSPEC) *.dump* *.asm *.lib diff --git a/support/regression/tests/snprintf.c b/support/regression/tests/snprintf.c index 6ed6972d..c65054db 100644 --- a/support/regression/tests/snprintf.c +++ b/support/regression/tests/snprintf.c @@ -17,110 +17,115 @@ #if defined(INT) - struct { - int arg; - char *fmt; - char *result; - } static const cases[]={ - // arg, fmt, result - {0xab, "%04x", "00ab"}, - {0xffff, "0x%02X", "0xFFFF"}, - {0xffffu, "%u", "65535"}, - {1234, "%+6d", " +1234"}, - {12345, "% d", " 12345"}, - {-1234, "%d", "-1234"}, - {32767, "%8d", " 32767"}, - {1, "%%%d", "%1"}, - {1001, "%08i", "00001001"}, - {101, "%-+8d", "+101 "}, - {01234, "%o(oct)", "1234(oct)"}, - - // do we want to check these: - #if defined(SDCC) && !defined(SDCC_z80) && CHECK_B - {0x4142, "%bc %bx", "\x41 42"}, /* non-std: print as bytes! */ - {0xfffe, "0x%02bX%02bx", "0xFFfe"}, /* non-std: print as bytes! */ - #elif defined(SDCC) && defined(SDCC_z80) && CHECK_B - {0x4142, "%bc %bx", "\x42 41"}, /* non-std: print as bytes! */ - {0xfffe, "0x%02bX%02bx", "0xFEff"}, /* non-std: print as bytes! */ - #endif - }; +struct +{ + int arg; + char *fmt; + char *result; +} static const cases[] = { + // arg, fmt, result + {0xab, "%04x", "00ab"}, + {0xffff, "0x%02X", "0xFFFF"}, + {0xffffu, "%u", "65535"}, + {1234, "%+6d", " +1234"}, + {12345, "% d", " 12345"}, + {-1234, "%d", "-1234"}, + {32767, "%8d", " 32767"}, + {1, "%%%d", "%1"}, + {1001, "%08i", "00001001"}, + {101, "%-+8d", "+101 "}, + {01234, "%o(oct)", "1234(oct)"}, + + // do we want to check these: +#if defined(SDCC) && !defined(SDCC_z80) && CHECK_B + {0x4142, "%bc %bx", "\x41 42"}, /* non-std: print as bytes! */ + {0xfffe, "0x%02bX%02bx", "0xFFfe"}, /* non-std: print as bytes! */ +#elif defined(SDCC) && defined(SDCC_z80) && CHECK_B + {0x4142, "%bc %bx", "\x42 41"}, /* non-std: print as bytes! */ + {0xfffe, "0x%02bX%02bx", "0xFEff"}, /* non-std: print as bytes! */ +#endif +}; #elif defined(LONG) - struct { - long arg; - char *fmt; - char *result; - } static const cases[]={ - // arg, fmt, result - {0x12345678, "0x%lx", "0x12345678"}, - {0x7fffFFFF, "%10lx", " 7fffffff"}, - {0x789abcde, "0x%-10lX", "0x789ABCDE "}, - {0x1000a, "0x%02lX", "0x1000A"}, - {0x80000000, "%lu", "2147483648"}, - {-2147483648, "%li", "-2147483648"}, - {-1234, "%+6ld", " -1234"}, - {012345670123, "%lo(oct)", "12345670123(oct)"}, - {0xffffFFFF, "%lo(oct)", "37777777777(oct)"}, - - // do we want to check these: - #if defined(SDCC) && !defined(SDCC_z80) && CHECK_B - {0xfedcba98, "0x%bX%bX%bx%bx", "0xFEDCba98"}, /* non-std: print as bytes! */ - #elif defined(SDCC) && defined(SDCC_z80) && CHECK_B - {0xfedcba98, "0x%bX%bX%bx%bx", "0x98BAdcfe"}, /* non-std: print as bytes! */ - #endif - }; +struct +{ + long arg; + char *fmt; + char *result; +} static const cases[] = { + // arg, fmt, result + {0x12345678, "0x%lx", "0x12345678"}, + {0x7fffFFFF, "%10lx", " 7fffffff"}, + {0x789abcde, "0x%-10lX", "0x789ABCDE "}, + {0x1000a, "0x%02lX", "0x1000A"}, + {0x80000000, "%lu", "2147483648"}, + {-2147483648, "%li", "-2147483648"}, + {-1234, "%+6ld", " -1234"}, + {012345670123, "%lo(oct)", "12345670123(oct)"}, + {0xffffFFFF, "%lo(oct)", "37777777777(oct)"}, + + // do we want to check these: +#if defined(SDCC) && !defined(SDCC_z80) && CHECK_B + {0xfedcba98, "0x%bX%bX%bx%bx", "0xFEDCba98"}, /* non-std: print as bytes! */ +#elif defined(SDCC) && defined(SDCC_z80) && CHECK_B + {0xfedcba98, "0x%bX%bX%bx%bx", "0x98BAdcfe"}, /* non-std: print as bytes! */ +#endif +}; #elif defined(STRING) - struct { - char *arg; - char *fmt; - char *result; - } static const cases[]={ - // arg, fmt, result - {"abcd", "%s", "abcd"}, - {"abcd", "%3s", "abcd"}, - {"abcd", "%5s", " abcd"}, - {"abcd", "%-5s", "abcd "}, - {"abcd", "%.2s", "ab"}, - {"XYZ\\", "%s", "XYZ\x5c"}, - {"ab\x1b\x7f", "%s", "ab\x1b\x7f"}, - {"ab\tcd\n","%s", "ab\tcd\n"}, - }; +struct +{ + char *arg; + char *fmt; + char *result; +} static const cases[] = { + // arg, fmt, result + {"abcd", "%s", "abcd"}, + {"abcd", "%3s", "abcd"}, + {"abcd", "%5s", " abcd"}, + {"abcd", "%-5s", "abcd "}, + {"abcd", "%.2s", "ab"}, + {"XYZ\\", "%s", "XYZ\x5c"}, + {"ab\x1b\x7f", "%s", "ab\x1b\x7f"}, + {"ab\tcd\n", "%s", "ab\tcd\n"}, +}; #elif defined(FLOAT) - struct { - float arg; - char *fmt; - char *result; - } static const cases[]={ - // arg, fmt, result - // ... there should be more ... - #if defined(SDCC) && !defined(SDCC_ds390) - {1.0, "%f", ""}, - #else - {1.0, "%f", "1.000000"}, - {1.96, "%3.1f", "2.0"}, - #endif - }; +struct +{ + float arg; + char *fmt; + char *result; +} static const cases[] = { + // arg, fmt, result + // ... there should be more ... +#if defined(SDCC) && !defined(SDCC_ds390) && !(defined(SDCC_mcs51) && defined(SDCC_USE_XSTACK)) + {1.0, "%f", ""}, +#else + {1.0, "%f", "1.000000"}, + {1.96, "%3.1f", "2.0"}, +#endif +}; #endif void -test_snprintf(void) +test_snprintf (void) { - unsigned char buf[32]; - unsigned char i; - - memset(buf, 0xfe, sizeof buf); /* cookies all over */ - - for (i=0; i