479 Commits

Author SHA1 Message Date
Rafael Espindola
bf33cfed0e Add a unwrapOrError utility and use it to simplify ELFDumper.cpp.
Utility extracted from r260488.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261103 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-17 16:21:49 +00:00
Rafael Espindola
7ecc477012 Change how readobj stores info about dynamic symbols.
We used to keep both a section and a pointer to the first symbol.

The oddity of keeping a section for dynamic symbols is because there is
a DT_SYMTAB but no DT_SYMTABZ, so to print the table we have to find the
size via a section table.

The reason for still keeping a pointer to the first symbol is because we
want to be able to print relocation tables even if the section table is
missing (it is mandatory only for files used in linking).

With this patch we keep just a DynRegionInfo. This then requires
changing a few places that were asking for a Elf_Shdr but actually just
needed the first symbol.

The test change is to delete the program header pointer.
Now that we use the information of both DT_SYMTAB and .dynsym, we don't
depend on the sh_entsize of .dynsym if we see DT_SYMTAB.

Note: It is questionable if it is worth it putting the effort to report
broken sh_entsize given that in files with no section table we have to
assume it is sizeof(Elf_Sym), but that is for another change.

Extracted from r260488.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261099 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-17 15:38:21 +00:00
Rafael Espindola
7f7379544d Reapply r260489.
Original commit message:

[readobj] Dump DT_JMPREL relocations when outputting dynamic relocations.

The bits of r260488 it depends on have been committed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260970 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 15:16:00 +00:00
Rafael Espindola
2352c1884e Introduce a getAsRange helper.
This requires making an error message a bit more generic, but that seems
a reasonable tradeoff.

Extracted from r260488 but simplified a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260967 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 14:50:39 +00:00
Rafael Espindola
8f08340f64 Move DynRegionInfo out of the ELFDumper.
This reduces indentation in preparation to adding a bit more code to it.

Extracted from r260488.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260963 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 14:27:33 +00:00
Rafael Espindola
ed783357b0 This reverts commit r260488 and r260489.
Original messages:
    Revert "[readobj] Handle ELF files with no section table or with no program headers."
    Revert "[readobj] Dump DT_JMPREL relocations when outputting dynamic relocations."

r260489 depends on r260488 and among other issues r260488 deleted error
handling code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260962 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 14:17:48 +00:00
Reid Kleckner
f7640fe2c1 [codeview] Dump def range lengths in hex
It makes it easier to correlate with assembly dumps, which are typically
given with hex offsets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260619 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 23:40:14 +00:00
Michael J. Spencer
9be04e4c36 [readobj] Dump DT_JMPREL relocations when outputting dynamic relocations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260489 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:53 +00:00
Michael J. Spencer
f8cdb803c2 [readobj] Handle ELF files with no section table or with no program headers.
This adds support for finding the dynamic table and dynamic symbol table via
the section table or the program header table. If there's no section table an
attempt is made to figure out the length of the dynamic symbol table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260488 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:45 +00:00
Michael J. Spencer
c2545ee719 [readobj] Move dynamic table parsing to a new function. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260487 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:37 +00:00
Michael J. Spencer
71498d2261 [readobj] Sort switch by enum value.
Sort by enum value, but keep related entries adjacent. This makes it
easier to compare against documentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260486 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:32 +00:00
Michael J. Spencer
7341f9694a [readobj] Parse sections before dynamic table.
NFC. This code will be expanded to handle dynamic tables that don't have a
PT_DYNAMIC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260485 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 04:59:26 +00:00
Hemant Kulkarni
8e2d778ca9 Fix const confusion while lambda function usage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260484 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 03:41:34 +00:00
Hemant Kulkarni
74be0c550d Fix build failure caused in r260430
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260471 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 00:01:47 +00:00
Hemant Kulkarni
54f4d3a066 [llvm-readobj] Option to emit readelf like output
New option --elf-output-style=LLVM or GNU
Enables -file-headers in readelf style when elf-output-style=GNU

Differential revision: http://reviews.llvm.org/D14128

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260430 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 20:40:55 +00:00
Hemant Kulkarni
dc8e8f2ccc Revert "[llvm-readobj] Option to emit readelf like output"
This reverts commit a58765909660a7195b32e0cc8c7476168b913750.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260397 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 18:21:01 +00:00
Hemant Kulkarni
fce97aeb2d [llvm-readobj] Option to emit readelf like output
New option --elf-output-style=LLVM or GNU
Enables -file-headers in readelf style when elf-output-style=GNU

