Changeset 548


Ignore:
Timestamp:
Aug 8, 2003, 2:09:48 AM (22 years ago)
Author:
bird
Message:

#577: Changed ehInit/Term to be in separate SETV lists to ensure correct order.

Location:
trunk/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/src/lib/startup/386/crt0.s

    • Property cvs2svn:cvs-rev changed from 1.4 to 1.5
    r547 r548  
    6363        .stabs  "___crtexit1__", 21, 0, 0, 0xffffffff
    6464        .stabs  "___eh_frame__", 21, 0, 0, 0xffffffff
     65        .stabs  "___eh_init__", 21, 0, 0, 0xffffffff
     66        .stabs  "___eh_term__", 21, 0, 0, 0xffffffff
     67
  • trunk/src/emx/src/lib/startup/386/dll0.s

    • Property cvs2svn:cvs-rev changed from 1.6 to 1.7
    r547 r548  
    2020        cld
    2121    jmp     _DLL_InitTerm
    22 /*   
     22/*
    2323        pushl   %ebp
    2424        movl    %esp, %ebp
     
    2929        popl    %ebp
    3030        ret
    31 */   
     31*/
    3232
    3333        .data
     
    4343        .stabs  "___crtexit1__", 21, 0, 0, 0xffffffff
    4444        .stabs  "___eh_frame__", 21, 0, 0, 0xffffffff
     45        .stabs  "___eh_init__", 21, 0, 0, 0xffffffff
     46        .stabs  "___eh_term__", 21, 0, 0, 0xffffffff
     47
  • trunk/src/gcc/gcc/config/i386/emx-ctordtor.c

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r547 r548  
    11/* At startup call all constructor and at shutdown all destructor functions.
    2    Optionally initializes frame unwind info (weak linkage). */
     2   Optionally initializes frame unwind info (if emx-eh is linked in). */
    33
    44extern int __CTOR_LIST__;
    55extern int __DTOR_LIST__;
     6extern int __eh_init__;
     7extern int __eh_term__;
    68extern void __ctordtorInit1 (int *);
    79extern void __ctordtorTerm1 (int *);
    810
    9 /** Exception handler stuff init indicator. 0 means not inited, 1 means inited. */
     11/** Init indicator. 0 means not inited, 1 means inited. */
    1012static int inited;
    1113extern void __ctordtorInit (void);
     
    2022    {
    2123      inited = 1;
     24      __ctordtorInit1 (&__eh_init__);
    2225      __ctordtorInit1 (&__CTOR_LIST__);
    2326    }
     
    3336      inited = 0;
    3437      __ctordtorTerm1 (&__DTOR_LIST__);
     38      __ctordtorTerm1 (&__eh_term__);
    3539    }
    3640}
  • trunk/src/gcc/gcc/config/i386/emx-eh.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r547 r548  
    1 /* This piece of code is linked into the program from gcc.a if any of the
    2    object files that are linked together use exception (e.g. have exception
     1/* This piece of code is linked into the program from gccXYZ.a or libgcc_eh.a
     2   if any of the object files in the link are using exception (i.e. have exception
    33   frame tables inside). The code automatically registers all exception
    44   tables into a central list (meant to be placed inside gcc*.dll),
     
    1414/**
    1515 * Inits exception handler stuff.
    16  * Intended external caller is _DLL_InitTerm.
     16 * Called by __ctordtorInit() thru the __eh_init__ vector.
    1717 */
    18 void __attribute__((constructor)) __ehInit (void)
     18void __ehInit (void)
    1919{
    2020  if (!inited)
     
    2828/**
    2929 * Terminates exception handler stuff.
    30  * Intended external caller is _DLL_InitTerm.
     30 * Called by __ctordtorTerm() thru the __eh_term__ vector.
    3131 */
    32 void __attribute__((destructor)) __ehTerm (void)
     32void __ehTerm (void)
    3333{
    3434  if (inited)
     
    3939    }
    4040}
     41
     42/* emx-ctordtor.c will process these. */
     43__asm__ (".stabs \"___eh_init__\", 23, 0, 0, ___ehInit");
     44__asm__ (".stabs \"___eh_term__\", 23, 0, 0, ___ehTerm");
Note: See TracChangeset for help on using the changeset viewer.