579 Commits

Author SHA1 Message Date
Igor Kudrin
c2fd5af986 [llvm-readobj/ELF] fix: add correct test inputs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250292 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-14 12:21:30 +00:00
Igor Kudrin
4598154b64 [llvm-readobj/ELF] Print GNU Hash section
Add a new command line switch, -gnu-hash-table, to print the content of that section.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250291 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-14 12:11:50 +00:00
Kevin Enderby
1cd4c56bf6 Tweak to r250117 and change to use ErrorOr and drop isSizeValid for
ArchiveMemberHeader, suggestion by Rafael Espíndola.

Also The clang-x86-win2008-selfhost bot still does not like the
malformed-machos 00000031.a test, so removing it for now.  All
the other bots are fine with it however.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250222 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-13 20:48:04 +00:00
Kevin Enderby
76771afe22 The issue with the malformed-machos 00000031.a test is that it needed ‘-arch x86_64’
flag as it was a Mach-O universal file.

The default as to which architecture slice that is dumped without an -arch flag
depends on the host architecture and the contents of the universal file.  The
malformed archive 00000031.a file has both an x86_64 and i386 slice.  So for
for x86_64 hosts only that slice is dumped, for non-x86_64 hosts, which is many
of the bots both slices are dumped.

The test is intended to only check that the malformation of the x86_64 which
has a non-decimal characters in the size field of the archive header so it no
longer crashes.

The problem turned out that the i388 slice of the malformed archive had a
different malformation which was causing the non-x86_64 bots to get this error:

llvm-objdump -macho -disassemble -arch i386 00000031.a 
Archive : .00000031.a
00000031.a(c_start.o):
LLVM ERROR: Symbol name entry points before beginning or past end of file.

and causing the test as it was written to fail.  So by adding ‘-arch x86_64’ it
should correct the test and the malformation on the i388 slice will not be
dumped.

Also the removal of the malformed-machos mem-crup-0261.macho was not causing
the issue so that is put back in.

Sorry for the churn on these tests, Kev


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250184 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-13 17:06:34 +00:00
Kevin Enderby
48ca1e5c87 Looks like malformed-machos 00000031.a test is just getting a different error
on some of the bots.  I’ll remove this test for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250141 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-13 01:27:28 +00:00
Kevin Enderby
7286892343 Remove the correct unstable malformed-machos test mem-crup-0261.macho and
restore the malformed-machos 00000031.a test.  Hopefully this will get all the
build bots happy again.  I’ll again keep an eye on them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250130 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-13 00:05:17 +00:00
Kevin Enderby
2a70637970 Temporarily remove the test added in r250117 while I investigate why two
of the build bots get a different error on that malformed file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250120 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 23:03:43 +00:00
Kevin Enderby
062054e5ca Fixed bugs in llvm-obdump while parsing Mach-O files from malformed archives
that caused aborts.  This was because of the characters of the ‘Size’ field in
the archive header did not contain decimal characters.

rdar://22983603


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250117 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 22:04:54 +00:00
Hemant Kulkarni
e8d28f3d7a [llvm-symbolizer] Add -print-address option
Differential Revision: http://reviews.llvm.org/D13518


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250086 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 19:26:44 +00:00
Colin LeMahieu
7e08dd1195 [llvm-symbolizer] Reverting r250067
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250072 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 17:57:02 +00:00
Hemant Kulkarni
6bd07138eb [llvm-symbolizer] Add -print-address option
Differential Revision  http://reviews.llvm.org/D13518


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250067 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 17:31:22 +00:00
Kevin Enderby
ce2a091823 Move llvm-objdump malformed Mach-O tests to X86 test directory.
rdar://22983603


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249927 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-10 01:06:20 +00:00
Kevin Enderby
3d5fd2a768 Fix a bugs in the Mach-O disassembler when disassembling from a
malformed Mach-O file that caused a crash.  This was because of an
assert where the code was incorrectly attempting to parse relocation
entries off of the sections and the filetype was not an MH_OBJECT.

