Commit Graph

95 Commits

Author SHA1 Message Date
Jordan Rupprecht cd514b66e8 [llvm-objcopy] Add support for -I binary -B <arch>.
Summary:
The -I (--input-target) and -B (--binary-architecture) flags exist but are currently silently ignored. This adds support for -I binary for architectures i386, x86-64 (and alias i386:x86-64), arm, aarch64, sparc, and ppc (powerpc:common64). This is largely based on D41687.

This is done by implementing an additional subclass of Reader, BinaryReader, which works by interpreting the input file as contents for .data field, sets up a synthetic header, and adds additional sections/symbols (e.g. _binary__tmp_data_txt_start).

Reviewers: jakehehrlich, alexshap, jhenderson, javed.absar

Reviewed By: jhenderson

Subscribers: jyknight, nemanjai, kbarton, fedor.sergeev, jrtc27, kristof.beyls, paulsemel, llvm-commits

Differential Revision: https://reviews.llvm.org/D50343

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340070 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-17 18:51:11 +00:00
Jordan Rupprecht 7b455c4fd2 [llvm-strip] Add support for -p/--preserve-dates
Summary: [llvm-strip] Preserve access/modification timestamps when -p is used.

Reviewers: jakehehrlich, jhenderson, alexshap

Reviewed By: jhenderson

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D50744

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339921 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-16 18:29:40 +00:00
Jordan Rupprecht a391f98615 [llvm-objcopy] NFC: Fix minor formatting issues
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339616 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-13 21:30:27 +00:00
Jordan Rupprecht 024925d385 [llvm-objcopy] NFC: Add some color to error()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339404 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-09 22:52:03 +00:00
Paul Semel ffc59809e8 [llvm-objcopy] Add --prefix-symbols option
Differential Revision: https://reviews.llvm.org/D50381

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339362 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-09 17:49:04 +00:00
Paul Semel 6bbc345f93 [llvm-objcopy] Add --dump-section
Differential Revision: https://reviews.llvm.org/D49979

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339358 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-09 17:05:21 +00:00
Puyan Lotfi 4aec14e3f6 [NFC] clang-format cleanup of a couple files in llvm-objcopy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338752 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 18:16:52 +00:00
Jordan Rupprecht 742c679d08 [llvm-objcopy] Add support for --rename-section flags from gnu objcopy
Summary:
Add support for --rename-section flags from gnu objcopy.

Not all flags appear to have an effect for ELF objects, but allowing them would allow easier drop-in replacement. Other unrecognized flags are rejected.

This was only tested by comparing flags printed by "readelf -e <.o>" against the output of gnu vs llvm objcopy, it hasn't been tested to be valid beyond that.

Reviewers: jakehehrlich, alexshap

Subscribers: llvm-commits, paulsemel, alexshap

Differential Revision: https://reviews.llvm.org/D49870

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338582 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-01 16:23:22 +00:00
Fangrui Song 402cad0619 [llvm-objcopy] Make --strip-debug strip .gdb_index
Summary:
See binutils-gdb/bfd/elf.c, GNU objcopy also strips .stab* (STABS)
.line* (DWARF 1) .gnu.linkonce.wi.* (linkonce section for .debug_info) but
I'm not sure we need to be compatible with it.

Reviewers: dblaikie, alexshap, jakehehrlich, jhenderson

Reviewed By: alexshap, jakehehrlich

Subscribers: aprantl, JDevlieghere, jakehehrlich, llvm-commits

Differential Revision: https://reviews.llvm.org/D50100

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338443 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-31 21:26:35 +00:00
Fangrui Song 2ccd4fbdb9 [llvm-objcopy] Make --strip-debug strip .zdebug* (zlib-gnu) sections
This behavior matches GNU objcopy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338173 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-27 22:51:36 +00:00
Stephen Hines 1028e2499b Handle the lack of a symbol table correctly.
Summary:
These two cases will trigger a dereference on a nullptr, since the
SymbolTable can be nonexistent for a given library, in addition to just
being empty.

Reviewers: alexshap

Reviewed By: alexshap

Subscribers: meikeb, kongyi, chh, jakehehrlich, llvm-commits, pirama

Differential Revision: https://reviews.llvm.org/D49534

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338062 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-26 20:05:31 +00:00
Jordan Rupprecht ff83113c2f [llvm-objcopy] Add basic support for --rename-section
Summary:
Add basic support for --rename-section=old=new to llvm-objcopy.

