]>
Commit | Line | Data |
---|---|---|
b88abb6c AM |
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 | |
4 | @@ -921,7 +921,7 @@ | |
5 | ErrorF("ELFCreateGOT() Unable to reallocate memory!!!!\n"); | |
6 | return FALSE; | |
7 | } | |
8 | -# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__) | |
9 | +# if defined(linux) || defined(__OpenBSD__) | |
10 | { | |
11 | unsigned long page_size = getpagesize(); | |
12 | unsigned long round; | |
13 | @@ -2761,10 +2761,16 @@ | |
14 | elffile->lsection[j].size = SecSize(i); | |
15 | elffile->lsection[j].flags = flags; | |
16 | switch (SecType(i)) { | |
17 | -#ifdef __OpenBSD__ | |
18 | +#if defined(linux) || defined(__OpenBSD__) | |
19 | case SHT_PROGBITS: | |
20 | - mprotect(elffile->lsection[j].saddr, SecSize(i), | |
21 | - PROT_READ | PROT_WRITE | PROT_EXEC); | |
22 | + { | |
23 | + unsigned long page_size = getpagesize(); | |
24 | + unsigned long round; | |
25 | + | |
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); | |
29 | + } | |
30 | break; | |
31 | #endif | |
32 | case SHT_SYMTAB: | |
33 | @@ -2959,7 +2965,7 @@ | |
34 | ErrorF("Unable to allocate ELF sections\n"); | |
35 | return NULL; | |
36 | } | |
37 | -# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__) | |
38 | +# if defined(linux) || defined(__OpenBSD__) | |
39 | { | |
40 | unsigned long page_size = getpagesize(); | |
41 | unsigned long round; |