rdar://22983603


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249921 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-10 00:05:01 +00:00
Diego Novillo
50072bfa3e Add inline stack streaming to binary sample profiles.
With this patch we can now read and write inline stacks in sample
profiles to the binary encoded profiles.

In a subsequent patch, I will add a string table to the binary encoding.
Right now function names are emitted as strings every time we find them.
This is too bloated and will produce large files in applications with
lots of inlining.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249861 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 17:54:24 +00:00
Reid Kleckner
9352676b65 Fix pdb.test when python is not on PATH
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249847 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 16:49:56 +00:00
Kevin Enderby
af90719473 Fixed two bugs in llvm-objdump’s printing of Objective-C meta data
from malformed Mach-O files that caused crashes.  The first because the
offset in a dyld bind table entry was out of range.  The second because their
was no image info section and the routine printing it did not have the
need check to see the section did not exist.

rdar://22983603


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249845 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 16:48:44 +00:00
Reid Kleckner
283573e081 Fix coff-dwarf test for non-Windows platforms that cannot demangle MS C++ names
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249795 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 01:11:40 +00:00
Reid Kleckner
00fda73267 Address review comments, remove error case and return 0 instead as required by tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249785 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 00:15:08 +00:00
Reid Kleckner
27a9e1dbcf [llvm-symbolizer] Make --relative-address work with DWARF contexts
Summary:
Previously the relative address flag only affected PDB debug info.  Now
both DIContext implementations always expect to be passed virtual
addresses. llvm-symbolizer is now responsible for adding ImageBase to
module offsets when --relative-offset is passed.

Reviewers: zturner

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249784 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 00:15:01 +00:00
Kevin Enderby
1ef3c282a2 Fix a bug in llvm-objdump’s printing of Objective-C meta data
from malformed Mach-O files that caused a crash because of a
section header had a size that extended past the end of the file.

rdar://22983603


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249768 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 22:50:55 +00:00
Diego Novillo
3bc8dc3685 Re-apply r249644: Handle inline stacks in gcov-encoded sample profiles.
This fixes memory allocation problems by making the merge operation keep
the profile readers around until the merged profile has been emitted.
This is needed to prevent the inlined function names to disappear from
the function profiles. Since all the names are kept as references, once
the reader disappears, the names are also deallocated.

Additionally, XFAIL on big-endian architectures. The test case uses a
gcov file generated on a little-endian system.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249724 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 19:40:37 +00:00
Kevin Enderby
9ba45e98f4 Fix a bug in llvm-objdump’s printing of Objective-C meta data
from malformed Mach-O files that caused a crash because of loops
in the class meta data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249700 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 16:56:35 +00:00
Teresa Johnson
6b9f46e4e4 Support for llvm-bcanalyzer dumping of record array strings.
Summary:
Adds support for automatically detecting and printing strings
represented by Array abbrev operands, analogous to the string dumping
performed for Blob abbrev operands.

Enhanced the ThinLTO combined index test to check for the appropriate
module and function strings.

Reviewers: dexonsmith, joker.eph, davidxl

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249695 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 15:56:24 +00:00
Diego Novillo
7308c418b8 Revert "Handle inline stacks in gcov-encoded sample profiles."
This reverts commit r249644.

The buildbots are failing the new test I added. Investigating.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249648 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 01:17:26 +00:00
Diego Novillo
6fd08c8868 Handle inline stacks in gcov-encoded sample profiles.
This patch adds support for reading sample profiles with inline stacks.
Inline stacks in a profile are generated when the sampled binary has
samples in inlined functions.

For instance, if main() calls foo() and foo() calls bar(), and bar() is
inlined into foo() and foo() inlined into main(), the profile may look
something like:

main total:364084 head:0
  [ ... ]
  2.3: _Z3fool total:243786
    1: 60149
    1.2: 38568
    1.4: 46511
    1.7: _Z3bari total:98558
      1.1: 52672
      1.2: 45886

At line 2, discriminator 3, main() calls foo(). In turn, foo() calls
bar() at line 1, discriminator 7.

In the textual format, this stacking of inline calls is represented
with indentation.

With this change, LLVM can now read sample profile files generated by
the create_gcov tool from https://github.com/google/autofdo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249644 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 00:39:11 +00:00
Kevin Enderby
23090caf75 Fix two bugs in llvm-objdump’s printing of Objective-C meta data
from malformed Mach-O files that caused crashes.

We recently got about 700 malformed Mach-O files which we have
been using the improve the robustness of tools that deal with reading
data from object files.  These resulted in about 20 small bug fixes to
the darwin based tools.

The goal here is to also improve the robustness of llvm-objdump and
this is the first two fixes.  In talking with Tim Northover the approach
we thought might be best is to:

1) Only include tests for the malformed Mach-O files that cause crashes
(not all 700+ tests).
2) The test should only contain the command line option that caused the
crash and not all the others that don’t matter.
3) There should be only one line for the FileCheck that is past the point
of the crash if possible and if possible indicates the malformation.

Again the goal is to fix crashes and not so much care about how the
printing of malformed data comes out.

Tim also suggested if we really wanted to add test cases for all 700+
malformed Mach-O files putting them in the regression tests might be
an option.  But many of these do not cause crashes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249479 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-06 22:27:08 +00:00
Adrian Prantl
fce2219764 dsymutil: Don't prune forward declarations inside of an imported TAG_module
if there exists not definition for the type.
For this to work, we need to clone the imported modules before building
the decl context chains of the DIEs in the non-skeleton CUs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249362 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 23:11:20 +00:00
Alexandros Lamprineas
966b579475 Added missing test for [ARM] AttributeParser. Check that build attribute
Tag_Advanced_SIMD_arch is set correctly when targeting v8.1-a NEON.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249304 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-05 12:13:29 +00:00
Teresa Johnson
b97baa5fe5 Support for function summary index bitcode sections and files.
Summary:
The bitcode format is described in this document:
  https://drive.google.com/file/d/0B036uwnWM6RWdnBLakxmeDdOeXc/view
For more info on ThinLTO see:
  https://sites.google.com/site/llvmthinlto

The first customer is ThinLTO, however the data structures are designed
and named more generally based on prior feedback. There are a few
comments regarding how certain interfaces are used by ThinLTO, and the
options added here to gold currently have ThinLTO-specific names as the
behavior they provoke is currently ThinLTO-specific.

This patch includes support for generating per-module function indexes,
the combined index file via the gold plugin, and several tests
(more are included with the associated clang patch D11908).

Reviewers: dexonsmith, davidxl, joker.eph

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249270 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-04 14:33:43 +00:00
Davide Italiano
3cd5d8c094 [llvm-size] Attempt to fix a test failure on Windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249247 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-03 20:20:28 +00:00
Davide Italiano
982ae9e22d [llvm-size] Fix time to check if time of use bug.
This was the last tool relying on this pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249244 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-03 19:44:06 +00:00
Adrian Prantl
bc01088257 dsymutil: Also ignore the ByteSize when building the DeclContext cache for
clang modules.

Forward decls of ObjC interfaces don't have a bytesize.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249110 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-02 00:27:08 +00:00
Davide Italiano
52c0444e5e [PATCH] D13360: [llvm-objdump] Teach -d about AArch64 mapping symbols
AArch64 uses $d* and $x* to interleave between text and data.
llvm-objdump didn't know about this so it ended up printing garbage.
This patch is a first step towards a solution of the problem.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249083 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-01 21:57:09 +00:00
Dehao Chen
badd989bba http://reviews.llvm.org/D13145
Support hierarachical sample profile format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248865 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-30 00:42:46 +00:00
Zachary Turner
c9736fba4b [llvm-pdbdump] Add include-only filters.
PDB files have a lot of noise in them, with hundreds (or thousands)
of symbols from system libraries and compiler generated types.  If
you're only looking for a specific type, this can be problematic.

