aboutsummaryrefslogtreecommitdiff
path: root/contrib/nvi
diff options
context:
space:
mode:
authorAlex Richardson <arichardson@FreeBSD.org>2021-07-19 14:04:19 +0000
committerAlex Richardson <arichardson@FreeBSD.org>2021-07-19 14:04:19 +0000
commit8ef98a8045d4623edd75b91ce76eedeaa4ad3f01 (patch)
treeeedfb91aa6fc266d9d74c770497a0171c0707e69 /contrib/nvi
parent2423585b1de50dd2daea8478318e94ff80e0e6ec (diff)
downloadsrc-8ef98a8045d4623edd75b91ce76eedeaa4ad3f01.tar.gz
src-8ef98a8045d4623edd75b91ce76eedeaa4ad3f01.zip
Allow building usr.bin/vi with MK_ASAN
We have to namespace the regex functions to avoid duplicate symbol errors. This also ensures that vi doesn't define the libc reg* functions with mismatched signatures. ld: error: duplicate symbol: regcomp >>> defined at sanitizer_common_interceptors.inc:7519 (/usr/src/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:7519) >>> asan_interceptors.o:(__interceptor_regcomp) in archive /usr/lib/clang/10.0.1/lib/freebsd/libclang_rt.asan-x86_64.a >>> defined at regcomp.c >>> .../regex/regcomp.c.o:(.text+0x0) ld: error: duplicate symbol: regerror >>> defined at sanitizer_common_interceptors.inc:7543 (/usr/src/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:7543) >>> asan_interceptors.o:(__interceptor_regerror) in archive /usr/lib/clang/10.0.1/lib/freebsd/libclang_rt.asan-x86_64.a >>> defined at regerror.c >>> .../regex/regerror.c.o:(.text+0x0) ld: error: duplicate symbol: regexec >>> defined at sanitizer_common_interceptors.inc:7530 (/usr/src/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:7530) >>> asan_interceptors.o:(__interceptor_regexec) in archive /usr/lib/clang/10.0.1/lib/freebsd/libclang_rt.asan-x86_64.a >>> defined at regexec.c >>> .../regex/regexec.c.o:(.text+0x0) ld: error: duplicate symbol: regfree >>> defined at sanitizer_common_interceptors.inc:7553 (/usr/src/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc:7553) >>> asan_interceptors.o:(__interceptor_regfree) in archive /usr/lib/clang/10.0.1/lib/freebsd/libclang_rt.asan-x86_64.a >>> defined at regfree.c >>> .../regex/regfree.c.o:(.text+0x0) Committed upstream as https://github.com/lichray/nvi2/pull/92 Reviewed By: bapt Differential Revision: https://reviews.freebsd.org/D31050
Diffstat (limited to 'contrib/nvi')
-rw-r--r--contrib/nvi/regex/regex.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/contrib/nvi/regex/regex.h b/contrib/nvi/regex/regex.h
index 20ea7865c0a0..7d788514a54c 100644
--- a/contrib/nvi/regex/regex.h
+++ b/contrib/nvi/regex/regex.h
@@ -96,6 +96,16 @@ typedef struct {
#define REG_LARGE 01000 /* force large representation */
#define REG_BACKR 02000 /* force use of backref code */
+#ifdef USE_WIDECHAR
+/*
+ * Avoid function name conflicts with the system regex functions.
+ * This is needed e.g. to build with AddressSanitizer.
+ */
+#define regcomp nvi_regcomp
+#define regerror nvi_regerror
+#define regexec nvi_regexec
+#define regfree nvi_regfree
+#endif
int regcomp(regex_t *, const RCHAR_T *, int);
size_t regerror(int, const regex_t *, char *, size_t);
int regexec(const regex_t *,