Module Name: src Committed By: rin Date: Mon May 31 11:57:28 UTC 2021
Modified Files: src/sys/lib/libunwind: Registers.hpp Log Message: PR toolchain/55837 Fix logic error in copyFloatVectorRegister() for arm; copy s0-s31 or d0-d31, not both. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/sys/lib/libunwind/Registers.hpp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/lib/libunwind/Registers.hpp diff -u src/sys/lib/libunwind/Registers.hpp:1.25 src/sys/lib/libunwind/Registers.hpp:1.26 --- src/sys/lib/libunwind/Registers.hpp:1.25 Mon May 31 11:54:01 2021 +++ src/sys/lib/libunwind/Registers.hpp Mon May 31 11:57:28 2021 @@ -400,19 +400,20 @@ public: #endif memcpy((uint8_t *)(fpreg + dnum) + part * sizeof(fpreg[0]) / 2, addr, sizeof(fpreg[0]) / 2); - } - if (num <= REGNO_ARM32_D15) { - if ((flags & FLAGS_VFPV2_USED) == 0) { - lazyVFPv2(); - flags |= FLAGS_VFPV2_USED; - } } else { - if ((flags & FLAGS_VFPV3_USED) == 0) { - lazyVFPv3(); - flags |= FLAGS_VFPV3_USED; + if (num <= REGNO_ARM32_D15) { + if ((flags & FLAGS_VFPV2_USED) == 0) { + lazyVFPv2(); + flags |= FLAGS_VFPV2_USED; + } + } else { + if ((flags & FLAGS_VFPV3_USED) == 0) { + lazyVFPv3(); + flags |= FLAGS_VFPV3_USED; + } } + memcpy(fpreg + (num - REGNO_ARM32_D0), addr, sizeof(fpreg[0])); } - memcpy(fpreg + (num - REGNO_ARM32_D0), addr, sizeof(fpreg[0])); } __dso_hidden void lazyVFPv2();