================
@@ -680,11 +682,19 @@ int
CompactUnwinder_arm64<A>::stepWithCompactEncodingFrame(
savedRegisterLoc -= 8;
}
- uint64_t fp = registers.getFP();
+ Registers_arm64::reg_t fp = registers.getFP();
// fp points to old fp
registers.setFP(addressSpace.get64(fp));
- // old sp is fp less saved fp and lr
+
+ // old sp is fp less saved fp and lr. Set this before FP & LR because in
+ // arm64e it's the discriminator used for those registers.
registers.setSP(fp + 16);
+
+ Registers_arm64::reg_t oldfp = addressSpace.get64(fp);
+
+ // fp points to old fp
+ registers.setFP(oldfp);
----------------
ojhunt wrote:
So this is an area I'm unsure of - I thought the addressSpace abstraction was
for cross process. ... something? But I don't know if that was just a
hypothetical future concept or is actually used somewhere?
It's also possible that this is just left over from a bunch of dead code I
excised while preparing this
https://github.com/llvm/llvm-project/pull/143230
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits