0.8.4.48:
authorKevin Rosenberg <kevin@rosenberg.net>
Wed, 19 Nov 2003 13:48:07 +0000 (13:48 +0000)
committerKevin Rosenberg <kevin@rosenberg.net>
Wed, 19 Nov 2003 13:48:07 +0000 (13:48 +0000)
* Add tools-for-build program to determine if asm/ldt.h has the
new name for the modify_ldt structure.
* Fixes to properly compile contribs on x86_64 systems

contrib/asdf-module.mk
contrib/sb-bsd-sockets/Makefile
contrib/sb-grovel/def-to-lisp.lisp
contrib/sb-posix/Makefile
make-config.sh
src/runtime/x86-linux-os.c
tools-for-build/Makefile
version.lisp-expr

index 0e5a538..c646b9d 100644 (file)
@@ -1,5 +1,29 @@
 CC=gcc
-export CC SBCL
+
+# Need to set CFLAGS and LDFLAGS here. sb-posix, sb-grovel, and
+# sb-bsd-sockets depends upon these being set on x86_64. Setting these
+# in their Makefile's is not adequate since their asd files are
+# invoked when loaded from other modules which don't require these
+# environmental values in their Makefile's.
+
+UNAME:=$(shell uname -m)
+export CFLAGS=-fPIC
+ifeq (solaris,$(UNAME))
+  export LDFLAGS=-shared -lresolv -lsocket -lnsl
+else
+  ifeq (Darwin,$(UNAME))
+    export LDFLAGS=-bundle
+  else
+    ifeq (x86_64,$(UNAME))
+      export LDFLAGS=-m32 -shared
+      export CFLAGS+= -m32
+    else
+      export LDFLAGS=-shared
+    endif
+  endif
+endif
+
+export CC SBCL CFLAGS LDFLAGS
 
 all: $(EXTRA_ALL_TARGETS)
        $(MAKE) -C ../asdf
index 968253d..c1335eb 100644 (file)
@@ -1,22 +1,2 @@
-# Set CFLAGS and LDFLAGS for sb-bsd-sockets.asd's invocation of gcc
-
-UNAME:=$(shell uname -m)
-
-export CFLAGS=-fPIC
-ifeq (solaris,$(UNAME))
-  export LDFLAGS=-shared -lresolv -lsocket -lnsl
-else
-  ifeq (Darwin,$(UNAME))
-    export LDFLAGS=-bundle
-  else
-    ifeq (x86_64,$(UNAME))
-      export LDFLAGS=-m32 -shared
-      export CFLAGS+= -m32
-    else
-      export LDFLAGS=-shared
-    endif
-  endif
-endif
-
 SYSTEM=sb-bsd-sockets
 include ../asdf-module.mk
index 3b2cba1..88e4bae 100644 (file)
@@ -104,8 +104,12 @@ printf(\"(in-package ~S)\\\n\");~%" package-name)
     (funcall (intern "C-CONSTANTS-EXTRACT" (find-package "SB-GROVEL"))
             filename tmp-c-source (constants-package component))
     (and               
-     (= (run-shell-command "gcc -o ~S ~S" (namestring tmp-a-dot-out)
-        (namestring tmp-c-source)) 0)
+     (= (run-shell-command "gcc ~A -o ~S ~S"
+                          (if (sb-ext:posix-getenv "CFLAGS")
+                              (sb-ext:posix-getenv "CFLAGS")
+                               "")
+                          (namestring tmp-a-dot-out)
+                          (namestring tmp-c-source)) 0)
      (= (run-shell-command "~A >~A"
                           (namestring tmp-a-dot-out)
                           (namestring tmp-constants)) 0)
index 8243a76..7464f2e 100644 (file)
@@ -1,2 +1,3 @@
 SYSTEM=sb-posix
 include ../asdf-module.mk
+
index e71a786..bd409f7 100644 (file)
@@ -167,6 +167,10 @@ cd $original_dir
 # similar with :STACK-GROWS-FOOWARD, too. -- WHN 2002-03-03
 if [ "$sbcl_arch" = "x86" ] ; then
     printf ' :gencgc :stack-grows-downward-not-upward :c-stack-is-control-stack' >> $ltf
+    cd tools-for-build
+    $GNUMAKE -I ../src/runtime modify-ldt-struct-name
+    ./modify-ldt-struct-name > ../src/runtime/modify-ldt-struct-name.h
+    cd ..
 elif [ "$sbcl_arch" = "mips" ] ; then
     # Use a little C program to try to guess the endianness.  Ware
     # cross-compilers!
index 7d42968..b39df5a 100644 (file)
 #include <sys/stat.h>
 #include <unistd.h>
 #include <asm/ldt.h>
+#include "modify-ldt-struct-name.h"
 #include <linux/unistd.h>
 #include <sys/mman.h>
 #include "thread.h"            /* dynamic_values_bytes */
 
+#ifndef MODIFY_LDT_STRUCT_NAMED_USER_DESC
+/* old glibc */
+#define user_desc  modify_ldt_ldt_s 
+#endif
+
 _syscall3(int, modify_ldt, int, func, void *, ptr, unsigned long, bytecount );
 
 #include "validate.h"
@@ -68,7 +74,7 @@ int arch_os_thread_init(struct thread *thread) {
     /* this must be called from a function that has an exclusive lock
      * on all_threads
      */
-    struct modify_ldt_ldt_s ldt_entry = {
+    struct user_desc ldt_entry = {
        1, 0, 0, /* index, address, length filled in later */
        1, MODIFY_LDT_CONTENTS_DATA, 0, 0, 0, 1
     }; 
@@ -123,7 +129,7 @@ struct thread *debug_get_fs() {
  */
 
 int arch_os_thread_cleanup(struct thread *thread) {
-    struct modify_ldt_ldt_s ldt_entry = {
+    struct user_desc ldt_entry = {
        0, 0, 0, 
        0, MODIFY_LDT_CONTENTS_DATA, 0, 0, 0, 0
     }; 
index db33d7d..e3c2c97 100644 (file)
@@ -11,7 +11,7 @@
 
 CPPFLAGS=-I../src/runtime
 
-all: grovel-headers determine-endianness where-is-mcontext
+all: grovel-headers determine-endianness where-is-mcontext modify-ldt-struct-name 
 
 clean: 
-       rm -f *.o grovel-headers determine-endianness where-is-mcontext
+       rm -f *.o grovel-headers determine-endianness where-is-mcontext modify-ldt-structure-name
index 8ac8c08..1a6c967 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.5.47"
+"0.8.5.48"