diff mbox series

debug/102507: ICE in btf_finalize when compiling with -gbtf

Message ID 1632854443-6232-1-git-send-email-indu.bhagat@oracle.com
State New
Headers show
Series debug/102507: ICE in btf_finalize when compiling with -gbtf | expand

Commit Message

Indu Bhagat Sept. 28, 2021, 6:40 p.m. UTC
Fix the free'up of btf_var_ids hash_map in btf_finalize ().

Testing notes:

- Bootstrapped GCC with -gbtf as an experiment.
- Usual bootstrap and regression testing on x86_64.
- BPF backend testing - make all-gcc, reg tested bpf.exp, btf.exp and ctf.exp.
  (tested using David Faust's config.gcc patch posted earlier
   https://gcc.gnu.org/pipermail/gcc-patches/2021-September/580422.html)

gcc/ChangeLog:

	PR debug/102507
	* btfout.c (GTY): Add GTY (()) albeit for cosmetic only purpose.
	(btf_finalize): Empty the hash_map btf_var_ids.
---
 gcc/btfout.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Richard Biener Sept. 29, 2021, 7:13 a.m. UTC | #1
On Tue, Sep 28, 2021 at 8:41 PM Indu Bhagat via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Fix the free'up of btf_var_ids hash_map in btf_finalize ().

OK.

> Testing notes:
>
> - Bootstrapped GCC with -gbtf as an experiment.
> - Usual bootstrap and regression testing on x86_64.
> - BPF backend testing - make all-gcc, reg tested bpf.exp, btf.exp and ctf.exp.
>   (tested using David Faust's config.gcc patch posted earlier
>    https://gcc.gnu.org/pipermail/gcc-patches/2021-September/580422.html)
>
> gcc/ChangeLog:
>
>         PR debug/102507
>         * btfout.c (GTY): Add GTY (()) albeit for cosmetic only purpose.
>         (btf_finalize): Empty the hash_map btf_var_ids.
> ---
>  gcc/btfout.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/btfout.c b/gcc/btfout.c
> index cdc6c63..a787815 100644
> --- a/gcc/btfout.c
> +++ b/gcc/btfout.c
> @@ -70,7 +70,7 @@ static char btf_info_section_label[MAX_BTF_LABEL_BYTES];
>     converted to BTF_KIND_VAR type records. Strictly accounts for the index
>     from the start of the variable type entries, does not include the number
>     of types emitted prior to the variable records.  */
> -static hash_map <ctf_dvdef_ref, unsigned int> *btf_var_ids;
> +static GTY (()) hash_map <ctf_dvdef_ref, unsigned> *btf_var_ids;
>
>  /* Mapping of type IDs from original CTF ID to BTF ID. Types do not map
>     1-to-1 from CTF to BTF. To avoid polluting the CTF container when updating
> @@ -1119,12 +1119,12 @@ btf_finalize (void)
>
>    funcs = NULL;
>
> +  btf_var_ids->empty ();
> +  btf_var_ids = NULL;
> +
>    free (btf_id_map);
>    btf_id_map = NULL;
>
> -  ggc_free (btf_var_ids);
> -  btf_var_ids = NULL;
> -
>    ctf_container_ref tu_ctfc = ctf_get_tu_ctfc ();
>    ctfc_delete_container (tu_ctfc);
>    tu_ctfc = NULL;
> --
> 1.8.3.1
>
diff mbox series

Patch

diff --git a/gcc/btfout.c b/gcc/btfout.c
index cdc6c63..a787815 100644
--- a/gcc/btfout.c
+++ b/gcc/btfout.c
@@ -70,7 +70,7 @@  static char btf_info_section_label[MAX_BTF_LABEL_BYTES];
    converted to BTF_KIND_VAR type records. Strictly accounts for the index
    from the start of the variable type entries, does not include the number
    of types emitted prior to the variable records.  */
-static hash_map <ctf_dvdef_ref, unsigned int> *btf_var_ids;
+static GTY (()) hash_map <ctf_dvdef_ref, unsigned> *btf_var_ids;
 
 /* Mapping of type IDs from original CTF ID to BTF ID. Types do not map
    1-to-1 from CTF to BTF. To avoid polluting the CTF container when updating
@@ -1119,12 +1119,12 @@  btf_finalize (void)
 
   funcs = NULL;
 
+  btf_var_ids->empty ();
+  btf_var_ids = NULL;
+
   free (btf_id_map);
   btf_id_map = NULL;
 
-  ggc_free (btf_var_ids);
-  btf_var_ids = NULL;
-
   ctf_container_ref tu_ctfc = ctf_get_tu_ctfc ();
   ctfc_delete_container (tu_ctfc);
   tu_ctfc = NULL;