summaryrefslogtreecommitdiff
path: root/rts/linker/PEi386.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/linker/PEi386.c')
-rw-r--r--rts/linker/PEi386.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/rts/linker/PEi386.c b/rts/linker/PEi386.c
index f186da0af8..8eb046a38e 100644
--- a/rts/linker/PEi386.c
+++ b/rts/linker/PEi386.c
@@ -1947,6 +1947,9 @@ ocResolve_PEi386 ( ObjectCode* oc )
// N.B. in the case of the sign-extended relocations we must ensure that v
// fits in a signed 32-bit value. See #15808.
if (((int64_t) v > (int64_t) INT32_MAX) || ((int64_t) v < (int64_t) INT32_MIN)) {
+ if (isTntcSymbol(symbol)) {
+ barf("Unable relocate symbol '%s' with info table as we would need to produce a jump island", symbol);
+ }
copyName (getSymShortName (info, sym), oc,
symbol, sizeof(symbol)-1);
S = makeSymbolExtra_PEi386(oc, symIndex, S, (char *)symbol);
@@ -1965,6 +1968,10 @@ ocResolve_PEi386 ( ObjectCode* oc )
intptr_t v;
v = S + (int32_t)A - ((intptr_t)pP) - 4;
if ((v > (int64_t) INT32_MAX) || (v < (int64_t) INT32_MIN)) {
+ if (isTntcSymbol(symbol)) {
+ barf("Unable relocate symbol '%s' with info table as we would need to produce a jump island", symbol);
+ }
+
/* Make the trampoline then */
copyName (getSymShortName (info, sym),
oc, symbol, sizeof(symbol)-1);