A full replacement for GNU objcopy requires also modifying flags (i.e. --rename-section=old=new,flag1,flag2); I'd like to keep that in a separate change to keep this simple.

Reviewers: jakehehrlich, alexshap

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D49576

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337604 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-20 19:54:24 +00:00
Puyan Lotfi b5b60c3d14 [NFC][llvm-objcopy] Cleanup namespace usage in llvm-objcopy.
Nest any classes not used outside of a file into anon. Nest any classes used
across files in llvm-objcopy into namespace llvm::objcopy.


Differential Revision: https://reviews.llvm.org/D49449





git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337337 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-18 00:10:51 +00:00
Puyan Lotfi 41306baa27 [NFC][llvm-objcopy] Make helper functions static
Anywhere in tools/llvm-objcopy where functions or classes are not referenced
outside of a given file, we change things to make the function or class static
or put inside an anonymous namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337220 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-16 22:17:05 +00:00
Stephen Hines df4581eddc Add --strip-all option back to llvm-strip.
Summary:
This option appears to have been dropped as part of the refactoring in
r331663. Unfortunately, if we want to use llvm-strip as a drop-in
replacement for strip, this option should still be available.

Reviewers: alexshap

Reviewed By: alexshap

Subscribers: meikeb, kongyi, chh, jakehehrlich, llvm-commits, pirama

Differential Revision: https://reviews.llvm.org/D49226

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336921 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-12 17:42:17 +00:00
Alexander Shaposhnikov 80e7ea0a47 [llvm-objcopy] Add support for static libraries
This diff adds support for handling static libraries 
to llvm-objcopy and llvm-strip.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D48413


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336455 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-06 17:51:03 +00:00
Paul Semel f36d22b003 [llvm-strip] Expose --strip-unneeded option
Differential Revision: https://reviews.llvm.org/D47818

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@334182 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-07 10:05:25 +00:00
Alexander Shaposhnikov ad593b0363 [llvm-strip] Expose --discard-all option
Expose objcopy's --discard-all option in llvm-strip.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D47750


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@334131 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-06 21:23:19 +00:00
Paul Semel 64284524f0 [llvm-objcopy] Fix null symbol handling
This fixes the bug where strip-all option was
leading to a malformed outputted ELF file.

Differential Revision: https://reviews.llvm.org/D47414

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@333772 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-01 16:19:46 +00:00
Alexander Shaposhnikov 9eb9307162 [llvm-strip] Add -o option to llvm-strip
This diff implements the option -o 
for specifying a file to write the output to.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D47505


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@333693 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-31 20:42:13 +00:00
Paul Semel 5af80c626e [llvm-objcopy] Add --keep-file-symbols option
This option prevent from removing file symbols while removing symbols.

Differential Revision: https://reviews.llvm.org/D46830

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@333339 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-26 08:10:37 +00:00
Paul Semel fe9deeb432 [llvm-objcopy] Add --strip-unneeded option
Differential Revision: https://reviews.llvm.org/D46896

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@333267 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-25 11:01:25 +00:00
Alexander Shaposhnikov 0390dacdd0 [llvm-strip] Minor fix of the usage of TableGen
This is a small follow-up to the revisions r333117 and r331663.

1. Avoid the name conflicts of the generated variables for prefixes.
2. Apply clang-format -i -style=llvm to llvm-objcopy.cpp once again.
3. Add a test for the flag with double dash.

Test plan: make check-all


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@333120 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-23 20:39:52 +00:00
Alexander Shaposhnikov 49011d2b65 [llvm-strip] Expose --keep-symbol option
Expose --keep-symbol option in llvm-strip.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D47222


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@333117 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-23 19:44:19 +00:00
Alexander Shaposhnikov 8eff37b3dd [llvm-objcopy] Fix the behavior of --strip-* and --keep-symbol
If one runs llvm-objcopy --strip-all --keep-symbol foo
and the symbol table indeed contains the symbol "foo"
then it should not be removed.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D47052


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@333008 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-22 18:24:07 +00:00
Paul Semel 7d79fc6afb Revert "[llvm-objcopy] Add --strip-unneeded option"
There is a use after free I didn't see. Need to investigate.

This reverts commit f7624abeb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@332925 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-22 01:04:36 +00:00
Paul Semel f7624abeb1 [llvm-objcopy] Add --strip-unneeded option
This option removes symbols that are not needed by relocations.

