Set up the proper stack frame for the thread spawned in internal_clone,
the current code does not follow ABI (and causes SEGV trying to use this
malformed frame).
Details
- Reviewers
wschmidt echristo kbarton hfinkel nemanjai - Commits
- rG4d240da94b9b: [PPC64, Sanitizers] Proper stack frame for the thread spawned in internal_clone
rCRT299896: [PPC64, Sanitizers] Proper stack frame for the thread spawned in internal_clone
rL299896: [PPC64, Sanitizers] Proper stack frame for the thread spawned in internal_clone
Diff Detail
- Repository
- rL LLVM
Event Timeline
Couple of inline comments. I think this looks right but I've added Kit and Nemanja on here so one of them can give an ACK if Bill doesn't.
-eric
lib/sanitizer_common/sanitizer_linux.cc | ||
---|---|---|
1117 ↗ | (On Diff #93725) | Do you mean elfv1 vs elfv2 here? The standard one would be just to check for _CALL_ELF == 1 and _CALL_ELF == 2. |
1137 ↗ | (On Diff #93725) | If we're just talking about power64 we can probably just hard code it to N rather than N * sizeof(some type). |
I can't claim I really understand this sanitizer code, but won't this depend on the decision made as part of this code:
https://reviews.llvm.org/D29881
https://reviews.llvm.org/rL296771
Should we make a modification that always creates a parameter save area for sanitizers? Or is this completely orthogonal?
No, it's not a sanitizer specific requirement, I was trying to be generic, unnecessary so, I'd say. Thank you for pointing to those revisions, let's be consistent and drop the parameter save area for ELFv2.