diff options
author | Xinliang David Li <davidxl@google.com> | 2015-11-23 18:56:03 +0000 |
---|---|---|
committer | Xinliang David Li <davidxl@google.com> | 2015-11-23 18:56:03 +0000 |
commit | 7c7f12017844fb21a59e3a603edd42e315187bd1 (patch) | |
tree | eecec3dba1e517406b499165cdea634a884b1d13 /compiler-rt/lib/profile/InstrProfilingPlatformLinux.c | |
parent | 6376db52fe0c291f2aa1549f6c3473a6f822e9d4 (diff) | |
download | bcm5719-llvm-7c7f12017844fb21a59e3a603edd42e315187bd1.tar.gz bcm5719-llvm-7c7f12017844fb21a59e3a603edd42e315187bd1.zip |
[PGO] Unify section name, section symbol definitions (Linux)
Replace hard-coded references to names to key section and section
symbols with common macro definitions.
llvm-svn: 253897
Diffstat (limited to 'compiler-rt/lib/profile/InstrProfilingPlatformLinux.c')
-rw-r--r-- | compiler-rt/lib/profile/InstrProfilingPlatformLinux.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/compiler-rt/lib/profile/InstrProfilingPlatformLinux.c b/compiler-rt/lib/profile/InstrProfilingPlatformLinux.c index ea0bd1328a7..06514c2e863 100644 --- a/compiler-rt/lib/profile/InstrProfilingPlatformLinux.c +++ b/compiler-rt/lib/profile/InstrProfilingPlatformLinux.c @@ -12,36 +12,47 @@ #if defined(__linux__) || defined(__FreeBSD__) #include <stdlib.h> -extern __llvm_profile_data __start___llvm_prf_data LLVM_LIBRARY_VISIBILITY; -extern __llvm_profile_data __stop___llvm_prf_data LLVM_LIBRARY_VISIBILITY; -extern uint64_t __start___llvm_prf_cnts LLVM_LIBRARY_VISIBILITY; -extern uint64_t __stop___llvm_prf_cnts LLVM_LIBRARY_VISIBILITY; -extern char __start___llvm_prf_names LLVM_LIBRARY_VISIBILITY; -extern char __stop___llvm_prf_names LLVM_LIBRARY_VISIBILITY; +#define PROF_DATA_START INSTR_PROF_SECT_START(INSTR_PROF_DATA_SECT_NAME) +#define PROF_DATA_STOP INSTR_PROF_SECT_STOP(INSTR_PROF_DATA_SECT_NAME) +#define PROF_NAME_START INSTR_PROF_SECT_START(INSTR_PROF_NAME_SECT_NAME) +#define PROF_NAME_STOP INSTR_PROF_SECT_STOP(INSTR_PROF_NAME_SECT_NAME) +#define PROF_CNTS_START INSTR_PROF_SECT_START(INSTR_PROF_CNTS_SECT_NAME) +#define PROF_CNTS_STOP INSTR_PROF_SECT_STOP(INSTR_PROF_CNTS_SECT_NAME) + +/* Declare section start and stop symbols for various sections + * generated by compiler instrumentation. + */ +extern __llvm_profile_data PROF_DATA_START LLVM_LIBRARY_VISIBILITY; +extern __llvm_profile_data PROF_DATA_STOP LLVM_LIBRARY_VISIBILITY; +extern uint64_t PROF_CNTS_START LLVM_LIBRARY_VISIBILITY; +extern uint64_t PROF_CNTS_STOP LLVM_LIBRARY_VISIBILITY; +extern char PROF_NAME_START LLVM_LIBRARY_VISIBILITY; +extern char PROF_NAME_STOP LLVM_LIBRARY_VISIBILITY; /* Add dummy data to ensure the section is always created. */ -__llvm_profile_data __llvm_prof_sect_data[0] LLVM_SECTION("__llvm_prf_data"); -uint64_t __llvm_prof_cnts_sect_data[0] LLVM_SECTION("__llvm_prf_cnts"); -char __llvm_prof_nms_sect_data[0] LLVM_SECTION("__llvm_prf_names"); +__llvm_profile_data + __prof_data_sect_data[0] LLVM_SECTION(INSTR_PROF_DATA_SECT_NAME_STR); +uint64_t __prof_cnts_sect_data[0] LLVM_SECTION(INSTR_PROF_CNTS_SECT_NAME_STR); +char __prof_nms_sect_data[0] LLVM_SECTION(INSTR_PROF_NAME_SECT_NAME_STR); LLVM_LIBRARY_VISIBILITY const __llvm_profile_data * __llvm_profile_begin_data(void) { - return &__start___llvm_prf_data; + return &PROF_DATA_START; } LLVM_LIBRARY_VISIBILITY const __llvm_profile_data * __llvm_profile_end_data(void) { - return &__stop___llvm_prf_data; + return &PROF_DATA_STOP; } LLVM_LIBRARY_VISIBILITY const char *__llvm_profile_begin_names(void) { - return &__start___llvm_prf_names; + return &PROF_NAME_START; } LLVM_LIBRARY_VISIBILITY const char *__llvm_profile_end_names(void) { - return &__stop___llvm_prf_names; + return &PROF_NAME_STOP; } LLVM_LIBRARY_VISIBILITY uint64_t *__llvm_profile_begin_counters(void) { - return &__start___llvm_prf_cnts; + return &PROF_CNTS_START; } LLVM_LIBRARY_VISIBILITY uint64_t *__llvm_profile_end_counters(void) { - return &__stop___llvm_prf_cnts; + return &PROF_CNTS_STOP; } #endif |