]>
Commit | Line | Data |
---|---|---|
8cbc3a31 JB |
1 | --- xc/programs/Xserver/hw/xfree86/loader/elfloader.c.orig 2006-04-08 19:53:39.000000000 +0200 |
2 | +++ xc/programs/Xserver/hw/xfree86/loader/elfloader.c 2007-05-01 08:40:52.720051459 +0200 | |
3 | @@ -1168,7 +1168,7 @@ | |
b88abb6c AM |
4 | ErrorF("ELFCreateGOT() Unable to reallocate memory!!!!\n"); |
5 | return FALSE; | |
6 | } | |
8cbc3a31 JB |
7 | -# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__) || defined(__NetBSD__) |
8 | +# if defined(linux) || defined(__OpenBSD__) || defined(__NetBSD__) | |
b88abb6c AM |
9 | { |
10 | unsigned long page_size = getpagesize(); | |
11 | unsigned long round; | |
8cbc3a31 | 12 | @@ -3351,10 +3351,16 @@ |
b88abb6c AM |
13 | elffile->lsection[j].size = SecSize(i); |
14 | elffile->lsection[j].flags = flags; | |
15 | switch (SecType(i)) { | |
8cbc3a31 JB |
16 | -#if defined(__OpenBSD__) || defined(__NetBSD__) |
17 | +#if defined(linux) || defined(__OpenBSD__) || defined(__NetBSD__) | |
b88abb6c AM |
18 | case SHT_PROGBITS: |
19 | - mprotect(elffile->lsection[j].saddr, SecSize(i), | |
8cbc3a31 JB |
20 | + { |
21 | + unsigned long page_size = getpagesize(); | |
22 | + unsigned long round; | |
b88abb6c | 23 | + |
8cbc3a31 JB |
24 | + round = (unsigned long)elffile->lsection[j].saddr & (page_size -1); |
25 | + mprotect( (char*)elffile->lsection[j].saddr - round, SecSize(i) + round, | |
26 | PROT_READ | PROT_WRITE | PROT_EXEC); | |
27 | + } | |
b88abb6c AM |
28 | break; |
29 | #endif | |
30 | case SHT_SYMTAB: | |
8cbc3a31 | 31 | @@ -3556,7 +3562,7 @@ |
b88abb6c AM |
32 | ErrorF("Unable to allocate ELF sections\n"); |
33 | return NULL; | |
34 | } | |
8cbc3a31 JB |
35 | -# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__) || defined(__NetBSD__) |
36 | +# if defined(linux) || defined(__OpenBSD__) || defined(__NetBSD__) | |
b88abb6c AM |
37 | { |
38 | unsigned long page_size = getpagesize(); | |
39 | unsigned long round; |