https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105134
--- Comment #1 from piliu at redhat dot com --- More description about the background. There is a built file kexec-tools/purgatory/purgatory.ro, which is a tiny bootload, compare and verify the sha256, if ok, then jump to the 2nd kernel. The original sha256 value comes from update_purgatory() { ...... elf_rel_set_symbol(&info->rhdr, "sha256_regions", ®ion, sizeof(region)); elf_rel_set_symbol(&info->rhdr, "sha256_digest", &digest, sizeof(digest)); } They are based on the loaded linux kernel image. Now, "kexec -e" and purgatory.ro runs, and in void purgatory(void) { printf("I'm in purgatory\n"); setup_arch(); if (!skip_checks && verify_sha256_digest()) { for(;;) { /* loop forever */ ------> stuck here } } post_verification_setup_arch(); }