* gnu/packages/elf.scm (patchelf): Update to 0.8. * gnu/packages/patches/patchelf-page-size.patch: Adapt to new version.
		
			
				
	
	
		
			70 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
Improve the determination of pageSize in patchelf.cc.
 | 
						|
 | 
						|
Patch by Mark H Weaver <mhw@netris.org>.
 | 
						|
 | 
						|
--- patchelf/src/patchelf.cc.orig	1969-12-31 19:00:01.000000000 -0500
 | 
						|
+++ patchelf/src/patchelf.cc	2014-02-16 20:15:06.283203125 -0500
 | 
						|
@@ -21,11 +21,19 @@
 | 
						|
 using namespace std;
 | 
						|
 
 | 
						|
 
 | 
						|
-#ifdef MIPSEL
 | 
						|
-/* The lemote fuloong 2f kernel defconfig sets a page size of 16KB */
 | 
						|
-const unsigned int pageSize = 4096*4;
 | 
						|
-#else
 | 
						|
+/* Note that some platforms support multiple page sizes.  Therefore,
 | 
						|
+   it is not enough to query the current page size.  'pageSize' must
 | 
						|
+   be the maximum architectural page size for the platform, which is
 | 
						|
+   typically defined in the corresponding ABI document.
 | 
						|
+
 | 
						|
+   XXX FIXME: This won't work when we're cross-compiling.  */
 | 
						|
+
 | 
						|
+#if defined __MIPSEL__ || defined __MIPSEB__ || defined __aarch64__
 | 
						|
+const unsigned int pageSize = 65536;
 | 
						|
+#elif defined __x86_64__ || defined __i386__ || defined __arm__
 | 
						|
 const unsigned int pageSize = 4096;
 | 
						|
+#else
 | 
						|
+# error maximum architectural page size unknown for this platform
 | 
						|
 #endif
 | 
						|
 
 | 
						|
 
 | 
						|
--- patchelf/tests/no-rpath.sh.orig	2014-01-14 08:17:47.000000000 -0500
 | 
						|
+++ patchelf/tests/no-rpath.sh	2015-01-06 18:31:53.418172797 -0500
 | 
						|
@@ -1,23 +1,23 @@
 | 
						|
 #! /bin/sh -e
 | 
						|
 SCRATCH=scratch/$(basename $0 .sh)
 | 
						|
 
 | 
						|
-rm -rf ${SCRATCH}
 | 
						|
-mkdir -p ${SCRATCH}
 | 
						|
+if [ "$(uname -m)" = i686 -a "$(uname -s)" = Linux ]; then
 | 
						|
+    rm -rf ${SCRATCH}
 | 
						|
+    mkdir -p ${SCRATCH}
 | 
						|
 
 | 
						|
-cp ${srcdir}/no-rpath ${SCRATCH}/
 | 
						|
+    cp ${srcdir}/no-rpath ${SCRATCH}/
 | 
						|
 
 | 
						|
-oldRPath=$(../src/patchelf --print-rpath ${SCRATCH}/no-rpath)
 | 
						|
-if test -n "$oldRPath"; then exit 1; fi
 | 
						|
-../src/patchelf \
 | 
						|
-  --set-interpreter "$(../src/patchelf --print-interpreter ../src/patchelf)" \
 | 
						|
-  --set-rpath /foo:/bar:/xxxxxxxxxxxxxxx ${SCRATCH}/no-rpath
 | 
						|
+    oldRPath=$(../src/patchelf --print-rpath ${SCRATCH}/no-rpath)
 | 
						|
+    if test -n "$oldRPath"; then exit 1; fi
 | 
						|
+    ../src/patchelf \
 | 
						|
+      --set-interpreter "$(../src/patchelf --print-interpreter ../src/patchelf)" \
 | 
						|
+      --set-rpath /foo:/bar:/xxxxxxxxxxxxxxx ${SCRATCH}/no-rpath
 | 
						|
 
 | 
						|
-newRPath=$(../src/patchelf --print-rpath ${SCRATCH}/no-rpath)
 | 
						|
-if ! echo "$newRPath" | grep -q '/foo:/bar'; then
 | 
						|
-    echo "incomplete RPATH"
 | 
						|
-    exit 1
 | 
						|
-fi
 | 
						|
+    newRPath=$(../src/patchelf --print-rpath ${SCRATCH}/no-rpath)
 | 
						|
+    if ! echo "$newRPath" | grep -q '/foo:/bar'; then
 | 
						|
+        echo "incomplete RPATH"
 | 
						|
+        exit 1
 | 
						|
+    fi
 | 
						|
 
 | 
						|
-if [ "$(uname -m)" = i686 -a "$(uname -s)" = Linux ]; then
 | 
						|
     cd ${SCRATCH} && ./no-rpath
 | 
						|
 fi
 |