MCPcopy Create free account
hub / github.com/GJDuck/e9patch / jump

Function jump

examples/stdlib.c:5904–5943  ·  view source on GitHub ↗

* Jump to state (also restores %rip and %rsp) */

Source from the content-addressed store, hash-verified

5902 * Jump to state (also restores %rip and %rsp)
5903 */
5904static __attribute__((noreturn)) void jump(const struct STATE *state)
5905{
5906 asm volatile
5907 (
5908 /* "mov 0x00(%0),%%rflags\n" */
5909 "mov 0x08(%0),%%r15\n"
5910 "mov 0x10(%0),%%r14\n"
5911 "mov 0x18(%0),%%r13\n"
5912 "mov 0x20(%0),%%r12\n"
5913 "mov 0x28(%0),%%r11\n"
5914 "mov 0x30(%0),%%r10\n"
5915 "mov 0x38(%0),%%r9\n"
5916 "mov 0x40(%0),%%r8\n"
5917 "mov 0x48(%0),%%rdi\n"
5918 "mov 0x50(%0),%%rsi\n"
5919 "mov 0x58(%0),%%rbp\n"
5920 "mov 0x60(%0),%%rbx\n"
5921 "mov 0x68(%0),%%rdx\n"
5922 /* "mov 0x70(%0),%%rcx\n" */
5923 /* "mov 0x78(%0),%%rax\n" */
5924 "mov 0x80(%0),%%rsp\n"
5925 /* "mov 0x88(%0),%%rip\n" */
5926
5927 "mov 0x88(%0),%%rax\n"
5928 "mov %%rax,%%fs:" STRING(ERRNO_TLS_OFFSET) "\n"
5929
5930 "mov 0x00(%0),%%rax\n"
5931 "add $0x7f,%%al\n"
5932 "sahf\n"
5933
5934 "mov 0x78(%0),%%rax\n"
5935 "mov 0x70(%0),%%rcx\n"
5936
5937 "jmpq *%%fs:" STRING(ERRNO_TLS_OFFSET) "\n"
5938
5939 : "+c"(state)
5940 );
5941 while (true)
5942 asm volatile ("ud2");
5943}
5944
5945/****************************************************************************/
5946/* MISC */

Callers 1

entryFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected