| 1 | |
| 2 |
|
| 3 | #include <linux/export.h>
|
| 4 | #include <linux/kernel.h>
|
| 5 | #include <linux/mutex.h>
|
| 6 | #include "gcov.h"
|
| 7 |
|
| 8 | |
| 9 | * __gcov_init is called by gcc-generated constructor code for each object
|
| 10 | * file compiled with -fprofile-arcs.
|
| 11 |
|
| 12 | void __gcov_init(struct gcov_info *info)
|
| 13 | {
|
| 14 | static unsigned int gcov_version;
|
| 15 |
|
| 16 | mutex_lock(&gcov_lock);
|
| 17 | if (gcov_version == 0) {
|
| 18 | gcov_version = gcov_info_version(info);
|
| 19 | |
| 20 | * Printing gcc's version magic may prove useful for debugging
|
| 21 | * incompatibility reports.
|
| 22 |
|
| 23 | pr_info("version magic: 0x%x\n", gcov_version);
|
| 24 | }
|
| 25 | |
| 26 | * Add new profiling data structure to list and inform event
|
| 27 | * listener.
|
| 28 |
|
| 29 | gcov_info_link(info);
|
| 30 | if (gcov_events_enabled)
|
| 31 | gcov_event(GCOV_ADD, info);
|
| 32 | mutex_unlock(&gcov_lock);
|
| 33 | }
|
| 34 | EXPORT_SYMBOL(__gcov_init);
|
| 35 |
|
| 36 | |
| 37 | * These functions may be referenced by gcc-generated profiling code but serve
|
| 38 | * no function for kernel profiling.
|
| 39 |
|
| 40 | void __gcov_flush(void)
|
| 41 | {
|
| 42 |
|
| 43 | }
|
| 44 | EXPORT_SYMBOL(__gcov_flush);
|
| 45 |
|
| 46 | void __gcov_merge_add(gcov_type *counters, unsigned int n_counters)
|
| 47 | {
|
| 48 |
|
| 49 | }
|
| 50 | EXPORT_SYMBOL(__gcov_merge_add);
|
| 51 |
|
| 52 | void __gcov_merge_single(gcov_type *counters, unsigned int n_counters)
|
| 53 | {
|
| 54 |
|
| 55 | }
|
| 56 | EXPORT_SYMBOL(__gcov_merge_single);
|
| 57 |
|
| 58 | void __gcov_merge_delta(gcov_type *counters, unsigned int n_counters)
|
| 59 | {
|
| 60 |
|
| 61 | }
|
| 62 | EXPORT_SYMBOL(__gcov_merge_delta);
|
| 63 |
|
| 64 | void __gcov_merge_ior(gcov_type *counters, unsigned int n_counters)
|
| 65 | {
|
| 66 |
|
| 67 | }
|
| 68 | EXPORT_SYMBOL(__gcov_merge_ior);
|
| 69 |
|
| 70 | void __gcov_merge_time_profile(gcov_type *counters, unsigned int n_counters)
|
| 71 | {
|
| 72 |
|
| 73 | }
|
| 74 | EXPORT_SYMBOL(__gcov_merge_time_profile);
|
| 75 |
|
| 76 | void __gcov_merge_icall_topn(gcov_type *counters, unsigned int n_counters)
|
| 77 | {
|
| 78 |
|
| 79 | }
|
| 80 | EXPORT_SYMBOL(__gcov_merge_icall_topn);
|
| 81 |
|
| 82 | void __gcov_exit(void)
|
| 83 | {
|
| 84 |
|
| 85 | }
|
| 86 | EXPORT_SYMBOL(__gcov_exit);
|