Skip to content
Snippets Groups Projects
  • Wilco Dijkstra's avatar
    c98cd1df
    libgcc: Fix uninitialized RA signing on AArch64 [PR107678] · c98cd1df
    Wilco Dijkstra authored
    A recent change only initializes the regs.how[] during Dwarf unwinding
    which resulted in an uninitialized offset used in return address signing
    and random failures during unwinding.  The fix is to encode the return
    address signing state in REG_UNSAVED and a new state REG_UNSAVED_ARCHEXT.
    
    libgcc/
    	PR target/107678
    	* unwind-dw2.h (REG_UNSAVED_ARCHEXT): Add new enum.
    	* unwind-dw2.c (uw_update_context_1): Add REG_UNSAVED_ARCHEXT case.
    	* unwind-dw2-execute_cfa.h: Use REG_UNSAVED_ARCHEXT/REG_UNSAVED to
    	encode the return address signing state.
    	* config/aarch64/aarch64-unwind.h (aarch64_demangle_return_addr)
    	Check current return address signing state.
    	(aarch64_frob_update_contex): Remove.
    c98cd1df
    History
    libgcc: Fix uninitialized RA signing on AArch64 [PR107678]
    Wilco Dijkstra authored
    A recent change only initializes the regs.how[] during Dwarf unwinding
    which resulted in an uninitialized offset used in return address signing
    and random failures during unwinding.  The fix is to encode the return
    address signing state in REG_UNSAVED and a new state REG_UNSAVED_ARCHEXT.
    
    libgcc/
    	PR target/107678
    	* unwind-dw2.h (REG_UNSAVED_ARCHEXT): Add new enum.
    	* unwind-dw2.c (uw_update_context_1): Add REG_UNSAVED_ARCHEXT case.
    	* unwind-dw2-execute_cfa.h: Use REG_UNSAVED_ARCHEXT/REG_UNSAVED to
    	encode the return address signing state.
    	* config/aarch64/aarch64-unwind.h (aarch64_demangle_return_addr)
    	Check current return address signing state.
    	(aarch64_frob_update_contex): Remove.