Hello Stephen, Please file a bug report (or several) in our bug tracker.
Maarten > Hello Maarten, > Thank you for pointing me towards looking at the driver's output more > closely. > I eventually narrowed things down. In sdcc/device/lib/pic16/configure.ac > (and evidently in the corresponding configure script) we have > > line 60: AC_SUBST(CCAS, [\'$CCAS\']) > > This means that the build system determines CCAS to be /mingw64/bin/gpasm > which is then wrapped in single quotes as '/mingw64/bin/gpasm' *before* > other calls append an exe file extension. As a result the command is > "'/mingw64/bin/gpasm'.exe "(double quotes excluded). > > In SDCCsystem.c:66 we have: > switch (*p) > { > case '\'': > <snip> > > which is splitting the string into a command at the quotation mark as a > delimiter, leaving .exe as part of the arguments. > > get_path in SDCCsystem.c:201 then adds an extra ".exe" onto our now > extension-less command, which is then merged in with our arguments, so the > compiler driver attempts to execute > > "/mingw64/bin/gpasm.exe .exe <options>" which obviously fails. > > Commenting out the AC_SUBST line in the pic14, pic16, and non-free pic16 > configure files allows compilation to succeed, with one small caveat: > the driver also calls sdcpp.exe as part of compiling the pic14/16 device > libraries - sdcpp has just been built and is therefore not in the PATH. > I have worked around this by temporarily setting the root sdcc source > directory as SDCC_HOME, but evidently this is sub-optimal. > Is there a way to tell sdcc it is being run during an SDCC compilation, > and > so it should look within its own folder? Should I be building SDCC in two > stages instead? > With regards to the commented lines - does wrapping the executable in > single quotes serve a purpose? Is it worth me sending in a patch for the > changes? > > > Secondly, in my original post I indicated that STM8 support was building > OK. Unfortunately this is not the case, but the build process doesn't > error > out. > > ../../../bin/sdar -rcD ../build/stm8/stm8.lib setjmp.rel _mulint.rel > __mulsint2slong.rel _divsint.rel _modsint.rel _mullong.rel _divulong.rel > _modulong.rel _divslong.rel _modslong.rel _fast_long_neg.rel heap.rel > strcpy.rel strcmp.rel memcpy.rel _atof.rel _schar2fs.rel _sint2fs.rel > _slong2fs.rel _uchar2fs.rel _uint2fs.rel _ulong2fs.rel _fs2schar.rel > _fs2sint.rel _fs2slong.rel _fs2uchar.rel _fs2uint.rel _fs2ulong.rel > _fsadd.rel _fsdiv.rel _fsmul.rel _fssub.rel _fseq.rel _fsgt.rel _fslt.rel > _fsneq.rel fabsf.rel frexpf.rel ldexpf.rel expf.rel powf.rel sincosf.rel > sinf.rel cosf.rel logf.rel log10f.rel sqrtf.rel tancotf.rel tanf.rel > cotf.rel asincosf.rel asinf.rel acosf.rel atanf.rel atan2f.rel > sincoshf.rel > sinhf.rel coshf.rel tanhf.rel floorf.rel ceilf.rel modff.rel errno.rel > isinf.rel isnan.rel _mulschar.rel _divschar.rel _modschar.rel > _rrulonglong.rel _rrslonglong.rel _rlulonglong.rel _rlslonglong.rel > _mullonglong.rel _divslonglong.rel _divulonglong.rel _modslonglong.rel > _modulonglong.rel isalnum.rel isalpha.rel isblank.rel iscntrl.rel > isdigit.rel isgraph.rel islower.rel isprint.rel ispunct.rel isspace.rel > isupper.rel isxdigit.rel tolower.rel toupper.rel atoi.rel atol.rel > atoll.rel abs.rel labs.rel rand.rel _strcat.rel _strchr.rel _strcspn.rel > _strncat.rel _strncmp.rel strxfrm.rel _strncpy.rel _strpbrk.rel > _strrchr.rel _strspn.rel _strstr.rel _strtok.rel _memchr.rel _memcmp.rel > _memset.rel aligned_alloc.rel calloc.rel malloc.rel realloc.rel free.rel > mblen.rel mbtowc.rel wctomb.rel mbstowcs.rel wcstombs.rel mbrtoc16.rel > c16rtomb.rel mbrtoc32.rel c32rtomb.rel wcscmp.rel wcslen.rel btowc.rel > wctob.rel mbsinit.rel mbrlen.rel mbrtowc.rel wcrtomb.rel printf_large.rel > puts.rel gets.rel assert.rel time.rel _itoa.rel _ltoa.rel _startup.rel > _strlen.rel _memmove.rel sprintf.rel vprintf.rel > make[5]: *** [Makefile:66: ../build/stm8/stm8.lib] Segmentation fault > make[5]: *** Deleting file '../build/stm8/stm8.lib' > make[5]: Leaving directory '/c/source/sdcc/sdcc/device/lib/stm8' > make[4]: [Makefile:408: port-specific-objects] Error 2 (ignored) > > <compilation continues> > > Through a process of elimination I was able to determine that the segfault > is caused by any of the .rel files from _atof.rel onwards. For example: > > $ ../../../bin/sdar -rcD ../build/stm8/stm8.lib vprintf.rel > Segmentation fault > > This looks similar to "#1903 compile of library file cause seg violation" > (that one also mentions _atof.rel). Would you like me to raise a ticket > for > it, start another email thread (given the issues are both mingw related, > but target different architectures) or shall we continue the discussion > here alongside the other MINGW compilation issue? > > Thanks, > > Stephen > > > > > > On Mon, May 15, 2017 at 1:44 AM, Maarten Brock <sourceforge.br...@dse.nl> > wrote: > >> > Hello everybody, >> > Running into a strange issue trying to compile SDCC with the msys2 >> > environment. >> > I've successfully downloaded gputils from source and compiled: >> > >> > $ gcc -v >> > >> > <snip> >> > gcc version 6.3.0 (Rev2, Built by MSYS2 project) >> > $ gpasm -v >> > >> > gpasm-1.5.0 >> > #1285 >> > (Apr 28 2017) >> > >> > I configured SDCC using the following command line >> > >> > ./configure --disable-mcs51-port --disable-z80-port >> --disable-z180-port >> > --disable-r2k-port --disable-r3ka-port --disable-gbz80-port >> > --disable-tlcs90-port --disable-ds390-port --disable-ds400-port >> > --disable-hc08-port --disable-s08-port --disable-ucsim >> > (essentially, enable stm8 and PIC but nothing else) >> > STM8 and pic14 seem to build without errors, but it looks like >> something >> > in >> > the pic16 lib is invoking gpasm incorrectly, as all of the 18f* file >> > command lines result in the usage information for gpasm being printed >> and >> > the build consequently fails with missing object files. >> > The error lines all have the following format: >> > >> > source='fake_sspbuf.c' object='libdev18f1220_a-fake_sspbuf.o' >> libtool=no \ >> > DEPDIR=.deps depmode=none /bin/sh ../depcomp \ >> > '/c/source/sdcc/device/non-free/lib/pic16//../../../../bin/sdcc' >> > -DHAVE_CONFIG_H -I. -I.. -I. -I../../../../include/pic16 >> > -I../../../../non-free/include/pic16 -p18f1220 --std-c99 >> > --asm="'/mingw64/bin/gpasm'" --no-warn-non-free --fomit-frame-pointer >> > --obanksel=9 --denable-peeps --optimize-cmp --optimize-df >> --i-code-in-asm >> > -DUSE_FLOATS=0 -mpic16 -p18f452 -c -o libdev18f1220_a-fake_sspbuf.o >> `test >> > -f 'fake_sspbuf.c' || echo './'`fake_sspbuf.c >> > >> > Usage: gpasm [options] file >> > Options: [defaults in brackets after descriptions] >> > -a FMT, --hex-format FMT Select hex file format. [inhx32] >> > -c, --object Output relocatable object. >> > <gpasm usage info follows> >> > >> > >> > Build fails much later with error: >> > error: "libdev18f1220_a-pic18f1220.o" is not a valid object file >> > >> > Does anybody have any suggestions for how I can diagnose this? >> > Thanks, >> > Stephen >> >> Hello Stephen, >> >> Can you modify the makefile to make SDCC more verbose using --verbose ? >> It >> will print the way gpasm is called. >> >> Maarten >> >> >> >> ------------------------------------------------------------ >> ------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> _______________________________________________ >> Sdcc-user mailing list >> Sdcc-user@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/sdcc-user >> > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! > http://sdm.link/slashdot_______________________________________________ > Sdcc-user mailing list > Sdcc-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sdcc-user > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user