[PATCH] D27218: Prefix path when displaying thin archives
Mark Santaniello via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 29 10:46:32 PST 2016
marksantaniello created this revision.
marksantaniello added a reviewer: rafael.
marksantaniello added a subscriber: llvm-commits.
marksantaniello set the repository for this revision to rL LLVM.
On thin archives, we store relative paths from the archive itself to its members. When displaying the contents of the archive, gnu ar converts back by prefixing the path portion of path/to/archive. Here we match the gnu ar behavior.
Note that https://reviews.llvm.org/D27217 adds a new test (test/Object/archive-thin-create.test) which will be broken by this change. Depending on which one lands first, the other will need to be slightly modified.
Repository:
rL LLVM
https://reviews.llvm.org/D27218
Files:
test/Object/archive-toc.test
tools/llvm-ar/llvm-ar.cpp
Index: tools/llvm-ar/llvm-ar.cpp
===================================================================
--- tools/llvm-ar/llvm-ar.cpp
+++ tools/llvm-ar/llvm-ar.cpp
@@ -359,6 +359,12 @@
outs() << ' ' << ModTimeOrErr.get();
outs() << ' ';
}
+
+ if (C.getParent()->isThin()) {
+ outs() << sys::path::parent_path(ArchiveName);
+ outs() << sys::path::get_separator();
+ }
+
outs() << Name << "\n";
}
Index: test/Object/archive-toc.test
===================================================================
--- test/Object/archive-toc.test
+++ test/Object/archive-toc.test
@@ -1,46 +1,48 @@
+RUN: cd %p
+
Test reading an archive created by gnu ar
-RUN: env TZ=GMT llvm-ar tv %p/Inputs/GNU.a | FileCheck %s --check-prefix=GNU -strict-whitespace
+RUN: env TZ=GMT llvm-ar tv Inputs/GNU.a | FileCheck %s --check-prefix=GNU -strict-whitespace
GNU: rw-r--r-- 500/500 8 2004-11-19 02:57:37.000000000 evenlen
GNU-NEXT: rw-r--r-- 500/500 7 2004-11-19 02:57:21.000000000 oddlen
GNU-NEXT: rwxr-xr-x 500/500 1465 2004-11-19 03:01:31.000000000 very_long_bytecode_file_name.bc
GNU-NEXT: rw-r--r-- 500/500 2280 2004-11-19 03:04:30.000000000 IsNAN.o
Test reading an archive createdy by Mac OS X ar
-RUN: env TZ=GMT llvm-ar tv %p/Inputs/MacOSX.a | FileCheck %s --check-prefix=OSX -strict-whitespace
+RUN: env TZ=GMT llvm-ar tv Inputs/MacOSX.a | FileCheck %s --check-prefix=OSX -strict-whitespace
OSX-NOT: __.SYMDEF
OSX: rw-r--r-- 501/501 8 2004-11-19 02:57:37.000000000 evenlen
OSX-NEXT: rw-r--r-- 501/501 8 2004-11-19 02:57:21.000000000 oddlen
OSX-NEXT: rw-r--r-- 502/502 1465 2010-02-04 06:59:14.000000000 very_long_bytecode_file_name.bc
OSX-NEXT: rw-r--r-- 501/501 2280 2004-11-19 04:32:06.000000000 IsNAN.o
Test reading an archive created on Solaris by /usr/ccs/bin/ar
-RUN: env TZ=GMT llvm-ar tv %p/Inputs/SVR4.a | FileCheck %s -strict-whitespace
+RUN: env TZ=GMT llvm-ar tv Inputs/SVR4.a | FileCheck %s -strict-whitespace
Test reading an archive created on Solaris by /usr/xpg4/bin/ar
-RUN: env TZ=GMT llvm-ar tv %p/Inputs/xpg4.a | FileCheck %s -strict-whitespace
+RUN: env TZ=GMT llvm-ar tv Inputs/xpg4.a | FileCheck %s -strict-whitespace
CHECK: rw-r--r-- 1002/102 8 2004-11-19 03:24:02.000000000 evenlen
CHECK-NEXT: rw-r--r-- 1002/102 7 2004-11-19 03:24:02.000000000 oddlen
CHECK-NEXT: rwxr-xr-x 1002/102 1465 2004-11-19 03:24:02.000000000 very_long_bytecode_file_name.bc
CHECK-NEXT: rw-r--r-- 1002/102 2280 2004-11-19 03:24:02.000000000 IsNAN.o
Test reading a thin archive created by gnu ar
-RUN: env TZ=GMT llvm-ar tv %p/Inputs/thin.a | FileCheck %s --check-prefix=THIN -strict-whitespace
+RUN: env TZ=GMT llvm-ar tv Inputs/thin.a | FileCheck %s --check-prefix=THIN -strict-whitespace
-THIN: rw-r--r-- 1000/1000 8 2014-12-16 00:56:27.000000000 evenlen
-THIN-NEXT: rw-r--r-- 1000/1000 7 2014-12-16 00:56:27.000000000 oddlen
-THIN-NEXT: rwxr-xr-x 1000/1000 1465 2014-12-16 00:56:27.000000000 very_long_bytecode_file_name.bc
-THIN-NEXT: rw-r--r-- 1000/1000 2280 2014-12-16 00:56:27.000000000 IsNAN.o
+THIN: rw-r--r-- 1000/1000 8 2014-12-16 00:56:27.000000000 Inputs/evenlen
+THIN-NEXT: rw-r--r-- 1000/1000 7 2014-12-16 00:56:27.000000000 Inputs/oddlen
+THIN-NEXT: rwxr-xr-x 1000/1000 1465 2014-12-16 00:56:27.000000000 Inputs/very_long_bytecode_file_name.bc
+THIN-NEXT: rw-r--r-- 1000/1000 2280 2014-12-16 00:56:27.000000000 Inputs/IsNAN.o
Test reading an archive with just a symbol table. We use to reject them.
-RUN: llvm-ar tv %p/Inputs/symtab-only.a | FileCheck --allow-empty --check-prefix=EMPTY %s
+RUN: llvm-ar tv Inputs/symtab-only.a | FileCheck --allow-empty --check-prefix=EMPTY %s
EMPTY-NOT: {{.}}
Test reading a thin archive with directory names.
-RUN: env TZ=GMT llvm-ar tv %p/Inputs/thin-path.a | FileCheck %s --check-prefix=THINPATH -strict-whitespace
+RUN: env TZ=GMT llvm-ar tv Inputs/thin-path.a | FileCheck %s --check-prefix=THINPATH -strict-whitespace
-THINPATH: rw-r--r-- 0/0 1224 1970-01-01 00:00:00.000000000 test.o
-THINPATH-NEXT: rw-r--r-- 0/0 1224 1970-01-01 00:00:00.000000000 t/test2.o
+THINPATH: rw-r--r-- 0/0 1224 1970-01-01 00:00:00.000000000 Inputs/test.o
+THINPATH-NEXT: rw-r--r-- 0/0 1224 1970-01-01 00:00:00.000000000 Inputs/t/test2.o
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D27218.79603.patch
Type: text/x-patch
Size: 4326 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161129/a93b32f9/attachment.bin>
More information about the llvm-commits
mailing list