Commit d62f976a authored by Vladimir Malenovsky's avatar Vladimir Malenovsky
Browse files

fix stack pointer address on GNU/Clang platforms

parent a1482804
Loading
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -818,7 +818,6 @@ static void *mem_alloc_block( size_t size, const char *size_str );

void reset_mem( Counting_Size cnt_size )
{
    int16_t something;
    size_t tmp_size;

    /* initialize list of stack records */
@@ -838,7 +837,13 @@ void reset_mem( Counting_Size cnt_size )
    max_num_calls = MAX_NUM_RECORDS;

    /* initialize stack pointers */
#if defined( __GNUC__ ) || defined( __clang__ )
    /* GCC/Clang: use builtin (works for many targets) */
    ptr_base_stack = __builtin_frame_address( 0 );
#else
    int16_t something;
    ptr_base_stack = &something;
#endif	
    ptr_max_stack = ptr_base_stack;
    ptr_current_stack = ptr_base_stack;

@@ -943,10 +948,14 @@ void reset_mem( Counting_Size cnt_size )

void reset_stack( void )
{
    int16_t something;

    /* initialize/reset stack pointers */
#if defined( __GNUC__ ) || defined( __clang__ )
    /* GCC/Clang: use builtin (works for many targets) */
    ptr_base_stack = __builtin_frame_address( 0 );
#else
    int16_t something;
    ptr_base_stack = &something;
#endif	
    ptr_max_stack = ptr_base_stack;
    ptr_current_stack = ptr_base_stack;

@@ -961,10 +970,15 @@ void reset_stack( void )

int push_stack( const char *filename, const char *fctname )
{
    int16_t something;
    int32_t current_stack_size;

#if defined( __GNUC__ ) || defined( __clang__ )
    /* GCC/Clang: use builtin (works for many targets) */
    ptr_current_stack = __builtin_frame_address( 0 );
#else
    int16_t something;
    ptr_current_stack = &something;
#endif

    (void) *filename; /* to avoid compilation warning */