[Lldb-commits] [lldb] 6037936 - [LLDB][NativePDB] Replace blocks.cpp with blocks.s so the test won't be affected by codegen changes.

Zequan Wu via lldb-commits lldb-commits at lists.llvm.org
Fri Sep 9 15:47:42 PDT 2022


Author: Zequan Wu
Date: 2022-09-09T15:47:27-07:00
New Revision: 603793698928c1f32772248840a45ddcf4914bd2

URL: https://github.com/llvm/llvm-project/commit/603793698928c1f32772248840a45ddcf4914bd2
DIFF: https://github.com/llvm/llvm-project/commit/603793698928c1f32772248840a45ddcf4914bd2.diff

LOG: [LLDB][NativePDB] Replace blocks.cpp with blocks.s so the test won't be affected by codegen changes.

Added: 
    lldb/test/Shell/SymbolFile/NativePDB/blocks.s

Modified: 
    lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp

Removed: 
    lldb/test/Shell/SymbolFile/NativePDB/blocks.cpp


################################################################################
diff  --git a/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp b/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp
index 75bff62404cc3..2781ae0c87abf 100644
--- a/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp
+++ b/lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp
@@ -369,9 +369,8 @@ Block &SymbolFileNativePDB::CreateBlock(PdbCompilandSymId block_id) {
         m_index->MakeVirtualAddress(block.Segment, block.CodeOffset);
     lldb::addr_t func_base =
         func->GetAddressRange().GetBaseAddress().GetFileAddress();
-    Block::Range range = Block::Range(block_base - func_base, block.CodeSize);
     if (block_base >= func_base)
-      child_block->AddRange(range);
+      child_block->AddRange(Block::Range(block_base - func_base, block.CodeSize));
     else {
       GetObjectFile()->GetModule()->ReportError(
           "S_BLOCK32 at modi: %d offset: %d: adding range [0x%" PRIx64

diff  --git a/lldb/test/Shell/SymbolFile/NativePDB/blocks.cpp b/lldb/test/Shell/SymbolFile/NativePDB/blocks.cpp
deleted file mode 100644
index 1d7431847921d..0000000000000
--- a/lldb/test/Shell/SymbolFile/NativePDB/blocks.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// clang-format off
-// REQUIRES: lld, x86
-
-// Test block range is set.
-// RUN: %clang_cl --target=x86_64-windows-msvc -Od -Z7 -GS- -c /Fo%t.obj -- %s
-// RUN: lld-link -debug:full -nodefaultlib -entry:main -base:0x140000000 %t.obj -out:%t.exe -pdb:%t.pdb
-// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb %t.exe -o "image lookup -a 0x140001014 -v" | FileCheck %s
-
-int main() {
-  int count = 0;
-  for (int i = 0; i < 3; ++i) {
-    ++count;
-  }
-  return count;
-}
-
-// CHECK:      Function: id = {{.*}}, name = "main", range = [0x0000000140001000-0x000000014000104b)
-// CHECK-NEXT: FuncType: id = {{.*}}, byte-size = 0, compiler_type = "int (void)"
-// CHECK-NEXT:   Blocks: id = {{.*}}, range = [0x140001000-0x14000104b)
-// CHECK-NEXT:           id = {{.*}}, range = [0x140001014-0x140001042)

diff  --git a/lldb/test/Shell/SymbolFile/NativePDB/blocks.s b/lldb/test/Shell/SymbolFile/NativePDB/blocks.s
new file mode 100644
index 0000000000000..7a124702e4757
--- /dev/null
+++ b/lldb/test/Shell/SymbolFile/NativePDB/blocks.s
@@ -0,0 +1,213 @@
+// clang-format off
+// REQUIRES: lld, x86
+
+// Test block range is set.
+// RUN: llvm-mc -triple=x86_64-windows-msvc --filetype=obj %s > %t.obj
+// RUN: lld-link /debug:full /nodefaultlib /entry:main %t.obj /out:%t.exe /base:0x140000000
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb %t.exe -o "image lookup -a 0x140001014 -v" -o "exit" | FileCheck %s
+
+// CHECK:      Function: id = {{.*}}, name = "main", range = [0x0000000140001000-0x0000000140001044)
+// CHECK-NEXT: FuncType: id = {{.*}}, byte-size = 0, compiler_type = "int (void)"
+// CHECK-NEXT:   Blocks: id = {{.*}}, range = [0x140001000-0x140001044)
+// CHECK-NEXT:           id = {{.*}}, range = [0x140001014-0x14000103b)
+
+
+	.text
+	.def	@feat.00;
+	.scl	3;
+	.type	0;
+	.endef
+	.globl	@feat.00
+.set @feat.00, 0
+	.intel_syntax noprefix
+	.file	"blocks.cpp"
+	.def	main;
+	.scl	2;
+	.type	32;
+	.endef
+	.globl	main                            # -- Begin function main
+	.p2align	4, 0x90
+main:                                   # @main
+.Lfunc_begin0:
+	.cv_func_id 0
+	.cv_file	1 "/tmp/blocks.cpp" "4CC0785E17ACF09C657F740775661395" 1
+	.cv_loc	0 1 1 0                         # blocks.cpp:1:0
+.seh_proc main
+# %bb.0:                                # %entry
+	sub	rsp, 16
+	.seh_stackalloc 16
+	.seh_endprologue
+	mov	dword ptr [rsp + 12], 0
+.Ltmp0:
+	.cv_loc	0 1 2 0                         # blocks.cpp:2:0
+	mov	dword ptr [rsp + 8], 0
+.Ltmp1:
+	.cv_loc	0 1 3 0                         # blocks.cpp:3:0
+	mov	dword ptr [rsp + 4], 0
+.LBB0_1:                                # %for.cond
+                                        # =>This Inner Loop Header: Depth=1
+	cmp	dword ptr [rsp + 4], 3
+	jge	.LBB0_4
+# %bb.2:                                # %for.body
+                                        #   in Loop: Header=BB0_1 Depth=1
+.Ltmp2:
+	.cv_loc	0 1 4 0                         # blocks.cpp:4:0
+	mov	eax, dword ptr [rsp + 8]
+	add	eax, 1
+	mov	dword ptr [rsp + 8], eax
+.Ltmp3:
+# %bb.3:                                # %for.inc
+                                        #   in Loop: Header=BB0_1 Depth=1
+	.cv_loc	0 1 3 0                         # blocks.cpp:3:0
+	mov	eax, dword ptr [rsp + 4]
+	add	eax, 1
+	mov	dword ptr [rsp + 4], eax
+	jmp	.LBB0_1
+.Ltmp4:
+.LBB0_4:                                # %for.end
+	.cv_loc	0 1 6 0                         # blocks.cpp:6:0
+	mov	eax, dword ptr [rsp + 8]
+	add	rsp, 16
+	ret
+.Ltmp5:
+.Lfunc_end0:
+	.seh_endproc
+                                        # -- End function
+	.section	.drectve,"yn"
+	.ascii	" /DEFAULTLIB:libcmt.lib"
+	.ascii	" /DEFAULTLIB:oldnames.lib"
+	.section	.debug$S,"dr"
+	.p2align	2, 0x0
+	.long	4                               # Debug section magic
+	.long	241
+	.long	.Ltmp7-.Ltmp6                   # Subsection size
+.Ltmp6:
+	.short	.Ltmp9-.Ltmp8                   # Record length
+.Ltmp8:
+	.short	4353                            # Record kind: S_OBJNAME
+	.long	0                               # Signature
+	.asciz	"/tmp/blocks.obj"               # Object name
+	.p2align	2, 0x0
+.Ltmp9:
+	.short	.Ltmp11-.Ltmp10                 # Record length
+.Ltmp10:
+	.short	4412                            # Record kind: S_COMPILE3
+	.long	1                               # Flags and language
+	.short	208                             # CPUType
+	.short	16                              # Frontend version
+	.short	0
+	.short	0
+	.short	0
+	.short	16000                           # Backend version
+	.short	0
+	.short	0
+	.short	0
+	.asciz	"clang version 16.0.0"          # Null-terminated compiler version string
+	.p2align	2, 0x0
+.Ltmp11:
+.Ltmp7:
+	.p2align	2, 0x0
+	.long	241                             # Symbol subsection for main
+	.long	.Ltmp13-.Ltmp12                 # Subsection size
+.Ltmp12:
+	.short	.Ltmp15-.Ltmp14                 # Record length
+.Ltmp14:
+	.short	4423                            # Record kind: S_GPROC32_ID
+	.long	0                               # PtrParent
+	.long	0                               # PtrEnd
+	.long	0                               # PtrNext
+	.long	.Lfunc_end0-main                # Code size
+	.long	0                               # Offset after prologue
+	.long	0                               # Offset before epilogue
+	.long	4098                            # Function type index
+	.secrel32	main                    # Function section relative address
+	.secidx	main                            # Function section index
+	.byte	0                               # Flags
+	.asciz	"main"                          # Function name
+	.p2align	2, 0x0
+.Ltmp15:
+	.short	.Ltmp17-.Ltmp16                 # Record length
+.Ltmp16:
+	.short	4114                            # Record kind: S_FRAMEPROC
+	.long	16                              # FrameSize
+	.long	0                               # Padding
+	.long	0                               # Offset of padding
+	.long	0                               # Bytes of callee saved registers
+	.long	0                               # Exception handler offset
+	.short	0                               # Exception handler section
+	.long	81920                           # Flags (defines frame register)
+	.p2align	2, 0x0
+.Ltmp17:
+	.short	.Ltmp19-.Ltmp18                 # Record length
+.Ltmp18:
+	.short	4414                            # Record kind: S_LOCAL
+	.long	116                             # TypeIndex
+	.short	0                               # Flags
+	.asciz	"count"
+	.p2align	2, 0x0
+.Ltmp19:
+	.cv_def_range	 .Ltmp0 .Ltmp5, frame_ptr_rel, 8
+	.short	.Ltmp21-.Ltmp20                 # Record length
+.Ltmp20:
+	.short	4355                            # Record kind: S_BLOCK32
+	.long	0                               # PtrParent
+	.long	0                               # PtrEnd
+	.long	.Ltmp4-.Ltmp1                   # Code size
+	.secrel32	.Ltmp1                  # Function section relative address
+	.secidx	.Lfunc_begin0                   # Function section index
+	.byte	0                               # Lexical block name
+	.p2align	2, 0x0
+.Ltmp21:
+	.short	.Ltmp23-.Ltmp22                 # Record length
+.Ltmp22:
+	.short	4414                            # Record kind: S_LOCAL
+	.long	116                             # TypeIndex
+	.short	0                               # Flags
+	.asciz	"i"
+	.p2align	2, 0x0
+.Ltmp23:
+	.cv_def_range	 .Ltmp1 .Ltmp4, frame_ptr_rel, 4
+	.short	2                               # Record length
+	.short	6                               # Record kind: S_END
+	.short	2                               # Record length
+	.short	4431                            # Record kind: S_PROC_ID_END
+.Ltmp13:
+	.p2align	2, 0x0
+	.cv_linetable	0, main, .Lfunc_end0
+	.cv_filechecksums                       # File index to string table offset subsection
+	.cv_stringtable                         # String table
+	.long	241
+	.long	.Ltmp25-.Ltmp24                 # Subsection size
+.Ltmp24:
+	.short	.Ltmp27-.Ltmp26                 # Record length
+.Ltmp26:
+	.short	4428                            # Record kind: S_BUILDINFO
+	.long	4104                            # LF_BUILDINFO index
+	.p2align	2, 0x0
+.Ltmp27:
+.Ltmp25:
+	.p2align	2, 0x0
+	.section	.debug$T,"dr"
+	.p2align	2, 0x0
+	.long	4                               # Debug section magic
+	# ArgList (0x1000)
+	.short	0x6                             # Record length
+	.short	0x1201                          # Record kind: LF_ARGLIST
+	.long	0x0                             # NumArgs
+	# Procedure (0x1001)
+	.short	0xe                             # Record length
+	.short	0x1008                          # Record kind: LF_PROCEDURE
+	.long	0x74                            # ReturnType: int
+	.byte	0x0                             # CallingConvention: NearC
+	.byte	0x0                             # FunctionOptions
+	.short	0x0                             # NumParameters
+	.long	0x1000                          # ArgListType: ()
+	# FuncId (0x1002)
+	.short	0x12                            # Record length
+	.short	0x1601                          # Record kind: LF_FUNC_ID
+	.long	0x0                             # ParentScope
+	.long	0x1001                          # FunctionType: int ()
+	.asciz	"main"                          # Name
+	.byte	243
+	.byte	242
+	.byte	241


        


More information about the lldb-commits mailing list