From 2bc3d1345743db0ab853b44cd66d1af387a20ce1 Mon Sep 17 00:00:00 2001 From: maartenbrock Date: Thu, 11 Nov 2004 12:10:48 +0000 Subject: [PATCH] * src/SDCCmain.c (linkEdit): don't suppress crt0 if --nostdlib is used and search crt0.o in all library paths, (setIncludePath): proper handling of --nostdinc, (setLibPath): proper handling of --nostdlib * support/regression/Makefile, * support/regression/ports/ds390/spec.mk, * support/regression/ports/gbz80/spec.mk, * support/regression/ports/hc08/spec.mk, * support/regression/ports/mcs51/spec.mk, * support/regression/ports/mcs51-large/spec.mk, * support/regression/ports/mcs51-stack-auto/spec.mk, * support/regression/ports/z80/spec.mk: use include and lib files from built version of sdcc instead of installed version * doc/sdccman.lyx: fixed typo in --nostdinc git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3572 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 17 ++++++++++++++++ doc/sdccman.lyx | 4 ++-- src/SDCCmain.c | 20 +++++++++++++++---- support/regression/Makefile | 6 ++++-- support/regression/ports/ds390/spec.mk | 7 +++++-- support/regression/ports/gbz80/spec.mk | 7 +++++-- support/regression/ports/hc08/spec.mk | 8 +++++--- support/regression/ports/host/spec.mk | 3 ++- support/regression/ports/mcs51-large/spec.mk | 2 ++ .../regression/ports/mcs51-stack-auto/spec.mk | 9 ++++----- support/regression/ports/mcs51/spec.mk | 7 +++++-- support/regression/ports/z80/spec.mk | 7 +++++-- 12 files changed, 72 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index c9184b54..c3797aa5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2004-11-11 Maarten Brock + * src/SDCCmain.c (linkEdit): don't suppress crt0 if --nostdlib is used + and search crt0.o in all library paths, + (setIncludePath): proper handling of --nostdinc, + (setLibPath): proper handling of --nostdlib + * support/regression/Makefile, + * support/regression/ports/ds390/spec.mk, + * support/regression/ports/gbz80/spec.mk, + * support/regression/ports/hc08/spec.mk, + * support/regression/ports/mcs51/spec.mk, + * support/regression/ports/mcs51-large/spec.mk, + * support/regression/ports/mcs51-stack-auto/spec.mk, + * support/regression/ports/z80/spec.mk: use include and lib files from + built version of sdcc instead of installed version + * doc/sdccman.lyx: fixed typo in --nostdinc + 2004-11-10 Slade Rich * src/pic/pcode.c, @@ -29,6 +45,7 @@ * support/regression/ports/mcs51/support.c: reload T1 asap * doc/sdccman.lyx: updated for options --pack-iram and --no-pack-iram, pdata use and clear idata startup behaviour + * support/regression/tests/bug1057979.c: added 2004-11-04 Maarten Brock diff --git a/doc/sdccman.lyx b/doc/sdccman.lyx index 6a3972f4..384f1e9c 100644 --- a/doc/sdccman.lyx +++ b/doc/sdccman.lyx @@ -7211,8 +7211,8 @@ status Collapsed / \end_inset --nostdincl -\begin_inset LatexCommand \index{-\/-nostdincl} +-nostdinc +\begin_inset LatexCommand \index{-\/-nostdinc} \end_inset diff --git a/src/SDCCmain.c b/src/SDCCmain.c index 75dbcf8c..08215875 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c @@ -1617,14 +1617,20 @@ linkEdit (char **envp) It is very important for this file to be first on the linking proccess so the areas are set in the correct order, expecially _GSINIT*/ if ((TARGET_IS_Z80 || TARGET_IS_GBZ80) && - !options.no_std_crt0 && !options.nostdlib) /*For the z80, gbz80*/ + !options.no_std_crt0) /*For the z80, gbz80*/ { char crt0path[PATH_MAX]; FILE * crt0fp; - for (s = setFirstItem(libDirsSet); s != NULL; s = setNextItem(libDirsSet)) + set *tempSet=NULL; + + tempSet = appendStrSet(libDirsSet, NULL, DIR_SEPARATOR_STRING); + tempSet = appendStrSet(libDirsSet, NULL, c); + mergeSets(&tempSet, libPathsSet); + + for (s = setFirstItem(tempSet); s != NULL; s = setNextItem(tempSet)) { - sprintf (crt0path, "%s%s%s%scrt0.o", - s, DIR_SEPARATOR_STRING, c, DIR_SEPARATOR_STRING); + sprintf (crt0path, "%s%scrt0.o", + s, DIR_SEPARATOR_STRING); crt0fp=fopen(crt0path, "r"); if(crt0fp!=NULL)/*Found it!*/ @@ -2014,6 +2020,9 @@ setIncludePath(void) * 4. - DATADIR/INCLUDE_DIR_SUFFIX (only on *nix) */ + if (options.nostdinc) + return; + includeDirsSet = appendStrSet(dataDirsSet, NULL, INCLUDE_DIR_SUFFIX); if ((p = getenv(SDCC_INCLUDE_NAME)) != NULL) @@ -2042,6 +2051,9 @@ setLibPath(void) * 4. - DATADIR/LIB_DIR_SUFFIX/ (only on *nix) */ + if (options.nostdlib) + return; + libDirsSet = appendStrSet(dataDirsSet, NULL, LIB_DIR_SUFFIX); if ((p = getenv(SDCC_LIB_NAME)) != NULL) diff --git a/support/regression/Makefile b/support/regression/Makefile index a9c09980..26c118b0 100644 --- a/support/regression/Makefile +++ b/support/regression/Makefile @@ -82,8 +82,10 @@ test-gbz80: # Helper rule for testing the mcs51 port only test-mcs51: $(MAKE) test-port PORT=mcs51 + test-mcs51-large: $(MAKE) test-port PORT=mcs51-large + test-mcs51-stack-auto: $(MAKE) make-library test-port PORT=mcs51-stack-auto @@ -122,7 +124,7 @@ PORT_RESULTS = $(ALL_TESTS:$(TESTS_DIR)/%.c=$(PORT_RESULTS_DIR)/%.out) SDCC_DIR = ../.. SDCC_EXTRA_DIR = ../../../sdcc-extra - +INC_DIR = $(SDCC_DIR)/device/include # Defaults. Override in spec.mk if required. # Path to SDCC @@ -141,7 +143,7 @@ ifdef PORT include $(PORTS_DIR)/$(PORT)/spec.mk endif -SDCCFLAGS += -Ifwk/include -Itests +SDCCFLAGS += -Ifwk/include -Itests -I$(INC_DIR) # List of intermediate files to keep. Pretty much keep everything as # disk space is free. diff --git a/support/regression/ports/ds390/spec.mk b/support/regression/ports/ds390/spec.mk index 7a8442ca..c231a12b 100644 --- a/support/regression/ports/ds390/spec.mk +++ b/support/regression/ports/ds390/spec.mk @@ -6,7 +6,10 @@ S51B = $(SDCC_DIR)/bin/s51 S51 = $(shell if [ -f $(S51A) ]; then echo $(S51A); else echo $(S51B); fi) -SDCCFLAGS +=-mds390 --less-pedantic -DREENTRANT=reentrant -Wl-r +SDCCFLAGS +=-mds390 --nostdinc --less-pedantic -DREENTRANT=reentrant -Wl-r +LINKFLAGS = --nostdlib +LINKFLAGS += libds390.lib libsdcc.lib liblong.lib libint.lib libfloat.lib +LIBDIR = $(SDCC_DIR)/device/lib/build/ds390 OBJEXT = .rel EXEEXT = .ihx @@ -15,7 +18,7 @@ EXTRAS = $(PORTS_DIR)/$(PORT)/testfwk$(OBJEXT) $(PORTS_DIR)/$(PORT)/support$(OBJ # Rule to link into .ihx %$(EXEEXT): %$(OBJEXT) $(EXTRAS) - $(SDCC) $(SDCCFLAGS) $(EXTRAS) $< -o $@ + $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@ %$(OBJEXT): %.c $(SDCC) $(SDCCFLAGS) -c $< -o $@ diff --git a/support/regression/ports/gbz80/spec.mk b/support/regression/ports/gbz80/spec.mk index 6f558212..ef482582 100644 --- a/support/regression/ports/gbz80/spec.mk +++ b/support/regression/ports/gbz80/spec.mk @@ -2,7 +2,10 @@ EMU = $(SDCC_EXTRA_DIR)/emu/rrgb/rrgb -SDCCFLAGS +=-mgbz80 --less-pedantic -DREENTRANT= +SDCCFLAGS +=-mgbz80 --nostdinc --less-pedantic -DREENTRANT= +LINKFLAGS = --nostdlib +LINKFLAGS += gbz80.lib +LIBDIR = $(SDCC_DIR)/device/lib/build/gbz80 EXEEXT = .gb @@ -11,7 +14,7 @@ EXTRAS = ports/$(PORT)/testfwk$(OBJEXT) ports/$(PORT)/support$(OBJEXT) # Rule to link into .ihx %.gb: %.c $(EXTRAS) - $(SDCC) $(SDCCFLAGS) $< $(EXTRAS) -o $@ + $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@ %$(OBJEXT): %.asm ../../bin/as-gbz80 -plosgff $@ $< diff --git a/support/regression/ports/hc08/spec.mk b/support/regression/ports/hc08/spec.mk index b4d6032a..1c1c8931 100644 --- a/support/regression/ports/hc08/spec.mk +++ b/support/regression/ports/hc08/spec.mk @@ -4,8 +4,10 @@ UCHC08B = $(SDCC_DIR)/bin/shc08 UCHC08 = $(shell if [ -f $(UCHC08A) ]; then echo $(UCHC08A); else echo $(UCHC08B); fi) -SDCCFLAGS +=-mhc08 --less-pedantic --out-fmt-ihx -DREENTRANT=reentrant -#SDCCFLAGS +=--less-pedantic -DREENTRANT=reentrant +SDCCFLAGS +=-mhc08 --nostdinc --less-pedantic --out-fmt-ihx -DREENTRANT=reentrant +LINKFLAGS = --nostdlib +LINKFLAGS += hc08.lib +LIBDIR = $(SDCC_DIR)/device/lib/build/hc08 OBJEXT = .rel EXEEXT = .ihx @@ -16,7 +18,7 @@ EXTRAS = $(PORTS_DIR)/$(PORT)/testfwk$(OBJEXT) $(PORTS_DIR)/$(PORT)/support$(OBJ #%$(EXEEXT): %$(OBJEXT) $(EXTRAS) %$(EXEEXT): %.c $(EXTRAS) - $(SDCC) $(SDCCFLAGS) $< $(EXTRAS) -o $@ + $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@ %$(OBJEXT): %.asm $(SDCC_DIR)/bin/as-hc08 -plosgff $< diff --git a/support/regression/ports/host/spec.mk b/support/regression/ports/host/spec.mk index 75151ebe..5d243c81 100644 --- a/support/regression/ports/host/spec.mk +++ b/support/regression/ports/host/spec.mk @@ -4,6 +4,7 @@ SDCCFLAGS = -DPORT_HOST=1 -Wall -fsigned-char -fpack-struct -DREENTRANT= EXEEXT = .bin OBJEXT = .o +INC_DIR = . # otherwise `make` deletes it and `make -j`will fail .PRECIOUS: ports/$(PORT)/testfwk$(OBJEXT) @@ -14,7 +15,7 @@ EXTRAS = ports/$(PORT)/testfwk$(OBJEXT) ports/$(PORT)/support$(OBJEXT) %.out: %$(EXEEXT) mkdir -p `dirname $@` -$< > $@ - -grep -n FAIL $@ /dev/null || true + -grep -n FAIL $@ /dev/null || true %$(EXEEXT): %$(OBJEXT) $(EXTRAS) $(SDCC) $(SDCCFLAGS) -o $@ $< $(EXTRAS) -lm diff --git a/support/regression/ports/mcs51-large/spec.mk b/support/regression/ports/mcs51-large/spec.mk index 11f70759..339fb86d 100644 --- a/support/regression/ports/mcs51-large/spec.mk +++ b/support/regression/ports/mcs51-large/spec.mk @@ -9,3 +9,5 @@ $(PORTS_DIR)/$(PORT)/%.c: $(PORTS_DIR)/mcs51/%.c cp $< $@ include $(PORTS_DIR)/mcs51/spec.mk + +LIBDIR = $(SDCC_DIR)/device/lib/build/large diff --git a/support/regression/ports/mcs51-stack-auto/spec.mk b/support/regression/ports/mcs51-stack-auto/spec.mk index cbf31b84..831f0554 100644 --- a/support/regression/ports/mcs51-stack-auto/spec.mk +++ b/support/regression/ports/mcs51-stack-auto/spec.mk @@ -2,19 +2,18 @@ # # model small stack-auto +include $(PORTS_DIR)/mcs51/spec.mk + LIBSRCDIR = ../../device/lib LIBDIR = gen/$(PORT)/lib -LIBSDCCFLAGS+=--stack-auto --int-long-reent --float-reent -SDCCFLAGS +=$(LIBSDCCFLAGS) --nostdlib -L$(LIBDIR) -llibsdcc -llibint \ - -lliblong -llibfloat -lmcs51 +LIBSDCCFLAGS+=--stack-auto +SDCCFLAGS +=$(LIBSDCCFLAGS) # copy support.c $(PORTS_DIR)/$(PORT)/%.c: $(PORTS_DIR)/mcs51/%.c cp $< $@ -include $(PORTS_DIR)/mcs51/spec.mk - SOURCES = _atoi.c _atol.c _autobaud.c _bp.c _schar2fs.c \ _decdptr.c _divsint.c _divslong.c _divuint.c \ _divulong.c _fs2schar.c _fs2sint.c _fs2slong.c \ diff --git a/support/regression/ports/mcs51/spec.mk b/support/regression/ports/mcs51/spec.mk index d55eb32b..d686dc46 100644 --- a/support/regression/ports/mcs51/spec.mk +++ b/support/regression/ports/mcs51/spec.mk @@ -8,7 +8,10 @@ S51B = $(SDCC_DIR)/bin/s51 S51 = $(shell if [ -f $(S51A) ]; then echo $(S51A); else echo $(S51B); fi) -SDCCFLAGS +=--less-pedantic -DREENTRANT=reentrant +SDCCFLAGS +=--nostdinc --less-pedantic -DREENTRANT=reentrant +LINKFLAGS = --nostdlib +LINKFLAGS += mcs51.lib libsdcc.lib liblong.lib libint.lib libfloat.lib +LIBDIR = $(SDCC_DIR)/device/lib/build/small OBJEXT = .rel EXEEXT = .ihx @@ -17,7 +20,7 @@ EXTRAS = $(PORTS_DIR)/$(PORT)/testfwk$(OBJEXT) $(PORTS_DIR)/$(PORT)/support$(OBJ # Rule to link into .ihx %$(EXEEXT): %$(OBJEXT) $(EXTRAS) - $(SDCC) $(SDCCFLAGS) $(EXTRAS) $< -o $@ + $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@ %$(OBJEXT): %.c $(SDCC) $(SDCCFLAGS) -c $< -o $@ diff --git a/support/regression/ports/z80/spec.mk b/support/regression/ports/z80/spec.mk index 19f3bcf3..2a568d9d 100644 --- a/support/regression/ports/z80/spec.mk +++ b/support/regression/ports/z80/spec.mk @@ -3,7 +3,10 @@ RRZ80 = $(SDCC_EXTRA_DIR)/emu/rrz80/rrz80 -SDCCFLAGS +=-mz80 --less-pedantic --profile -DREENTRANT= +SDCCFLAGS +=-mz80 --nostdinc --less-pedantic --profile -DREENTRANT= +LINKFLAGS = --nostdlib +LINKFLAGS += z80.lib +LIBDIR = $(SDCC_DIR)/device/lib/build/z80 EXEEXT = .bin @@ -16,7 +19,7 @@ EXTRAS = ports/$(PORT)/testfwk$(OBJEXT) ports/$(PORT)/support$(OBJEXT) # Rule to link into .ihx %.ihx: %.c $(EXTRAS) - $(SDCC) $(SDCCFLAGS) $< $(EXTRAS) -o $@ + $(SDCC) $(SDCCFLAGS) $(LINKFLAGS) -L $(LIBDIR) $(EXTRAS) $< -o $@ %$(OBJEXT): %.asm $(SDCC_DIR)/bin/as-z80 -plosgff $@ $< -- 2.30.2