Ticket #319 (Fixed)Tue Oct 02 12:55:19 UTC 2012
CMHG veneers fail to switch to SVC mode when called from SYS mode
Reported by: | Jeffrey Lee (213) | Severity: | Normal |
Part: | RISC OS: C/C++ toolchain | Release: | |
Milestone: | Status | Fixed |
Details by Jeffrey Lee (213):
The veneers produced by the current version of CMHG manipulate the PSR only by modifying the bottom two bits of the mode field. This means that if a veneer is called from a mode which has bits 2 or 3 set (MON, ABT, UND, SYS, etc.) the veneer will fail to switch mode correctly. This can cause issues with calling code from RTSupport routines, especially since the C static relocation offsets are likely to be written to the wrong place due to the stack not being on a MB boundary (e.g. as here)
Changelog:
Modified by Jeffrey Lee (213) Tue, October 02 2012 - 20:53:17 GMT
Now that I’m at home to check: This was found in CMHG 5.42.
Modified by Jeffrey Lee (213) Sun, November 02 2014 - 13:56:54 GMT
- Status changed from Open to Fixed
Fixed with cmhg 5.43 (DDE 25)