繁体   English   中英

在Ubuntu 10.10 32位上构建gcc-4.0.4。 检测到缓冲区溢出

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

当我在Ubuntu 10.10上构建gcc-4.0.4时,出现问题:

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 /./__ floatdid .o libgcc /./_ floatdisf.o libgcc /./_ fixunssfsi.o libgcc /./_ fixunssfsi.o libgcc /./_ fixunsdfdi.o libgcc /./_ fixdfdi.o libgcc /./_ fixfixssfdi.o libgcc /./ o libgcc /./_ fixxfdi.o libgcc /./_ fixunsxfdi.o libgcc /./__ floatdixf.o libgcc /./_ fixunsxfsi.o libgcc /./_ fixtfdi.o libgcc /./_ fixunstfdi.o libgcc /..__ floatdit 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 *检测到缓冲区溢出* :arm-linux-ar已终止== =====回溯:========= /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] =======内存映射:======== 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
[堆] 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
[堆]

我从网络上找到了一些解决方案,可以在CFLAGS中添加“ -D_FORTIFY_SOURCE = 0”。 我曾这样编辑Makefile:CFLAGS_FOR_BUILD = -g -O2 -D_FORTIFY_SOURCE = 0

我再做一次。 但是,此问题再次发生。

你能给点意见吗? 非常感谢。

在构建GCC交叉编译器时,我遇到了类似的问题-似乎binutils充满了对sprintf()的不安全调用。

一个对我有用的解决方法是设置:

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

必须运行../src/configure 之前进行设置。

这里似乎有一个binutils补丁: http : //www.redhat.com/archives/fedora-extras-commits/2009-November/msg06284.html,但它不适用于我使用的源代码,所以我卡在CFLAGS hack上。

在使用最新版本的binutils对GCC进行交叉编译后,它开始工作了,而且我再也没有遇到缓冲区溢出的情况。

这是我安装最新的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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