From 178de77707b129cc7e4b1c35c6cd5bc9d6b3b71b Mon Sep 17 00:00:00 2001 From: Ulrich Müller Date: Sat, 8 May 2010 06:53:17 +0000 Subject: Initial patchset for Emacs 23.2. --- emacs/23.2/01_all_crt-dir.patch | 139 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 emacs/23.2/01_all_crt-dir.patch 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. */ + -- cgit v1.2.3-65-gdbad