diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h @@ -540,7 +540,7 @@ #define SANITIZER_INTERCEPT_MODCTL SI_NETBSD #define SANITIZER_INTERCEPT_CAPSICUM SI_FREEBSD #define SANITIZER_INTERCEPT_STRTONUM (SI_NETBSD || SI_FREEBSD) -#define SANITIZER_INTERCEPT_FPARSELN SI_NETBSD +#define SANITIZER_INTERCEPT_FPARSELN (SI_NETBSD || SI_FREEBSD) #define SANITIZER_INTERCEPT_STATVFS1 SI_NETBSD #define SANITIZER_INTERCEPT_STRTOI SI_NETBSD #define SANITIZER_INTERCEPT_CAPSICUM SI_FREEBSD diff --git a/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/fparseln.cpp b/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/fparseln.cpp new file mode 100644 --- /dev/null +++ b/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/fparseln.cpp @@ -0,0 +1,26 @@ +// RUN: %clangxx -O0 -g %s -o %t -lutil && %run %t 2>&1 | FileCheck %s + +#include +#include +#include +#include + +int main(void) { + printf("fparseln\n"); + + FILE *fp = fopen("/etc/fstab", "r"); + assert(fp); + + int flags = FPARSELN_UNESCALL; + const char *delim = "\\\\#"; + size_t lineno = 0, len; + char *line; + while ((line = fparseln(fp, &len, &lineno, delim, flags))) { + printf("lineno: %zu, length: %zu, line: %s\n", lineno, len, line); + free(line); + } + + // CHECK: fparseln + + return 0; +}