作者SILee (打卡上班的日子)
看板LinuxDev
标题Re: [问题] link出现的错误
时间Thu May 1 22:01:35 2008
※ 引述《SILee (打卡上班的日子)》之铭言:
: 请问程式link时出现这样的错误的错误讯息是什麽原因造成的?
: undefined reference to '__stack_chk_fail'
: 我只要在程式里面宣告一个大一点的array,在link阶段就会出现这种错误
: 但是把array拿到function外面宣告成global的就没这个问题
: 看起来像是程式将local variable塞到stack时overflow了
: 但是stack overflow应该是run time error怎麽会在link就出问题?
: thanks!!
囧" 我发现原因了
刚刚把程式dump成组语出来看,发现如果宣告一个type为char且size大於8的local array
GCC会自动插入__stack_chk_fail这个system call检查stack是否overflow
而我的程式是run在non OS环境的,所以linker会找不到__stack_chk_fail这个function
可是很奇怪的是如果array的type不是宣告成char就不会有这个问题 @@
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.105.115
1F:→ roylee17:加上这个试试 -fno-stack-protector 05/02 00:05