Accepting request 677153 from home:tomdevries:branches:openSUSE:Factory
- Add dwz-low-mem-Fix-DW_OP_GNU_parameter_ref-handling-in-read_exprloc.patch to fix assert on cc1 binary from gcc bootstrap-lto [swo#24195]. OBS-URL: https://build.opensuse.org/request/show/677153 OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/dwz?expand=0&rev=13
This commit is contained in:
parent
64e961df8d
commit
7c84e101c1
@ -0,0 +1,57 @@
|
||||
[low-mem] Fix DW_OP_GNU_parameter_ref handling in read_exprloc
|
||||
|
||||
Function read_exprloc contains a loop that marks all parents of a
|
||||
DW_OP_GNU_parameter_ref reference with CK_BAD. The loop however has no
|
||||
private loop variable, so the ref variable, initially pointing to the
|
||||
referenced DIE, ends up after the loop pointing to the root parent of the
|
||||
reference instead. Consequently, the code after the loop, intended to be
|
||||
executed for the referenced DIE, is instead executed for the root parent of
|
||||
the referenced DIE.
|
||||
|
||||
Fix this by moving the loop alap.
|
||||
|
||||
2019-02-14 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
PR dwz/24195
|
||||
* dwz.c (read_exprloc): Move loop marking parents with CK_BAD alap.
|
||||
|
||||
---
|
||||
dwz.c | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/dwz.c b/dwz.c
|
||||
index d348418..6e6b6fb 100644
|
||||
--- a/dwz.c
|
||||
+++ b/dwz.c
|
||||
@@ -1492,6 +1492,15 @@ read_exprloc (DSO *dso, dw_die_ref die, unsigned char *ptr, size_t len,
|
||||
}
|
||||
if (op == DW_OP_call2)
|
||||
ref->die_op_call2_referenced = 1;
|
||||
+ if (unlikely (low_mem))
|
||||
+ {
|
||||
+ ref->die_referenced = 1;
|
||||
+ /* As .debug_loc adjustment is done after
|
||||
+ write_info finishes, we need to keep the referenced
|
||||
+ DIEs around uncollapsed. */
|
||||
+ if (need_adjust)
|
||||
+ ref->die_intercu_referenced = 1;
|
||||
+ }
|
||||
if (ref->die_ck_state == CK_KNOWN)
|
||||
{
|
||||
ref->die_ck_state = CK_BAD;
|
||||
@@ -1504,15 +1513,6 @@ read_exprloc (DSO *dso, dw_die_ref die, unsigned char *ptr, size_t len,
|
||||
}
|
||||
else
|
||||
ref->die_ck_state = CK_BAD;
|
||||
- if (unlikely (low_mem))
|
||||
- {
|
||||
- ref->die_referenced = 1;
|
||||
- /* As .debug_loc adjustment is done after
|
||||
- write_info finishes, we need to keep the referenced
|
||||
- DIEs around uncollapsed. */
|
||||
- if (need_adjust)
|
||||
- ref->die_intercu_referenced = 1;
|
||||
- }
|
||||
die->die_ck_state = CK_BAD;
|
||||
if (need_adjust)
|
||||
*need_adjust = true;
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 18 14:31:42 UTC 2019 - tdevries@suse.com
|
||||
|
||||
- Add dwz-low-mem-Fix-DW_OP_GNU_parameter_ref-handling-in-read_exprloc.patch
|
||||
to fix assert on cc1 binary from gcc bootstrap-lto [swo#24195].
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 11 11:02:06 UTC 2018 - rguenther@suse.com
|
||||
|
||||
|
4
dwz.spec
4
dwz.spec
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package dwz
|
||||
#
|
||||
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -27,6 +27,7 @@ Group: Development/Tools/Building
|
||||
Source: %{name}-%{version}.tar.xz
|
||||
Patch0: dwz-0.12-ignore-nobits.patch
|
||||
Patch1: dwz-0.12-DW_OP_GNU_variable_value.patch
|
||||
Patch2: dwz-low-mem-Fix-DW_OP_GNU_parameter_ref-handling-in-read_exprloc.patch
|
||||
BuildRequires: libelf-devel
|
||||
BuildRequires: xz
|
||||
|
||||
@ -52,6 +53,7 @@ is needed.
|
||||
%setup -q -n %{name}
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
|
||||
%build
|
||||
make %{?_smp_mflags} CFLAGS="%{optflags}"
|
||||
|
Loading…
Reference in New Issue
Block a user