"dwarf: Multi-register CFI address support." was commited to upstream (GCC12)
as
r12-5833-g13b6c7639cfdca892a3f02b63596b097e1839f38
It is based on an earlier version that was committed to OG11
as
ce8e18474780aaae1abbfdde0543c948ae97da42
The OG11 version contained code that was not part of the upstream version
as the approach changed; however, when OG12 was created, those were
accidentally applied to OG12.
This commit removes (reverts) the additional code, i.e. the OG12 commits:
Reverts:
commit
3405728e403ce7054f09e9a69846a57f680060db
"dwarf: Multi-register CFI address support"
gcc/ChangeLog:
* dwarf2cfi.cc (get_cfa_from_loc_descr): Support register spans
with DW_OP_piece and DW_OP_LLVM_piece_end.
* dwarf2out.cc (build_cfa_loc): Support register spans.
include/ChangeLog:
* dwarf2.def (DW_OP_LLVM_piece_end): New extension operator.
Reverts:
commit
29ba2e4eeff0381e04a37a3c471c56cd887d2035
"Fix mis-merge of 'dwarf: Multi-register CFI address support'"
gcc/
* dwarf2cfi.cc (get_cfa_from_loc_descr): Check op against DW_OP_bregx.
+2022-08-31 Tobias Burnus <tobias@codesourcery.com>
+
+ Revert:
+ 2022-06-30 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * dwarf2cfi.cc (get_cfa_from_loc_descr): Check op against DW_OP_bregx.
+
+ 2020-07-27 Andrew Stubbs <ams@codesourcery.com>
+
+ * dwarf2cfi.cc (get_cfa_from_loc_descr): Support register spans
+ with DW_OP_piece and DW_OP_LLVM_piece_end.
+ * dwarf2out.cc (build_cfa_loc): Support register spans.
+
2022-08-30 Tobias Burnus <tobias@codesourcery.com>
Backport from mainline:
cfa->indirect = 0;
cfa->reg.set_by_dwreg (INVALID_REGNUM);
- /* Record previous register pieces here. */
- struct cfa_reg span;
- span.set_by_dwreg (INVALID_REGNUM);
-
for (ptr = loc; ptr != NULL; ptr = ptr->dw_loc_next)
{
enum dwarf_location_atom op = ptr->dw_loc_opc;
= (op == DW_OP_bregx
? ptr->dw_loc_oprnd1.v.val_int : op - DW_OP_breg0);
cfa->reg.set_by_dwreg (regno);
- cfa->base_offset = (op == DW_OP_bregx
- ? ptr->dw_loc_oprnd2.v.val_int
- : ptr->dw_loc_oprnd1.v.val_int);
+ cfa->base_offset = ptr->dw_loc_oprnd1.v.val_int;
}
else
{
cfa->offset = 0;
}
break;
- case DW_OP_piece:
- if (span.reg != INVALID_REGNUM)
- {
- /* We only support contiguous pieces, for now. */
- gcc_assert (cfa->reg.reg == span.reg + span.span);
- gcc_assert (known_eq (ptr->dw_loc_oprnd1.v.val_int,
- span.span_width));
- span.span++;
- cfa->reg = span;
- }
- else
- {
- cfa->reg.span_width = ptr->dw_loc_oprnd1.v.val_int;
- span = cfa->reg;
- }
- break;
- case DW_OP_LLVM_piece_end:
- break;
case DW_OP_deref:
cfa->indirect = 1;
break;
/* The offset is already in place. */
break;
case DW_OP_plus_uconst:
- gcc_assert (known_eq (cfa->offset, 0));
cfa->offset = ptr->dw_loc_oprnd1.v.val_unsigned;
break;
default:
head = build_span_loc (cfa->reg);
if (maybe_ne (offset, 0))
- {
- add_loc_descr (&head, new_loc_descr (DW_OP_LLVM_piece_end, 0, 0));
- add_loc_descr (&head, new_loc_descr (DW_OP_deref, 0, 0));
loc_descr_plus_const (&head, offset);
- }
}
else if (cfa->indirect)
{
+2022-08-31 Tobias Burnus <tobias@codesourcery.com>
+
+ Revert:
+ 2020-07-27 Andrew Stubbs <ams@codesourcery.com>
+
+ * dwarf2.def (DW_OP_LLVM_piece_end): New extension operator.
+
2022-07-07 Tobias Burnus <tobias@codesourcery.com>
Backport from mainline:
to 0 except explicitly documented for one action. Please refer AArch64 DWARF
ABI documentation for details. */
DW_OP (DW_OP_AARCH64_operation, 0xea)
-
-/* AMD GCN extensions (originally for LLVM). See
- http://llvm.org/docs/AMDGPUDwarfExtensionsForHeterogeneousDebugging.html */
-// This clashes with DW_OP_AARCH64_operation, so use an alias instead
-// DW_OP (DW_OP_LLVM_piece_end, 0xea)
-#define DW_OP_LLVM_piece_end DW_OP_AARCH64_operation
DW_END_OP
DW_FIRST_ATE (DW_ATE_void, 0x0)