summaryrefslogtreecommitdiffstats
path: root/glibc/Optimize-__getpagesize-a-bit.patch
blob: 38aa4b282d440940f64aad95771534e2a79ef48e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
This is the important part of 8f4a5048eea6536ee85c0f2670adbb97d71e427d.
Unfortunately the assertion fails in statically linked binaries.
 
diff --git a/sysdeps/unix/sysv/linux/getpagesize.c b/sysdeps/unix/sysv/linux/getpagesize.c
index 6d03b3b..0866079 100644
--- a/sysdeps/unix/sysv/linux/getpagesize.c
+++ b/sysdeps/unix/sysv/linux/getpagesize.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1992,1995-1997,2000,2002,2004
+/* Copyright (C) 1991,1992,1995-1997,2000,2002,2004,2010
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -17,30 +17,37 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <unistd.h>
 #include <sys/param.h>
 
 #include <ldsodefs.h>
+#include <kernel-features.h>
 
 /* Return the system page size.  */
 int
 __getpagesize ()
 {
+#ifdef __ASSUME_AT_PAGESIZE
+  assert (GLRO(dl_pagesize) != 0);
+  return GLRO(dl_pagesize);
+#else
   if (GLRO(dl_pagesize) != 0)
     return GLRO(dl_pagesize);
 
-#ifdef	EXEC_PAGESIZE
+# ifdef	EXEC_PAGESIZE
   return EXEC_PAGESIZE;
-#else	/* No EXEC_PAGESIZE.  */
-#ifdef	NBPG
-#ifndef	CLSIZE
-#define	CLSIZE	1
-#endif	/* No CLSIZE.  */
+# else	/* No EXEC_PAGESIZE.  */
+#  ifdef NBPG
+#   ifndef CLSIZE
+#    define CLSIZE	1
+#   endif	/* No CLSIZE.  */
   return NBPG * CLSIZE;
-#else	/* No NBPG.  */
+#  else	/* No NBPG.  */
   return NBPC;
-#endif	/* NBPG.  */
-#endif	/* EXEC_PAGESIZE.  */
+#  endif	/* NBPG.  */
+# endif	/* EXEC_PAGESIZE.  */
+#endif
 }
 libc_hidden_def (__getpagesize)
 weak_alias (__getpagesize, getpagesize)
-- 
1.7.2.1