I'v seen exactly the same problem with "--out-fmt-elf" and "_naked". it must be bug.
On Sun, May 10, 2020 at 8:55 PM Basil Hussain <ba...@stasisleak.uk> wrote: > Hi all, > > I have encountered an odd problem with sdasstm8 crashing. I believe I > have narrowed it down to a particular set of circumstances, which are: > > * Using --debug and --out-fmt-elf options together, and; > * Having a function with __naked attribute that contains inline assembly > code. > > It seems to hinge on the use of the ELF output option. With everything > else being equal, but using --out-fmt-hex, there is no crash. > Alternatively, if I instead just comment out the use of the __naked > attribute, then ELF compilation succeeds. > > I'm assuming it's something to do with the contents of the .asm file > that sdas is being asked to assemble, and indeed if I examine the output > of both an ELF and Intel Hex output compilation, there are substantial > differences between the two - mainly that the former has a massive > amount of debug stuff appended, which the latter omits. > > Here is a minimal sample program that demonstrates the problem: > > unsigned int do_something(unsigned char a, unsigned char b) { > return a + b; > } > > void do_nothing(void) __naked { > __asm > nop > nop > nop > ret > __endasm; > } > > void main(void) { > unsigned int foo; > > foo = do_something(100, 42); > do_nothing(); > > while(1); > } > > This is a log of the verbose output from the crashing scenario, when > asking SDCC for ELF output: > > sdcc.exe -mstm8 --verbose --debug --out-fmt-elf -I"C:\Program > Files\SDCC\include" -c main.c -o obj\ELF\main.rel > sdcc.exe -L"C:\Program Files\SDCC\lib" -o bin\ELF\test.elf -mstm8 > --verbose --debug --out-fmt-elf obj\ELF\main.rel > sdcc: Calling preprocessor... > sdcc: sdcpp.exe -nostdinc -Wall -std=c11 -I"C:\Program > Files\SDCC\include" -obj-ext=.rel -D__SDCC_STACK_AUTO > -D__SDCC_CHAR_UNSIGNED -D__SDCC_MODEL_MEDIUM -D__SDCC_INT_LONG_REENT > -D__SDCC_FLOAT_REENT -D__SDCC=4_0_0 -D__SDCC_VERSION_MAJOR=4 > -D__SDCC_VERSION_MINOR=0 -D__SDCC_VERSION_PATCH=0 > -D__SDCC_REVISION=11528 -D__SDCC_stm8 -D__STDC_NO_COMPLEX__=1 > -D__STDC_NO_THREADS__=1 -D__STDC_NO_ATOMICS__=1 -D__STDC_NO_VLA__=1 > -D__STDC_ISO_10646__=201409L -D__STDC_UTF_16__=1 -D__STDC_UTF_32__=1 > -isystem "C:\Program Files\SDCC\bin\..\include\stm8" -isystem > "C:\Program Files\SDCC\bin\..\include" "main.c" > sdcc: Generating code... > sdcc: Calling assembler... > sdcc: sdasstm8.exe -plosgffwy ""obj\ELF\main".asm" > > The execution of sdasstm8 crashes (with the usual "sdasstm8.exe has > stopped working" message from Windows), so the whole compilation process > fails to complete. There are no error messages output by sdas. > > This is the output from the non-crash scenario, when asking for Intel > Hex output: > > sdcc.exe -mstm8 --verbose --debug --out-fmt-ihx -I"C:\Program > Files\SDCC\include" -c main.c -o obj\IHX\main.rel > sdcc.exe -L"C:\Program Files\SDCC\lib" -o bin\IHX\test.hex -mstm8 > --verbose --debug --out-fmt-ihx obj\IHX\main.rel > sdcc: Calling preprocessor... > sdcc: sdcpp.exe -nostdinc -Wall -std=c11 -I"C:\Program > Files\SDCC\include" -obj-ext=.rel -D__SDCC_STACK_AUTO > -D__SDCC_CHAR_UNSIGNED -D__SDCC_MODEL_MEDIUM -D__SDCC_INT_LONG_REENT > -D__SDCC_FLOAT_REENT -D__SDCC=4_0_0 -D__SDCC_VERSION_MAJOR=4 > -D__SDCC_VERSION_MINOR=0 -D__SDCC_VERSION_PATCH=0 > -D__SDCC_REVISION=11528 -D__SDCC_stm8 -D__STDC_NO_COMPLEX__=1 > -D__STDC_NO_THREADS__=1 -D__STDC_NO_ATOMICS__=1 -D__STDC_NO_VLA__=1 > -D__STDC_ISO_10646__=201409L -D__STDC_UTF_16__=1 -D__STDC_UTF_32__=1 > -isystem "C:\Program Files\SDCC\bin\..\include\stm8" -isystem > "C:\Program Files\SDCC\bin\..\include" "main.c" > sdcc: Generating code... > sdcc: Calling assembler... > sdcc: sdasstm8.exe -plosgffwy ""obj\IHX\main".asm" > sdcc: Calling linker... > sdcc: sdldstm8.exe -nf ""bin\IHX\test.lk"" > > I am using SDCC 4.0.0 on Windows 7. If it helps, I can supply a > Code::Blocks project that is set up to demonstrate the problem. > > Regards, > Basil Hussain > > > _______________________________________________ > Sdcc-user mailing list > Sdcc-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sdcc-user >
_______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user