diff -urN linux/fs/binfmt_elf.c linux-2.3.18-zeropage/fs/binfmt_elf.c
--- linux/fs/binfmt_elf.c       Tue Aug  3 18:18:39 1999
+++ linux-2.3.18-zeropage/fs/binfmt_elf.c       Fri Oct  1 17:04:30 1999
@@ -738,16 +738,15 @@
       printk("(brk) %lx\n" , (long) current->mm->brk);
#endif

-       if ( current->personality == PER_SVR4 )
-       {
-               /* Why this, you ask???  Well SVr4 maps page 0 as read-only,
-                  and some applications "depend" upon this behavior.
-                  Since we do not have the power to recompile these, we
-                  emulate the SVr4 behavior.  Sigh.  */
-               /* N.B. Shouldn't the size here be PAGE_SIZE?? */
-               error = do_mmap(NULL, 0, 4096, PROT_READ | PROT_EXEC,
-                               MAP_FIXED | MAP_PRIVATE, 0);
-       }
+       /* Why this, you ask???  Well SVr4/UW7 maps page 0 as read-only,
+          and some applications "depend" upon this behavior.
+          Since we do not have the power to recompile these, we
+          emulate the SVr4/UW7 behavior. */
+
+       if (current->personality & MAP_PAGE_ZERO)
+               error = do_mmap(NULL, 0, PAGE_SIZE,
+                       PROT_READ | PROT_EXEC, MAP_FIXED | MAP_PRIVATE, 0);
+

#ifdef ELF_PLAT_INIT
       /*
diff -urN linux/include/linux/personality.h linux-2.3.18-zeropage/include/linux/personality.h
--- linux/include/linux/personality.h   Sat Sep  4 21:06:08 1999
+++ linux-2.3.18-zeropage/include/linux/personality.h   Fri Oct  1 17:03:44 1999
@@ -8,6 +8,7 @@
/* Flags for bug emulation. These occupy the top three bytes. */
#define STICKY_TIMEOUTS                0x4000000
#define WHOLE_SECONDS          0x2000000
+#define MAP_PAGE_ZERO          0x100000
#define ADDR_LIMIT_32BIT       0x0800000

/* Personality types. These go in the low byte. Avoid using the top bit,
@@ -16,7 +17,7 @@
#define PER_MASK               (0x00ff)
#define PER_LINUX              (0x0000)
#define PER_LINUX_32BIT                (0x0000 | ADDR_LIMIT_32BIT)
-#define PER_SVR4               (0x0001 | STICKY_TIMEOUTS)
+#define PER_SVR4               (0x0001 | STICKY_TIMEOUTS | MAP_PAGE_ZERO)
#define PER_SVR3               (0x0002 | STICKY_TIMEOUTS)
#define PER_SCOSVR3            (0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS)
#define PER_WYSEV386           (0x0004 | STICKY_TIMEOUTS)