diff --git a/banned-die.h b/banned-die.h new file mode 100644 index 0000000000..1cde4035c1 --- /dev/null +++ b/banned-die.h @@ -0,0 +1,14 @@ +#ifndef BANNED_DIE_H +#define BANNED_DIE_H + +#include "banned.h" + +/* + * This header lists functions that must not be used by low-level APIs + * because they can cause Git to terminate. + */ + +#undef die +#define die BANNED(die) + +#endif /* BANNED_DIE_H */ diff --git a/trace2.c b/trace2.c index c23c0a227b..8c974dee87 100644 --- a/trace2.c +++ b/trace2.c @@ -17,6 +17,8 @@ #include "trace2/tr2_tgt.h" #include "trace2/tr2_tls.h" #include "trace2/tr2_tmr.h" +/* banned-die must be last. */ +#include "banned-die.h" static int trace2_enabled; static int trace2_redact = 1; diff --git a/trace2/tr2_cfg.c b/trace2/tr2_cfg.c index bbcfeda60a..757dfeae8d 100644 --- a/trace2/tr2_cfg.c +++ b/trace2/tr2_cfg.c @@ -7,6 +7,8 @@ #include "trace2/tr2_cfg.h" #include "trace2/tr2_sysenv.h" #include "wildmatch.h" +/* banned-die must be last. */ +#include "banned-die.h" static struct string_list tr2_cfg_patterns = STRING_LIST_INIT_DUP; static int tr2_cfg_loaded; diff --git a/trace2/tr2_cmd_name.c b/trace2/tr2_cmd_name.c index b7b5a869b7..f378bef4cf 100644 --- a/trace2/tr2_cmd_name.c +++ b/trace2/tr2_cmd_name.c @@ -1,6 +1,8 @@ #include "git-compat-util.h" #include "strbuf.h" #include "trace2/tr2_cmd_name.h" +/* banned-die must be last. */ +#include "banned-die.h" #define TR2_ENVVAR_PARENT_NAME "GIT_TRACE2_PARENT_NAME" diff --git a/trace2/tr2_ctr.c b/trace2/tr2_ctr.c index ee17bfa86b..20618a65b2 100644 --- a/trace2/tr2_ctr.c +++ b/trace2/tr2_ctr.c @@ -2,6 +2,8 @@ #include "trace2/tr2_tgt.h" #include "trace2/tr2_tls.h" #include "trace2/tr2_ctr.h" +/* banned-die must be last. */ +#include "banned-die.h" /* * A global counter block to aggregate values from the partial sums diff --git a/trace2/tr2_dst.c b/trace2/tr2_dst.c index 5be892cd5c..555ac7cb9e 100644 --- a/trace2/tr2_dst.c +++ b/trace2/tr2_dst.c @@ -5,6 +5,8 @@ #include "trace2/tr2_dst.h" #include "trace2/tr2_sid.h" #include "trace2/tr2_sysenv.h" +/* banned-die must be last. */ +#include "banned-die.h" /* * How many attempts we will make at creating an automatically-named trace file. diff --git a/trace2/tr2_sid.c b/trace2/tr2_sid.c index 131b4f5a62..1d4f018f66 100644 --- a/trace2/tr2_sid.c +++ b/trace2/tr2_sid.c @@ -3,6 +3,8 @@ #include "strbuf.h" #include "trace2/tr2_tbuf.h" #include "trace2/tr2_sid.h" +/* banned-die must be last. */ +#include "banned-die.h" #define TR2_ENVVAR_PARENT_SID "GIT_TRACE2_PARENT_SID" diff --git a/trace2/tr2_sysenv.c b/trace2/tr2_sysenv.c index 4abc218514..7fa58eba91 100644 --- a/trace2/tr2_sysenv.c +++ b/trace2/tr2_sysenv.c @@ -4,6 +4,8 @@ #include "config.h" #include "dir.h" #include "tr2_sysenv.h" +/* banned-die must be last. */ +#include "banned-die.h" /* * Each entry represents a trace2 setting. diff --git a/trace2/tr2_tbuf.c b/trace2/tr2_tbuf.c index c3b3822ed7..d623e55a81 100644 --- a/trace2/tr2_tbuf.c +++ b/trace2/tr2_tbuf.c @@ -1,5 +1,7 @@ #include "git-compat-util.h" #include "tr2_tbuf.h" +/* banned-die must be last. */ +#include "banned-die.h" void tr2_tbuf_local_time(struct tr2_tbuf *tb) { diff --git a/trace2/tr2_tgt_event.c b/trace2/tr2_tgt_event.c index 5a0381791f..36a746cc10 100644 --- a/trace2/tr2_tgt_event.c +++ b/trace2/tr2_tgt_event.c @@ -13,6 +13,8 @@ #include "trace2/tr2_tgt.h" #include "trace2/tr2_tls.h" #include "trace2/tr2_tmr.h" +/* banned-die must be last. */ +#include "banned-die.h" static struct tr2_dst tr2dst_event = { .sysenv_var = TR2_SYSENV_EVENT, diff --git a/trace2/tr2_tgt_normal.c b/trace2/tr2_tgt_normal.c index 924736ab36..82995e510f 100644 --- a/trace2/tr2_tgt_normal.c +++ b/trace2/tr2_tgt_normal.c @@ -11,6 +11,8 @@ #include "trace2/tr2_tgt.h" #include "trace2/tr2_tls.h" #include "trace2/tr2_tmr.h" +/* banned-die must be last. */ +#include "banned-die.h" static struct tr2_dst tr2dst_normal = { .sysenv_var = TR2_SYSENV_NORMAL, diff --git a/trace2/tr2_tgt_perf.c b/trace2/tr2_tgt_perf.c index 4eb9289f95..96a5bc7f10 100644 --- a/trace2/tr2_tgt_perf.c +++ b/trace2/tr2_tgt_perf.c @@ -14,6 +14,8 @@ #include "trace2/tr2_tgt.h" #include "trace2/tr2_tls.h" #include "trace2/tr2_tmr.h" +/* banned-die must be last. */ +#include "banned-die.h" static struct tr2_dst tr2dst_perf = { .sysenv_var = TR2_SYSENV_PERF, diff --git a/trace2/tr2_tls.c b/trace2/tr2_tls.c index 7b023c1bfc..49bd505d62 100644 --- a/trace2/tr2_tls.c +++ b/trace2/tr2_tls.c @@ -3,6 +3,8 @@ #include "thread-utils.h" #include "trace.h" #include "trace2/tr2_tls.h" +/* banned-die must be last. */ +#include "banned-die.h" /* * Initialize size of the thread stack for nested regions. diff --git a/trace2/tr2_tmr.c b/trace2/tr2_tmr.c index 038181ad9b..275091c693 100644 --- a/trace2/tr2_tmr.c +++ b/trace2/tr2_tmr.c @@ -3,6 +3,8 @@ #include "trace2/tr2_tls.h" #include "trace2/tr2_tmr.h" #include "trace.h" +/* banned-die must be last. */ +#include "banned-die.h" #define MY_MAX(a, b) ((a) > (b) ? (a) : (b)) #define MY_MIN(a, b) ((a) < (b) ? (a) : (b))