Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Jul 2021 14:44:35 GMT
From:      Alex Richardson <arichardson@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 8ef98a8045d4 - main - Allow building usr.bin/vi with MK_ASAN
Message-ID:  <202107191444.16JEiZIt010415@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by arichardson:

URL: https://cgit.FreeBSD.org/src/commit/?id=8ef98a8045d4623edd75b91ce76eedeaa4ad3f01

commit 8ef98a8045d4623edd75b91ce76eedeaa4ad3f01
Author:     Alex Richardson <arichardson@FreeBSD.org>
AuthorDate: 2021-07-19 14:04:19 +0000
Commit:     Alex Richardson <arichardson@FreeBSD.org>
CommitDate: 2021-07-19 14:04:19 +0000

    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
---
 contrib/nvi/regex/regex.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

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 *,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202107191444.16JEiZIt010415>