On 03/10/2024 00:52, Stephen Brennan wrote: > We will need more granularity in the future, in order to add support for > encoding global variables as well. So replace the skip_encoding_vars > boolean with a flag variable named "encode_vars". There is currently > only one bit specified, and it is set when percpu variables should be > emitted. > > Signed-off-by: Stephen Brennan <stephen.s.brennan@xxxxxxxxxx> Reviewed-by: Alan Maguire <alan.maguire@xxxxxxxxxx> > --- > btf_encoder.c | 10 ++++++---- > btf_encoder.h | 6 ++++++ > 2 files changed, 12 insertions(+), 4 deletions(-) > > diff --git a/btf_encoder.c b/btf_encoder.c > index 51cd7bf..652a945 100644 > --- a/btf_encoder.c > +++ b/btf_encoder.c > @@ -119,7 +119,6 @@ struct btf_encoder { > uint32_t type_id_off; > bool has_index_type, > need_index_type, > - skip_encoding_vars, > raw_output, > verbose, > force, > @@ -137,6 +136,7 @@ struct btf_encoder { > int allocated; > uint32_t shndx; > } percpu; > + int encode_vars; > struct { > struct elf_function *entries; > int allocated; > @@ -2369,7 +2369,6 @@ struct btf_encoder *btf_encoder__new(struct cu *cu, const char *detached_filenam > > encoder->force = conf_load->btf_encode_force; > encoder->gen_floats = conf_load->btf_gen_floats; > - encoder->skip_encoding_vars = conf_load->skip_encoding_btf_vars; > encoder->skip_encoding_decl_tag = conf_load->skip_encoding_btf_decl_tag; > encoder->tag_kfuncs = conf_load->btf_decl_tag_kfuncs; > encoder->gen_distilled_base = conf_load->btf_gen_distilled_base; > @@ -2377,6 +2376,9 @@ struct btf_encoder *btf_encoder__new(struct cu *cu, const char *detached_filenam > encoder->has_index_type = false; > encoder->need_index_type = false; > encoder->array_index_id = 0; > + encoder->encode_vars = 0; > + if (!conf_load->skip_encoding_btf_vars) > + encoder->encode_vars |= BTF_VAR_PERCPU; > > GElf_Ehdr ehdr; > > @@ -2436,7 +2438,7 @@ struct btf_encoder *btf_encoder__new(struct cu *cu, const char *detached_filenam > if (!encoder->percpu.shndx && encoder->verbose) > printf("%s: '%s' doesn't have '%s' section\n", __func__, cu->filename, PERCPU_SECTION); > > - if (btf_encoder__collect_symbols(encoder, !encoder->skip_encoding_vars)) > + if (btf_encoder__collect_symbols(encoder, encoder->encode_vars & BTF_VAR_PERCPU)) > goto out_delete; > > if (encoder->verbose) > @@ -2633,7 +2635,7 @@ int btf_encoder__encode_cu(struct btf_encoder *encoder, struct cu *cu, struct co > goto out; > } > > - if (!encoder->skip_encoding_vars) > + if (encoder->encode_vars) > err = btf_encoder__encode_cu_variables(encoder); > > if (!err) > diff --git a/btf_encoder.h b/btf_encoder.h > index f54c95a..91e7947 100644 > --- a/btf_encoder.h > +++ b/btf_encoder.h > @@ -16,6 +16,12 @@ struct btf; > struct cu; > struct list_head; > > +/* Bit flags specifying which kinds of variables are emitted */ > +enum btf_var_option { > + BTF_VAR_NONE = 0, > + BTF_VAR_PERCPU = 1, > +}; > + > struct btf_encoder *btf_encoder__new(struct cu *cu, const char *detached_filename, struct btf *base_btf, bool verbose, struct conf_load *conf_load); > void btf_encoder__delete(struct btf_encoder *encoder); >