1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 05:52:53 +02:00
Commit Graph

822 Commits

Author SHA1 Message Date
Manman Ren
01c483fca6 Debug Info: Use identifier to reference DIType in base type field of
ptr_to_member.

We introduce a new class DITypeRef that represents a reference to a DIType.
It wraps around a Value*, which can be either an identifier in MDString
or an actual MDNode. The class has a helper function "resolve" that
finds the actual MDNode for a given DITypeRef.

We specialize getFieldAs to return a field that is a reference to a
DIType. To correctly access the base type field of ptr_to_member,
getClassType now calls getFieldAs<DITypeRef> to return a DITypeRef.

Also add a typedef for DITypeIdentifierMap and a helper
generateDITypeIdentifierMap in DebugInfo.h. In DwarfDebug.cpp, we keep
a DITypeIdentifierMap and call generateDITypeIdentifierMap to actually
populate the map.

Verifier is updated accordingly.

llvm-svn: 190081
2013-09-05 18:48:31 +00:00
Eric Christopher
059d9c3395 Move accelerator table defines and constants to Dwarf.h since
we're proposing it for DWARF5.

No functional change intended.

llvm-svn: 190074
2013-09-05 18:20:16 +00:00
Eric Christopher
1c6f3e85e7 Remove hack ensuring that darwin didn't produce dwarf > 3 for modules
without a limiting factor.

Update all testcases accordingly.

llvm-svn: 190002
2013-09-04 22:21:24 +00:00
Eric Christopher
4293bc6083 Revert "Revert r189902 as the workaround shouldn't be necessary anymore."
Needs testcase updates.

llvm-svn: 190000
2013-09-04 21:36:52 +00:00
Eric Christopher
96023d4a57 Revert r189902 as the workaround shouldn't be necessary anymore.
llvm-svn: 189999
2013-09-04 21:26:56 +00:00
Eric Christopher
56715c5dcb Unify and clean up.
llvm-svn: 189977
2013-09-04 19:53:21 +00:00
Michael Gottesman
51a877bd8c Revert "Revert "Remove the darwin gdb option, that version of gdb is now dead and the rest of the compatibility should be done on a dwarf-N level.""
This reverts commit r189913.

Talked with Eric on IRC. I am going to XFAIL the failing test since it
is using what Eric described as "the member hack" which was needed on
that old GDB.

Sorry for the noise!

llvm-svn: 189914
2013-09-04 04:39:38 +00:00
Michael Gottesman
eab573e114 Revert "Remove the darwin gdb option, that version of gdb is now dead and the rest of the compatibility should be done on a dwarf-N level."
This reverts commit r189903.

This commit broke the phase 1 buildbot for a while.

http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/6684

llvm-svn: 189913
2013-09-04 04:31:56 +00:00
Eric Christopher
791c6f4134 Remove the darwin gdb option, that version of gdb is now dead and
the rest of the compatibility should be done on a dwarf-N level.

llvm-svn: 189903
2013-09-04 02:02:10 +00:00
Eric Christopher
9c353ced34 Make the default dwarf version 3 for darwin when we can't find one
in the module. Add a FIXME with a comment about darwin's ld.

llvm-svn: 189902
2013-09-04 01:38:30 +00:00
Eric Christopher
e1ab8afa4d Don't bother emitting the pubtypes section on darwin since there aren't
any maintained consumers of it on that platform.

llvm-svn: 189631
2013-08-30 00:40:17 +00:00
Eric Christopher
029243a431 Reformat slightly.
llvm-svn: 189630
2013-08-30 00:39:57 +00:00
Eric Christopher
b903425dec Remove support for the .debug_inlined section. No known software
in use supports it.

llvm-svn: 189439
2013-08-28 04:04:28 +00:00
Eric Christopher
ed78fc97e5 Make the lifetime of the DICompileUnit we're constructing from the
MDNode more clear as just for a single argument.

llvm-svn: 189294
2013-08-26 23:57:03 +00:00
Eric Christopher
2eace037f7 Have the skeleton compile unit construction method take the CU it
is constructing from as an input and keep the same unique identifier.
We can use this to connect items which must stay in the .o file
(e.g. pubnames and pubtypes) to the skeleton cu rather than having
duplicate unique numbers for the sections and needing to do lookups
based on MDNode.

llvm-svn: 189293
2013-08-26 23:50:43 +00:00
Eric Christopher
1d8d747ec3 Remove duplicate set of CompilationDir.
llvm-svn: 189292
2013-08-26 23:50:40 +00:00
Eric Christopher
9dac1e62ee Remove the language parameter and variable from the compile unit. We
can get it via the MDNode that's passed in. Save that instead.

llvm-svn: 189291
2013-08-26 23:50:38 +00:00
Eric Christopher
04da79d6a3 Treat the pubtypes section similarly to the pubnames section and emit
it by default under linux or when we're trying to keep compatibility
with old gdb versions.

Fix testcase for option name change.

llvm-svn: 189289
2013-08-26 23:24:35 +00:00
Eric Christopher
350edd4487 Only emit the section sym if we're emitting the section.
llvm-svn: 189288
2013-08-26 23:24:31 +00:00
Eric Christopher
2ad50e72ed Fix thinko.
llvm-svn: 189279
2013-08-26 20:58:35 +00:00
Benjamin Kramer
02d328a0f9 Add a function object to compare the first or second component of a std::pair.
Replace instances of this scattered around the code base.

llvm-svn: 189169
2013-08-24 12:54:27 +00:00
Benjamin Kramer
266e09a65c Simplify code. No functionality change.
llvm-svn: 189168
2013-08-24 12:15:54 +00:00
Benjamin Kramer
5a259a321c DwarfDebug: Delete orphaned children.
Leak found by valgrind.

llvm-svn: 189167
2013-08-24 11:55:49 +00:00
David Majnemer
198e3adaf6 DebugInfo: Do not use the DWARF Version for the .debug_pubnames or .debug_pubtypes version field
Summary:
LLVM would generate DWARF with version 3 in the .debug_pubname and
.debug_pubtypes version fields.  This would lead SGI dwarfdump to fail
parsing the DWARF with (in the instance of .debug_pubnames) would exit
with:
dwarfdump ERROR:  dwarf_get_globals: DW_DLE_PUBNAMES_VERSION_ERROR (123)

This fixes PR16950.

Reviewers: echristo, dblaikie

Reviewed By: echristo

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1454

llvm-svn: 188869
2013-08-21 06:13:34 +00:00
Eric Christopher
2cc884bd3b Use less verbose code and update comments.
llvm-svn: 188711
2013-08-19 21:41:38 +00:00
Eric Christopher
fe60d7311c Turn on pubnames by default on linux.
Until gdb supports the new accelerator tables we should add the
pubnames section so that gdb_index can be generated from gold
at link time. On darwin we already emit the accelerator tables
and so don't need to worry about pubnames.

llvm-svn: 188708
2013-08-19 21:07:38 +00:00
Carlo Kok
1b6e9cea0f Output DW_AT_stmt_list dwarf debug info as DW_FORM_sec_offset instead of DW_FORM_data4 as it is a section offset (fixes the coff/dwarf debug info statement locations)
llvm-svn: 188297
2013-08-13 17:46:57 +00:00
Eric Christopher
aae98d918e Add the start of DIE hashing for DWARF4 type units and split dwarf
CUs.

Currently only hashes the name of CUs and the names of any children,
but it's an obvious first step to show the framework. The testcase
should continue to be correct, however, as it's an empty TU.

llvm-svn: 188243
2013-08-13 01:21:55 +00:00
Eric Christopher
6df5d15a24 Move the addition of the dwo_id as late as possible after everything
has been finalized except for sizes and offsets. Update test accordingly.

llvm-svn: 188199
2013-08-12 20:27:48 +00:00
Eric Christopher
81863ce2b7 Move hash computation code into a separate class and file.
No functional change intended.

llvm-svn: 188028
2013-08-08 23:45:55 +00:00
Eric Christopher
160c346748 Reflow for loop.
llvm-svn: 187954
2013-08-08 01:41:05 +00:00
Eric Christopher
c16b1aaf3f Be more rigorous about the sizes of forms and attributes.
llvm-svn: 187953
2013-08-08 01:41:00 +00:00
Eric Christopher
e4c1a6601b Remove some parens. No functional change.
llvm-svn: 187872
2013-08-07 08:35:10 +00:00
Eric Christopher
8aac1919bd Add a way to grab a particular attribute out of a DIE.
Use it when we're looking for a string in particular. Update comments
as well.