Differential revision: http://reviews.llvm.org/D14128

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260391 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 17:51:28 +00:00
Simon Atanasyan
30b32053a4 [llvm-readobj][ELF] Show MIPS GOT content when there is another zero-sized section at the same address
It is possible to have .got section and one or more zero-sized section
at the same address. This patch first checks that GOT (or GOT PLT)
section should have non-zero size using corresponding dynamic tags. Then
it looks up not empty section at the specified address.

Differential Revision: http://reviews.llvm.org/D16968

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260245 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-09 18:45:35 +00:00
Reid Kleckner
47b3c23517 [codeview] Dump a missing field and change its signedness
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259904 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-05 19:15:45 +00:00
David Majnemer
b4612d8832 Correctly handle {Always,Never}StepIntoLine
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259806 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-04 17:57:12 +00:00
David Majnemer
75a2a42e95 Add support for S_DEFRANGE and S_DEFRANGE_SUBFIELD
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259805 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-04 17:37:30 +00:00
David Majnemer
cae51a87c8 Make the dumper's output for variable ranges easier to read
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259804 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-04 17:29:13 +00:00
David Majnemer
ca504cc9cf Print the OffsetStart field's relocation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259723 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-03 22:45:21 +00:00
David Majnemer
62dc24c965 [llvm-readobj] Add support for dumping S_DEFRANGE symbols
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259719 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-03 22:36:46 +00:00
Reid Kleckner
617bba8af8 [codeview] Wire up the .cv_inline_linetable directive
This directive emits the binary annotations that describe line and code
deltas in inlined call sites. Single-stepping through inlined frames in
windbg now works.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259535 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-02 17:41:18 +00:00
Reid Kleckner
78ee0ee137 [CodeView] Fix dumping the is_stmt bit from the line table
Bug pointed out by George Rimar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259205 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-29 16:39:04 +00:00
Reid Kleckner
1689efb4d2 Reland "[CodeView] Use assembler directives for line tables"
This reverts commit r259126 and relands r259117.

This time with updated library dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259130 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-29 00:49:42 +00:00
Reid Kleckner
ae8e13919a Revert "[CodeView] Use assembler directives for line tables"
This reverts commit r259117.

The LineInfo constructor is defined in the codeview library and we have
to link against it now. Doing that isn't trivial, so reverting for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259126 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-29 00:13:28 +00:00
Reid Kleckner
778020bb36 Silence gcc warning about ternary and enumerations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259123 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-28 23:59:35 +00:00
Reid Kleckner
200dc330a0 [CodeView] Use assembler directives for line tables
Adds a new family of .cv_* directives to LLVM's variant of GAS syntax:

- .cv_file: Similar to DWARF .file directives

- .cv_loc: Similar to the DWARF .loc directive, but starts with a
  function id. CodeView line tables are emitted by function instead of
  by compilation unit, so we needed an extra field to communicate this.
  Rather than overloading the .loc direction further, we decided it was
  better to have our own directive.

- .cv_stringtable: Emits the codeview string table at the current
  position. Currently this just contains the filenames as
  null-terminated strings.

- .cv_filechecksums: Emits the file checksum table for all files used
  with .cv_file so far. There is currently no support for emitting
  actual checksums, just filenames.

This moves the line table emission code down into the assembler.  This
is in preparation for implementing the inlined call site line table
format. The inline line table format encoding algorithm requires knowing
the absolute code offsets, so it must run after the assembler has laid
out the code.

David Majnemer collaborated on this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259117 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-28 23:31:52 +00:00
Benjamin Kramer
b8c1bbf870 One more batch of self-containing headers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258974 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 19:29:56 +00:00
Benjamin Kramer
520b685692 Remove superfluous call to std::to_string that's breaking the cygwin build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258928 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 13:22:39 +00:00
Chris Bieneman
caeade4234 Remove autoconf support
Summary:
This patch is provided in preparation for removing autoconf on 1/26. The proposal to remove autoconf on 1/26 was discussed on the llvm-dev thread here: http://lists.llvm.org/pipermail/llvm-dev/2016-January/093875.html

"I felt a great disturbance in the [build system], as if millions of [makefiles] suddenly cried out in terror and were suddenly silenced. I fear something [amazing] has happened."
- Obi Wan Kenobi

Reviewers: chandlerc, grosbach, bob.wilson, tstellarAMD, echristo, whitequark

Subscribers: chfast, simoncook, emaste, jholewinski, tberghammer, jfb, danalbert, srhines, arsenm, dschuff, jyknight, dsanders, joker.eph, llvm-commits

Differential Revision: http://reviews.llvm.org/D16471

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258861 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 21:29:08 +00:00
Hemant Kulkarni
84bca23f8d Fix comparison warning (r258845)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258856 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 20:38:15 +00:00
Hemant Kulkarni
8d6d9f5096 Fixes build break introduced by r258845
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258854 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 20:28:15 +00:00
Hemant Kulkarni
8822b47f7c [llvm-readobj] Add -elf-section-groups option
Adds a way to inspect SHT_GROUP sections in ELF objects.
Displays signature, member sections of these sections.

Differential revision: http://reviews.llvm.org/D16555

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258845 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 19:46:39 +00:00
Bradley Smith
36313d3496 [ARM] Add DSP build attribute and extension targeting
This patch was originally committed as r257885, but was reverted due to windows
failures. The cause of these failures has been fixed under r258677, hence
re-committing the original patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258683 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-25 11:26:11 +00:00
Reid Kleckner
deaeb15786 [readobj] Print CodeOffset first, it's easier to read
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258368 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 23:21:14 +00:00
Simon Atanasyan
8ae8a5ef79 [llvm-readobj][ELF] Teach llvm-readobj to show arch specific ELF section's flags
Some architecture specific ELF section flags might have the same value
(for example SHF_X86_64_LARGE and SHF_HEX_GPREL) and we have to check
machine architectures to select an appropriate set of possible flags.

The patch selects architecture specific flags into separate arrays
`ElfxxxSectionFlags` and combines `ElfSectionFlags` and `ElfxxxSectionFlags`
before pass to the `StreamWriter::printFlags()` method.

Differential Revision: http://reviews.llvm.org/D16269

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258334 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 19:15:18 +00:00
Rafael Espindola
8eeb613a8c Use new function name. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258079 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-18 20:55:24 +00:00
Simon Atanasyan
c7eed3cf66 [llvm-readobj][ELF] s/dyn_rela_/dyn_rel_/ No functional changes.
Follow up to r258001. These template functions might return both REL and RELA
relocations. The 'rel' noun looks less ambiguous.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258060 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-18 18:52:04 +00:00
Simon Atanasyan
d46c0450ce [llvm-readobj][ELF] Teach llvm-readobj to show dynamic relocation in REL format
MIPS 32-bit ABI uses REL relocation record format to save dynamic
relocations. The patch teaches llvm-readobj to show dynamic relocations
in this format.

Differential Revision: http://reviews.llvm.org/D16114

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258001 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-16 22:40:09 +00:00
George Rimar
f351177eec Fixed CRLF->LF line endings from r257914. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257990 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-16 10:38:32 +00:00
Davide Italiano
bac7fb4eb0 [llvm-readobj] Dump DT_RELACOUNT correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257988 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-16 06:06:36 +00:00
George Rimar
0caa8a3ad8 Revert of 57967
Initial commit message:
CRLF -> LF. NFC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257973 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-16 00:49:19 +00:00
George Rimar
a6146a519a CRLF -> LF. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257967 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-16 00:14:21 +00:00
Reid Kleckner
d68684845c [codeview] Handle multiple frame descriptions in readobj
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257943 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-15 22:09:13 +00:00
Reid Kleckner
257c031f51 # This is a combination of 2 commits.
# The first commit's message is:

Revert "[ARM] Add DSP build attribute and extension targeting"

This reverts commit b11cc50c0b4a7c8cdb628abc50b7dc226ff583dc.

# This is the 2nd commit message:

Revert "[ARM] Add new system registers to ARMv8-M Baseline/Mainline"

This reverts commit 837d08454e3e5beb8581951ac26b22fa07df3cd5.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257916 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-15 18:31:29 +00:00
George Rimar
acc082d720 Recommit r257912
Added forgotten ELFDumper.cpp to commit.

Initial commit message:
[llvm-readobj] Add support for TLSDESC_PLT and TLSDESC_GOT dynamic section tags to the llvm-readobj.

If module uses uses lazy TLSDESC relocations it should define DT_TLSDESC_PLT and DT_TLSDESC_GOT entries.
They were unknown for llvm-readobj before this patch.

Differential revision: http://reviews.llvm.org/D16224


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257914 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-15 18:21:34 +00:00
Reid Kleckner
b866708ccd [codeview] Dump the file checksum substream
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257910 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-15 18:06:25 +00:00