undefined reference to `__stack_chk_fail'

Qihang Huang qihang.huang@gmail.com
Wed Apr 28 09:59:00 GMT 2010


Thank you Corinna! Yes, you are right, it is added by gcc. And using
the GCC flag -fno-stack-protector can remove the complain from GCC.

Thanks again.

Cheers,
Qihang

On Fri, Apr 9, 2010 at 9:49 PM, Corinna Vinschen <vinschen@redhat.com> wrote:
> On Apr  9 17:11, Qihang Huang wrote:
>> Dear list,
>>
>> I am "porting" new lib to replace glibc on Linux (x86_64), so that I
>> know new lib better before I actually port it somewhere. So right now,
>>  all I did was implementing the system calls stubs using Linux system
>> calls directly, and compile new lib, and link a helloWorld.c with new
>> lib. Everything is fine if I am using puts() in the helloWorld
>> program, but if I use iprintf() instead, when I link it with "ld
>> -static -nostdlib -L/path/to/newlib -o hello helloWorld.o crt1.o
>> my_syscalls.o -lc", ld complains "./libc.a(lib_a-vfiprintf.o): In
>> function `_vfiprintf_r':
>> vfprintf.c:(.text+0x1392): undefined reference to `__stack_chk_fail'".
>>
>> Any idea why is it so? And how to fix it?
>
> The symbol has been added by your compiler.  AFAIK it's defined
> in glibc.  See the GCC flag -fstack-protector.  In theory you
> should be able to define a function __stack_chk_fail(void) yourself
> and call abort in it, or something.
>
>
> Corinna
>
> --
> Corinna Vinschen
> Cygwin Project Co-Leader
> Red Hat
>



More information about the Newlib mailing list