David Eichmann pushed to branch wip/davide/windows-dlls_sysm-test_master at Glasgow Haskell Compiler / GHC

Commits:

19 changed files:

Changes:

  • hadrian/src/Settings/Builders/RunTest.hs
    ... ... @@ -254,6 +254,10 @@ runTestBuilderArgs = builder Testsuite ? do
    254 254
         let asBool :: String -> Bool -> String
    
    255 255
             asBool s b = s ++ show b
    
    256 256
     
    
    257
    +    have_gdb     <- expr $ liftIO (isJust <$> findExecutable "gdb")
    
    258
    +    have_ldd     <- expr $ liftIO (isJust <$> findExecutable "ldd")
    
    259
    +    have_readelf <- expr $ liftIO (isJust <$> findExecutable "readelf")
    
    260
    +
    
    257 261
         -- TODO: set CABAL_MINIMAL_BUILD/CABAL_PLUGIN_BUILD
    
    258 262
         mconcat [ arg "-Wdefault"  -- see #22727
    
    259 263
                 , arg $ "testsuite/driver/runtests.py"
    
    ... ... @@ -274,6 +278,9 @@ runTestBuilderArgs = builder Testsuite ? do
    274 278
                 , arg "-e", arg $ asBool "ghc_with_native_codegen=" withNativeCodeGen
    
    275 279
                 , arg "-e", arg $ asBool "config.have_ncg=" withNativeCodeGen
    
    276 280
                 , arg "-e", arg $ asBool "config.have_llvm=" have_llvm
    
    281
    +            , arg "-e", arg $ asBool "config.have_gdb=" have_gdb
    
    282
    +            , arg "-e", arg $ asBool "config.have_ldd=" have_ldd
    
    283
    +            , arg "-e", arg $ asBool "config.have_readelf=" have_readelf
    
    277 284
     
    
    278 285
                 , arg "-e", arg $ asBool "config.compiler_profiled=" profiled
    
    279 286
     
    

  • rts/Linker.c
    ... ... @@ -478,7 +478,18 @@ initLinker_ (int retain_cafs)
    478 478
         symhash = allocStrHashTable();
    
    479 479
     
    
    480 480
         /* populate the symbol table with stuff from the RTS */
    
    481
    -    initLinkerRtsSyms(symhash);
    
    481
    +    const RtsSymbolVal * rtsSyms = getRtsSymbols();
    
    482
    +    IF_DEBUG(linker, debugBelch("populating linker symbol table with built-in RTS symbols\n"));
    
    483
    +    for (const RtsSymbolVal *sym = rtsSyms; sym->lbl != NULL; sym++) {
    
    484
    +        IF_DEBUG(linker, debugBelch("initLinker: inserting rts symbol %s, %p\n", sym->lbl, sym->addr));
    
    485
    +        if (! ghciInsertSymbolTable(WSTR("(GHCi built-in symbols)"),
    
    486
    +                                    symhash, sym->lbl, sym->addr,
    
    487
    +                                    sym->strength, sym->type, 0, NULL)) {
    
    488
    +            barf("ghciInsertSymbolTable failed");
    
    489
    +        }
    
    490
    +    }
    
    491
    +    stgFree((void*)rtsSyms);
    
    492
    +    IF_DEBUG(linker, debugBelch("done with built-in RTS symbols\n"));
    
    482 493
     
    
    483 494
         /* Add extra symbols. rtsExtraSyms() is a weakly defined symbol in the rts,
    
    484 495
          * that can be overrided by linking in an object with a corresponding
    

  • rts/LinkerInternals.h
    ... ... @@ -9,7 +9,6 @@
    9 9
     #pragma once
    
    10 10
     
    
    11 11
     #include "Rts.h"
    
    12
    -#include "RtsSymbols.h"
    
    13 12
     #include "Hash.h"
    
    14 13
     #include "linker/M32Alloc.h"
    
    15 14
     #include "linker/ProddableBlocks.h"
    

  • rts/RtsSymbols.c
    ... ... @@ -8,7 +8,9 @@
    8 8
     
    
    9 9
     #include "ghcplatform.h"
    
    10 10
     #include "Rts.h"
    
    11
    +#include "RtsUtils.h"
    
    11 12
     #include "RtsSymbols.h"
    
    13
    +#include "RtsUtils.h"
    
    12 14
     #include "LinkerInternals.h"
    
    13 15
     #include "PathUtils.h"
    
    14 16
     
    
    ... ... @@ -480,6 +482,7 @@ extern char **environ;
    480 482
           RTS_TICKY_SYMBOLS                                                 \
    
    481 483
           RTS_PROF_SYMBOLS                                                  \
    
    482 484
           RTS_LIBDW_SYMBOLS                                                 \
    
    485
    +      SymI_HasProto(getRtsSymbols)                                          \
    
    483 486
           SymI_HasProto(StgReturn)                                          \
    
    484 487
           SymI_HasDataProto(ghc_hs_iface)                                       \
    
    485 488
           SymI_HasDataProto(stg_gc_noregs)                                      \
    
    ... ... @@ -1217,13 +1220,13 @@ RTS_SYMBOLS_PRIM
    1217 1220
     /* See Note [Naming Scheme for Symbol Macros] */
    
    1218 1221
     
    
    1219 1222
     #define SymI_HasProto(vvv) { MAYBE_LEADING_UNDERSCORE_STR(#vvv), \
    
    1220
    -                    (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_CODE },
    
    1223
    +                    (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_CODE, NULL },
    
    1221 1224
     #define SymI_HasDataProto(vvv) { MAYBE_LEADING_UNDERSCORE_STR(#vvv), \
    
    1222
    -                    (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_DATA },
    
    1225
    +                    (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_DATA, NULL },
    
    1223 1226
     #define SymE_HasProto(vvv) { MAYBE_LEADING_UNDERSCORE_STR(#vvv), \
    
    1224
    -            (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_CODE },
    
    1227
    +            (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_CODE | SYM_TYPE_EXTERNAL, NULL },
    
    1225 1228
     #define SymE_HasDataProto(vvv) { MAYBE_LEADING_UNDERSCORE_STR(#vvv), \
    
    1226
    -            (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_DATA },
    
    1229
    +            (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_DATA | SYM_TYPE_EXTERNAL, NULL },
    
    1227 1230
     
    
    1228 1231
     #define SymI_NeedsProto(vvv) SymI_HasProto(vvv)
    
    1229 1232
     #define SymI_NeedsDataProto(vvv) SymI_HasDataProto(vvv)
    
    ... ... @@ -1234,44 +1237,42 @@ RTS_SYMBOLS_PRIM
    1234 1237
     // another symbol.  See newCAF/newRetainedCAF/newGCdCAF for an example.
    
    1235 1238
     #define SymI_HasProto_redirect(vvv,xxx,strength,ty) \
    
    1236 1239
         { MAYBE_LEADING_UNDERSCORE_STR(#vvv),    \
    
    1237
    -      (void*)(&(xxx)), strength, ty },
    
    1240
    +      (void*)(&(xxx)), strength, ty, MAYBE_LEADING_UNDERSCORE_STR(#xxx) },
    
    1238 1241
     
    
    1242
    +// Allocate and return an array of rts symbols.
    
    1243
    +// The final element marks the end of the array and has `.lbl=NULL`.
    
    1244
    +// The caller must free the array.
    
    1245
    +RtsSymbolVal const * getRtsSymbols(void) {
    
    1246
    +      /* The address of data symbols with the dllimport attribute are not
    
    1247
    +      * compile-time constants and so cannot be used in constant initialisers.
    
    1248
    +      * For this reason, rtsSyms is a local variable within this function
    
    1249
    +      * rather than a global constant (as it was historically).
    
    1250
    +      */
    
    1251
    +      const RtsSymbolVal _rtsSyms[] = {
    
    1252
    +            RTS_SYMBOLS
    
    1253
    +            RTS_RET_SYMBOLS
    
    1254
    +            RTS_POSIX_ONLY_SYMBOLS
    
    1255
    +            RTS_MINGW_ONLY_SYMBOLS
    
    1256
    +            RTS_DARWIN_ONLY_SYMBOLS
    
    1257
    +            RTS_OPENBSD_ONLY_SYMBOLS
    
    1258
    +            RTS_LIBGCC_SYMBOLS
    
    1259
    +            RTS_ARCH_LIBGCC_SYMBOLS
    
    1260
    +            RTS_FINI_ARRAY_SYMBOLS
    
    1261
    +            RTS_LIBFFI_SYMBOLS
    
    1262
    +            RTS_ARM_OUTLINE_ATOMIC_SYMBOLS
    
    1263
    +            RTS_SYMBOLS_PRIM
    
    1264
    +            SymI_HasDataProto(nonmoving_write_barrier_enabled)
    
    1265
    +            { 0, 0, STRENGTH_NORMAL, SYM_TYPE_CODE, NULL } /* sentinel */
    
    1266
    +      };
    
    1239 1267
     
    
    1268
    +      RtsSymbolVal * rtsSyms = stgMallocBytes(sizeof(_rtsSyms), "getRtsSymbols");
    
    1269
    +      uint32_t i = 0;
    
    1270
    +      do {
    
    1271
    +            rtsSyms[i] = _rtsSyms[i];
    
    1272
    +            i++;
    
    1273
    +      } while (_rtsSyms[i-1].lbl != NULL);
    
    1240 1274
     
    
    1241
    -/* Initialize (if not already initialized) and return an array of symbols with stuff from the RTS. */
    
    1242
    -void initLinkerRtsSyms (StrHashTable *symhash) {
    
    1243
    -    /* The address of data symbols with the dllimport attribute are not
    
    1244
    -     * compile-time constants and so cannot be used in constant initialisers.
    
    1245
    -     * For this reason, rtsSyms is a local variable within this function
    
    1246
    -     * rather than a global constant (as it was historically).
    
    1247
    -     */
    
    1248
    -    const RtsSymbolVal rtsSyms[] = {
    
    1249
    -      RTS_SYMBOLS
    
    1250
    -      RTS_RET_SYMBOLS
    
    1251
    -      RTS_POSIX_ONLY_SYMBOLS
    
    1252
    -      RTS_MINGW_ONLY_SYMBOLS
    
    1253
    -      RTS_DARWIN_ONLY_SYMBOLS
    
    1254
    -      RTS_OPENBSD_ONLY_SYMBOLS
    
    1255
    -      RTS_LIBGCC_SYMBOLS
    
    1256
    -      RTS_ARCH_LIBGCC_SYMBOLS
    
    1257
    -      RTS_FINI_ARRAY_SYMBOLS
    
    1258
    -      RTS_LIBFFI_SYMBOLS
    
    1259
    -      RTS_ARM_OUTLINE_ATOMIC_SYMBOLS
    
    1260
    -      RTS_SYMBOLS_PRIM
    
    1261
    -      SymI_HasDataProto(nonmoving_write_barrier_enabled)
    
    1262
    -      { 0, 0, STRENGTH_NORMAL, SYM_TYPE_CODE } /* sentinel */
    
    1263
    -    };
    
    1264
    -
    
    1265
    -    IF_DEBUG(linker, debugBelch("populating linker symbol table with built-in RTS symbols\n"));
    
    1266
    -    for (const RtsSymbolVal *sym = rtsSyms; sym->lbl != NULL; sym++) {
    
    1267
    -        IF_DEBUG(linker, debugBelch("initLinker: inserting rts symbol %s, %p\n", sym->lbl, sym->addr));
    
    1268
    -        if (! ghciInsertSymbolTable(WSTR("(GHCi built-in symbols)"),
    
    1269
    -                                    symhash, sym->lbl, sym->addr,
    
    1270
    -                                    sym->strength, sym->type, 0, NULL)) {
    
    1271
    -            barf("ghciInsertSymbolTable failed");
    
    1272
    -        }
    
    1273
    -    }
    
    1274
    -    IF_DEBUG(linker, debugBelch("done with built-in RTS symbols\n"));
    
    1275
    +      return rtsSyms;
    
    1275 1276
     }
    
    1276 1277
     
    
    1277 1278
     
    
    ... ... @@ -1355,7 +1356,7 @@ void initLinkerRtsSyms (StrHashTable *symhash) {
    1355 1356
     //          CODE_SYM(getauxval)
    
    1356 1357
     //          CODE_SYM(posix_spawn_file_actions_init)
    
    1357 1358
     //          ...
    
    1358
    -//          { 0, 0, STRENGTH_NORMAL, SYM_TYPE_CODE } /* sentinel */
    
    1359
    +//          { 0, 0, STRENGTH_NORMAL, SYM_TYPE_CODE, NULL } /* sentinel */
    
    1359 1360
     //      };
    
    1360 1361
     //
    
    1361 1362
     //      RtsSymbolVal* rtsExtraSyms() {
    
    ... ... @@ -1368,7 +1369,7 @@ void initLinkerRtsSyms (StrHashTable *symhash) {
    1368 1369
     //
    
    1369 1370
     
    
    1370 1371
     static RtsSymbolVal default_extra_syms[] = {
    
    1371
    -      { 0, 0, STRENGTH_NORMAL, SYM_TYPE_CODE } /* sentinel */
    
    1372
    +      { 0, 0, STRENGTH_NORMAL, SYM_TYPE_CODE, NULL } /* sentinel */
    
    1372 1373
     };
    
    1373 1374
     
    
    1374 1375
     /* Default empty extra RTS symbols. See Note[Extra RTS symbols] */
    

  • rts/RtsSymbols.h
    ... ... @@ -9,6 +9,7 @@
    9 9
     #pragma once
    
    10 10
     
    
    11 11
     #include "ghcautoconf.h"
    
    12
    +#include "rts/RtsSymbols.h"
    
    12 13
     
    
    13 14
     #if defined(LEADING_UNDERSCORE)
    
    14 15
     #define MAYBE_LEADING_UNDERSCORE_STR(s) ("_" s)
    
    ... ... @@ -16,36 +17,6 @@
    16 17
     #define MAYBE_LEADING_UNDERSCORE_STR(s) (s)
    
    17 18
     #endif
    
    18 19
     
    
    19
    -typedef void SymbolAddr;
    
    20
    -typedef char SymbolName;
    
    21
    -
    
    22
    -/* What kind of thing a symbol identifies. We need to know this to determine how
    
    23
    - * to process overflowing relocations. See Note [Processing overflowed relocations].
    
    24
    - * This is bitfield however only the option SYM_TYPE_DUP_DISCARD can be combined
    
    25
    - * with the other values. */
    
    26
    -typedef enum _SymType {
    
    27
    -    SYM_TYPE_CODE = 1 << 0, /* the symbol is a function and can be relocated via a jump island */
    
    28
    -    SYM_TYPE_DATA = 1 << 1, /* the symbol is data */
    
    29
    -    SYM_TYPE_INDIRECT_DATA = 1 << 2, /* see Note [_iob_func symbol] */
    
    30
    -    SYM_TYPE_DUP_DISCARD = 1 << 3, /* the symbol is a symbol in a BFD import library
    
    31
    -                                      however if a duplicate is found with a mismatching
    
    32
    -                                      SymType then discard this one.  */
    
    33
    -    SYM_TYPE_HIDDEN = 1 << 4, /* the symbol is hidden and should not be exported */
    
    34
    -} SymType;
    
    35
    -
    
    36
    -typedef enum _SymStrength {
    
    37
    -    STRENGTH_NORMAL,
    
    38
    -    STRENGTH_WEAK,
    
    39
    -    STRENGTH_STRONG,
    
    40
    -} SymStrength;
    
    41
    -
    
    42
    -typedef struct _RtsSymbolVal {
    
    43
    -    const SymbolName* lbl;
    
    44
    -    SymbolAddr* addr;
    
    45
    -    SymStrength strength;
    
    46
    -    SymType type;
    
    47
    -} RtsSymbolVal;
    
    48
    -
    
    49 20
     extern RtsSymbolVal* __attribute__((weak)) rtsExtraSyms(void);
    
    50 21
     
    
    51 22
     /* See Note [_iob_func symbol].  */
    

  • rts/include/Rts.h
    ... ... @@ -271,6 +271,7 @@ void _warnFail(const char *filename, unsigned int linenum);
    271 271
     #include "rts/StaticPtrTable.h"
    
    272 272
     #include "rts/Libdw.h"
    
    273 273
     #include "rts/LibdwPool.h"
    
    274
    +#include "rts/RtsSymbols.h"
    
    274 275
     
    
    275 276
     /* Misc stuff without a home */
    
    276 277
     extern char **prog_argv; /* so we can get at these from Haskell */
    

  • rts/include/rts/RtsSymbols.h
    1
    +/* -----------------------------------------------------------------------------
    
    2
    + *
    
    3
    + * (c) The GHC Team, 2000-2015
    
    4
    + *
    
    5
    + * RTS Symbols
    
    6
    + *
    
    7
    + * ---------------------------------------------------------------------------*/
    
    8
    +
    
    9
    +#pragma once
    
    10
    +
    
    11
    +#include <stdbool.h>
    
    12
    +typedef void SymbolAddr;
    
    13
    +typedef char SymbolName;
    
    14
    +
    
    15
    +/* What kind of thing a symbol identifies. We need to know this to determine how
    
    16
    + * to process overflowing relocations. See Note [Processing overflowed relocations].
    
    17
    + * This is bitfield however only the option SYM_TYPE_DUP_DISCARD can be combined
    
    18
    + * with the other values. */
    
    19
    +typedef enum _SymType {
    
    20
    +    SYM_TYPE_CODE = 1 << 0, /* the symbol is a function and can be relocated via a jump island */
    
    21
    +    SYM_TYPE_DATA = 1 << 1, /* the symbol is data */
    
    22
    +    SYM_TYPE_INDIRECT_DATA = 1 << 2, /* see Note [_iob_func symbol] */
    
    23
    +    SYM_TYPE_DUP_DISCARD = 1 << 3, /* the symbol is a symbol in a BFD import library
    
    24
    +                                      however if a duplicate is found with a mismatching
    
    25
    +                                      SymType then discard this one.  */
    
    26
    +    SYM_TYPE_HIDDEN = 1 << 4, /* the symbol is hidden and should not be exported */
    
    27
    +    SYM_TYPE_EXTERNAL = 1 << 5, /* the symbol is defined externally to the RTS library. It might be linked
    
    28
    +                                   dynamically. This corresponds to SymE_* in RtsSymbols.c */
    
    29
    +} SymType;
    
    30
    +
    
    31
    +typedef enum _SymStrength {
    
    32
    +    STRENGTH_NORMAL,
    
    33
    +    STRENGTH_WEAK,
    
    34
    +    STRENGTH_STRONG,
    
    35
    +} SymStrength;
    
    36
    +
    
    37
    +typedef struct _RtsSymbolVal {
    
    38
    +    const SymbolName* lbl;
    
    39
    +    SymbolAddr* addr;
    
    40
    +    SymStrength strength;
    
    41
    +    SymType type;
    
    42
    +    // If this is a redirection, then this is the lable of the
    
    43
    +    // target symbol. Otherwise NULL.
    
    44
    +    const SymbolName* lbl_redirect_target;
    
    45
    +} RtsSymbolVal;
    
    46
    +
    
    47
    +RtsSymbolVal const * getRtsSymbols(void);

  • rts/rts.cabal
    ... ... @@ -306,6 +306,7 @@ library
    306 306
                             rts/Profiling.h
    
    307 307
                             rts/IPE.h
    
    308 308
                             rts/PosixSource.h
    
    309
    +                        rts/RtsSymbols.h
    
    309 310
                             rts/Signals.h
    
    310 311
                             rts/SpinLock.h
    
    311 312
                             rts/StableName.h
    

  • testsuite/driver/runtests.py
    ... ... @@ -284,32 +284,36 @@ def format_path(path):
    284 284
     # On Windows we need to set $PATH to include the paths to all the DLLs
    
    285 285
     # in order for the dynamic library tests to work.
    
    286 286
     if windows:
    
    287
    +    # Add mingw to PATH
    
    288
    +    topdir = config.libdir
    
    289
    +    mingw = os.path.abspath(os.path.join(topdir, '../mingw/bin'))
    
    290
    +    mingw = format_path(mingw)
    
    291
    +    ghc_env['PATH'] = os.pathsep.join([ghc_env.get("PATH", ""), mingw])
    
    292
    +
    
    293
    +    # Add ghc packages to PATH
    
    287 294
         try:
    
    288
    -        pkginfo = getStdout([config.ghc_pkg, 'dump'])
    
    295
    +        pkgs = getStdout([config.ghc_pkg, '--simple-output', 'list'])
    
    289 296
         except FileNotFoundError as err:
    
    290 297
             # This can happen when we are only running tests which don't depend on ghc (ie linters)
    
    291 298
             # In that case we probably haven't built ghc-pkg yet so this query will fail.
    
    292 299
             print (err)
    
    293 300
             print ("Failed to call ghc-pkg for windows path modification... some tests might fail")
    
    294
    -        pkginfo = ""
    
    295
    -    topdir = config.libdir
    
    296
    -    mingw = os.path.abspath(os.path.join(topdir, '../mingw/bin'))
    
    297
    -    mingw = format_path(mingw)
    
    298
    -    ghc_env['PATH'] = os.pathsep.join([ghc_env.get("PATH", ""), mingw])
    
    299
    -    for line in pkginfo.split('\n'):
    
    300
    -        if line.startswith('library-dirs:'):
    
    301
    -            path = line.rstrip()
    
    302
    -            path = str_removeprefix(path, 'library-dirs: ')
    
    303
    -            # Use string.replace instead of re.sub, because re.sub
    
    304
    -            # interprets backslashes in the replacement string as
    
    305
    -            # escape sequences.
    
    306
    -            path = path.replace('$topdir', topdir)
    
    301
    +        pkgs = ""
    
    302
    +
    
    303
    +    newPaths = set()
    
    304
    +    pkgs = pkgs.split(' ')
    
    305
    +    for pkg in pkgs:
    
    306
    +        for field in ['library-dirs', 'dynamic-library-dirs']:
    
    307
    +            path = getStdout([config.ghc_pkg, '--simple-output', 'field', pkg, field])
    
    308
    +            path = path.strip()
    
    307 309
                 if path.startswith('"'):
    
    308 310
                     path = re.sub('^"(.*)"$', '\\1', path)
    
    309 311
                     path = re.sub('\\\\(.)', '\\1', path)
    
    312
    +            path = format_path(path)
    
    313
    +            newPaths.add(path)
    
    310 314
     
    
    311
    -                path = format_path(path)
    
    312
    -                ghc_env['PATH'] = os.pathsep.join([path, ghc_env.get("PATH", "")])
    
    315
    +    for path in newPaths:
    
    316
    +        ghc_env['PATH'] = os.pathsep.join([path, ghc_env.get("PATH", "")])
    
    313 317
     
    
    314 318
     testopts_ctx_var.set(TestOptions())
    
    315 319
     
    

  • testsuite/driver/testglobals.py
    ... ... @@ -182,6 +182,9 @@ class TestConfig:
    182 182
             # Is gdb available?
    
    183 183
             self.have_gdb = False
    
    184 184
     
    
    185
    +        # Is ldd available?
    
    186
    +        self.have_ldd = False
    
    187
    +
    
    185 188
             # Is readelf available?
    
    186 189
             self.have_readelf = False
    
    187 190
     
    

  • testsuite/driver/testlib.py
    ... ... @@ -1091,6 +1091,9 @@ def debug_rts( ) -> bool:
    1091 1091
     def have_gdb( ) -> bool:
    
    1092 1092
         return config.have_gdb
    
    1093 1093
     
    
    1094
    +def have_ldd( ) -> bool:
    
    1095
    +    return config.have_ldd
    
    1096
    +
    
    1094 1097
     def have_readelf( ) -> bool:
    
    1095 1098
         return config.have_readelf
    
    1096 1099
     
    
    ... ... @@ -1931,7 +1934,9 @@ async def makefile_test( name, way, target=None ):
    1931 1934
         if target is None:
    
    1932 1935
             target = name
    
    1933 1936
     
    
    1934
    -    cmd = '$MAKE -s --no-print-directory {target}'.format(target=target)
    
    1937
    +    way_flags = '"' + ' '.join(config.way_flags[way]).replace('"', '\\"') + '"'
    
    1938
    +
    
    1939
    +    cmd = '$MAKE -s --no-print-directory WAY_FLAGS={way_flags} {target}'.format(target=target, way_flags=way_flags)
    
    1935 1940
         return await run_command(name, way, cmd)
    
    1936 1941
     
    
    1937 1942
     # -----------------------------------------------------------------------------
    

  • testsuite/mk/test.mk
    ... ... @@ -107,6 +107,7 @@ RUNTEST_OPTS += -e "config.tables_next_to_code=False"
    107 107
     endif
    
    108 108
     
    
    109 109
     HAVE_GDB := $(shell if gdb --version > /dev/null 2> /dev/null; then echo YES; else echo NO; fi)
    
    110
    +HAVE_LDD := $(shell if ldd --version > /dev/null 2> /dev/null; then echo YES; else echo NO; fi)
    
    110 111
     HAVE_READELF := $(shell if readelf --version > /dev/null 2> /dev/null; then echo YES; else echo NO; fi)
    
    111 112
     
    
    112 113
     # Detect whether the fast (GMP) bignum backend is in use. The GMP backend module
    
    ... ... @@ -154,6 +155,12 @@ else
    154 155
     RUNTEST_OPTS += -e config.have_gdb=False
    
    155 156
     endif
    
    156 157
     
    
    158
    +ifeq "$(HAVE_LDD)" "YES"
    
    159
    +RUNTEST_OPTS += -e config.have_ldd=True
    
    160
    +else
    
    161
    +RUNTEST_OPTS += -e config.have_ldd=False
    
    162
    +endif
    
    163
    +
    
    157 164
     ifeq "$(HAVE_READELF)" "YES"
    
    158 165
     RUNTEST_OPTS += -e config.have_readelf=True
    
    159 166
     else
    

  • testsuite/tests/ghci/linking/T25155_iserv_main.c
    ... ... @@ -23,7 +23,7 @@ int main (int argc, char *argv[])
    23 23
     // can use the FFI call to foobar in a TH splice.
    
    24 24
     
    
    25 25
     #define SymI_HasProto(vvv) { MAYBE_LEADING_UNDERSCORE_STR(#vvv), \
    
    26
    -                    (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_CODE },
    
    26
    +                    (void*)(&(vvv)), STRENGTH_NORMAL, SYM_TYPE_CODE, NULL },
    
    27 27
     
    
    28 28
     
    
    29 29
     void foobar(int x) {
    

  • testsuite/tests/rts/symbols/Main.hs
    1
    +import qualified Data.Map.Lazy as M
    
    2
    +import qualified Data.Set as S
    
    3
    +import Data.List (isSuffixOf, stripPrefix)
    
    4
    +import Data.Maybe (mapMaybe)
    
    5
    +import System.Environment (getArgs)
    
    6
    +
    
    7
    +-- Symbols to be ignored. These are symbols that are gated on CPP ant not correctly
    
    8
    +-- specified in RtsSymbols.c. This means the symbol will sometimes appear in the
    
    9
    +-- test output and sometimes not (depending on CPP defines). That means we can't
    
    10
    +-- simply put those symbols into the expected test output. It's already the
    
    11
    +-- job of RtsSymbols.c to declare symbols correctly in accordance with CPP. We
    
    12
    +-- want to avoid copying that logic again in the test. So we just ignore some
    
    13
    +-- symbols so that CI can pass and in the future we aim to fix RtsSymbols.c and
    
    14
    +-- reduce the size of ignoreSymbols.
    
    15
    +ignoreSymbols :: S.Set String
    
    16
    +ignoreSymbols = S.fromList [
    
    17
    +      -- These are defined in libgcc. RtsSymbols.c declare them with some
    
    18
    +      -- surrounding CPP but there seems to be differences between CI jobs.
    
    19
    +      -- See:
    
    20
    +      --   https://gitlab.haskell.org/ghc/ghc/-/jobs/2679828
    
    21
    +      --   https://gitlab.haskell.org/ghc/ghc/-/jobs/2679827
    
    22
    +      "__ashldi3",
    
    23
    +      "__ashrdi3",
    
    24
    +      "__divdi3",
    
    25
    +      "__fixunsdfdi",
    
    26
    +      "__lshrdi3",
    
    27
    +      "__moddi3",
    
    28
    +      "__muldi3",
    
    29
    +      "__udivdi3",
    
    30
    +      "__udivti3",
    
    31
    +      "__umoddi3",
    
    32
    +      "__umodti3",
    
    33
    +
    
    34
    +      -- These may be a CPP mismatch between rts/prim/vectorQuotRem.c and RtsSymbols.c
    
    35
    +      "hs_quotInt16X8",
    
    36
    +      "hs_quotInt32X4",
    
    37
    +      "hs_quotInt64X2",
    
    38
    +      "hs_quotInt8X16",
    
    39
    +      "hs_quotWord16X8",
    
    40
    +      "hs_quotWord32X4",
    
    41
    +      "hs_quotWord64X2",
    
    42
    +      "hs_quotWord8X16",
    
    43
    +      "hs_remInt16X8",
    
    44
    +      "hs_remInt32X4",
    
    45
    +      "hs_remInt64X2",
    
    46
    +      "hs_remInt8X16",
    
    47
    +      "hs_remWord16X8",
    
    48
    +      "hs_remWord32X4",
    
    49
    +      "hs_remWord64X2",
    
    50
    +      "hs_remWord8X16",
    
    51
    +
    
    52
    +      -- Appears in threaded RTS but not vanilla RTS (-Declared)
    
    53
    +      "atomic_dec",
    
    54
    +
    
    55
    +      -- Appears in threaded RTS but not vanilla RTS (+Observed)
    
    56
    +      "acquire_spin_lock_slow_path",
    
    57
    +      "busy_wait_nop",
    
    58
    +      "cas_seq_cst_relaxed",
    
    59
    +      "concurrent_coll_finished_cond",
    
    60
    +      "concurrent_coll_lock",
    
    61
    +      "concurrent_mark_roots",
    
    62
    +      "concurrent_worker_state",
    
    63
    +      "concurrent_worker_thread",
    
    64
    +      "gc_alloc_block_sync",
    
    65
    +      "globalStoreLock",
    
    66
    +      "linker_mutex",
    
    67
    +      "rts_pausing_task",
    
    68
    +      "start_concurrent_mark_cond",
    
    69
    +      "stats_mutex",
    
    70
    +      "stop_concurrent_worker",
    
    71
    +      "xchg",
    
    72
    +
    
    73
    +      -- Appears in debug RTS but not vanilla RTS (+Observed)
    
    74
    +      "RIGHT_ARITY_1",
    
    75
    +      "RIGHT_ARITY_2",
    
    76
    +      "SLOW_CALLS_1",
    
    77
    +      "SLOW_CALLS_2",
    
    78
    +      "TAGGED_PTR_1",
    
    79
    +      "TAGGED_PTR_2",
    
    80
    +      "TOTAL_CALLS",
    
    81
    +      "_bdescr",
    
    82
    +      "checkPtrInArena",
    
    83
    +      "findPtr",
    
    84
    +      "findSlop",
    
    85
    +      "ghci_enquire",
    
    86
    +      "insert_down_count",
    
    87
    +      "isHeapAlloced",
    
    88
    +      "leftify_up_shortcut_count",
    
    89
    +      "leftify_up_to_count",
    
    90
    +      "merge_down_count",
    
    91
    +      "nonmovingGcCafs",
    
    92
    +      "printAllTasks",
    
    93
    +      "printIPE",
    
    94
    +      "searched",
    
    95
    +      "whitehole_executeMessage_spin",
    
    96
    +      "whitehole_lockClosure_spin",
    
    97
    +      "whitehole_lockClosure_yield",
    
    98
    +      "whitehole_threadPaused_spin",
    
    99
    +
    
    100
    +      -- Uncategorized symbols
    
    101
    +      "_fini",
    
    102
    +      "_init",
    
    103
    +      "complex_ccall_adjustor_template",
    
    104
    +      "decodeAddendAarch64",
    
    105
    +      "encodeAddendAarch64",
    
    106
    +      "findStub",
    
    107
    +      "flushInstructionCache",
    
    108
    +      "flushInstructionCacheAarch64",
    
    109
    +      "freeStubs",
    
    110
    +      "instSizeAarch64",
    
    111
    +      "isAddSub",
    
    112
    +      "isAdrp",
    
    113
    +      "isBranch",
    
    114
    +      "isBranchLink",
    
    115
    +      "isLoadStore",
    
    116
    +      "isVectorOp",
    
    117
    +      "makeStub",
    
    118
    +      "makeStubAarch64",
    
    119
    +      "mblock_address_space",
    
    120
    +      "mblock_map",
    
    121
    +      "needStubForRelaAarch64",
    
    122
    +      "needStubForRelAarch64",
    
    123
    +      "numberOfStubsForSection",
    
    124
    +      "relocateObjectCode",
    
    125
    +      "relocateObjectCodeAarch64",
    
    126
    +      "simple_ccall_adjustor_template",
    
    127
    +      "StgReturn",
    
    128
    +      "stubSizeAarch64"
    
    129
    +   ]
    
    130
    +
    
    131
    +main :: IO ()
    
    132
    +main = do
    
    133
    +   args <- getArgs
    
    134
    +   case args of
    
    135
    +      ["dump"] -> dumpDeclaredSymbols
    
    136
    +      ["diff", declaredSymbolsFile, observedSymbolsFile] -> do
    
    137
    +
    
    138
    +         let symbolFilter :: String -> CodeOrData -> Bool
    
    139
    +             symbolFilter name cd =
    
    140
    +               -- Not in ingore list
    
    141
    +               not (S.member name ignoreSymbols)
    
    142
    +               -- Doesn't look like a entry/return code symbol
    
    143
    +               -- (These can appear in unregisterd builds wihere tables next to code is disabled)
    
    144
    +               && not ("_entry" `isSuffixOf` name && cd == Code)
    
    145
    +               && not ("_ret"   `isSuffixOf` name && cd == Code)
    
    146
    +
    
    147
    +         declaredSymbolsStr <- readFile declaredSymbolsFile
    
    148
    +         observedSymbolsStr <- readFile observedSymbolsFile
    
    149
    +
    
    150
    +         let declaredSymbols = M.filterWithKey symbolFilter $ readCodeOrData <$> linePairs declaredSymbolsStr
    
    151
    +         let observedSymbols = M.filterWithKey symbolFilter $ parseReadelf observedSymbolsStr
    
    152
    +
    
    153
    +         let diffStr = diff declaredSymbols observedSymbols
    
    154
    +         -- writeFile "<ghc root>/testsuite/tests/rts/symbols/rts-check-symbols.stdout"
    
    155
    +         putStrLn diffStr
    
    156
    +
    
    157
    +      _ -> fail ("Unexpected arguments: " ++ show args)
    
    158
    +
    
    159
    +foreign import ccall "dumpDeclaredSymbols"
    
    160
    +   dumpDeclaredSymbols :: IO ()
    
    161
    +
    
    162
    +data CodeOrData = Code | Data
    
    163
    +   deriving (Show, Eq)
    
    164
    +
    
    165
    +-- Compare observedSymbols (symbols observed in the DSO) to declaredSymbols
    
    166
    +-- (symbols declared in RtsSymbols.c)
    
    167
    +diff :: M.Map String CodeOrData -> M.Map String CodeOrData -> String
    
    168
    +diff declaredSymbols observedSymbols = unlines $
    
    169
    +      [ "Symbols declared in RtsSymbols.c but not observed in the DSO:" ]
    
    170
    +   ++ [ "Declared> " ++ k ++ " " ++ show v | (k, v) <- M.toList diffInDeclaredSymbols ]
    
    171
    +   ++ [ "" ]
    
    172
    +   ++ [ "Symbols observed in the DSO but not declared in RtsSymbols.c:" ]
    
    173
    +   ++ [ "Observed> " ++ k ++ " " ++ show v | (k, v) <- M.toList diffInObservedSymbols ]
    
    174
    +   ++ [ "" ]
    
    175
    +   ++ [ "Symbols observed in the DSO and declared in RtsSymbols.c but with conflicting type:" ]
    
    176
    +   ++ [ "WrongType> " ++ k ++ " (declared, observed): (" ++ show declared ++ ", " ++ show observed ++ ")"
    
    177
    +         | (k, (declared, observed)) <- M.toList diffOnType ]
    
    178
    +   where
    
    179
    +      -- Undeclared observed symbols
    
    180
    +      diffInObservedSymbols :: M.Map String CodeOrData
    
    181
    +      diffInObservedSymbols = observedSymbols M.\\ declaredSymbols
    
    182
    +
    
    183
    +      -- Declared unobserved symbols
    
    184
    +      diffInDeclaredSymbols :: M.Map String CodeOrData
    
    185
    +      diffInDeclaredSymbols = declaredSymbols M.\\ observedSymbols
    
    186
    +
    
    187
    +      -- Declared observed symbols with conflicting type
    
    188
    +      diffOnType :: M.Map String (CodeOrData, CodeOrData)
    
    189
    +      diffOnType = M.filter (\(a, b) -> a /= b) $ M.intersectionWith (,) declaredSymbols observedSymbols
    
    190
    +
    
    191
    +linePairs :: String -> M.Map String String
    
    192
    +linePairs = M.fromList . map (\str -> let [a,b] = words str in (a,b)) . filter (/= "") . lines
    
    193
    +
    
    194
    +readCodeOrData :: String -> CodeOrData
    
    195
    +readCodeOrData s = case s of
    
    196
    +   "code" -> Code
    
    197
    +   "data" -> Data
    
    198
    +   _ -> error ("Unknown symbol type: " ++ show s)
    
    199
    +
    
    200
    +-- | Parse the output of @readelf -W --dyn-syms@ of an ELF shared object.
    
    201
    +--
    
    202
    +-- Symbol lines look like:
    
    203
    +--
    
    204
    +-- >   Num:    Value          Size Type    Bind   Vis      Ndx Name
    
    205
    +-- >     2: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND tcsetattr@GLIBC_2.2.5 (2)
    
    206
    +-- >  1149: 000000000006d020   190 OBJECT  GLOBAL DEFAULT   12 stg_AP_info
    
    207
    +--
    
    208
    +-- Note that Vis may be followed by extra annotations on some platforms (e.g.
    
    209
    +-- @[<localentry>: 8]@ on ppc64le), so Ndx and Name are taken from the end of
    
    210
    +-- the line.
    
    211
    +parseReadelf :: String -> M.Map String CodeOrData
    
    212
    +parseReadelf = M.fromList . mapMaybe parseLine . lines
    
    213
    +   where
    
    214
    +      parseLine l = case words l of
    
    215
    +         (num : _value : _size : ty : bind : rest)
    
    216
    +            | ":" `isSuffixOf` num
    
    217
    +            , name : ndx : _ <- reverse (dropVersionIndex rest)
    
    218
    +            , bind == "GLOBAL"
    
    219
    +            , ndx /= "UND"  -- Imports
    
    220
    +            -> (,) name <$> typeToCodeOrData ty
    
    221
    +         _ -> Nothing
    
    222
    +
    
    223
    +      -- Drop the trailing version index e.g. "(2)"
    
    224
    +      dropVersionIndex ws = case reverse ws of
    
    225
    +         ('(' : _) : ws' -> reverse ws'
    
    226
    +         _ -> ws
    
    227
    +
    
    228
    +      -- Returns Nothing if the symbol should be ignored
    
    229
    +      typeToCodeOrData :: String -> Maybe CodeOrData
    
    230
    +      typeToCodeOrData ty = case ty of
    
    231
    +         "FILE"   -> Nothing
    
    232
    +         "NOTYPE" -> Nothing
    
    233
    +         "FUNC"   -> Just Code
    
    234
    +         "OBJECT" -> Just Data
    
    235
    +         _ -> error ("Unknown symbol type: " ++ show ty)
    \ No newline at end of file

  • testsuite/tests/rts/symbols/Makefile
    1
    +TOP=../../..
    
    2
    +include $(TOP)/mk/boilerplate.mk
    
    3
    +include $(TOP)/mk/test.mk
    
    4
    +
    
    5
    +# This makefile rule only exists because TEST_HC is set in boilerplate.mk
    
    6
    +# and otherwise the TEST_HC variable wouldn't be set in the context of the bash script
    
    7
    +rts-check-symbols:
    
    8
    +	TOP="$(TOP)" \
    
    9
    +	TEST_HC_OPTS="$(TEST_HC_OPTS)" \
    
    10
    +	TEST_HC="$(TEST_HC)" \
    
    11
    +	WAY_FLAGS="$(WAY_FLAGS)" \
    
    12
    +	./rts-check-symbols.sh

  • testsuite/tests/rts/symbols/all.T
    1
    +test('rts-check-symbols', [
    
    2
    +    unless(opsys('linux') and have_dynamic() and have_readelf() and have_ldd(), skip),
    
    3
    +    windows_skip,
    
    4
    +    # extra ways are important to test over different RTS DSOs
    
    5
    +    extra_ways([
    
    6
    +        'threaded1',    # threaded + debug
    
    7
    +        'threaded2',    # threaded
    
    8
    +        'sanity'        # debug
    
    9
    +    ]),
    
    10
    +    extra_files([
    
    11
    +        'dumpDeclaredSymbols.c',
    
    12
    +        'Main.hs',
    
    13
    +        'rts-check-symbols.sh'
    
    14
    +    ])],
    
    15
    +    makefile_test,
    
    16
    +    []
    
    17
    +)

  • testsuite/tests/rts/symbols/dumpDeclaredSymbols.c
    1
    +
    
    2
    +#include "Rts.h"
    
    3
    +
    
    4
    +#include <stdio.h>
    
    5
    +
    
    6
    +void dumpDeclaredSymbols(void);
    
    7
    +
    
    8
    +void dumpDeclaredSymbols(void) {
    
    9
    +    const RtsSymbolVal * declaredSyms = getRtsSymbols();
    
    10
    +    for (const RtsSymbolVal * sym = &declaredSyms[0]; sym->lbl; sym++) {
    
    11
    +        // Ignore hidden
    
    12
    +        if (sym->type & SYM_TYPE_HIDDEN) continue;
    
    13
    +
    
    14
    +        // Ignore external symbols
    
    15
    +        if (sym->type & SYM_TYPE_EXTERNAL) continue;
    
    16
    +
    
    17
    +        char * type = NULL;
    
    18
    +        if (sym->type & SYM_TYPE_CODE) {
    
    19
    +            type = "code";
    
    20
    +        } else if (sym->type & (SYM_TYPE_DATA | SYM_TYPE_INDIRECT_DATA)) {
    
    21
    +            type = "data";
    
    22
    +        }
    
    23
    +
    
    24
    +        const char * lbl = NULL;
    
    25
    +        if (sym->lbl_redirect_target) {
    
    26
    +            // In the case of redirects, the true symbol name is lbl_redirect_target
    
    27
    +            lbl = sym->lbl_redirect_target;
    
    28
    +        } else {
    
    29
    +            lbl = sym->lbl;
    
    30
    +        }
    
    31
    +
    
    32
    +        if (type) {
    
    33
    +            printf("%s %s\n", lbl, type);
    
    34
    +        }
    
    35
    +    }
    
    36
    +    free((void*)declaredSyms);
    
    37
    +}

  • testsuite/tests/rts/symbols/rts-check-symbols.sh
    1
    +#!/usr/bin/env bash
    
    2
    +
    
    3
    +$TEST_HC $TEST_HC_OPTS      \
    
    4
    +    -package containers     \
    
    5
    +    -dynamic                \
    
    6
    +    dumpDeclaredSymbols.c   \
    
    7
    +    -I$TOP/../rts           \
    
    8
    +    -I$TOP/../rts/include   \
    
    9
    +    $WAY_FLAGS              \
    
    10
    +    Main.hs                 \
    
    11
    +    -o Main                 \
    
    12
    +    > /dev/null
    
    13
    +#
    
    14
    +# Check the diff between symbols exported from the RTS and those listed in RtsSymbols.c
    
    15
    +#
    
    16
    +
    
    17
    +DECLARED_SYMBOLS=declared_symbols.txt
    
    18
    +OBSERVED_SYMBOLS=observed_symbols.txt
    
    19
    +
    
    20
    +# Get rts Symbols listed in RtsSymbols.c
    
    21
    +./Main dump | sort > $DECLARED_SYMBOLS
    
    22
    +
    
    23
    +# Find the path of the RTS shared object that ./Main is linked against
    
    24
    +# Match e.g.:
    
    25
    +#    libHSrts-1.0.3-ghc9.15.20260710.so => /home/alice/s p a c e/myApp/lib/libHSrts-1.0.3-ghc9.15.20260710.so (0x7ffebc9a0000)
    
    26
    +RTS_DYLIB_PATH=$(ldd ./Main | awk '/^[[:space:]]*libHSrts-.* => .+$/ {
    
    27
    +    sub(/^[[:space:]]*libHSrts-.* => /, "")
    
    28
    +    sub(/ \([^(]*\)$/, "")
    
    29
    +    print
    
    30
    +}')
    
    31
    +
    
    32
    +# Dump the exported symbols. Main.hs is responsible for parsing the output.
    
    33
    +# The dynamic symbol table of the shared object. We use readelf rather
    
    34
    +# than nm as nm classifies symbols by section rather than by symbol
    
    35
    +# type, and with tables next to code info tables (objects) live in the
    
    36
    +# .text section.
    
    37
    +readelf -W --dyn-syms "$RTS_DYLIB_PATH" > $OBSERVED_SYMBOLS
    
    38
    +
    
    39
    +./Main diff $DECLARED_SYMBOLS $OBSERVED_SYMBOLS

  • testsuite/tests/rts/symbols/rts-check-symbols.stdout
    1
    +Symbols declared in RtsSymbols.c but not observed in the DSO:
    
    2
    +Declared> dirty_TVAR Code
    
    3
    +Declared> signal_handlers Code
    
    4
    +Declared> updateRemembSetPushThunk Code
    
    5
    +
    
    6
    +Symbols observed in the DSO but not declared in RtsSymbols.c:
    
    7
    +Observed> AP_STACK_sizeW Code
    
    8
    +Observed> AP_sizeW Code
    
    9
    +Observed> BLACKHOLE_sizeW Code
    
    10
    +Observed> Bdescr Code
    
    11
    +Observed> CHARLIKE_CLOSURE Code
    
    12
    +Observed> CONSTR_sizeW Code
    
    13
    +Observed> CONTINUATION_sizeW Code
    
    14
    +Observed> CON_INFO_PTR_TO_STRUCT Code
    
    15
    +Observed> FUN_INFO_PTR_TO_STRUCT Code
    
    16
    +Observed> FileEventLogWriter Data
    
    17
    +Observed> GET_CLOSURE_TAG Code
    
    18
    +Observed> GET_INFO Code
    
    19
    +Observed> GET_TAG Code
    
    20
    +Observed> INFO_PTR_TO_STRUCT Code
    
    21
    +Observed> INTLIKE_CLOSURE Code
    
    22
    +Observed> LOOKS_LIKE_CLOSURE_PTR Code
    
    23
    +Observed> LOOKS_LIKE_INFO_PTR Code
    
    24
    +Observed> LOOKS_LIKE_INFO_PTR_NOT_NULL Code
    
    25
    +Observed> LOOKS_LIKE_PTR Code
    
    26
    +Observed> NullEventLogWriter Data
    
    27
    +Observed> OS_TRY_ACQUIRE_LOCK Code
    
    28
    +Observed> PAP_sizeW Code
    
    29
    +Observed> RET_INFO_PTR_TO_STRUCT Code
    
    30
    +Observed> SET_INFO Code
    
    31
    +Observed> SET_INFO_RELAXED Code
    
    32
    +Observed> SET_INFO_RELEASE Code
    
    33
    +Observed> STATIC_LINK Code
    
    34
    +Observed> TAG_CLOSURE Code
    
    35
    +Observed> THUNK_INFO_PTR_TO_STRUCT Code
    
    36
    +Observed> THUNK_SELECTOR_sizeW Code
    
    37
    +Observed> UNTAG_CLOSURE Code
    
    38
    +Observed> UNTAG_CONST_CLOSURE Code
    
    39
    +Observed> UPD_BH_UPDATABLE_ctr Data
    
    40
    +Observed> __rts_fopen Code
    
    41
    +Observed> _warnFail Code
    
    42
    +Observed> addInitFini Code
    
    43
    +Observed> addProddableBlock Code
    
    44
    +Observed> allocAlignedGroupOnNode Code
    
    45
    +Observed> allocBlock Code
    
    46
    +Observed> allocBlockOnNode Code
    
    47
    +Observed> allocBlockOnNode_lock Code
    
    48
    +Observed> allocBlock_lock Code
    
    49
    +Observed> allocGroup Code
    
    50
    +Observed> allocGroupOnNode Code
    
    51
    +Observed> allocGroupOnNode_lock Code
    
    52
    +Observed> allocGroup_lock Code
    
    53
    +Observed> allocLimitKill Data
    
    54
    +Observed> allocLimitRunHook Data
    
    55
    +Observed> allocMBlockAlignedGroupOnNode Code
    
    56
    +Observed> allocateMightFail Code
    
    57
    +Observed> allocatePinned Code
    
    58
    +Observed> allocated_bytes_at_heapoverflow Data
    
    59
    +Observed> ap_sizeW Code
    
    60
    +Observed> ap_stack_sizeW Code
    
    61
    +Observed> arr_words_sizeW Code
    
    62
    +Observed> arr_words_words Code
    
    63
    +Observed> backtraceFree Code
    
    64
    +Observed> bco_sizeW Code
    
    65
    +Observed> broadcastCondition Code
    
    66
    +Observed> cas_word8 Code
    
    67
    +Observed> checkProddableBlock Code
    
    68
    +Observed> checkVectorSupport Code
    
    69
    +Observed> clearImportSymbol Code
    
    70
    +Observed> closeCondition Code
    
    71
    +Observed> closeMutex Code
    
    72
    +Observed> closure_sizeW Code
    
    73
    +Observed> collect_pointers Code
    
    74
    +Observed> compact_nfdata_full_sizeW Code
    
    75
    +Observed> containsSpan Code
    
    76
    +Observed> continuation_sizeW Code
    
    77
    +Observed> createAttachedOSThread Code
    
    78
    +Observed> createGenThread Code
    
    79
    +Observed> createIOThread Code
    
    80
    +Observed> createOSThread Code
    
    81
    +Observed> createStrictIOThread Code
    
    82
    +Observed> createThread Code
    
    83
    +Observed> currentWorkerCount Data
    
    84
    +Observed> debugMsgFn Data
    
    85
    +Observed> dequeElements Code
    
    86
    +Observed> dirty_STACK Code
    
    87
    +Observed> dirty_TSO Code
    
    88
    +Observed> discardElements Code
    
    89
    +Observed> era Data
    
    90
    +Observed> errorMsgFn Data
    
    91
    +Observed> eventLogStatus Code
    
    92
    +Observed> eventTypes Data
    
    93
    +Observed> exitFn Data
    
    94
    +Observed> exitHeapOverflow Code
    
    95
    +Observed> exitHpc Code
    
    96
    +Observed> fatalInternalErrorFn Data
    
    97
    +Observed> fillGot Code
    
    98
    +Observed> findSymbol Code
    
    99
    +Observed> findSymbolTable Code
    
    100
    +Observed> flushExec Code
    
    101
    +Observed> formatClosureDescIpe Code
    
    102
    +Observed> freeAllMBlocks Code
    
    103
    +Observed> freeChain Code
    
    104
    +Observed> freeChain_lock Code
    
    105
    +Observed> freeGot Code
    
    106
    +Observed> freeGroup Code
    
    107
    +Observed> freeGroup_lock Code
    
    108
    +Observed> freeInitFiniList Code
    
    109
    +Observed> freeMBlocks Code
    
    110
    +Observed> freeProddableBlocks Code
    
    111
    +Observed> freeThreadingResources Code
    
    112
    +Observed> freeWSDeque Code
    
    113
    +Observed> full_prog_argc Data
    
    114
    +Observed> full_prog_argv Data
    
    115
    +Observed> generations Data
    
    116
    +Observed> getFirstMBlock Code
    
    117
    +Observed> getMBlock Code
    
    118
    +Observed> getMBlockOnNode Code
    
    119
    +Observed> getMBlocks Code
    
    120
    +Observed> getMBlocksOnNode Code
    
    121
    +Observed> getNextMBlock Code
    
    122
    +Observed> getObjectLoadStatus Code
    
    123
    +Observed> get_con_itbl Code
    
    124
    +Observed> get_fun_itbl Code
    
    125
    +Observed> get_itbl Code
    
    126
    +Observed> get_itbl_acquire Code
    
    127
    +Observed> get_ret_itbl Code
    
    128
    +Observed> get_thunk_itbl Code
    
    129
    +Observed> heap_view_closurePtrs Code
    
    130
    +Observed> heap_view_closureSize Code
    
    131
    +Observed> heap_view_closure_ptrs_in_pap_payload Code
    
    132
    +Observed> highMemDynamic Data
    
    133
    +Observed> hs_main Code
    
    134
    +Observed> initAdjustors Code
    
    135
    +Observed> initBlockAllocator Code
    
    136
    +Observed> initCondition Code
    
    137
    +Observed> initGenerationStats Code
    
    138
    +Observed> initMBlocks Code
    
    139
    +Observed> initMutex Code
    
    140
    +Observed> initProddableBlockSet Code
    
    141
    +Observed> interp_shutdown Code
    
    142
    +Observed> interp_startup Code
    
    143
    +Observed> interruptOSThread Code
    
    144
    +Observed> isSymbolImport Code
    
    145
    +Observed> isSymbolWeak Code
    
    146
    +Observed> itbl_to_con_itbl Code
    
    147
    +Observed> itbl_to_fun_itbl Code
    
    148
    +Observed> itbl_to_ret_itbl Code
    
    149
    +Observed> itbl_to_thunk_itbl Code
    
    150
    +Observed> joinOSThread Code
    
    151
    +Observed> kernelThreadId Code
    
    152
    +Observed> libdwGetBacktrace Code
    
    153
    +Observed> libdwLookupLocation Code
    
    154
    +Observed> libdwPoolClear Code
    
    155
    +Observed> libdwPoolRelease Code
    
    156
    +Observed> libdwPoolTake Code
    
    157
    +Observed> listAllBlocks Code
    
    158
    +Observed> listThreads Code
    
    159
    +Observed> looksEmptyWSDeque Code
    
    160
    +Observed> lookupIPEId Code
    
    161
    +Observed> m32_free_page_pool Data
    
    162
    +Observed> m32_free_page_pool_size Data
    
    163
    +Observed> makeGot Code
    
    164
    +Observed> mblocks_allocated Data
    
    165
    +Observed> modules Data
    
    166
    +Observed> mpc_misses Data
    
    167
    +Observed> mutArrPtrsCard Code
    
    168
    +Observed> mutArrPtrsCardTableSize Code
    
    169
    +Observed> mutArrPtrsCards Code
    
    170
    +Observed> mut_arr_ptrs_sizeW Code
    
    171
    +Observed> n_alloc_blocks_by_node Data
    
    172
    +Observed> needGotSlot Code
    
    173
    +Observed> newCAF Code
    
    174
    +Observed> newGCdCAF Code
    
    175
    +Observed> newRetainedCAF Code
    
    176
    +Observed> newWSDeque Code
    
    177
    +Observed> next_nursery Data
    
    178
    +Observed> no_break_on_exception Data
    
    179
    +Observed> nonmovingAllocatorCensus Code
    
    180
    +Observed> nonmovingAllocatorCensusWithWords Code
    
    181
    +Observed> nonmovingPrintAllocatorCensus Code
    
    182
    +Observed> nonmovingSweep Code
    
    183
    +Observed> nonmovingSweepCompactObjects Code
    
    184
    +Observed> nonmovingSweepLargeObjects Code
    
    185
    +Observed> nonmovingSweepMutLists Code
    
    186
    +Observed> nonmovingSweepStableNameTable Code
    
    187
    +Observed> nonmovingTraceAllocatorCensus Code
    
    188
    +Observed> oldest_gen Data
    
    189
    +Observed> osThreadId Code
    
    190
    +Observed> osThreadIsAlive Code
    
    191
    +Observed> pap_sizeW Code
    
    192
    +Observed> pauseTokenCapability Code
    
    193
    +Observed> pbarf Code
    
    194
    +Observed> peak_mblocks_allocated Data
    
    195
    +Observed> poolFlush Code
    
    196
    +Observed> poolFree Code
    
    197
    +Observed> poolGetDesiredSize Code
    
    198
    +Observed> poolGetMaxSize Code
    
    199
    +Observed> poolInit Code
    
    200
    +Observed> poolRelease Code
    
    201
    +Observed> poolSetDesiredSize Code
    
    202
    +Observed> poolSetMaxSize Code
    
    203
    +Observed> poolTake Code
    
    204
    +Observed> poolTryTake Code
    
    205
    +Observed> popWSDeque Code
    
    206
    +Observed> printLoadedObjects Code
    
    207
    +Observed> prog_name Data
    
    208
    +Observed> pushWSDeque Code
    
    209
    +Observed> re_invalid Data
    
    210
    +Observed> re_realso Data
    
    211
    +Observed> releaseFreeMemory Code
    
    212
    +Observed> releaseThreadNode Code
    
    213
    +Observed> reportMemoryMap Code
    
    214
    +Observed> rtsDebugMsgFn Code
    
    215
    +Observed> rtsErrorMsgFn Code
    
    216
    +Observed> rtsFatalInternalErrorFn Code
    
    217
    +Observed> rtsSysErrorMsgFn Code
    
    218
    +Observed> rts_argc Data
    
    219
    +Observed> rts_argv Data
    
    220
    +Observed> rts_argv_size Data
    
    221
    +Observed> rts_done Code
    
    222
    +Observed> rts_evalLazyIO_ Code
    
    223
    +Observed> rts_getSchedStatus Code
    
    224
    +Observed> rts_isPaused Code
    
    225
    +Observed> rts_listMiscRoots Code
    
    226
    +Observed> rts_listThreads Code
    
    227
    +Observed> rts_pause Code
    
    228
    +Observed> rts_pinThreadToNumaNode Code
    
    229
    +Observed> rts_resume Code
    
    230
    +Observed> runFini Code
    
    231
    +Observed> runInit Code
    
    232
    +Observed> sbarf Code
    
    233
    +Observed> scheduleWaitThread Code
    
    234
    +Observed> setHighMemDynamic Code
    
    235
    +Observed> setImportSymbol Code
    
    236
    +Observed> setSymbolInfo Code
    
    237
    +Observed> setTSOLink Code
    
    238
    +Observed> setTSOPrev Code
    
    239
    +Observed> setThreadAffinity Code
    
    240
    +Observed> setThreadNode Code
    
    241
    +Observed> setVectorSupport Code
    
    242
    +Observed> setWeakSymbol Code
    
    243
    +Observed> shndx_table_uninit_label Data
    
    244
    +Observed> shouldCompact Code
    
    245
    +Observed> shutdownThread Code
    
    246
    +Observed> signalCondition Code
    
    247
    +Observed> sizeW_fromITBL Code
    
    248
    +Observed> small_mut_arr_ptrs_sizeW Code
    
    249
    +Observed> ssbarf Code
    
    250
    +Observed> stack_frame_sizeW Code
    
    251
    +Observed> stack_sizeW Code
    
    252
    +Observed> state_change_mutex Data
    
    253
    +Observed> stealWSDeque Code
    
    254
    +Observed> stealWSDeque_ Code
    
    255
    +Observed> stg_AP_NOUPD_info Data
    
    256
    +Observed> stg_AP_STACK_NOUPD_info Data
    
    257
    +Observed> stg_AP_STACK_info Data
    
    258
    +Observed> stg_AP_info Data
    
    259
    +Observed> stg_ASYNCIOOP_info Data
    
    260
    +Observed> stg_ASYNCIO_LIVE0_closure Data
    
    261
    +Observed> stg_ASYNCIO_LIVE0_info Data
    
    262
    +Observed> stg_BCO_info Data
    
    263
    +Observed> stg_CLOSURE_TABLE_NULL_closure Data
    
    264
    +Observed> stg_CLOSURE_TABLE_NULL_info Data
    
    265
    +Observed> stg_COMPACT_NFDATA_CLEAN_info Data
    
    266
    +Observed> stg_COMPACT_NFDATA_DIRTY_info Data
    
    267
    +Observed> stg_CONTINUATION_apply Code
    
    268
    +Observed> stg_CONTINUATION_info Data
    
    269
    +Observed> stg_C_FINALIZER_LIST_info Data
    
    270
    +Observed> stg_DEAD_SLOT_closure Data
    
    271
    +Observed> stg_DEAD_SLOT_info Data
    
    272
    +Observed> stg_DEAD_WEAK_info Data
    
    273
    +Observed> stg_END_STM_CHUNK_LIST_closure Data
    
    274
    +Observed> stg_END_STM_CHUNK_LIST_info Data
    
    275
    +Observed> stg_END_STM_WATCH_QUEUE_closure Data
    
    276
    +Observed> stg_END_STM_WATCH_QUEUE_info Data
    
    277
    +Observed> stg_END_TSO_QUEUE_closure Data
    
    278
    +Observed> stg_END_TSO_QUEUE_info Data
    
    279
    +Observed> stg_GCD_CAF_info Data
    
    280
    +Observed> stg_IND_info Data
    
    281
    +Observed> stg_MSG_BLACKHOLE_info Data
    
    282
    +Observed> stg_MSG_CLONE_STACK_info Data
    
    283
    +Observed> stg_MSG_NULL_info Data
    
    284
    +Observed> stg_MSG_THROWTO_info Data
    
    285
    +Observed> stg_MSG_TRY_WAKEUP_info Data
    
    286
    +Observed> stg_MSG_UPD_TSO_FLAG_info Data
    
    287
    +Observed> stg_MUT_ARR_PTRS_CLEAN_info Data
    
    288
    +Observed> stg_MVAR_TSO_QUEUE_info Data
    
    289
    +Observed> stg_NO_FINALIZER_closure Data
    
    290
    +Observed> stg_NO_FINALIZER_info Data
    
    291
    +Observed> stg_NO_TREC_closure Data
    
    292
    +Observed> stg_NO_TREC_info Data
    
    293
    +Observed> stg_PAP_apply Code
    
    294
    +Observed> stg_PAP_info Data
    
    295
    +Observed> stg_PROMPT_TAG_info Data
    
    296
    +Observed> stg_SMALL_MUT_ARR_PTRS_CLEAN_info Data
    
    297
    +Observed> stg_STABLE_NAME_info Data
    
    298
    +Observed> stg_STACK_info Data
    
    299
    +Observed> stg_TIMEOUT_QUEUE_EMPTY_closure Data
    
    300
    +Observed> stg_TIMEOUT_QUEUE_EMPTY_info Data
    
    301
    +Observed> stg_TIMEOUT_QUEUE_info Data
    
    302
    +Observed> stg_TREC_CHUNK_info Data
    
    303
    +Observed> stg_TREC_HEADER_info Data
    
    304
    +Observed> stg_TSO_info Data
    
    305
    +Observed> stg_TVAR_WATCH_QUEUE_info Data
    
    306
    +Observed> stg_WHITEHOLE_info Data
    
    307
    +Observed> stg_abort Code
    
    308
    +Observed> stg_ann_frame_info Data
    
    309
    +Observed> stg_ap_0_ret_str Data
    
    310
    +Observed> stg_ap_stack_entries Data
    
    311
    +Observed> stg_ap_stk_ Code
    
    312
    +Observed> stg_ap_stk_d Code
    
    313
    +Observed> stg_ap_stk_f Code
    
    314
    +Observed> stg_ap_stk_l Code
    
    315
    +Observed> stg_ap_stk_n Code
    
    316
    +Observed> stg_ap_stk_nn Code
    
    317
    +Observed> stg_ap_stk_nnn Code
    
    318
    +Observed> stg_ap_stk_nnp Code
    
    319
    +Observed> stg_ap_stk_np Code
    
    320
    +Observed> stg_ap_stk_npn Code
    
    321
    +Observed> stg_ap_stk_npp Code
    
    322
    +Observed> stg_ap_stk_p Code
    
    323
    +Observed> stg_ap_stk_pn Code
    
    324
    +Observed> stg_ap_stk_pnn Code
    
    325
    +Observed> stg_ap_stk_pnp Code
    
    326
    +Observed> stg_ap_stk_pp Code
    
    327
    +Observed> stg_ap_stk_ppn Code
    
    328
    +Observed> stg_ap_stk_ppp Code
    
    329
    +Observed> stg_ap_stk_pppp Code
    
    330
    +Observed> stg_ap_stk_ppppp Code
    
    331
    +Observed> stg_ap_stk_pppppp Code
    
    332
    +Observed> stg_ap_stk_ppppppp Code
    
    333
    +Observed> stg_ap_stk_pppppppp Code
    
    334
    +Observed> stg_ap_stk_v16 Code
    
    335
    +Observed> stg_ap_stk_v32 Code
    
    336
    +Observed> stg_ap_stk_v64 Code
    
    337
    +Observed> stg_apply_interp_info Data
    
    338
    +Observed> stg_atomically_frame_info Data
    
    339
    +Observed> stg_atomically_info Data
    
    340
    +Observed> stg_atomically_waiting_frame_info Data
    
    341
    +Observed> stg_block_blackhole Code
    
    342
    +Observed> stg_block_io_int Code
    
    343
    +Observed> stg_block_io_int_info Data
    
    344
    +Observed> stg_block_io_unit Code
    
    345
    +Observed> stg_block_io_unit_info Data
    
    346
    +Observed> stg_block_putmvar_finally Code
    
    347
    +Observed> stg_block_putmvar_info Data
    
    348
    +Observed> stg_block_readmvar_finally Code
    
    349
    +Observed> stg_block_readmvar_info Data
    
    350
    +Observed> stg_block_stmwait Code
    
    351
    +Observed> stg_block_takemvar_finally Code
    
    352
    +Observed> stg_block_takemvar_info Data
    
    353
    +Observed> stg_block_throwto Code
    
    354
    +Observed> stg_block_throwto_finally Code
    
    355
    +Observed> stg_block_throwto_info Data
    
    356
    +Observed> stg_catch_frame_info Data
    
    357
    +Observed> stg_catch_retry_frame_info Data
    
    358
    +Observed> stg_catch_stm_frame_info Data
    
    359
    +Observed> stg_compactAddWorkerzh Code
    
    360
    +Observed> stg_control0zh_ll Code
    
    361
    +Observed> stg_ctoi_D1_info Data
    
    362
    +Observed> stg_ctoi_F1_info Data
    
    363
    +Observed> stg_ctoi_L1_info Data
    
    364
    +Observed> stg_ctoi_R1n_info Data
    
    365
    +Observed> stg_ctoi_R1p_info Data
    
    366
    +Observed> stg_ctoi_V_info Data
    
    367
    +Observed> stg_dead_thread_info Data
    
    368
    +Observed> stg_do_unpack_cstring Code
    
    369
    +Observed> stg_do_unpack_cstring_utf8 Code
    
    370
    +Observed> stg_dummy_ret_closure Data
    
    371
    +Observed> stg_dummy_ret_info Data
    
    372
    +Observed> stg_forceIO_info Data
    
    373
    +Observed> stg_gc_prim Code
    
    374
    +Observed> stg_gc_prim_p_ll Code
    
    375
    +Observed> stg_gc_prim_p_ll_info Data
    
    376
    +Observed> stg_gc_prim_pp_ll Code
    
    377
    +Observed> stg_gc_prim_pp_ll_info Data
    
    378
    +Observed> stg_handleIOSubmitResult Code
    
    379
    +Observed> stg_keepAlive_frame_info Data
    
    380
    +Observed> stg_killMyself Code
    
    381
    +Observed> stg_marked_upd_frame_info Data
    
    382
    +Observed> stg_maskAsyncExceptionszh_ret_info Data
    
    383
    +Observed> stg_maskUninterruptiblezh_ret_info Data
    
    384
    +Observed> stg_noDuplicate_info Data
    
    385
    +Observed> stg_overwritingClosure Code
    
    386
    +Observed> stg_overwritingClosureSize Code
    
    387
    +Observed> stg_prompt_frame_info Data
    
    388
    +Observed> stg_raise_info Data
    
    389
    +Observed> stg_raise_ret_info Data
    
    390
    +Observed> stg_restore_cccs_d_info Data
    
    391
    +Observed> stg_restore_cccs_eval_info Data
    
    392
    +Observed> stg_restore_cccs_v16_info Data
    
    393
    +Observed> stg_restore_cccs_v32_info Data
    
    394
    +Observed> stg_restore_cccs_v64_info Data
    
    395
    +Observed> stg_returnToSched Code
    
    396
    +Observed> stg_returnToSchedButFirst Code
    
    397
    +Observed> stg_returnToSchedNotPaused Code
    
    398
    +Observed> stg_returnToStackTop Code
    
    399
    +Observed> stg_stack_save_entries Data
    
    400
    +Observed> stg_stack_underflow_frame_d_info Data
    
    401
    +Observed> stg_stack_underflow_frame_v16_info Data
    
    402
    +Observed> stg_stack_underflow_frame_v32_info Data
    
    403
    +Observed> stg_stack_underflow_frame_v64_info Data
    
    404
    +Observed> stg_stk_save_ Code
    
    405
    +Observed> stg_stk_save_d Code
    
    406
    +Observed> stg_stk_save_f Code
    
    407
    +Observed> stg_stk_save_l Code
    
    408
    +Observed> stg_stk_save_n Code
    
    409
    +Observed> stg_stk_save_nn Code
    
    410
    +Observed> stg_stk_save_nnn Code
    
    411
    +Observed> stg_stk_save_nnp Code
    
    412
    +Observed> stg_stk_save_np Code
    
    413
    +Observed> stg_stk_save_npn Code
    
    414
    +Observed> stg_stk_save_npp Code
    
    415
    +Observed> stg_stk_save_p Code
    
    416
    +Observed> stg_stk_save_pn Code
    
    417
    +Observed> stg_stk_save_pnn Code
    
    418
    +Observed> stg_stk_save_pnp Code
    
    419
    +Observed> stg_stk_save_pp Code
    
    420
    +Observed> stg_stk_save_ppn Code
    
    421
    +Observed> stg_stk_save_ppp Code
    
    422
    +Observed> stg_stk_save_pppp Code
    
    423
    +Observed> stg_stk_save_ppppp Code
    
    424
    +Observed> stg_stk_save_pppppp Code
    
    425
    +Observed> stg_stk_save_ppppppp Code
    
    426
    +Observed> stg_stk_save_pppppppp Code
    
    427
    +Observed> stg_stk_save_v16 Code
    
    428
    +Observed> stg_stk_save_v32 Code
    
    429
    +Observed> stg_stk_save_v64 Code
    
    430
    +Observed> stg_stop_thread_info Data
    
    431
    +Observed> stg_threadFinished Code
    
    432
    +Observed> stg_unmaskAsyncExceptionszh_ret_info Data
    
    433
    +Observed> stg_writeSlopMarker Code
    
    434
    +Observed> sync_phase_marking_budget Data
    
    435
    +Observed> sysErrorMsgFn Data
    
    436
    +Observed> tagConstr Code
    
    437
    +Observed> thunk_sizeW_fromITBL Code
    
    438
    +Observed> timedWaitCondition Code
    
    439
    +Observed> totalArgumentSize Code
    
    440
    +Observed> total_ticks Data
    
    441
    +Observed> unloadNativeObj Code
    
    442
    +Observed> user_era Data
    
    443
    +Observed> validate_trec_optimistic Code
    
    444
    +Observed> vbarf Code
    
    445
    +Observed> vdebugBelch Code
    
    446
    +Observed> vectorSupportGlobalVar Data
    
    447
    +Observed> verifyGot Code
    
    448
    +Observed> verrorBelch Code
    
    449
    +Observed> vsysErrorBelch Code
    
    450
    +Observed> waitCondition Code
    
    451
    +Observed> warnMissingKBLibraryPaths Code
    
    452
    +Observed> yieldThread Code
    
    453
    +
    
    454
    +Symbols observed in the DSO and declared in RtsSymbols.c but with conflicting type:
    
    455
    +WrongType> ALLOC_BH_adm (declared, observed): (Code, Data)
    
    456
    +WrongType> ALLOC_BH_ctr (declared, observed): (Code, Data)
    
    457
    +WrongType> ALLOC_BH_gds (declared, observed): (Code, Data)
    
    458
    +WrongType> ALLOC_BH_slp (declared, observed): (Code, Data)
    
    459
    +WrongType> ALLOC_CON_adm (declared, observed): (Code, Data)
    
    460
    +WrongType> ALLOC_CON_ctr (declared, observed): (Code, Data)
    
    461
    +WrongType> ALLOC_CON_gds (declared, observed): (Code, Data)
    
    462
    +WrongType> ALLOC_CON_slp (declared, observed): (Code, Data)
    
    463
    +WrongType> ALLOC_FUN_adm (declared, observed): (Code, Data)
    
    464
    +WrongType> ALLOC_FUN_ctr (declared, observed): (Code, Data)
    
    465
    +WrongType> ALLOC_FUN_gds (declared, observed): (Code, Data)
    
    466
    +WrongType> ALLOC_FUN_slp (declared, observed): (Code, Data)
    
    467
    +WrongType> ALLOC_HEAP_ctr (declared, observed): (Code, Data)
    
    468
    +WrongType> ALLOC_HEAP_tot (declared, observed): (Code, Data)
    
    469
    +WrongType> ALLOC_PAP_adm (declared, observed): (Code, Data)
    
    470
    +WrongType> ALLOC_PAP_ctr (declared, observed): (Code, Data)
    
    471
    +WrongType> ALLOC_PAP_gds (declared, observed): (Code, Data)
    
    472
    +WrongType> ALLOC_PAP_slp (declared, observed): (Code, Data)
    
    473
    +WrongType> ALLOC_PRIM_adm (declared, observed): (Code, Data)
    
    474
    +WrongType> ALLOC_PRIM_ctr (declared, observed): (Code, Data)
    
    475
    +WrongType> ALLOC_PRIM_gds (declared, observed): (Code, Data)
    
    476
    +WrongType> ALLOC_PRIM_slp (declared, observed): (Code, Data)
    
    477
    +WrongType> ALLOC_RTS_ctr (declared, observed): (Code, Data)
    
    478
    +WrongType> ALLOC_RTS_tot (declared, observed): (Code, Data)
    
    479
    +WrongType> ALLOC_SE_THK_ctr (declared, observed): (Code, Data)
    
    480
    +WrongType> ALLOC_STACK_ctr (declared, observed): (Code, Data)
    
    481
    +WrongType> ALLOC_STACK_tot (declared, observed): (Code, Data)
    
    482
    +WrongType> ALLOC_THK_adm (declared, observed): (Code, Data)
    
    483
    +WrongType> ALLOC_THK_gds (declared, observed): (Code, Data)
    
    484
    +WrongType> ALLOC_THK_slp (declared, observed): (Code, Data)
    
    485
    +WrongType> ALLOC_TSO_ctr (declared, observed): (Code, Data)
    
    486
    +WrongType> ALLOC_TSO_tot (declared, observed): (Code, Data)
    
    487
    +WrongType> ALLOC_TUP_adm (declared, observed): (Code, Data)
    
    488
    +WrongType> ALLOC_TUP_ctr (declared, observed): (Code, Data)
    
    489
    +WrongType> ALLOC_TUP_gds (declared, observed): (Code, Data)
    
    490
    +WrongType> ALLOC_TUP_slp (declared, observed): (Code, Data)
    
    491
    +WrongType> ALLOC_UP_THK_ctr (declared, observed): (Code, Data)
    
    492
    +WrongType> CATCHF_PUSHED_ctr (declared, observed): (Code, Data)
    
    493
    +WrongType> ENT_AP_STACK_ctr (declared, observed): (Code, Data)
    
    494
    +WrongType> ENT_AP_ctr (declared, observed): (Code, Data)
    
    495
    +WrongType> ENT_BH_ctr (declared, observed): (Code, Data)
    
    496
    +WrongType> ENT_CONTINUATION_ctr (declared, observed): (Code, Data)
    
    497
    +WrongType> ENT_DYN_CON_ctr (declared, observed): (Code, Data)
    
    498
    +WrongType> ENT_DYN_FUN_DIRECT_ctr (declared, observed): (Code, Data)
    
    499
    +WrongType> ENT_DYN_IND_ctr (declared, observed): (Code, Data)
    
    500
    +WrongType> ENT_DYN_THK_MANY_ctr (declared, observed): (Code, Data)
    
    501
    +WrongType> ENT_DYN_THK_SINGLE_ctr (declared, observed): (Code, Data)
    
    502
    +WrongType> ENT_LNE_ctr (declared, observed): (Code, Data)
    
    503
    +WrongType> ENT_PAP_ctr (declared, observed): (Code, Data)
    
    504
    +WrongType> ENT_PERM_IND_ctr (declared, observed): (Code, Data)
    
    505
    +WrongType> ENT_STATIC_CON_ctr (declared, observed): (Code, Data)
    
    506
    +WrongType> ENT_STATIC_FUN_DIRECT_ctr (declared, observed): (Code, Data)
    
    507
    +WrongType> ENT_STATIC_IND_ctr (declared, observed): (Code, Data)
    
    508
    +WrongType> ENT_STATIC_THK_MANY_ctr (declared, observed): (Code, Data)
    
    509
    +WrongType> ENT_STATIC_THK_SINGLE_ctr (declared, observed): (Code, Data)
    
    510
    +WrongType> ENT_VIA_NODE_ctr (declared, observed): (Code, Data)
    
    511
    +WrongType> GC_FAILED_PROMOTION_ctr (declared, observed): (Code, Data)
    
    512
    +WrongType> GC_SEL_ABANDONED_ctr (declared, observed): (Code, Data)
    
    513
    +WrongType> GC_SEL_MAJOR_ctr (declared, observed): (Code, Data)
    
    514
    +WrongType> GC_SEL_MINOR_ctr (declared, observed): (Code, Data)
    
    515
    +WrongType> HEAP_CHK_ctr (declared, observed): (Code, Data)
    
    516
    +WrongType> KNOWN_CALL_EXTRA_ARGS_ctr (declared, observed): (Code, Data)
    
    517
    +WrongType> KNOWN_CALL_TOO_FEW_ARGS_ctr (declared, observed): (Code, Data)
    
    518
    +WrongType> KNOWN_CALL_ctr (declared, observed): (Code, Data)
    
    519
    +WrongType> MULTI_CHUNK_SLOW_CALL_CHUNKS_ctr (declared, observed): (Code, Data)
    
    520
    +WrongType> MULTI_CHUNK_SLOW_CALL_ctr (declared, observed): (Code, Data)
    
    521
    +WrongType> MainCapability (declared, observed): (Code, Data)
    
    522
    +WrongType> RET_NEW_ctr (declared, observed): (Code, Data)
    
    523
    +WrongType> RET_NEW_hst (declared, observed): (Code, Data)
    
    524
    +WrongType> RET_OLD_ctr (declared, observed): (Code, Data)
    
    525
    +WrongType> RET_OLD_hst (declared, observed): (Code, Data)
    
    526
    +WrongType> RET_SEMI_loads_avoided (declared, observed): (Code, Data)
    
    527
    +WrongType> RET_UNBOXED_TUP_ctr (declared, observed): (Code, Data)
    
    528
    +WrongType> RET_UNBOXED_TUP_hst (declared, observed): (Code, Data)
    
    529
    +WrongType> SLOW_CALL_FUN_CORRECT_ctr (declared, observed): (Code, Data)
    
    530
    +WrongType> SLOW_CALL_FUN_TOO_FEW_ctr (declared, observed): (Code, Data)
    
    531
    +WrongType> SLOW_CALL_FUN_TOO_MANY_ctr (declared, observed): (Code, Data)
    
    532
    +WrongType> SLOW_CALL_PAP_CORRECT_ctr (declared, observed): (Code, Data)
    
    533
    +WrongType> SLOW_CALL_PAP_TOO_FEW_ctr (declared, observed): (Code, Data)
    
    534
    +WrongType> SLOW_CALL_PAP_TOO_MANY_ctr (declared, observed): (Code, Data)
    
    535
    +WrongType> SLOW_CALL_UNEVALD_ctr (declared, observed): (Code, Data)
    
    536
    +WrongType> SLOW_CALL_ctr (declared, observed): (Code, Data)
    
    537
    +WrongType> SLOW_CALL_fast_d_ctr (declared, observed): (Code, Data)
    
    538
    +WrongType> SLOW_CALL_fast_f_ctr (declared, observed): (Code, Data)
    
    539
    +WrongType> SLOW_CALL_fast_l_ctr (declared, observed): (Code, Data)
    
    540
    +WrongType> SLOW_CALL_fast_n_ctr (declared, observed): (Code, Data)
    
    541
    +WrongType> SLOW_CALL_fast_p_ctr (declared, observed): (Code, Data)
    
    542
    +WrongType> SLOW_CALL_fast_pp_ctr (declared, observed): (Code, Data)
    
    543
    +WrongType> SLOW_CALL_fast_ppp_ctr (declared, observed): (Code, Data)
    
    544
    +WrongType> SLOW_CALL_fast_pppp_ctr (declared, observed): (Code, Data)
    
    545
    +WrongType> SLOW_CALL_fast_ppppp_ctr (declared, observed): (Code, Data)
    
    546
    +WrongType> SLOW_CALL_fast_pppppp_ctr (declared, observed): (Code, Data)
    
    547
    +WrongType> SLOW_CALL_fast_pppv_ctr (declared, observed): (Code, Data)
    
    548
    +WrongType> SLOW_CALL_fast_ppv_ctr (declared, observed): (Code, Data)
    
    549
    +WrongType> SLOW_CALL_fast_pv_ctr (declared, observed): (Code, Data)
    
    550
    +WrongType> SLOW_CALL_fast_v16_ctr (declared, observed): (Code, Data)
    
    551
    +WrongType> SLOW_CALL_fast_v_ctr (declared, observed): (Code, Data)
    
    552
    +WrongType> STK_CHK_ctr (declared, observed): (Code, Data)
    
    553
    +WrongType> TAG_TAGGED_miss (declared, observed): (Code, Data)
    
    554
    +WrongType> TAG_TAGGED_pred (declared, observed): (Code, Data)
    
    555
    +WrongType> TAG_UNTAGGED_miss (declared, observed): (Code, Data)
    
    556
    +WrongType> TAG_UNTAGGED_pred (declared, observed): (Code, Data)
    
    557
    +WrongType> UNKNOWN_CALL_ctr (declared, observed): (Code, Data)
    
    558
    +WrongType> UPDF_OMITTED_ctr (declared, observed): (Code, Data)
    
    559
    +WrongType> UPDF_PUSHED_ctr (declared, observed): (Code, Data)
    
    560
    +WrongType> UPDF_RCC_OMITTED_ctr (declared, observed): (Code, Data)
    
    561
    +WrongType> UPDF_RCC_PUSHED_ctr (declared, observed): (Code, Data)
    
    562
    +WrongType> UPD_CAF_BH_SINGLE_ENTRY_ctr (declared, observed): (Code, Data)
    
    563
    +WrongType> UPD_CAF_BH_UPDATABLE_ctr (declared, observed): (Code, Data)
    
    564
    +WrongType> UPD_CON_IN_NEW_ctr (declared, observed): (Code, Data)
    
    565
    +WrongType> UPD_CON_IN_PLACE_ctr (declared, observed): (Code, Data)
    
    566
    +WrongType> UPD_NEW_IND_ctr (declared, observed): (Code, Data)
    
    567
    +WrongType> UPD_NEW_PERM_IND_ctr (declared, observed): (Code, Data)
    
    568
    +WrongType> UPD_OLD_IND_ctr (declared, observed): (Code, Data)
    
    569
    +WrongType> UPD_OLD_PERM_IND_ctr (declared, observed): (Code, Data)
    
    570
    +WrongType> UPD_PAP_IN_NEW_ctr (declared, observed): (Code, Data)
    
    571
    +WrongType> UPD_PAP_IN_PLACE_ctr (declared, observed): (Code, Data)
    
    572
    +WrongType> UPD_SQUEEZED_ctr (declared, observed): (Code, Data)
    
    573
    +WrongType> VERY_SLOW_CALL_ctr (declared, observed): (Code, Data)
    
    574
    +WrongType> __stg_gc_enter_1 (declared, observed): (Data, Code)
    
    575
    +WrongType> __stg_gc_fun (declared, observed): (Data, Code)
    
    576
    +WrongType> closure_flags (declared, observed): (Code, Data)
    
    577
    +WrongType> defaultRtsConfig (declared, observed): (Code, Data)
    
    578
    +WrongType> g0 (declared, observed): (Code, Data)
    
    579
    +WrongType> ghc_unique_counter64 (declared, observed): (Code, Data)
    
    580
    +WrongType> ghc_unique_inc (declared, observed): (Code, Data)
    
    581
    +WrongType> keepCAFs (declared, observed): (Code, Data)
    
    582
    +WrongType> large_alloc_lim (declared, observed): (Code, Data)
    
    583
    +WrongType> prog_argc (declared, observed): (Code, Data)
    
    584
    +WrongType> prog_argv (declared, observed): (Code, Data)
    
    585
    +WrongType> stable_name_table (declared, observed): (Code, Data)
    
    586
    +WrongType> stable_ptr_table (declared, observed): (Code, Data)
    
    587
    +WrongType> stg_CHARLIKE_closure (declared, observed): (Code, Data)
    
    588
    +WrongType> stg_INTLIKE_closure (declared, observed): (Code, Data)
    
    589
    +WrongType> stg_absentErrorzh (declared, observed): (Data, Code)
    
    590
    +WrongType> stg_annotateStackzh (declared, observed): (Data, Code)
    
    591
    +WrongType> stg_ap_0_fast (declared, observed): (Data, Code)
    
    592
    +WrongType> stg_ap_d_fast (declared, observed): (Data, Code)
    
    593
    +WrongType> stg_ap_f_fast (declared, observed): (Data, Code)
    
    594
    +WrongType> stg_ap_l_fast (declared, observed): (Data, Code)
    
    595
    +WrongType> stg_ap_n_fast (declared, observed): (Data, Code)
    
    596
    +WrongType> stg_ap_p_fast (declared, observed): (Data, Code)
    
    597
    +WrongType> stg_ap_pp_fast (declared, observed): (Data, Code)
    
    598
    +WrongType> stg_ap_ppp_fast (declared, observed): (Data, Code)
    
    599
    +WrongType> stg_ap_pppp_fast (declared, observed): (Data, Code)
    
    600
    +WrongType> stg_ap_ppppp_fast (declared, observed): (Data, Code)
    
    601
    +WrongType> stg_ap_pppppp_fast (declared, observed): (Data, Code)
    
    602
    +WrongType> stg_ap_pppv_fast (declared, observed): (Data, Code)
    
    603
    +WrongType> stg_ap_ppv_fast (declared, observed): (Data, Code)
    
    604
    +WrongType> stg_ap_pv_fast (declared, observed): (Data, Code)
    
    605
    +WrongType> stg_ap_v16_fast (declared, observed): (Data, Code)
    
    606
    +WrongType> stg_ap_v32_fast (declared, observed): (Data, Code)
    
    607
    +WrongType> stg_ap_v64_fast (declared, observed): (Data, Code)
    
    608
    +WrongType> stg_ap_v_fast (declared, observed): (Data, Code)
    
    609
    +WrongType> stg_atomicModifyMutVar2zh (declared, observed): (Data, Code)
    
    610
    +WrongType> stg_atomicModifyMutVarzuzh (declared, observed): (Data, Code)
    
    611
    +WrongType> stg_atomicallyzh (declared, observed): (Data, Code)
    
    612
    +WrongType> stg_block_noregs (declared, observed): (Data, Code)
    
    613
    +WrongType> stg_block_putmvar (declared, observed): (Data, Code)
    
    614
    +WrongType> stg_block_readmvar (declared, observed): (Data, Code)
    
    615
    +WrongType> stg_block_takemvar (declared, observed): (Data, Code)
    
    616
    +WrongType> stg_casArrayzh (declared, observed): (Data, Code)
    
    617
    +WrongType> stg_casInt16Arrayzh (declared, observed): (Data, Code)
    
    618
    +WrongType> stg_casInt32Arrayzh (declared, observed): (Data, Code)
    
    619
    +WrongType> stg_casInt64Arrayzh (declared, observed): (Data, Code)
    
    620
    +WrongType> stg_casInt8Arrayzh (declared, observed): (Data, Code)
    
    621
    +WrongType> stg_casIntArrayzh (declared, observed): (Data, Code)
    
    622
    +WrongType> stg_casMutVarzh (declared, observed): (Data, Code)
    
    623
    +WrongType> stg_casSmallArrayzh (declared, observed): (Data, Code)
    
    624
    +WrongType> stg_castDoubleToWord64zh (declared, observed): (Data, Code)
    
    625
    +WrongType> stg_castFloatToWord32zh (declared, observed): (Data, Code)
    
    626
    +WrongType> stg_castWord32ToFloatzh (declared, observed): (Data, Code)
    
    627
    +WrongType> stg_castWord64ToDoublezh (declared, observed): (Data, Code)
    
    628
    +WrongType> stg_catchRetryzh (declared, observed): (Data, Code)
    
    629
    +WrongType> stg_catchSTMzh (declared, observed): (Data, Code)
    
    630
    +WrongType> stg_catchzh (declared, observed): (Data, Code)
    
    631
    +WrongType> stg_clearCCSzh (declared, observed): (Data, Code)
    
    632
    +WrongType> stg_cloneArrayzh (declared, observed): (Data, Code)
    
    633
    +WrongType> stg_cloneMutableArrayzh (declared, observed): (Data, Code)
    
    634
    +WrongType> stg_cloneSmallArrayzh (declared, observed): (Data, Code)
    
    635
    +WrongType> stg_cloneSmallMutableArrayzh (declared, observed): (Data, Code)
    
    636
    +WrongType> stg_closureSizzezh (declared, observed): (Data, Code)
    
    637
    +WrongType> stg_compactAddWithSharingzh (declared, observed): (Data, Code)
    
    638
    +WrongType> stg_compactAddzh (declared, observed): (Data, Code)
    
    639
    +WrongType> stg_compactAllocateBlockzh (declared, observed): (Data, Code)
    
    640
    +WrongType> stg_compactContainsAnyzh (declared, observed): (Data, Code)
    
    641
    +WrongType> stg_compactContainszh (declared, observed): (Data, Code)
    
    642
    +WrongType> stg_compactFixupPointerszh (declared, observed): (Data, Code)
    
    643
    +WrongType> stg_compactGetFirstBlockzh (declared, observed): (Data, Code)
    
    644
    +WrongType> stg_compactGetNextBlockzh (declared, observed): (Data, Code)
    
    645
    +WrongType> stg_compactNewzh (declared, observed): (Data, Code)
    
    646
    +WrongType> stg_compactResizzezh (declared, observed): (Data, Code)
    
    647
    +WrongType> stg_compactSizzezh (declared, observed): (Data, Code)
    
    648
    +WrongType> stg_copyArray_barrier (declared, observed): (Data, Code)
    
    649
    +WrongType> stg_copyArrayzh (declared, observed): (Data, Code)
    
    650
    +WrongType> stg_copyMutableArrayzh (declared, observed): (Data, Code)
    
    651
    +WrongType> stg_copySmallArrayzh (declared, observed): (Data, Code)
    
    652
    +WrongType> stg_copySmallMutableArrayzh (declared, observed): (Data, Code)
    
    653
    +WrongType> stg_deRefStablePtrzh (declared, observed): (Data, Code)
    
    654
    +WrongType> stg_deRefWeakzh (declared, observed): (Data, Code)
    
    655
    +WrongType> stg_decodeDoublezu2Intzh (declared, observed): (Data, Code)
    
    656
    +WrongType> stg_decodeDoublezuInt64zh (declared, observed): (Data, Code)
    
    657
    +WrongType> stg_decodeFloatzuIntzh (declared, observed): (Data, Code)
    
    658
    +WrongType> stg_delayzh (declared, observed): (Data, Code)
    
    659
    +WrongType> stg_exit (declared, observed): (Data, Code)
    
    660
    +WrongType> stg_freezzeArrayzh (declared, observed): (Data, Code)
    
    661
    +WrongType> stg_freezzeSmallArrayzh (declared, observed): (Data, Code)
    
    662
    +WrongType> stg_gc_bpp (declared, observed): (Data, Code)
    
    663
    +WrongType> stg_gc_d1 (declared, observed): (Data, Code)
    
    664
    +WrongType> stg_gc_f1 (declared, observed): (Data, Code)
    
    665
    +WrongType> stg_gc_ii (declared, observed): (Data, Code)
    
    666
    +WrongType> stg_gc_ip (declared, observed): (Data, Code)
    
    667
    +WrongType> stg_gc_l1 (declared, observed): (Data, Code)
    
    668
    +WrongType> stg_gc_noregs (declared, observed): (Data, Code)
    
    669
    +WrongType> stg_gc_pi (declared, observed): (Data, Code)
    
    670
    +WrongType> stg_gc_pp (declared, observed): (Data, Code)
    
    671
    +WrongType> stg_gc_ppp (declared, observed): (Data, Code)
    
    672
    +WrongType> stg_gc_pppp (declared, observed): (Data, Code)
    
    673
    +WrongType> stg_gc_ppppp (declared, observed): (Data, Code)
    
    674
    +WrongType> stg_gc_prim_n (declared, observed): (Data, Code)
    
    675
    +WrongType> stg_gc_prim_p (declared, observed): (Data, Code)
    
    676
    +WrongType> stg_gc_prim_pp (declared, observed): (Data, Code)
    
    677
    +WrongType> stg_gc_unbx_r1 (declared, observed): (Data, Code)
    
    678
    +WrongType> stg_gc_unpt_r1 (declared, observed): (Data, Code)
    
    679
    +WrongType> stg_getApStackValzh (declared, observed): (Data, Code)
    
    680
    +WrongType> stg_getMaskingStatezh (declared, observed): (Data, Code)
    
    681
    +WrongType> stg_getOtherThreadAllocationCounterzh (declared, observed): (Data, Code)
    
    682
    +WrongType> stg_getSparkzh (declared, observed): (Data, Code)
    
    683
    +WrongType> stg_getThreadAllocationCounterzh (declared, observed): (Data, Code)
    
    684
    +WrongType> stg_isByteArrayPinnedzh (declared, observed): (Data, Code)
    
    685
    +WrongType> stg_isByteArrayWeaklyPinnedzh (declared, observed): (Data, Code)
    
    686
    +WrongType> stg_isCurrentThreadBoundzh (declared, observed): (Data, Code)
    
    687
    +WrongType> stg_isEmptyMVarzh (declared, observed): (Data, Code)
    
    688
    +WrongType> stg_isMutableByteArrayPinnedzh (declared, observed): (Data, Code)
    
    689
    +WrongType> stg_isMutableByteArrayWeaklyPinnedzh (declared, observed): (Data, Code)
    
    690
    +WrongType> stg_keepAlivezh (declared, observed): (Data, Code)
    
    691
    +WrongType> stg_killThreadzh (declared, observed): (Data, Code)
    
    692
    +WrongType> stg_labelThreadzh (declared, observed): (Data, Code)
    
    693
    +WrongType> stg_listThreadszh (declared, observed): (Data, Code)
    
    694
    +WrongType> stg_makeStablePtrzh (declared, observed): (Data, Code)
    
    695
    +WrongType> stg_maskAsyncExceptionszh (declared, observed): (Data, Code)
    
    696
    +WrongType> stg_maskUninterruptiblezh (declared, observed): (Data, Code)
    
    697
    +WrongType> stg_mkApUpd0zh (declared, observed): (Data, Code)
    
    698
    +WrongType> stg_newAlignedPinnedByteArrayzh (declared, observed): (Data, Code)
    
    699
    +WrongType> stg_newArrayzh (declared, observed): (Data, Code)
    
    700
    +WrongType> stg_newBCOzh (declared, observed): (Data, Code)
    
    701
    +WrongType> stg_newByteArrayzh (declared, observed): (Data, Code)
    
    702
    +WrongType> stg_newConAppObjzh (declared, observed): (Data, Code)
    
    703
    +WrongType> stg_newMVarzh (declared, observed): (Data, Code)
    
    704
    +WrongType> stg_newMutVarzh (declared, observed): (Data, Code)
    
    705
    +WrongType> stg_newPinnedByteArrayzh (declared, observed): (Data, Code)
    
    706
    +WrongType> stg_newSmallArrayzh (declared, observed): (Data, Code)
    
    707
    +WrongType> stg_newTVarzh (declared, observed): (Data, Code)
    
    708
    +WrongType> stg_noDuplicatezh (declared, observed): (Data, Code)
    
    709
    +WrongType> stg_numSparkszh (declared, observed): (Data, Code)
    
    710
    +WrongType> stg_paniczh (declared, observed): (Data, Code)
    
    711
    +WrongType> stg_putMVarzh (declared, observed): (Data, Code)
    
    712
    +WrongType> stg_raiseDivZZerozh (declared, observed): (Data, Code)
    
    713
    +WrongType> stg_raiseIOzh (declared, observed): (Data, Code)
    
    714
    +WrongType> stg_raiseOverflowzh (declared, observed): (Data, Code)
    
    715
    +WrongType> stg_raiseUnderflowzh (declared, observed): (Data, Code)
    
    716
    +WrongType> stg_raisezh (declared, observed): (Data, Code)
    
    717
    +WrongType> stg_readMVarzh (declared, observed): (Data, Code)
    
    718
    +WrongType> stg_readTVarIOzh (declared, observed): (Data, Code)
    
    719
    +WrongType> stg_readTVarzh (declared, observed): (Data, Code)
    
    720
    +WrongType> stg_resizzeMutableByteArrayzh (declared, observed): (Data, Code)
    
    721
    +WrongType> stg_retryzh (declared, observed): (Data, Code)
    
    722
    +WrongType> stg_setOtherThreadAllocationCounterzh (declared, observed): (Data, Code)
    
    723
    +WrongType> stg_setThreadAllocationCounterzh (declared, observed): (Data, Code)
    
    724
    +WrongType> stg_shrinkMutableByteArrayzh (declared, observed): (Data, Code)
    
    725
    +WrongType> stg_shrinkSmallMutableArrayzh (declared, observed): (Data, Code)
    
    726
    +WrongType> stg_takeMVarzh (declared, observed): (Data, Code)
    
    727
    +WrongType> stg_thawArrayzh (declared, observed): (Data, Code)
    
    728
    +WrongType> stg_thawSmallArrayzh (declared, observed): (Data, Code)
    
    729
    +WrongType> stg_threadLabelzh (declared, observed): (Data, Code)
    
    730
    +WrongType> stg_threadStatuszh (declared, observed): (Data, Code)
    
    731
    +WrongType> stg_traceBinaryEventzh (declared, observed): (Data, Code)
    
    732
    +WrongType> stg_traceEventzh (declared, observed): (Data, Code)
    
    733
    +WrongType> stg_traceMarkerzh (declared, observed): (Data, Code)
    
    734
    +WrongType> stg_tryReadMVarzh (declared, observed): (Data, Code)
    
    735
    +WrongType> stg_tryTakeMVarzh (declared, observed): (Data, Code)
    
    736
    +WrongType> stg_unmaskAsyncExceptionszh (declared, observed): (Data, Code)
    
    737
    +WrongType> stg_unpackClosurezh (declared, observed): (Data, Code)
    
    738
    +WrongType> stg_unsafeThawArrayzh (declared, observed): (Data, Code)
    
    739
    +WrongType> stg_unsafeThawSmallArrayzh (declared, observed): (Data, Code)
    
    740
    +WrongType> stg_waitReadzh (declared, observed): (Data, Code)
    
    741
    +WrongType> stg_waitWritezh (declared, observed): (Data, Code)
    
    742
    +WrongType> stg_whereFromzh (declared, observed): (Data, Code)
    
    743
    +WrongType> stg_writeTVarzh (declared, observed): (Data, Code)
    
    744
    +WrongType> stg_yield_noregs (declared, observed): (Data, Code)
    
    745
    +WrongType> stg_yield_to_interpreter (declared, observed): (Data, Code)
    
    746
    +WrongType> stg_yieldzh (declared, observed): (Data, Code)
    
    747
    +WrongType> ticky_slow_call_unevald (declared, observed): (Code, Data)