Skip to content

Commit 85cb1f8

Browse files
mstorsjotstellar
authored andcommitted
[LLD] [test] Avoid printing timestamps past INT32_MAX with llvm-readobj (llvm#81463)
If llvm-readobj is built with a 32 bit time_t, it can't print such timestamps correctly. (cherry picked from commit 0bf4ff2)
1 parent beec58c commit 85cb1f8

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

Diff for: lld/test/COFF/timestamp.test

+19-10
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,28 @@ RUN: lld-link %t.obj /debug /Brepro /entry:main /nodefaultlib /out:%t.1.exe
44
RUN: lld-link %t.obj /debug /Brepro /entry:main /nodefaultlib /out:%t.2.exe
55
RUN: lld-link %t.obj /debug /timestamp:0 /entry:main /nodefaultlib /out:%t.3.exe
66
RUN: env SOURCE_DATE_EPOCH=0 lld-link %t.obj /debug /entry:main /nodefaultlib /out:%t.4.exe
7-
RUN: lld-link %t.obj /debug /timestamp:4294967295 /entry:main /nodefaultlib /out:%t.5.exe
8-
RUN: env SOURCE_DATE_EPOCH=4294967295 lld-link %t.obj /debug /entry:main /nodefaultlib /out:%t.6.exe
7+
# Test timestamps corresponding to INT32_TMAX
8+
RUN: lld-link %t.obj /debug /timestamp:2147483647 /entry:main /nodefaultlib /out:%t.5.exe
9+
RUN: env SOURCE_DATE_EPOCH=2147483647 lld-link %t.obj /debug /entry:main /nodefaultlib /out:%t.6.exe
10+
# Test that the command line option /timestamp has precedence over SOURCE_DATE_EPOCH
911
RUN: env SOURCE_DATE_EPOCH=12345 lld-link %t.obj /debug /timestamp:0 /entry:main /nodefaultlib /out:%t.7.exe
10-
RUN: env LLD_IN_TEST=1 not lld-link %t.obj /debug /timestamp:4294967296 /entry:main /nodefaultlib /out:%t.8.exe 2>&1 | FileCheck %s --check-prefix=ERROR
11-
RUN: env SOURCE_DATE_EPOCH=4294967296 env LLD_IN_TEST=1 not lld-link %t.obj /debug /entry:main /nodefaultlib /out:%t.9.exe 2>&1 | FileCheck %s --check-prefix=ERROR2
12+
# Test timestamps corresponding to UINT32_TMAX
13+
RUN: lld-link %t.obj /debug /timestamp:4294967295 /entry:main /nodefaultlib /out:%t.8.exe
14+
RUN: env SOURCE_DATE_EPOCH=4294967295 lld-link %t.obj /debug /entry:main /nodefaultlib /out:%t.9.exe
15+
# Test that setting UINT32_MAX+1 as timestamp fails.
16+
RUN: env LLD_IN_TEST=1 not lld-link %t.obj /debug /timestamp:4294967296 /entry:main /nodefaultlib /out:%t.10.exe 2>&1 | FileCheck %s --check-prefix=ERROR
17+
RUN: env SOURCE_DATE_EPOCH=4294967296 env LLD_IN_TEST=1 not lld-link %t.obj /debug /entry:main /nodefaultlib /out:%t.11.exe 2>&1 | FileCheck %s --check-prefix=ERROR2
1218
RUN: llvm-readobj --file-headers --coff-debug-directory %t.1.exe | FileCheck %s --check-prefix=HASH
1319
RUN: llvm-readobj --file-headers --coff-debug-directory %t.2.exe | FileCheck %s --check-prefix=HASH
1420
RUN: llvm-readobj --file-headers --coff-debug-directory %t.3.exe | FileCheck %s --check-prefix=ZERO
1521
RUN: llvm-readobj --file-headers --coff-debug-directory %t.4.exe | FileCheck %s --check-prefix=ZERO
16-
RUN: llvm-readobj --file-headers --coff-debug-directory %t.5.exe | FileCheck %s --check-prefix=MAX
17-
RUN: llvm-readobj --file-headers --coff-debug-directory %t.6.exe | FileCheck %s --check-prefix=MAX
22+
RUN: llvm-readobj --file-headers --coff-debug-directory %t.5.exe | FileCheck %s --check-prefix=LARGE
23+
RUN: llvm-readobj --file-headers --coff-debug-directory %t.6.exe | FileCheck %s --check-prefix=LARGE
1824
RUN: llvm-readobj --file-headers --coff-debug-directory %t.7.exe | FileCheck %s --check-prefix=ZERO
1925

26+
# Not inspecting %t.8.exe and %t.9.exe; llvm-readobj with a 32 bit time_t fails to print dates
27+
# past INT32_MAX correctly.
28+
2029
HASH: ImageFileHeader {
2130
HASH: TimeDateStamp: [[STAMP:.*]]
2231
HASH: DebugDirectory [
@@ -27,10 +36,10 @@ ZERO: TimeDateStamp: 1970-01-01 00:00:00 (0x0)
2736
ZERO: DebugDirectory [
2837
ZERO: TimeDateStamp: 1970-01-01 00:00:00 (0x0)
2938

30-
MAX: ImageFileHeader {
31-
MAX: TimeDateStamp: 2106-02-07 06:28:15 (0xFFFFFFFF)
32-
MAX: DebugDirectory [
33-
MAX: TimeDateStamp: 2106-02-07 06:28:15 (0xFFFFFFFF)
39+
LARGE: ImageFileHeader {
40+
LARGE: TimeDateStamp: 2038-01-19 03:14:07 (0x7FFFFFFF)
41+
LARGE: DebugDirectory [
42+
LARGE: TimeDateStamp: 2038-01-19 03:14:07 (0x7FFFFFFF)
3443

3544
ERROR: error: invalid timestamp: 4294967296. Expected 32-bit integer
3645
ERROR2: error: invalid SOURCE_DATE_EPOCH timestamp: 4294967296. Expected 32-bit integer

0 commit comments

Comments
 (0)