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