2013-07-13 06:14:13 +02:00
|
|
|
Test the exact archive format. In particular, test which file names use the
|
|
|
|
string table or not.
|
|
|
|
|
|
|
|
RUN: mkdir -p %t
|
|
|
|
RUN: cd %t
|
|
|
|
|
2016-10-26 03:07:26 +02:00
|
|
|
RUN: printf bar. > 0123456789abcde
|
|
|
|
RUN: printf zed. > 0123456789abcdef
|
2015-07-16 01:15:33 +02:00
|
|
|
RUN: mkdir -p foo
|
2016-10-26 03:07:26 +02:00
|
|
|
RUN: printf bar2 > foo/0123456789abcde
|
|
|
|
RUN: printf zed2 > foo/0123456789abcdef
|
2013-07-13 06:14:13 +02:00
|
|
|
|
2015-07-13 22:38:09 +02:00
|
|
|
RUN: rm -f %t.a
|
2015-07-16 01:15:33 +02:00
|
|
|
RUN: llvm-ar --format=gnu rc %t.a 0123456789abcde 0123456789abcdef foo/0123456789abcde foo/0123456789abcdef
|
2015-07-13 22:38:09 +02:00
|
|
|
RUN: cat %t.a | FileCheck -strict-whitespace %s
|
2013-07-13 06:14:13 +02:00
|
|
|
|
|
|
|
CHECK: !<arch>
|
2018-12-19 17:15:05 +01:00
|
|
|
CHECK-NEXT: // 18 `
|
2013-07-13 06:14:13 +02:00
|
|
|
CHECK-NEXT: 0123456789abcdef/
|
2015-07-13 22:38:09 +02:00
|
|
|
CHECK-NEXT: 0123456789abcde/0 0 0 644 4 `
|
2015-07-16 01:15:33 +02:00
|
|
|
CHECK-NEXT: bar.
|
|
|
|
CHECK-SAME: /0 0 0 0 644 4 `
|
2015-03-03 16:54:48 +01:00
|
|
|
CHECK-NEXT: zed.
|
2015-07-16 01:15:33 +02:00
|
|
|
CHECK-SAME: 0123456789abcde/0 0 0 644 4 `
|
|
|
|
CHECK-NEXT: bar2
|
2018-12-19 17:15:05 +01:00
|
|
|
CHECK-SAME: /0 0 0 0 644 4 `
|
2015-07-16 01:15:33 +02:00
|
|
|
CHECK-NEXT: zed2
|
2015-07-08 22:47:32 +02:00
|
|
|
|
2015-07-13 22:38:09 +02:00
|
|
|
RUN: rm -f %t.a
|
|
|
|
RUN: llvm-ar --format=bsd rc %t.a 0123456789abcde 0123456789abcdef
|
|
|
|
RUN: cat %t.a | FileCheck -strict-whitespace --check-prefix=BSD %s
|
2015-07-08 22:47:32 +02:00
|
|
|
|
|
|
|
BSD: !<arch>
|
2017-02-21 21:40:54 +01:00
|
|
|
BSD-NEXT: #1/20 0 0 0 644 24 `
|
|
|
|
BSD-NEXT: 0123456789abcde{{.....}}bar.
|
|
|
|
BSD-SAME: #1/16 0 0 0 644 20 `
|
|
|
|
BSD-NEXT: 0123456789abcdefzed.
|
|
|
|
|
|
|
|
RUN: rm -f %t.a
|
2018-10-10 23:07:02 +02:00
|
|
|
RUN: llvm-ar --format=darwin rcS %t.a 0123456789abcde 0123456789abcdef
|
2017-02-21 21:40:54 +01:00
|
|
|
RUN: cat %t.a | FileCheck -strict-whitespace --check-prefix=DARWIN %s
|
|
|
|
|
|
|
|
DARWIN: !<arch>
|
|
|
|
DARWIN-NEXT: #1/20 0 0 0 644 28 `
|
2017-02-09 20:29:35 +01:00
|
|
|
Each [[:space:]] matches a newline. We explicitly match 3 newlines, as the
|
|
|
|
fourth newline is implicitly consumed by FileCheck and cannot be matched.
|
2017-02-21 21:40:54 +01:00
|
|
|
DARWIN-NEXT: 0123456789abcde{{.....}}bar.{{[[:space:]][[:space:]][[:space:]]}}
|
|
|
|
DARWIN-NEXT: #1/20 0 0 0 644 28 `
|
|
|
|
DARWIN-NEXT: 0123456789abcdef{{....}}zed.
|
|
|
|
|
2015-07-15 07:47:46 +02:00
|
|
|
|
2015-07-16 02:14:49 +02:00
|
|
|
RUN: rm -f test.a
|
|
|
|
RUN: llvm-ar --format=gnu rcT test.a 0123456789abcde 0123456789abcdef
|
|
|
|
RUN: cat test.a | FileCheck -strict-whitespace --check-prefix=THIN %s
|
2015-07-15 07:47:46 +02:00
|
|
|
THIN: !<thin>
|
|
|
|
THIN-NEXT: // 36 `
|
|
|
|
THIN-NEXT: 0123456789abcde/
|
|
|
|
THIN-NEXT: 0123456789abcdef/{{$}}
|
|
|
|
THIN: {{^$}}
|
|
|
|
THIN: /0 0 0 0 644 4 `
|
|
|
|
THIN-NEXT: /17 0 0 0 644 4 `
|
2015-07-16 02:14:49 +02:00
|
|
|
|
|
|
|
RUN: mkdir -p bar
|
|
|
|
RUN: rm -f bar/test.a
|
|
|
|
RUN: llvm-ar --format=gnu rcT bar/test.a 0123456789abcde 0123456789abcdef foo/0123456789abcde foo/0123456789abcdef
|
|
|
|
RUN: cat bar/test.a | FileCheck -strict-whitespace --check-prefix=THIN-PATH %s
|
|
|
|
THIN-PATH: !<thin>
|
|
|
|
THIN-PATH-NEXT: // 90 `
|
2015-07-16 02:38:34 +02:00
|
|
|
THIN-PATH-NEXT: ..{{/|\\}}0123456789abcde/
|
|
|
|
THIN-PATH-NEXT: ..{{/|\\}}0123456789abcdef/
|
|
|
|
THIN-PATH-NEXT: ..{{/|\\}}foo{{/|\\}}0123456789abcde/
|
|
|
|
THIN-PATH-NEXT: ..{{/|\\}}foo{{/|\\}}0123456789abcdef/
|
2015-07-16 02:14:49 +02:00
|
|
|
THIN-PATH-NEXT: /0 0 0 0 644 4 `
|
|
|
|
THIN-PATH-NEXT: /20 0 0 0 644 4 `
|
|
|
|
THIN-PATH-NEXT: /41 0 0 0 644 4 `
|
|
|
|
THIN-PATH-NEXT: /65 0 0 0 644 4 `
|
2016-05-02 23:06:57 +02:00
|
|
|
|
|
|
|
RUN: not llvm-ar --format=bsd rcT bad.a 0123456789abcde 0123456789abcdef 2>&1 | FileCheck --check-prefix=BSD-THIN %s
|
|
|
|
BSD-THIN: Only the gnu format has a thin mode.
|
2017-03-14 20:57:13 +01:00
|
|
|
|
|
|
|
If an archive has an object with no symbols, the linker and some other
|
|
|
|
tools on some versions of Solaris will abort operations if there is no
|
|
|
|
symbol table. Create such an object, put it into an archive, and check to
|
|
|
|
see that there is an empty symbol table.
|
|
|
|
RUN: mkdir -p %t
|
|
|
|
RUN: yaml2obj %S/Inputs/solaris-nosymbols.yaml > %t/foo.o
|
|
|
|
RUN: llvm-ar rs %t/foo.a %t/foo.o
|
|
|
|
RUN: cat -v %t/foo.a | FileCheck -strict-whitespace --check-prefix=SOLARIS %s
|
|
|
|
SOLARIS: !<arch>
|
|
|
|
SOLARIS-NEXT: / 0 0 0 0 8 `
|
|
|
|
SOLARIS-NEXT: ^@^@^@^@^@^@^@^@foo.o/
|