On Fri, May 09, 2025 at 01:17:16PM -0700, Josh Poimboeuf wrote:
> diff --git a/tools/objtool/include/objtool/elf.h
> b/tools/objtool/include/objtool/elf.h
> index 4cfd09e66cb5..f62ac8081f27 100644
> --- a/tools/objtool/include/objtool/elf.h
> +++ b/tools/objtool/include/objtool/elf.h
> @@ -17,6 +17,7 @@
> #include <objtool/checksum_types.h>
> #include <arch/elf.h>
>
> +#define SEC_NAME_LEN 512
> #define SYM_NAME_LEN 512
>
> #ifdef LIBELF_USE_DEPRECATED
> @@ -50,10 +51,12 @@ struct section {
> bool _changed, text, rodata, noinstr, init, truncate;
> struct reloc *relocs;
> unsigned long nr_alloc_relocs;
> + struct section *twin;
> };
>
> struct symbol {
> struct list_head list;
> + struct list_head global_list;
> struct rb_node node;
> struct elf_hash_node hash;
> struct elf_hash_node name_hash;
> @@ -79,10 +82,13 @@ struct symbol {
> u8 cold : 1;
> u8 prefix : 1;
> u8 debug_checksum : 1;
> + u8 changed : 1;
> + u8 included : 1;
> struct list_head pv_target;
> struct reloc *relocs;
> struct section *group_sec;
> struct checksum csum;
> + struct symbol *twin, *clone;
> };
>
> struct reloc {
> @@ -100,6 +106,7 @@ struct elf {
> const char *name, *tmp_name;
> unsigned int num_files;
> struct list_head sections;
> + struct list_head symbols;
> unsigned long num_relocs;
>
> int symbol_bits;
ISTR us spending significant effort shrinking all this stuff. How does
this affect vmlinux.o memory footprint etc?