InstrProfilingPlatformDarwin.c revision 1.1.1.3
1/*===- InstrProfilingPlatformDarwin.c - Profile data on Darwin ------------===*\ 2|* 3|* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4|* See https://llvm.org/LICENSE.txt for license information. 5|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6|* 7\*===----------------------------------------------------------------------===*/ 8 9// Note: This is linked into the Darwin kernel, and must remain compatible 10// with freestanding compilation. See `darwin_add_builtin_libraries`. 11 12#include "InstrProfiling.h" 13#include "InstrProfilingInternal.h" 14 15#if defined(__APPLE__) 16/* Use linker magic to find the bounds of the Data section. */ 17COMPILER_RT_VISIBILITY 18extern __llvm_profile_data 19 DataStart __asm("section$start$__DATA$" INSTR_PROF_DATA_SECT_NAME); 20COMPILER_RT_VISIBILITY 21extern __llvm_profile_data 22 DataEnd __asm("section$end$__DATA$" INSTR_PROF_DATA_SECT_NAME); 23COMPILER_RT_VISIBILITY 24extern char 25 NamesStart __asm("section$start$__DATA$" INSTR_PROF_NAME_SECT_NAME); 26COMPILER_RT_VISIBILITY 27extern char NamesEnd __asm("section$end$__DATA$" INSTR_PROF_NAME_SECT_NAME); 28COMPILER_RT_VISIBILITY 29extern char 30 CountersStart __asm("section$start$__DATA$" INSTR_PROF_CNTS_SECT_NAME); 31COMPILER_RT_VISIBILITY 32extern char CountersEnd __asm("section$end$__DATA$" INSTR_PROF_CNTS_SECT_NAME); 33COMPILER_RT_VISIBILITY 34extern uint32_t 35 OrderFileStart __asm("section$start$__DATA$" INSTR_PROF_ORDERFILE_SECT_NAME); 36 37COMPILER_RT_VISIBILITY 38extern ValueProfNode 39 VNodesStart __asm("section$start$__DATA$" INSTR_PROF_VNODES_SECT_NAME); 40COMPILER_RT_VISIBILITY 41extern ValueProfNode 42 VNodesEnd __asm("section$end$__DATA$" INSTR_PROF_VNODES_SECT_NAME); 43 44COMPILER_RT_VISIBILITY 45const __llvm_profile_data *__llvm_profile_begin_data(void) { 46 return &DataStart; 47} 48COMPILER_RT_VISIBILITY 49const __llvm_profile_data *__llvm_profile_end_data(void) { return &DataEnd; } 50COMPILER_RT_VISIBILITY 51const char *__llvm_profile_begin_names(void) { return &NamesStart; } 52COMPILER_RT_VISIBILITY 53const char *__llvm_profile_end_names(void) { return &NamesEnd; } 54COMPILER_RT_VISIBILITY 55char *__llvm_profile_begin_counters(void) { return &CountersStart; } 56COMPILER_RT_VISIBILITY 57char *__llvm_profile_end_counters(void) { return &CountersEnd; } 58COMPILER_RT_VISIBILITY 59uint32_t *__llvm_profile_begin_orderfile(void) { return &OrderFileStart; } 60 61COMPILER_RT_VISIBILITY 62ValueProfNode *__llvm_profile_begin_vnodes(void) { 63 return &VNodesStart; 64} 65COMPILER_RT_VISIBILITY 66ValueProfNode *__llvm_profile_end_vnodes(void) { return &VNodesEnd; } 67 68COMPILER_RT_VISIBILITY ValueProfNode *CurrentVNode = &VNodesStart; 69COMPILER_RT_VISIBILITY ValueProfNode *EndVNode = &VNodesEnd; 70 71COMPILER_RT_VISIBILITY int __llvm_write_binary_ids(ProfDataWriter *Writer) { 72 return 0; 73} 74 75#endif 76