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
- Build Status
Buildable 5325 Build 5325: arc lint + arc unit
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 | Do you mean elfv1 vs elfv2 here? The standard one would be just to check for _CALL_ELF == 1 and _CALL_ELF == 2. | |
1137 | 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.
Do you mean elfv1 vs elfv2 here? The standard one would be just to check for _CALL_ELF == 1 and _CALL_ELF == 2.