]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
btf: fix type id in BTF_KIND_FUNC struct data.
authorCupertino Miranda <cupertino.miranda@oracle.com>
Tue, 30 Jan 2024 19:01:12 +0000 (19:01 +0000)
committerCupertino Miranda <cupertino.miranda@oracle.com>
Wed, 28 Feb 2024 19:20:20 +0000 (19:20 +0000)
This patch corrects the addition of +1 on the type id, which originally
was done in the wrong location and led to func_dtd->dtd_type for
BTF_KIND_FUNC struct data to contain the type id of the previous entry.

gcc/ChangeLog:

* btfout.cc (btf_collect_dataset): Corrects BTF type id.

gcc/btfout.cc

index dcf751f8fe0de6ea8dfd0ce4396fc3568cd95f75..7e114e224449b2a9ec5c89c63d2d1d67101fac3b 100644 (file)
@@ -457,7 +457,8 @@ btf_collect_datasec (ctf_container_ref ctfc)
       func_dtd->dtd_data.ctti_type = dtd->dtd_type;
       func_dtd->linkage = dtd->linkage;
       func_dtd->dtd_name = dtd->dtd_name;
-      func_dtd->dtd_type = num_types_added + num_types_created;
+      /* +1 for the sentinel type not in the types map.  */
+      func_dtd->dtd_type = num_types_added + num_types_created + 1;
 
       /* Only the BTF_KIND_FUNC type actually references the name. The
         BTF_KIND_FUNC_PROTO is always anonymous.  */
@@ -480,8 +481,7 @@ btf_collect_datasec (ctf_container_ref ctfc)
 
          struct btf_var_secinfo info;
 
-         /* +1 for the sentinel type not in the types map.  */
-         info.type = func_dtd->dtd_type + 1;
+         info.type = func_dtd->dtd_type;
 
          /* Both zero at compile time.  */
          info.size = 0;