• Peter Zijlstra's avatar
    objtool: Introduce CFI hash · 8b946cc3
    Peter Zijlstra authored
    Andi reported that objtool on vmlinux.o consumes more memory than his
    system has, leading to horrific performance.
    
    This is in part because we keep a struct instruction for every
    instruction in the file in-memory. Shrink struct instruction by
    removing the CFI state (which includes full register state) from it
    and demand allocating it.
    
    Given most instructions don't actually change CFI state, there's lots
    of repetition there, so add a hash table to find previous CFI
    instances.
    
    Reduces memory consumption (and runtime) for processing an
    x86_64-allyesconfig:
    
      pre:  4:40.84 real,   143.99 user,    44.18 sys,      30624988 mem
      post: 2:14.61 real,   108.58 user,    25.04 sys,      16396184 mem
    Suggested-by: default avatarAndi Kleen <andi@firstfloor.org>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210624095147.756759107@infradead.org
    8b946cc3
decode.c 15.2 KB