Files
clang-p2996/compiler-rt/lib/profile/InstrProfilingRuntime.cc
Duncan P. N. Exon Smith 55e4d66f0c InstrProf: Support profiling dlopen'd shared libraries
Shared objects are hard.  After this commit, we do the right thing when
profiling two separate shared objects that have been dlopen'd with
`RTLD_LOCAL`, when the main executable is *not* being profiled.

This mainly simplifies the writer logic.

  - At initialization, determine the output filename and truncate the
    file.  Depending on whether shared objects can see each other, this
    may happen multiple times.

  - At exit, each executable writes its own profile in append mode.

<rdar://problem/16918688>

llvm-svn: 209053
2014-05-17 01:27:30 +00:00

31 lines
650 B
C++

//===- InstrProfilingRuntime.cpp - PGO runtime initialization -------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
extern "C" {
#include "InstrProfiling.h"
__attribute__((visibility("hidden"))) int __llvm_profile_runtime;
}
namespace {
class RegisterRuntime {
public:
RegisterRuntime() {
__llvm_profile_register_write_file_atexit();
__llvm_profile_initialize_file();
}
};
RegisterRuntime Registration;
}