diff options
author | Christian Faulhammer <fauli@gentoo.org> | 2007-03-02 19:27:05 +0000 |
---|---|---|
committer | Christian Faulhammer <fauli@gentoo.org> | 2007-03-02 19:27:05 +0000 |
commit | bdc873b67b26f4a63093c701c9ad0178845be537 (patch) | |
tree | 266b52c95867c52aa3bbaea9066f9ca11740dc6e /app-editors | |
parent | Stable on ppc wrt bug 168280 (diff) | |
download | historical-bdc873b67b26f4a63093c701c9ad0178845be537.tar.gz historical-bdc873b67b26f4a63093c701c9ad0178845be537.tar.bz2 historical-bdc873b67b26f4a63093c701c9ad0178845be537.zip |
patches are now on Gentoo mirrors as they were too big
Package-Manager: portage-2.1.2-r9
Diffstat (limited to 'app-editors')
-rw-r--r-- | app-editors/emacs/ChangeLog | 7 | ||||
-rw-r--r-- | app-editors/emacs/Manifest | 41 | ||||
-rw-r--r-- | app-editors/emacs/emacs-18.59-r1.ebuild | 11 | ||||
-rw-r--r-- | app-editors/emacs/files/digest-emacs-18.59-r1 | 3 | ||||
-rw-r--r-- | app-editors/emacs/files/emacs-18.59-gcc4.patch | 1105 | ||||
-rw-r--r-- | app-editors/emacs/files/emacs-18.59-gentoo.patch | 96 | ||||
-rw-r--r-- | app-editors/emacs/files/emacs-18.59-unexelf.patch | 878 |
7 files changed, 30 insertions, 2111 deletions
diff --git a/app-editors/emacs/ChangeLog b/app-editors/emacs/ChangeLog index bc833511fdf3..ff2602b8df19 100644 --- a/app-editors/emacs/ChangeLog +++ b/app-editors/emacs/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for app-editors/emacs # Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/ChangeLog,v 1.123 2007/03/02 19:04:40 opfer Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/ChangeLog,v 1.124 2007/03/02 19:27:05 opfer Exp $ + + 02 Mar 2007; Christian Faulhammer <opfer@gentoo.org> + -files/emacs-18.59-gcc4.patch, -files/emacs-18.59-gentoo.patch, + -files/emacs-18.59-unexelf.patch, emacs-18.59-r1.ebuild: + patches are now on Gentoo mirrors as they were too big 02 Mar 2007; Christian Faulhammer <opfer@gentoo.org> -emacs-21.4-r6.ebuild: diff --git a/app-editors/emacs/Manifest b/app-editors/emacs/Manifest index ee366c2b0381..7e56605e50f0 100644 --- a/app-editors/emacs/Manifest +++ b/app-editors/emacs/Manifest @@ -13,18 +13,6 @@ AUX 60emacs-22.0.50.envd 39 RMD160 6264f1faa5b99e98251be427fd8ef60b52ca1370 SHA1 MD5 0d61f19c0e6fcdb6657ae1d4d9e69801 files/60emacs-22.0.50.envd 39 RMD160 6264f1faa5b99e98251be427fd8ef60b52ca1370 files/60emacs-22.0.50.envd 39 SHA256 5501f5818b4b88a34e93440e5fc6e2a44d2a1c83080358849b811b1d17234f43 files/60emacs-22.0.50.envd 39 -AUX emacs-18.59-gcc4.patch 28314 RMD160 8e89f1371d4e7f1aea83696a5b80561112fd55f1 SHA1 e5ba8aa69651985728fb52348f76e9ebbdec6397 SHA256 1f56fe8e186f0a11ced90fa432f5d717f91cd6d45436d58578a1e6d976c0c13c -MD5 21889afa26e89127713453aee24bf3f7 files/emacs-18.59-gcc4.patch 28314 -RMD160 8e89f1371d4e7f1aea83696a5b80561112fd55f1 files/emacs-18.59-gcc4.patch 28314 -SHA256 1f56fe8e186f0a11ced90fa432f5d717f91cd6d45436d58578a1e6d976c0c13c files/emacs-18.59-gcc4.patch 28314 -AUX emacs-18.59-gentoo.patch 3901 RMD160 d00d15f69e3c0fa258d5ba0dd4297c25b00c71c5 SHA1 4bbce8130c171db6a4a562418ff49aa3c95c1280 SHA256 f73cd87ac92dc89617b819f41b9c94f680d46653c553d8c3a25255b53629e93a -MD5 d9a84fa25df38b43cdce07e9ca4f53c0 files/emacs-18.59-gentoo.patch 3901 -RMD160 d00d15f69e3c0fa258d5ba0dd4297c25b00c71c5 files/emacs-18.59-gentoo.patch 3901 -SHA256 f73cd87ac92dc89617b819f41b9c94f680d46653c553d8c3a25255b53629e93a files/emacs-18.59-gentoo.patch 3901 -AUX emacs-18.59-unexelf.patch 30720 RMD160 42f9bc14274fb0f4f6b421e607dd4fffd6f12c5e SHA1 3ba8430b7a65cf5811620f200ab01852b5c6e441 SHA256 dc4538580635977ea8415188585dbfcd88867842495dba144e854f95e16634fb -MD5 2179ae07d8caf10bdb4e36126353f0b1 files/emacs-18.59-unexelf.patch 30720 -RMD160 42f9bc14274fb0f4f6b421e607dd4fffd6f12c5e files/emacs-18.59-unexelf.patch 30720 -SHA256 dc4538580635977ea8415188585dbfcd88867842495dba144e854f95e16634fb files/emacs-18.59-unexelf.patch 30720 AUX emacs-21.2-sh.patch 5782 RMD160 4e9f7369d9655a2bdb9cc017ba62e60ef18976a7 SHA1 8ab2b30b3e276f5383c46fad4d9cf9c3d41b8985 SHA256 c06d2f9e435e8059608bea7314ffee7cbbd0b066bb9b1c96598988f2f96fd9e5 MD5 2f1bf0e4f91897570110704adbaf48dc files/emacs-21.2-sh.patch 5782 RMD160 4e9f7369d9655a2bdb9cc017ba62e60ef18976a7 files/emacs-21.2-sh.patch 5782 @@ -65,14 +53,15 @@ AUX emacs-subdirs-el-gentoo.diff 1369 RMD160 142e80ab7dc4620275ec9623f646e0b2c4a MD5 5f423550e3d32b7c0511eccd93a94750 files/emacs-subdirs-el-gentoo.diff 1369 RMD160 142e80ab7dc4620275ec9623f646e0b2c4a1c6bf files/emacs-subdirs-el-gentoo.diff 1369 SHA256 c407b31c785b275f12337e41e58ff8386219b1c94a1c98b69eee82a10eb54074 files/emacs-subdirs-el-gentoo.diff 1369 +DIST emacs-18-patches.tar.bz2 16526 RMD160 ab0ed5e428fd71f24f44b43945940d7d33670e81 SHA1 3e2e962da5c7d3314943cdb402fd4c026301341c SHA256 d8dd29786dbd202b5e7bb3a176d97ae0901b6c1dd4276e253f0f42fcef34cd6e DIST emacs-18.59-linux22x-elf-glibc21.diff.gz 15671 RMD160 4fab87eead1a66d767d2334d31507695dcf7b4a8 SHA1 075f1c9cf86e9a10fb686ebd04a2f95d6e4c3972 SHA256 fb810d893938883d50a3a8d7c43fbeb1604d5454f760b8f1f700326c8ee659dd DIST emacs-18.59.tar.gz 2962652 RMD160 4976d0f0f34b6d54db6774d24a528f74a3bb20dc SHA1 15b25bf130e3eeb91f3eea8c01a3dec9aabf23cc SHA256 1e27e33f91984a91e9b4c1f21433f931aba03670960ecc147bb6d7b0de0f051e DIST emacs-21.4a.tar.gz 20403483 RMD160 c312e739935b56d08783bbfe97992297a363cb8a SHA1 cdb33731180fe4a912838af805dd35e3f55394d4 SHA256 1d50ddae117c48d689a3d772e390569edccfdc22168be0112d2093bd2d7c3216 DIST leim-21.4.tar.gz 3291433 RMD160 89e1108bfe06425a0d6b4d941f9c297551bafcca SHA1 dd63f9aca1a58d40d9d426dd410fb627230974f7 SHA256 db24946985dd644bfed18815d6e991dad27f8ab1fd5823dd6dc4eb8dcd04333b -EBUILD emacs-18.59-r1.ebuild 2934 RMD160 c58003f359b970f445fbcd35a43fa1f29504881c SHA1 272c69cd9c9afa1f25d8a875cb88334071b027e3 SHA256 9f152b4d0937a39a07e70847d512475a5fff16a194a06f72fdacab888308664c -MD5 34ef95f0991baebedde795e1c642ec44 emacs-18.59-r1.ebuild 2934 -RMD160 c58003f359b970f445fbcd35a43fa1f29504881c emacs-18.59-r1.ebuild 2934 -SHA256 9f152b4d0937a39a07e70847d512475a5fff16a194a06f72fdacab888308664c emacs-18.59-r1.ebuild 2934 +EBUILD emacs-18.59-r1.ebuild 2972 RMD160 8969b89b83619a3bb54f922d0a6d829849b38e90 SHA1 fe227ca33eaa596ff3d57942f24e997aeb8b22a9 SHA256 4fd0bb77cdf325fd8e4ffa48e522a9ed6b8133efc5bb2663b24f0a0992294a32 +MD5 11b716757f0d6c02544eb3462e7aec72 emacs-18.59-r1.ebuild 2972 +RMD160 8969b89b83619a3bb54f922d0a6d829849b38e90 emacs-18.59-r1.ebuild 2972 +SHA256 4fd0bb77cdf325fd8e4ffa48e522a9ed6b8133efc5bb2663b24f0a0992294a32 emacs-18.59-r1.ebuild 2972 EBUILD emacs-21.4-r4.ebuild 4576 RMD160 9d13437e4792cb077f3c0f58ac21b5f23367ba09 SHA1 ac279cb763925caf5e5e39cfaa15670228896b39 SHA256 69a9266c3e94c3b1f90f23d6036a5fda18447a84836814308a6394e1326c4f12 MD5 d587ed63604257a78b4ef1c44573a601 emacs-21.4-r4.ebuild 4576 RMD160 9d13437e4792cb077f3c0f58ac21b5f23367ba09 emacs-21.4-r4.ebuild 4576 @@ -81,17 +70,17 @@ EBUILD emacs-21.4-r7.ebuild 5740 RMD160 8b3e7d5c5131578a747a557698e20fa1f1bc0afd MD5 44ab97cff17e355d80cfab6659205aa2 emacs-21.4-r7.ebuild 5740 RMD160 8b3e7d5c5131578a747a557698e20fa1f1bc0afd emacs-21.4-r7.ebuild 5740 SHA256 92c536b96b10a34b1e3a378d796acb920b6aa4d2370180c05121201e6ba3cd42 emacs-21.4-r7.ebuild 5740 -MISC ChangeLog 18728 RMD160 ba6ac9fbecc728fd6eff803380d05d73a16424a3 SHA1 c9e24fccaa79eda0c5ec83c167b8f9744c87d5ac SHA256 7b1a3d0a54778dbd6098519022208be1c42df7165befd34c22161f2f3a4e3e98 -MD5 3c68f81816f60b5ac7da2b2313870304 ChangeLog 18728 -RMD160 ba6ac9fbecc728fd6eff803380d05d73a16424a3 ChangeLog 18728 -SHA256 7b1a3d0a54778dbd6098519022208be1c42df7165befd34c22161f2f3a4e3e98 ChangeLog 18728 +MISC ChangeLog 18966 RMD160 343c4852102f9d48a0576d0b3c53652f576285e0 SHA1 88c888f2b513b369b02f65bbc7d05f4b066feb45 SHA256 871531167cd9c470994d7fada90db113d431aceeff5afa750429db28d7756722 +MD5 83bfcab5d51c6f868834828596e39bce ChangeLog 18966 +RMD160 343c4852102f9d48a0576d0b3c53652f576285e0 ChangeLog 18966 +SHA256 871531167cd9c470994d7fada90db113d431aceeff5afa750429db28d7756722 ChangeLog 18966 MISC metadata.xml 158 RMD160 415d172437ca754d24fc5ab186ba8e77934d96e4 SHA1 61f6eff9729cd87a725c2a70c81aca4270a17fc4 SHA256 1393bdef3a74343fdb40a112c7096a1af16f67e7a43413250de28dfe73810eab MD5 fcd33d07e4ee719b01157946734f4fe8 metadata.xml 158 RMD160 415d172437ca754d24fc5ab186ba8e77934d96e4 metadata.xml 158 SHA256 1393bdef3a74343fdb40a112c7096a1af16f67e7a43413250de28dfe73810eab metadata.xml 158 -MD5 c8ac383b70bbc9d6e0203b93246ab54f files/digest-emacs-18.59-r1 536 -RMD160 bfb96b384166f7f4f0830a76f6dd7d0ef6a43f62 files/digest-emacs-18.59-r1 536 -SHA256 854d3d621b4d3038ba37abce197d69dd4dd5d1a50eb2217d769ea7c10c22e9fb files/digest-emacs-18.59-r1 536 +MD5 6bd3531350f6b7c7682351e3dcf628d0 files/digest-emacs-18.59-r1 786 +RMD160 4d1f0a68da522f0bfbe8cebdb748c5f95ccc1c9d files/digest-emacs-18.59-r1 786 +SHA256 a5d7f43b69d68028793ee45424a1fce37e65dd63802310ebfda5ca85a62e9ba7 files/digest-emacs-18.59-r1 786 MD5 6276bfdc37e540127a083cc6b979ac37 files/digest-emacs-21.4-r4 473 RMD160 4f6aee1102af50b44f69f8de5714c901c5b6b15c files/digest-emacs-21.4-r4 473 SHA256 8dec85daf40abb62a8c6a7232b067f0e5da524b222d2668f8db0f1df9dd7188e files/digest-emacs-21.4-r4 473 @@ -101,7 +90,7 @@ SHA256 8dec85daf40abb62a8c6a7232b067f0e5da524b222d2668f8db0f1df9dd7188e files/di -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) -iD8DBQFF6HUVNQqtfCuFneMRAhfKAJ9ASK+a2daSOq4AAtDLDISJqfelrgCfaqwP -HWK5Eew242xthgTooz9gxBs= -=4MOC +iD8DBQFF6HpYNQqtfCuFneMRAiDeAJ92oO6Z9uyfHTsQUkN4GtZTTZd1PQCfR03J +mt+MsbEzbQ2evrp6pnGbiPo= +=Hl3V -----END PGP SIGNATURE----- diff --git a/app-editors/emacs/emacs-18.59-r1.ebuild b/app-editors/emacs/emacs-18.59-r1.ebuild index 910df2f424cd..f09e527b1d3b 100644 --- a/app-editors/emacs/emacs-18.59-r1.ebuild +++ b/app-editors/emacs/emacs-18.59-r1.ebuild @@ -1,12 +1,13 @@ # Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-18.59-r1.ebuild,v 1.1 2007/02/14 14:46:28 opfer Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-18.59-r1.ebuild,v 1.2 2007/03/02 19:27:05 opfer Exp $ inherit eutils toolchain-funcs flag-o-matic alternatives DESCRIPTION="The extensible self-documenting text editor" HOMEPAGE="http://www.gnu.org/software/emacs/" SRC_URI="mirror://gnu/old-gnu/emacs/${P}.tar.gz + mirror://gentoo/emacs-18-patches.tar.bz2 ftp://ftp.splode.com/pub/users/friedman/emacs/${P}-linux22x-elf-glibc21.diff.gz" LICENSE="GPL-1" @@ -25,9 +26,9 @@ src_unpack() { unpack ${A} cd "${S}" epatch "${WORKDIR}/${P}-linux22x-elf-glibc21.diff" - epatch "${FILESDIR}/${P}-unexelf.patch" - epatch "${FILESDIR}/${P}-gentoo.patch" - epatch "${FILESDIR}/${P}-gcc4.patch" + epatch "${WORKDIR}/${P}-unexelf.patch" + epatch "${WORKDIR}/${P}-gentoo.patch" + epatch "${WORKDIR}/${P}-gcc4.patch" } src_compile() { @@ -37,7 +38,7 @@ src_compile() { local arch case ${ARCH} in x86) arch=intel386 ;; - *) die "Architecture ${ARCH} not supported" ;; + *) die "Architecture ${ARCH} not supported" ;; esac local cmd="s/\"s-.*\.h\"/\"s-linux.h\"/;s/\"m-.*\.h\"/\"m-${arch}.h\"/" use X && cmd="${cmd};s/.*\(#define HAVE_X_WINDOWS\).*/\1/" diff --git a/app-editors/emacs/files/digest-emacs-18.59-r1 b/app-editors/emacs/files/digest-emacs-18.59-r1 index 0b6bbff1ba52..2ec99cae6e30 100644 --- a/app-editors/emacs/files/digest-emacs-18.59-r1 +++ b/app-editors/emacs/files/digest-emacs-18.59-r1 @@ -1,3 +1,6 @@ +MD5 f61420b327a9753e57b14fb1d3dae826 emacs-18-patches.tar.bz2 16526 +RMD160 ab0ed5e428fd71f24f44b43945940d7d33670e81 emacs-18-patches.tar.bz2 16526 +SHA256 d8dd29786dbd202b5e7bb3a176d97ae0901b6c1dd4276e253f0f42fcef34cd6e emacs-18-patches.tar.bz2 16526 MD5 a7a4ed051dc232cdc9cf37208135302a emacs-18.59-linux22x-elf-glibc21.diff.gz 15671 RMD160 4fab87eead1a66d767d2334d31507695dcf7b4a8 emacs-18.59-linux22x-elf-glibc21.diff.gz 15671 SHA256 fb810d893938883d50a3a8d7c43fbeb1604d5454f760b8f1f700326c8ee659dd emacs-18.59-linux22x-elf-glibc21.diff.gz 15671 diff --git a/app-editors/emacs/files/emacs-18.59-gcc4.patch b/app-editors/emacs/files/emacs-18.59-gcc4.patch deleted file mode 100644 index ce04f397910a..000000000000 --- a/app-editors/emacs/files/emacs-18.59-gcc4.patch +++ /dev/null @@ -1,1105 +0,0 @@ -Prereq: 2004-03-09 -diff -ur emacs-18.59-orig/src/ChangeLog emacs-18.59/src/ChangeLog ---- emacs-18.59-orig/src/ChangeLog 2004-03-09 08:36:49.000000000 +0100 -+++ emacs-18.59/src/ChangeLog 2007-01-29 21:47:56.000000000 +0100 -@@ -1,3 +1,11 @@ -+2007-01-29 Ulrich Mueller <ulm@kph.uni-mainz.de> -+ -+ * x11term.c (internal_socket_read): Handle XK_BackSpace key. -+ -+ * callproc.c, doprnt.c, emacssignal.h, fns.c, lisp.h, lread.c, -+ malloc.c, process.c, s-linux.h, sysdep.c, terminfo.c, x11term.c: -+ Fix GCC 4.1 compilation issues. -+ - 2004-03-09 Ulrich Mueller <ulm@kph.uni-mainz.de> - - * malloc.c (DONT_DEFINE_SIGNAL): Defined. -diff -ur emacs-18.59-orig/src/alloc.c emacs-18.59/src/alloc.c ---- emacs-18.59-orig/src/alloc.c 1992-09-21 07:45:30.000000000 +0200 -+++ emacs-18.59/src/alloc.c 2007-01-29 21:47:56.000000000 +0100 -@@ -1073,7 +1073,7 @@ - mark_object (&ptr->contents[i]); - } - break; --#endif 0 -+#endif - - case Lisp_Symbol: - { -@@ -1310,7 +1310,7 @@ - } - } - --#endif standalone -+#endif /* standalone */ - - /* Free all unmarked vectors */ - { -diff -ur emacs-18.59-orig/src/buffer.c emacs-18.59/src/buffer.c ---- emacs-18.59-orig/src/buffer.c 1992-05-13 21:39:33.000000000 +0200 -+++ emacs-18.59/src/buffer.c 2007-01-29 21:47:56.000000000 +0100 -@@ -331,7 +331,7 @@ - return XBUFFER (buffer)->number; - } - */ --#endif NOTDEF -+#endif /* NOTDEF */ - - DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0, - "Return name of file BUFFER is visiting, or NIL if none.\n\ -@@ -601,7 +601,7 @@ - - #ifdef subprocesses - kill_buffer_processes (buf); --#endif subprocesses -+#endif - - tem = Vinhibit_quit; - Vinhibit_quit = Qt; -diff -ur emacs-18.59-orig/src/callproc.c emacs-18.59/src/callproc.c ---- emacs-18.59-orig/src/callproc.c 1992-07-12 05:26:01.000000000 +0200 -+++ emacs-18.59/src/callproc.c 2007-01-29 21:47:56.000000000 +0100 -@@ -21,6 +21,7 @@ - /* This must precede sys/signal.h on certain machines. */ - #include <sys/types.h> - #include <signal.h> -+#include <unistd.h> - - #include "config.h" - -@@ -241,7 +242,7 @@ - { - #ifndef subprocesses - wait_without_blocking (); --#endif subprocesses -+#endif - return Qnil; - } - -@@ -413,7 +414,7 @@ - - #ifdef vipc - something missing here; --#endif vipc -+#endif - - /* execvp does not accept an environment arg so the only way - to pass this environment is to set environ. Our caller -diff -ur emacs-18.59-orig/src/dispnew.c emacs-18.59/src/dispnew.c ---- emacs-18.59-orig/src/dispnew.c 1992-07-24 21:31:36.000000000 +0200 -+++ emacs-18.59/src/dispnew.c 2007-01-29 21:47:56.000000000 +0100 -@@ -586,15 +586,15 @@ - { - #ifndef COMPILER_REGISTER_BUG - register --#endif COMPILER_REGISTER_BUG -+#endif - struct window *w = XWINDOW (selected_window); - #ifndef COMPILER_REGISTER_BUG - register --#endif COMPILER_REGISTER_BUG -+#endif - int hpos = cursor_hpos; - #ifndef COMPILER_REGISTER_BUG - register --#endif COMPILER_REGISTER_BUG -+#endif - int vpos = cursor_vpos; - - /* Give up if about to continue line */ -diff -ur emacs-18.59-orig/src/doprnt.c emacs-18.59/src/doprnt.c ---- emacs-18.59-orig/src/doprnt.c 1991-01-08 18:26:23.000000000 +0100 -+++ emacs-18.59/src/doprnt.c 2007-01-29 21:47:56.000000000 +0100 -@@ -22,6 +22,7 @@ - - #include <stdio.h> - #include <ctype.h> -+#include "config.h" - - doprnt (buffer, bufsize, format, nargs, args) - char *buffer; -diff -ur emacs-18.59-orig/src/editfns.c emacs-18.59/src/editfns.c ---- emacs-18.59-orig/src/editfns.c 1992-08-08 01:38:16.000000000 +0200 -+++ emacs-18.59/src/editfns.c 2007-01-29 21:47:56.000000000 +0100 -@@ -1046,7 +1046,7 @@ - return Qnil; - return build_string (val); - } --#endif MAINTAIN_ENVIRONMENT -+#endif /* MAINTAIN_ENVIRONMENT */ - - void - syms_of_editfns () -diff -ur emacs-18.59-orig/src/emacs.c emacs-18.59/src/emacs.c ---- emacs-18.59-orig/src/emacs.c 1992-10-17 04:51:00.000000000 +0100 -+++ emacs-18.59/src/emacs.c 2007-01-29 21:47:56.000000000 +0100 -@@ -314,7 +314,7 @@ - #ifdef HIGHPRI - setpriority (PRIO_PROCESS, getpid (), HIGHPRI); - setuid (getuid ()); --#endif HIGHPRI -+#endif - - inhibit_window_system = 0; - -@@ -402,7 +402,7 @@ - #endif - #ifdef SIGXFSZ - signal (SIGXFSZ, fatal_error_signal); --#endif SIGXFSZ -+#endif - - #ifdef AIX - /* This used to run fatal_error_signal, -@@ -489,7 +489,7 @@ - syms_of_alloc (); - #ifdef MAINTAIN_ENVIRONMENT - syms_of_environ (); --#endif MAINTAIN_ENVIRONMENT -+#endif /* MAINTAIN_ENVIRONMENT */ - syms_of_read (); - syms_of_print (); - syms_of_eval (); -diff -ur emacs-18.59-orig/src/emacssignal.h emacs-18.59/src/emacssignal.h ---- emacs-18.59-orig/src/emacssignal.h 1991-12-31 21:52:31.000000000 +0100 -+++ emacs-18.59/src/emacssignal.h 2007-01-29 21:47:56.000000000 +0100 -@@ -22,7 +22,8 @@ - #define sighold(SIG) ONLY_USED_IN_BSD_4_1 - #define sigrelse(SIG) ONLY_USED_IN_BSD_4_1 - --int (*sys_signal (int signal_number, int (*action)())) (); -+typedef void (*signal_handler_t) (); -+signal_handler_t sys_signal (int signal_number, signal_handler_t action); - int sys_sigpause (sigset_t new_mask); - sigset_t sys_sigblock (sigset_t new_mask); - sigset_t sys_sigunblock (sigset_t new_mask); -diff -ur emacs-18.59-orig/src/fileio.c emacs-18.59/src/fileio.c ---- emacs-18.59-orig/src/fileio.c 1998-05-31 05:34:39.000000000 +0200 -+++ emacs-18.59/src/fileio.c 2007-01-29 21:47:56.000000000 +0100 -@@ -784,7 +784,7 @@ - if (o == target + 1 && o[-1] == '/' && o[0] == '/') - ++o; - else --#endif APOLLO -+#endif /* APOLLO */ - if (o == target && *o == '/') - ++o; - p += 3; -diff -ur emacs-18.59-orig/src/fns.c emacs-18.59/src/fns.c ---- emacs-18.59-orig/src/fns.c 1992-10-17 04:54:17.000000000 +0100 -+++ emacs-18.59/src/fns.c 2007-01-29 21:47:56.000000000 +0100 -@@ -90,8 +90,6 @@ - (arg) - Lisp_Object arg; - { -- extern long random (); -- extern srandom (); - extern long time (); - - if (EQ (arg, Qt)) -diff -ur emacs-18.59-orig/src/lisp.h emacs-18.59/src/lisp.h ---- emacs-18.59-orig/src/lisp.h 1992-03-06 00:11:31.000000000 +0100 -+++ emacs-18.59/src/lisp.h 2004-05-13 02:56:53.000000000 +0200 -@@ -983,7 +983,6 @@ - - extern void debugger (); - --extern char *malloc (), *realloc (), *getenv (), *ctime (), *getwd (); - extern long *xmalloc (), *xrealloc (); - - #ifdef MAINTAIN_ENVIRONMENT -diff -ur emacs-18.59-orig/src/lread.c emacs-18.59/src/lread.c ---- emacs-18.59-orig/src/lread.c 1992-03-23 05:18:17.000000000 +0100 -+++ emacs-18.59/src/lread.c 2007-01-29 21:47:56.000000000 +0100 -@@ -229,7 +229,7 @@ - Lisp_Object stream; - { - fclose (*(FILE **) XSTRING (stream)); -- free (XPNTR (stream)); -+ free ((void *)(XPNTR (stream))); - if (--load_in_progress < 0) load_in_progress = 0; - return Qnil; - } -@@ -465,7 +465,7 @@ - return Qnil; - } - --#endif standalone -+#endif /* standalone */ - - DEFUN ("read", Fread, Sread, 0, 1, 0, - "Read one Lisp expression as text from STREAM, return as Lisp object.\n\ -@@ -1141,7 +1141,7 @@ - sym = intern (string); - XSET (XSYMBOL (sym)->function, Lisp_Subr, sname); - } --#endif NOTDEF -+#endif /* NOTDEF */ - - /* New replacement for DefIntVar; it ignores the doc string argument - on the assumption that make-docfile will handle that. */ -@@ -1230,7 +1230,7 @@ - abort (); - } - --#endif standalone -+#endif /* standalone */ - - init_read () - { -diff -ur emacs-18.59-orig/src/malloc.c emacs-18.59/src/malloc.c ---- emacs-18.59-orig/src/malloc.c 2004-03-09 08:33:12.000000000 +0100 -+++ emacs-18.59/src/malloc.c 2007-01-29 21:47:56.000000000 +0100 -@@ -213,8 +213,6 @@ - - static void getpool (); - --char *malloc (); -- - /* Cause reinitialization based on job parameters; - also declare where the end of pure storage is. */ - void -@@ -412,7 +410,7 @@ - } - } - --char * -+void * - malloc (n) /* get a block */ - unsigned n; - { -@@ -488,8 +486,9 @@ - return (char *) p + ((sizeof *p + 7) & ~7); - } - -+void - free (mem) -- char *mem; -+ void *mem; - { - register struct mhead *p; - { -@@ -509,7 +508,7 @@ - if (p -> mh_alloc != ISALLOC) - abort (); - --#else rcheck -+#else /* rcheck */ - if (p -> mh_alloc != ISALLOC) - { - if (p -> mh_alloc == ISFREE) -@@ -544,9 +543,9 @@ - } - } - --char * -+void * - realloc (mem, n) -- char *mem; -+ void *mem; - register unsigned n; - { - register struct mhead *p; -@@ -606,7 +605,7 @@ - - /* This is in case something linked with Emacs calls calloc. */ - --char * -+void * - calloc (num, size) - unsigned num, size; - { -@@ -621,8 +620,9 @@ - - /* This is in case something linked with Emacs calls cfree. */ - -+void - cfree (mem) -- char *mem; -+ void *mem; - { - return free (mem); - } -@@ -656,8 +656,8 @@ - #ifndef HPUX - /* This runs into trouble with getpagesize on HPUX. - Patching out seems cleaner than the ugly fix needed. */ --char * --valloc (size) -+void * -+valloc (size_t size) - { - return memalign (getpagesize (), size); - } -diff -ur emacs-18.59-orig/src/mocklisp.c emacs-18.59/src/mocklisp.c ---- emacs-18.59-orig/src/mocklisp.c 1991-01-08 19:00:01.000000000 +0100 -+++ emacs-18.59/src/mocklisp.c 2007-01-29 21:47:56.000000000 +0100 -@@ -193,7 +193,7 @@ - XSETINT (to, XINT (to) + XINT (from)); - return Fsubstring (string, from, to); - } --#endif NOTDEF -+#endif /* NOTDEF */ - DEFUN ("insert-string", Finsert_string, Sinsert_string, 0, MANY, 0, - "Mocklisp-compatibility insert function.\n\ - Like the function `insert' except that any argument that is a number\n\ -diff -ur emacs-18.59-orig/src/process.c emacs-18.59/src/process.c ---- emacs-18.59-orig/src/process.c 1998-05-31 05:34:40.000000000 +0200 -+++ emacs-18.59/src/process.c 2007-01-29 21:47:56.000000000 +0100 -@@ -1438,7 +1438,7 @@ - - while (1) - { -- int value = connect (s, &address, sizeof address); -+ int value = connect (s, (struct sockaddr *)&address, sizeof address); - /* Continue if successeful. */ - if (value != -1) - break; -@@ -1592,7 +1592,8 @@ - int xerrno; - Lisp_Object proc; - #ifdef HAVE_TIMEVAL -- struct timeval timeout, end_time, garbage; -+ struct timeval timeout, end_time; -+ struct timezone garbage; - #else - long timeout, end_time, temp; - #endif /* not HAVE_TIMEVAL */ -diff -ur emacs-18.59-orig/src/regex.c emacs-18.59/src/regex.c ---- emacs-18.59-orig/src/regex.c 1992-07-07 17:35:33.000000000 +0200 -+++ emacs-18.59/src/regex.c 2007-01-29 21:47:56.000000000 +0100 -@@ -90,7 +90,7 @@ - - #ifndef NFAILURES - #define NFAILURES 80 --#endif NFAILURES -+#endif - - /* width of a byte in bits */ - -@@ -536,7 +536,7 @@ - PATFETCH (c); - PATPUSH (syntax_spec_code[c]); - break; --#endif emacs -+#endif /* emacs */ - - case 'w': - laststart = b; -@@ -833,7 +833,7 @@ - if (SYNTAX (j) != (enum syntaxcode) k) - fastmap[j] = 1; - break; --#endif emacs -+#endif /* emacs */ - - case charset: - for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--) -@@ -1475,7 +1475,7 @@ - PREFETCH; - if (SYNTAX (*d++) != 0) goto fail; - break; --#endif not emacs -+#endif /* not emacs */ - - case begbuf: - if (d == string1) /* Note, d cannot equal string2 */ -@@ -1722,4 +1722,4 @@ - exit (1); - } - --#endif test -+#endif /* test */ -diff -ur emacs-18.59-orig/src/s-linux.h emacs-18.59/src/s-linux.h ---- emacs-18.59-orig/src/s-linux.h 2004-03-09 08:34:05.000000000 +0100 -+++ emacs-18.59/src/s-linux.h 2007-01-29 21:47:56.000000000 +0100 -@@ -126,6 +126,11 @@ - - /* Special hacks needed to make Emacs run on this system. */ - -+#ifdef emacs -+#include <stdlib.h> -+#include <string.h> -+#endif -+ - /* On USG systems the system calls are interruptable by signals - that the user program has elected to catch. Thus the system call - must be retried in these cases. To handle this without massive -@@ -224,6 +229,7 @@ - #define MAXNAMLEN NAME_MAX /* missing SYSV-ism */ - #endif - -+#undef SIGSYS - #define SIGSYS SIGUNUSED /* rename to harmless work-alike */ - #define VSWTCH VSWTC /* mis-spelling in termios.h? */ - -@@ -253,7 +259,7 @@ - - #define C_COMPILER gcc - #define C_DEBUG_SWITCH -g --#define C_OPTIMIZE_SWITCH -O2 -malign-loops=2 -malign-jumps=2 -malign-functions=2 -+#define C_OPTIMIZE_SWITCH -O2 -falign-loops=2 -falign-jumps=2 -falign-functions=2 - #define OLDXMENU_OPTIONS CFLAGS=-O2 EXTRA=insque.o - #define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o - #define LIBS_DEBUG /* override in config.h to include -lg */ -diff -ur emacs-18.59-orig/src/sysdep.c emacs-18.59/src/sysdep.c ---- emacs-18.59-orig/src/sysdep.c 1998-05-31 05:34:43.000000000 +0200 -+++ emacs-18.59/src/sysdep.c 2007-01-29 21:47:56.000000000 +0100 -@@ -2051,8 +2051,6 @@ - #endif - } - --typedef int (*signal_handler_t) (); -- - signal_handler_t - sys_signal (int signal_number, signal_handler_t action) - { -@@ -2063,7 +2061,7 @@ - #else - sigemptyset (&new_action.sa_mask); - new_action.sa_handler = action; -- new_action.sa_flags = NULL; -+ new_action.sa_flags = 0; - sigaction (signal_number, &new_action, &old_action); - return (old_action.sa_handler); - #endif /* DGUX */ -diff -ur emacs-18.59-orig/src/terminfo.c emacs-18.59/src/terminfo.c ---- emacs-18.59-orig/src/terminfo.c 1991-01-08 19:09:05.000000000 +0100 -+++ emacs-18.59/src/terminfo.c 2007-01-29 21:47:56.000000000 +0100 -@@ -17,6 +17,8 @@ - along with GNU Emacs; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -+#include "config.h" -+ - /* Define these variables that serve as global parameters to termcap, - so that we do not need to conditionalize the places in Emacs - that set them. */ -diff -ur emacs-18.59-orig/src/x11fns.c emacs-18.59/src/x11fns.c ---- emacs-18.59-orig/src/x11fns.c 1992-07-15 21:38:49.000000000 +0200 -+++ emacs-18.59/src/x11fns.c 2007-01-29 21:47:56.000000000 +0100 -@@ -884,7 +884,7 @@ - rawshift = (((unsigned) (XINT (shift_mask))) & 15) << 11; - XRebindCode (rawkey, rawshift, rawstring, strsize); - } --#endif notdef -+#endif /* notdef */ - return Qnil; - } - -@@ -918,11 +918,11 @@ - XRebindCode (rawkey, i << 11, rawstring, strsize); - } - } --#endif notdef -+#endif /* notdef */ - return Qnil; - } - --#endif foobar -+#endif /* foobar */ - - XExitWithCoreDump () - { -@@ -988,7 +988,7 @@ - defsubr (&Sx_set_font); - #ifdef notdef - defsubr (&Sx_set_icon); --#endif notdef -+#endif - defsubr (&Scoordinates_in_window_p); - defsubr (&Sx_mouse_events); - defsubr (&Sx_proc_mouse_event); -@@ -1012,7 +1012,7 @@ - #ifdef notdef - defsubr (&Sx_rebind_key); - defsubr (&Sx_rebind_keys); --#endif notdef -+#endif - defsubr (&Sx_debug); - } - -diff -ur emacs-18.59-orig/src/x11term.c emacs-18.59/src/x11term.c ---- emacs-18.59-orig/src/x11term.c 1992-10-24 05:31:56.000000000 +0100 -+++ emacs-18.59/src/x11term.c 2007-01-29 21:47:56.000000000 +0100 -@@ -33,1 +33,1 @@ --#endif lint -+#endif -@@ -1482,6 +1482,10 @@ - strcpy(mapping_buf,"\016"); - nbytes = 1; - break; -+ case XK_BackSpace: -+ strcpy(mapping_buf,"\177"); -+ nbytes = 1; -+ break; - } - #ifndef AIX - } -@@ -1715,7 +1719,6 @@ - - extern char *getenv (); - extern XTinterrupt_signal (); -- extern char *malloc (); - extern Lisp_Object Vxterm, Vxterm1, Qt; - extern int XIgnoreError(); - int ix; -diff -ur emacs-18.59-orig/src/xdisp.c emacs-18.59/src/xdisp.c ---- emacs-18.59-orig/src/xdisp.c 1992-07-24 21:08:13.000000000 +0200 -+++ emacs-18.59/src/xdisp.c 2007-01-29 21:47:56.000000000 +0100 -@@ -2107,7 +2107,7 @@ - Lisp_Object root_window; - #ifndef COMPILER_REGISTER_BUG - register --#endif COMPILER_REGISTER_BUG -+#endif - struct window *mini_w; - - this_line_bufpos = 0; -diff -ur emacs-18.59-orig/etc/ChangeLog emacs-18.59/etc/ChangeLog ---- emacs-18.59-orig/etc/ChangeLog 1998-05-31 05:34:34.000000000 +0200 -+++ emacs-18.59/etc/ChangeLog 2007-01-29 21:47:56.000000000 +0100 -@@ -1,3 +1,11 @@ -+2007-01-29 Ulrich Mueller <ulm@kph.uni-mainz.de> -+ -+ * emacsclient.c, server.c: Check for HAVE_SOCKETS instead of BSD. -+ -+ * cvtmail.c, emacsclient.c, env.c, etags.c, fakemail.c, -+ make-docfile.c, movemail.c, server.c, sorted-doc.c, -+ test-distrib.c, wakeup.c, yow.c: Fix GCC 4.1 compilation issues. -+ - 1998-05-30 Noah Friedman <friedman@splode.com> - - * env.c (main): Declare sys_errlist if linux + glibc2. -diff -ur emacs-18.59-orig/etc/cvtmail.c emacs-18.59/etc/cvtmail.c ---- emacs-18.59-orig/etc/cvtmail.c 1991-01-08 20:06:08.000000000 +0100 -+++ emacs-18.59/etc/cvtmail.c 2007-01-29 21:47:56.000000000 +0100 -@@ -36,7 +36,10 @@ - - - #include <stdio.h> -+#include <stdlib.h> -+#include <string.h> - -+void *xmalloc(), *xrealloc(); - - main (argc, argv) - int argc; -@@ -109,22 +112,22 @@ - ; - } - --int -+void * - xmalloc (size) - int size; - { -- int result = malloc (size); -+ void *result = malloc (size); - if (!result) - fatal ("virtual memory exhausted", 0); - return result; - } - --int -+void * - xrealloc (ptr, size) - char *ptr; - int size; - { -- int result = realloc (ptr, size); -+ void *result = realloc (ptr, size); - if (!result) - fatal ("virtual memory exhausted"); - return result; -diff -ur emacs-18.59-orig/etc/emacsclient.c emacs-18.59/etc/emacsclient.c ---- emacs-18.59-orig/etc/emacsclient.c 1992-08-22 09:09:47.000000000 +0200 -+++ emacs-18.59/etc/emacsclient.c 2007-01-29 21:47:56.000000000 +0100 -@@ -27,8 +27,10 @@ - #undef close - #endif - -+#include <stdlib.h> -+#include <string.h> - --#if !defined(BSD) && !defined(HAVE_SYSVIPC) -+#if !defined(HAVE_SOCKETS) && !defined(HAVE_SYSVIPC) - #include <stdio.h> - - main (argc, argv) -@@ -41,9 +43,9 @@ - exit (1); - } - --#else /* BSD or HAVE_SYSVIPC */ -+#else /* HAVE_SOCKETS or HAVE_SYSVIPC */ - --#if defined(BSD) && ! defined (HAVE_SYSVIPC) -+#if defined(HAVE_SOCKETS) - /* BSD code is very different from SYSV IPC code */ - - #include <sys/types.h> -@@ -51,10 +53,10 @@ - #include <sys/un.h> - #include <stdio.h> - #include <errno.h> -+#include <unistd.h> - #include <sys/stat.h> - - extern int sys_nerr; --extern char *sys_errlist[]; - extern int errno; - - main (argc, argv) -@@ -69,8 +71,6 @@ - char string[BUFSIZ]; - struct stat statbfr; - -- char *getenv (), *getwd (); -- - if (argc < 2) - { - fprintf (stderr, "Usage: %s filename\n", argv[0]); -@@ -112,7 +112,8 @@ - strcat (server.sun_path, "/.emacs_server"); - #endif - -- if (connect (s, &server, strlen (server.sun_path) + 2) < 0) -+ if (connect (s, (struct sockaddr *)&server, -+ strlen (server.sun_path) + 2) < 0) - { - fprintf (stderr, "%s: ", argv[0]); - perror ("connect"); -@@ -125,11 +126,11 @@ - exit (1); - } - -- cwd = getwd (string); -+ cwd = getcwd (string, sizeof string); - if (cwd == 0) - { -- /* getwd puts message in STRING if it fails. */ -- fprintf (stderr, "%s: %s (%s)\n", argv[0], string, -+ fprintf (stderr, "%s: %s (%s)\n", argv[0], -+ "Cannot get current working directory", - (errno < sys_nerr) ? sys_errlist[errno] : "unknown error"); - exit (1); - } -@@ -275,4 +276,4 @@ - - #endif /* HAVE_SYSVIPC */ - --#endif /* BSD or HAVE_SYSVIPC */ -+#endif /* HAVE_SOCKETS or HAVE_SYSVIPC */ -diff -ur emacs-18.59-orig/etc/env.c emacs-18.59/etc/env.c ---- emacs-18.59-orig/etc/env.c 1998-05-31 05:34:36.000000000 +0200 -+++ emacs-18.59/etc/env.c 2007-01-29 21:47:56.000000000 +0100 -@@ -89,6 +89,8 @@ - - #include <stdio.h> - #include <errno.h> -+#include <stdlib.h> -+#include <string.h> - - extern int execvp (); - extern char *index (); -@@ -102,7 +104,7 @@ - int nenv_size; - - char *progname; --void setenv (); -+void xsetenv (); - void fatal (); - - main (argc, argv, envp) -@@ -134,7 +136,7 @@ - if (tem) - { - *tem = '\000'; -- setenv (*envp, tem + 1); -+ xsetenv (*envp, tem + 1); - } - } - -@@ -145,7 +147,7 @@ - /* If arg contains a "=" it specifies to set a variable */ - { - *tem = '\000'; -- setenv (*argv, tem + 1); -+ xsetenv (*argv, tem + 1); - argc--; argv++; - continue; - } -@@ -161,7 +163,7 @@ - /* Unset a variable */ - { - argc--; argv++; -- setenv (*argv, 0); -+ xsetenv (*argv, 0); - argc--; argv++; - } - else if (!strcmp (*argv, "-s") || -@@ -174,7 +176,7 @@ - fatal ("No value specified for variable \"%s\"", - tem); - argc--; argv++; -- setenv (tem, *argv); -+ xsetenv (tem, *argv); - argc--; argv++; - } - else if (!strcmp (*argv, "-") || !strcmp (*argv, "--")) -@@ -216,7 +218,7 @@ - } - - void --setenv (var, val) -+xsetenv (var, val) - register char *var, *val; - { - register char **e; -@@ -274,8 +276,6 @@ - } - - --extern char *malloc (), *realloc (); -- - void - memory_fatal () - { -diff -ur emacs-18.59-orig/etc/etags.c emacs-18.59/etc/etags.c ---- emacs-18.59-orig/etc/etags.c 1992-08-20 07:11:01.000000000 +0200 -+++ emacs-18.59/etc/etags.c 2007-01-29 21:47:56.000000000 +0100 -@@ -21,6 +21,8 @@ - - #include <stdio.h> - #include <ctype.h> -+#include <stdlib.h> -+#include <string.h> - - /* Define the symbol ETAGS to make the program "etags", - which makes emacs-style tag tables by default. -@@ -128,11 +130,10 @@ - - char *savestr(); - char *savenstr (); --char *rindex(); --char *index(); - char *concat (); - void initbuffer (); - long readline (); -+void *xmalloc(), *xrealloc(); - - /* A `struct linebuffer' is a structure which holds a line of text. - `readline' reads a line from a stream into a linebuffer -@@ -1380,7 +1381,6 @@ - char *defenv; - { - register char *env, *p; -- extern char *savenstr (), *index (); - - struct TEX_tabent *tab; - int size, i; -@@ -1530,47 +1530,6 @@ - return dp; - } - --/* -- * Return the ptr in sp at which the character c last -- * appears; NULL if not found -- * -- * Identical to v7 rindex, included for portability. -- */ -- --char * --rindex(sp, c) -- register char *sp, c; --{ -- register char *r; -- -- r = NULL; -- do -- { -- if (*sp == c) -- r = sp; -- } while (*sp++); -- return(r); --} -- --/* -- * Return the ptr in sp at which the character c first -- * appears; NULL if not found -- * -- * Identical to v7 index, included for portability. -- */ -- --char * --index(sp, c) -- register char *sp, c; --{ -- do -- { -- if (*sp == c) -- return (sp); -- } while (*sp++); -- return (NULL); --} -- - /* Print error message and exit. */ - - fatal (s1, s2) -@@ -1609,22 +1568,22 @@ - - /* Like malloc but get fatal error if memory is exhausted. */ - --int -+void * - xmalloc (size) - int size; - { -- int result = malloc (size); -+ void *result = malloc (size); - if (!result) - fatal ("virtual memory exhausted", 0); - return result; - } - --int -+void * - xrealloc (ptr, size) - char *ptr; - int size; - { -- int result = realloc (ptr, size); -+ void *result = realloc (ptr, size); - if (!result) - fatal ("virtual memory exhausted"); - return result; -diff -ur emacs-18.59-orig/etc/fakemail.c emacs-18.59/etc/fakemail.c ---- emacs-18.59-orig/etc/fakemail.c 1991-01-08 20:08:42.000000000 +0100 -+++ emacs-18.59/etc/fakemail.c 2007-01-29 21:47:56.000000000 +0100 -@@ -43,6 +43,7 @@ - #endif - - #include <stdio.h> -+#include <stdlib.h> - #include <string.h> - #include <ctype.h> - #include <time.h> -@@ -123,16 +124,8 @@ - - extern FILE *popen (); - extern int fclose (), pclose (); --extern char *malloc (), *realloc (); - --#ifdef CURRENT_USER --extern struct passwd *getpwuid (); --extern unsigned short geteuid (); --static struct passwd *my_entry; --#define cuserid(s) \ --(my_entry = getpwuid (((int) geteuid ())), \ -- my_entry->pw_name) --#endif -+#define cuserid(s) (getpwuid (geteuid ())->pw_name) - - /* Utilities */ - -@@ -564,7 +557,6 @@ - return; - } - --void - main (argc, argv) - int argc; - char **argv; -diff -ur emacs-18.59-orig/etc/make-docfile.c emacs-18.59/etc/make-docfile.c ---- emacs-18.59-orig/etc/make-docfile.c 1991-10-25 19:43:28.000000000 +0100 -+++ emacs-18.59/etc/make-docfile.c 2007-01-29 21:47:56.000000000 +0100 -@@ -32,6 +32,8 @@ - */ - - #include <stdio.h> -+#include <stdlib.h> -+#include <string.h> - - FILE *outfile; - -diff -ur emacs-18.59-orig/etc/movemail.c emacs-18.59/etc/movemail.c ---- emacs-18.59-orig/etc/movemail.c 1992-05-07 22:11:16.000000000 +0200 -+++ emacs-18.59/etc/movemail.c 2007-01-29 21:47:56.000000000 +0100 -@@ -52,6 +52,9 @@ - #include <sys/stat.h> - #include <sys/file.h> - #include <errno.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> - #define NO_SHORTNAMES /* Tell config not to load remap.h */ - #include "../src/config.h" - -@@ -81,6 +84,7 @@ - #undef close - - char *concat (); -+void *xmalloc (); - extern int errno; - - /* Nonzero means this is name of a lock file to delete on fatal error. */ -@@ -320,7 +324,6 @@ - char *name; - { - extern int errno, sys_nerr; -- extern char *sys_errlist[]; - char *s; - - if (errno < sys_nerr) -@@ -334,7 +337,6 @@ - char *name; - { - extern int errno, sys_nerr; -- extern char *sys_errlist[]; - char *s; - - if (errno < sys_nerr) -@@ -365,11 +367,11 @@ - - /* Like malloc but get fatal error if memory is exhausted. */ - --int -+void * - xmalloc (size) - int size; - { -- int result = malloc (size); -+ void *result = malloc (size); - if (!result) - fatal ("virtual memory exhausted", 0); - return result; -@@ -704,7 +706,6 @@ - get_errmsg () - { - extern int errno, sys_nerr; -- extern char *sys_errlist[]; - char *s; - - if (errno < sys_nerr) -diff -ur emacs-18.59-orig/etc/server.c emacs-18.59/etc/server.c ---- emacs-18.59-orig/etc/server.c 1992-03-23 05:06:08.000000000 +0100 -+++ emacs-18.59/etc/server.c 2007-01-29 21:47:56.000000000 +0100 -@@ -36,8 +36,10 @@ - #undef open - #undef close - -+#include <stdlib.h> -+#include <string.h> - --#if !defined(BSD) && !defined(HAVE_SYSVIPC) -+#if !defined(HAVE_SOCKETS) && !defined(HAVE_SYSVIPC) - #include <stdio.h> - - main () -@@ -47,9 +49,9 @@ - exit (1); - } - --#else /* BSD or HAVE_SYSVIPC */ -+#else /* HAVE_SOCKETS or HAVE_SYSVIPC */ - --#if defined (BSD) && ! defined (HAVE_SYSVIPC) -+#if defined (HAVE_SOCKETS) - /* BSD code is very different from SYSV IPC code */ - - #include <sys/file.h> -@@ -110,7 +112,7 @@ - unlink (server.sun_path); - #endif - -- if (bind (s, &server, strlen (server.sun_path) + 2) < 0) -+ if (bind (s, (struct sockaddr *)&server, strlen (server.sun_path) + 2) < 0) - { - perror ("bind"); - exit (1); -@@ -128,14 +130,18 @@ - signal (SIGPIPE, SIG_IGN); - for (;;) - { -- int rmask = (1 << s) + 1; -+ fd_set rmask; -+ FD_ZERO (&rmask); -+ FD_SET (0, &rmask); -+ FD_SET (s, &rmask); - if (select (s + 1, &rmask, 0, 0, 0) < 0) - perror ("select"); -- if (rmask & (1 << s)) /* client sends list of filenames */ -+ if (FD_ISSET (s, &rmask)) /* client sends list of filenames */ - { - fromlen = sizeof (fromunix); - fromunix.sun_family = AF_UNIX; -- infd = accept (s, &fromunix, &fromlen); /* open socket fd */ -+ infd = accept (s, (struct sockaddr *)&fromunix, &fromlen); -+ /* open socket fd */ - if (infd < 0) - { - if (errno == EMFILE || errno == ENFILE) -@@ -184,7 +190,8 @@ - fflush (infile); - continue; - } -- else if (rmask & 1) /* emacs sends codeword, fd, and string message */ -+ else if (FD_ISSET (0, &rmask)) -+ /* emacs sends codeword, fd, and string message */ - { - /* Read command codeword and fd */ - clearerr (stdin); -@@ -325,6 +332,4 @@ - - #endif /* SYSV IPC */ - --#endif /* BSD && IPC */ -- -- -+#endif /* HAVE_SOCKETS && IPC */ -diff -ur emacs-18.59-orig/etc/sorted-doc.c emacs-18.59/etc/sorted-doc.c ---- emacs-18.59-orig/etc/sorted-doc.c 1988-06-04 06:22:22.000000000 +0200 -+++ emacs-18.59/etc/sorted-doc.c 2007-01-29 21:47:56.000000000 +0100 -@@ -7,8 +7,9 @@ - - #include <stdio.h> - #include <ctype.h> -+#include <stdlib.h> -+#include <string.h> - --extern char *malloc (); - char *xmalloc (); - - #define NUL '\0' -diff -ur emacs-18.59-orig/etc/test-distrib.c emacs-18.59/etc/test-distrib.c ---- emacs-18.59-orig/etc/test-distrib.c 1987-05-22 06:15:12.000000000 +0200 -+++ emacs-18.59/etc/test-distrib.c 2007-01-29 21:47:56.000000000 +0100 -@@ -1,4 +1,5 @@ - #include <stdio.h> -+#include <stdlib.h> - - /* Break string in two parts to avoid buggy C compilers that ignore characters - after nulls in strings. */ -diff -ur emacs-18.59-orig/etc/wakeup.c emacs-18.59/etc/wakeup.c ---- emacs-18.59-orig/etc/wakeup.c 1991-07-30 23:03:39.000000000 +0200 -+++ emacs-18.59/etc/wakeup.c 2007-01-29 21:47:56.000000000 +0100 -@@ -2,6 +2,7 @@ - - #include <stdio.h> - #include <time.h> -+#include <stdlib.h> - - struct tm *localtime (); - -diff -ur emacs-18.59-orig/etc/yow.c emacs-18.59/etc/yow.c ---- emacs-18.59-orig/etc/yow.c 1988-04-13 08:13:41.000000000 +0200 -+++ emacs-18.59/etc/yow.c 2007-01-29 21:47:56.000000000 +0100 -@@ -1,5 +1,7 @@ - #include <stdio.h> - #include <ctype.h> -+#include <stdlib.h> -+#include <string.h> - #include "../src/paths.h" - - /* zippy.c diff --git a/app-editors/emacs/files/emacs-18.59-gentoo.patch b/app-editors/emacs/files/emacs-18.59-gentoo.patch deleted file mode 100644 index 0b6d94acd981..000000000000 --- a/app-editors/emacs/files/emacs-18.59-gentoo.patch +++ /dev/null @@ -1,96 +0,0 @@ -Prereq: 2004-03-08 -diff -Nur emacs-18.59-orig/src/ChangeLog emacs-18.59/src/ChangeLog ---- emacs-18.59-orig/src/ChangeLog 2004-03-08 09:38:50.000000000 +0100 -+++ emacs-18.59/src/ChangeLog 2004-03-09 08:36:49.000000000 +0100 -@@ -1,3 +1,9 @@ -+2004-03-09 Ulrich Mueller <ulm@kph.uni-mainz.de> -+ -+ * malloc.c (DONT_DEFINE_SIGNAL): Defined. -+ -+ * s-linux.h (TERMINFO): Moved here from ymakefile. -+ - 2004-03-08 Ulrich Mueller <ulm@kph.uni-mainz.de> - - * unexelf.c: Replaced with version from Emacs 21.3. -diff -Nur emacs-18.59-orig/src/malloc.c emacs-18.59/src/malloc.c ---- emacs-18.59-orig/src/malloc.c 1992-03-23 05:09:07.000000000 +0100 -+++ emacs-18.59/src/malloc.c 2004-03-09 08:33:12.000000000 +0100 -@@ -59,6 +59,9 @@ - */ - - #ifdef emacs -+/* Inhibit macro definition of "signal" in m-*.h */ -+#define DONT_DEFINE_SIGNAL -+ - /* config.h specifies which kind of system this is. */ - #include "config.h" - -diff -Nur emacs-18.59-orig/src/s-linux.h emacs-18.59/src/s-linux.h ---- emacs-18.59-orig/src/s-linux.h 1999-11-05 09:17:23.000000000 +0100 -+++ emacs-18.59/src/s-linux.h 2004-03-09 08:34:05.000000000 +0100 -@@ -164,6 +164,9 @@ - #define POSIX /* affects only getpagesize.h */ - #define POSIX_SIGNALS /* uses sigaction from sys_signal */ - -+/* Use terminfo instead of termcap. */ -+#define TERMINFO -+ - #ifdef HAVE_PTMX - - /* This change means that we don't loop through allocate_pty too many -@@ -250,7 +253,7 @@ - - #define C_COMPILER gcc - #define C_DEBUG_SWITCH -g --#define C_OPTIMIZE_SWITCH -O3 -malign-loops=2 -malign-jumps=2 -malign-functions=2 -+#define C_OPTIMIZE_SWITCH -O2 -malign-loops=2 -malign-jumps=2 -malign-functions=2 - #define OLDXMENU_OPTIONS CFLAGS=-O2 EXTRA=insque.o - #define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o - #define LIBS_DEBUG /* override in config.h to include -lg */ -diff -Nur emacs-18.59-orig/src/ymakefile emacs-18.59/src/ymakefile ---- emacs-18.59-orig/src/ymakefile 1999-11-05 09:19:47.000000000 +0100 -+++ emacs-18.59/src/ymakefile 2003-11-13 08:35:38.000000000 +0100 -@@ -191,7 +191,7 @@ - SHORT= shortnames - #endif /* SHORTNAMES */ - --CFLAGS= C_DEBUG_SWITCH C_OPTIMIZE_SWITCH -Demacs $(MYCPPFLAG) C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM -+CFLAGS= C_OPTIMIZE_SWITCH -Demacs $(MYCPPFLAG) C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM - /* DO NOT use -R. There is a special hack described in lastfile.c - which is used instead. Some initialized data areas are modified - at initial startup, then labeled as part of the text area when -@@ -284,7 +284,6 @@ - process.o callproc.o $(environobj) \ - doprnt.o - --#define TERMINFO - #ifdef TERMINFO - /* Used to be -ltermcap here. If your machine needs that, - define LIBS_TERMCAP in the m- file. */ -diff -Nur emacs-18.59-orig/lisp/ChangeLog emacs-18.59/lisp/ChangeLog ---- emacs-18.59-orig/lisp/ChangeLog 1992-10-31 01:32:00.000000000 +0100 -+++ emacs-18.59/lisp/ChangeLog 2004-03-08 09:37:21.000000000 +0100 -@@ -1,3 +1,9 @@ -+2004-03-08 Ulrich Mueller <ulm@kph.uni-mainz.de> -+ -+ * term/linux.el: New file. -+ -+ * term/xterm.el: Load vt200.el. -+ - Fri Oct 30 19:36:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * Version 18.59 released. -diff -Nur emacs-18.59-orig/lisp/term/linux.el emacs-18.59/lisp/term/linux.el ---- emacs-18.59-orig/lisp/term/linux.el 1970-01-01 01:00:00.000000000 +0100 -+++ emacs-18.59/lisp/term/linux.el 2003-11-29 21:37:15.000000000 +0100 -@@ -0,0 +1,2 @@ -+(load (concat term-file-prefix "vt200") nil t) -+(enable-arrow-keys) -diff -Nur emacs-18.59-orig/lisp/term/xterm.el emacs-18.59/lisp/term/xterm.el ---- emacs-18.59-orig/lisp/term/xterm.el 1989-04-27 03:52:39.000000000 +0200 -+++ emacs-18.59/lisp/term/xterm.el 2003-11-29 21:37:15.000000000 +0100 -@@ -1,2 +1,2 @@ --;; Don't send the `ti' string when screen is cleared. --(setq reset-terminal-on-clear nil) -+(load (concat term-file-prefix "vt200") nil t) -+(enable-arrow-keys) diff --git a/app-editors/emacs/files/emacs-18.59-unexelf.patch b/app-editors/emacs/files/emacs-18.59-unexelf.patch deleted file mode 100644 index 66aa78a7f01b..000000000000 --- a/app-editors/emacs/files/emacs-18.59-unexelf.patch +++ /dev/null @@ -1,878 +0,0 @@ -Prereq: 1999-11-05 -diff -Nur emacs-18.59-orig/src/ChangeLog emacs-18.59/src/ChangeLog ---- emacs-18.59-orig/src/ChangeLog 1999-11-05 09:19:56.000000000 +0100 -+++ emacs-18.59/src/ChangeLog 2004-03-08 09:38:50.000000000 +0100 -@@ -1,3 +1,7 @@ -+2004-03-08 Ulrich Mueller <ulm@kph.uni-mainz.de> -+ -+ * unexelf.c: Replaced with version from Emacs 21.3. -+ - 1999-11-05 Noah Friedman <friedman@splode.com> - - * ymakefile [LIBS_TERMCAP]: Use -lncurses, not -lcurses. -diff -Nur emacs-18.59-orig/src/unexelf.c emacs-18.59/src/unexelf.c ---- emacs-18.59-orig/src/unexelf.c 1998-05-31 04:35:54.000000000 +0200 -+++ emacs-18.59/src/unexelf.c 2004-03-08 01:18:54.000000000 +0100 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1985, 1986, 1987, 1988, 1990, 1992 -+/* Copyright (C) 1985, 1986, 1987, 1988, 1990, 1992, 1999, 2000, 01, 02 - Free Software Foundation, Inc. - - This file is part of GNU Emacs. -@@ -33,14 +33,14 @@ - * Modified heavily since then. - * - * Synopsis: -- * unexec (new_name, a_name, data_start, bss_start, entry_address) -- * char *new_name, *a_name; -+ * unexec (new_name, old_name, data_start, bss_start, entry_address) -+ * char *new_name, *old_name; - * unsigned data_start, bss_start, entry_address; - * - * Takes a snapshot of the program and makes an a.out format file in the - * file named by the string argument new_name. -- * If a_name is non-NULL, the symbol table will be taken from the given file. -- * On some machines, an existing a_name file is required. -+ * If old_name is non-NULL, the symbol table will be taken from the given file. -+ * On some machines, an existing old_name file is required. - * - * The boundaries within the a.out file may be adjusted with the data_start - * and bss_start arguments. Either or both may be given as 0 for defaults. -@@ -52,11 +52,6 @@ - * The value you specify may be rounded down to a suitable boundary - * as required by the machine you are using. - * -- * Specifying zero for data_start means the boundary between text and data -- * should not be the same as when the program was loaded. -- * If NO_REMAP is defined, the argument data_start is ignored and the -- * segment boundaries are never changed. -- * - * Bss_start indicates how much of the data segment is to be saved in the - * a.out file and restored when the program is executed. It gives the lowest - * unsaved address, and is rounded up to a page boundary. The default when 0 -@@ -66,9 +61,6 @@ - * - * The new file is set up to start at entry_address. - * -- * If you make improvements I'd like to get them too. -- * harpo!utah-cs!thomas, thomas@Utah-20 -- * - */ - - /* Even more heavily modified by james@bigtex.cactus.org of Dell Computer Co. -@@ -412,22 +404,159 @@ - - */ - -+/* -+ * Modified by rdh@yottayotta.com of Yotta Yotta Incorporated. -+ * -+ * The code originally used mmap() to create a memory image of the new -+ * and old object files. This had a few handy features: (1) you get -+ * to use a cool system call like mmap, (2) no need to explicitly -+ * write out the new file before the close, and (3) no swap space -+ * requirements. Unfortunately, mmap() often fails to work with -+ * nfs-mounted file systems. -+ * -+ * So, instead of relying on the vm subsystem to do the file i/o for -+ * us, it's now done explicitly. A buffer of the right size for the -+ * file is dynamically allocated, and either the old_name is read into -+ * it, or it is initialized with the correct new executable contents, -+ * and then written to new_name. -+ */ -+ -+#ifndef emacs -+#define fatal(a, b, c) fprintf (stderr, a, b, c), exit (1) -+#include <string.h> -+#else -+#include "config.h" -+extern void fatal (char *, ...); -+#endif -+ - #include <sys/types.h> - #include <stdio.h> - #include <sys/stat.h> - #include <memory.h> --#include <string.h> - #include <errno.h> - #include <unistd.h> - #include <fcntl.h> -+#if !defined (__NetBSD__) && !defined (__OpenBSD__) - #include <elf.h> -+#endif - #include <sys/mman.h> -- --#ifndef emacs --#define fatal(a, b, c) fprintf (stderr, a, b, c), exit (1) -+#if defined (__sony_news) && defined (_SYSTYPE_SYSV) -+#include <sys/elf_mips.h> -+#include <sym.h> -+#endif /* __sony_news && _SYSTYPE_SYSV */ -+#if __sgi -+#include <syms.h> /* for HDRR declaration */ -+#endif /* __sgi */ -+ -+#ifndef MAP_ANON -+#ifdef MAP_ANONYMOUS -+#define MAP_ANON MAP_ANONYMOUS - #else --#include "config.h" --extern void fatal (char *, ...); -+#define MAP_ANON 0 -+#endif -+#endif -+ -+#ifndef MAP_FAILED -+#define MAP_FAILED ((void *) -1) -+#endif -+ -+#if defined (__alpha__) && !defined (__NetBSD__) && !defined (__OpenBSD__) -+/* Declare COFF debugging symbol table. This used to be in -+ /usr/include/sym.h, but this file is no longer included in Red Hat -+ 5.0 and presumably in any other glibc 2.x based distribution. */ -+typedef struct { -+ short magic; -+ short vstamp; -+ int ilineMax; -+ int idnMax; -+ int ipdMax; -+ int isymMax; -+ int ioptMax; -+ int iauxMax; -+ int issMax; -+ int issExtMax; -+ int ifdMax; -+ int crfd; -+ int iextMax; -+ long cbLine; -+ long cbLineOffset; -+ long cbDnOffset; -+ long cbPdOffset; -+ long cbSymOffset; -+ long cbOptOffset; -+ long cbAuxOffset; -+ long cbSsOffset; -+ long cbSsExtOffset; -+ long cbFdOffset; -+ long cbRfdOffset; -+ long cbExtOffset; -+} HDRR, *pHDRR; -+#define cbHDRR sizeof(HDRR) -+#define hdrNil ((pHDRR)0) -+#endif -+ -+#ifdef __NetBSD__ -+/* -+ * NetBSD does not have normal-looking user-land ELF support. -+ */ -+# if defined __alpha__ || defined __sparc_v9__ -+# define ELFSIZE 64 -+# else -+# define ELFSIZE 32 -+# endif -+# include <sys/exec_elf.h> -+ -+# ifndef PT_LOAD -+# define PT_LOAD Elf_pt_load -+# if 0 /* was in pkgsrc patches for 20.7 */ -+# define SHT_PROGBITS Elf_sht_progbits -+# endif -+# define SHT_SYMTAB Elf_sht_symtab -+# define SHT_DYNSYM Elf_sht_dynsym -+# define SHT_NULL Elf_sht_null -+# define SHT_NOBITS Elf_sht_nobits -+# define SHT_REL Elf_sht_rel -+# define SHT_RELA Elf_sht_rela -+ -+# define SHN_UNDEF Elf_eshn_undefined -+# define SHN_ABS Elf_eshn_absolute -+# define SHN_COMMON Elf_eshn_common -+# endif /* !PT_LOAD */ -+ -+# ifdef __alpha__ -+# include <sys/exec_ecoff.h> -+# define HDRR struct ecoff_symhdr -+# define pHDRR HDRR * -+# endif /* __alpha__ */ -+ -+#ifdef __mips__ /* was in pkgsrc patches for 20.7 */ -+# define SHT_MIPS_DEBUG DT_MIPS_FLAGS -+# define HDRR struct Elf_Shdr -+#endif /* __mips__ */ -+#endif /* __NetBSD__ */ -+ -+#ifdef __OpenBSD__ -+# include <sys/exec_elf.h> -+#endif -+ -+#if __GNU_LIBRARY__ - 0 >= 6 -+# include <link.h> /* get ElfW etc */ -+#endif -+ -+#ifndef ElfW -+# ifdef __STDC__ -+# define ElfBitsW(bits, type) Elf##bits##_##type -+# else -+# define ElfBitsW(bits, type) Elf/**/bits/**/_/**/type -+# endif -+# ifdef _LP64 -+# define ELFSIZE 64 -+# else -+# define ELFSIZE 32 -+# endif -+ /* This macro expands `bits' before invoking ElfBitsW. */ -+# define ElfExpandBitsW(bits, type) ElfBitsW (bits, type) -+# define ElfW(type) ElfExpandBitsW (ELFSIZE, type) - #endif - - #ifndef ELF_BSS_SECTION_NAME -@@ -462,13 +591,13 @@ - */ - - #define OLD_SECTION_H(n) \ -- (*(Elf32_Shdr *) ((byte *) old_section_h + old_file_h->e_shentsize * (n))) -+ (*(ElfW(Shdr) *) ((byte *) old_section_h + old_file_h->e_shentsize * (n))) - #define NEW_SECTION_H(n) \ -- (*(Elf32_Shdr *) ((byte *) new_section_h + new_file_h->e_shentsize * (n))) -+ (*(ElfW(Shdr) *) ((byte *) new_section_h + new_file_h->e_shentsize * (n))) - #define OLD_PROGRAM_H(n) \ -- (*(Elf32_Phdr *) ((byte *) old_program_h + old_file_h->e_phentsize * (n))) -+ (*(ElfW(Phdr) *) ((byte *) old_program_h + old_file_h->e_phentsize * (n))) - #define NEW_PROGRAM_H(n) \ -- (*(Elf32_Phdr *) ((byte *) new_program_h + new_file_h->e_phentsize * (n))) -+ (*(ElfW(Phdr) *) ((byte *) new_program_h + new_file_h->e_phentsize * (n))) - - #define PATCH_INDEX(n) \ - do { \ -@@ -478,9 +607,9 @@ - - /* Round X up to a multiple of Y. */ - --int -+static ElfW(Addr) - round_up (x, y) -- int x, y; -+ ElfW(Addr) x, y; - { - int rem = x % y; - if (rem == 0) -@@ -488,6 +617,45 @@ - return x - rem + y; - } - -+/* Return the index of the section named NAME. -+ SECTION_NAMES, FILE_NAME and FILE_H give information -+ about the file we are looking in. -+ -+ If we don't find the section NAME, that is a fatal error -+ if NOERROR is 0; we return -1 if NOERROR is nonzero. */ -+ -+static int -+find_section (name, section_names, file_name, old_file_h, old_section_h, noerror) -+ char *name; -+ char *section_names; -+ char *file_name; -+ ElfW(Ehdr) *old_file_h; -+ ElfW(Shdr) *old_section_h; -+ int noerror; -+{ -+ int idx; -+ -+ for (idx = 1; idx < old_file_h->e_shnum; idx++) -+ { -+#ifdef DEBUG -+ fprintf (stderr, "Looking for %s - found %s\n", name, -+ section_names + OLD_SECTION_H (idx).sh_name); -+#endif -+ if (!strcmp (section_names + OLD_SECTION_H (idx).sh_name, -+ name)) -+ break; -+ } -+ if (idx == old_file_h->e_shnum) -+ { -+ if (noerror) -+ return -1; -+ else -+ fatal ("Can't find %s in %s.\n", name, file_name); -+ } -+ -+ return idx; -+} -+ - /* **************************************************************** - * unexec - * -@@ -507,25 +675,36 @@ - /* Pointers to the base of the image of the two files. */ - caddr_t old_base, new_base; - -+#if MAP_ANON == 0 -+ int mmap_fd; -+#else -+# define mmap_fd -1 -+#endif -+ - /* Pointers to the file, program and section headers for the old and new - * files. - */ -- Elf32_Ehdr *old_file_h, *new_file_h; -- Elf32_Phdr *old_program_h, *new_program_h; -- Elf32_Shdr *old_section_h, *new_section_h; -+ ElfW(Ehdr) *old_file_h, *new_file_h; -+ ElfW(Phdr) *old_program_h, *new_program_h; -+ ElfW(Shdr) *old_section_h, *new_section_h; - - /* Point to the section name table in the old file */ - char *old_section_names; - -- Elf32_Addr old_bss_addr, new_bss_addr; -- Elf32_Word old_bss_size, new_data2_size; -- Elf32_Off new_data2_offset; -- Elf32_Addr new_data2_addr; -- -- int n, nn, old_bss_index, old_data_index, new_data2_index; -+ ElfW(Addr) old_bss_addr, new_bss_addr; -+ ElfW(Word) old_bss_size, new_data2_size; -+ ElfW(Off) new_data2_offset; -+ ElfW(Addr) new_data2_addr; -+ -+ int n, nn; -+ int old_bss_index, old_sbss_index; -+ int old_data_index, new_data2_index; -+ int old_mdebug_index; - struct stat stat_buf; -+ int old_file_size; - -- /* Open the old file & map it into the address space. */ -+ /* Open the old file, allocate a buffer of the right size, and read -+ * in the file contents. */ - - old_file = open (old_name, O_RDONLY); - -@@ -535,52 +714,80 @@ - if (fstat (old_file, &stat_buf) == -1) - fatal ("Can't fstat (%s): errno %d\n", old_name, errno); - -- old_base = mmap (0, stat_buf.st_size, PROT_READ, MAP_SHARED, old_file, 0); -+#if MAP_ANON == 0 -+ mmap_fd = open ("/dev/zero", O_RDONLY); -+ if (mmap_fd < 0) -+ fatal ("Can't open /dev/zero for reading: errno %d\n", errno); -+#endif - -- if (old_base == (caddr_t) -1) -- fatal ("Can't mmap (%s): errno %d\n", old_name, errno); -+ /* We cannot use malloc here because that may use sbrk. If it does, -+ we'd dump our temporary buffers with Emacs, and we'd have to be -+ extra careful to use the correct value of sbrk(0) after -+ allocating all buffers in the code below, which we aren't. */ -+ old_file_size = stat_buf.st_size; -+ old_base = mmap (NULL, old_file_size, PROT_READ | PROT_WRITE, -+ MAP_ANON | MAP_PRIVATE, mmap_fd, 0); -+ if (old_base == MAP_FAILED) -+ fatal ("Can't allocate buffer for %s\n", old_name); - --#ifdef DEBUG -- fprintf (stderr, "mmap (%s, %x) -> %x\n", old_name, stat_buf.st_size, -- old_base); --#endif -+ if (read (old_file, old_base, stat_buf.st_size) != stat_buf.st_size) -+ fatal ("Didn't read all of %s: errno %d\n", old_name, errno); - - /* Get pointers to headers & section names */ - -- old_file_h = (Elf32_Ehdr *) old_base; -- old_program_h = (Elf32_Phdr *) ((byte *) old_base + old_file_h->e_phoff); -- old_section_h = (Elf32_Shdr *) ((byte *) old_base + old_file_h->e_shoff); -+ old_file_h = (ElfW(Ehdr) *) old_base; -+ old_program_h = (ElfW(Phdr) *) ((byte *) old_base + old_file_h->e_phoff); -+ old_section_h = (ElfW(Shdr) *) ((byte *) old_base + old_file_h->e_shoff); - old_section_names = (char *) old_base - + OLD_SECTION_H (old_file_h->e_shstrndx).sh_offset; - -+ /* Find the mdebug section, if any. */ -+ -+ old_mdebug_index = find_section (".mdebug", old_section_names, -+ old_name, old_file_h, old_section_h, 1); -+ - /* Find the old .bss section. Figure out parameters of the new - * data2 and bss sections. - */ - -- for (old_bss_index = 1; old_bss_index < (int) old_file_h->e_shnum; -- old_bss_index++) -+ old_bss_index = find_section (".bss", old_section_names, -+ old_name, old_file_h, old_section_h, 0); -+ -+ old_sbss_index = find_section (".sbss", old_section_names, -+ old_name, old_file_h, old_section_h, 1); -+ if (old_sbss_index != -1) -+ if (OLD_SECTION_H (old_sbss_index).sh_type == SHT_PROGBITS) -+ old_sbss_index = -1; -+ -+ if (old_sbss_index == -1) - { --#ifdef DEBUG -- fprintf (stderr, "Looking for .bss - found %s\n", -- old_section_names + OLD_SECTION_H (old_bss_index).sh_name); --#endif -- if (!strcmp (old_section_names + OLD_SECTION_H (old_bss_index).sh_name, -- ELF_BSS_SECTION_NAME)) -- break; -+ old_bss_addr = OLD_SECTION_H (old_bss_index).sh_addr; -+ old_bss_size = OLD_SECTION_H (old_bss_index).sh_size; -+ new_data2_index = old_bss_index; -+ } -+ else -+ { -+ old_bss_addr = OLD_SECTION_H (old_sbss_index).sh_addr; -+ old_bss_size = OLD_SECTION_H (old_bss_index).sh_size -+ + OLD_SECTION_H (old_sbss_index).sh_size; -+ new_data2_index = old_sbss_index; - } -- if (old_bss_index == old_file_h->e_shnum) -- fatal ("Can't find .bss in %s.\n", old_name, 0); - -- old_bss_addr = OLD_SECTION_H (old_bss_index).sh_addr; -- old_bss_size = OLD_SECTION_H (old_bss_index).sh_size; --#if defined(emacs) || !defined(DEBUG) -- new_bss_addr = (Elf32_Addr) sbrk (0); -+ /* Find the old .data section. Figure out parameters of -+ the new data2 and bss sections. */ -+ -+ old_data_index = find_section (".data", old_section_names, -+ old_name, old_file_h, old_section_h, 0); -+ -+#if defined (emacs) || !defined (DEBUG) -+ new_bss_addr = (ElfW(Addr)) sbrk (0); - #else - new_bss_addr = old_bss_addr + old_bss_size + 0x1234; - #endif - new_data2_addr = old_bss_addr; - new_data2_size = new_bss_addr - old_bss_addr; -- new_data2_offset = OLD_SECTION_H (old_bss_index).sh_offset; -+ new_data2_offset = OLD_SECTION_H (old_data_index).sh_offset + -+ (new_data2_addr - OLD_SECTION_H (old_data_index).sh_addr); - - #ifdef DEBUG - fprintf (stderr, "old_bss_index %d\n", old_bss_index); -@@ -595,9 +802,9 @@ - if ((unsigned) new_bss_addr < (unsigned) old_bss_addr + old_bss_size) - fatal (".bss shrank when undumping???\n", 0, 0); - -- /* Set the output file to the right size and mmap it. Set -- * pointers to various interesting objects. stat_buf still has -- * old_file data. -+ /* Set the output file to the right size. Allocate a buffer to hold -+ * the image of the new file. Set pointers to various interesting -+ * objects. stat_buf still has old_file data. - */ - - new_file = open (new_name, O_RDWR | O_CREAT, 0666); -@@ -609,20 +816,14 @@ - if (ftruncate (new_file, new_file_size)) - fatal ("Can't ftruncate (%s): errno %d\n", new_name, errno); - --#ifdef UNEXEC_USE_MAP_PRIVATE -- new_base = mmap (0, new_file_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, -- new_file, 0); --#else -- new_base = mmap (0, new_file_size, PROT_READ | PROT_WRITE, MAP_SHARED, -- new_file, 0); --#endif -- -- if (new_base == (caddr_t) -1) -- fatal ("Can't mmap (%s): errno %d\n", new_name, errno); -- -- new_file_h = (Elf32_Ehdr *) new_base; -- new_program_h = (Elf32_Phdr *) ((byte *) new_base + old_file_h->e_phoff); -- new_section_h = (Elf32_Shdr *) -+ new_base = mmap (NULL, new_file_size, PROT_READ | PROT_WRITE, -+ MAP_ANON | MAP_PRIVATE, mmap_fd, 0); -+ if (new_base == MAP_FAILED) -+ fatal ("Can't allocate buffer for %s\n", old_name); -+ -+ new_file_h = (ElfW(Ehdr) *) new_base; -+ new_program_h = (ElfW(Phdr) *) ((byte *) new_base + old_file_h->e_phoff); -+ new_section_h = (ElfW(Shdr) *) - ((byte *) new_base + old_file_h->e_shoff + new_data2_size); - - /* Make our new file, program and section headers as copies of the -@@ -661,12 +862,22 @@ - for (n = new_file_h->e_phnum - 1; n >= 0; n--) - { - /* Compute maximum of all requirements for alignment of section. */ -- int alignment = (NEW_PROGRAM_H (n)).p_align; -+ ElfW(Word) alignment = (NEW_PROGRAM_H (n)).p_align; - if ((OLD_SECTION_H (old_bss_index)).sh_addralign > alignment) - alignment = OLD_SECTION_H (old_bss_index).sh_addralign; - -- if (NEW_PROGRAM_H (n).p_vaddr + NEW_PROGRAM_H (n).p_filesz > old_bss_addr) -- fatal ("Program segment above .bss in %s\n", old_name, 0); -+#ifdef __sgi -+ /* According to r02kar@x4u2.desy.de (Karsten Kuenne) -+ and oliva@gnu.org (Alexandre Oliva), on IRIX 5.2, we -+ always get "Program segment above .bss" when dumping -+ when the executable doesn't have an sbss section. */ -+ if (old_sbss_index != -1) -+#endif /* __sgi */ -+ if (NEW_PROGRAM_H (n).p_vaddr + NEW_PROGRAM_H (n).p_filesz -+ > (old_sbss_index == -1 -+ ? old_bss_addr -+ : round_up (old_bss_addr, alignment))) -+ fatal ("Program segment above .bss in %s\n", old_name, 0); - - if (NEW_PROGRAM_H (n).p_type == PT_LOAD - && (round_up ((NEW_PROGRAM_H (n)).p_vaddr -@@ -678,7 +889,9 @@ - if (n < 0) - fatal ("Couldn't find segment next to .bss in %s\n", old_name, 0); - -- NEW_PROGRAM_H (n).p_filesz += new_data2_size; -+ /* Make sure that the size includes any padding before the old .bss -+ section. */ -+ NEW_PROGRAM_H (n).p_filesz = new_bss_addr - NEW_PROGRAM_H (n).p_vaddr; - NEW_PROGRAM_H (n).p_memsz = NEW_PROGRAM_H (n).p_filesz; - - #if 0 /* Maybe allow section after data2 - does this ever happen? */ -@@ -712,12 +925,14 @@ - for (n = 1, nn = 1; n < (int) old_file_h->e_shnum; n++, nn++) - { - caddr_t src; -- /* If it is bss section, insert the new data2 section before it. */ -- if (n == old_bss_index) -+ /* If it is (s)bss section, insert the new data2 section before it. */ -+ /* new_data2_index is the index of either old_sbss or old_bss, that was -+ chosen as a section for new_data2. */ -+ if (n == new_data2_index) - { - /* Steal the data section header for this data2 section. */ - memcpy (&NEW_SECTION_H (nn), &OLD_SECTION_H (old_data_index), -- new_file_h->e_shentsize); -+ new_file_h->e_shentsize); - - NEW_SECTION_H (nn).sh_addr = new_data2_addr; - NEW_SECTION_H (nn).sh_offset = new_data2_offset; -@@ -737,13 +952,17 @@ - memcpy (&NEW_SECTION_H (nn), &OLD_SECTION_H (n), - old_file_h->e_shentsize); - -- /* The new bss section's size is zero, and its file offset and virtual -- address should be off by NEW_DATA2_SIZE. */ -- if (n == old_bss_index) -+ if (n == old_bss_index -+ /* The new bss and sbss section's size is zero, and its file offset -+ and virtual address should be off by NEW_DATA2_SIZE. */ -+ || n == old_sbss_index -+ ) - { -- /* NN should be `old_bss_index + 1' at this point. */ -- NEW_SECTION_H (nn).sh_offset += new_data2_size; -- NEW_SECTION_H (nn).sh_addr += new_data2_size; -+ /* NN should be `old_s?bss_index + 1' at this point. */ -+ NEW_SECTION_H (nn).sh_offset = -+ NEW_SECTION_H (new_data2_index).sh_offset + new_data2_size; -+ NEW_SECTION_H (nn).sh_addr = -+ NEW_SECTION_H (new_data2_index).sh_addr + new_data2_size; - /* Let the new bss section address alignment be the same as the - section address alignment followed the old bss section, so - this section will be placed in exactly the same place. */ -@@ -767,7 +986,9 @@ - >= OLD_SECTION_H (old_bss_index-1).sh_offset) - NEW_SECTION_H (nn).sh_offset += new_data2_size; - #else -- if (NEW_SECTION_H (nn).sh_offset >= new_data2_offset) -+ if (round_up (NEW_SECTION_H (nn).sh_offset, -+ OLD_SECTION_H (old_bss_index).sh_addralign) -+ >= new_data2_offset) - NEW_SECTION_H (nn).sh_offset += new_data2_size; - #endif - /* Any section that was originally placed after the section -@@ -787,18 +1008,54 @@ - if (NEW_SECTION_H (nn).sh_type != SHT_SYMTAB - && NEW_SECTION_H (nn).sh_type != SHT_DYNSYM) - PATCH_INDEX (NEW_SECTION_H (nn).sh_info); -+ -+ if (old_sbss_index != -1) -+ if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".sbss")) -+ { -+ NEW_SECTION_H (nn).sh_offset = -+ round_up (NEW_SECTION_H (nn).sh_offset, -+ NEW_SECTION_H (nn).sh_addralign); -+ NEW_SECTION_H (nn).sh_type = SHT_PROGBITS; -+ } - - /* Now, start to copy the content of sections. */ - if (NEW_SECTION_H (nn).sh_type == SHT_NULL - || NEW_SECTION_H (nn).sh_type == SHT_NOBITS) - continue; - -- /* Write out the sections. .data and .data1 (and data2, called -+ /* Write out the sections. .data and .data1 (and data2, called - ".data" in the strings table) get copied from the current process - instead of the old file. */ - if (!strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".data") - || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), -- ".data1")) -+ ".sdata") -+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), -+ ".lit4") -+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), -+ ".lit8") -+ /* The conditional bit below was in Oliva's original code -+ (1999-08-25) and seems to have been dropped by mistake -+ subsequently. It prevents a crash at startup under X in -+ `IRIX64 6.5 6.5.17m' with c_dev 7.3.1.3m. It causes no -+ trouble on the other ELF platforms I could test (Irix -+ 6.5.15m, Solaris 8, Debian Potato x86, Debian Woody -+ SPARC); however, it's reported to cause crashes under -+ some version of GNU/Linux. It's not yet clear what's -+ changed in that Irix version to cause the problem, or why -+ the fix sometimes fails under GNU/Linux. There's -+ probably no good reason to have something Irix-specific -+ here, but this will have to do for now. IRIX6_5 is the -+ most specific macro we have to test. -- fx 2002-10-01 */ -+#ifdef IRIX6_5 -+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), -+ ".got") -+#endif -+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), -+ ".sdata1") -+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), -+ ".data1") -+ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), -+ ".sbss")) - src = (caddr_t) OLD_SECTION_H (n).sh_addr; - else - src = old_base + OLD_SECTION_H (n).sh_offset; -@@ -806,13 +1063,114 @@ - memcpy (NEW_SECTION_H (nn).sh_offset + new_base, src, - NEW_SECTION_H (nn).sh_size); - -+#ifdef __alpha__ -+ /* Update Alpha COFF symbol table: */ -+ if (strcmp (old_section_names + OLD_SECTION_H (n).sh_name, ".mdebug") -+ == 0) -+ { -+ pHDRR symhdr = (pHDRR) (NEW_SECTION_H (nn).sh_offset + new_base); -+ -+ symhdr->cbLineOffset += new_data2_size; -+ symhdr->cbDnOffset += new_data2_size; -+ symhdr->cbPdOffset += new_data2_size; -+ symhdr->cbSymOffset += new_data2_size; -+ symhdr->cbOptOffset += new_data2_size; -+ symhdr->cbAuxOffset += new_data2_size; -+ symhdr->cbSsOffset += new_data2_size; -+ symhdr->cbSsExtOffset += new_data2_size; -+ symhdr->cbFdOffset += new_data2_size; -+ symhdr->cbRfdOffset += new_data2_size; -+ symhdr->cbExtOffset += new_data2_size; -+ } -+#endif /* __alpha__ */ -+ -+#if defined (__sony_news) && defined (_SYSTYPE_SYSV) -+ if (NEW_SECTION_H (nn).sh_type == SHT_MIPS_DEBUG -+ && old_mdebug_index != -1) -+ { -+ int diff = NEW_SECTION_H(nn).sh_offset -+ - OLD_SECTION_H(old_mdebug_index).sh_offset; -+ HDRR *phdr = (HDRR *)(NEW_SECTION_H (nn).sh_offset + new_base); -+ -+ if (diff) -+ { -+ phdr->cbLineOffset += diff; -+ phdr->cbDnOffset += diff; -+ phdr->cbPdOffset += diff; -+ phdr->cbSymOffset += diff; -+ phdr->cbOptOffset += diff; -+ phdr->cbAuxOffset += diff; -+ phdr->cbSsOffset += diff; -+ phdr->cbSsExtOffset += diff; -+ phdr->cbFdOffset += diff; -+ phdr->cbRfdOffset += diff; -+ phdr->cbExtOffset += diff; -+ } -+ } -+#endif /* __sony_news && _SYSTYPE_SYSV */ -+ -+#if __sgi -+ /* Adjust the HDRR offsets in .mdebug and copy the -+ line data if it's in its usual 'hole' in the object. -+ Makes the new file debuggable with dbx. -+ patches up two problems: the absolute file offsets -+ in the HDRR record of .mdebug (see /usr/include/syms.h), and -+ the ld bug that gets the line table in a hole in the -+ elf file rather than in the .mdebug section proper. -+ David Anderson. davea@sgi.com Jan 16,1994. */ -+ if (n == old_mdebug_index) -+ { -+#define MDEBUGADJUST(__ct,__fileaddr) \ -+ if (n_phdrr->__ct > 0) \ -+ { \ -+ n_phdrr->__fileaddr += movement; \ -+ } -+ -+ HDRR * o_phdrr = (HDRR *)((byte *)old_base + OLD_SECTION_H (n).sh_offset); -+ HDRR * n_phdrr = (HDRR *)((byte *)new_base + NEW_SECTION_H (nn).sh_offset); -+ unsigned movement = new_data2_size; -+ -+ MDEBUGADJUST (idnMax, cbDnOffset); -+ MDEBUGADJUST (ipdMax, cbPdOffset); -+ MDEBUGADJUST (isymMax, cbSymOffset); -+ MDEBUGADJUST (ioptMax, cbOptOffset); -+ MDEBUGADJUST (iauxMax, cbAuxOffset); -+ MDEBUGADJUST (issMax, cbSsOffset); -+ MDEBUGADJUST (issExtMax, cbSsExtOffset); -+ MDEBUGADJUST (ifdMax, cbFdOffset); -+ MDEBUGADJUST (crfd, cbRfdOffset); -+ MDEBUGADJUST (iextMax, cbExtOffset); -+ /* The Line Section, being possible off in a hole of the object, -+ requires special handling. */ -+ if (n_phdrr->cbLine > 0) -+ { -+ if (o_phdrr->cbLineOffset > (OLD_SECTION_H (n).sh_offset -+ + OLD_SECTION_H (n).sh_size)) -+ { -+ /* line data is in a hole in elf. do special copy and adjust -+ for this ld mistake. -+ */ -+ n_phdrr->cbLineOffset += movement; -+ -+ memcpy (n_phdrr->cbLineOffset + new_base, -+ o_phdrr->cbLineOffset + old_base, n_phdrr->cbLine); -+ } -+ else -+ { -+ /* somehow line data is in .mdebug as it is supposed to be. */ -+ MDEBUGADJUST (cbLine, cbLineOffset); -+ } -+ } -+ } -+#endif /* __sgi */ -+ - /* If it is the symbol table, its st_shndx field needs to be patched. */ - if (NEW_SECTION_H (nn).sh_type == SHT_SYMTAB - || NEW_SECTION_H (nn).sh_type == SHT_DYNSYM) - { -- Elf32_Shdr *spt = &NEW_SECTION_H (nn); -+ ElfW(Shdr) *spt = &NEW_SECTION_H (nn); - unsigned int num = spt->sh_size / spt->sh_entsize; -- Elf32_Sym * sym = (Elf32_Sym *) (NEW_SECTION_H (nn).sh_offset + -+ ElfW(Sym) * sym = (ElfW(Sym) *) (NEW_SECTION_H (nn).sh_offset + - new_base); - for (; num--; sym++) - { -@@ -830,7 +1188,7 @@ - for (n = new_file_h->e_shnum - 1; n; n--) - { - byte *symnames; -- Elf32_Sym *symp, *symendp; -+ ElfW(Sym) *symp, *symendp; - - if (NEW_SECTION_H (n).sh_type != SHT_DYNSYM - && NEW_SECTION_H (n).sh_type != SHT_SYMTAB) -@@ -838,12 +1196,14 @@ - - symnames = ((byte *) new_base - + NEW_SECTION_H (NEW_SECTION_H (n).sh_link).sh_offset); -- symp = (Elf32_Sym *) (NEW_SECTION_H (n).sh_offset + new_base); -- symendp = (Elf32_Sym *) ((byte *)symp + NEW_SECTION_H (n).sh_size); -+ symp = (ElfW(Sym) *) (NEW_SECTION_H (n).sh_offset + new_base); -+ symendp = (ElfW(Sym) *) ((byte *)symp + NEW_SECTION_H (n).sh_size); - - for (; symp < symendp; symp ++) - if (strcmp ((char *) (symnames + symp->st_name), "_end") == 0 -- || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0) -+ || strcmp ((char *) (symnames + symp->st_name), "end") == 0 -+ || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0 -+ || strcmp ((char *) (symnames + symp->st_name), "edata") == 0) - memcpy (&symp->st_value, &new_bss_addr, sizeof (new_bss_addr)); - } - -@@ -851,7 +1211,7 @@ - that it can undo relocations performed by the runtime linker. */ - for (n = new_file_h->e_shnum - 1; n; n--) - { -- Elf32_Shdr section = NEW_SECTION_H (n); -+ ElfW(Shdr) section = NEW_SECTION_H (n); - switch (section.sh_type) { - default: - break; -@@ -863,37 +1223,65 @@ - nn = section.sh_info; - if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".data") - || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name), -+ ".sdata") -+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name), -+ ".lit4") -+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name), -+ ".lit8") -+#ifdef IRIX6_5 /* see above */ -+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name), -+ ".got") -+#endif -+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name), -+ ".sdata1") -+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name), - ".data1")) - { -- Elf32_Addr offset = NEW_SECTION_H (nn).sh_addr - -+ ElfW(Addr) offset = NEW_SECTION_H (nn).sh_addr - - NEW_SECTION_H (nn).sh_offset; - caddr_t reloc = old_base + section.sh_offset, end; - for (end = reloc + section.sh_size; reloc < end; - reloc += section.sh_entsize) - { -- Elf32_Addr addr = ((Elf32_Rel *) reloc)->r_offset - offset; -- memcpy (new_base + addr, old_base + addr, 4); -- } -+ ElfW(Addr) addr = ((ElfW(Rel) *) reloc)->r_offset - offset; -+#ifdef __alpha__ -+ /* The Alpha ELF binutils currently have a bug that -+ sometimes results in relocs that contain all -+ zeroes. Work around this for now... */ -+ if (((ElfW(Rel) *) reloc)->r_offset == 0) -+ continue; -+#endif -+ memcpy (new_base + addr, old_base + addr, sizeof(ElfW(Addr))); -+ } - } - break; - } - } - --#ifdef UNEXEC_USE_MAP_PRIVATE -- if (lseek (new_file, 0, SEEK_SET) == -1) -- fatal ("Can't rewind (%s): errno %d\n", new_name, errno); -+ /* Write out new_file, close it, and free the buffer containing its -+ * contents */ - - if (write (new_file, new_base, new_file_size) != new_file_size) -- fatal ("Can't write (%s): errno %d\n", new_name, errno); --#endif -+ fatal ("Didn't write %d bytes to %s: errno %d\n", -+ new_file_size, new_base, errno); -+ -+ if (close (new_file)) -+ fatal ("Can't close (%s): errno %d\n", new_name, errno); -+ -+ munmap (new_base, new_file_size); - -- /* Close the files and make the new file executable. */ -+ /* Close old_file, and free the corresponding buffer */ -+ -+#if MAP_ANON == 0 -+ close (mmap_fd); -+#endif - - if (close (old_file)) - fatal ("Can't close (%s): errno %d\n", old_name, errno); - -- if (close (new_file)) -- fatal ("Can't close (%s): errno %d\n", new_name, errno); -+ munmap (old_base, old_file_size); -+ -+ /* Make the new file executable */ - - if (stat (new_name, &stat_buf) == -1) - fatal ("Can't stat (%s): errno %d\n", new_name, errno); |