Rename documentation -> Documentation
In order to be closer to the Linux kernel source tree structure, rename documentation to Documentation. Change-Id: I8690f666638ef352d201bd3c3dc1923b0d24cb12 Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-on: http://review.coreboot.org/10110 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
227
Documentation/gcov.txt
Normal file
227
Documentation/gcov.txt
Normal file
@@ -0,0 +1,227 @@
|
||||
This patch contains our local modifications for gcov-io.h and libgcov.c.
|
||||
The file gcov-iov.h is taken from a gcc build (produced at compile
|
||||
time). The file gcov-io.c is unchanged.
|
||||
|
||||
--- gcc-4.7.2/gcc/gcov-io.h 2011-12-04 10:27:19.000000000 -0800
|
||||
+++ coreboot/src/lib/gcov-io.h 2013-01-12 16:45:57.000000000 -0800
|
||||
@@ -163,6 +163,24 @@
|
||||
#ifndef GCC_GCOV_IO_H
|
||||
#define GCC_GCOV_IO_H
|
||||
|
||||
+#ifdef __COREBOOT__
|
||||
+#define GCOV_LINKAGE /* nothing */
|
||||
+/* We need the definitions for
|
||||
+ BITS_PER_UNIT and
|
||||
+ LONG_LONG_TYPE_SIZE
|
||||
+ They are defined in gcc/defaults.h and gcc/config/<arch_depend_files>
|
||||
+ (like, gcc/config/i386/i386.h). And it can be overridden by setting
|
||||
+ in build scripts. Here I hardcoded the value for x86. */
|
||||
+#define BITS_PER_UNIT 8
|
||||
+#define LONG_LONG_TYPE_SIZE 64
|
||||
+
|
||||
+/* There are many gcc_assertions. Set the vaule to 1 if we want a warning
|
||||
+ message if the assertion fails. */
|
||||
+#ifndef ENABLE_ASSERT_CHECKING
|
||||
+#define ENABLE_ASSERT_CHECKING 1
|
||||
+#endif
|
||||
+#endif /* __COREBOOT__ */
|
||||
+
|
||||
#if IN_LIBGCOV
|
||||
/* About the target */
|
||||
|
||||
@@ -232,7 +250,9 @@
|
||||
is not also used in a DSO. */
|
||||
#if IN_LIBGCOV
|
||||
|
||||
+#ifndef __COREBOOT__
|
||||
#include "tconfig.h"
|
||||
+#endif /* __COREBOOT__ */
|
||||
|
||||
#define gcov_var __gcov_var
|
||||
#define gcov_open __gcov_open
|
||||
@@ -455,8 +475,10 @@
|
||||
/* Register a new object file module. */
|
||||
extern void __gcov_init (struct gcov_info *) ATTRIBUTE_HIDDEN;
|
||||
|
||||
+#ifndef __COREBOOT__
|
||||
/* Called before fork, to avoid double counting. */
|
||||
extern void __gcov_flush (void) ATTRIBUTE_HIDDEN;
|
||||
+#endif
|
||||
|
||||
/* The merge function that just sums the counters. */
|
||||
extern void __gcov_merge_add (gcov_type *, unsigned) ATTRIBUTE_HIDDEN;
|
||||
--- gcc-4.7.2/libgcc/libgcov.c 2012-01-11 10:50:21.000000000 -0800
|
||||
+++ coreboot/src/lib/libgcov.c 2013-01-16 09:45:11.000000000 -0800
|
||||
@@ -25,12 +25,41 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
+#define __COREBOOT__
|
||||
+#ifdef __COREBOOT__
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <console/console.h>
|
||||
+#include <assert.h>
|
||||
+typedef s32 pid_t;
|
||||
+#define gcc_assert(x) ASSERT(x)
|
||||
+#define fprintf(file, x...) printk(BIOS_ERR, x)
|
||||
+#define alloca(size) __builtin_alloca (size)
|
||||
+#include "gcov-glue.c"
|
||||
+
|
||||
+/* Define MACROs to be used by coreboot compilation. */
|
||||
+# define L_gcov
|
||||
+# define L_gcov_interval_profiler
|
||||
+# define L_gcov_pow2_profiler
|
||||
+# define L_gcov_one_value_profiler
|
||||
+# define L_gcov_indirect_call_profiler
|
||||
+# define L_gcov_average_profiler
|
||||
+# define L_gcov_ior_profiler
|
||||
+
|
||||
+# define HAVE_CC_TLS 0
|
||||
+# define __GCOV_KERNEL__
|
||||
+
|
||||
+# define IN_LIBGCOV 1
|
||||
+# define IN_GCOV 0
|
||||
+#else /* __COREBOOT__ */
|
||||
#include "tconfig.h"
|
||||
#include "tsystem.h"
|
||||
#include "coretypes.h"
|
||||
#include "tm.h"
|
||||
#include "libgcc_tm.h"
|
||||
+#endif /* __COREBOOT__ */
|
||||
|
||||
+#ifndef __COREBOOT__
|
||||
#if defined(inhibit_libc)
|
||||
#define IN_LIBGCOV (-1)
|
||||
#else
|
||||
@@ -41,6 +70,7 @@
|
||||
#define GCOV_LINKAGE /* nothing */
|
||||
#endif
|
||||
#endif
|
||||
+#endif /* __COREBOOT__ */
|
||||
#include "gcov-io.h"
|
||||
|
||||
#if defined(inhibit_libc)
|
||||
@@ -68,12 +98,17 @@
|
||||
|
||||
#else
|
||||
|
||||
+#ifndef __COREBOOT__
|
||||
#include <string.h>
|
||||
#if GCOV_LOCKED
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
+#else
|
||||
+void __gcov_merge_add(gcov_type *counters __attribute__ ((unused)),
|
||||
+ unsigned n_counters __attribute__ ((unused))) {}
|
||||
+#endif /* __COREBOOT__ */
|
||||
|
||||
#ifdef L_gcov
|
||||
#include "gcov-io.c"
|
||||
@@ -99,6 +134,10 @@
|
||||
static int
|
||||
create_file_directory (char *filename)
|
||||
{
|
||||
+#ifdef __COREBOOT__
|
||||
+ (void) filename;
|
||||
+ return 0;
|
||||
+#else
|
||||
#if !defined(TARGET_POSIX_IO) && !defined(_WIN32)
|
||||
(void) filename;
|
||||
return -1;
|
||||
@@ -137,6 +176,7 @@
|
||||
};
|
||||
return 0;
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
|
||||
static struct gcov_fn_buffer *
|
||||
@@ -279,7 +319,7 @@
|
||||
struct gcov_ctr_summary *cs_ptr;
|
||||
const struct gcov_ctr_info *ci_ptr;
|
||||
unsigned t_ix;
|
||||
- int f_ix;
|
||||
+ int f_ix = 0;
|
||||
gcov_unsigned_t c_num;
|
||||
const char *gcov_prefix;
|
||||
int gcov_prefix_strip = 0;
|
||||
@@ -329,6 +369,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#ifndef __COREBOOT__
|
||||
{
|
||||
/* Check if the level of dirs to strip off specified. */
|
||||
char *tmp = getenv("GCOV_PREFIX_STRIP");
|
||||
@@ -352,6 +393,7 @@
|
||||
prefix_length--;
|
||||
}
|
||||
else
|
||||
+#endif
|
||||
prefix_length = 0;
|
||||
|
||||
/* If no prefix was specified and a prefix stip, then we assume
|
||||
@@ -696,8 +738,10 @@
|
||||
if (filename_length > gcov_max_filename)
|
||||
gcov_max_filename = filename_length;
|
||||
|
||||
+#ifndef __COREBOOT__
|
||||
if (!gcov_list)
|
||||
atexit (gcov_exit);
|
||||
+#endif
|
||||
|
||||
info->next = gcov_list;
|
||||
gcov_list = info;
|
||||
@@ -767,14 +811,15 @@
|
||||
|
||||
#ifdef L_gcov_merge_single
|
||||
/* The profile merging function for choosing the most common value.
|
||||
- It is given an array COUNTERS of N_COUNTERS old counters and it
|
||||
- reads the same number of counters from the gcov file. The counters
|
||||
- are split into 3-tuples where the members of the tuple have
|
||||
- meanings:
|
||||
-
|
||||
- -- the stored candidate on the most common value of the measured entity
|
||||
- -- counter
|
||||
- -- total number of evaluations of the value */
|
||||
+ * It is given an array COUNTERS of N_COUNTERS old counters and it
|
||||
+ * reads the same number of counters from the gcov file. The counters
|
||||
+ * are split into 3-tuples where the members of the tuple have
|
||||
+ * meanings:
|
||||
+ *
|
||||
+ * -- the stored candidate on the most common value of the measured entity
|
||||
+ * -- counter
|
||||
+ * -- total number of evaluations of the value
|
||||
+ */
|
||||
void
|
||||
__gcov_merge_single (gcov_type *counters, unsigned n_counters)
|
||||
{
|
||||
@@ -805,15 +850,16 @@
|
||||
|
||||
#ifdef L_gcov_merge_delta
|
||||
/* The profile merging function for choosing the most common
|
||||
- difference between two consecutive evaluations of the value. It is
|
||||
- given an array COUNTERS of N_COUNTERS old counters and it reads the
|
||||
- same number of counters from the gcov file. The counters are split
|
||||
- into 4-tuples where the members of the tuple have meanings:
|
||||
-
|
||||
- -- the last value of the measured entity
|
||||
- -- the stored candidate on the most common difference
|
||||
- -- counter
|
||||
- -- total number of evaluations of the value */
|
||||
+ * difference between two consecutive evaluations of the value. It is
|
||||
+ * given an array COUNTERS of N_COUNTERS old counters and it reads the
|
||||
+ * same number of counters from the gcov file. The counters are split
|
||||
+ * into 4-tuples where the members of the tuple have meanings:
|
||||
+ *
|
||||
+ * -- the last value of the measured entity
|
||||
+ * -- the stored candidate on the most common difference
|
||||
+ * -- counter
|
||||
+ * -- total number of evaluations of the value
|
||||
+ */
|
||||
void
|
||||
__gcov_merge_delta (gcov_type *counters, unsigned n_counters)
|
||||
{
|
Reference in New Issue
Block a user