Module Name: src Committed By: christos Date: Wed Oct 22 00:15:16 UTC 2014
Modified Files: src/external/gpl3/gcc/dist/libsanitizer/interception: interception_linux.cc Log Message: the interceptors don't know about __RENAME() so add a kludge. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/external/gpl3/gcc/dist/libsanitizer/interception/interception_linux.cc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/gpl3/gcc/dist/libsanitizer/interception/interception_linux.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/interception/interception_linux.cc:1.2 src/external/gpl3/gcc/dist/libsanitizer/interception/interception_linux.cc:1.3 --- src/external/gpl3/gcc/dist/libsanitizer/interception/interception_linux.cc:1.2 Wed Oct 15 14:44:50 2014 +++ src/external/gpl3/gcc/dist/libsanitizer/interception/interception_linux.cc Tue Oct 21 20:15:16 2014 @@ -16,9 +16,24 @@ #include <stddef.h> // for NULL #include <dlfcn.h> // for dlsym +#ifdef __NetBSD__ +static int mystrcmp(const char *s1, const char *s2) { + while (*s1 == *s2++) + if (*s1++ == 0) + return (0); + return (*(const unsigned char *)s1 - *(const unsigned char *)--s2); +} +#endif + + namespace __interception { bool GetRealFunctionAddress(const char *func_name, uptr *func_addr, uptr real, uptr wrapper) { +#ifdef __NetBSD__ + // XXX: Until I come up with something better to deal with renames. + if (mystrcmp(func_name, "sigaction") == 0) + func_name = "__sigaction14"; +#endif *func_addr = (uptr)dlsym(RTLD_NEXT, func_name); return real == wrapper; }