Backport dwarf-5 compatibility patch
Related: rhbz#1937700
This commit is contained in:
parent
d2902d8cbb
commit
c7e9e9d6f8
131
0002-PATCH-lldb-Support-DWARF-5-DW_FORM_line_strp-used-by.patch
Normal file
131
0002-PATCH-lldb-Support-DWARF-5-DW_FORM_line_strp-used-by.patch
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
From 2e94dca0c2cedf0bdbcf8517db2f3750ba95513b Mon Sep 17 00:00:00 2001
|
||||||
|
From: serge-sans-paille <sguelton@redhat.com>
|
||||||
|
Date: Tue, 2 Mar 2021 14:08:02 +0100
|
||||||
|
Subject: [PATCH 2/2] [PATCH][lldb] Support DWARF-5 DW_FORM_line_strp (used by
|
||||||
|
GCC)
|
||||||
|
|
||||||
|
---
|
||||||
|
.../SymbolFile/DWARF/DWARFDebugInfoEntry.cpp | 1 +
|
||||||
|
.../Plugins/SymbolFile/DWARF/DWARFFormValue.cpp | 73 +++++++++++-----------
|
||||||
|
2 files changed, 39 insertions(+), 35 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
|
||||||
|
index 4212988..bce2529 100644
|
||||||
|
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
|
||||||
|
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
|
||||||
|
@@ -173,6 +173,7 @@ bool DWARFDebugInfoEntry::Extract(const DWARFDataExtractor &data,
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DW_FORM_strp:
|
||||||
|
+ case DW_FORM_line_strp:
|
||||||
|
case DW_FORM_sec_offset:
|
||||||
|
data.GetU32(&offset);
|
||||||
|
break;
|
||||||
|
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
|
||||||
|
index 305f1cb..ec78c5b 100644
|
||||||
|
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
|
||||||
|
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
|
||||||
|
@@ -150,40 +150,40 @@ struct FormSize {
|
||||||
|
uint8_t valid:1, size:7;
|
||||||
|
};
|
||||||
|
static FormSize g_form_sizes[] = {
|
||||||
|
- {0,0}, // 0x00 unused
|
||||||
|
- {0,0}, // 0x01 DW_FORM_addr
|
||||||
|
- {0,0}, // 0x02 unused
|
||||||
|
- {0,0}, // 0x03 DW_FORM_block2
|
||||||
|
- {0,0}, // 0x04 DW_FORM_block4
|
||||||
|
- {1,2}, // 0x05 DW_FORM_data2
|
||||||
|
- {1,4}, // 0x06 DW_FORM_data4
|
||||||
|
- {1,8}, // 0x07 DW_FORM_data8
|
||||||
|
- {0,0}, // 0x08 DW_FORM_string
|
||||||
|
- {0,0}, // 0x09 DW_FORM_block
|
||||||
|
- {0,0}, // 0x0a DW_FORM_block1
|
||||||
|
- {1,1}, // 0x0b DW_FORM_data1
|
||||||
|
- {1,1}, // 0x0c DW_FORM_flag
|
||||||
|
- {0,0}, // 0x0d DW_FORM_sdata
|
||||||
|
- {1,4}, // 0x0e DW_FORM_strp
|
||||||
|
- {0,0}, // 0x0f DW_FORM_udata
|
||||||
|
- {0,0}, // 0x10 DW_FORM_ref_addr (addr size for DWARF2 and earlier, 4 bytes for
|
||||||
|
- // DWARF32, 8 bytes for DWARF32 in DWARF 3 and later
|
||||||
|
- {1,1}, // 0x11 DW_FORM_ref1
|
||||||
|
- {1,2}, // 0x12 DW_FORM_ref2
|
||||||
|
- {1,4}, // 0x13 DW_FORM_ref4
|
||||||
|
- {1,8}, // 0x14 DW_FORM_ref8
|
||||||
|
- {0,0}, // 0x15 DW_FORM_ref_udata
|
||||||
|
- {0,0}, // 0x16 DW_FORM_indirect
|
||||||
|
- {1,4}, // 0x17 DW_FORM_sec_offset
|
||||||
|
- {0,0}, // 0x18 DW_FORM_exprloc
|
||||||
|
- {1,0}, // 0x19 DW_FORM_flag_present
|
||||||
|
- {0,0}, // 0x1a
|
||||||
|
- {0,0}, // 0x1b
|
||||||
|
- {0,0}, // 0x1c
|
||||||
|
- {0,0}, // 0x1d
|
||||||
|
- {0,0}, // 0x1e
|
||||||
|
- {0,0}, // 0x1f
|
||||||
|
- {1,8}, // 0x20 DW_FORM_ref_sig8
|
||||||
|
+ {0, 0}, // 0x00 unused
|
||||||
|
+ {0, 0}, // 0x01 DW_FORM_addr
|
||||||
|
+ {0, 0}, // 0x02 unused
|
||||||
|
+ {0, 0}, // 0x03 DW_FORM_block2
|
||||||
|
+ {0, 0}, // 0x04 DW_FORM_block4
|
||||||
|
+ {1, 2}, // 0x05 DW_FORM_data2
|
||||||
|
+ {1, 4}, // 0x06 DW_FORM_data4
|
||||||
|
+ {1, 8}, // 0x07 DW_FORM_data8
|
||||||
|
+ {0, 0}, // 0x08 DW_FORM_string
|
||||||
|
+ {0, 0}, // 0x09 DW_FORM_block
|
||||||
|
+ {0, 0}, // 0x0a DW_FORM_block1
|
||||||
|
+ {1, 1}, // 0x0b DW_FORM_data1
|
||||||
|
+ {1, 1}, // 0x0c DW_FORM_flag
|
||||||
|
+ {0, 0}, // 0x0d DW_FORM_sdata
|
||||||
|
+ {1, 4}, // 0x0e DW_FORM_strp
|
||||||
|
+ {0, 0}, // 0x0f DW_FORM_udata
|
||||||
|
+ {0, 0}, // 0x10 DW_FORM_ref_addr (addr size for DWARF2 and earlier, 4 bytes
|
||||||
|
+ // for DWARF32, 8 bytes for DWARF32 in DWARF 3 and later
|
||||||
|
+ {1, 1}, // 0x11 DW_FORM_ref1
|
||||||
|
+ {1, 2}, // 0x12 DW_FORM_ref2
|
||||||
|
+ {1, 4}, // 0x13 DW_FORM_ref4
|
||||||
|
+ {1, 8}, // 0x14 DW_FORM_ref8
|
||||||
|
+ {0, 0}, // 0x15 DW_FORM_ref_udata
|
||||||
|
+ {0, 0}, // 0x16 DW_FORM_indirect
|
||||||
|
+ {1, 4}, // 0x17 DW_FORM_sec_offset
|
||||||
|
+ {0, 0}, // 0x18 DW_FORM_exprloc
|
||||||
|
+ {1, 0}, // 0x19 DW_FORM_flag_present
|
||||||
|
+ {0, 0}, // 0x1a DW_FORM_strx (ULEB128)
|
||||||
|
+ {0, 0}, // 0x1b DW_FORM_addrx (ULEB128)
|
||||||
|
+ {1, 4}, // 0x1c DW_FORM_ref_sup4
|
||||||
|
+ {0, 0}, // 0x1d DW_FORM_strp_sup (4 bytes for DWARF32, 8 bytes for DWARF64)
|
||||||
|
+ {1, 16}, // 0x1e DW_FORM_data16
|
||||||
|
+ {1, 4}, // 0x1f DW_FORM_line_strp
|
||||||
|
+ {1, 8}, // 0x20 DW_FORM_ref_sig8
|
||||||
|
};
|
||||||
|
|
||||||
|
llvm::Optional<uint8_t>
|
||||||
|
@@ -286,6 +286,7 @@ bool DWARFFormValue::SkipValue(dw_form_t form,
|
||||||
|
// 32 bit for DWARF 32, 64 for DWARF 64
|
||||||
|
case DW_FORM_sec_offset:
|
||||||
|
case DW_FORM_strp:
|
||||||
|
+ case DW_FORM_line_strp:
|
||||||
|
*offset_ptr += 4;
|
||||||
|
return true;
|
||||||
|
|
||||||
|
@@ -398,7 +399,8 @@ void DWARFFormValue::Dump(Stream &s) const {
|
||||||
|
case DW_FORM_udata:
|
||||||
|
s.PutULEB128(uvalue);
|
||||||
|
break;
|
||||||
|
- case DW_FORM_strp: {
|
||||||
|
+ case DW_FORM_strp:
|
||||||
|
+ case DW_FORM_line_strp: {
|
||||||
|
const char *dbg_str = AsCString();
|
||||||
|
if (dbg_str) {
|
||||||
|
s.QuotedCString(dbg_str);
|
||||||
|
@@ -606,6 +608,7 @@ bool DWARFFormValue::FormIsSupported(dw_form_t form) {
|
||||||
|
case DW_FORM_flag:
|
||||||
|
case DW_FORM_sdata:
|
||||||
|
case DW_FORM_strp:
|
||||||
|
+ case DW_FORM_line_strp:
|
||||||
|
case DW_FORM_strx:
|
||||||
|
case DW_FORM_strx1:
|
||||||
|
case DW_FORM_strx2:
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
%global rc_ver 2
|
%global rc_ver 2
|
||||||
%global baserelease 6
|
%global baserelease 7
|
||||||
%global lldb_srcdir %{name}-%{version}%{?rc_ver:rc%{rc_ver}}.src
|
%global lldb_srcdir %{name}-%{version}%{?rc_ver:rc%{rc_ver}}.src
|
||||||
|
|
||||||
Name: lldb
|
Name: lldb
|
||||||
@ -35,6 +35,8 @@ Requires: python3-lldb
|
|||||||
# For origin certification
|
# For origin certification
|
||||||
BuildRequires: gnupg2
|
BuildRequires: gnupg2
|
||||||
|
|
||||||
|
Patch1: 0002-PATCH-lldb-Support-DWARF-5-DW_FORM_line_strp-used-by.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
LLDB is a next generation, high-performance debugger. It is built as a set
|
LLDB is a next generation, high-performance debugger. It is built as a set
|
||||||
of reusable components which highly leverage existing libraries in the
|
of reusable components which highly leverage existing libraries in the
|
||||||
@ -127,6 +129,9 @@ rm -f %{buildroot}%{python3_sitearch}/six.*
|
|||||||
%{python3_sitearch}/lldb
|
%{python3_sitearch}/lldb
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Apr 29 2021 sguelton@redhat.com - 11.1.0-7.rc2
|
||||||
|
- Backport dwarf-5 compatibility patch
|
||||||
|
|
||||||
* Wed Apr 28 2021 sguelton@redhat.com - 11.1.0-6.rc2
|
* Wed Apr 28 2021 sguelton@redhat.com - 11.1.0-6.rc2
|
||||||
- rebuilt with NVR fixup
|
- rebuilt with NVR fixup
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user