[058d502] | 1 | ; |
---|
| 2 | ; RTEMS Trace Linker Base configuration. |
---|
| 3 | ; |
---|
| 4 | ; Copyright 2014 Chris Johns <chrisj@rtems.org> |
---|
| 5 | ; |
---|
| 6 | |
---|
| 7 | ; |
---|
[097f1fd] | 8 | ; The default generartor is used if a function set does provide a generator record. |
---|
[058d502] | 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 |
---|
[6fb1409] | 18 | entry-trace = "rtld_pg_print_entry(@FUNC_NAME@, (void*) &@FUNC_LABEL@);" |
---|
[2126ea7] | 19 | arg-trace = "rtld_pg_print_arg(@ARG_NUM@, @ARG_TYPE@, @ARG_SIZE@, (void*) &@ARG_LABEL@);" |
---|
[6fb1409] | 20 | exit-trace = "rtld_pg_print_exit(@FUNC_NAME@, (void*) &@FUNC_LABEL@);" |
---|
[2126ea7] | 21 | ret-trace = "rtld_pg_print_ret(@RET_TYPE@, @RET_SIZE@, (void*) &@RET_LABEL@);" |
---|
[058d502] | 22 | code = <<<CODE |
---|
[6fb1409] | 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 | } |
---|
[2126ea7] | 28 | static inline void rtld_pg_print_arg(int arg_num, |
---|
| 29 | const char* arg_type, |
---|
| 30 | int arg_size, |
---|
| 31 | void* arg) |
---|
[058d502] | 32 | { |
---|
[6fb1409] | 33 | const unsigned char* p = arg; |
---|
[058d502] | 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 | } |
---|
[6fb1409] | 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 | } |
---|
[2126ea7] | 44 | static inline void rtld_pg_print_ret(const char* ret_type, |
---|
| 45 | int ret_size, |
---|
| 46 | void* ret) |
---|
| 47 | { |
---|
[6fb1409] | 48 | const unsigned char* p = ret; |
---|
[2126ea7] | 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 | } |
---|
[058d502] | 54 | CODE |
---|
| 55 | |
---|
[097f1fd] | 56 | [printf-generator-headers] |
---|
[058d502] | 57 | header = "#include <stdio.h>" |
---|