Rodrigo Mesquita pushed to branch wip/T26166 at Glasgow Haskell Compiler / GHC
Commits:
-
0328e335
by Rodrigo Mesquita at 2025-10-09T11:13:50+01:00
-
d7e5b3bf
by Rodrigo Mesquita at 2025-10-09T11:14:21+01:00
-
a1c87ac0
by Rodrigo Mesquita at 2025-10-09T11:15:27+01:00
-
e460125b
by Rodrigo Mesquita at 2025-10-09T11:16:14+01:00
-
15fa314d
by Rodrigo Mesquita at 2025-10-09T11:16:42+01:00
-
cff2ab64
by Rodrigo Mesquita at 2025-10-09T11:20:02+01:00
26 changed files:
- compiler/GHC/Linker/Dynamic.hs
- libraries/base/src/System/CPUTime.hsc
- libraries/ghc-internal/ghc-internal.cabal.in
- libraries/ghc-internal/include/RtsIfaceSymbols.h
- libraries/ghc-internal/src/GHC/Internal/Clock.hsc
- libraries/ghc-internal/src/GHC/Internal/ConsoleHandler.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/EPoll.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/KQueue.hsc
- libraries/ghc-internal/src/GHC/Internal/Event/Poll.hsc
- libraries/ghc-internal/src/GHC/Internal/ExecutionStack/Internal.hsc
- libraries/ghc-internal/src/GHC/Internal/Heap/Constants.hsc
- libraries/ghc-internal/src/GHC/Internal/Heap/InfoTable.hsc
- libraries/ghc-internal/src/GHC/Internal/Heap/InfoTable/Types.hsc
- libraries/ghc-internal/src/GHC/Internal/Heap/InfoTableProf.hsc
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Lock/Flock.hsc
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Lock/LinuxOFD.hsc
- libraries/ghc-internal/src/GHC/Internal/IO/Handle/Lock/Windows.hsc
- libraries/ghc-internal/src/GHC/Internal/InfoProv/Types.hsc
- libraries/ghc-internal/src/GHC/Internal/RTS/Flags.hsc
- libraries/ghc-internal/src/GHC/Internal/RTS/Flags/Test.hsc
- libraries/ghc-internal/src/GHC/Internal/Stack/CCS.hsc
- libraries/ghc-internal/src/GHC/Internal/Stack/Constants.hsc
- libraries/ghc-internal/src/GHC/Internal/Stats.hsc
- libraries/ghc-internal/src/GHC/Internal/System/Environment/Blank.hsc
- libraries/ghc-internal/src/GHC/Internal/System/Environment/ExecutablePath.hsc
- utils/hsc2hs
Changes:
| ... | ... | @@ -144,6 +144,12 @@ linkDynLib logger tmpfs dflags0 unit_env o_files dep_packages |
| 144 | 144 | -- About the options used for Darwin:
|
| 145 | 145 | -- -dynamiclib
|
| 146 | 146 | -- Apple's way of saying -shared
|
| 147 | + -- -undefined dynamic_lookup:
|
|
| 148 | + -- Without these options, we'd have to specify the correct
|
|
| 149 | + -- dependencies for each of the dylibs. Note that we could
|
|
| 150 | + -- (and should) do without this for all libraries except
|
|
| 151 | + -- the RTS; all we need to do is to pass the correct
|
|
| 152 | + -- HSfoo_dyn.dylib files to the link command.
|
|
| 147 | 153 | -- -single_module
|
| 148 | 154 | -- Build the dynamic library as a single "module", i.e. no
|
| 149 | 155 | -- dynamic binding nonsense when referring to symbols from
|
| ... | ... | @@ -176,6 +182,9 @@ linkDynLib logger tmpfs dflags0 unit_env o_files dep_packages |
| 176 | 182 | , FileOption "" output_fn
|
| 177 | 183 | ]
|
| 178 | 184 | ++ map Option o_files
|
| 185 | + ++ [ Option "-undefined",
|
|
| 186 | + Option "dynamic_lookup"
|
|
| 187 | + ]
|
|
| 179 | 188 | ++ (if toolSettings_ldSupportsSingleModule (toolSettings dflags)
|
| 180 | 189 | then [ Option "-single_module" ]
|
| 181 | 190 | else [ ])
|
| ... | ... | @@ -17,6 +17,7 @@ |
| 17 | 17 | |
| 18 | 18 | #include "HsFFI.h"
|
| 19 | 19 | #include "HsBaseConfig.h"
|
| 20 | +#include "RtsIfaceStub.h"
|
|
| 20 | 21 | |
| 21 | 22 | -- For various _POSIX_* #defines
|
| 22 | 23 | #if defined(HAVE_UNISTD_H)
|
| ... | ... | @@ -486,6 +486,7 @@ Library |
| 486 | 486 | RtsIfaceStub.h
|
| 487 | 487 | install-includes:
|
| 488 | 488 | HsBase.h
|
| 489 | + RtsIfaceStub.h
|
|
| 489 | 490 | consUtils.h
|
| 490 | 491 | |
| 491 | 492 | if flag(need-atomic)
|
| ... | ... | @@ -65,4 +65,3 @@ UNDEF_CLOSURE(GHCziInternalziWasmziPrimziImports, raiseJSException_closure) |
| 65 | 65 | UNDEF_CLOSURE(GHCziInternalziWasmziPrim, JSVal_con_info)
|
| 66 | 66 | UNDEF_CLOSURE(GHCziInternalziWasmziPrim, threadDelay_closure)
|
| 67 | 67 | #endif |
| 68 | - |
| ... | ... | @@ -15,8 +15,6 @@ import GHC.Internal.Float () -- for Num Double instance |
| 15 | 15 | import GHC.Internal.Num
|
| 16 | 16 | #endif
|
| 17 | 17 | |
| 18 | -#include "RtsIfaceStub.h"
|
|
| 19 | - |
|
| 20 | 18 | -- | Return monotonic time in seconds, since some unspecified starting point
|
| 21 | 19 | --
|
| 22 | 20 | -- @since base-4.11.0.0
|
| ... | ... | @@ -19,7 +19,6 @@ |
| 19 | 19 | -----------------------------------------------------------------------------
|
| 20 | 20 | |
| 21 | 21 | module GHC.Internal.ConsoleHandler
|
| 22 | -#include "RtsIfaceStub.h"
|
|
| 23 | 22 | #if !defined(mingw32_HOST_OS)
|
| 24 | 23 | where
|
| 25 | 24 |
| ... | ... | @@ -24,7 +24,6 @@ module GHC.Internal.Event.EPoll |
| 24 | 24 | import qualified GHC.Internal.Event.Internal as E
|
| 25 | 25 | |
| 26 | 26 | #include "EventConfig.h"
|
| 27 | -#include "RtsIfaceStub.h"
|
|
| 28 | 27 | #if !defined(HAVE_EPOLL)
|
| 29 | 28 | import GHC.Internal.Base
|
| 30 | 29 |
| ... | ... | @@ -16,7 +16,6 @@ module GHC.Internal.Event.KQueue |
| 16 | 16 | import qualified GHC.Internal.Event.Internal as E
|
| 17 | 17 | |
| 18 | 18 | #include "EventConfig.h"
|
| 19 | -#include "RtsIfaceStub.h"
|
|
| 20 | 19 | #if !defined(HAVE_KQUEUE)
|
| 21 | 20 | import GHC.Internal.Base
|
| 22 | 21 |
| ... | ... | @@ -11,7 +11,6 @@ module GHC.Internal.Event.Poll |
| 11 | 11 | ) where
|
| 12 | 12 | |
| 13 | 13 | #include "EventConfig.h"
|
| 14 | -#include "RtsIfaceStub.h"
|
|
| 15 | 14 | |
| 16 | 15 | #if !defined(HAVE_POLL_H)
|
| 17 | 16 | import GHC.Internal.Base
|
| ... | ... | @@ -21,7 +21,6 @@ |
| 21 | 21 | #include "HsFFI.h"
|
| 22 | 22 | #include "HsBaseConfig.h"
|
| 23 | 23 | #include "rts/Libdw.h"
|
| 24 | -#include "RtsIfaceStub.h"
|
|
| 25 | 24 | |
| 26 | 25 | {-# LANGUAGE MultiWayIf #-}
|
| 27 | 26 |
| ... | ... | @@ -7,7 +7,6 @@ module GHC.Internal.Heap.Constants |
| 7 | 7 | ) where
|
| 8 | 8 | |
| 9 | 9 | #include "MachDeps.h"
|
| 10 | -#include "RtsIfaceStub.h"
|
|
| 11 | 10 | |
| 12 | 11 | import GHC.Internal.Data.Bits
|
| 13 | 12 | import GHC.Internal.Int
|
| ... | ... | @@ -6,7 +6,6 @@ module GHC.Internal.Heap.InfoTable |
| 6 | 6 | ) where
|
| 7 | 7 | |
| 8 | 8 | #include "Rts.h"
|
| 9 | -#include "RtsIfaceStub.h"
|
|
| 10 | 9 | |
| 11 | 10 | import GHC.Internal.Base
|
| 12 | 11 | import GHC.Internal.Real
|
| ... | ... | @@ -10,7 +10,6 @@ module GHC.Internal.Heap.InfoTable.Types |
| 10 | 10 | ) where
|
| 11 | 11 | |
| 12 | 12 | #include "Rts.h"
|
| 13 | -#include "RtsIfaceStub.h"
|
|
| 14 | 13 | |
| 15 | 14 | import GHC.Internal.Base
|
| 16 | 15 | import GHC.Internal.Generics
|
| ... | ... | @@ -10,7 +10,6 @@ module GHC.Internal.Heap.InfoTableProf |
| 10 | 10 | -- representation of StgInfoTable_ when hsc2hs runs.
|
| 11 | 11 | #define PROFILING
|
| 12 | 12 | #include "Rts.h"
|
| 13 | -#include "RtsIfaceStub.h"
|
|
| 14 | 13 | |
| 15 | 14 | import GHC.Internal.Base
|
| 16 | 15 | import GHC.Internal.Real
|
| ... | ... | @@ -8,7 +8,6 @@ |
| 8 | 8 | module GHC.Internal.IO.Handle.Lock.Flock where
|
| 9 | 9 | |
| 10 | 10 | #include "HsBaseConfig.h"
|
| 11 | -#include "RtsIfaceStub.h"
|
|
| 12 | 11 | |
| 13 | 12 | #if !HAVE_FLOCK
|
| 14 | 13 | -- See W1 of Note [Tracking dependencies on primitives] in GHC.Internal.Base
|
| ... | ... | @@ -8,7 +8,6 @@ |
| 8 | 8 | module GHC.Internal.IO.Handle.Lock.LinuxOFD where
|
| 9 | 9 | |
| 10 | 10 | #include "HsBaseConfig.h"
|
| 11 | -#include "RtsIfaceStub.h"
|
|
| 12 | 11 | |
| 13 | 12 | #if !HAVE_OFD_LOCKING
|
| 14 | 13 | -- See W1 of Note [Tracking dependencies on primitives] in GHC.Internal.Base
|
| ... | ... | @@ -8,7 +8,6 @@ |
| 8 | 8 | module GHC.Internal.IO.Handle.Lock.Windows where
|
| 9 | 9 | |
| 10 | 10 | #include "HsBaseConfig.h"
|
| 11 | -#include "RtsIfaceStub.h"
|
|
| 12 | 11 | |
| 13 | 12 | #if !defined(mingw32_HOST_OS)
|
| 14 | 13 | -- See W1 of Note [Tracking dependencies on primitives] in GHC.Internal.Base
|
| ... | ... | @@ -5,7 +5,6 @@ |
| 5 | 5 | {-# LANGUAGE NoImplicitPrelude #-}
|
| 6 | 6 | |
| 7 | 7 | #include "Rts.h"
|
| 8 | -#include "RtsIfaceStub.h"
|
|
| 9 | 8 | |
| 10 | 9 | module GHC.Internal.InfoProv.Types
|
| 11 | 10 | ( InfoProv(..)
|
| ... | ... | @@ -52,7 +52,6 @@ module GHC.Internal.RTS.Flags |
| 52 | 52 | ) where
|
| 53 | 53 | |
| 54 | 54 | #include "Rts.h"
|
| 55 | -#include "RtsIfaceStub.h"
|
|
| 56 | 55 | #include "rts/Flags.h"
|
| 57 | 56 | |
| 58 | 57 | import GHC.Internal.Data.Functor ((<$>))
|
| ... | ... | @@ -7,8 +7,6 @@ module GHC.Internal.RTS.Flags.Test |
| 7 | 7 | )
|
| 8 | 8 | where
|
| 9 | 9 | |
| 10 | -#include "RtsIfaceStub.h"
|
|
| 11 | - |
|
| 12 | 10 | import GHC.Internal.Base
|
| 13 | 11 | |
| 14 | 12 | #if !defined(javascript_HOST_ARCH)
|
| ... | ... | @@ -47,7 +47,6 @@ import GHC.Internal.List ( concatMap, reverse ) |
| 47 | 47 | |
| 48 | 48 | #define PROFILING
|
| 49 | 49 | #include "Rts.h"
|
| 50 | -#include "RtsIfaceStub.h"
|
|
| 51 | 50 | |
| 52 | 51 | -- | A cost-centre stack from GHC's cost-center profiler.
|
| 53 | 52 | data CostCentreStack
|
| ... | ... | @@ -14,7 +14,6 @@ import GHC.Internal.Real |
| 14 | 14 | #undef MBLOCK_SIZE
|
| 15 | 15 | #undef BLOCKS_PER_MBLOCK
|
| 16 | 16 | #include "DerivedConstants.h"
|
| 17 | -#include "RtsIfaceStub.h"
|
|
| 18 | 17 | |
| 19 | 18 | newtype ByteOffset = ByteOffset { offsetInBytes :: Int }
|
| 20 | 19 | deriving newtype (Eq, Show, Integral, Real, Num, Enum, Ord)
|
| ... | ... | @@ -45,7 +45,6 @@ import GHC.Internal.Foreign.Storable |
| 45 | 45 | import GHC.Internal.Foreign.Ptr
|
| 46 | 46 | |
| 47 | 47 | #include "Rts.h"
|
| 48 | -#include "RtsIfaceStub.h"
|
|
| 49 | 48 | |
| 50 | 49 | foreign import ccall "getRTSStats" getRTSStats_ :: Ptr () -> IO ()
|
| 51 | 50 |
| ... | ... | @@ -74,7 +74,6 @@ import qualified GHC.Internal.System.Environment as Environment |
| 74 | 74 | #endif
|
| 75 | 75 | |
| 76 | 76 | #include "HsBaseConfig.h"
|
| 77 | -#include "RtsIfaceStub.h"
|
|
| 78 | 77 | |
| 79 | 78 | throwInvalidArgument :: String -> IO a
|
| 80 | 79 | throwInvalidArgument from =
|
| ... | ... | @@ -104,9 +104,6 @@ import GHC.Internal.Foreign.Storable |
| 104 | 104 | import GHC.Internal.System.Posix.Internals
|
| 105 | 105 | #endif
|
| 106 | 106 | |
| 107 | -#include "RtsIfaceStub.h"
|
|
| 108 | - |
|
| 109 | - |
|
| 110 | 107 | -- The exported function is defined outside any if-guard to make sure
|
| 111 | 108 | -- every OS implements it with the same type.
|
| 112 | 109 |
| 1 | -Subproject commit fe3990b9f35000427b016a79330d9f195587cad8 |
|
| 1 | +Subproject commit 3863f81b72d1c5877505e840fd203193c50d2e0f |