[sanitizer_common][test] Handle missing REG_STARTEND in Posix/regex_startend.cpp
authorRainer Orth <ro@gcc.gnu.org>
Wed, 17 Mar 2021 08:56:19 +0000 (09:56 +0100)
committerRainer Orth <ro@gcc.gnu.org>
Wed, 17 Mar 2021 08:56:19 +0000 (09:56 +0100)
As reported in D96348 <https://reviews.llvm.org/D96348>, the
`Posix/regex_startend.cpp` test `FAIL`s on Solaris because
`REG_STARTEND` isn't defined.  It's a BSD extension not present everywhere.
E.g. AIX doesn't have it, too.

Fixed by wrapping the test in `#ifdef REG_STARTEND`.

Tested on `amd64-pc-solaris2.11`, `sparcv9-sun-solaris2.11`, and
`x86_64-pc-linux-gnu`.

Differential Revision: https://reviews.llvm.org/D98425

compiler-rt/test/sanitizer_common/TestCases/Posix/regex_startend.cpp

index 1a44578..e143c6c 100644 (file)
@@ -14,6 +14,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+/// REG_STARTEND is a BSD extension not supported everywhere.
+#ifdef REG_STARTEND
 void test_matched(const regex_t *preg, const char *string, size_t start,
                   size_t end, const char *expected) {
   regmatch_t match[1];
@@ -59,3 +61,8 @@ int main(void) {
   printf("Successful test\n");
   return 0;
 }
+#else
+int main(void) {
+  return 0;
+}
+#endif