Hi, The current trunk have no support for the __stpncpy_chk function. As the latest OS X (10.7 aka Lion) now defines stpncpy as a call to builtin__stpncpy_chk for GNUC compliant compiler, the following code won't link:
#include <string.h> int main(){ char string[10]; stpncpy(string,"abcd",8); return 0; } Undefined symbols for architecture x86_64: "___builtin___stpncpy_chk", referenced from: _main in ccGFZoZV.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit status This patch add support for this builtin. Bootstrapped and tested without regression on darwin x86_64. Romain Geissler gcc/ 2011-11-28 Romain Geissler <romain.geiss...@gmail.com> * builtins.def (BUILT_IN_STPNCPY_CHK): New definition. * builtins.c (expand_builtin, fold_builtin_4, maybe_emit_chk_warning): Add BUILT_IN_STPNCPY_CHK case. * gimple-fold.c (gimple_fold_builtin): Likewise. * tree-object-size.c (pass_through_call): Likewise. * tree-ssa-alias.c (ref_maybe_used_by_call_p_1, call_may_clobber_ref_p_1): Likewise. * tree-ssa-structalias.c (find_func_aliases_for_builtin_call, find_func_clobbers): Likewise. * tree.h (fold_builtin_strncpy_chk): Rename to fold_builtin_stxncpy_chk * builtins.c (fold_builtin_strncpy_chk): Likewise. Rewrite stpncpy_chk calls to strncpy_chk calls if returned value is ignored. gcc/testsuite/ 2011-11-28 Romain Geissler <romain.geiss...@gmail.com> * gcc.c-torture/execute/builtins/chk.h (stpncpy, stpncpy_disallowed): New definitions. * gcc.c-torture/execute/builtins/lib/chk.c (stpncpy_disallowed): Likewise. (stpncpy, __stpncpy_chk): New functions. * gcc.c-torture/execute/builtins/stpncpy-chk-lib.c: New file. * gcc.c-torture/execute/builtins/stpncpy-chk.c: Likewise.
lion_build.patch
Description: Binary data