diff options
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-8.3.inc | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-8.3/0042-PR-debug-86964.patch | 94 |
2 files changed, 95 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-8.3.inc b/meta/recipes-devtools/gcc/gcc-8.3.inc index fe9c7c3602..a6b772aadd 100644 --- a/meta/recipes-devtools/gcc/gcc-8.3.inc +++ b/meta/recipes-devtools/gcc/gcc-8.3.inc | |||
@@ -72,6 +72,7 @@ SRC_URI = "\ | |||
72 | file://0039-riscv-Disable-multilib-for-OE.patch \ | 72 | file://0039-riscv-Disable-multilib-for-OE.patch \ |
73 | file://0040-powerpc-powerpc64-Add-support-for-musl-ldso.patch \ | 73 | file://0040-powerpc-powerpc64-Add-support-for-musl-ldso.patch \ |
74 | file://0041-Add-a-recursion-limit-to-libiberty-s-demangling-code.patch \ | 74 | file://0041-Add-a-recursion-limit-to-libiberty-s-demangling-code.patch \ |
75 | file://0042-PR-debug-86964.patch \ | ||
75 | " | 76 | " |
76 | SRC_URI[md5sum] = "65b210b4bfe7e060051f799e0f994896" | 77 | SRC_URI[md5sum] = "65b210b4bfe7e060051f799e0f994896" |
77 | SRC_URI[sha256sum] = "64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c" | 78 | SRC_URI[sha256sum] = "64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c" |
diff --git a/meta/recipes-devtools/gcc/gcc-8.3/0042-PR-debug-86964.patch b/meta/recipes-devtools/gcc/gcc-8.3/0042-PR-debug-86964.patch new file mode 100644 index 0000000000..d9b5d39b77 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-8.3/0042-PR-debug-86964.patch | |||
@@ -0,0 +1,94 @@ | |||
1 | From beb921e1106b5bcbb0c6e2be84b241327e2ffc51 Mon Sep 17 00:00:00 2001 | ||
2 | From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | ||
3 | Date: Mon, 25 Mar 2019 21:19:09 +0000 | ||
4 | Subject: [PATCH] PR debug/86964 * dwarf2out.c | ||
5 | (premark_used_variables): New function. (prune_unused_types_walk): Do | ||
6 | not mark not premarked external variables. (prune_unused_types): | ||
7 | Call premark_used_variables. | ||
8 | |||
9 | * gcc.dg/debug/dwarf2/pr86964.c: New testcase. | ||
10 | |||
11 | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@269925 138bc75d-0d04-0410-961f-82ee72b054a4 | ||
12 | |||
13 | Upstream-Status: Backport | ||
14 | Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com> | ||
15 | --- | ||
16 | gcc/ChangeLog | 8 ++++++ | ||
17 | gcc/dwarf2out.c | 32 +++++++++++++++++++++ | ||
18 | 2 files changed, 40 insertions(+) | ||
19 | |||
20 | diff --git a/gcc/ChangeLog b/gcc/ChangeLog | ||
21 | index 2075480ca2b..cdce539ac6f 100644 | ||
22 | --- a/gcc/ChangeLog | ||
23 | +++ b/gcc/ChangeLog | ||
24 | @@ -1,3 +1,11 @@ | ||
25 | +2019-03-25 Johan Karlsson <johan.karlsson@enea.com> | ||
26 | + | ||
27 | + PR debug/86964 | ||
28 | + * dwarf2out.c (premark_used_variables): New function. | ||
29 | + (prune_unused_types_walk): Do not mark not premarked external | ||
30 | + variables. | ||
31 | + (prune_unused_types): Call premark_used_variables. | ||
32 | + | ||
33 | 2019-02-22 Release Manager | ||
34 | |||
35 | * GCC 8.3.0 released. | ||
36 | diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c | ||
37 | index ae8bdee9981..b9a624e1ac7 100644 | ||
38 | --- a/gcc/dwarf2out.c | ||
39 | +++ b/gcc/dwarf2out.c | ||
40 | @@ -22658,6 +22658,21 @@ premark_types_used_by_global_vars (void) | ||
41 | ->traverse<void *, premark_types_used_by_global_vars_helper> (NULL); | ||
42 | } | ||
43 | |||
44 | +/* Mark all variables used by the symtab as perennial. */ | ||
45 | + | ||
46 | +static void | ||
47 | +premark_used_variables (void) | ||
48 | +{ | ||
49 | + /* Mark DIEs in the symtab as used. */ | ||
50 | + varpool_node *var; | ||
51 | + FOR_EACH_VARIABLE (var) | ||
52 | + { | ||
53 | + dw_die_ref die = lookup_decl_die (var->decl); | ||
54 | + if (die) | ||
55 | + die->die_perennial_p = 1; | ||
56 | + } | ||
57 | +} | ||
58 | + | ||
59 | /* Generate a DW_TAG_call_site DIE in function DECL under SUBR_DIE | ||
60 | for CA_LOC call arg loc node. */ | ||
61 | |||
62 | @@ -29264,6 +29279,19 @@ prune_unused_types_walk (dw_die_ref die) | ||
63 | |||
64 | return; | ||
65 | |||
66 | + case DW_TAG_variable: | ||
67 | + if (flag_debug_only_used_symbols) | ||
68 | + { | ||
69 | + if (die->die_perennial_p) | ||
70 | + break; | ||
71 | + | ||
72 | + /* premark_used_variables marks external variables --- don't mark | ||
73 | + them here. */ | ||
74 | + if (get_AT (die, DW_AT_external)) | ||
75 | + return; | ||
76 | + } | ||
77 | + /* FALLTHROUGH */ | ||
78 | + | ||
79 | default: | ||
80 | /* Mark everything else. */ | ||
81 | break; | ||
82 | @@ -29390,6 +29418,10 @@ prune_unused_types (void) | ||
83 | /* Mark types that are used in global variables. */ | ||
84 | premark_types_used_by_global_vars (); | ||
85 | |||
86 | + /* Mark variables used in the symtab. */ | ||
87 | + if (flag_debug_only_used_symbols) | ||
88 | + premark_used_variables (); | ||
89 | + | ||
90 | /* Set the mark on nodes that are actually used. */ | ||
91 | prune_unused_types_walk (comp_unit_die ()); | ||
92 | for (node = limbo_die_list; node; node = node->next) | ||
93 | -- | ||
94 | 2.21.0 | ||