• Linus Torvalds's avatar
    Merge tag 'objtool-core-2023-06-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6f612579
    Linus Torvalds authored
    Pull objtool updates from Ingo Molar:
     "Build footprint & performance improvements:
    
       - Reduce memory usage with CONFIG_DEBUG_INFO=y
    
         In the worst case of an allyesconfig+CONFIG_DEBUG_INFO=y kernel,
         DWARF creates almost 200 million relocations, ballooning objtool's
         peak heap usage to 53GB. These patches reduce that to 25GB.
    
         On a distro-type kernel with kernel IBT enabled, they reduce
         objtool's peak heap usage from 4.2GB to 2.8GB.
    
         These changes also improve the runtime significantly.
    
      Debuggability improvements:
    
       - Add the unwind_debug command-line option, for more extend unwinding
         debugging output
       - Limit unreachable warnings to once per function
       - Add verbose option for disassembling affected functions
       - Include backtrace in verbose mode
       - Detect missing __noreturn annotations
       - Ignore exc_double_fault() __noreturn warnings
       - Remove superfluous global_noreturns entries
       - Move noreturn function list to separate file
       - Add __kunit_abort() to noreturns
    
      Unwinder improvements:
    
       - Allow stack operations in UNWIND_HINT_UNDEFINED regions
       - drm/vmwgfx: Add unwind hints around RBP clobber
    
      Cleanups:
    
       - Move the x86 entry thunk restore code into thunk functions
       - x86/unwind/orc: Use swap() instead of open coding it
       - Remove unnecessary/unused variables
    
      Fixes for modern stack canary handling"
    
    * tag 'objtool-core-2023-06-27' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (42 commits)
      x86/orc: Make the is_callthunk() definition depend on CONFIG_BPF_JIT=y
      objtool: Skip reading DWARF section data
      objtool: Free insns when done
      objtool: Get rid of reloc->rel[a]
      objtool: Shrink elf hash nodes
      objtool: Shrink reloc->sym_reloc_entry
      objtool: Get rid of reloc->jump_table_start
      objtool: Get rid of reloc->addend
      objtool: Get rid of reloc->type
      objtool: Get rid of reloc->offset
      objtool: Get rid of reloc->idx
      objtool: Get rid of reloc->list
      objtool: Allocate relocs in advance for new rela sections
      objtool: Add for_each_reloc()
      objtool: Don't free memory in elf_close()
      objtool: Keep GElf_Rel[a] structs synced
      objtool: Add elf_create_section_pair()
      objtool: Add mark_sec_changed()
      objtool: Fix reloc_hash size
      objtool: Consolidate rel/rela handling
      ...
    6f612579
unwind_orc.c 19.8 KB