#
bb96df60 |
| 05-Oct-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Truncate records to maximum record size near 64KB
If we don't truncate, LLVM asserts when the label difference doesn't fit in a 16 bit field. This patch truncates two kinds of data: trail
[codeview] Truncate records to maximum record size near 64KB
If we don't truncate, LLVM asserts when the label difference doesn't fit in a 16 bit field. This patch truncates two kinds of data: trailing null terminated names in symbol records, and inline line tables. The inline line table test that I have is too large (many MB), so I'm not checking it in.
Hopefully fixes PR28264.
llvm-svn: 283403
show more ...
|
#
2b3e6428 |
| 05-Oct-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Translate bitpiece metadata to DEFRANGE_SUBFIELD* records
This allows LLVM to describe locations of aggregate variables that have been split by SROA.
Fixes PR29141
Reviewers: amccarth,
[codeview] Translate bitpiece metadata to DEFRANGE_SUBFIELD* records
This allows LLVM to describe locations of aggregate variables that have been split by SROA.
Fixes PR29141
Reviewers: amccarth, majnemer
Differential Revision: https://reviews.llvm.org/D25253
llvm-svn: 283388
show more ...
|
#
d1185fc0 |
| 29-Sep-2016 |
Adrian McCarthy <amccarth@google.com> |
Clamp version number in S_COMPILE3 to avoid overflowing 16-bit field.
llvm-svn: 282761
|
#
e45b2c7d |
| 29-Sep-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Use character types for all byte-sized integer types
The VS debugger doesn't appear to understand the 0x68 or 0x69 type indices, which were probably intended for use on a platform where a
[codeview] Use character types for all byte-sized integer types
The VS debugger doesn't appear to understand the 0x68 or 0x69 type indices, which were probably intended for use on a platform where a C 'int' is 8 bits. So, use the character types instead. Clang was already using the character types because '[u]int8_t' is usually defined in terms of 'char'.
See the Rust issue for screenshots of what VS does: https://github.com/rust-lang/rust/issues/36646
Fixes PR30552
llvm-svn: 282739
show more ...
|
#
ad8ac54d |
| 20-Sep-2016 |
Adrian McCarthy <amccarth@google.com> |
Fix syntactical nit from r281990.
llvm-svn: 281991
|
#
c64acfd4 |
| 20-Sep-2016 |
Adrian McCarthy <amccarth@google.com> |
Emit S_COMPILE3 CodeView record
CodeView has an S_COMPILE3 record to identify the compiler and source language of the compiland. This record comes first in the debug$S section for the compiland. Th
Emit S_COMPILE3 CodeView record
CodeView has an S_COMPILE3 record to identify the compiler and source language of the compiland. This record comes first in the debug$S section for the compiland. The debuggers rely on this record to know the source language of the code.
There was a little test fallout from introducing a new record into the symbols subsection.
Differential Revision: https://reviews.llvm.org/D24317
llvm-svn: 281990
show more ...
|
#
4ad127f5 |
| 14-Sep-2016 |
Reid Kleckner <rnk@google.com> |
Fix indentation in codeview code
llvm-svn: 281542
|
#
d4135bbc |
| 13-Sep-2016 |
Peter Collingbourne <peter@pcc.me.uk> |
DebugInfo: New metadata representation for global variables.
This patch reverses the edge from DIGlobalVariable to GlobalVariable. This will allow us to more easily preserve debug info metadata when
DebugInfo: New metadata representation for global variables.
This patch reverses the edge from DIGlobalVariable to GlobalVariable. This will allow us to more easily preserve debug info metadata when manipulating global variables.
Fixes PR30362. A program for upgrading test cases is attached to that bug.
Differential Revision: http://reviews.llvm.org/D20147
llvm-svn: 281284
show more ...
|
#
c6d54da8 |
| 09-Sep-2016 |
Zachary Turner <zturner@google.com> |
[pdb] Write PDB TPI Stream from Yaml.
This writes the full sequence of type records described in Yaml to the TPI stream of the PDB file.
Reviewed By: rnk Differential Revision: https://reviews.llvm
[pdb] Write PDB TPI Stream from Yaml.
This writes the full sequence of type records described in Yaml to the TPI stream of the PDB file.
Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D24316
llvm-svn: 281063
show more ...
|
#
1076288e |
| 09-Sep-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Don't assert if the array element type is incomplete
This can happen when the frontend knows the debug info will be emitted somewhere else. Usually this happens for dynamic classes with o
[codeview] Don't assert if the array element type is incomplete
This can happen when the frontend knows the debug info will be emitted somewhere else. Usually this happens for dynamic classes with out of line constructors or key functions, but it can also happen when modules are enabled.
llvm-svn: 281060
show more ...
|
#
a9f4cc95 |
| 07-Sep-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Add new directives to record inlined call site line info
Summary: Previously we were trying to represent this with the "contains" list of the .cv_inline_linetable directive, which was not
[codeview] Add new directives to record inlined call site line info
Summary: Previously we were trying to represent this with the "contains" list of the .cv_inline_linetable directive, which was not enough information. Now we directly represent the chain of inlined call sites, so we know what location to emit when we encounter a .cv_loc directive of an inner inlined call site while emitting the line table of an outer function or inlined call site. Fixes PR29146.
Also fixes PR29147, where we would crash when .cv_loc directives crossed sections. Now we write down the section of the first .cv_loc directive, and emit an error if any other .cv_loc directive for that function is in a different section.
Also fixes issues with discontiguous inlined source locations, like in this example:
volatile int unlikely_cond = 0; extern void __declspec(noreturn) abort(); __forceinline void f() { if (!unlikely_cond) abort(); } int main() { unlikely_cond = 0; f(); unlikely_cond = 0; }
Previously our tables gave bad location information for the 'abort' call, and the debugger wouldn't snow the inlined stack frame for 'f'. It is important to emit good line tables for this code pattern, because it comes up whenever an asan bug occurs in an inlined function. The __asan_report* stubs are generally placed after the normal function epilogue, leading to discontiguous regions of inlined code.
Reviewers: majnemer, amccarth
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D24014
llvm-svn: 280822
show more ...
|
#
9dac4731 |
| 31-Aug-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Emit vtable shape information
The shape of the vtable is passed down as the size of the __vtbl_ptr_type. This special pointer type appears both as the pointee type of the vptr type, and b
[codeview] Emit vtable shape information
The shape of the vtable is passed down as the size of the __vtbl_ptr_type. This special pointer type appears both as the pointee type of the vptr type, and by itself in every dynamic class. For classes with multiple vtables, only the shape of the primary vftable is included, as the shape of all secondary vftables will be the same as in the base class.
Fixes PR28150
llvm-svn: 280254
show more ...
|
#
dbaa61cb |
| 30-Aug-2016 |
Reid Kleckner <rnk@google.com> |
[codeview] Remove redundant TypeTable lookup
As written, the code should assert if this lookup would have ever succeeded. Without looking through composite types, the type graph should be acyclic.
[codeview] Remove redundant TypeTable lookup
As written, the code should assert if this lookup would have ever succeeded. Without looking through composite types, the type graph should be acyclic.
llvm-svn: 280168
show more ...
|
#
a5b1eef8 |
| 26-Aug-2016 |
Reid Kleckner <rnk@google.com> |
[MC] Move .cv_loc management logic out of MCContext
MCContext already has many tasks, and separating CodeView out from it is probably a good idea. The .cv_loc tracking was modelled on the DWARF trac
[MC] Move .cv_loc management logic out of MCContext
MCContext already has many tasks, and separating CodeView out from it is probably a good idea. The .cv_loc tracking was modelled on the DWARF tracking which lived directly in MCContext.
Removes the inclusion of MCCodeView.h from MCContext.h, so now there are only 10 build actions while I hack on CodeView support instead of 265.
llvm-svn: 279847
show more ...
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2 |
|
#
5e3e4bb2 |
| 05-Aug-2016 |
Zachary Turner <zturner@google.com> |
[CodeView] Decouple record deserialization from visitor dispatch.
Until now, our use case for the visitor has been to take a stream of bytes representing a type stream, deserialize the records in se
[CodeView] Decouple record deserialization from visitor dispatch.
Until now, our use case for the visitor has been to take a stream of bytes representing a type stream, deserialize the records in sequence, and do something with them, where "something" is determined by how the user implements a particular set of callbacks on an abstract class.
For actually writing PDBs, however, we want to do the reverse. We have some kind of description of the list of records in their in-memory format, and we want to process each one. Perhaps by serializing them to a byte stream, or perhaps by converting them from one description format (Yaml) to another (in-memory representation).
This was difficult in the current model because deserialization and invoking the callbacks were tightly coupled.
With this patch we change this so that TypeDeserializer is itself an implementation of the particular set of callbacks. This decouples deserialization from the iteration over a list of records and invocation of the callbacks. TypeDeserializer is initialized with another implementation of the callback interface, so that upon deserialization it can pass the deserialized record through to the next set of callbacks. In a sense this is like an implementation of the Decorator design pattern, where the Deserializer is a decorator.
This will be useful for writing Pdbs from yaml, where we have a description of the type records in Yaml format. In this case, the visitor implementation would have each visitation callback method implemented in such a way as to extract the proper set of fields from the Yaml, and it could maintain state that builds up a list of these records. Finally at the end we can pass this information through to another set of callbacks which serializes them into a byte stream.
Reviewed By: majnemer, ruiu, rnk Differential Revision: https://reviews.llvm.org/D23177
llvm-svn: 277871
show more ...
|
#
a3225b04 |
| 29-Jul-2016 |
Zachary Turner <zturner@google.com> |
[msf] Resubmit "Rename Msf -> MSF".
Previously this change was submitted from a Windows machine, so changes made to the case of filenames and directory names did not survive the commit, and as a res
[msf] Resubmit "Rename Msf -> MSF".
Previously this change was submitted from a Windows machine, so changes made to the case of filenames and directory names did not survive the commit, and as a result the CMake source file names and the on-disk file names did not match on case-sensitive file systems.
I'm resubmitting this patch from a Linux system, which hopefully allows the case changes to make it through unfettered.
llvm-svn: 277213
show more ...
|
Revision tags: llvmorg-3.9.0-rc1 |
|
#
334aec4d |
| 29-Jul-2016 |
Zachary Turner <zturner@google.com> |
Revert "[msf] Rename Msf to MSF."
This reverts commit 4d1557ffac41e079bcb1abbcf04f512474dcd6fe.
llvm-svn: 277194
|
#
a010f5ce |
| 29-Jul-2016 |
Zachary Turner <zturner@google.com> |
[msf] Rename Msf to MSF.
In a previous patch, it was suggested to use all caps instead of rolling caps for initialisms, so this patch changes everything to do this.
llvm-svn: 277190
|
#
d66889cb |
| 28-Jul-2016 |
Zachary Turner <zturner@google.com> |
[pdb] Refactor library to more clearly separate reading/writing
Reviewed By: amccarth, ruiu Differential Revision: https://reviews.llvm.org/D22693
llvm-svn: 277019
|
#
67f684e1 |
| 28-Jul-2016 |
David Majnemer <david.majnemer@gmail.com> |
[CodeView] Don't crash on functions without subprograms
A function may have instructions annotated with debug info without having a subprogram.
This fixes PR28747.
llvm-svn: 276956
|
#
46cb48c7 |
| 27-Jul-2016 |
Reid Kleckner <rnk@google.com> |
Remove MCAsmInfo.h include from TargetOptions.h
TargetOptions wants the ExceptionHandling enum. Move that to MCTargetOptions.h to avoid transitively including Dwarf.h everywhere in clang. Now you ca
Remove MCAsmInfo.h include from TargetOptions.h
TargetOptions wants the ExceptionHandling enum. Move that to MCTargetOptions.h to avoid transitively including Dwarf.h everywhere in clang. Now you can add a DWARF tag without a full rebuild of clang semantic analysis.
llvm-svn: 276883
show more ...
|
#
bac69d33 |
| 22-Jul-2016 |
Zachary Turner <zturner@google.com> |
[msf] Create LLVMDebugInfoMsf
This provides a better layering of responsibilities among different aspects of PDB writing code. Some of the MSF related code was contained in CodeView, and some was i
[msf] Create LLVMDebugInfoMsf
This provides a better layering of responsibilities among different aspects of PDB writing code. Some of the MSF related code was contained in CodeView, and some was in PDB prior to this. Further, we were often saying PDB when we meant MSF, and the two are actually independent of each other since in theory you can have other types of data besides PDB data in an MSF. So, this patch separates the MSF specific code into its own library, with no dependencies on anything else, and DebugInfoCodeView and DebugInfoPDB take dependencies on DebugInfoMsf.
llvm-svn: 276458
show more ...
|
#
acee5685 |
| 12-Jul-2016 |
Amjad Aboud <amjad.aboud@intel.com> |
[codeview] Improved array type support.
Added support for: 1. Multi dimension array. 2. Array of structure type, which previously was declared incompletely. 3. Dynamic size array. 4. Array where ele
[codeview] Improved array type support.
Added support for: 1. Multi dimension array. 2. Array of structure type, which previously was declared incompletely. 3. Dynamic size array. 4. Array where element type is a typedef, volatile or constant (this should resolve PR28311).
Differential Revision: http://reviews.llvm.org/D21526
llvm-svn: 275167
show more ...
|
#
a54fe1ac |
| 07-Jul-2016 |
David Majnemer <david.majnemer@gmail.com> |
[CodeView] Implement support for thread-local variables
llvm-svn: 274734
|
#
7abd269a |
| 06-Jul-2016 |
David Majnemer <david.majnemer@gmail.com> |
[CodeView] Emit an appropriate symbol kind for globals
We emitted debug info for globals/functions as if they all had external linkage. Instead, emit local symbol records when appropriate.
llvm-sv
[CodeView] Emit an appropriate symbol kind for globals
We emitted debug info for globals/functions as if they all had external linkage. Instead, emit local symbol records when appropriate.
llvm-svn: 274676
show more ...
|