summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/assert.h54
-rw-r--r--src/include/rules.h6
2 files changed, 38 insertions, 22 deletions
diff --git a/src/include/assert.h b/src/include/assert.h
index f656d81683..8c19c1cfee 100644
--- a/src/include/assert.h
+++ b/src/include/assert.h
@@ -12,31 +12,41 @@
#undef ASSERT
#endif
+/* Do not use filenames nor line numbers on timeless builds, to preserve reproducibility */
+#if ENV_TIMELESS
+#define __ASSERT_FILE__ "(filenames not available on timeless builds)"
+#define __ASSERT_LINE__ 404
+#else
+#define __ASSERT_FILE__ __FILE__
+#define __ASSERT_LINE__ __LINE__
+#endif
+
/* GCC and CAR versions */
-#define ASSERT(x) { \
- if (!(x)) { \
- printk(BIOS_EMERG, "ASSERTION ERROR: file '%s'" \
- ", line %d\n", __FILE__, __LINE__); \
- if (CONFIG(FATAL_ASSERTS)) \
- hlt(); \
- } \
+#define ASSERT(x) { \
+ if (!(x)) { \
+ printk(BIOS_EMERG, \
+ "ASSERTION ERROR: file '%s', line %d\n", \
+ __ASSERT_FILE__, __ASSERT_LINE__); \
+ if (CONFIG(FATAL_ASSERTS)) \
+ hlt(); \
+ } \
}
-
-#define ASSERT_MSG(x, msg) { \
- if (!(x)) { \
- printk(BIOS_EMERG, "ASSERTION ERROR: file '%s'" \
- ", line %d\n", __FILE__, __LINE__); \
- printk(BIOS_EMERG, "%s", msg); \
- if (CONFIG(FATAL_ASSERTS)) \
- hlt(); \
- } \
+#define ASSERT_MSG(x, msg) { \
+ if (!(x)) { \
+ printk(BIOS_EMERG, \
+ "ASSERTION ERROR: file '%s', line %d\n", \
+ __ASSERT_FILE__, __ASSERT_LINE__); \
+ printk(BIOS_EMERG, "%s", msg); \
+ if (CONFIG(FATAL_ASSERTS)) \
+ hlt(); \
+ } \
}
-
-#define BUG() { \
- printk(BIOS_EMERG, "ERROR: BUG ENCOUNTERED at file '%s'"\
- ", line %d\n", __FILE__, __LINE__); \
- if (CONFIG(FATAL_ASSERTS)) \
- hlt(); \
+#define BUG() { \
+ printk(BIOS_EMERG, \
+ "ERROR: BUG ENCOUNTERED at file '%s', line %d\n", \
+ __ASSERT_FILE__, __ASSERT_LINE__); \
+ if (CONFIG(FATAL_ASSERTS)) \
+ hlt(); \
}
#define assert(statement) ASSERT(statement)
diff --git a/src/include/rules.h b/src/include/rules.h
index 160829efa4..2cc54e7942 100644
--- a/src/include/rules.h
+++ b/src/include/rules.h
@@ -3,6 +3,12 @@
#ifndef _RULES_H
#define _RULES_H
+#if defined(__TIMELESS__)
+#define ENV_TIMELESS 1
+#else
+#define ENV_TIMELESS 0
+#endif
+
/* Useful helpers to tell whether the code is executing in bootblock,
* romstage, ramstage or SMM.
*/