Skip to content
  • Sergei Trofimovich's avatar
    Split external symbol prototypes (EF_) (Trac #11395) · 90e1e160
    Sergei Trofimovich authored
    
    
    Before the patch both Cmm and C symbols were declared
    with 'EF_' macro:
    
        #define EF_(f)    extern StgFunPtr f()
    
    but for Cmm symbols we know exact prototypes.
    
    The patch splits there prototypes in to:
    
        #define EFF_(f)   void f() /* See Note [External function prototypes] */
        #define EF_(f)    StgFunPtr f(void)
    
    Cmm functions are 'EF_' (External Functions),
    C functions are 'EFF_' (External Foreign Functions).
    
    While at it changed external C function prototype
    to return 'void' to workaround ghc bug on m68k.
    Described in detail in Trac #11395.
    
    This makes simple tests work on m68k-linux target!
    
    Thanks to Michael Karcher for awesome analysis
    happening in Trac #11395.
    
    Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
    
    Test Plan: ran "hello world" on m68k successfully
    
    Reviewers: simonmar, austin, bgamari
    
    Reviewed By: bgamari
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D1975
    
    GHC Trac Issues: #11395
    90e1e160