Differential Revision: https://reviews.llvm.org/D46896

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@332915 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-21 22:50:32 +00:00
Alexander Shaposhnikov 2135b33dc5 [llvm-objcopy] Fix formatting
Apply clang-format -i -style=llvm to llvm-objcopy.cpp
NFC.

Test plan: make check-all


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@332693 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-18 04:18:41 +00:00
Jake Ehrlich bcc9a743a6 [llvm-objcopy] Add --only-keep-debug as a noop
This option just keeps being a problem and really needs to be implemented
in some fashion. Implementing it properly requires some kind of
"replaceSectionReference" method because all the existing links need to be
maintained. The desired behavior is just for allocated sections to become
NOBITS but actually implementing that is rather tricky due to the current
design of llvm-objcopy. However converting allocated sections to NOBITS is
just an optimization and not something debuggers need. Debuggers can debug
a stripped executable and take an unstripped executable for that stripped
executable as input. Additionally allocated sections account for a very
small part of debug binaries so this optimization is quite small. I propose
that for the time being we implement this as a NOP so that people can use
llvm-objcopy where they need to, just in a sub-optimal way.

This option has already blocked a lot of people and its currently blocking me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@332396 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-15 20:53:53 +00:00
Paul Semel 5fe8b27775 [llvm-objcopy] Add --keep-symbol (-K) option
This option permits to explicitly keep the specified
symbol so that it doesn't get removed.

Differential Revision: https://reviews.llvm.org/D46819

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@332356 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-15 14:09:37 +00:00
Alexander Shaposhnikov 3e6c331c76 [llvm-strip] Add support for -remove-section
This diff adds support for -remove-section to llvm-strip.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D46567


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@332081 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-11 05:27:06 +00:00
Paul Semel dd5a608d8b [llvm-objcopy] Add --strip-symbol (-N) option
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331924 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-09 21:36:54 +00:00
Alexander Shaposhnikov 680a6e84e3 [llvm-objcopy] Fix exit code
Set the exit code to 1 if no arguments are specified.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D46547



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331776 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-08 17:12:54 +00:00
Alexander Shaposhnikov 409ea28c47 [tools] Introduce llvm-strip
llvm-strip is supposed to be a drop-in replacement for binutils strip.
To start the ball rolling this diff adds the initial bits for llvm-strip,
more features will be added incrementally over time.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D46407



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331663 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-07 19:32:09 +00:00
Paul Semel 80e28a9c4e [llvm-objcopy] Add --discard-all (-x) option
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331400 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-02 20:19:22 +00:00
Paul Semel b4db044c01 [llvm-objcopy] Add --weaken option
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331397 91177308-0d34-0410-b5e6-96231b3b80d8
2018-05-02 20:14:49 +00:00
Paul Semel 0fb24c145b [llvm-objcopy] Add --weaken-symbol (-W) option
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331070 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-27 19:16:27 +00:00
Paul Semel 384d8a7924 [llvm-objcopy] Add --globalize-symbol option
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331068 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-27 19:09:44 +00:00
Alexander Shaposhnikov 5b92658eab [llvm-objcopy] Implement --redefine-sym option
This diff implements --redefine-sym option 
for changing the name of a symbol.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D46029



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330973 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-26 18:28:17 +00:00
Paul Semel 37dc08589c [llvm-objcopy] Add --localize-symbol option
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330963 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-26 17:44:43 +00:00
Alexander Shaposhnikov 7f71e97394 [llvm-objcopy] Adjust the code for the old versions of msvc
Follow-up for r330685.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330686 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-24 06:23:22 +00:00
Alexander Shaposhnikov ae1ca02d14 Recommit "[llvm-objcopy] Switch over to using TableGen for parsing arguments"
Add explicit dependency on ObjcopyTableGen 
and rerun the tests on Windows. 
I will double-check the build bots 
and revert this commit if necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330685 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-24 05:43:32 +00:00
Rui Ueyama 0b9d56a30e Define InitLLVM to do common initialization all at once.
We have a few functions that virtually all command wants to run on
process startup/shutdown. This patch adds InitLLVM class to do that
all at once, so that we don't need to copy-n-paste boilerplate code
to each llvm command's main() function.

Differential Revision: https://reviews.llvm.org/D45602

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330046 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-13 18:26:06 +00:00
Jake Ehrlich b1f2b2d1ce Revert "[llvm-objcopy] Switch over to using TableGen for parsing arguments"
TableGen seems to work differently on windows. I'll need to revert this

