From f217c823f1c203bc26bba463e2e5cfa89e8fd086 Mon Sep 17 00:00:00 2001 From: Milian Wolff Date: Tue, 9 Dec 2014 21:54:07 +0100 Subject: [PATCH] Overwrite symbols after dlopen in injected heaptrack. --- heaptrack_inject.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/heaptrack_inject.cpp b/heaptrack_inject.cpp index f4f37fd..720efd9 100644 --- a/heaptrack_inject.cpp +++ b/heaptrack_inject.cpp @@ -35,6 +35,8 @@ namespace { +void overwrite_symbols(); + namespace hooks { struct malloc @@ -109,8 +111,8 @@ struct dlopen { auto ret = original(filename, flag); if (ret) { - // TODO: we probably need to overwrite the symbols in the new modules as well heaptrack_invalidate_module_cache(); + overwrite_symbols(); } return ret; } @@ -249,6 +251,11 @@ int iterate_phdrs(dl_phdr_info *info, size_t /*size*/, void *data) return 0; } +void overwrite_symbols() +{ + dl_iterate_phdr(&iterate_phdrs, nullptr); +} + } extern "C" { @@ -256,7 +263,7 @@ extern "C" { void heaptrack_inject(const char *outputFileName) { heaptrack_init(outputFileName, [] () { - dl_iterate_phdr(&iterate_phdrs, nullptr); + overwrite_symbols(); }, [] () { auto out = heaptrack_output_file(); fprintf(out, "A BEGIN_MALLOC_INFO\n"); -- 2.7.4