Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • The investigation on the 6 runfails run failures is done. It turns out they are not Oz-specific failures, i.e. these 6 test cases failed for all optimization levels but our error reporting mechanism didn't catch the failures because we just check only checked the "passed" output string but didn't check shadow stack fault. We've fixed the error reporting system.
    The root cause of the shadow stack fault on the 6 test cases is due to a lack of setjmp/longjmp support to save and restore shadow stack pointer.
    We will study glibc and try to add the support. We will also add Zicfiss instructions that are required by setjmp/longjmp into Spike for validation purpose, such as ssrdp, ssld, etc. 
    An example glibc patch for x86 shadow stack can be found in here: https://github.com/bminor/glibc/commit/faaee1f07ed25b2779bfd935ffb29f431b80d6d3
    We will also add Zicfiss instructions that are required by setjmp/longjmp into Spike for validation purpose, such as ssrdp, ssld, etc.ABI discussions on jmp_buf can be found here: https://github.com/riscv/riscv-cfi/issues/142

  • Two essential LLVM patches that implement Zicfiss v0.2 have been posted for review by fakepaper56 (thumbs up). We have validated these patches using Spike with newly added Zicfiss v0.3.1 instructions. It only requires slight encoding adjustment to run the validation. The validation results look good. There are only 6 run fails with -Oz for total 80K test programs. We will investigate these run fails. 
    https://reviews.llvm.org/D152793
    https://reviews.llvm.org/D156549

...