aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emacs/23.2/01_all_crt-dir.patch139
1 files changed, 139 insertions, 0 deletions
diff --git a/emacs/23.2/01_all_crt-dir.patch b/emacs/23.2/01_all_crt-dir.patch
new file mode 100644
index 0000000..7ed0ada
--- /dev/null
+++ b/emacs/23.2/01_all_crt-dir.patch
@@ -0,0 +1,139 @@
+http://bugs.gentoo.org/306831
+http://debbugs.gnu.org/5655
+Patch backported from upstream bzr repo, changesets 100020 and 100022.
+
+--- emacs-23.2-orig/configure.in
++++ emacs-23.2/configure.in
+@@ -169,6 +169,12 @@
+ fi
+ fi
+
++CRT_DIR=
++AC_ARG_WITH([crt-dir],dnl
++[AS_HELP_STRING([--with-crt-dir=DIR],[directory containing crtn.o etc.
++This option is only used on x86-64 and s390x GNU/Linux architectures.])])
++CRT_DIR="${with_crt_dir}"
++
+ AC_ARG_WITH([gnustep-conf],dnl
+ [AS_HELP_STRING([--with-gnustep-conf=PATH],[path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
+ test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
+@@ -997,17 +1003,31 @@
+ AC_SYS_LARGEFILE
+
+
+-### The standard library on x86-64 and s390x GNU/Linux distributions can
+-### be located in either /usr/lib64 or /usr/lib.
+-### In some rare cases, /usr/lib64 exists but does not contain the
+-### relevant files (bug#1287). Hence test for crtn.o.
++## Note: at present CRT_DIR is only used for amdx86-64 and ibms390x.
++## Other machine types hard-code the location in src/[ms]/*.h.
+ case "${canonical}" in
+ x86_64-*-linux-gnu* | s390x-*-linux-gnu* )
+- if test -e /usr/lib64/crtn.o; then
+- AC_DEFINE(HAVE_LIB64_DIR, 1,
+- [Define to 1 if the directory /usr/lib64 exists.])
+-fi
++
++ ## On x86-64 and s390x GNU/Linux distributions, the standard library
++ ## can be in a variety of places. We only try /usr/lib64 and /usr/lib.
++ ## For anything else (eg /usr/lib32), it is up the user to specify
++ ## the location (bug#5655).
++ ## Test for crtn.o, not just the directory, because sometimes the
++ ## directory exists but does not have the relevant files (bug#1287).
++ ## If user specified a crt-dir, use that unconditionally.
++ if test "X$CRT_DIR" = "X"; then
++ CRT_DIR=/usr/lib
++ test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64
++ fi
++
++ test -e $CRT_DIR/crtn.o || test -e $CRT_DIR/crt0.o || \
++ AC_MSG_ERROR([crt*.o not found. Use --with-crt-dir to specify the location.])
++ ;;
++
+ esac
++test "X$CRT_DIR" = "X" && CRT_DIR=/usr/lib
++AC_SUBST(CRT_DIR)
++
+
+ dnl This function defintion taken from Gnome 2.0
+ dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
+--- emacs-23.2-orig/src/m/amdx86-64.h
++++ emacs-23.2/src/m/amdx86-64.h
+@@ -80,7 +80,7 @@
+ a native binary of Emacs on FreeBSD/amd64 we can just point to /usr/lib. */
+
+ #undef START_FILES
+-#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
++#define START_FILES pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o
+
+ /* The duplicate -lgcc is intentional in the definition of LIB_STANDARD.
+ The reason is that some functions in libgcc.a call functions from libc.a,
+@@ -88,14 +88,14 @@
+ versions of ld are one-pass linkers, we need to mention -lgcc twice,
+ or else we risk getting unresolved externals. */
+ #undef LIB_STANDARD
+-#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtn.o
++#define LIB_STANDARD -lgcc -lc -lgcc $(CRT_DIR)/crtn.o
+
+ #elif defined(__OpenBSD__)
+
+ #undef START_FILES
+-#define START_FILES pre-crt0.o /usr/lib/crt0.o /usr/lib/crtbegin.o
++#define START_FILES pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crtbegin.o
+ #undef LIB_STANDARD
+-#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o
++#define LIB_STANDARD -lgcc -lc -lgcc $(CRT_DIR)/crtend.o
+
+ #elif defined(__NetBSD__)
+
+@@ -119,13 +119,8 @@
+ or else we risk getting unresolved externals. */
+ #undef START_FILES
+ #undef LIB_STANDARD
+-#ifdef HAVE_LIB64_DIR
+-#define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o
+-#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o
+-#else
+-#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
+-#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtn.o
+-#endif
++#define START_FILES pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o
++#define LIB_STANDARD -lgcc -lc -lgcc $(CRT_DIR)/crtn.o
+
+ #endif /* __FreeBSD__ */
+ #endif /* !i386 */
+--- emacs-23.2-orig/src/m/ibms390x.h
++++ emacs-23.2/src/m/ibms390x.h
+@@ -91,18 +91,10 @@
+ #define XPNTR(a) XUINT (a)
+
+ #undef START_FILES
+-#ifdef HAVE_LIB64_DIR
+-#define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o
+-#else
+-#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
+-#endif
++#define START_FILES pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o
+
+ #undef LIB_STANDARD
+-#ifdef HAVE_LIB64_DIR
+-#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o
+-#else
+-#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtn.o
+-#endif
++#define LIB_STANDARD -lgcc -lc -lgcc $(CRT_DIR)/crtn.o
+
+ /* arch-tag: 4b87653c-6add-4663-8691-7d9dc17b5519
+ (do not change this comment) */
+--- emacs-23.2-orig/src/Makefile.in
++++ emacs-23.2/src/Makefile.in
+@@ -67,6 +67,9 @@
+
+ OTHER_FILES = @OTHER_FILES@
+
++## Only used by amdx86-64 and ibms390x GNU/Linux.
++CRT_DIR=@CRT_DIR@
++
+ # ========================== start of cpp stuff =======================
+ /* From here on, comments must be done in C syntax. */
+