On 01/19/2013 08:07 PM, Assaf Gordon wrote:
> Which looks like some macro expansion, but I couldn't find the declaration of
> this macro.
It's because stpncpy.c earlier has this:
# define __stpncpy stpncpy
which means that this:
char *
__stpncpy (char *dest, const char *src, size_t n)
{
expands to this:
char *
stpncpy (char *dest, const char *src, size_t n)
{
which in turn is expanded by the stpncpy macro in the system string.h,
to this:
char *
((__builtin_object_size (char *dest, 0) != (size_t) -1) ?
__builtin___stpncpy_chk (char *dest, const char *src, size_t n,
__builtin_object_size (char *dest, 2 > 1)) : __inline_stpncpy_chk (char *dest,
const char *src, size_t n))
{
which is obviously bogus.
Does something like the following patch fix things for you?
diff --git a/lib/stpncpy.c b/lib/stpncpy.c
index 466cd5f..8b14fb9 100644
--- a/lib/stpncpy.c
+++ b/lib/stpncpy.c
@@ -31,7 +31,7 @@
/* Copy no more than N bytes of SRC to DST, returning a pointer past the
last non-NUL byte written into DST. */
char *
-__stpncpy (char *dest, const char *src, size_t n)
+(__stpncpy) (char *dest, const char *src, size_t n)
{
char c;
char *s = dest;