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.
This commit is contained in:
Sebastian Huber
2020-09-20 15:09:48 +02:00
parent 2b1a4ac84f
commit 9f2a2075fc
4 changed files with 63 additions and 28 deletions

View File

@@ -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.
*/

View File

@@ -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));

View File

@@ -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")

View File

@@ -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