From: Tijl C. <ti...@ul...> - 2007-09-25 13:57:18
|
Hi everyone! I'm the maintainer of the FreeBSD package of sdcc and I ran into a bug that causes the build of the PIC device lib to segfault. Let me know if you need more info than the stuff below. This is with today's source snapshot, but 2.7.0 has the same problem. gmake[1]: Map '/home/root/build/home/root/ports/lang/sdcc-devel/work/sdcc/device/lib/pic/libsdcc' wordt binnengegaan [ CC ] ==> build/libsdcc/_mulint.o ../../../../bin/sdcc -mpic14 -p16f877 --std-c99 -I. -I../../../include/pic --i-code-in-asm -o "../build/libsdcc/_mulint.o" -c "_mulint.c" Caught signal 11: SIGSEGV gmake[1]: *** [../build/libsdcc/_mulint.o] Fout 1 gmake[1]: Map '/home/root/build/home/root/ports/lang/sdcc-devel/work/sdcc/device/lib/pic/libsdcc' wordt verlaten gmake: *** [recurse] Fout 1 root@kalimero libsdcc# gdb ../../../../bin/sdcc GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-marcel-freebsd"... (gdb) run -mpic14 -p16f877 --std-c99 -I. -I../../../include/pic --i-code-in-asm -o "../build/libsdcc/_mulint.o" -c "_mulint.c" Starting program: /home/root/build/home/root/ports/lang/sdcc-devel/work/sdcc/bin/sdcc -mpic14 -p16f877 --std-c99 -I. -I../../../include/pic --i-code-in-asm -o "../build/libsdcc/_mulint.o" -c "_mulint.c" Program received signal SIGSEGV, Segmentation fault. OptimizeRegUsage (fregs=0x283c03f0, optimize_multi_uses=1, optimize_level=0) at pcoderegs.c:830 830 pc1 = rset1->item; (gdb) bt #0 OptimizeRegUsage (fregs=0x283c03f0, optimize_multi_uses=1, optimize_level=0) at pcoderegs.c:830 #1 0x080c30e3 in pCodeRegOptimizeRegUsage (level=1) at pcoderegs.c:1690 #2 0x080bdaea in AnalyzeFlow (level=1) at pcode.c:5215 #3 0x080be2d3 in AnalyzeBanking () at pcode.c:5272 #4 0x080f92af in picglue () at glue.c:1495 #5 0x08054cb5 in main (argc=11, argv=0xbfbfe85c, envp=0xbfbfe88c) at SDCCmain.c:2387 (gdb) print rset1 $1 = (set *) 0x5a5a5a5a So it's segfaulting because it tries to access 0x5a5a5a5a. This address is a malloc/free debugging feature. I haven't looked at any code yet, but it looks like rset1 was set to the contents of uninitialized memory. |