17 Commits

Author SHA1 Message Date
Fangrui Song
89fab98e88 [DebugInfo] llvm::Optional => std::optional
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
2022-12-05 00:09:22 +00:00
Kazu Hirata
110115993c [DebugInfo] Use std::nullopt instead of None (NFC)
This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
2022-12-02 21:11:39 -08:00
Michał Górny
7292d051a9 [llvm-debuginfo-analyzer] Fix format string-type mismatch in LVScope
Fix mismatch between `%d`/`%x` format strings and `uint64_t` type.
This fixes incorrect printing of "Scope Sizes" on 32-bit platforms
where this leads to `llvm::print()` misreading vararg.

Fixes #58758

Differential Revision: https://reviews.llvm.org/D137400
2022-11-04 12:59:01 +01:00
Carlos Alberto Enciso
9d56d9a95f [llvm-debuginfo-analyzer] Fix memory leak reported by sanitizers.
The sanitizer reported memory leak issues; the command line
used in the test case is:

llvm-debuginfo-analyzer --attribute=level
                        --print=instructions
                        pr-incorrect-instructions-dwarf-clang.o

When dealing with logical instruction lines associated with
an artificial logical scope, skip the process of finding
their enclosing scope. Just add them to the scope.

Create logical debug lines only if the command line specifies:
  --print=lines or --print=elements or --print=all

Reviewed By: jryans, vitalybuka

Differential Revision: https://reviews.llvm.org/D137156
2022-11-02 06:07:33 +00:00
Carlos Alberto Enciso
4f06d46f46 [llvm-debuginfo-analyzer] (08/09) - ELF Reader
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level
format.

The code has been divided into the following patches:

1) Interval tree
2) Driver and documentation
3) Logical elements
4) Locations and ranges
5) Select elements
6) Warning and internal options
7) Compare elements
8) ELF Reader
9) CodeView Reader

Full details:
https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570

This patch:

This is a high level summary of the changes in this patch.

ELF Reader
- Support for ELF/DWARF.
  LVBinaryReader, LVELFReader

Reviewed By: psamolysov, probinson

Differential Revision: https://reviews.llvm.org/D125783
2022-10-27 05:37:51 +01:00
Carlos Alberto Enciso
e98a4c5acb [llvm-debuginfo-analyzer] (07/09) - Compare elements
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level
format.

The code has been divided into the following patches:

1) Interval tree
2) Driver and documentation
3) Logical elements
4) Locations and ranges
5) Select elements
6) Warning and internal options
7) Compare elements
8) ELF Reader
9) CodeView Reader

Full details:
https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570

This patch:

Compare elements
- Support for logical elements comparison. See '--compare' options.
  LVCompare

Reviewed By: psamolysov, probinson

