On 1/12/23 19:57, Jakub Jelinek via Gcc-patches wrote: > On Tue, Jan 10, 2023 at 04:33:59PM +0000, Wilco Dijkstra via Gcc-patches > wrote: >> Hi Szabolcs, >> >>> i would keep the assert: how[reg] must be either UNSAVED or UNDEFINED >>> here, other how[reg] means the toggle cfi instruction is mixed with >>> incompatible instructions for the pseudo reg. >>> >>> and i would add a comment about this e.g. saying that UNSAVED/UNDEFINED >>> how[reg] is used for tracking the return address signing status and >>> other how[reg] is not allowed here. >> >> I've added the assert back and updated the comment. > > BTW, the patch doesn't apply to trunk cleanly (since the January 2nd > r13-4955-gcb775ecd6e437 commit).
@Wilco, can you please send the rebased patch for patch review? We would need in out openSUSE package soon. Thank you, Martin > >> v3: Improve comments, add assert. >> >> 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 REG_UNDEFINED. >> >> Passes bootstrap & regress, OK for commit? >> >> libgcc/ >> PR target/107678 >> * unwind-dw2.c (execute_cfa_program): Use REG_UNSAVED/UNDEFINED >> to encode return address signing state. >> * config/aarch64/aarch64-unwind.h (aarch64_demangle_return_addr) >> Check current return address signing state. >> (aarch64_frob_update_contex): Remove. > > Jakub >