root/kernel/gcov/gcc_base.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. __gcov_init
  2. __gcov_flush
  3. __gcov_merge_add
  4. __gcov_merge_single
  5. __gcov_merge_delta
  6. __gcov_merge_ior
  7. __gcov_merge_time_profile
  8. __gcov_merge_icall_topn
  9. __gcov_exit

   1 // SPDX-License-Identifier: GPL-2.0
   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         /* Unused. */
  43 }
  44 EXPORT_SYMBOL(__gcov_flush);
  45 
  46 void __gcov_merge_add(gcov_type *counters, unsigned int n_counters)
  47 {
  48         /* Unused. */
  49 }
  50 EXPORT_SYMBOL(__gcov_merge_add);
  51 
  52 void __gcov_merge_single(gcov_type *counters, unsigned int n_counters)
  53 {
  54         /* Unused. */
  55 }
  56 EXPORT_SYMBOL(__gcov_merge_single);
  57 
  58 void __gcov_merge_delta(gcov_type *counters, unsigned int n_counters)
  59 {
  60         /* Unused. */
  61 }
  62 EXPORT_SYMBOL(__gcov_merge_delta);
  63 
  64 void __gcov_merge_ior(gcov_type *counters, unsigned int n_counters)
  65 {
  66         /* Unused. */
  67 }
  68 EXPORT_SYMBOL(__gcov_merge_ior);
  69 
  70 void __gcov_merge_time_profile(gcov_type *counters, unsigned int n_counters)
  71 {
  72         /* Unused. */
  73 }
  74 EXPORT_SYMBOL(__gcov_merge_time_profile);
  75 
  76 void __gcov_merge_icall_topn(gcov_type *counters, unsigned int n_counters)
  77 {
  78         /* Unused. */
  79 }
  80 EXPORT_SYMBOL(__gcov_merge_icall_topn);
  81 
  82 void __gcov_exit(void)
  83 {
  84         /* Unused. */
  85 }
  86 EXPORT_SYMBOL(__gcov_exit);

/* [<][>][^][v][top][bottom][index][help] */