1 | ; |
---|
2 | ; RTEMS Trace Linker Base configuration. |
---|
3 | ; |
---|
4 | ; Copyright 2014 Chris Johns <chrisj@rtems.org> |
---|
5 | ; |
---|
6 | |
---|
7 | ; |
---|
8 | ; The default generartor is used if a function set does provide a generator record. |
---|
9 | ; |
---|
10 | [default-generator] |
---|
11 | generator = printf-generator |
---|
12 | |
---|
13 | ; |
---|
14 | ; A printf generator prints to stdout the trace functions. |
---|
15 | ; |
---|
16 | [printf-generator] |
---|
17 | headers = printf-generator-headers |
---|
18 | entry-trace = "rtld_pg_print_entry(@FUNC_NAME@, (void*) &@FUNC_LABEL@);" |
---|
19 | arg-trace = "rtld_pg_print_arg(@ARG_NUM@, @ARG_TYPE@, @ARG_SIZE@, (void*) &@ARG_LABEL@);" |
---|
20 | exit-trace = "rtld_pg_print_exit(@FUNC_NAME@, (void*) &@FUNC_LABEL@);" |
---|
21 | ret-trace = "rtld_pg_print_ret(@RET_TYPE@, @RET_SIZE@, (void*) &@RET_LABEL@);" |
---|
22 | code = <<<CODE |
---|
23 | static inline void rtld_pg_print_entry(const char* func_name, |
---|
24 | void* func_addr) |
---|
25 | { |
---|
26 | printf (" >> %s (0x%08x)\n", func_name, func_addr); |
---|
27 | } |
---|
28 | static inline void rtld_pg_print_arg(int arg_num, |
---|
29 | const char* arg_type, |
---|
30 | int arg_size, |
---|
31 | void* arg) |
---|
32 | { |
---|
33 | const unsigned char* p = arg; |
---|
34 | int i; |
---|
35 | printf (" %2d] %s(%d) = ", arg_num, arg_type, arg_size); |
---|
36 | for (i = 0; i < arg_size; ++i, ++p) printf ("%02x", (unsigned int) *p); |
---|
37 | printf ("\n"); |
---|
38 | } |
---|
39 | static inline void rtld_pg_print_exit(const char* func_name, |
---|
40 | void* func_addr) |
---|
41 | { |
---|
42 | printf (" << %s (0x%08x)\n", func_name, func_addr); |
---|
43 | } |
---|
44 | static inline void rtld_pg_print_ret(const char* ret_type, |
---|
45 | int ret_size, |
---|
46 | void* ret) |
---|
47 | { |
---|
48 | const unsigned char* p = ret; |
---|
49 | int i; |
---|
50 | printf (" rt] %s(%d) = ", ret_type, ret_size); |
---|
51 | for (i = 0; i < ret_size; ++i, ++p) printf ("%02x", (unsigned int) *p); |
---|
52 | printf ("\n"); |
---|
53 | } |
---|
54 | CODE |
---|
55 | |
---|
56 | [printf-generator-headers] |
---|
57 | header = "#include <stdio.h>" |
---|