mirror of
https://github.com/intel/llvm.git
synced 2026-02-02 10:08:59 +08:00
to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636
77 lines
3.1 KiB
C
77 lines
3.1 KiB
C
/*===- InstrProfilingPlatformLinux.c - Profile data Linux platform ------===*\
|
|
|*
|
|
|* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
|* See https://llvm.org/LICENSE.txt for license information.
|
|
|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|*
|
|
\*===----------------------------------------------------------------------===*/
|
|
|
|
#if defined(__linux__) || defined(__FreeBSD__) || defined(__Fuchsia__) || \
|
|
(defined(__sun__) && defined(__svr4__)) || defined(__NetBSD__)
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include "InstrProfiling.h"
|
|
|
|
#define PROF_DATA_START INSTR_PROF_SECT_START(INSTR_PROF_DATA_SECT_NAME)
|
|
#define PROF_DATA_STOP INSTR_PROF_SECT_STOP(INSTR_PROF_DATA_SECT_NAME)
|
|
#define PROF_NAME_START INSTR_PROF_SECT_START(INSTR_PROF_NAME_SECT_NAME)
|
|
#define PROF_NAME_STOP INSTR_PROF_SECT_STOP(INSTR_PROF_NAME_SECT_NAME)
|
|
#define PROF_CNTS_START INSTR_PROF_SECT_START(INSTR_PROF_CNTS_SECT_NAME)
|
|
#define PROF_CNTS_STOP INSTR_PROF_SECT_STOP(INSTR_PROF_CNTS_SECT_NAME)
|
|
#define PROF_VNODES_START INSTR_PROF_SECT_START(INSTR_PROF_VNODES_SECT_NAME)
|
|
#define PROF_VNODES_STOP INSTR_PROF_SECT_STOP(INSTR_PROF_VNODES_SECT_NAME)
|
|
|
|
/* Declare section start and stop symbols for various sections
|
|
* generated by compiler instrumentation.
|
|
*/
|
|
extern __llvm_profile_data PROF_DATA_START COMPILER_RT_VISIBILITY;
|
|
extern __llvm_profile_data PROF_DATA_STOP COMPILER_RT_VISIBILITY;
|
|
extern uint64_t PROF_CNTS_START COMPILER_RT_VISIBILITY;
|
|
extern uint64_t PROF_CNTS_STOP COMPILER_RT_VISIBILITY;
|
|
extern char PROF_NAME_START COMPILER_RT_VISIBILITY;
|
|
extern char PROF_NAME_STOP COMPILER_RT_VISIBILITY;
|
|
extern ValueProfNode PROF_VNODES_START COMPILER_RT_VISIBILITY;
|
|
extern ValueProfNode PROF_VNODES_STOP COMPILER_RT_VISIBILITY;
|
|
|
|
/* Add dummy data to ensure the section is always created. */
|
|
__llvm_profile_data
|
|
__prof_data_sect_data[0] COMPILER_RT_SECTION(INSTR_PROF_DATA_SECT_NAME_STR);
|
|
uint64_t
|
|
__prof_cnts_sect_data[0] COMPILER_RT_SECTION(INSTR_PROF_CNTS_SECT_NAME_STR);
|
|
char __prof_nms_sect_data[0] COMPILER_RT_SECTION(INSTR_PROF_NAME_SECT_NAME_STR);
|
|
ValueProfNode __prof_vnodes_sect_data[0] COMPILER_RT_SECTION(INSTR_PROF_VNODES_SECT_NAME_STR);
|
|
|
|
COMPILER_RT_VISIBILITY const __llvm_profile_data *
|
|
__llvm_profile_begin_data(void) {
|
|
return &PROF_DATA_START;
|
|
}
|
|
COMPILER_RT_VISIBILITY const __llvm_profile_data *
|
|
__llvm_profile_end_data(void) {
|
|
return &PROF_DATA_STOP;
|
|
}
|
|
COMPILER_RT_VISIBILITY const char *__llvm_profile_begin_names(void) {
|
|
return &PROF_NAME_START;
|
|
}
|
|
COMPILER_RT_VISIBILITY const char *__llvm_profile_end_names(void) {
|
|
return &PROF_NAME_STOP;
|
|
}
|
|
COMPILER_RT_VISIBILITY uint64_t *__llvm_profile_begin_counters(void) {
|
|
return &PROF_CNTS_START;
|
|
}
|
|
COMPILER_RT_VISIBILITY uint64_t *__llvm_profile_end_counters(void) {
|
|
return &PROF_CNTS_STOP;
|
|
}
|
|
|
|
COMPILER_RT_VISIBILITY ValueProfNode *
|
|
__llvm_profile_begin_vnodes(void) {
|
|
return &PROF_VNODES_START;
|
|
}
|
|
COMPILER_RT_VISIBILITY ValueProfNode *__llvm_profile_end_vnodes(void) {
|
|
return &PROF_VNODES_STOP;
|
|
}
|
|
COMPILER_RT_VISIBILITY ValueProfNode *CurrentVNode = &PROF_VNODES_START;
|
|
COMPILER_RT_VISIBILITY ValueProfNode *EndVNode = &PROF_VNODES_STOP;
|
|
|
|
#endif
|