[1/2] btf: be clear when record size/type is not used

Message ID 20230530182702.8020-1-david.faust@oracle.com
State Accepted
Headers
Series [1/2] btf: be clear when record size/type is not used |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

David Faust May 30, 2023, 6:27 p.m. UTC
  [Changes from v1: split this change into own commit.]

All BTF type records have a 4-byte field used to encode a size or link
to another type, depending on the type kind. But BTF_KIND_ARRAY and
BTF_KIND_FWD do not use this field at all, and should write zero.

GCC already correctly writes zero in this field for these type kinds,
but the process is not straightforward and results in the -dA comment
claiming the field is a reference to another type. This patch makes
the behavior explicit and updates the assembler comment to state
clearly that the field is unused.

gcc/

	* btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
	and BTF_KIND_FWD which do not use the size/type field at all.
---
 gcc/btfout.cc | 6 ++++++
 1 file changed, 6 insertions(+)
  

Comments

Indu Bhagat May 31, 2023, 6:12 a.m. UTC | #1
On 5/30/23 11:27, David Faust wrote:
> [Changes from v1: split this change into own commit.]
> 
> All BTF type records have a 4-byte field used to encode a size or link
> to another type, depending on the type kind. But BTF_KIND_ARRAY and
> BTF_KIND_FWD do not use this field at all, and should write zero.
> 
> GCC already correctly writes zero in this field for these type kinds,
> but the process is not straightforward and results in the -dA comment
> claiming the field is a reference to another type. This patch makes
> the behavior explicit and updates the assembler comment to state
> clearly that the field is unused.
> 

LGTM.

Thanks

> gcc/
> 
> 	* btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
> 	and BTF_KIND_FWD which do not use the size/type field at all.
> ---
>   gcc/btfout.cc | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/gcc/btfout.cc b/gcc/btfout.cc
> index 497c1ca06e6..ae9855716eb 100644
> --- a/gcc/btfout.cc
> +++ b/gcc/btfout.cc
> @@ -705,6 +705,12 @@ btf_asm_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd)
>         dw2_asm_output_data (4, dtd->dtd_data.ctti_size, "btt_size: %uB",
>   			   dtd->dtd_data.ctti_size);
>         return;
> +    case BTF_KIND_ARRAY:
> +    case BTF_KIND_FWD:
> +      /* These types do not encode any information in the size/type field
> +	 and should write 0.  */
> +      dw2_asm_output_data (4, 0, "(unused)");
> +      return;
>       default:
>         break;
>       }
  

Patch

diff --git a/gcc/btfout.cc b/gcc/btfout.cc
index 497c1ca06e6..ae9855716eb 100644
--- a/gcc/btfout.cc
+++ b/gcc/btfout.cc
@@ -705,6 +705,12 @@  btf_asm_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd)
       dw2_asm_output_data (4, dtd->dtd_data.ctti_size, "btt_size: %uB",
 			   dtd->dtd_data.ctti_size);
       return;
+    case BTF_KIND_ARRAY:
+    case BTF_KIND_FWD:
+      /* These types do not encode any information in the size/type field
+	 and should write 0.  */
+      dw2_asm_output_data (4, 0, "(unused)");
+      return;
     default:
       break;
     }