Beispiel #1
0
/* This function will be called from _init in init-first.c.  */
void
__libc_global_ctors (void)
{
  /* Call constructor functions.  */
  run_hooks (__CTOR_LIST__);

#ifdef HAVE_DWARF2_UNWIND_INFO
# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC
  {
    static struct object ob;
#  if defined CRT_GET_RFIB_TEXT || defined CRT_GET_RFIB_DATA
    void *tbase, *dbase;

#   ifdef CRT_GET_RFIB_TEXT
    CRT_GET_RFIB_TEXT (tbase);
#   else
    tbase = NULL;
#   endif
#   ifdef CRT_GET_RFIB_DATA
    CRT_GET_RFIB_DATA (dbase);
#   else
    dbase = NULL;
#   endif
    __register_frame_info_bases (__EH_FRAME_BEGIN__, &ob, tbase, dbase);
#  else
    __register_frame_info (__EH_FRAME_BEGIN__, &ob);
#  endif
  }
# else
  __register_frame (__EH_FRAME_BEGIN__);
# endif
#endif
}
Beispiel #2
0
frame_dummy (void)
{
#ifdef USE_EH_FRAME_REGISTRY
  static struct object object;
#if defined(CRT_GET_RFIB_TEXT) || defined(CRT_GET_RFIB_DATA)
  void *tbase, *dbase;
#ifdef CRT_GET_RFIB_TEXT
  CRT_GET_RFIB_TEXT (tbase);
#else
  tbase = 0;
#endif
#ifdef CRT_GET_RFIB_DATA
  CRT_GET_RFIB_DATA (dbase);
#else
  dbase = 0;
#endif
  if (__register_frame_info_bases)
    __register_frame_info_bases (__EH_FRAME_BEGIN__, &object, tbase, dbase);
#else
  if (__register_frame_info)
    __register_frame_info (__EH_FRAME_BEGIN__, &object);
#endif
#endif /* USE_EH_FRAME_REGISTRY */
#ifdef JCR_SECTION_NAME
  if (__JCR_LIST__[0] && _Jv_RegisterClasses)
    _Jv_RegisterClasses (__JCR_LIST__);
#endif /* JCR_SECTION_NAME */
}
Beispiel #3
0
static void
frame_dummy (void)
{
  static struct object object;
  if (__register_frame_info)
    __register_frame_info (__EH_FRAME_BEGIN__, &object);
}
Beispiel #4
0
/* Register the exception handling table as the first constructor.  */
void
__frv_register_eh (void)
{
  static struct object object;
  if (__register_frame_info)
    __register_frame_info (__EH_FRAME_BEGIN__, &object);
}
Beispiel #5
0
void
__register_frame (void *begin)
{
  struct object *ob;

  /* If .eh_frame is empty, don't register at all.  */
  if (*(uword *) begin == 0)
    return;

  ob = malloc (sizeof (struct object));
  __register_frame_info (begin, ob);
}
Beispiel #6
0
frame_dummy ()
{
  /* normally this should be a
  struct object {
    void *pc_begin;
    void *pc_end;
    void *fde_begin;
    void **fde_array;
    size_t count;
    struct object *next;
  };
  but a placeholder of the same size does it also */
  /* W A R N I N G : If the size of this struct changes in future
     versions of gcc, remember this here !!! The struct is declared
     in the file frame.h from the gcc sources */
  static int object[6];

  __register_frame_info (__EH_FRAME_BEGIN__, &object);
}                           
Beispiel #7
0
void _main ()
{
  static int initialized;
  static struct object object;
  if (! initialized)
    {
      typedef void (*pfunc) ();
      extern pfunc __ctors[];
      extern pfunc __ctors_end[];
      extern unsigned char __eh_frame_begin[];
      extern void __register_frame_info (void *, struct object *);

      pfunc *p;

      initialized = 1;
      for (p = __ctors_end; p > __ctors; )
	(*--p) ();

      __register_frame_info (__eh_frame_begin, &object);
    }
}
Beispiel #8
0
int _dyn_start(int argc, char **argv, char **envp, structor dl_init)
{
    int main(int argc, char **argv, char **envp);

    void _dl_aux_init_from_envp(char **envp);
    _dl_aux_init_from_envp(envp);

    if (dl_init) atexit(dl_init);
    _init();
    atexit(_fini);

    if (__register_frame_info) {
        static struct object ob;
        __register_frame_info(__EH_FRAME_BEGIN__, &ob);
    }

#ifdef WANT_STACKGAP
    return stackgap(argc, argv, envp);
#else
    return main(argc, argv, envp);
#endif
}
Beispiel #9
0
frame_dummy (void)
{
#ifdef USE_EH_FRAME_REGISTRY
  static struct object object;
#ifdef CRT_GET_RFIB_DATA
  void *tbase, *dbase;
  tbase = 0;
  CRT_GET_RFIB_DATA (dbase);
  if (__register_frame_info_bases)
    __register_frame_info_bases (__EH_FRAME_BEGIN__, &object, tbase, dbase);
#else
  if (__register_frame_info)
    __register_frame_info (__EH_FRAME_BEGIN__, &object);
#endif /* CRT_GET_RFIB_DATA */
#endif /* USE_EH_FRAME_REGISTRY */
#ifdef JCR_SECTION_NAME
  if (__JCR_LIST__[0])
    {
      if (_Jv_RegisterClasses)
	_Jv_RegisterClasses (__JCR_LIST__);
    }
#endif /* JCR_SECTION_NAME */
}
Beispiel #10
0
Datei: frame.c Projekt: qiyao/xcc
void
__register_frame (void *begin)
{
  struct object *ob = (struct object *) malloc (sizeof (struct object));
  __register_frame_info (begin, ob);                       
}
static void __do_eh_ctor(void) {
  static struct object object;
  __register_frame_info (__EH_FRAME_BEGIN__, &object);
}
Beispiel #12
0
/*
 * __attribute__((constructor)) places a call to the function in the
 * .init_array section in PNaCl.  The function pointers in .init_array
 * are then invoked in order (__do_eh_ctor is invoked first) before main.
 */
static void __attribute__((constructor)) __do_eh_ctor(void) {
  static struct object object;
  __register_frame_info (__EH_FRAME_BEGIN__, &object);
}
static void eh_ctor(void) {
    extern void __register_frame_info (const void *, void *);
    static struct { unsigned pad[8]; } object;

    __register_frame_info(__EH_FRAME_BEGIN__, &object);
}