On Linux i386, the int $0x80 syscall ABI makes it easy to perform syscalls without having a valid userspace stack. The vdso/vsyscall interface, on the other hand, requires access to a stack. How do other Linux ports fare in this regard, especially x86_64? Do they have ways to make syscalls without a stack? Is there a reference on the available syscall methods for each arch?
Making syscalls on Linux without a stack
1.1k Views Asked by R.. GitHub STOP HELPING ICE At
1
There are 1 best solutions below
Related Questions in C
- DXVA2 Decoder MFT in Windows Media Player with multiple monitor displays
- repeat a video in WMP in c++
- Playing a video in new desktop created by createdesktop()
- WMP - Source object doesn't provide IPropertyNotifySink
- VB6 app reference WMP on a Windows 7 x64
- How can I embed windows media player without the visualizations
- Reading custom param values from ASX file in WMP control
- How to perform vba task after media player finishes
- AxWMPLib.AxWindowsMediaPlayer has presented weird behavior for WMV files
- Windows Media Player Crashes when I load an Image Windows 10
Related Questions in LINUX
- DXVA2 Decoder MFT in Windows Media Player with multiple monitor displays
- repeat a video in WMP in c++
- Playing a video in new desktop created by createdesktop()
- WMP - Source object doesn't provide IPropertyNotifySink
- VB6 app reference WMP on a Windows 7 x64
- How can I embed windows media player without the visualizations
- Reading custom param values from ASX file in WMP control
- How to perform vba task after media player finishes
- AxWMPLib.AxWindowsMediaPlayer has presented weird behavior for WMV files
- Windows Media Player Crashes when I load an Image Windows 10
Related Questions in ASSEMBLY
- DXVA2 Decoder MFT in Windows Media Player with multiple monitor displays
- repeat a video in WMP in c++
- Playing a video in new desktop created by createdesktop()
- WMP - Source object doesn't provide IPropertyNotifySink
- VB6 app reference WMP on a Windows 7 x64
- How can I embed windows media player without the visualizations
- Reading custom param values from ASX file in WMP control
- How to perform vba task after media player finishes
- AxWMPLib.AxWindowsMediaPlayer has presented weird behavior for WMV files
- Windows Media Player Crashes when I load an Image Windows 10
Related Questions in SYSTEM-CALLS
- DXVA2 Decoder MFT in Windows Media Player with multiple monitor displays
- repeat a video in WMP in c++
- Playing a video in new desktop created by createdesktop()
- WMP - Source object doesn't provide IPropertyNotifySink
- VB6 app reference WMP on a Windows 7 x64
- How can I embed windows media player without the visualizations
- Reading custom param values from ASX file in WMP control
- How to perform vba task after media player finishes
- AxWMPLib.AxWindowsMediaPlayer has presented weird behavior for WMV files
- Windows Media Player Crashes when I load an Image Windows 10
Related Questions in ABI
- DXVA2 Decoder MFT in Windows Media Player with multiple monitor displays
- repeat a video in WMP in c++
- Playing a video in new desktop created by createdesktop()
- WMP - Source object doesn't provide IPropertyNotifySink
- VB6 app reference WMP on a Windows 7 x64
- How can I embed windows media player without the visualizations
- Reading custom param values from ASX file in WMP control
- How to perform vba task after media player finishes
- AxWMPLib.AxWindowsMediaPlayer has presented weird behavior for WMV files
- Windows Media Player Crashes when I load an Image Windows 10
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
In general: no idea. Even on i386, if there is a 6th argument, it must be passed on the stack (e.g. for
mmap).For x86_64 specifically: put the syscall number in
%rax(beware: the syscall numbers are allocated completely differently to the 32-bit ones), up to 6 arguments in%rdi,%rsi,%rdx,%r10,%r8and%r9(which is almost, but not quite, the same as the usual ABI for parameter passing in registers - note use of%r10instead of%rcx), and use thesyscallinstruction. The result is returned in%rax, and%rcxand%r11are clobbered.x86_64 ABI information can be found at http://www.x86-64.org/documentation/abi.pdf; the Linux ABI is documented in the appendix. (And if looking around elsewhere for x86_64 ABI info, be aware that 64-bit Windows uses its own different ABI.)
I don't believe there is any requirement on the user stack frame for
syscallto work properly. In the case of being interrupted by a signal, a sane stack is obviously required for the handler; but the following experiment, which uses an alternate signal stack and deliberately trashes%rsparound thesyscall, works fine for me: