Skip to content
  • Sergei Trofimovich's avatar
    rts: fix threadStackUnderflow type in cmm · e46742f5
    Sergei Trofimovich authored
    
    
    stg_stack_underflow_frame had an incorrect
    call of C function 'threadStackUnderflow':
        ("ptr" ret_off) =
          foreign "C" threadStackUnderflow(
            MyCapability(),
            CurrentTSO);
    
    Which means it's prototype is:
        void * (*) (W_, void*);
    While real prototype is:
        W_ (*) (Capability *cap, StgTSO *tso);
    
    The fix is simple. Fix type annotations:
        (ret_off) =
          foreign "C" threadStackUnderflow(
            MyCapability() "ptr",
            CurrentTSO "ptr");
    
    Noticed when debugged T9045 test failure
    on m68k target which distincts between
    pointer and non pointer return types
    (uses different registers)
    
    While at it noticed and fixed return types
    for 'throwTo' and 'findSpark'.
    
    Trac #11395
    
    Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
    e46742f5