Commit Graph

1108 Commits

Author SHA1 Message Date
Michael Trent
fc1d511f89 Reverting r320166 to fix test failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320174 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-08 19:09:26 +00:00
Michael Trent
bed8c447e4 Updated llvm-objdump to display local relocations in Mach-O binaries
Summary:
llvm-objdump's Mach-O parser was updated in r306037 to display external
relocations for MH_KEXT_BUNDLE file types. This change extends the Macho-O
parser to display local relocations for MH_PRELOAD files. When used with
the -macho option relocations will be displayed in a historical format.

rdar://35778019

Reviewers: enderby

Reviewed By: enderby

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320166 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-08 17:51:04 +00:00
Sam Clegg
1f4bd62fa3 Reland "[WebAssembly] Add visibility flag to Wasm symbol flags""
Original change was rL319488.

This was reverted rL319602 due to a gcc 7.1 warning.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319626 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-03 01:19:23 +00:00
Heejin Ahn
527f9bdad5 [WebAssembly] Revert r319488 "Add visibility flag to Wasm symbol flags"
This patch reportedly broke one of LLVM bots (ubuntu-gcc7.1-werror).

See http://lab.llvm.org:8011/builders/ubuntu-gcc7.1-werror/builds/3369 for
details.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319602 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-02 02:05:06 +00:00
Sam Clegg
2b1b9e5ead Add visibility flag to Wasm symbol flags
The LLVM "hidden" flag needs to be passed through the Wasm
intermediate objects in order for the linker to apply
it to the final Wasm object.

The corresponding change in LLD is here: https://github.com/WebAssembly/lld/pull/14

Patch by Nicholas Wilson

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319488 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-30 22:34:58 +00:00
Rafael Espindola
fb10287401 Check alignment in getSectionContentsAsArray.
While the ArrayRef can technically have unaligned data, it would be
extremely surprising if iterating over it caused undefined behavior
when a reference to the underlying type was bound.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319392 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-30 00:44:22 +00:00
Peter Collingbourne
81e548c8a4 Reland r319090, "COFF: Do not create SectionChunks for discarded comdat sections." with a fix for debug sections.
If /debug was not specified, readSection will return a null
pointer for debug sections. If the debug section is associative with
another section, we need to make sure that the section returned from
readSection is not a null pointer before adding it as an associative
section.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319133 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-28 01:30:07 +00:00
Peter Collingbourne
a94d5cd611 Revert r319090, "COFF: Do not create SectionChunks for discarded comdat sections."
Caused test failures in check-cfi on Windows.
http://lab.llvm.org:8011/builders/sanitizer-windows/builds/20284

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319100 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-27 21:37:51 +00:00
Peter Collingbourne
3e70082a17 COFF: Do not create SectionChunks for discarded comdat sections.
With this change, instead of creating a SectionChunk for each section
in the object file, we only create them when we encounter a prevailing
comdat section.

Also change how symbol resolution occurs between comdat symbols. Now
only the comdat leader participates in comdat resolution, and not any
other external associated symbols. This is more in line with how COFF
semantics are defined, and should allow for a more straightforward
implementation of non-ANY comdat types.

On my machine, this change reduces our runtime linking a release
build of chrome_child.dll with /nopdb from 5.65s to 4.54s (median of
50 runs).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319090 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-27 20:42:34 +00:00
Peter Collingbourne
9cf32a0f1d Revert r317046, "Object: Move some code from ELF.h into ELF.cpp."
This change resulted in a measured 1.5-2% perf regression linking
chrome.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317371 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-03 21:30:06 +00:00
NAKAMURA Takumi
598658d792 Fix warnings discovered by rL317076. [-Wunused-private-field]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317091 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-01 13:47:55 +00:00
Peter Collingbourne
fee1f226fd Object: Move some code from ELF.h into ELF.cpp.
Differential Revision: https://reviews.llvm.org/D39271

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317046 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-31 22:49:23 +00:00
Peter Collingbourne
15227dba51 Inline compareAddr function into its only caller. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317045 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-31 22:49:09 +00:00
Peter Collingbourne
74a12b3740 Remove dead function declaration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316597 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-25 17:42:00 +00:00
Peter Collingbourne
68a3deb50e llvm-readobj: Add support for reading relocations in the Android packed format.
This is in preparation for testing lld's upcoming relocation packing
feature (D39152). I have verified that this implementation correctly
unpacks the relocations from a Chromium DSO built with gold and the
Android relocation packer for ARM32 and ARM64.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316543 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-25 03:37:12 +00:00
Aaron Ballman
1d03d382c1 Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people.
Error LNK2019 unresolved external symbol "public: void __cdecl `anonymous namespace'::MatchableInfo::dump(void)const " (?dump@MatchableInfo@?A0xf4f1c304@@QEBAXXZ) referenced in function "public: void __cdecl `anonymous namespace'::AsmMatcherEmitter::run(class llvm::raw_ostream &)" (?run@AsmMatcherEmitter@?A0xf4f1c304@@QEAAXAEAVraw_ostream@llvm@@@Z) llvm-tblgen D:\llvm\2017\utils\TableGen\AsmMatcherEmitter.obj 1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315854 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-15 14:32:27 +00:00
Don Hinton
5298935fe7 [dump] Remove NDEBUG from test to enable dump methods [NFC]
Summary:
Add LLVM_FORCE_ENABLE_DUMP cmake option, and use it along with
LLVM_ENABLE_ASSERTIONS to set LLVM_ENABLE_DUMP.

