1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 02:33:06 +01:00

[test] Split strip-preserve-time.test, and skip atime test on NetBSD

Split timestamp preservation tests into atime and mtime test, and skip
the former on NetBSD.  When the filesystem is mounted noatime, NetBSD
not only inhibits implicit atime updates but also prevents setting atime
via utime(), causing the test to fail.

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

llvm-svn: 348354
This commit is contained in:
Michal Gorny 2018-12-05 11:15:46 +00:00
parent 573fb67bcf
commit 0bfed1c1a6
3 changed files with 68 additions and 18 deletions

View File

@ -1,40 +1,34 @@
# Note: ls -lu prints the accessed timestamp, ls -l prints the modified timestamp
# Note: ls -lu prints the accessed timestamp
# NetBSD: noatime mounts currently inhibit 'touch -a' updates
# UNSUPPORTED: system-netbsd
# Preserve dates when stripping to an output file.
# RUN: yaml2obj %s > %t.1.o
# RUN: touch -a -t 199505050555.55 %t.1.o
# RUN: touch -m -t 199705050555.55 %t.1.o
# RUN: llvm-strip -p %t.1.o -o %t-preserved.1.o
# RUN: ls -lu %t-preserved.1.o | FileCheck %s --check-prefix=CHECK-PRESERVE-ATIME
# RUN: ls -l %t-preserved.1.o | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# Check that the stripped output is in fact a valid object file.
# RUN: llvm-readobj %t-preserved.1.o
# Preserve dates available via objcopy interface as well.
# RUN: yaml2obj %s > %t.2.o
# RUN: touch -a -t 199505050555.55 %t.2.o
# RUN: touch -m -t 199705050555.55 %t.2.o
# RUN: llvm-objcopy -p %t.2.o %t-preserved.2.o
# RUN: ls -lu %t-preserved.2.o | FileCheck %s --check-prefix=CHECK-PRESERVE-ATIME
# RUN: ls -l %t-preserved.2.o | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t-preserved.2.o
# Preserve dates when stripping in place.
# RUN: yaml2obj %s > %t.3.o
# RUN: touch -a -t 199505050555.55 %t.3.o
# RUN: touch -m -t 199705050555.55 %t.3.o
# RUN: llvm-strip -p %t.3.o
# RUN: ls -lu %t.3.o | FileCheck %s --check-prefix=CHECK-PRESERVE-ATIME
# RUN: ls -l %t.3.o | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t.3.o
# Without -p set, don't preserve dates.
# RUN: yaml2obj %s > %t.4.o
# RUN: touch -a -t 199505050555.55 %t.4.o
# RUN: touch -m -t 199705050555.55 %t.4.o
# RUN: llvm-strip %t.4.o
# RUN: ls -lu %t.4.o | FileCheck %s --check-prefix=CHECK-NO-PRESERVE-ATIME
# RUN: ls -l %t.4.o | FileCheck %s --check-prefix=CHECK-NO-PRESERVE-MTIME
# RUN: llvm-readobj %t.4.o
# Preserve dates in archives.
@ -42,29 +36,21 @@
# RUN: rm -f %t.a
# RUN: llvm-ar cr %t.a %t.5.o
# RUN: touch -a -t 199505050555.55 %t.a
# RUN: touch -m -t 199705050555.55 %t.a
# RUN: llvm-strip -p %t.a
# RUN: ls -lu %t.a | FileCheck %s --check-prefix=CHECK-PRESERVE-ATIME
# RUN: ls -l %t.a | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t.a
# Preserve dates in split DWO files.
# RUN: cp %p/Inputs/dwarf.dwo %t-input.dwo
# RUN: touch -a -t 199505050555.55 %t-input.dwo
# RUN: touch -m -t 199705050555.55 %t-input.dwo
# RUN: llvm-objcopy -p -split-dwo=%t-dwo %t-input.dwo %t-nondwo
# RUN: ls -lu %t-dwo | FileCheck %s --check-prefix=CHECK-PRESERVE-ATIME
# RUN: ls -l %t-dwo | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t-dwo
# RUN: ls -lu %t-nondwo | FileCheck %s --check-prefix=CHECK-PRESERVE-ATIME
# RUN: ls -l %t-nondwo | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t-nondwo
# CHECK-PRESERVE-ATIME: {{[[:space:]]1995}}
# CHECK-PRESERVE-MTIME: {{[[:space:]]1997}}
# CHECK-NO-PRESERVE-ATIME-NOT: {{[[:space:]]1995}}
# CHECK-NO-PRESERVE-MTIME-NOT: {{[[:space:]]1997}}
!ELF
FileHeader:

