1 Check that extracting long filenames works correctly even when there is no
2 null terminator after the filename. Depending on whether the OS provides a
3 readable page containing a null byte after the file mapping, this would crash
4 before r331746 (on Windows it crashed consistently).
6 The input file was created like:
8 $ touch 012345678901234567890123456789012345678901234567890123456789012-{1..124}.o \
9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.o
10 $ llvm-ar cru file.a 012345678901234567890123456789012345678901234567890123456789012-{1..124}.o \
11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.o
13 RUN: llvm-ar t %p/Inputs/archive-long-filenames-no-null-terminator.a | FileCheck %s
15 CHECK: 012345678901234567890123456789012345678901234567890123456789012-1.o
16 CHECK: 012345678901234567890123456789012345678901234567890123456789012-2.o
17 CHECK: 012345678901234567890123456789012345678901234567890123456789012-3.o
18 CHECK: 012345678901234567890123456789012345678901234567890123456789012-4.o
19 CHECK: 012345678901234567890123456789012345678901234567890123456789012-5.o
20 CHECK: 012345678901234567890123456789012345678901234567890123456789012-6.o
21 CHECK: 012345678901234567890123456789012345678901234567890123456789012-7.o
22 CHECK: 012345678901234567890123456789012345678901234567890123456789012-8.o
23 CHECK: 012345678901234567890123456789012345678901234567890123456789012-9.o
24 CHECK: 012345678901234567890123456789012345678901234567890123456789012-10.o
25 CHECK: 012345678901234567890123456789012345678901234567890123456789012-11.o
26 CHECK: 012345678901234567890123456789012345678901234567890123456789012-12.o
27 CHECK: 012345678901234567890123456789012345678901234567890123456789012-13.o
28 CHECK: 012345678901234567890123456789012345678901234567890123456789012-14.o
29 CHECK: 012345678901234567890123456789012345678901234567890123456789012-15.o
30 CHECK: 012345678901234567890123456789012345678901234567890123456789012-16.o
31 CHECK: 012345678901234567890123456789012345678901234567890123456789012-17.o
32 CHECK: 012345678901234567890123456789012345678901234567890123456789012-18.o
33 CHECK: 012345678901234567890123456789012345678901234567890123456789012-19.o
34 CHECK: 012345678901234567890123456789012345678901234567890123456789012-20.o
35 CHECK: 012345678901234567890123456789012345678901234567890123456789012-21.o
36 CHECK: 012345678901234567890123456789012345678901234567890123456789012-22.o
37 CHECK: 012345678901234567890123456789012345678901234567890123456789012-23.o
38 CHECK: 012345678901234567890123456789012345678901234567890123456789012-24.o
39 CHECK: 012345678901234567890123456789012345678901234567890123456789012-25.o
40 CHECK: 012345678901234567890123456789012345678901234567890123456789012-26.o
41 CHECK: 012345678901234567890123456789012345678901234567890123456789012-27.o
42 CHECK: 012345678901234567890123456789012345678901234567890123456789012-28.o
43 CHECK: 012345678901234567890123456789012345678901234567890123456789012-29.o
44 CHECK: 012345678901234567890123456789012345678901234567890123456789012-30.o
45 CHECK: 012345678901234567890123456789012345678901234567890123456789012-31.o
46 CHECK: 012345678901234567890123456789012345678901234567890123456789012-32.o
47 CHECK: 012345678901234567890123456789012345678901234567890123456789012-33.o
48 CHECK: 012345678901234567890123456789012345678901234567890123456789012-34.o
49 CHECK: 012345678901234567890123456789012345678901234567890123456789012-35.o
50 CHECK: 012345678901234567890123456789012345678901234567890123456789012-36.o
51 CHECK: 012345678901234567890123456789012345678901234567890123456789012-37.o
52 CHECK: 012345678901234567890123456789012345678901234567890123456789012-38.o
53 CHECK: 012345678901234567890123456789012345678901234567890123456789012-39.o
54 CHECK: 012345678901234567890123456789012345678901234567890123456789012-40.o
55 CHECK: 012345678901234567890123456789012345678901234567890123456789012-41.o
56 CHECK: 012345678901234567890123456789012345678901234567890123456789012-42.o
57 CHECK: 012345678901234567890123456789012345678901234567890123456789012-43.o
58 CHECK: 012345678901234567890123456789012345678901234567890123456789012-44.o
59 CHECK: 012345678901234567890123456789012345678901234567890123456789012-45.o
60 CHECK: 012345678901234567890123456789012345678901234567890123456789012-46.o
61 CHECK: 012345678901234567890123456789012345678901234567890123456789012-47.o
62 CHECK: 012345678901234567890123456789012345678901234567890123456789012-48.o
63 CHECK: 012345678901234567890123456789012345678901234567890123456789012-49.o
64 CHECK: 012345678901234567890123456789012345678901234567890123456789012-50.o
65 CHECK: 012345678901234567890123456789012345678901234567890123456789012-51.o
66 CHECK: 012345678901234567890123456789012345678901234567890123456789012-52.o
67 CHECK: 012345678901234567890123456789012345678901234567890123456789012-53.o
68 CHECK: 012345678901234567890123456789012345678901234567890123456789012-54.o
69 CHECK: 012345678901234567890123456789012345678901234567890123456789012-55.o
70 CHECK: 012345678901234567890123456789012345678901234567890123456789012-56.o
71 CHECK: 012345678901234567890123456789012345678901234567890123456789012-57.o
72 CHECK: 012345678901234567890123456789012345678901234567890123456789012-58.o
73 CHECK: 012345678901234567890123456789012345678901234567890123456789012-59.o
74 CHECK: 012345678901234567890123456789012345678901234567890123456789012-60.o
75 CHECK: 012345678901234567890123456789012345678901234567890123456789012-61.o
76 CHECK: 012345678901234567890123456789012345678901234567890123456789012-62.o
77 CHECK: 012345678901234567890123456789012345678901234567890123456789012-63.o
78 CHECK: 012345678901234567890123456789012345678901234567890123456789012-64.o
79 CHECK: 012345678901234567890123456789012345678901234567890123456789012-65.o
80 CHECK: 012345678901234567890123456789012345678901234567890123456789012-66.o
81 CHECK: 012345678901234567890123456789012345678901234567890123456789012-67.o
82 CHECK: 012345678901234567890123456789012345678901234567890123456789012-68.o
83 CHECK: 012345678901234567890123456789012345678901234567890123456789012-69.o
84 CHECK: 012345678901234567890123456789012345678901234567890123456789012-70.o
85 CHECK: 012345678901234567890123456789012345678901234567890123456789012-71.o
86 CHECK: 012345678901234567890123456789012345678901234567890123456789012-72.o
87 CHECK: 012345678901234567890123456789012345678901234567890123456789012-73.o
88 CHECK: 012345678901234567890123456789012345678901234567890123456789012-74.o
89 CHECK: 012345678901234567890123456789012345678901234567890123456789012-75.o
90 CHECK: 012345678901234567890123456789012345678901234567890123456789012-76.o
91 CHECK: 012345678901234567890123456789012345678901234567890123456789012-77.o
92 CHECK: 012345678901234567890123456789012345678901234567890123456789012-78.o
93 CHECK: 012345678901234567890123456789012345678901234567890123456789012-79.o
94 CHECK: 012345678901234567890123456789012345678901234567890123456789012-80.o
95 CHECK: 012345678901234567890123456789012345678901234567890123456789012-81.o
96 CHECK: 012345678901234567890123456789012345678901234567890123456789012-82.o
97 CHECK: 012345678901234567890123456789012345678901234567890123456789012-83.o
98 CHECK: 012345678901234567890123456789012345678901234567890123456789012-84.o
99 CHECK: 012345678901234567890123456789012345678901234567890123456789012-85.o
100 CHECK: 012345678901234567890123456789012345678901234567890123456789012-86.o
101 CHECK: 012345678901234567890123456789012345678901234567890123456789012-87.o
102 CHECK: 012345678901234567890123456789012345678901234567890123456789012-88.o
103 CHECK: 012345678901234567890123456789012345678901234567890123456789012-89.o
104 CHECK: 012345678901234567890123456789012345678901234567890123456789012-90.o
105 CHECK: 012345678901234567890123456789012345678901234567890123456789012-91.o
106 CHECK: 012345678901234567890123456789012345678901234567890123456789012-92.o
107 CHECK: 012345678901234567890123456789012345678901234567890123456789012-93.o
108 CHECK: 012345678901234567890123456789012345678901234567890123456789012-94.o
109 CHECK: 012345678901234567890123456789012345678901234567890123456789012-95.o
110 CHECK: 012345678901234567890123456789012345678901234567890123456789012-96.o
111 CHECK: 012345678901234567890123456789012345678901234567890123456789012-97.o
112 CHECK: 012345678901234567890123456789012345678901234567890123456789012-98.o
113 CHECK: 012345678901234567890123456789012345678901234567890123456789012-99.o
114 CHECK: 012345678901234567890123456789012345678901234567890123456789012-100.o
115 CHECK: 012345678901234567890123456789012345678901234567890123456789012-101.o
116 CHECK: 012345678901234567890123456789012345678901234567890123456789012-102.o
117 CHECK: 012345678901234567890123456789012345678901234567890123456789012-103.o
118 CHECK: 012345678901234567890123456789012345678901234567890123456789012-104.o
119 CHECK: 012345678901234567890123456789012345678901234567890123456789012-105.o
120 CHECK: 012345678901234567890123456789012345678901234567890123456789012-106.o
121 CHECK: 012345678901234567890123456789012345678901234567890123456789012-107.o
122 CHECK: 012345678901234567890123456789012345678901234567890123456789012-108.o
123 CHECK: 012345678901234567890123456789012345678901234567890123456789012-109.o
124 CHECK: 012345678901234567890123456789012345678901234567890123456789012-110.o
125 CHECK: 012345678901234567890123456789012345678901234567890123456789012-111.o
126 CHECK: 012345678901234567890123456789012345678901234567890123456789012-112.o
127 CHECK: 012345678901234567890123456789012345678901234567890123456789012-113.o
128 CHECK: 012345678901234567890123456789012345678901234567890123456789012-114.o
129 CHECK: 012345678901234567890123456789012345678901234567890123456789012-115.o
130 CHECK: 012345678901234567890123456789012345678901234567890123456789012-116.o
131 CHECK: 012345678901234567890123456789012345678901234567890123456789012-117.o
132 CHECK: 012345678901234567890123456789012345678901234567890123456789012-118.o
133 CHECK: 012345678901234567890123456789012345678901234567890123456789012-119.o
134 CHECK: 012345678901234567890123456789012345678901234567890123456789012-120.o
135 CHECK: 012345678901234567890123456789012345678901234567890123456789012-121.o
136 CHECK: 012345678901234567890123456789012345678901234567890123456789012-122.o
137 CHECK: 012345678901234567890123456789012345678901234567890123456789012-123.o
138 CHECK: 012345678901234567890123456789012345678901234567890123456789012-124.o
139 CHECK: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.o