コード例 #1
0
ファイル: libc_free.c プロジェクト: HTshandou/chromium
void _start(uintptr_t info[]) {
  Elf_auxv_t* auxv = nacl_startup_auxv(info);
  grok_auxv(auxv);
  DO_QUERY(NACL_IRT_BASIC_v0_1, __libnacl_irt_basic);

  struct nacl_irt_ppapihook ppapihook;
  DO_QUERY(NACL_IRT_PPAPIHOOK_v0_1, ppapihook);

  /* This is local as a workaround to avoid having to apply
   * relocations to global variables. */
  struct PP_StartFunctions start_funcs = {
    MyPPP_InitializeModule,
    MyPPP_ShutdownModule,
    MyPPP_GetInterface,
  };
  /* Similarly, initialise some global variables, avoiding relocations. */
  struct PPP_Instance_1_0 local_ppp_instance = {
    DidCreate,
    DidDestroy,
    DidChangeView,
    DidChangeFocus,
    HandleDocumentLoad,
  };
  ppp_instance = local_ppp_instance;
  struct PPP_Messaging_1_0 local_ppp_messaging = {
    HandleMessage,
  };
  ppp_messaging = local_ppp_messaging;

  ppapihook.ppapi_start(&start_funcs);

  __libnacl_irt_basic.exit(0);
}
コード例 #2
0
ファイル: libc_free.c プロジェクト: AlinaGlavan/chromium
void _start(uintptr_t info[]) {
  Elf_auxv_t* auxv = nacl_startup_auxv(info);
  grok_auxv(auxv);
  DO_QUERY(NACL_IRT_BASIC_v0_1, __libnacl_irt_basic);
  DO_QUERY(NACL_IRT_RANDOM_v0_1, __libnacl_irt_random);

  struct nacl_irt_ppapihook ppapihook;
  DO_QUERY(NACL_IRT_PPAPIHOOK_v0_1, ppapihook);

  /* This is local as a workaround to avoid having to apply
   * relocations to global variables. */
  struct PP_StartFunctions start_funcs;
  start_funcs.PPP_InitializeModule = MyPPP_InitializeModule;
  start_funcs.PPP_ShutdownModule = MyPPP_ShutdownModule;
  start_funcs.PPP_GetInterface = MyPPP_GetInterface;
  /* Similarly, initialize some global variables, avoiding relocations. */
  ppp_instance.DidCreate = DidCreate;
  ppp_instance.DidDestroy = DidDestroy;
  ppp_instance.DidChangeView = DidChangeView;
  ppp_instance.DidChangeFocus = DidChangeFocus;
  ppp_instance.HandleDocumentLoad = HandleDocumentLoad;
  ppp_messaging.HandleMessage = HandleMessage;

  ppapihook.ppapi_start(&start_funcs);

  __libnacl_irt_basic.exit(0);
}
コード例 #3
0
/*
 * Initialize all our IRT function tables using the query function.
 * The query function's address is passed via AT_SYSINFO in auxv.
 */
void __libnacl_irt_init(Elf32_auxv_t *auxv) {
  grok_auxv(auxv);

  DO_QUERY(NACL_IRT_BASIC_v0_1, ih, basic);
  DO_QUERY(NACL_IRT_FDIO_v0_1, ih, fdio);
  //  DO_QUERY(NACL_IRT_FILENAME_v0_1, filename);
  //  DO_QUERY(NACL_IRT_MEMORY_v0_1, ih, memory);
  //  DO_QUERY(NACL_IRT_DYNCODE_v0_1, dyncode);
  //  DO_QUERY(NACL_IRT_TLS_v0_1, tls);
  //  DO_QUERY(NACL_IRT_BLOCKHOOK_v0_1, blockhook);
}