]>
Commit | Line | Data |
---|---|---|
62f02f09 JB |
1 | --- xc/programs/Xserver/hw/xfree86/loader/elfloader.c.orig 2007-04-09 17:37:17.000000000 +0200 |
2 | +++ xc/programs/Xserver/hw/xfree86/loader/elfloader.c 2007-12-02 16:51:49.442062089 +0100 | |
3 | @@ -1165,7 +1165,7 @@ | |
b88abb6c AM |
4 | ErrorF("ELFCreateGOT() Unable to reallocate memory!!!!\n"); |
5 | return FALSE; | |
6 | } | |
62f02f09 JB |
7 | -# if (defined(linux) && defined(__ia64__)) || \ |
8 | +# if defined(linux) || \ | |
9 | defined(__OpenBSD__) || defined(__NetBSD__) | |
b88abb6c AM |
10 | { |
11 | unsigned long page_size = getpagesize(); | |
62f02f09 | 12 | @@ -3483,10 +3483,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: | |
62f02f09 | 31 | @@ -3688,7 +3694,7 @@ |
b88abb6c AM |
32 | ErrorF("Unable to allocate ELF sections\n"); |
33 | return NULL; | |
34 | } | |
62f02f09 JB |
35 | -# if (defined(linux) && defined(__ia64__)) || \ |
36 | +# if defined(linux) || \ | |
37 | defined(__OpenBSD__) || defined(__NetBSD__) | |
b88abb6c AM |
38 | { |
39 | unsigned long page_size = getpagesize(); |