1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00
llvm-mirror/test/DebugInfo/PDB/Native/pdb-native-pointers.test
Zachary Turner 2899786ed4 [PDB] Better support for enumerating pointer types.
There were several issues with the previous implementation.

1) There were no tests.
2) We didn't support creating PDBSymbolTypePointer records for
   builtin types since those aren't described by LF_POINTER
   records.
3) We didn't support a wide enough variety of builtin types even
   ignoring pointers.

This patch fixes all of these issues.  In order to add tests,
it's helpful to be able to ignore the symbol index id hierarchy
because it makes the golden output from the DIA version not match
our output, so I've extended the dumper to disable dumping of id
fields.

llvm-svn: 342493
2018-09-18 16:35:05 +00:00

358 lines
11 KiB
Plaintext

; Test that the native PDB reader can enumerate pointer types. The output
; being checked against is golden output generated by llvm-pdbutil without
; the -native flag. Then we check that we generate the same output.
; RUN: llvm-pdbutil diadump -no-ids -native -pointers \
; RUN: %p/../Inputs/every-pointer.pdb | FileCheck %s
; CHECK: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 1
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 1
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 1
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 1
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 1
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 1
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 1
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 1
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 1
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 1
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 1
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 1
; FIXME: isSingleInheritance: 1 # DIA has this property for member pointers
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 4
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 1
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; FIXME: isSingleInheritance: 1 # DIA has this property for member pointers
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 1
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; FIXME: isSingleInheritance: 1 # DIA has this property for member pointers
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 1
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 1
; CHECK-NEXT: reference: 0
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: symTag: PointerType
; CHECK-NEXT: length: 8
; CHECK-NEXT: constType: 0
; CHECK-NEXT: isPointerToDataMember: 0
; CHECK-NEXT: isPointerToMemberFunction: 0
; CHECK-NEXT: RValueReference: 0
; CHECK-NEXT: reference: 1
; CHECK-NEXT: restrictedType: 0
; CHECK-NEXT: unalignedType: 0
; CHECK-NEXT: volatileType: 0
; CHECK-NEXT: }