Earnestly
2017-11-02 11:40:50 UTC
Hi,
For reference my system has the following versions and environs:
* gcc 7.2.0
* glibc 2.26.9000 (commit 2fac6a6cd5)
* make 4.2.90 (commit baa57d2) [patched, see below]
* CPPFLAGS -D_FORTIFY_SOURCE=2
* CFLAGS -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt
* LDFLAGS -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now
For awhile now I've been having an issue when building make from master
(currently 0c5a9f9) which results in the following error:
...
gcc -isystem /usr/include/guile/2.2 -pthread -Wall -Wextra -Werror -Wwrite-strings -Wshadow -Wpointer-arith -Wdeclaration-after-statement -Wbad-function-cast -Wformat-security -Wtype-limits -Wunused-but-set-parameter -Wlogical-op -Wignored-qualifiers -Wformat-signedness -Wduplicated-cond -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -Wl,--export-dynamic -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -o make ar.o arscan.o commands.o default.o dir.o expand.o file.o function.o getopt.o getopt1.o guile.o implicit.o job.o load.o loadapi.o main.o misc.o posixos.o output.o read.o remake.o rule.o signame.o strcache.o variable.o version.o vpath.o hash.o remote-stub.o glob/libglob.a -lguile-2.2 -lgc -ldl
glob/libglob.a(glob.o): In function `glob_in_dir':
glob.c:(.text+0x2d4): undefined reference to `__alloca'
glob.c:(.text+0x450): undefined reference to `__alloca'
glob.c:(.text+0x609): undefined reference to `__alloca'
glob.c:(.text+0x66a): undefined reference to `__alloca'
glob/libglob.a(glob.o): In function `glob':
glob.c:(.text+0x985): undefined reference to `__alloca'
glob/libglob.a(glob.o):glob.c:(.text+0x103c): more undefined references to `__alloca' follow
collect2: error: ld returned 1 exit status
I've worked around this with a quick diff but I'm unsure why this is
necessary or if it breaks any other platforms so I'm not creating it as
a patch:
diff --git a/glob/glob.c b/glob/glob.c
index f3911bc..e4d551e 100644
--- a/glob/glob.c
+++ b/glob/glob.c
@@ -208,8 +208,6 @@ my_realloc (p, n)
#endif /* __GNU_LIBRARY__ || __DJGPP__ */
-#if !defined __alloca && !defined __GNU_LIBRARY__
-
# ifdef __GNUC__
# undef alloca
# define alloca(n) __builtin_alloca (n)
@@ -229,8 +227,6 @@ extern char *alloca ();
# define __alloca alloca
-#endif
-
#ifndef __GNU_LIBRARY__
# define __stat stat
# ifdef STAT_MACROS_BROKEN
Thanks
For reference my system has the following versions and environs:
* gcc 7.2.0
* glibc 2.26.9000 (commit 2fac6a6cd5)
* make 4.2.90 (commit baa57d2) [patched, see below]
* CPPFLAGS -D_FORTIFY_SOURCE=2
* CFLAGS -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt
* LDFLAGS -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now
For awhile now I've been having an issue when building make from master
(currently 0c5a9f9) which results in the following error:
...
gcc -isystem /usr/include/guile/2.2 -pthread -Wall -Wextra -Werror -Wwrite-strings -Wshadow -Wpointer-arith -Wdeclaration-after-statement -Wbad-function-cast -Wformat-security -Wtype-limits -Wunused-but-set-parameter -Wlogical-op -Wignored-qualifiers -Wformat-signedness -Wduplicated-cond -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -Wl,--export-dynamic -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -o make ar.o arscan.o commands.o default.o dir.o expand.o file.o function.o getopt.o getopt1.o guile.o implicit.o job.o load.o loadapi.o main.o misc.o posixos.o output.o read.o remake.o rule.o signame.o strcache.o variable.o version.o vpath.o hash.o remote-stub.o glob/libglob.a -lguile-2.2 -lgc -ldl
glob/libglob.a(glob.o): In function `glob_in_dir':
glob.c:(.text+0x2d4): undefined reference to `__alloca'
glob.c:(.text+0x450): undefined reference to `__alloca'
glob.c:(.text+0x609): undefined reference to `__alloca'
glob.c:(.text+0x66a): undefined reference to `__alloca'
glob/libglob.a(glob.o): In function `glob':
glob.c:(.text+0x985): undefined reference to `__alloca'
glob/libglob.a(glob.o):glob.c:(.text+0x103c): more undefined references to `__alloca' follow
collect2: error: ld returned 1 exit status
I've worked around this with a quick diff but I'm unsure why this is
necessary or if it breaks any other platforms so I'm not creating it as
a patch:
diff --git a/glob/glob.c b/glob/glob.c
index f3911bc..e4d551e 100644
--- a/glob/glob.c
+++ b/glob/glob.c
@@ -208,8 +208,6 @@ my_realloc (p, n)
#endif /* __GNU_LIBRARY__ || __DJGPP__ */
-#if !defined __alloca && !defined __GNU_LIBRARY__
-
# ifdef __GNUC__
# undef alloca
# define alloca(n) __builtin_alloca (n)
@@ -229,8 +227,6 @@ extern char *alloca ();
# define __alloca alloca
-#endif
-
#ifndef __GNU_LIBRARY__
# define __stat stat
# ifdef STAT_MACROS_BROKEN
Thanks