Differential Revision: https://reviews.llvm.org/D125782
2022-10-24 08:27:06 +01:00
Michael Liao
81ad624b1a [llvm-debuginfo-analyzer] Fix shared build. NFC. 2022-10-24 01:33:04 -04:00
Carlos Alberto Enciso
1d4fd09c51 [llvm-debuginfo-analyzer] (06/09) - Warning and internal options
The 'clang-ppc64le-linux-multistage24452' buildbot fails with:

  https://lab.llvm.org/buildbot#builders/121/builds/24452
  undefined reference to `llvm::dwarf::TagString(unsigned int)'

Add 'DebugInfoDWARF' in the CMakeLists.txt CMake file.
2022-10-24 06:01:17 +01:00
Carlos Alberto Enciso
2c155d3799 [llvm-debuginfo-analyzer] (06/09) - Warning and internal options
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level
format.

The code has been divided into the following patches:

1) Interval tree
2) Driver and documentation
3) Logical elements
4) Locations and ranges
5) Select elements
6) Warning and internal options
7) Compare elements
8) ELF Reader
9) CodeView Reader

Full details:
https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570

This patch:

Warning and internal options
- Support for '--warning' options.
- Support for '--internal' options.

Reviewed By: psamolysov, probinson

Differential Revision: https://reviews.llvm.org/D125781
2022-10-24 05:12:57 +01:00
Carlos Alberto Enciso
de1e911f02 [llvm-debuginfo-analyzer] (05/09) - Select elements
The test case 'checkFlexiblePatterns' caused a failure in:

  https://lab.llvm.org/buildbot/#/builders/85/builds/11590
  SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
    runtime error: applying zero offset to null pointer
    llvm/lib/Support/regengine.inc:151:18

The logical view is traversed and for each logical element a
series of match criterias are applied. One of those criterias
is to match its name or type name to a given pattern.

If the logical element does not have a type (for instance a
'namespace') do not try to use its type name, which is a
empty string as the 'matcher' function receives a null pointer.

Reviewed By: probinson

Differential Revision: https://reviews.llvm.org/D136444
2022-10-21 19:16:49 +01:00
Carlos Alberto Enciso
0332a8e7d6 [llvm-debuginfo-analyzer] (05/09) - Select elements
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level
format.

The code has been divided into the following patches:

1) Interval tree
2) Driver and documentation
3) Logical elements
4) Locations and ranges
5) Select elements
6) Warning and internal options
7) Compare elements
8) ELF Reader
9) CodeView Reader

Full details:
https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570

This patch:

Select elements
- Support for logical elements selection:
  LVPatterns

Reviewed By: psamolysov, probinson

Differential Revision: https://reviews.llvm.org/D125780
2022-10-21 05:55:09 +01:00
Carlos Alberto Enciso
3c397c90c1 [llvm-debuginfo-analyzer] (04/09) - Locations and ranges
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level
format.

The code has been divided into the following patches:

1) Interval tree
2) Driver and documentation
3) Logical elements
4) Locations and ranges
5) Select elements
6) Warning and internal options
7) Compare elements
8) ELF Reader
9) CodeView Reader

Full details:
https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570

This patch:

Locations and ranges
- All functionality for logical debug locations and ranges:
  LVLocation, LVRanges.

Reviewed By: psamolysov, probinson

Differential Revision: https://reviews.llvm.org/D125779
2022-10-20 08:31:13 +01:00
Carlos Alberto Enciso
e28b9357b1 [llvm-debuginfo-analyzer] (03/09) - Logical elements
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level
format.

The code has been divided into the following patches:

1) Interval tree
2) Driver and documentation
3) Logical elements
4) Locations and ranges
5) Select elements
6) Warning and internal options
7) Compare elements
8) ELF Reader
9) CodeView Reader

Full details:
https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570

This patch:

Logical elements
- All basic functionality for the logical elements:
  LVScope, LVLine, LVSymbol, LVType.
- The logical reader:
  LVReader.h

Reviewed By: psamolysov, probinson

Differential Revision: https://reviews.llvm.org/D125778
2022-10-20 06:19:20 +01:00
Carlos Alberto Enciso
b6625765cf [llvm-debuginfo-analyzer] Fix linking errors in buildbots.
The tool used the 'old' LLVM build information (LLVMBuild.txt),
which caused linking errors in:

https://lab.llvm.org/buildbot/#/builders/177/builds/10125
https://lab.llvm.org/buildbot/#/builders/196/builds/19699

Update the CMake configuration to support the new LLVM build
system that uses only CMakeLists.txt.

Reviewed By: jryans

Differential Revision: https://reviews.llvm.org/D136159
2022-10-18 13:05:46 +01:00
Carlos Alberto Enciso
c28a977b87 Recommit [llvm-debuginfo-analyzer] (02/09) - Driver and documentation
Originally committed in fe7a3cedf77125a6309150d85cecbc20b1a31775

Reverted in 26dd64ba9cfabe5474bb207f3b7099965f81fed7

Buildbot failures:
https://lab.llvm.org/buildbot#builders/139/builds/29663
- unittest trigger an invalid assertion.

https://lab.llvm.org/buildbot#builders/196/builds/19665
- 'has virtual functions but non-virtual destructor' warning as error.

Recommitted with fix:
- Removed the assertion.
- Added virtual destructor.
2022-10-18 08:39:26 +01:00
Carlos Alberto Enciso
26dd64ba9c Revert "[llvm-debuginfo-analyzer] (02/09) - Driver and documentation"
This reverts commit fe7a3cedf77125a6309150d85cecbc20b1a31775.
2022-10-17 14:26:48 +01:00
Carlos Alberto Enciso
fe7a3cedf7 [llvm-debuginfo-analyzer] (02/09) - Driver and documentation
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level
format.

The code has been divided into the following patches:

1) Interval tree
2) Driver and documentation
3) Logical elements
4) Locations and ranges
5) Select elements
6) Warning and internal options
7) Compare elements
8) ELF Reader
9) CodeView Reader

Full details:
https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570

This patch:

Driver and documentation
- Command line options.
- Full documentation.
- String Pool table.

Reviewed By: psamolysov, probinson

Differential Revision: https://reviews.llvm.org/D125777
2022-10-17 13:46:55 +01:00