Skip to content
  • Sergei Trofimovich's avatar
    CMM: add a mechanism to import C .data labels · d82f5925
    Sergei Trofimovich authored
    Summary:
    This introduces new .cmm syntax for import:
    
        'import' 'CLOSURE' <identifier>;
    
    Currently cmm syntax allows importing only function labels:
    
        import pthread_mutex_lock;
    
    but sometimes ghc needs to import global gariables
    or haskell closures:
    
        import ghczmprim_GHCziTypes_True_closure;
        import base_ControlziExceptionziBase_nestedAtomically_closure;
        import ghczmprim_GHCziTypes_False_closure;
        import sm_mutex;
    
    It breaks on ia64 where there is a difference in
    pointers to data and pointer to functions.
    
    Patch fixes threaded runtime on ia64 where
    dereference of 'sm_mutex' from CMM led to
    incurrect location.
    
    Exact breakage machanics are the same as in e18525fa
    
    
    
    Merge into the 7.10 branch
    
    Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
    
    Test Plan: passes ./validate, makes ghci work on ghc-7.8.4
    
    Reviewers: simonmar, simonpj, austin
    
    Reviewed By: austin
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D622
    d82f5925