#include "libc_init_common.h"
#include "private/bionic_globals.h"
+#include "private/bionic_ssp.h"
#include "private/bionic_tls.h"
#include "private/KernelArgumentBlock.h"
extern "C" {
- extern void malloc_debug_fini(void);
extern void netdClientInit(void);
extern int __cxa_atexit(void (*)(void *), void *, void *);
};
// __libc_init_common() will change the TLS area so the old one won't be accessible anyway.
*args_slot = NULL;
+ // The linker has initialized its copy of the global stack_chk_guard, and filled in the main
+ // thread's TLS slot with that value. Initialize the local global stack guard with its value.
+ __stack_chk_guard = reinterpret_cast<uintptr_t>(tls[TLS_SLOT_STACK_GUARD]);
+
__libc_init_globals(*args);
__libc_init_common(*args);
netdClientInit();
}
-__LIBC_HIDDEN__ void __libc_postfini() {
- // A hook for the debug malloc library to let it know that we're shutting down.
- malloc_debug_fini();
-}
-
// This function is called from the executable's _start entry point
// (see arch-$ARCH/bionic/crtbegin_dynamic.S), which is itself
// called by the dynamic linker after it has loaded all shared
exit(slingshot(args.argc, args.argv, args.envp));
}
+
+extern "C" uint32_t android_get_application_target_sdk_version();
+
+uint32_t bionic_get_application_target_sdk_version() {
+ return android_get_application_target_sdk_version();
+}