summaryrefslogtreecommitdiff
path: root/linkers/rtld-print.ini
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2014-09-21 14:24:37 +1000
committerChris Johns <chrisj@rtems.org>2014-09-21 14:24:37 +1000
commit5025439f9d8df419e5d9797d930f7490bfdf86c0 (patch)
tree8a516a29fbf940b93a2b932263cdc6c07fc429b3 /linkers/rtld-print.ini
parent149a8a63610b1c52e323347070d2210efa408203 (diff)
rtems-tld: Add config options, fix void args, and SCore traces.
Diffstat (limited to 'linkers/rtld-print.ini')
-rw-r--r--linkers/rtld-print.ini94
1 files changed, 94 insertions, 0 deletions
diff --git a/linkers/rtld-print.ini b/linkers/rtld-print.ini
new file mode 100644
index 0000000..b9b524f
--- /dev/null
+++ b/linkers/rtld-print.ini
@@ -0,0 +1,94 @@
+;
+; RTEMS Trace Linker Printf and Prink configuration.
+;
+; Copyright 2014 Chris Johns <chrisj@rtems.org>
+;
+
+;
+; A printf generator prints to stdout the trace functions.
+;
+[printf-generator]
+headers = printf-generator-headers
+entry-trace = "rtld_pg_printf_entry(@FUNC_NAME@, (void*) &@FUNC_LABEL@);"
+arg-trace = "rtld_pg_printf_arg(@ARG_NUM@, @ARG_TYPE@, @ARG_SIZE@, (void*) &@ARG_LABEL@);"
+exit-trace = "rtld_pg_printf_exit(@FUNC_NAME@, (void*) &@FUNC_LABEL@);"
+ret-trace = "rtld_pg_printf_ret(@RET_TYPE@, @RET_SIZE@, (void*) &@RET_LABEL@);"
+code = <<<CODE
+static inline void rtld_pg_printf_entry(const char* func_name,
+ void* func_addr)
+{
+ printf (">>> %s (0x%08x)\n", func_name, func_addr);
+}
+static inline void rtld_pg_printf_arg(int arg_num,
+ const char* arg_type,
+ int arg_size,
+ void* arg)
+{
+ const unsigned char* p = arg;
+ int i;
+ printf (" %2d] %s(%d) = ", arg_num, arg_type, arg_size);
+ for (i = 0; i < arg_size; ++i, ++p) printf ("%02x", (unsigned int) *p);
+ printf ("\n");
+}
+static inline void rtld_pg_printf_exit(const char* func_name,
+ void* func_addr)
+{
+ printf ("<<< %s (0x%08x)\n", func_name, func_addr);
+}
+static inline void rtld_pg_printf_ret(const char* ret_type,
+ int ret_size,
+ void* ret)
+{
+ const unsigned char* p = ret;
+ int i;
+ printf (" rt] %s(%d) = ", ret_type, ret_size);
+ for (i = 0; i < ret_size; ++i, ++p) printf ("%02x", (unsigned int) *p);
+ printf ("\n");
+}
+CODE
+
+[printf-generator-headers]
+header = "#include <stdio.h>"
+
+[printk-generator]
+headers = printk-generator-headers
+entry-trace = "rtld_pg_printk_entry(@FUNC_NAME@, (void*) &@FUNC_LABEL@);"
+arg-trace = "rtld_pg_printk_arg(@ARG_NUM@, @ARG_TYPE@, @ARG_SIZE@, (void*) &@ARG_LABEL@);"
+exit-trace = "rtld_pg_printk_exit(@FUNC_NAME@, (void*) &@FUNC_LABEL@);"
+ret-trace = "rtld_pg_printk_ret(@RET_TYPE@, @RET_SIZE@, (void*) &@RET_LABEL@);"
+code = <<<CODE
+static inline void rtld_pg_printk_entry(const char* func_name,
+ void* func_addr)
+{
+ printk (">>> %s (0x%08x)\n", func_name, func_addr);
+}
+static inline void rtld_pg_printk_arg(int arg_num,
+ const char* arg_type,
+ int arg_size,
+ void* arg)
+{
+ const unsigned char* p = arg;
+ int i;
+ printk (" %2d] %s(%d) = ", arg_num, arg_type, arg_size);
+ for (i = 0; i < arg_size; ++i, ++p) printk ("%02x", (unsigned int) *p);
+ printk ("\n");
+}
+static inline void rtld_pg_printk_exit(const char* func_name,
+ void* func_addr)
+{
+ printk ("<<< %s (0x%08x)\n", func_name, func_addr);
+}
+static inline void rtld_pg_printk_ret(const char* ret_type,
+ int ret_size,
+ void* ret)
+{
+ const unsigned char* p = ret;
+ int i;
+ printk (" rt] %s(%d) = ", ret_type, ret_size);
+ for (i = 0; i < ret_size; ++i, ++p) printk ("%02x", (unsigned int) *p);
+ printk ("\n");
+}
+CODE
+
+[printk-generator-headers]
+header = "#include <stdio.h>"