64e961df8d
DW_OP_GNU_variable_value. OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/dwz?expand=0&rev=11
36 lines
1.3 KiB
Diff
36 lines
1.3 KiB
Diff
diff --git a/dwarf2.def b/dwarf2.def
|
|
index e9a8bca..17311fa 100644
|
|
--- a/dwarf2.def
|
|
+++ b/dwarf2.def
|
|
@@ -588,6 +588,9 @@ DW_OP (DW_OP_GNU_reinterpret, 0xf9)
|
|
DW_OP (DW_OP_GNU_parameter_ref, 0xfa)
|
|
/* Extension for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
|
|
DW_OP (DW_OP_GNU_addr_index, 0xfb)
|
|
+/* The GNU variable value extension.
|
|
+ See http://dwarfstd.org/ShowIssue.php?issue=161109.2 . */
|
|
+DW_OP (DW_OP_GNU_variable_value, 0xfd)
|
|
/* HP extensions. */
|
|
DW_OP_DUP (DW_OP_HP_unknown, 0xe0) /* Ouch, the same as GNU_push_tls_address. */
|
|
DW_OP (DW_OP_HP_is_value, 0xe1)
|
|
diff --git a/dwz.c b/dwz.c
|
|
index b3b779d..b387ebc 100644
|
|
--- a/dwz.c
|
|
+++ b/dwz.c
|
|
@@ -1522,6 +1522,7 @@ read_exprloc (DSO *dso, dw_die_ref die, unsigned char *ptr, size_t len,
|
|
ptr += 4;
|
|
break;
|
|
case DW_OP_call_ref:
|
|
+ case DW_OP_GNU_variable_value:
|
|
case DW_OP_GNU_implicit_pointer:
|
|
cu = die_cu (die);
|
|
addr = read_size (ptr, cu->cu_version == 2 ? ptr_size : 4);
|
|
@@ -8576,6 +8577,7 @@ adjust_exprloc (dw_cu_ref cu, dw_die_ref die, dw_cu_ref refcu,
|
|
ptr += 4;
|
|
break;
|
|
case DW_OP_call_ref:
|
|
+ case DW_OP_GNU_variable_value:
|
|
case DW_OP_GNU_implicit_pointer:
|
|
addr = read_size (ptr, refcu->cu_version == 2 ? ptr_size : 4);
|
|
assert (cu->cu_version == refcu->cu_version);
|
|
|