summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-20 15:09:48 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-20 17:32:10 +0200
commit9f2a2075fca6493cf9232e11a2b9b72cc4ade5a6 (patch)
treef7034ac5b4e08c2b481d16d9b38d85ba9ad48987
parent2b1a4ac84fd5fee86426fcb56ca0e78e94599eca (diff)
downloadrtems-9f2a2075fca6493cf9232e11a2b9b72cc4ade5a6.tar.bz2
capture: Move default trace data
Provide the default trace data in a separate file to avoid issues on targets with a small-data area. Close #3883.
-rw-r--r--cpukit/include/rtems/trace/rtems-trace-buffer-vars.h25
-rw-r--r--cpukit/libmisc/capture/rtems-trace-buffer-default.c36
-rw-r--r--cpukit/libmisc/capture/rtems-trace-buffer-vars.c29
-rw-r--r--spec/build/cpukit/librtemscpu.yml1
4 files changed, 63 insertions, 28 deletions
diff --git a/cpukit/include/rtems/trace/rtems-trace-buffer-vars.h b/cpukit/include/rtems/trace/rtems-trace-buffer-vars.h
index 8f0ff08587..c6a13b9a2b 100644
--- a/cpukit/include/rtems/trace/rtems-trace-buffer-vars.h
+++ b/cpukit/include/rtems/trace/rtems-trace-buffer-vars.h
@@ -16,6 +16,9 @@
#if !defined (_RTEMS_TRACE_BUFFER_VARS_H_)
#define _RTEMS_TRACE_BUFFER_VARS_H_
+#include <stdbool.h>
+#include <stdint.h>
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -43,6 +46,28 @@ typedef struct
typedef __rtld_trace_sig_arg rtems_trace_sig_arg;
typedef __rtld_trace_sig rtems_trace_sig;
+/*
+ * Trace linker data.
+ */
+extern uint32_t __rtld_trace_names_size;
+extern const char *const __rtld_trace_names[];
+extern uint32_t __rtld_trace_enables_size;
+extern const uint32_t __rtld_trace_enables[];
+extern uint32_t __rtld_trace_triggers_size;
+extern const uint32_t __rtld_trace_triggers[];
+extern const __rtld_trace_sig __rtld_trace_signatures[];
+
+/*
+ * Trace buffer generator data.
+ */
+extern const bool __rtld_tbg_present;
+extern const uint32_t __rtld_tbg_mode;
+extern const uint32_t __rtld_tbg_buffer_size;
+extern uint32_t __rtld_tbg_buffer[];
+extern volatile uint32_t __rtld_tbg_buffer_in;
+extern volatile bool __rtld_tbg_finished;
+extern volatile bool __rtld_tbg_triggered;
+
/**
* Returns the number of trace functions.
*/
diff --git a/cpukit/libmisc/capture/rtems-trace-buffer-default.c b/cpukit/libmisc/capture/rtems-trace-buffer-default.c
new file mode 100644
index 0000000000..23c66cdc88
--- /dev/null
+++ b/cpukit/libmisc/capture/rtems-trace-buffer-default.c
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2015 Chris Johns <chrisj@rtems.org>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include <rtems/trace/rtems-trace-buffer-vars.h>
+
+/**
+ * External Trace Linker and TBG data. We provide weak versions to allow us to
+ * link and be present in an application that has not been trace linked.
+ */
+
+/*
+ * Trace linker data.
+ */
+uint32_t __rtld_trace_names_size __attribute__ ((weak));
+const char *const __rtld_trace_names[1] __attribute__ ((weak));
+uint32_t __rtld_trace_enables_size __attribute__ ((weak));
+const uint32_t __rtld_trace_enables[1] __attribute__ ((weak));
+uint32_t __rtld_trace_triggers_size __attribute__ ((weak));
+const uint32_t __rtld_trace_triggers[1] __attribute__ ((weak));
+const __rtld_trace_sig __rtld_trace_signatures[1] __attribute__ ((weak));
+
+/*
+ * Trace buffer generator data.
+ */
+const bool __rtld_tbg_present __attribute__ ((weak));
+const uint32_t __rtld_tbg_mode __attribute__ ((weak));
+const uint32_t __rtld_tbg_buffer_size __attribute__ ((weak));
+uint32_t __rtld_tbg_buffer[1] __attribute__ ((weak));
+volatile uint32_t __rtld_tbg_buffer_in __attribute__ ((weak));
+volatile bool __rtld_tbg_finished __attribute__ ((weak));
+volatile bool __rtld_tbg_triggered __attribute__ ((weak));
diff --git a/cpukit/libmisc/capture/rtems-trace-buffer-vars.c b/cpukit/libmisc/capture/rtems-trace-buffer-vars.c
index b0f70707ea..ec24181253 100644
--- a/cpukit/libmisc/capture/rtems-trace-buffer-vars.c
+++ b/cpukit/libmisc/capture/rtems-trace-buffer-vars.c
@@ -6,36 +6,9 @@
* http://www.rtems.org/license/LICENSE.
*/
-#include <rtems.h>
-
#include <rtems/trace/rtems-trace-buffer-vars.h>
-/**
- * External Trace Linker and TBG data. We provide weak versions to allow us to
- * link and be present in an application that has not been trace linked.
- */
-
-/*
- * Trace linker data.
- */
-uint32_t __rtld_trace_names_size __attribute__ ((weak));
-const char *const __rtld_trace_names[1] __attribute__ ((weak));
-uint32_t __rtld_trace_enables_size __attribute__ ((weak));
-const uint32_t __rtld_trace_enables[1] __attribute__ ((weak));
-uint32_t __rtld_trace_triggers_size __attribute__ ((weak));
-const uint32_t __rtld_trace_triggers[1] __attribute__ ((weak));
-const __rtld_trace_sig __rtld_trace_signatures[1] __attribute__ ((weak));
-
-/*
- * Trace buffer generator data.
- */
-const bool __rtld_tbg_present __attribute__ ((weak));
-const uint32_t __rtld_tbg_mode __attribute__ ((weak));
-const uint32_t __rtld_tbg_buffer_size __attribute__ ((weak));
-uint32_t __rtld_tbg_buffer[1] __attribute__ ((weak));
-volatile uint32_t __rtld_tbg_buffer_in __attribute__ ((weak));
-volatile bool __rtld_tbg_finished __attribute__ ((weak));
-volatile bool __rtld_tbg_triggered __attribute__ ((weak));
+#include <rtems.h>
ISR_LOCK_DEFINE (static, __rtld_tbg_lock, "RTLD TBG")
diff --git a/spec/build/cpukit/librtemscpu.yml b/spec/build/cpukit/librtemscpu.yml
index 95322e027a..37f63d56aa 100644
--- a/spec/build/cpukit/librtemscpu.yml
+++ b/spec/build/cpukit/librtemscpu.yml
@@ -893,6 +893,7 @@ source:
- cpukit/libmisc/capture/capture-cli.c
- cpukit/libmisc/capture/capture_support.c
- cpukit/libmisc/capture/capture_user_extension.c
+- cpukit/libmisc/capture/rtems-trace-buffer-default.c
- cpukit/libmisc/capture/rtems-trace-buffer-vars.c
- cpukit/libmisc/cpuuse/cpuinforeport.c
- cpukit/libmisc/cpuuse/cpuusagedata.c