[PATCH] D153652: [Support] Don't set "all_exe" mode by default for file written by llvm::writeToOutput
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 27 05:02:26 PDT 2023
hokein updated this revision to Diff 534917.
hokein marked 2 inline comments as done.
hokein added a comment.
fix the test failures on windows
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153652/new/
https://reviews.llvm.org/D153652
Files:
llvm/lib/Support/raw_ostream.cpp
llvm/test/tools/llvm-dwarfutil/ELF/X86/mirror-permissions-unix.test
llvm/unittests/Support/raw_ostream_test.cpp
Index: llvm/unittests/Support/raw_ostream_test.cpp
===================================================================
--- llvm/unittests/Support/raw_ostream_test.cpp
+++ llvm/unittests/Support/raw_ostream_test.cpp
@@ -495,6 +495,11 @@
ASSERT_FALSE(sys::fs::createTemporaryFile("foo", "bar", FD, Path));
FileRemover Cleanup(Path);
+#ifndef _WIN32
+ ErrorOr<llvm::sys::fs::perms> Perms = llvm::sys::fs::getPermissions(Path);
+ EXPECT_TRUE(Perms && !(*Perms & llvm::sys::fs::all_exe));
+#endif
+
ASSERT_THAT_ERROR(writeToOutput(Path,
[](raw_ostream &Out) -> Error {
Out << "HelloWorld";
@@ -502,6 +507,12 @@
}),
Succeeded());
checkFileData(Path, "HelloWorld");
+
+#ifndef _WIN32
+ // No exe bit set by the writeToOutput API.
+ Perms = llvm::sys::fs::getPermissions(Path);
+ EXPECT_TRUE(Perms && !(*Perms & llvm::sys::fs::all_exe));
+#endif
}
TEST(raw_ostreamTest, writeToNonexistingPath) {
Index: llvm/test/tools/llvm-dwarfutil/ELF/X86/mirror-permissions-unix.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-dwarfutil/ELF/X86/mirror-permissions-unix.test
@@ -0,0 +1,51 @@
+## The Unix version of this test must use umask(1) because
+## llvm-dwarfutil respects the umask in setting output permissions.
+## Setting the umask to 0 ensures deterministic permissions across
+## test environments.
+# UNSUPPORTED: system-windows
+# REQUIRES: shell
+
+# RUN: touch %t
+# RUN: chmod 0777 %t
+# RUN: ls -l %t | cut -f 1 -d ' ' > %t.0777
+# RUN: chmod 0666 %t
+# RUN: ls -l %t | cut -f 1 -d ' ' > %t.0666
+# RUN: chmod 0640 %t
+# RUN: ls -l %t | cut -f 1 -d ' ' > %t.0640
+
+## Set umask to be permissive of all permissions,
+## only test mirroring of permissions.
+# RUN: umask 0
+
+# RUN: yaml2obj %s -o %t
+
+# RUN: chmod 0777 %t
+# RUN: llvm-dwarfutil --no-garbage-collection %t %t1
+# RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms
+# RUN: cmp %t1.perms %t.0777
+# RUN: llvm-dwarfutil --garbage-collection --separate-debug-file %t %t2
+# RUN: ls -l %t2 | cut -f 1 -d ' ' > %t2.perms
+# RUN: cmp %t2.perms %t.0777
+
+# RUN: chmod 0666 %t
+# RUN: llvm-dwarfutil --no-garbage-collection %t %t1
+# RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms
+# RUN: cmp %t1.perms %t.0666
+# RUN: llvm-dwarfutil --garbage-collection --separate-debug-file %t %t2
+# RUN: ls -l %t2 | cut -f 1 -d ' ' > %t2.perms
+# RUN: cmp %t2.perms %t.0666
+
+# RUN: chmod 0640 %t
+# RUN: llvm-dwarfutil --no-garbage-collection %t %t1
+# RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms
+# RUN: cmp %t1.perms %t.0640
+# RUN: llvm-dwarfutil --garbage-collection --separate-debug-file %t %t2
+# RUN: ls -l %t2 | cut -f 1 -d ' ' > %t2.perms
+# RUN: cmp %t2.perms %t.0640
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
Index: llvm/lib/Support/raw_ostream.cpp
===================================================================
--- llvm/lib/Support/raw_ostream.cpp
+++ llvm/lib/Support/raw_ostream.cpp
@@ -1007,7 +1007,7 @@
return Write(Out);
}
- unsigned Mode = sys::fs::all_read | sys::fs::all_write | sys::fs::all_exe;
+ unsigned Mode = sys::fs::all_read | sys::fs::all_write;
Expected<sys::fs::TempFile> Temp =
sys::fs::TempFile::create(OutputFileName + ".temp-stream-%%%%%%", Mode);
if (!Temp)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153652.534917.patch
Type: text/x-patch
Size: 3451 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230627/cc7b2ed0/attachment.bin>
More information about the cfe-commits
mailing list