## Test that permissions for ouput files are mirrored ## from their input files. ## The Unix version of this test must use umask(1) because ## llvm-objcopy 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-objcopy %t %t1 # RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms # RUN: cmp %t1.perms %t.0777 # RUN: chmod 0666 %t # RUN: llvm-objcopy %t %t1 # RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms # RUN: cmp %t1.perms %t.0666 # RUN: chmod 0640 %t # RUN: llvm-objcopy %t %t1 # RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms # RUN: cmp %t1.perms %t.0640 ## Drop S_ISUID/S_ISGID bits. # RUN: chmod 6640 %t # RUN: llvm-objcopy %t %t1 # RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms # RUN: cmp %t1.perms %t.0640 ## Don't set the permission of a character special file, otherwise there will ## be an EPERM error (or worse: root may change the permission). # RUN: ls -l /dev/null | cut -f 1 -d ' ' > %tnull.perms # RUN: llvm-objcopy %t /dev/null # RUN: ls -l /dev/null | cut -f 1 -d ' ' | diff - %tnull.perms ## Ignore umask if the output filename is the same as the input filename. # RUN: umask 022 # RUN: cp %t %t1 && chmod 0777 %t1 && llvm-objcopy %t1 # RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms # RUN: cmp %t1.perms %t.0777 --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Machine: EM_X86_64