[PATCH] D53832: Make instrprof-set-dir-mode test tolerant of group ID

Troy Johnson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 29 13:56:14 PDT 2018


troyj created this revision.
troyj added a reviewer: probinson.
Herald added subscribers: Sanitizers, llvm-commits.

Hi, I ran into a problem with this test when the source was located in certain directories.  The mkdir(2) man page states that the set-group-ID bit is inherited from the parent directory, but this test was written in such a way that it assumes the bit is unset.  Whether that assumption is true depends on where the checkout lives, which leads to some people being able to reproduce the problem whereas others cannot.  I think the correct fix is to exclude the bit from the check.

Making probinson a reviewer since they reviewed the original test.


Repository:
  rCRT Compiler Runtime

https://reviews.llvm.org/D53832

Files:
  test/profile/instrprof-set-dir-mode.c


Index: test/profile/instrprof-set-dir-mode.c
===================================================================
--- test/profile/instrprof-set-dir-mode.c
+++ test/profile/instrprof-set-dir-mode.c
@@ -25,11 +25,15 @@
   if (Mode != __llvm_profile_get_dir_mode())
     Ret = -1;
   else {
+    // From 'man mkdir':
+    // "If the parent directory has the set-group-ID bit set, then so will the
+    // newly created directory."  So we mask off S_ISGID below; this test cannot
+    // control its parent directory.
     const unsigned Expected = ~umask(0) & Mode;
     struct stat DirSt;
     if (stat(Dir, &DirSt) == -1)
       Ret = -1;
-    else if (DirSt.st_mode != Expected) {
+    else if ((DirSt.st_mode & ~S_ISGID) != Expected) {
       printf("Modes do not match: Expected %o but found %o (%s)\n", Expected,
              DirSt.st_mode, Dir);
       Ret = -1;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53832.171565.patch
Type: text/x-patch
Size: 868 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181029/940de580/attachment.bin>


More information about the llvm-commits mailing list