Commit 106f0434 authored by Simon Marlow's avatar Simon Marlow
Browse files

add X86_64_GOTTPOFF relocation for errno

Submitted by: Markus Pfeiffer <> on cvs-ghc
parent cec899d9
......@@ -133,6 +133,10 @@
#define ALWAYS_PIC
#if defined(dragonfly_HOST_OS)
#include <sys/tls.h>
/* Hash table mapping symbol names to Symbol */
static /*Str*/HashTable *symhash;
......@@ -5207,6 +5211,27 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
*(Elf64_Word *)P = (Elf64_Word)off;
#if defined(dragonfly_HOST_OS)
case R_X86_64_GOTTPOFF:
#if defined(ALWAYS_PIC)
barf("R_X86_64_GOTTPOFF relocation, but ALWAYS_PIC.");
/* determine the offset of S to the current thread's tls
XXX: Move this to the beginning of function */
struct tls_info ti;
get_tls_area(0, &ti, sizeof(ti));
/* make entry in GOT that contains said offset */
StgInt64 gotEntry = (StgInt64) &makeSymbolExtra(oc, ELF_R_SYM(info),
(S - (Elf64_Addr)(ti.base)))->addr;
*(Elf64_Word *)P = gotEntry + A - P;
case R_X86_64_PLT32:
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment