Support explicit return types in the syscall handlers#2762
Merged
stevenengler merged 2 commits intoshadow:mainfrom Feb 23, 2023
Merged
Support explicit return types in the syscall handlers#2762stevenengler merged 2 commits intoshadow:mainfrom
stevenengler merged 2 commits intoshadow:mainfrom
Conversation
6f02474 to
d7cffda
Compare
d7cffda to
21afe0e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Similar to #2664 but for return types.
Syscalls can return various types (
int,size_t, pointers, etc). We probably don't want to return the wrong type, which the plugin may interpret incorrectly. For example if a syscall is supposed to return anint, we probably don't want to return au64::MAXfrom our syscall handler.Currently our syscall handlers return a
SysCallReg, which is a 64-bit union of various types, and there is no type checking to make sure our syscall handler is returning a valid type. This PR allows our syscall handlers to specify an explicit return type (ex:libc::c_intinstead ofSysCallReg).Only the "sched.h" syscall handlers have been updated to use this. I didn't bother with the others. We can update them later if we want to, but for now this change allows us to use this for new syscall handlers that we write in the future.
(Related #2658.)
Before:
After: