Implement dotnet_launcher_inject() hook for heaptrack_inject
authorAleksei Vereshchagin <avereschagin@dev.rtsoft.ru>
Thu, 13 Sep 2018 20:34:46 +0000 (23:34 +0300)
committerAleksei Vereshchagin <avereschagin@dev.rtsoft.ru>
Tue, 25 Sep 2018 17:56:21 +0000 (20:56 +0300)
src/track/heaptrack_inject.cpp

index 84cc671596b3ee0872cfea65b1ea84a188a45acf..09e441d0e7fd09fbb070702e09b43ffe5adc5d42 100644 (file)
@@ -375,6 +375,7 @@ void overwrite_symbols() noexcept
 }
 
 extern "C" {
+
 void heaptrack_inject(const char* outputFileName) noexcept
 {
     heaptrack_init(outputFileName, []() { overwrite_symbols(); }, [](FILE* out) { fprintf(out, "A\n"); },
@@ -383,4 +384,34 @@ void heaptrack_inject(const char* outputFileName) noexcept
                        dl_iterate_phdr(&iterate_phdrs, &do_shutdown);
                    });
 }
+
+#if TIZEN
+int dotnet_launcher_inject() noexcept
+{
+    int res = -1;
+    char *env = nullptr;
+    char* output = nullptr;
+
+    env = getenv("DUMP_HEAPTRACK_OUTPUT");
+    if (env == nullptr) {
+        goto ret;
+    }
+
+    output = strdup(env);
+    if (output == nullptr) {
+        goto ret;
+    }
+
+    heaptrack_inject(output);
+    res = 0;
+
+ret:
+    unsetenv("DUMP_HEAPTRACK_OUTPUT");
+
+    free(output);
+
+    return res;
+}
+#endif
+
 }