Remove NDEBUG and only use LLVM_ENABLE_DUMP to enable dump methods.

Move definition of LLVM_ENABLE_DUMP from config.h to llvm-config.h so
it'll be picked up by public headers.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315590 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-12 16:16:06 +00:00
Zachary Turner
d4118422e7 Revert "[ADT] Make Twine's copy constructor private."
This reverts commit 4e4ee1c507e2707bb3c208e1e1b6551c3015cbf5.

This is failing due to some code that isn't built on MSVC
so I didn't catch.  Not immediately obvious how to fix this
at first glance, so I'm reverting for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315536 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 23:54:34 +00:00
Zachary Turner
dc62a47c34 [ADT] Make Twine's copy constructor private.
There's a lot of misuse of Twine scattered around LLVM.  This
ranges in severity from benign (returning a Twine from a function
by value that is just a string literal) to pretty sketchy (storing
a Twine by value in a class).  While there are some uses for
copying Twines, most of the very compelling ones are confined
to the Twine class implementation itself, and other uses are
either dubious or easily worked around.

This patch makes Twine's copy constructor private, and fixes up
all callsites.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315530 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 23:33:06 +00:00
Rafael Espindola
f45980e68e Convert the last uses of ErrorOr in include/llvm/Object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315483 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 18:07:18 +00:00
Rafael Espindola
3e4703639c Remove unused include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315481 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 17:35:48 +00:00
Rafael Espindola
7848ae3db6 Convert the last uses of ErrorOr in COFF.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315480 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 17:33:11 +00:00
Rafael Espindola
a8a175e0de Convert a few ErrorOr to Expected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315477 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 17:23:15 +00:00
Rafael Espindola
0aed7aeeba Convert a couple of ErrorOr to Expected. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315475 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 17:05:24 +00:00
Rafael Espindola
a160c4529a Remove an unused include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315474 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 16:58:32 +00:00
Rafael Espindola
86ab1f56e4 Convert an ErrorOr to Expected.
getRelocationAddend should never be called on non SHT_RELA sections,
but changing that requires changing RelocVisitor.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315473 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 16:56:33 +00:00
Rafael Espindola
4f80a5f9b0 Make the ELFFile constructor private.
With this all clients have to use the new create method which returns
an Expected.

Fixes a crash on invalid input.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315376 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-10 22:17:49 +00:00
Rafael Espindola
5c1b443509 Make the ELFObjectFile constructor private.
This forces every user to use the new create method that returns an
Expected. This in turn propagates better error messages.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315371 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-10 21:21:16 +00:00
Rafael Espindola
e2d20cb260 Convert two uses of ErrorOr to Expected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315354 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-10 20:00:07 +00:00
Rafael Espindola
629b8be51b Added phdr upper bound checks to ElfObject.
Ensure the program_headers call will fail correctly if the program
headers are larger than the underlying buffer.

Patch by Parker Thompson!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315012 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-05 20:01:32 +00:00
Konstantin Zhuravlyov
9b90153e76 AMDGPU: Add and set AMDGPU-specific e_flags
Differential Revision: https://reviews.llvm.org/D38556


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314987 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-05 16:19:18 +00:00
Konstantin Zhuravlyov
7624630b81 AMDGPU: Add ELFOSABI_AMDGPU_PAL
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314843 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-03 20:54:07 +00:00
Sam Clegg
f4af085184 [WebAssembly] Use function/global index space in WasmSymbol
It is useful for the symbol to contain the index of the
function of global it represents in the function/global
index space.

For imports we also store the import index so that the
linker can find, for example, the signature of the
corresponding function, which is defined by the import

In the long run we need to decide whether this API
surface should be closer to binary (where imported
functions are seperate) or the wasm spec (where the
function index space is unified).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314230 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-26 18:21:12 +00:00
Jonas Devlieghere
ac9a500e73 [dwarfdump] Skip 'stripped' sections
When dsymutil generates the companion file, its strips all unnecessary
sections by omitting their body and setting the offset in their
corresponding load command to zero.

