275 Commits

Author SHA1 Message Date
Fangrui Song
cd412ccdee Change some StringRef::data() reinterpret_cast to bytes_begin() or arrayRefFromStringRef()
llvm-svn: 357852
2019-04-07 03:58:42 +00:00
Xing GUO
8d4f850499 [llvm-objdump] Should print unknown d_tag in hex format
Summary:
Currently, `llvm-objdump` prints "unknown" instead of d_tag value in hex format. Because getDynamicTagAsString returns "unknown" rather than empty 
string.

Reviewers: grimar, jhenderson

Reviewed By: jhenderson

Subscribers: rupprecht, llvm-commits

Tags: #llvm

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

llvm-svn: 355262
2019-03-02 04:20:28 +00:00
Chandler Carruth
ae65e281f3 Update the file headers across all of the LLVM projects in the monorepo
to reflect the new license.

We understand that people may be surprised that we're moving the header
entirely to discuss the new license. We checked this carefully with the
Foundation's lawyer and we believe this is the correct approach.

Essentially, all code in the project is now made available by the LLVM
project under our new license, so you will see that the license headers
include that license only. Some of our contributors have contributed
code under our old license, and accordingly, we have retained a copy of
our old license notice in the top-level files in each project and
repository.

llvm-svn: 351636
2019-01-19 08:50:56 +00:00
Fangrui Song
1f32d67d40 [Object] Rename getRelrRelocationType to getRelativeRelocationType
Summary:
The two utility functions were added in D47919 to support SHT_RELR.
However, these are just relative relocations types and are't
necessarily be named Relr.

Reviewers: phosek, dberris

Reviewed By: dberris

Subscribers: llvm-commits

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

llvm-svn: 349133
2018-12-14 07:46:58 +00:00
Paul Semel
3560e7c201 [llvm-objdump] Add dynamic section printing to private-headers option
Differential Revision: https://reviews.llvm.org/D49016

llvm-svn: 337902
2018-07-25 11:09:20 +00:00
Jake Ehrlich
5a896e10ed [llvm-readobj] Add experimental support for SHT_RELR sections
This change adds experimental support for SHT_RELR sections, proposed
here: https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg

Definitions for the new ELF section type and dynamic array tags, as well
as the encoding used in the new section are all under discussion and are
subject to change. Use with caution!

Author: rahulchaudhry

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

llvm-svn: 335922
2018-06-28 21:07:34 +00:00
Paul Semel
bc4f5a08fb [llvm-readobj] Add -string-dump (-p) option
This option prints the section content as a string.

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

llvm-svn: 334834
2018-06-15 14:15:02 +00:00
Adrian Prantl
076a6683eb Remove \brief commands from doxygen comments.
We've been running doxygen with the autobrief option for a couple of
years now. This makes the \brief markers into our comments
redundant. Since they are a visual distraction and we don't want to
encourage more \brief markers in new code either, this patch removes
them all.

Patch produced by

  for i in $(git grep -l '\\brief'); do perl -pi -e 's/\\brief //g' $i & done

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

llvm-svn: 331272
2018-05-01 15:54:18 +00:00
Scott Linder
cc5deea69d [llvm-readobj][ELF] Move ELF note parsing into libObject
Clean up the parsing of notes in llvm-readobj, improve bounds checking, and
allow the parsing code to be reused.

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

llvm-svn: 327320
2018-03-12 19:28:50 +00:00
Rui Ueyama
03fe6a20b4 Use ELF{32,64}{LE,BE} instead of ELFType<{little,big}, {true,false}>. NFC.
llvm-svn: 322342
2018-01-12 01:40:32 +00:00
Rafael Espindola
28dc39af8c 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.

llvm-svn: 319392
2017-11-30 00:44:22 +00:00
Peter Collingbourne
08823f2e0d 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.

llvm-svn: 317371
2017-11-03 21:30:06 +00:00
Peter Collingbourne
c96a69b45d Object: Move some code from ELF.h into ELF.cpp.
Differential Revision: https://reviews.llvm.org/D39271

llvm-svn: 317046
2017-10-31 22:49:23 +00:00
Peter Collingbourne
b997552a11 Inline compareAddr function into its only caller. NFCI.
llvm-svn: 317045
2017-10-31 22:49:09 +00:00
Peter Collingbourne
656d1cb74c Remove dead function declaration.
llvm-svn: 316597
2017-10-25 17:42:00 +00:00
Peter Collingbourne
251c0e9aa5 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

llvm-svn: 316543
2017-10-25 03:37:12 +00:00
Rafael Espindola
0ca347c3b8 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.

llvm-svn: 315376
2017-10-10 22:17:49 +00:00
Rafael Espindola
e505531600 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!

llvm-svn: 315012
2017-10-05 20:01:32 +00:00
Zachary Turner
c5632126fc Move Object format code to lib/BinaryFormat.
This creates a new library called BinaryFormat that has all of
the headers from llvm/Support containing structure and layout
definitions for various types of binary formats like dwarf, coff,
elf, etc as well as the code for identifying a file from its
magic.

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

llvm-svn: 304864
2017-06-07 03:48:56 +00:00
Rafael Espindola
ba161791b9 Use existing helper. NFC.
llvm-svn: 303368
2017-05-18 18:24:11 +00:00
Rafael Espindola
8a3c37c21a Add llvm::object::getELFSectionTypeName().
This is motivated by https://reviews.llvm.org/D32488 where I am trying
to add printing of the section type for incompatible sections to LLD
error messages. This patch allows us to use the same code in
llvm-readobj and LLD instead of duplicating the function inside LLD.

Patch by Alexander Richardson!

