[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/2] posix: Add compat glob symbol to not follow dangling
From: |
Adhemerval Zanella |
Subject: |
Re: [PATCH v2 1/2] posix: Add compat glob symbol to not follow dangling symbols |
Date: |
Tue, 26 Sep 2017 10:24:31 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
On 26/09/2017 08:29, Andreas Schwab wrote:
> Current version of make won't build against this (undefined reference to
> __alloca from included glob sources).
>
> Andreas.
>
I am not very familiar of the process to incorporate gnulib code
in external projects, but I see other possible issues that would
need to be fixed as well:
* FLEXIBLE_ARRAY_MEMBER definition for !__LIBC.
* __glob_pattern_type duplicated prototype.
* __set_errno and mempcpy definition.
I could build gnumake with forced internal glob implementation
(make_cv_sys_gnu_glob=no) with the patch following patch. Looking
gnulib I am not sure if the correct way to use mempcpy for !_LIBC.
---
diff --git a/posix/glob.c b/posix/glob.c
index 98122dac88..31e3aba4dd 100644
--- a/posix/glob.c
+++ b/posix/glob.c
@@ -65,11 +65,15 @@
# define __stat64(fname, buf) stat (fname, buf)
# define __fxstatat64(_, d, f, st, flag) fstatat (d, f, st, flag)
# define struct_stat64 struct stat
-# ifndef __MVS__
-# define __alloca alloca
-# endif
+# define __alloca alloca
# define __readdir readdir
+# define FLEXIBLE_ARRAY_MEMBER 0
# define COMPILE_GLOB64
+static inline void *
+mempcpy (void *dest, const void *src, size_t n)
+{
+ return memcpy (dest, src, n) + n;
+}
#endif /* _LIBC */
#include <fnmatch.h>
@@ -230,8 +234,6 @@ glob_use_alloca (size_t alloca_used, size_t len)
static int glob_in_dir (const char *pattern, const char *directory,
int flags, int (*errfunc) (const char *, int),
glob_t *pglob, size_t alloca_used);
-extern int __glob_pattern_type (const char *pattern, int quote)
- attribute_hidden;
static int prefix_array (const char *prefix, char **array, size_t n) __THROWNL;
static int collated_compare (const void *, const void *) __THROWNL;