From e36cba8a36c52246fc4e6132338eb0b087daa888 Mon Sep 17 00:00:00 2001 From: Kyle Evans Date: Mon, 22 Jan 2018 18:40:19 +0000 Subject: [PATCH] libregex: Add a symbol map kib points out that trying to re-use symbol versioning from libc is dirty and wrong. The implementation in libregex is incompatible by design with the implementation in libc. Using the symbol versions from libc can and likely will cause confusions for linkers and bring unexpected behavior for consumers that unwillingly (transitively) link against libregex. Reported by: kib --- lib/libregex/Makefile | 4 +++- lib/libregex/Symbol.map | 16 ++++++++++++++++ lib/libregex/Versions.def | 5 +++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 lib/libregex/Symbol.map create mode 100644 lib/libregex/Versions.def diff --git a/lib/libregex/Makefile b/lib/libregex/Makefile index eb6b0b64650..186bb20088c 100644 --- a/lib/libregex/Makefile +++ b/lib/libregex/Makefile @@ -9,9 +9,11 @@ SHLIB_MINOR= 0 CFLAGS+= -DLIBREGEX LIBC_SRCTOP= ${.CURDIR:H}/libc -SYMBOL_MAPS= ${SYM_MAPS} WARNS?= 2 +VERSION_DEF= ${.CURDIR}/Versions.def +SYMBOL_MAPS= ${.CURDIR}/Symbol.map + #HAS_TESTS= SUBDIR.${MK_TESTS}+= tests diff --git a/lib/libregex/Symbol.map b/lib/libregex/Symbol.map new file mode 100644 index 00000000000..09cd2118372 --- /dev/null +++ b/lib/libregex/Symbol.map @@ -0,0 +1,16 @@ +/* + * $FreeBSD$ + */ + +/* + * libregex uses a different version name because its symbols are not strictly + * compatible with those provided by libc. Re-using the version name from libc + * could cause linking headaches and make debugging more difficult than it needs + * to be. + */ +LIBREGEX_1.0 { + regcomp; + regerror; + regexec; + regfree; +}; diff --git a/lib/libregex/Versions.def b/lib/libregex/Versions.def new file mode 100644 index 00000000000..b6c84200762 --- /dev/null +++ b/lib/libregex/Versions.def @@ -0,0 +1,5 @@ +# $FreeBSD$ + +LIBREGEX_1.0 { +}; +