xref: /llvm-project/llvm/test/tools/llvm-debuginfo-analyzer/DWARF/01-dwarf-print-basic-details.test (revision d858447584a0dc41ecdee7c92bb5e8b7f52e3ff0)
1*d8584475SCarlos Alberto Enciso; REQUIRES: x86-registered-target
2*d8584475SCarlos Alberto Enciso
34f06d46fSCarlos Alberto Enciso; Test case 1 - General options.
44f06d46fSCarlos Alberto Enciso
54f06d46fSCarlos Alberto Enciso; test.cpp
64f06d46fSCarlos Alberto Enciso;  1  using INTPTR = const int *;
74f06d46fSCarlos Alberto Enciso;  2  int foo(INTPTR ParamPtr, unsigned ParamUnsigned, bool ParamBool) {
84f06d46fSCarlos Alberto Enciso;  3    if (ParamBool) {
94f06d46fSCarlos Alberto Enciso;  4      typedef int INTEGER;
104f06d46fSCarlos Alberto Enciso;  5      const INTEGER CONSTANT = 7;
114f06d46fSCarlos Alberto Enciso;  6      return CONSTANT;
124f06d46fSCarlos Alberto Enciso;  7    }
134f06d46fSCarlos Alberto Enciso;  8    return ParamUnsigned;
144f06d46fSCarlos Alberto Enciso;  9  }
154f06d46fSCarlos Alberto Enciso
164f06d46fSCarlos Alberto Enciso; Print basic details.
174f06d46fSCarlos Alberto Enciso; The following command prints basic details for all the logical elements
184f06d46fSCarlos Alberto Enciso; sorted by the debug information internal offset; it includes its lexical
194f06d46fSCarlos Alberto Enciso; level and debug info format.
204f06d46fSCarlos Alberto Enciso
214f06d46fSCarlos Alberto Enciso; RUN: llvm-debuginfo-analyzer --attribute=level,format \
224f06d46fSCarlos Alberto Enciso; RUN:                         --output-sort=offset \
234f06d46fSCarlos Alberto Enciso; RUN:                         --print=scopes,symbols,types,lines,instructions \
244f06d46fSCarlos Alberto Enciso; RUN:                         %p/Inputs/test-dwarf-clang.o 2>&1 | \
254f06d46fSCarlos Alberto Enciso; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s
264f06d46fSCarlos Alberto Enciso
274f06d46fSCarlos Alberto Enciso; RUN: llvm-debuginfo-analyzer --attribute=level,format \
284f06d46fSCarlos Alberto Enciso; RUN:                         --output-sort=offset \
294f06d46fSCarlos Alberto Enciso; RUN:                         --print=elements \
304f06d46fSCarlos Alberto Enciso; RUN:                         %p/Inputs/test-dwarf-clang.o 2>&1 | \
314f06d46fSCarlos Alberto Enciso; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s
324f06d46fSCarlos Alberto Enciso
334f06d46fSCarlos Alberto Enciso; ONE:      Logical View:
344f06d46fSCarlos Alberto Enciso; ONE-NEXT: [000]           {File} 'test-dwarf-clang.o' -> elf64-x86-64
354f06d46fSCarlos Alberto Enciso; ONE-EMPTY:
364f06d46fSCarlos Alberto Enciso; ONE-NEXT: [001]             {CompileUnit} 'test.cpp'
374f06d46fSCarlos Alberto Enciso; ONE-NEXT: [002]     2         {Function} extern not_inlined 'foo' -> 'int'
384f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]     2           {Parameter} 'ParamPtr' -> 'INTPTR'
394f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]     2           {Parameter} 'ParamUnsigned' -> 'unsigned int'
404f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]     2           {Parameter} 'ParamBool' -> 'bool'
414f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Block}
424f06d46fSCarlos Alberto Enciso; ONE-NEXT: [004]     5             {Variable} 'CONSTANT' -> 'const INTEGER'
434f06d46fSCarlos Alberto Enciso; ONE-NEXT: [004]     5             {Line}
444f06d46fSCarlos Alberto Enciso; ONE-NEXT: [004]                   {Code} 'movl	$0x7, -0x1c(%rbp)'
454f06d46fSCarlos Alberto Enciso; ONE-NEXT: [004]     6             {Line}
464f06d46fSCarlos Alberto Enciso; ONE-NEXT: [004]                   {Code} 'movl	$0x7, -0x4(%rbp)'
474f06d46fSCarlos Alberto Enciso; ONE-NEXT: [004]                   {Code} 'jmp	0x6'
484f06d46fSCarlos Alberto Enciso; ONE-NEXT: [004]     8             {Line}
494f06d46fSCarlos Alberto Enciso; ONE-NEXT: [004]                   {Code} 'movl	-0x14(%rbp), %eax'
504f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]     4           {TypeAlias} 'INTEGER' -> 'int'
514f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]     2           {Line}
524f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'pushq	%rbp'
534f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'movq	%rsp, %rbp'
544f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'movb	%dl, %al'
554f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'movq	%rdi, -0x10(%rbp)'
564f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'movl	%esi, -0x14(%rbp)'
574f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'andb	$0x1, %al'
584f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'movb	%al, -0x15(%rbp)'
594f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]     3           {Line}
604f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'testb	$0x1, -0x15(%rbp)'
614f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'je	0x13'
624f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]     8           {Line}
634f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'movl	%eax, -0x4(%rbp)'
644f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]     9           {Line}
654f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'movl	-0x4(%rbp), %eax'
664f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'popq	%rbp'
674f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]                 {Code} 'retq'
684f06d46fSCarlos Alberto Enciso; ONE-NEXT: [003]     9           {Line}
694f06d46fSCarlos Alberto Enciso; ONE-NEXT: [002]     1         {TypeAlias} 'INTPTR' -> '* const int'
70