Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Shayne Fletcher
Glasgow Haskell Compiler
Commits
106f0434
Commit
106f0434
authored
Aug 20, 2012
by
Simon Marlow
Browse files
add X86_64_GOTTPOFF relocation for errno
Submitted by: Markus Pfeiffer <markus.pfeiffer@morphism.de> on cvs-ghc
parent
cec899d9
Changes
1
Hide whitespace changes
Inline
Side-by-side
rts/Linker.c
View file @
106f0434
...
...
@@ -133,6 +133,10 @@
#define ALWAYS_PIC
#endif
#if defined(dragonfly_HOST_OS)
#include
<sys/tls.h>
#endif
/* 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
;
break
;
}
#if defined(dragonfly_HOST_OS)
case
R_X86_64_GOTTPOFF
:
{
#if defined(ALWAYS_PIC)
barf
(
"R_X86_64_GOTTPOFF relocation, but ALWAYS_PIC."
);
#else
/* determine the offset of S to the current thread's tls
area
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
;
#endif
break
;
}
#endif
case
R_X86_64_PLT32
:
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment