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. */ 14COMPILER_RT_VISIBILITY 15extern __llvm_profile_data 16 DataStart __asm("section$start$__DATA$" INSTR_PROF_DATA_SECT_NAME_STR); 17COMPILER_RT_VISIBILITY 18extern __llvm_profile_data 19 DataEnd __asm("section$end$__DATA$" INSTR_PROF_DATA_SECT_NAME_STR); 20COMPILER_RT_VISIBILITY 21extern char 22 NamesStart __asm("section$start$__DATA$" INSTR_PROF_NAME_SECT_NAME_STR); 23COMPILER_RT_VISIBILITY 24extern char NamesEnd __asm("section$end$__DATA$" INSTR_PROF_NAME_SECT_NAME_STR); 25COMPILER_RT_VISIBILITY 26extern uint64_t 27 CountersStart __asm("section$start$__DATA$" INSTR_PROF_CNTS_SECT_NAME_STR); 28COMPILER_RT_VISIBILITY 29extern uint64_t 30 CountersEnd __asm("section$end$__DATA$" INSTR_PROF_CNTS_SECT_NAME_STR); 31 32COMPILER_RT_VISIBILITY 33const __llvm_profile_data *__llvm_profile_begin_data(void) { 34 return &DataStart; 35} 36COMPILER_RT_VISIBILITY 37const __llvm_profile_data *__llvm_profile_end_data(void) { return &DataEnd; } 38COMPILER_RT_VISIBILITY 39const char *__llvm_profile_begin_names(void) { return &NamesStart; } 40COMPILER_RT_VISIBILITY 41const char *__llvm_profile_end_names(void) { return &NamesEnd; } 42COMPILER_RT_VISIBILITY 43uint64_t *__llvm_profile_begin_counters(void) { return &CountersStart; } 44COMPILER_RT_VISIBILITY 45uint64_t *__llvm_profile_end_counters(void) { return &CountersEnd; } 46#endif 47