diff --git a/pkgs/applications/editors/emacs-22/builder.sh b/pkgs/applications/editors/emacs-22/builder.sh
index e9c909739d53..6bb6c54a5b8f 100644
--- a/pkgs/applications/editors/emacs-22/builder.sh
+++ b/pkgs/applications/editors/emacs-22/builder.sh
@@ -1,13 +1,20 @@
 source $stdenv/setup
 
-myglibc=`cat ${NIX_GCC}/nix-support/orig-libc`
-echo "glibc: $myglibc" 
+preConfigure=preConfigure
+preConfigure() {
+    libc=$(cat ${NIX_GCC}/nix-support/orig-libc)
+    echo "libc: $libc"
 
-postConfigure() {
-  cp $myglibc/lib/crt1.o src
-  cp $myglibc/lib/crti.o src
-  cp $myglibc/lib/crtn.o src
+    for i in src/s/*.h src/m/*.h; do
+        substituteInPlace $i \
+            --replace /usr/lib/crt1.o $libc/lib/crt1.o \
+            --replace /usr/lib/crti.o $libc/lib/crti.o \
+            --replace /usr/lib/crtn.o $libc/lib/crtn.o
+    done
+
+    for i in Makefile.in ./src/Makefile.in ./lib-src/Makefile.in ./leim/Makefile.in; do
+        substituteInPlace $i --replace /bin/pwd pwd
+    done
 }
-postConfigure=postConfigure
 
 genericBuild