archive-long-filenames-no-null-terminator.test 10.2 KB
Check that extracting long filenames works correctly even when there is no
null terminator after the filename. Depending on whether the OS provides a
readable page containing a null byte after the file mapping, this would crash
before r331746 (on Windows it crashed consistently).

The input file was created like:

$ touch 012345678901234567890123456789012345678901234567890123456789012-{1..124}.o \
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.o
$ llvm-ar cru file.a 012345678901234567890123456789012345678901234567890123456789012-{1..124}.o \
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.o

RUN: llvm-ar t %p/Inputs/archive-long-filenames-no-null-terminator.a | FileCheck %s

CHECK: 012345678901234567890123456789012345678901234567890123456789012-1.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-2.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-3.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-4.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-5.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-6.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-7.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-8.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-9.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-10.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-11.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-12.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-13.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-14.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-15.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-16.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-17.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-18.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-19.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-20.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-21.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-22.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-23.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-24.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-25.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-26.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-27.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-28.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-29.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-30.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-31.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-32.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-33.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-34.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-35.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-36.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-37.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-38.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-39.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-40.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-41.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-42.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-43.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-44.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-45.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-46.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-47.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-48.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-49.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-50.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-51.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-52.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-53.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-54.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-55.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-56.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-57.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-58.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-59.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-60.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-61.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-62.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-63.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-64.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-65.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-66.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-67.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-68.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-69.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-70.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-71.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-72.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-73.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-74.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-75.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-76.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-77.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-78.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-79.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-80.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-81.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-82.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-83.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-84.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-85.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-86.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-87.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-88.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-89.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-90.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-91.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-92.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-93.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-94.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-95.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-96.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-97.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-98.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-99.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-100.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-101.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-102.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-103.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-104.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-105.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-106.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-107.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-108.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-109.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-110.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-111.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-112.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-113.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-114.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-115.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-116.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-117.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-118.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-119.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-120.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-121.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-122.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-123.o
CHECK: 012345678901234567890123456789012345678901234567890123456789012-124.o
CHECK: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.o