llvm-svn: 301921
2017-05-02 14:04:52 +00:00
Eugene Zelenko
e789eacbed [Object] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
llvm-svn: 301275
2017-04-24 23:21:38 +00:00
Vassil Vassilev
fee845a566 Remove unused functions. Remove static qualifier from functions in header files. NFC.
llvm-svn: 299947
2017-04-11 14:55:32 +00:00
Ivan Krasin
53c893e263 Remove accidental debug printf. Follow up to r299583.
llvm-svn: 299584
2017-04-05 20:07:43 +00:00
Ivan Krasin
f25940dbd7 Revert r299536. [AMDGPU] SDWA peephole: enable by default.
Reason: breaks multiple bots:

http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/3988
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/1173

Original Review URL: https://reviews.llvm.org/D31671

llvm-svn: 299583
2017-04-05 19:58:12 +00:00
Davide Italiano
af42944969 [ELF] Convert ELF.h to Expected<T>.
This has two advantages:
1) We slowly move away from ErrorOr to the new handling interface,
in the hope of having an uniform error handling in LLVM, eventually.
2) We're starting to have *meaningful* error messages for invalid
object ELF files, rather than a generic "parse error". At some point
we should include also the offset to improve the quality of the
diagnostic.

llvm-svn: 287081
2016-11-16 05:10:28 +00:00
Davide Italiano
7a9dab6844 [ELF] Rewrite isMips64EL() using isMipsELF64(). NFCI.
llvm-svn: 287011
2016-11-15 19:15:18 +00:00
Rafael Espindola
210d44190b cleanup hashSysV a bit.
Don't pass a reference to a StringRef and use a range loop.

llvm-svn: 286232
2016-11-08 14:04:16 +00:00
Davide Italiano
87c346c044 [lib/Object] Rename elf_hash to hashSysV.
This is more clear, as we have also GNU hash these days..

llvm-svn: 286157
2016-11-07 21:56:04 +00:00
Rafael Espindola
eccb48cc88 Don't error in the ELFFile constructor.
All error checking now happens when the information is needed. The
only thing left is the minimum size of the buffer and that can be just
a precondition. I will add an ErrorOr create method in a followup
commit.

Also don't store a pointer to the Header, since it is just a trivial
cast.

llvm-svn: 285961
2016-11-03 20:16:53 +00:00
Rafael Espindola
9eb82ca1c3 Remove the last use of report_fatal_error from ELF.h.
llvm-svn: 285955
2016-11-03 19:07:15 +00:00
Rafael Espindola
e7e3d11779 Add error handling to getEntry.
Issue found by inspection.

llvm-svn: 285951
2016-11-03 18:05:33 +00:00
Rafael Espindola
ac4361fcf8 Replace another report_fatal_error with an ErrorOr.
llvm-svn: 285944
2016-11-03 17:37:28 +00:00
Rafael Espindola
b8e8535a52 Replace a report_fatal_error with an ErrorOr.
llvm-svn: 285942
2016-11-03 17:28:33 +00:00
Rafael Espindola
a184fd74fb Delete dead code.
llvm-svn: 285940
2016-11-03 17:18:31 +00:00
Rafael Espindola
7a5fe60024 Delete dead code.
llvm-svn: 285935
2016-11-03 16:58:27 +00:00
Rafael Espindola
b5148dbd40 Add lower level versions of some functions.
This adds versions of getSectionIndex, getSection and getSymbol that
instead of a Elf_Shdr take the content of that section.

llvm-svn: 285932
2016-11-03 16:51:44 +00:00
Rafael Espindola
c1b7f6717c Move function out of line. NFC.
llvm-svn: 285929
2016-11-03 16:24:35 +00:00
Rafael Espindola
f6d7022402 Inline function into only use.
llvm-svn: 285928
2016-11-03 16:10:39 +00:00
Rafael Espindola
5fad526ea2 Return existing error code.
Should fix the -Werror bots.

llvm-svn: 285921
2016-11-03 14:53:25 +00:00
Rafael Espindola
fc483a4565 Move a free function out of ELFFile.
llvm-svn: 285920
2016-11-03 14:41:17 +00:00
Rafael Espindola
64c82be50a Split out a getSectionIndex.
That code is currently duplicated in lld.

llvm-svn: 285915
2016-11-03 14:24:53 +00:00
Rafael Espindola
32863809b4 replace a report_fatal_error with a ErrorOr.
llvm-svn: 285910
2016-11-03 13:58:15 +00:00
Rafael Espindola
eedde2ef3c Replace a report_fatal_error with an ErrorOr.
llvm-svn: 285905
2016-11-03 13:43:30 +00:00
Rafael Espindola
b387b5e54a Split getStringTableForSymtab.
For use in cases where we already have the section table.

llvm-svn: 285903
2016-11-03 13:22:51 +00:00
Rafael Espindola
6f3e2cdb87 Split getSHNDXTable in two.
Some clients already have the section table available.

llvm-svn: 285898
2016-11-03 12:23:41 +00:00
George Rimar
7ce112a903 [Object/ELF] - Make getSymbol() return Error.
That is consistent with other methods around
and helps to handle error on a caller side.

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

llvm-svn: 285886
2016-11-03 08:40:55 +00:00
Rafael Espindola
d9667129b9 Split getSection in two.
This will allow avoiding repeated error checking in a few cases.

llvm-svn: 285874
2016-11-03 02:24:59 +00:00
Rafael Espindola
39b49356a1 Simplify some typedefs. NFC.
llvm-svn: 285863
2016-11-02 21:39:02 +00:00
Rafael Espindola
e5a7a54be7 Simplify typedefs. NFC.
llvm-svn: 285819
2016-11-02 15:33:59 +00:00