This reverts commit 7a153ddea067b24da59f6a66c733d79205969501.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@329867 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-12 00:40:50 +00:00
Jake Ehrlich 6450f7fb01 [llvm-objcopy] Switch over to using TableGen for parsing arguments
Swithces from using the command line library to using TableGen. This will allow
llvm-strip to exist and allow refinements of the command line syntax.

Differential Revision: https://reviews.llvm.org/D44236

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@329863 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-11 23:37:03 +00:00
Alexander Shaposhnikov 09d56824f5 [llvm-objcopy] Make modifications in-place if output is not specified
If the output file is not specified make the modifications in-place 
(like binutils objcopy does). In particular, this fixes 
the behavior of Clang -gsplit-dwarf (if Clang is configured to use llvm-objcopy), 
previously it was creating .dwo files, but still leaving *dwo* sections in 
the original binary.

Test plan: make check-all

Differential revision: https://reviews.llvm.org/D42873


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@324783 91177308-0d34-0410-b5e6-96231b3b80d8
2018-02-09 23:33:31 +00:00
Jake Ehrlich ca099d91d2 [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects
While writing code for input and output formats in llvm-objcopy it became
apparent that there was a code health problem. This change attempts to solve
that problem by refactoring the code to use Reader and Writer objects that can
read in different objects in different formats, convert them to a single shared
internal representation, and then write them to any other representation.

New classes:
Reader: the base class used to construct instances of the internal
representation
Writer: the base class used to write out instances of the internal
representation
ELFBuilder: a helper class for ELFWriter that takes an ELFFile and converts it
to a Object
SectionVisitor: it became necessary to remove writeSection from SectionBase
because, under the new Reader/Writer scheme, it's possible to convert between
ELF Types such as ELF32LE and ELF32BE. This isn't possible with writeSection
because it (dynamically) depends on the underlying section type *and*
(statically) depends on the ELF type. Bad things would happen if the underlying
sections for ELF32LE were used for writing to ELF64BE. To avoid this code smell
(which would have compiled, run, and output some nonsesnse) I decoupled writing
of sections from a class.
SectionWriter: This is just the ELFT templated implementation of
SectionVisitor. Many classes now have this class as a friend so that the
writing methods in this class can write out private data.
ELFWriter: This is the Writer that outputs to ELF
BinaryWriter: This is the Writer that outputs to Binary
ElfType: Because the ELF Type is not a part of the Object anymore we need a way
to construct the correct default Writer based on properties of the Reader. This
enum just keeps track of the ELF type of the input so it can be used as the
default output type as well.

Object has correspondingly undergone some serious changes as well. It now has
more generic methods for building and manipulating ELF binaries. This interface
makes ELFBuilder easy enough to use and will make the BinaryReader/Builder easy
to create as well. Most changes in this diff are cosmetic and deal with the
fact that a method has been moved from one class to another or a change from a
pointer to a reference. Almost no changes should result in a functional
difference (this is after all a refactor). One minor functional change was made
and the result can be seen in remove-shstrtab-error.test. The fact that it
fails hasn't changed but the error message has changed because that failure is
detected at a later point in the code now (because WriteSectionHeaders is a
property of the ElfWriter *not* a property of the Object). I'd say roughly
80-90% of this code is cosmetically different, 10-19% is different but
functionally the same, and 1-5% is functionally different despite not causing a
change in tests.

Differential Revision: https://reviews.llvm.org/D42222

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@323480 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-25 22:46:17 +00:00
Jake Ehrlich f0c7c0917c [llvm-objcopy] Add --add-gnu-debuglink
This change adds support for --add-gnu-debuglink to llvm-objcopy

Differential Revision: https://reviews.llvm.org/D41731

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@323477 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-25 22:15:14 +00:00
Aaron Ballman ab7a41171b Revert r322132; it appears to be an accidental commit, based on the commit message. The original author of the commit has not commented on whether this was accidental or purposeful, so if this revert is in error, the author can re-commit with an actual commit message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@323466 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-25 21:08:23 +00:00
Aaron Ballman f1534d01fc Reverting r323463 as it appears to be an accidental commit. Regardless, it broke a lot of build bots, so reverting back to green.
http://lab.llvm.org:8011/builders/lldb-amd64-ninja-netbsd8/builds/9294
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/24084
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/9567


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@323465 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-25 21:03:38 +00:00