123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- #ifndef GCC_GCOV_IO_H
- #define GCC_GCOV_IO_H
- #ifndef IN_LIBGCOV
- typedef unsigned gcov_unsigned_t;
- typedef unsigned gcov_position_t;
- #if IN_GCOV
- #define GCOV_LINKAGE static
- typedef int64_t gcov_type;
- typedef uint64_t gcov_type_unsigned;
- #if IN_GCOV > 0
- #include <sys/types.h>
- #endif
- #else
- #define GCOV_TYPE_SIZE (LONG_LONG_TYPE_SIZE > 32 ? 64 : 32)
- #endif
- #if defined (HOST_HAS_F_SETLKW)
- #define GCOV_LOCKED 1
- #else
- #define GCOV_LOCKED 0
- #endif
- #define ATTRIBUTE_HIDDEN
- #endif
- #ifndef GCOV_LINKAGE
- #define GCOV_LINKAGE extern
- #endif
- #if IN_LIBGCOV
- #define gcov_nonruntime_assert(EXPR) ((void)(0 && (EXPR)))
- #else
- #define gcov_nonruntime_assert(EXPR) gcc_assert (EXPR)
- #define gcov_error(...) fatal_error (input_location, __VA_ARGS__)
- #endif
- #define GCOV_DATA_SUFFIX ".gcda"
- #define GCOV_NOTE_SUFFIX ".gcno"
- #define GCOV_DATA_MAGIC ((gcov_unsigned_t)0x67636461)
- #define GCOV_NOTE_MAGIC ((gcov_unsigned_t)0x67636e6f)
- #include "gcov-iov.h"
- #define GCOV_UNSIGNED2STRING(ARRAY,VALUE) \
- ((ARRAY)[0] = (char)((VALUE) >> 24), \
- (ARRAY)[1] = (char)((VALUE) >> 16), \
- (ARRAY)[2] = (char)((VALUE) >> 8), \
- (ARRAY)[3] = (char)((VALUE) >> 0))
- #define GCOV_TAG_FUNCTION ((gcov_unsigned_t)0x01000000)
- #define GCOV_TAG_FUNCTION_LENGTH (3)
- #define GCOV_TAG_BLOCKS ((gcov_unsigned_t)0x01410000)
- #define GCOV_TAG_BLOCKS_LENGTH(NUM) (NUM)
- #define GCOV_TAG_BLOCKS_NUM(LENGTH) (LENGTH)
- #define GCOV_TAG_ARCS ((gcov_unsigned_t)0x01430000)
- #define GCOV_TAG_ARCS_LENGTH(NUM) (1 + (NUM) * 2)
- #define GCOV_TAG_ARCS_NUM(LENGTH) (((LENGTH) - 1) / 2)
- #define GCOV_TAG_LINES ((gcov_unsigned_t)0x01450000)
- #define GCOV_TAG_COUNTER_BASE ((gcov_unsigned_t)0x01a10000)
- #define GCOV_TAG_COUNTER_LENGTH(NUM) ((NUM) * 2)
- #define GCOV_TAG_COUNTER_NUM(LENGTH) ((LENGTH) / 2)
- #define GCOV_TAG_OBJECT_SUMMARY ((gcov_unsigned_t)0xa1000000)
- #define GCOV_TAG_PROGRAM_SUMMARY ((gcov_unsigned_t)0xa3000000)
- #define GCOV_TAG_SUMMARY_LENGTH(NUM) \
- (1 + GCOV_COUNTERS_SUMMABLE * (10 + 3 * 2) + (NUM) * 5)
- #define GCOV_TAG_AFDO_FILE_NAMES ((gcov_unsigned_t)0xaa000000)
- #define GCOV_TAG_AFDO_FUNCTION ((gcov_unsigned_t)0xac000000)
- #define GCOV_TAG_AFDO_WORKING_SET ((gcov_unsigned_t)0xaf000000)
- #define DEF_GCOV_COUNTER(COUNTER, NAME, MERGE_FN) COUNTER,
- enum {
- #include "gcov-counter.def"
- GCOV_COUNTERS
- };
- #undef DEF_GCOV_COUNTER
- #define GCOV_COUNTERS_SUMMABLE (GCOV_COUNTER_ARCS + 1)
- #define GCOV_FIRST_VALUE_COUNTER GCOV_COUNTERS_SUMMABLE
- #define GCOV_LAST_VALUE_COUNTER (GCOV_COUNTERS - 1)
- #define GCOV_N_VALUE_COUNTERS \
- (GCOV_LAST_VALUE_COUNTER - GCOV_FIRST_VALUE_COUNTER + 1)
- #define GCOV_ICALL_TOPN_VAL 2
- #define GCOV_ICALL_TOPN_NCOUNTS (1 + GCOV_ICALL_TOPN_VAL * 4)
- #define GCOV_TAG_FOR_COUNTER(COUNT) \
- (GCOV_TAG_COUNTER_BASE + ((gcov_unsigned_t)(COUNT) << 17))
- #define GCOV_COUNTER_FOR_TAG(TAG) \
- ((unsigned)(((TAG) - GCOV_TAG_COUNTER_BASE) >> 17))
- #define GCOV_TAG_IS_COUNTER(TAG) \
- (!((TAG) & 0xFFFF) && GCOV_COUNTER_FOR_TAG (TAG) < GCOV_COUNTERS)
- #define GCOV_TAG_MASK(TAG) (((TAG) - 1) ^ (TAG))
- #define GCOV_TAG_IS_SUBTAG(TAG,SUB) \
- (GCOV_TAG_MASK (TAG) >> 8 == GCOV_TAG_MASK (SUB) \
- && !(((SUB) ^ (TAG)) & ~GCOV_TAG_MASK (TAG)))
- #define GCOV_TAG_IS_SUBLEVEL(TAG,SUB) \
- (GCOV_TAG_MASK (TAG) > GCOV_TAG_MASK (SUB))
- #define GCOV_BLOCK_UNEXPECTED (1 << 1)
- #define GCOV_ARC_ON_TREE (1 << 0)
- #define GCOV_ARC_FAKE (1 << 1)
- #define GCOV_ARC_FALLTHROUGH (1 << 2)
- typedef struct
- {
-
- gcov_unsigned_t num_counters;
-
- gcov_type min_value;
-
- gcov_type cum_value;
- } gcov_bucket_type;
- #define GCOV_HISTOGRAM_SIZE 252
- #define GCOV_HISTOGRAM_BITVECTOR_SIZE (GCOV_HISTOGRAM_SIZE + 31) / 32
- struct gcov_ctr_summary
- {
- gcov_unsigned_t num;
- gcov_unsigned_t runs;
- gcov_type sum_all;
- gcov_type run_max;
- gcov_type sum_max;
- gcov_bucket_type histogram[GCOV_HISTOGRAM_SIZE];
- };
- struct gcov_summary
- {
- gcov_unsigned_t checksum;
- struct gcov_ctr_summary ctrs[GCOV_COUNTERS_SUMMABLE];
- };
- #if !defined(inhibit_libc)
- #if !IN_LIBGCOV
- GCOV_LINKAGE int gcov_open (const char *, int );
- GCOV_LINKAGE int gcov_magic (gcov_unsigned_t, gcov_unsigned_t);
- #endif
- GCOV_LINKAGE int gcov_close (void) ATTRIBUTE_HIDDEN;
- GCOV_LINKAGE gcov_unsigned_t gcov_read_unsigned (void) ATTRIBUTE_HIDDEN;
- GCOV_LINKAGE gcov_type gcov_read_counter (void) ATTRIBUTE_HIDDEN;
- GCOV_LINKAGE void gcov_read_summary (struct gcov_summary *) ATTRIBUTE_HIDDEN;
- GCOV_LINKAGE const char *gcov_read_string (void);
- GCOV_LINKAGE void gcov_sync (gcov_position_t ,
- gcov_unsigned_t );
- #if !IN_GCOV
- GCOV_LINKAGE void gcov_write_unsigned (gcov_unsigned_t) ATTRIBUTE_HIDDEN;
- #endif
- #if !IN_GCOV && !IN_LIBGCOV
- GCOV_LINKAGE unsigned gcov_histo_index (gcov_type value);
- GCOV_LINKAGE void gcov_write_string (const char *);
- GCOV_LINKAGE gcov_position_t gcov_write_tag (gcov_unsigned_t);
- GCOV_LINKAGE void gcov_write_length (gcov_position_t );
- #endif
- #if IN_GCOV <= 0 && !IN_LIBGCOV
- #define NUM_GCOV_WORKING_SETS 128
- typedef struct gcov_working_set_info
- {
-
- unsigned num_counters;
-
- gcov_type min_counter;
- } gcov_working_set_t;
- GCOV_LINKAGE void compute_working_sets (const struct gcov_ctr_summary *summary,
- gcov_working_set_t *gcov_working_sets);
- #endif
- #if IN_GCOV > 0
- GCOV_LINKAGE time_t gcov_time (void);
- #endif
- #endif
- #endif
|