1 diff -urN xc-old/programs/Xserver/hw/xfree86/loader/elfloader.c xc/programs/Xserver/hw/xfree86/loader/elfloader.c
2 --- xc-old/programs/Xserver/hw/xfree86/loader/elfloader.c 2003-11-02 03:16:18.000000000 -0500
3 +++ xc/programs/Xserver/hw/xfree86/loader/elfloader.c 2003-11-02 03:21:53.000000000 -0500
5 ErrorF("ELFCreateGOT() Unable to reallocate memory!!!!\n");
8 -# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__)
9 +# if defined(linux) || defined(__OpenBSD__)
11 unsigned long page_size = getpagesize();
13 @@ -2761,10 +2761,16 @@
14 elffile->lsection[j].size = SecSize(i);
15 elffile->lsection[j].flags = flags;
18 +#if defined(linux) || defined(__OpenBSD__)
20 - mprotect(elffile->lsection[j].saddr, SecSize(i),
21 - PROT_READ | PROT_WRITE | PROT_EXEC);
23 + unsigned long page_size = getpagesize();
24 + unsigned long round;
26 + round = (unsigned long)elffile->lsection[j].saddr & (page_size -1);
27 + mprotect( (char *)elffile->lsection[j].saddr - round,
28 + SecSize(i) + round, PROT_READ|PROT_WRITE|PROT_EXEC);
34 ErrorF("Unable to allocate ELF sections\n");
37 -# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__)
38 +# if defined(linux) || defined(__OpenBSD__)
40 unsigned long page_size = getpagesize();