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> --- 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); -- 2.43.5