12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines/*===- InstrProfilingPlatformDarwin.c - Profile data on Darwin ------------===*\ 22d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines|* 32d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines|* The LLVM Compiler Infrastructure 42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines|* 52d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines|* This file is distributed under the University of Illinois Open Source 62d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines|* License. See LICENSE.TXT for details. 72d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines|* 82d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines\*===----------------------------------------------------------------------===*/ 92d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include "InstrProfiling.h" 112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if defined(__APPLE__) 132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines/* Use linker magic to find the bounds of the Data section. */ 142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesextern __llvm_profile_data DataStart __asm("section$start$__DATA$__llvm_prf_data"); 162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesextern __llvm_profile_data DataEnd __asm("section$end$__DATA$__llvm_prf_data"); 182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesextern char NamesStart __asm("section$start$__DATA$__llvm_prf_names"); 202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesextern char NamesEnd __asm("section$end$__DATA$__llvm_prf_names"); 222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesextern uint64_t CountersStart __asm("section$start$__DATA$__llvm_prf_cnts"); 242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesextern uint64_t CountersEnd __asm("section$end$__DATA$__llvm_prf_cnts"); 262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 286d1862363c88c183b0ed7740fca876342cf0474bStephen Hinesconst __llvm_profile_data *__llvm_profile_begin_data(void) { 292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return &DataStart; 302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 326d1862363c88c183b0ed7740fca876342cf0474bStephen Hinesconst __llvm_profile_data *__llvm_profile_end_data(void) { 332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return &DataEnd; 342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 366d1862363c88c183b0ed7740fca876342cf0474bStephen Hinesconst char *__llvm_profile_begin_names(void) { return &NamesStart; } 372d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 386d1862363c88c183b0ed7740fca876342cf0474bStephen Hinesconst char *__llvm_profile_end_names(void) { return &NamesEnd; } 392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 406d1862363c88c183b0ed7740fca876342cf0474bStephen Hinesuint64_t *__llvm_profile_begin_counters(void) { return &CountersStart; } 412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines__attribute__((visibility("hidden"))) 426d1862363c88c183b0ed7740fca876342cf0474bStephen Hinesuint64_t *__llvm_profile_end_counters(void) { return &CountersEnd; } 432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 44