[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#891373: gridengine: FTBFS with glibc 2.27: undefined reference to `__alloca'



Source: gridengine
Version: 8.1.9+dfsg-7
Severity: important
User: debian-glibc@lists.debian.org
Usertags: 2.27

gridengine 8.1.9+dfsg-7 fails to build with glibc 2.27
(2.27-0experimental0 from experimental):

| make[4]: Entering directory '/<<BUILDDIR>>/gridengine-8.1.9+dfsg/source/3rdparty/qmake/LINUXAMD64/glob'
| cc -DHAVE_CONFIG_H -I. -I../../glob -I..   -Wdate-time -D_FORTIFY_SOURCE=2  -O2 -Wstrict-prototypes -DLINUX -DLINUXAMD64 -DLINUXAMD64 -D_GNU_SOURCE -DGETHOSTBYNAME_R6 -DGETHOSTBYADDR_R8 -DTARGET_64BIT -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<BUILDDIR>>/gridengine-8.1.9+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -DSGE_PQS_API -DSPOOLING_dynamic -DSECURE -DHAVE_HWLOC=1 -DCOMPILE_DC -D__SGE_COMPILE_WITH_GETTEXT__ -D__SGE_NO_USERMAPPING__ -Wno-error -Wno-strict-prototypes -MT glob.o -MD -MP -MF .deps/glob.Tpo -c -o glob.o ../../glob/glob.c
| cc -DHAVE_CONFIG_H -I. -I../../glob -I..   -Wdate-time -D_FORTIFY_SOURCE=2  -O2 -Wstrict-prototypes -DLINUX -DLINUXAMD64 -DLINUXAMD64 -D_GNU_SOURCE -DGETHOSTBYNAME_R6 -DGETHOSTBYADDR_R8 -DTARGET_64BIT -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<BUILDDIR>>/gridengine-8.1.9+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -DSGE_PQS_API -DSPOOLING_dynamic -DSECURE -DHAVE_HWLOC=1 -DCOMPILE_DC -D__SGE_COMPILE_WITH_GETTEXT__ -D__SGE_NO_USERMAPPING__ -Wno-error -Wno-strict-prototypes -MT fnmatch.o -MD -MP -MF .deps/fnmatch.Tpo -c -o fnmatch.o ../../glob/fnmatch.c
| mv -f .deps/fnmatch.Tpo .deps/fnmatch.Po
| ../../glob/glob.c: In function ‘glob’:
| ../../glob/glob.c:576:23: warning: implicit declaration of function ‘__alloca’; did you mean ‘alloca’? [-Wimplicit-function-declaration]
|        newp = (char *) __alloca (dirlen + 1);
|                        ^~~~~~~~
|                        alloca
| ../../glob/glob.c:576:14: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
|        newp = (char *) __alloca (dirlen + 1);
|               ^
| ../../glob/glob.c:704:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
|         newp = (char *) __alloca (home_len + dirlen);
|                ^
| ../../glob/glob.c:727:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
|         newp = (char *) __alloca (end_name - dirname);
|                ^
| ../../glob/glob.c:778:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
|         newp = (char *) __alloca (home_len + rest_len + 1);
|                ^
| ../../glob/glob.c:809:11: warning: implicit declaration of function ‘__stat’; did you mean ‘__xstat’? [-Wimplicit-function-declaration]
|          : __stat (dirname, &st)) == 0
|            ^~~~~~
|            __xstat
| ../../glob/glob.c: In function ‘glob_in_dir’:
| ../../glob/glob.c:1251:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
|     char *fullname = (char *) __alloca (dirlen + 1 + patlen + 1);
|                      ^
| ../../glob/glob.c:1278:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
|     names = (struct globlink *) __alloca (sizeof (struct globlink));
|             ^
| ../../glob/glob.c:1336:32: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
|          struct globlink *new = (struct globlink *)
|                                 ^
| ../../glob/glob.c:1362:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
|        names = (struct globlink *) __alloca (sizeof (struct globlink));
|                ^
| mv -f .deps/glob.Tpo .deps/glob.Po
| rm -f libglob.a
| ar cru libglob.a glob.o fnmatch.o 
| ar: `u' modifier ignored since `D' is the default (see `U')
| ranlib libglob.a
| make[4]: Leaving directory '/<<BUILDDIR>>/gridengine-8.1.9+dfsg/source/3rdparty/qmake/LINUXAMD64/glob'
| Making all in config
 
[...]
 
| cc  -O2 -Wstrict-prototypes -DLINUX -DLINUXAMD64 -DLINUXAMD64 -D_GNU_SOURCE -DGETHOSTBYNAME_R6 -DGETHOSTBYADDR_R8 -DTARGET_64BIT -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<BUILDDIR>>/gridengine-8.1.9+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -DSGE_PQS_API -DSPOOLING_dynamic -DSECURE -DHAVE_HWLOC=1 -DCOMPILE_DC -D__SGE_COMPILE_WITH_GETTEXT__ -D__SGE_NO_USERMAPPING__ -Wno-error -Wno-strict-prototypes  -L. -Wl,-z,relro -rdynamic -Wl,-rpath,\$ORIGIN/../../lib/lx-amd64 -o make ar.o arscan.o commands.o default.o dir.o expand.o file.o function.o getopt.o getopt1.o implicit.o job.o main.o misc.o read.o remake.o remote-sge.o rule.o signame.o strcache.o variable.o version.o vpath.o hash.o glob/libglob.a  -lm -lpthread
| glob/libglob.a(glob.o): In function `glob_in_dir':
| ./source/3rdparty/qmake/LINUXAMD64/glob/../../glob/glob.c:1362: undefined reference to `__alloca'
| ./source/3rdparty/qmake/LINUXAMD64/glob/../../glob/glob.c:1337: undefined reference to `__alloca'
| ./source/3rdparty/qmake/LINUXAMD64/glob/../../glob/glob.c:1278: undefined reference to `__alloca'
| ./source/3rdparty/qmake/LINUXAMD64/glob/../../glob/glob.c:1251: undefined reference to `__alloca'
| glob/libglob.a(glob.o): In function `glob':
| ./source/3rdparty/qmake/LINUXAMD64/glob/../../glob/glob.c:576: undefined reference to `__alloca'
| glob/libglob.a(glob.o):./source/3rdparty/qmake/LINUXAMD64/glob/../../glob/glob.c:727: more undefined references to `__alloca' follow
| collect2: error: ld returned 1 exit status
| Makefile:592: recipe for target 'make' failed
| make[4]: *** [make] Error 1
| make[4]: Leaving directory '/<<BUILDDIR>>/gridengine-8.1.9+dfsg/source/3rdparty/qmake/LINUXAMD64'
| Makefile:710: recipe for target 'all-recursive' failed
| make[3]: *** [all-recursive] Error 1
| make[3]: Leaving directory '/<<BUILDDIR>>/gridengine-8.1.9+dfsg/source/3rdparty/qmake/LINUXAMD64'
| Makefile:489: recipe for target 'all' failed
| make[2]: *** [all] Error 2

A full build log is available there:
http://aws-logs.debian.net/2018/02/07/glibc-exp/gridengine_8.1.9+dfsg-7_unstable_glibc-exp.log

The problem is that the glibc 2.27 slightly changed its internal glob
implementation. gridengine uses an internal copy of make, which detects
that it doesn't support the new interface and switch to its internal
implementation which is slightly broken.

The same kind of patch as for make-dfsg should probably be applied:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891365

Reply to: