Subject: gcl: FTBFS under dpkg-buildpackage (i386, kernel 2.6.25-2-686)
From: David Bremner <[email-masked]>
To: Debian Bug Tracking System <[email-masked]>
Date: Thu, 07 Aug 2008 10:38:46 -0300

Package: gcl
Version: 2.6.7-42
Severity: important
Tags: patch
Justification: fails to build from source

The new ADDR_NO_RANDOMIZE detection snippets in configure fail under
dpkg-buildpackage because dpkg-bp defaults CFLAGS to "-g -O2", and gcc
4.[1,2,3] fails to compile the snippet. The attached patch (and
running autoconf to rebuild configure) fixes this by splitting 
h/unrandomize.h into headers (outside main) and code (inside main).

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing')
Architecture: i386 (i686)

Kernel: Linux 2.6.25-2-686 (SMP w/2 CPU cores)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages gcl depends on:
ii  debconf                   1.5.23         Debian configuration management sy
ii  emacs [emacsen]           22.2+2-3       The GNU Emacs editor (metapackage)
ii  emacs22-gtk [emacsen]     22.2+2-3       The GNU Emacs editor (with GTK use
ii  gcc                       4:4.3.1-2      The GNU C compiler
ii  libc6                     2.7-13         GNU C Library: Shared libraries
ii  libgmp3c2                 2:4.2.2+dfsg-3 Multiprecision arithmetic library
ii  libice6                   2:1.0.4-1      X11 Inter-Client Exchange library
ii  libncurses5               5.6+20080804-1 shared libraries for terminal hand
ii  libreadline5              5.2-3          GNU readline and history libraries
ii  libsm6                    2:1.0.3-2      X11 Session Management library
ii  libx11-6                  2:1.1.4-2      X11 client-side library
ii  libxaw7                   2:1.0.4-2      X11 Athena Widget library
ii  libxext6                  2:1.0.4-1      X11 miscellaneous extension librar
ii  libxmu6                   2:1.0.4-1      X11 miscellaneous utility library
ii  libxt6                    1:1.0.5-3      X11 toolkit intrinsics library
ii  tcl8.4                    8.4.19-2       Tcl (the Tool Command Language) v8
ii  tk8.4                     8.4.19-2       Tk toolkit for Tcl and X11, v8.4 -

gcl recommends no packages.

Versions of packages gcl suggests:
ii  gcl-doc                       2.6.7-42   Documentation for GNU Common Lisp

-- debconf information:
  gcl/default_gcl_ansi:
  gcl/default_gcl_prof:
diff --git a/configure.in b/configure.in
index b665142..8564e71 100644
--- a/configure.in
+++ b/configure.in
@@ -1022,7 +1022,8 @@ if test "$HAVE_SBRK" = "1" ; then
 	fi
 
 	AC_MSG_CHECKING([for personality(ADDR_NO_RANDOMIZE) support])
-	AC_TRY_RUN([void gprof_cleanup() {};
+	AC_TRY_RUN([#include "h/unrandomize_hdr.h"
+		    void gprof_cleanup() {};
 		    int main(int argc,char *argv[],char *envp[]) {
 	            #include "h/unrandomize.h"
 		    return 0;}],CAN_UNRANDOMIZE_SBRK=1,CAN_UNRANDOMIZE_SBRK=0,CAN_UNRANDOMIZE_SBRK=0)
@@ -1036,6 +1037,10 @@ if test "$HAVE_SBRK" = "1" ; then
 
 	AC_MSG_CHECKING([that sbrk is (now) non-random])
 	AC_TRY_RUN([#include <stdio.h>
+	    	    #ifdef CAN_UNRANDOMIZE_SBRK
+		    #include "h/unrandomize_hdr.h"
+		    #endif
+
 	            void gprof_cleanup() {};
 		    int main(int argc,char * argv[],char * envp[]) {
 			FILE *f;
@@ -1050,6 +1055,10 @@ if test "$HAVE_SBRK" = "1" ; then
 		exit 1
 	fi
 	AC_TRY_RUN([#include <stdio.h>
+	    	    #ifdef CAN_UNRANDOMIZE_SBRK
+		    #include "h/unrandomize_hdr.h"
+		    #endif
+
                     void gprof_cleanup() {};
 		    int main(int argc,char * argv[],char * envp[]) {
 			FILE *f;
diff --git a/h/unrandomize.h b/h/unrandomize.h
index 3970872..a9d8e0a 100644
--- a/h/unrandomize.h
+++ b/h/unrandomize.h
@@ -1,9 +1,3 @@
-#include <sys/personality.h>
-#include <syscall.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-
 {
 
   long pers = personality(0xffffffffUL);
diff --git a/h/unrandomize_hdr.h b/h/unrandomize_hdr.h
new file mode 100644
index 0000000..e1c15d4
--- /dev/null
+++ b/h/unrandomize_hdr.h
@@ -0,0 +1,5 @@
+#include <sys/personality.h>
+#include <syscall.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
diff --git a/o/main.c b/o/main.c
index efd2f2c..44104b3 100755
--- a/o/main.c
+++ b/o/main.c
@@ -117,6 +117,10 @@ void install_segmentation_catcher(void);
 #endif
 #endif
 
+#ifdef CAN_UNRANDOMIZE_SBRK
+#include "unrandomize_hdr.h"
+#endif
+
 int
 main(int argc, char **argv, char **envp) {
 #ifdef BSD