diff options
author | GHC GitLab CI <ghc-ci@gitlab-haskell.org> | 2021-03-02 02:53:09 +0000 |
---|---|---|
committer | Cheng Shao <cheng.shao@tweag.io> | 2021-10-28 17:28:18 +0000 |
commit | 43dbf1c3ec7dfdf1f5a3c0dd6d0f764b8307bacd (patch) | |
tree | 2edb7dd55c7158323492935e33a072057a176156 | |
parent | bfec18be2f8fe5c28403d9ee5657b8019229be12 (diff) | |
download | haskell-43dbf1c3ec7dfdf1f5a3c0dd6d0f764b8307bacd.tar.gz |
rts/linker: Resolve __fini_array_* symbols to NULL
If the __fini_array_{start,end} symbols are not defined (e.g. as is
often the case when linking against musl) then resolve them to NULL.
(cherry picked from commit fcd970b56853350c2de330decb5c2658fcf6e7f8)
-rw-r--r-- | rts/Linker.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/rts/Linker.c b/rts/Linker.c index d959cffef5..55d1e3d186 100644 --- a/rts/Linker.c +++ b/rts/Linker.c @@ -908,6 +908,10 @@ SymbolAddr* lookupDependentSymbol (SymbolName* lbl, ObjectCode *dependent) return NULL; # endif } else { + static void *RTS_NO_FINI = NULL; + if (strcmp(lbl, "__fini_array_end") == 0) { return (SymbolAddr *) &RTS_NO_FINI; } + if (strcmp(lbl, "__fini_array_start") == 0) { return (SymbolAddr *) &RTS_NO_FINI; } + if (dependent) { // Add dependent as symbol's owner's dependency ObjectCode *owner = pinfo->owner; |