; ; RTEMS Trace Linker Printf and Prink configuration. ; ; Copyright 2014 Chris Johns ; ; ; 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 = <<>> %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 " [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 = <<>> %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 "