diff options
author | Eric Anholt <anholt@FreeBSD.org> | 2003-09-18 03:20:45 +0000 |
---|---|---|
committer | Eric Anholt <anholt@FreeBSD.org> | 2003-09-18 03:20:45 +0000 |
commit | 27d17afba2c21f490ea8472d7aa37495e02e3ed8 (patch) | |
tree | 1e39415364d42463873f1d86a99908baa3428b7b /x11-servers/XFree86-4-Server-snap/files/patch-elfloader.c | |
parent | Remove BROKEN line: (diff) |
Followup commit: Unbreak XFree86-4-Server-snap on -stable -- gcc 2 has no
-Wno-system-headers. While I'm here, port patches for non-x86/alpha from
XFree86-4-Server.
Reported by: Adam Weinberger <adamw@magnesium.net>
Marius Strobl <marius@alchemy.franken.de>
Diffstat (limited to 'x11-servers/XFree86-4-Server-snap/files/patch-elfloader.c')
-rw-r--r-- | x11-servers/XFree86-4-Server-snap/files/patch-elfloader.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/x11-servers/XFree86-4-Server-snap/files/patch-elfloader.c b/x11-servers/XFree86-4-Server-snap/files/patch-elfloader.c new file mode 100644 index 000000000000..1f030e6d90b1 --- /dev/null +++ b/x11-servers/XFree86-4-Server-snap/files/patch-elfloader.c @@ -0,0 +1,77 @@ +--- programs/Xserver/hw/xfree86/loader/elfloader.c.orig Fri Jan 24 12:26:35 2003 ++++ programs/Xserver/hw/xfree86/loader/elfloader.c Tue May 20 15:18:44 2003 +@@ -74,5 +74,5 @@ + # error No MAP_ANON? + # endif +-# if !defined (__AMD64__) ++# if !defined (__AMD64__) || !defined(__linux__) + # define MMAP_FLAGS (MAP_PRIVATE | MAP_ANON) + # else +@@ -1150,6 +1150,7 @@ + #endif + #if defined(__sparc__) + unsigned char *dest8; /* address of the 8 bit place being modified */ ++ unsigned long *dest64; + #endif + #if defined(__alpha__) + unsigned int *dest32h; /* address of the high 32 bit place being modified */ +@@ -1960,7 +1961,6 @@ + break; + + case R_SPARC_32: /* 3 */ +- case R_SPARC_GLOB_DAT: /* 20 */ + case R_SPARC_UA32: /* 23 */ + dest32 = (unsigned int *)(secp + rel->r_offset); + symval += rel->r_addend; +@@ -1970,29 +1970,36 @@ + ((unsigned char *)dest32)[3] = (unsigned char)(symval ); + break; + ++ case R_SPARC_GLOB_DAT: /* 20 */ ++ case R_SPARC_64: /* 32 */ ++ dest64 = (unsigned long *)(secp + rel->r_offset); ++ symval += rel->r_addend; ++ *dest64 = symval; ++ break; ++ + case R_SPARC_DISP8: /* 4 */ + dest8 = (unsigned char *)(secp + rel->r_offset); + symval += rel->r_addend; +- *dest8 = (symval - (Elf32_Addr) dest8); ++ *dest8 = (symval - (Elf_Addr) dest8); + break; + + case R_SPARC_DISP16: /* 5 */ + dest16 = (unsigned short *)(secp + rel->r_offset); + symval += rel->r_addend; +- *dest16 = (symval - (Elf32_Addr) dest16); ++ *dest16 = (symval - (Elf_Addr) dest16); + break; + + case R_SPARC_DISP32: /* 6 */ + dest32 = (unsigned int *)(secp + rel->r_offset); + symval += rel->r_addend; +- *dest32 = (symval - (Elf32_Addr) dest32); ++ *dest32 = (symval - (Elf_Addr) dest32); + break; + + case R_SPARC_WDISP30: /* 7 */ + dest32 = (unsigned int *)(secp + rel->r_offset); + symval += rel->r_addend; + *dest32 = ((*dest32 & 0xc0000000) | +- ((symval - (Elf32_Addr) dest32) >> 2)); ++ (((symval - (Elf_Addr) dest32) >> 2) & 0x3fffffff)); + break; + + case R_SPARC_HI22: /* 9 */ +@@ -2038,8 +2045,8 @@ + break; + + case R_SPARC_RELATIVE: /* 22 */ +- dest32 = (unsigned int *)(secp + rel->r_offset); +- *dest32 += (unsigned int)secp + rel->r_addend; ++ dest64 = (unsigned long *)(secp + rel->r_offset); ++ *dest64 = (unsigned long)secp + rel->r_addend; + break; + #endif /*__sparc__*/ + #ifdef __ia64__ |