One such section is the .eh_frame section, as it contains runtime
information rather than debug information and is part of the __TEXT
segment. When reading this section, we would just read the number of
bytes specified in the load command, starting from offset 0 (i.e. the
beginning of the file).

Rather than trying to parse this obviously invalid section, dwarfdump
now skips this.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314208 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-26 14:22:35 +00:00
Rafael Espindola
203c90ba80 Convert the archive writer to use Error.
This found one place in lld that was not checking the error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313937 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-21 23:13:36 +00:00
Rafael Espindola
84148478f0 Use ArrayRef. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313895 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-21 17:51:07 +00:00
Sam Clegg
b1dd7d6140 [WebAssembly] Add support for local symbol bindings
Differential Revision: https://reviews.llvm.org/D38096

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313817 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-20 21:17:04 +00:00
Marek Sokolowski
96bd9232ef [llvm-readobj] Teach readobj to dump .res files (WindowsResource).
This enables readobj to output Windows resource files (.res). This way,
we'll be able to test .res outputs without comparing them byte-by-byte
with "magic binary files" generated by MS toolchain.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313790 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-20 18:33:35 +00:00
Jake Ehrlich
f45adc29de Rename K_MIPS64 to K_GNU64
This patch renames K_MIPS64 to K_GNU64 as part of a change to add
support for writing archives with 64-bit indexes in the symbol table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313787 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-20 18:23:01 +00:00
Vlad Tsyrklevich
b261c46c08 Allow public Triple deduction from ObjectFiles.
Move logic that allows for Triple deduction from an ObjectFile object
out of llvm-objdump.cpp into a public factory, found in the ObjectFile
class.

This should allow other tools in the future to use this logic without
reimplementation.

Patch by Mitch Phillips

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313605 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-19 02:22:48 +00:00
Petr Hosek
03855b657f [Object] Fix missing arguments to getType and getSymbol in Elf_Rel_Impl
Somehow this was compiling without these methods having their arguments
passed to them. I used these methods in some code I wrote and it raised
an error on me. It appears no one else has used these methods let (LLD
uses setSymbolAndType however). This change resolves the issue.

Patch by Jake Ehrlich

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313336 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-15 02:59:55 +00:00
Sam Clegg
9f8cb471ac [WebAssembly] Only treat imports/exports as symbols when reading relocatable object files
This change only treats imported and exports functions and globals
as symbol table entries the object has a "linking" section (i.e. it is
relocatable object file).

In this case all globals must be of type I32 and initialized with
i32.const.  This was previously being assumed but not checked for and
was causing a failure on big endian machines due to using the wrong
value of then union.

See: https://bugs.llvm.org/show_bug.cgi?id=34487

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312674 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-06 22:05:41 +00:00
Vedant Kumar
eab8552ac0 Revert "[Decompression] Fail gracefully when out of memory"
This reverts commit r312526.

Revert "Fix test/DebugInfo/dwarfdump-decompression-invalid-size.test"

This reverts commit r312527.

It causes an ASan failure:
http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan_check/4150

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312582 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-05 22:04:00 +00:00
Jonas Devlieghere
95c992eb85 [Decompression] Fail gracefully when out of memory
This patch adds failing gracefully when running out of memory when
allocating a buffer for decompression.

This provides a work-around for:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3224

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312526 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-05 11:21:38 +00:00
Sam Clegg
209d3c2d39 [WebAssembly] Validate exports when parsing object files
Subscribers: jfb, dschuff, jgravelle-google, aheejin

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312286 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-31 21:43:45 +00:00
Benjamin Kramer
1a7f03ef84 [Object] Verify object sizes before handing out StringRefs pointing out
of bounds.

This can only happen on corrupt input. Found by OSS-FUZZ!
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3228

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312235 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-31 12:27:10 +00:00
Rui Ueyama
aa892fdd03 Simplify writeArchive return type.
writeArchive returned a pair, but the first element of the pair is always
its first argument on failure, so it doesn't make sense to return it from
the function. This patch change the return type so that it does't return it.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312177 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-30 22:11:03 +00:00
NAKAMURA Takumi
d60caed503 Prune whitespaces in blank lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311876 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-28 07:48:37 +00:00
Eric Beckmann
e90e727e0d Fix bug 34051 by handling empty .res files gracefully.
Summary:
Previously, llvm-cvtres crashes on .res files which are empty except for
the null header.  This allows the library to simply pass over them.

Subscribers: llvm-commits, hiraditya

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311625 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-24 02:36:50 +00:00
Simon Atanasyan
10781fc2c1 [mips] Handle R_MIPS_TLS_DTPREL32/64 relocations in the RelocVisitor
Debug information for TLS variables on MIPS might have R_MIPS_TLS_DTPREL32
or R_MIPS_TLS_DTPREL64 relocations. This patch adds a support for such
relocations in the `RelocVisitor`.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311031 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-16 19:01:22 +00:00