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();