summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Jeffery <andrewrj@au1.ibm.com>2018-09-17 17:23:04 +0930
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-10-02 14:36:19 -0500
commit8a4663c131e113ac85337a55ba72ce9e1688ec49 (patch)
tree6f8862c726a1cb4f6c0ceb46f395ac4cefb43309 /src
parent506a20f3bb46ce2033719354fdf7d8c3f146985e (diff)
downloadtalos-hostboot-8a4663c131e113ac85337a55ba72ce9e1688ec49.tar.gz
talos-hostboot-8a4663c131e113ac85337a55ba72ce9e1688ec49.zip
assert: Include file name in assert output
Printing the line number without an associated file is almost meaningless; add the file name to improve debug ergonomics. Change-Id: I454876ccc567cb58066362caced7efbaf92cfe62 Signed-off-by: Andrew Jeffery <andrewrj@au1.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/66117 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/include/assert.h11
-rw-r--r--src/lib/assert.C17
-rw-r--r--src/runtime/rt_assert.C11
3 files changed, 22 insertions, 17 deletions
diff --git a/src/include/assert.h b/src/include/assert.h
index c3f7ea0c4..4c4e28678 100644
--- a/src/include/assert.h
+++ b/src/include/assert.h
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2015 */
+/* Contributors Listed Below - COPYRIGHT 2011,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -78,6 +78,7 @@ enum AssertBehavior
*
* @param[in] i_assertb - Internal enumeration used by macros to communicate
* desired behavior.
+ * @param[in] i_file - The file in which the assert exists
* @param[in] i_line - Line number at which the assert macro was called.
*
* Current Behaviors:
@@ -93,7 +94,7 @@ enum AssertBehavior
* user-space dispatching.
*/
NO_RETURN
-void __assert(AssertBehavior i_assertb, int i_line);
+void __assert(AssertBehavior i_assertb, const char* i_file, int i_line);
#ifdef __HOSTBOOT_MODULE // Only allow traced assert in module code.
@@ -132,7 +133,7 @@ void __assert(AssertBehavior i_assertb, int i_line);
__ASSERT_DO_TRACE(expr, __VA_ARGS__); \
__assert((__ASSERT_HAS_TRACE(__VA_ARGS__) ? \
ASSERT_TRACE_DONE : ASSERT_TRACE_NOTDONE),\
- __LINE__);\
+ __FILE__, __LINE__);\
}\
}
@@ -147,7 +148,7 @@ void __assert(AssertBehavior i_assertb, int i_line);
{\
if (unlikely(!(expr)))\
{\
- __assert(ASSERT_KERNEL, __LINE__);\
+ __assert(ASSERT_KERNEL, __FILE__, __LINE__);\
}\
}
@@ -163,7 +164,7 @@ void __assert(AssertBehavior i_assertb, int i_line);
{\
if (unlikely(!(expr)))\
{\
- __assert(ASSERT_CRITICAL, __LINE__);\
+ __assert(ASSERT_CRITICAL, __FILE__, __LINE__);\
}\
}
diff --git a/src/lib/assert.C b/src/lib/assert.C
index 953393c31..bd55ae546 100644
--- a/src/lib/assert.C
+++ b/src/lib/assert.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2017 */
+/* Contributors Listed Below - COPYRIGHT 2011,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -41,7 +41,8 @@
/** Hook location for trace module to set up when loaded. */
namespace TRACE { void (*traceCallback)(void*, size_t) = NULL; };
-extern "C" void __assert(AssertBehavior i_assertb, int i_line)
+extern "C" void __assert(AssertBehavior i_assertb, const char* i_file,
+ int i_line)
{
if ((i_assertb == ASSERT_CRITICAL) && (KernelMisc::in_kernel_mode()))
{
@@ -61,23 +62,23 @@ extern "C" void __assert(AssertBehavior i_assertb, int i_line)
}
else
{
- printk("Assertion failed @%p on line %d.\n",
- linkRegister(), i_line);
+ printk("Assertion failed @%p at %s:%d.\n",
+ linkRegister(), i_file, i_line);
}
task_crash();
break;
case ASSERT_CRITICAL: // Critical task, trace not available.
- printk("Assertion failed @%p on line %d.(Crit_Assert)\n",
- linkRegister(), i_line);
+ printk("Assertion failed @%p on line %s:%d. (Crit_Assert)\n",
+ linkRegister(), i_file, i_line);
// Need to call the external CritAssert system call
cpu_crit_assert(reinterpret_cast<uint64_t>(linkRegister()));
break;
case ASSERT_KERNEL: // Kernel assert called.
- printk("Assertion failed @%p on line %d. (kassert)\n",
- linkRegister(), i_line);
+ printk("Assertion failed @%p on line %s:%d. (kassert)\n",
+ linkRegister(), i_file, i_line);
/*@
* @errortype
diff --git a/src/runtime/rt_assert.C b/src/runtime/rt_assert.C
index a22fe461a..ea19030f1 100644
--- a/src/runtime/rt_assert.C
+++ b/src/runtime/rt_assert.C
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2013,2014 */
+/* Contributors Listed Below - COPYRIGHT 2013,2018 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -28,12 +30,13 @@
/** Hook location for trace module to set up when loaded. */
namespace TRACE { void (*traceCallback)(void*, size_t) = NULL; };
-extern "C" void __assert(AssertBehavior i_assertb, int i_line)
+extern "C" void __assert(AssertBehavior i_assertb, const char* i_file,
+ int i_line)
{
if (i_assertb != ASSERT_TRACE_DONE)
{
- printk("Assertion failed @%p on line %d.\n",
- linkRegister(), i_line);
+ printk("Assertion failed @%p on line %s:%d.\n",
+ linkRegister(), i_file, i_line);
}
g_hostInterfaces->assert();
OpenPOWER on IntegriCloud