This CL allows you to display *only* types, variables, or compilands
matching a particular pattern.  These filters can even be combined
with exclude filters.  Include-only filters are given priority, so
that first the set of items to display is limited only to those that
match the include filters, and then the set of exclude filters is
applied to those.  If there are no include filters specified, then
it means "display everything".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248822 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-29 19:49:06 +00:00
Adrian Prantl
c10a184867 dsymutil: Fix the condition to distinguish module imports form definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248512 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 16:10:14 +00:00
Adrian Prantl
54a3f636d8 dsymutil: Don't prune forward declarations inside a module definition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248428 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 20:44:37 +00:00
Adrian Prantl
557aebcdfa Fix this dsymutil testcase by not passing in a path to the modulemap file,
so the lookup works as expected after prepending the oso-prepend-path.

This manifested only on Windows, because "/" is not a relative path there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248423 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 19:53:10 +00:00
Adrian Prantl
0769c6afd6 Fix the order of operations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248406 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 18:09:01 +00:00
Adrian Prantl
51ac5bb4c4 Temporarily make testcase more verbose to debug a msvc buildbot failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248403 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 17:59:45 +00:00
Adrian Prantl
43df582edb dsymutil: Resolve forward decls for types defined in clang modules.
This patch extends llvm-dsymutil's ODR type uniquing machinery to also
resolve forward decls for types defined in clang modules.

http://reviews.llvm.org/D13038

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248398 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 17:35:52 +00:00
Adrian Prantl
f4ad7592cd dsymutil: print a warning when there is a module hash mismatch.
This also updates the module binaries in the test directory because
their module hash mismatched.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248396 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 17:11:10 +00:00
Adrian Prantl
d2136b34aa dsymutil: Follow references to clang modules and recursively clone the
debug info.

This does not yet resolve external type references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248331 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-22 22:20:50 +00:00
Davide Italiano
919b448c2e [llvm-readobj] Fix another "time of check to time of use bug".
It seems there's more copy-paste between tools than needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247954 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-17 22:29:58 +00:00
Teresa Johnson
15c79f6c94 Disable the second verification run when performing LTO through
gold in NDEBUG mode.
Follow on patch for r247729 - LTO: Disable extra verify runs in release
builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247824 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-16 18:06:45 +00:00
Mehdi Amini
617bb47635 Improve "default_triple" specification: make it at the directory level for test/tools/llvm-mc
From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247819 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-16 17:03:12 +00:00
Mehdi Amini
793a2b15e7 Make the default triple optional by allowing an empty string
When building LLVM as a (potentially dynamic) library that can be linked against
by multiple compilers, the default triple is not really meaningful.
We allow to explicitely set it to an empty string when configuring LLVM.
In this case, said "target independent" tests in the test suite that are using
the default triple are disabled by matching the newly available feature
"default_triple".

Reviewers: probinson, echristo
Differential Revision: http://reviews.llvm.org/D12660

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247775 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-16 05:34:32 +00:00
Davide Italiano
a4ff83ab8f [llvm-cxxdump] Remove duplicate code check.
We already fail with 'No such file or directory' when we try to open
the file -- if that doesn't exist. Also add a test to verify this behavior.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247744 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-15 23:35:32 +00:00
Justin Bogner
7bfd1e9106 test: Add "REQUIRES: native" so this test passes with no default triple configured
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247719 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-15 21:13:33 +00:00
Davide Italiano
97095fc404 [llvm-mc] Better error handling in ENOENT case + test.
This is a follow up to r247518.
As a general note, I think we could do a much better job testing for
error conditions in tools. I already anticipated in a previous mail,
but while implementing this I noticed that the code coverage we have 
for error checking is pretty low. I can arbitrarily remove checks from 
several tools and the suite still passes.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247582 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-14 17:10:01 +00:00