Home | History | Annotate | Download | only in profile
      1 /*===- InstrProfilingPlatformDarwin.c - Profile data on Darwin ------------===*\
      2 |*
      3 |*                     The LLVM Compiler Infrastructure
      4 |*
      5 |* This file is distributed under the University of Illinois Open Source
      6 |* License. See LICENSE.TXT for details.
      7 |*
      8 \*===----------------------------------------------------------------------===*/
      9 
     10 #include "InstrProfiling.h"
     11 
     12 #if defined(__APPLE__)
     13 /* Use linker magic to find the bounds of the Data section. */
     14 __attribute__((visibility("hidden")))
     15 extern __llvm_profile_data DataStart __asm("section$start$__DATA$__llvm_prf_data");
     16 __attribute__((visibility("hidden")))
     17 extern __llvm_profile_data DataEnd   __asm("section$end$__DATA$__llvm_prf_data");
     18 __attribute__((visibility("hidden")))
     19 extern char NamesStart __asm("section$start$__DATA$__llvm_prf_names");
     20 __attribute__((visibility("hidden")))
     21 extern char NamesEnd   __asm("section$end$__DATA$__llvm_prf_names");
     22 __attribute__((visibility("hidden")))
     23 extern uint64_t CountersStart __asm("section$start$__DATA$__llvm_prf_cnts");
     24 __attribute__((visibility("hidden")))
     25 extern uint64_t CountersEnd   __asm("section$end$__DATA$__llvm_prf_cnts");
     26 
     27 __attribute__((visibility("hidden")))
     28 const __llvm_profile_data *__llvm_profile_data_begin(void) {
     29   return &DataStart;
     30 }
     31 __attribute__((visibility("hidden")))
     32 const __llvm_profile_data *__llvm_profile_data_end(void) {
     33   return &DataEnd;
     34 }
     35 __attribute__((visibility("hidden")))
     36 const char *__llvm_profile_names_begin(void) { return &NamesStart; }
     37 __attribute__((visibility("hidden")))
     38 const char *__llvm_profile_names_end(void) { return &NamesEnd; }
     39 __attribute__((visibility("hidden")))
     40 uint64_t *__llvm_profile_counters_begin(void) { return &CountersStart; }
     41 __attribute__((visibility("hidden")))
     42 uint64_t *__llvm_profile_counters_end(void) { return &CountersEnd; }
     43 #endif
     44