summaryrefslogtreecommitdiff
path: root/chromium/content/zygote/zygote_main_linux.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/zygote/zygote_main_linux.cc')
-rw-r--r--chromium/content/zygote/zygote_main_linux.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/chromium/content/zygote/zygote_main_linux.cc b/chromium/content/zygote/zygote_main_linux.cc
index 2e5cc7e98d5..8e91c2f17e5 100644
--- a/chromium/content/zygote/zygote_main_linux.cc
+++ b/chromium/content/zygote/zygote_main_linux.cc
@@ -181,6 +181,8 @@ static void InitLibcLocaltimeFunctions() {
// references to localtime() will resolve to this function. Notice that we need
// to set visibility attribute to "default" to export the symbol, as it is set
// to "hidden" by default in chrome per build/common.gypi.
+__attribute__ ((__visibility__("default")))
+struct tm* localtime_override(const time_t* timep) __asm__ ("localtime");
__attribute__ ((__visibility__("default")))
struct tm* localtime_override(const time_t* timep) {
@@ -197,6 +199,10 @@ struct tm* localtime_override(const time_t* timep) {
}
}
+// Use same trick to override localtime64(), localtime_r() and localtime64_r().
+__attribute__ ((__visibility__("default")))
+struct tm* localtime64_override(const time_t* timep) __asm__ ("localtime64");
+
__attribute__ ((__visibility__("default")))
struct tm* localtime64_override(const time_t* timep) {
if (g_am_zygote_or_renderer) {
@@ -213,6 +219,10 @@ struct tm* localtime64_override(const time_t* timep) {
}
__attribute__ ((__visibility__("default")))
+struct tm* localtime_r_override(const time_t* timep,
+ struct tm* result) __asm__ ("localtime_r");
+
+__attribute__ ((__visibility__("default")))
struct tm* localtime_r_override(const time_t* timep, struct tm* result) {
if (g_am_zygote_or_renderer) {
ProxyLocaltimeCallToBrowser(*timep, result, NULL, 0);
@@ -225,6 +235,10 @@ struct tm* localtime_r_override(const time_t* timep, struct tm* result) {
}
__attribute__ ((__visibility__("default")))
+struct tm* localtime64_r_override(const time_t* timep,
+ struct tm* result) __asm__ ("localtime64_r");
+
+__attribute__ ((__visibility__("default")))
struct tm* localtime64_r_override(const time_t* timep, struct tm* result) {
if (g_am_zygote_or_renderer) {
ProxyLocaltimeCallToBrowser(*timep, result, NULL, 0);