On Thu, Oct 03, 2024 at 02:41:17PM +0100, Alan Maguire wrote: > 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> Thanks, applying this first one. - Arnaldo > > --- > > 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); > >