llvm-svn: 187844
2013-08-07 01:18:33 +00:00
Eric Christopher
c0368e09cd Move somewhat messy conditional out of line.
No functional change.

llvm-svn: 187843
2013-08-07 01:18:24 +00:00
Eric Christopher
77c487801a Recommit previous cleanup with a fix for c++98 ambiguity.
llvm-svn: 187752
2013-08-05 22:32:28 +00:00
Eric Christopher
1c0455141c Revert "Use existing builtin hashing functions to make this routine more"
This reverts commit r187745.

llvm-svn: 187747
2013-08-05 22:07:30 +00:00
Eric Christopher
8884e7fbaa Use existing builtin hashing functions to make this routine more
simple.

llvm-svn: 187745
2013-08-05 22:00:50 +00:00
Eric Christopher
57a9194e5f Change parent hashing algorithm to be non-recursive and elaborate
greatly on many comments in the code.

llvm-svn: 187742
2013-08-05 21:40:57 +00:00
Eric Christopher
7aa2c8e944 Fix a truly egregious thinko in anonymous namespace check,
update testcase to make sure we generate debug info for walrus
by adding a non-trivial constructor and verify that we don't
emit an ODR signature for the type.

llvm-svn: 187393
2013-07-29 23:53:08 +00:00
Eric Christopher
f6e5a0524b Make sure we don't emit an ODR hash for types with no name and make
sure the comments for each testcase are a bit easier to distinguish.

llvm-svn: 187392
2013-07-29 23:53:05 +00:00
Eric Christopher
979a1dca9f Elaborate a bit on the type unit and ODR conditional code.
llvm-svn: 187385
2013-07-29 22:24:32 +00:00
Benjamin Kramer
2b93c9d1a8 DwarfDebug: MD5 is always little endian, bswap on big endian platforms.
This makes LLVM emit the same signature regardless of host and target endianess.

llvm-svn: 187304
2013-07-27 14:14:43 +00:00
Chandler Carruth
45c5f8b159 Fix a memory leak in the debug emission by simply not allocating memory.
There doesn't appear to be any reason to put this variable on the heap.
I'm suspicious of the LexicalScope above that we stuff in a map and then
delete afterward, but I'm just trying to get the valgrind bot clean.

llvm-svn: 187301
2013-07-27 11:09:58 +00:00
Eric Christopher
6e8fb58fea Remove addLetterToHash, no functional change.
llvm-svn: 187245
2013-07-26 21:07:18 +00:00
Eric Christopher
04dc3562f6 Add preliminary support for hashing DIEs and breaking them into
type units.

Initially this support is used in the computation of an ODR checker
for C++. For now we're attaching it to the DIE, but in the future
it will be attached to the type unit.

This also starts breaking out types into the separation for type
units, but without actually splitting the DIEs.

In preparation for hashing the DIEs this adds a DIEString type
that contains a StringRef with the string contained at the label.

llvm-svn: 187213
2013-07-26 17:02:41 +00:00
Eric Christopher
09c8879456 Reformat options.
llvm-svn: 186994
2013-07-23 22:16:41 +00:00
Manman Ren
929ebf85f2 Add getModuleFlag(StringRef Key) to query a module flag given Key.
No functionality change.

llvm-svn: 186470
2013-07-16 23:21:16 +00:00
Craig Topper
b8260534f6 Add 'const' qualifiers to static const char* variables.
llvm-svn: 186371
2013-07-16 01:17:10 +00:00
Adrian Prantl
a295f68201 Reapply an improved version of r180816/180817.
Change the informal convention of DBG_VALUE machine instructions so that
we can express a register-indirect address with an offset of 0.
The old convention was that a DBG_VALUE is a register-indirect value if
the offset (operand 1) is nonzero. The new convention is that a DBG_VALUE
is register-indirect if the first operand is a register and the second
operand is an immediate. For plain register values the combination reg,
reg is used. MachineInstrBuilder::BuildMI knows how to build the new
DBG_VALUES.

rdar://problem/13658587

llvm-svn: 185966
2013-07-09 20:28:37 +00:00