简体   繁体   中英

Build gcc-4.0.4 on Ubuntu 10.10 32bit. buffer overflow detected

When i build gcc-4.0.4 (on Ubuntu 10.10), there is a problem:

arm-linux-ar rc ./libgcc.a libgcc/./_udivsi3.o libgcc/./_divsi3.o libgcc/./_umodsi3.o libgcc/./_modsi3.o libgcc/./_dvmd_lnx.o libgcc/./_muldi3.o libgcc/./_negdi2.o libgcc/./_lshrdi3.o libgcc/./_ashldi3.o libgcc/./_ashrdi3.o libgcc/./_cmpdi2.o libgcc/./_ucmpdi2.o libgcc/./_floatdidf.o libgcc/./_floatdisf.o libgcc/./_fixunsdfsi.o libgcc/./_fixunssfsi.o libgcc/./_fixunsdfdi.o libgcc/./_fixdfdi.o libgcc/./_fixunssfdi.o libgcc/./_fixsfdi.o libgcc/./_fixxfdi.o libgcc/./_fixunsxfdi.o libgcc/./_floatdixf.o libgcc/./_fixunsxfsi.o libgcc/./_fixtfdi.o libgcc/./_fixunstfdi.o libgcc/./_floatditf.o libgcc/./_clear_cache.o libgcc/./_enable_execute_stack.o libgcc/./ trampoline.o libgcc/./ _main.o libgcc/./_absvsi2.o libgcc/./_absvdi2.o libgcc/./_addvsi3.o libgcc/./_addvdi3.o libgcc/./_subvsi3.o libgcc/./_subvdi3.o libgcc/./_mulvsi3.o libgcc/./_mulvdi3.o libgcc/./_negvsi2.o libgcc/./_negvdi2.o libgcc/./_ctors.o libgcc/./_ffssi2.o libgcc/./_ffsdi2.o libgcc/./_clz.o libgcc/./_clzsi2.o libgcc/./_clzdi2.o libgcc/./_ctzsi2.o libgcc/./_ctzdi2.o libgcc/./_popcount_tab.o libgcc/./_popcountsi2.o libgcc/./_popcountdi2.o libgcc/./_paritysi2.o libgcc/./_paritydi2.o libgcc/./_powisf2.o libgcc/./_powidf2.o libgcc/./_powixf2.o libgcc/./_powitf2.o libgcc/./_mulsc3.o libgcc/./_muldc3.o libgcc/./_mulxc3.o libgcc/./_multc3.o libgcc/./_divsc3.o libgcc/./_divdc3.o libgcc/./_divxc3.o libgcc/./_divtc3.o libgcc/./ eprintf.o libgcc/./ _gcc_bcmp.o libgcc/./_divdi3.o libgcc/./_moddi3.o libgcc/./_udivdi3.o libgcc/./_umoddi3.o libgcc/./_udiv_w_sdiv.o libgcc/./_udivmoddi4.o libgcc/./unwind-dw2.o libgcc/./unwind-dw2-fde-glibc.o libgcc/./unwind-sjlj.o libgcc/./gthr-gnat.o libgcc/./unwind-co * buffer overflow detected * : arm-linux-ar terminated ======= Backtrace: ========= /lib/libc.so.6(__fortify_fail+0x50)[0x8f1890] /lib/libc.so.6(+0xe478a)[0x8f078a] /lib/libc.so.6(+0xe3ec8)[0x8efec8] /lib/libc.so.6(_IO_default_xsputn+0x9e)[0x8765ee] /lib/libc.so.6(_IO_padn+0xd8)[0x869f78] /lib/libc.so.6(_IO_vfprintf+0x2b79)[0x8 4bd89] /lib/libc.so.6(__vsprintf_chk+0xad)[0x8eff7d] /lib/libc.so.6(__sprintf_chk+0x2d)[0x8efebd] arm-linux-ar[0x8050c05] arm-linux-ar[0x804ed7e] arm-linux-ar[0x805168c] arm-linux-ar[0x8055178] arm-linux-ar[0x804b7d2] arm-linux-ar[0x804c494] /lib/libc.so.6(__libc_start_main+0xe7)[0x822ce7] arm-linux-ar[0x80496e1] ======= Memory map: ======== 003e4000-00400000 r-xp 00000000 08:01 131636 /lib/ld-2.12.1.so 00400000-00401000 r--p 0001b000 08:01 131636 /lib/ld-2.12.1.so 00401000-00402000 rw-p 0001c000 08:01 131636 /lib/ld-2.12.1.so 006b2000-006cc000 r-xp 00000000 08:01 131244 /lib/libgcc_s.so.1 006cc000-006cd000 r--p 00019000 08:01 131244 /lib/libgcc_s.so.1 006cd000-006ce000 rw-p 0001a000 08:01 131244 /lib/libgcc_s.so.1 0080c000-00963000 r-xp 00000000 08:01 132225 /lib/libc-2.12.1.so 00963000-00965000 r--p 00157000 08:01 132225 /lib/libc-2.12.1.so 00965000-00966000 rw-p 00159000 08:01 132225 /lib/libc-2.12.1.so 00966000-00969000 rw-p 00000000 00:00 0 00a42000-00a43000 r-xp 00000000 00:00 0 [vdso] 08048000-08097000 r-xp 00000000 08:01 427851
/home/zouhansi/armlinux/tools/bin/arm-linux-ar 08097000-08098000 r--p 0004e000 08:01 427851
/home/zouhansi/armlinux/tools/bin/arm-linux-ar 08098000-08099000 rw-p 0004f000 08:01 427851
/home/zouhansi/armlinux/tools/bin/arm-linux-ar 08099000-0809d000 rw-p 00000000 00:00 0 09354000-09558000 rw-p 00000000 00:00 0
[heap] b74c1000-b74c8000 r--s 00000000 08:01 661517
/usr/lib/gconv/gconv-modules.cache b74c8000-b765b000 r--p 002a3000 08:01 657761 /usr/lib/locale/locale-archive b765b000-b785b000 r--p 00000000 08:01 657761 /usr/lib/locale/locale-archive b785b000-b785c000 rw-p 00000000 00:00 0 b785f000-b786b000 rw-p 00000000 00:00 0 bf839000-bf85c000 rw-p 00000000 00:00 0
[stack]

I find some solution from network to add "-D_FORTIFY_SOURCE=0" in CFLAGS. I had edit Makefile like this: CFLAGS_FOR_BUILD = -g -O2 -D_FORTIFY_SOURCE=0

I make it again. But this problem is occured again.

Could you give some comments? Thanks a lot.

I had a similar problem building a GCC cross-compiler - it seems binutils is full of unsafe calls to sprintf().

A workaround which worked for me was to set:

export CFLAGS="-fno-stack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"

These have to be set before running ../src/configure.

There seems to be a binutils patch here: http://www.redhat.com/archives/fedora-extras-commits/2009-November/msg06284.html but it didn't apply cleanly to the source I was using, so I stuck with CFLAGS hack.

After I cross-compiled GCC with the latest version of binutils , it worked and I didn't get the buffer overflow anymore.

This was the line I used, after I installed the latest binutils:

../gcc-4.5.1/configure --target=arm-linux --prefix=/.../toolchain/bin/binutils --disable-nls --disable-multilib --disable-shared --disable-decimal-float --disable--threads --disable-libmudflap --disable-libssp --disable-libgomp --enable-languages=c --with-system-zlib --with-newlib

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM