Changeset c40157e


Ignore:
Timestamp:
Dec 12, 2023, 4:12:45 PM (12 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
master
Children:
96b0e49, b1f2007
Parents:
f277ab6c
Message:

Minimal change to get exceptions running the old way while a fix is found. Or even more details on the problem.

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/exception.c

    rf277ab6c rc40157e  
    414414                                _Unwind_Word match_pos =
    415415#                               if defined( __x86_64 )
    416                                     _Unwind_GetCFA(unwind_context);
     416                                    _Unwind_GetCFA(unwind_context) + 8;
    417417#                               elif defined( __i386 )
    418                                     _Unwind_GetCFA(unwind_context) + 8;
     418                                    _Unwind_GetCFA(unwind_context) + 24;
    419419#                               elif defined( __ARM_ARCH )
    420                                     _Unwind_GetCFA(unwind_context) + 16;
     420                                    _Unwind_GetCFA(unwind_context) + 40;
    421421#                               endif
    422422                                int (*matcher)(exception_t *) = *(int(**)(exception_t *))match_pos;
     
    483483__attribute__((noinline))
    484484int __cfaehm_try_terminate(void (*try_block)(),
     485                __attribute__((unused)) void (*catch_block)(int index, exception_t * except),
    485486                __attribute__((unused)) int (*match_block)(exception_t * except)) {
    486487        //! volatile int xy = 0;
  • libcfa/src/exception.h

    rf277ab6c rc40157e  
    6060int __cfaehm_try_terminate(
    6161        void (*try_block)(),
     62        void (*catch_block)(int index, exception_t * except),
    6263        int (*match_block)(exception_t * except));
    6364
  • src/ControlStruct/ExceptTranslate.cpp

    rf277ab6c rc40157e  
    496496                                {
    497497                                        new ast::VariableExpr( loc, try_wrapper ),
     498                                        new ast::VariableExpr( loc, terminate_catch ),
    498499                                        new ast::VariableExpr( loc, terminate_match ),
    499500                                }
Note: See TracChangeset for help on using the changeset viewer.