View File

@ -0,0 +1,62 @@
# Note: ls -l prints the modified timestamp
# Preserve dates when stripping to an output file.
# RUN: yaml2obj %s > %t.1.o
# RUN: touch -m -t 199705050555.55 %t.1.o
# RUN: llvm-strip -p %t.1.o -o %t-preserved.1.o
# RUN: ls -l %t-preserved.1.o | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# Check that the stripped output is in fact a valid object file.
# RUN: llvm-readobj %t-preserved.1.o
# Preserve dates available via objcopy interface as well.
# RUN: yaml2obj %s > %t.2.o
# RUN: touch -m -t 199705050555.55 %t.2.o
# RUN: llvm-objcopy -p %t.2.o %t-preserved.2.o
# RUN: ls -l %t-preserved.2.o | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t-preserved.2.o
# Preserve dates when stripping in place.
# RUN: yaml2obj %s > %t.3.o
# RUN: touch -m -t 199705050555.55 %t.3.o
# RUN: llvm-strip -p %t.3.o
# RUN: ls -l %t.3.o | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t.3.o
# Without -p set, don't preserve dates.
# RUN: yaml2obj %s > %t.4.o
# RUN: touch -m -t 199705050555.55 %t.4.o
# RUN: llvm-strip %t.4.o
# RUN: ls -l %t.4.o | FileCheck %s --check-prefix=CHECK-NO-PRESERVE-MTIME
# RUN: llvm-readobj %t.4.o
# Preserve dates in archives.
# RUN: yaml2obj %s > %t.5.o
# RUN: rm -f %t.a
# RUN: llvm-ar cr %t.a %t.5.o
# RUN: touch -m -t 199705050555.55 %t.a
# RUN: llvm-strip -p %t.a
# RUN: ls -l %t.a | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t.a
# Preserve dates in split DWO files.
# RUN: cp %p/Inputs/dwarf.dwo %t-input.dwo
# RUN: touch -m -t 199705050555.55 %t-input.dwo
# RUN: llvm-objcopy -p -split-dwo=%t-dwo %t-input.dwo %t-nondwo
# RUN: ls -l %t-dwo | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t-dwo
# RUN: ls -l %t-nondwo | FileCheck %s --check-prefix=CHECK-PRESERVE-MTIME
# RUN: llvm-readobj %t-nondwo
# CHECK-PRESERVE-MTIME: {{[[:space:]]1997}}
# CHECK-NO-PRESERVE-MTIME-NOT: {{[[:space:]]1997}}
!ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: .text
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]

View File

@ -59,6 +59,8 @@ class LLVMConfig(object):
features.add('system-linux')
elif platform.system() in ['FreeBSD']:
config.available_features.add('system-freebsd')
elif platform.system() == "NetBSD":
features.add('system-netbsd')
# Native compilation: host arch == default triple arch
# Both of these values should probably be in every site config (e.g. as
@ -490,4 +492,4 @@ class LLVMConfig(object):
if wasm_ld:
tool_substitutions.append(ToolSubst('wasm-ld', command=wasm_ld))
self.add_tool_substitutions(tool_substitutions)
return was_found
return was_found