diff options
-rw-r--r-- | g10/Makefile.am | 2 | ||||
-rw-r--r-- | regexp/Makefile.am | 2 | ||||
-rw-r--r-- | regexp/jimregexp.h | 25 |
3 files changed, 27 insertions, 2 deletions
diff --git a/g10/Makefile.am b/g10/Makefile.am index 4e1306da3..717d64a33 100644 --- a/g10/Makefile.am +++ b/g10/Makefile.am @@ -26,7 +26,7 @@ EXTRA_DIST = distsigkey.gpg \ t-keydb-get-keyblock.gpg t-stutter-data.asc \ all-tests.scm -AM_CPPFLAGS = +AM_CPPFLAGS = -DREGEXP_PREFIX=gnupg_ include $(top_srcdir)/am/cmacros.am diff --git a/regexp/Makefile.am b/regexp/Makefile.am index 307aacf9d..4da8687ce 100644 --- a/regexp/Makefile.am +++ b/regexp/Makefile.am @@ -20,7 +20,7 @@ noinst_LIBRARIES = libregexp.a -AM_CPPFLAGS = -DJIM_REGEXP -DJIM_UTF8 -DUSE_UTF8 +AM_CPPFLAGS = -DJIM_REGEXP -DJIM_UTF8 -DUSE_UTF8 -DREGEXP_PREFIX=gnupg_ AM_CFLAGS = diff --git a/regexp/jimregexp.h b/regexp/jimregexp.h index ab734797b..2bd22e54a 100644 --- a/regexp/jimregexp.h +++ b/regexp/jimregexp.h @@ -1,6 +1,31 @@ #ifndef JIMREGEXP_H #define JIMREGEXP_H +#ifdef REGEXP_PREFIX +/* + * An application can specify REGEXP_PREFIX to use the prefix to + * regexp routines (regcomp, regexec, regerror and regfree). + * + * Note that the regexp routines are the ones in the standard C + * library. It is no problem to override those routines by an + * application (with appropriate care of link order). + * + * However, use of REGEXP_PREFIX is required when you use + * AddressSanitizer (ASan). It doesn't work well, because it tries to + * replace regexp routines in the standard C library but actually + * replaces this implementation. Since it doesn't know about this + * implementation, it's not compatible. + * + * For example, in the Makefiles of GnuPG, we do specify REGEXP_PREFIX + * with "gnupg_". + */ +#define ADD_PREFIX(name) REGEXP_PREFIX ## name +#define regcomp ADD_PREFIX(regcomp) +#define regexec ADD_PREFIX(regexec) +#define regerror ADD_PREFIX(regerror) +#define regfree ADD_PREFIX(regfree) +#endif + /** regexp(3)-compatible regular expression implementation for Jim. * * See jimregexp.c for details |