62 lines
2.2 KiB
PHP
62 lines
2.2 KiB
PHP
|
|
#ifndef LLVM_PROFILEDATA_MEMPROFDATA_INC
|
||
|
|
#define LLVM_PROFILEDATA_MEMPROFDATA_INC
|
||
|
|
/*===-- MemProfData.inc - MemProf profiling runtime structures -*- C++ -*-=== *\
|
||
|
|
|*
|
||
|
|
|* 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
|
||
|
|
|*
|
||
|
|
\*===----------------------------------------------------------------------===*/
|
||
|
|
/*
|
||
|
|
* This is the main file that defines all the data structure, signature,
|
||
|
|
* constant literals that are shared across profiling runtime library,
|
||
|
|
* and host tools (reader/writer).
|
||
|
|
*
|
||
|
|
* This file has two identical copies. The primary copy lives in LLVM and
|
||
|
|
* the other one sits in compiler-rt/include/profile directory. To make changes
|
||
|
|
* in this file, first modify the primary copy and copy it over to compiler-rt.
|
||
|
|
* Testing of any change in this file can start only after the two copies are
|
||
|
|
* synced up.
|
||
|
|
*
|
||
|
|
\*===----------------------------------------------------------------------===*/
|
||
|
|
|
||
|
|
|
||
|
|
#ifdef _MSC_VER
|
||
|
|
#define PACKED(__decl__) __pragma(pack(push,1)) __decl__ __pragma(pack(pop))
|
||
|
|
#else
|
||
|
|
#define PACKED(__decl__) __decl__ __attribute__((__packed__))
|
||
|
|
#endif
|
||
|
|
|
||
|
|
// A 64-bit magic number to uniquely identify the raw binary memprof profile file.
|
||
|
|
#define MEMPROF_RAW_MAGIC_64 \
|
||
|
|
((uint64_t)255 << 56 | (uint64_t)'m' << 48 | (uint64_t)'p' << 40 | (uint64_t)'r' << 32 | \
|
||
|
|
(uint64_t)'o' << 24 | (uint64_t)'f' << 16 | (uint64_t)'r' << 8 | (uint64_t)129)
|
||
|
|
|
||
|
|
// The version number of the raw binary format.
|
||
|
|
#define MEMPROF_RAW_VERSION 1ULL
|
||
|
|
|
||
|
|
namespace llvm {
|
||
|
|
namespace memprof {
|
||
|
|
// A struct describing the header used for the raw binary memprof profile format.
|
||
|
|
PACKED(struct Header {
|
||
|
|
uint64_t Magic;
|
||
|
|
uint64_t Version;
|
||
|
|
uint64_t TotalSize;
|
||
|
|
uint64_t SegmentOffset;
|
||
|
|
uint64_t MIBOffset;
|
||
|
|
uint64_t StackOffset;
|
||
|
|
});
|
||
|
|
|
||
|
|
// A struct describing the information necessary to describe a /proc/maps
|
||
|
|
// segment entry for a particular binary/library identified by its build id.
|
||
|
|
PACKED(struct SegmentEntry {
|
||
|
|
uint64_t Start;
|
||
|
|
uint64_t End;
|
||
|
|
uint64_t Offset;
|
||
|
|
uint8_t BuildId[32];
|
||
|
|
});
|
||
|
|
} // namespace memprof
|
||
|
|
} // namespace llvm
|
||
|
|
|
||
|
|
#endif
|