libclues
Linux C++ Tracing Library
Loading...
Searching...
No Matches
clues::RegisterDataX86_64_T< SYSCALLNR > Struct Template Reference

Native register data for the X86_64 and X32 ABIs. More...

#include <x86_64.hxx>

+ Inheritance diagram for clues::RegisterDataX86_64_T< SYSCALLNR >:

Public Member Functions

auto syscallRes () const
 
SYSCALLNR syscallNr () const
 
SystemCallPars syscallPars () const
 
void clear ()
 
auto array () const
 

Static Public Member Functions

static auto registerNames ()
 

Public Attributes

register_t r15
 
register_t r14
 
register_t r13
 
register_t r12
 
register_t rbp
 
register_t rbx
 
register_t r11
 
register_t r10
 
register_t r9
 
register_t r8
 
register_t rax
 
register_t rcx
 
register_t rdx
 
register_t rsi
 
register_t rdi
 
register_t orig_rax
 
register_t rip
 
register_t cs
 
register_t flags
 
register_t rsp
 
register_t ss
 
register_t fs_base
 
register_t gs_base
 
register_t ds
 
register_t es
 
register_t fs
 
register_t gs
 

Static Public Attributes

static constexpr auto NUM_REGS = 27
 
- Static Public Attributes inherited from clues::RegisterData< uint64_t, 6 >
static constexpr auto NUM_SYSCALL_PARS
 

Additional Inherited Members

- Public Types inherited from clues::RegisterData< uint64_t, 6 >
using register_t
 
using SystemCallPars
 This type is used to return the values of all system call parameter values in order of occurrence.
 

Detailed Description

template<typename SYSCALLNR>
struct clues::RegisterDataX86_64_T< SYSCALLNR >

Native register data for the X86_64 and X32 ABIs.

The register set is the same for both ABIs, but the system call numbers differ. Hence this is templated.

Definition at line 16 of file x86_64.hxx.

Member Function Documentation

◆ array()

template<typename SYSCALLNR>
auto clues::RegisterDataX86_64_T< SYSCALLNR >::array ( ) const
inline

Definition at line 51 of file x86_64.hxx.

51 {
53 r15, r14, r13, r12, rbp, rbx, r11,
54 r10, r9, r8, rax, rcx, rdx, rsi,
55 orig_rax, rip, cs, flags, rsp, ss,
56 fs_base, gs_base, ds, es, fs, gs
57 });
58 }
Native register data for the X86_64 and X32 ABIs.
Definition x86_64.hxx:17

◆ clear()

template<typename SYSCALLNR>
void clues::RegisterDataX86_64_T< SYSCALLNR >::clear ( )
inline

Definition at line 38 of file x86_64.hxx.

38 {
40 }

◆ registerNames()

template<typename SYSCALLNR>
static auto clues::RegisterDataX86_64_T< SYSCALLNR >::registerNames ( )
inlinestatic

Definition at line 42 of file x86_64.hxx.

42 {
44 "r15", "r14", "r13", "r12", "rbp", "rbx", "r11",
45 "r10", "r9", "r8", "rax", "rcx", "rdx", "rsi",
46 "orig_rax", "rip", "cs", "flags", "rsp", "ss",
47 "fs_base", "gs_base", "ds", "es", "fs", "gs"
48 });
49 }

◆ syscallNr()

template<typename SYSCALLNR>
SYSCALLNR clues::RegisterDataX86_64_T< SYSCALLNR >::syscallNr ( ) const
inline

Definition at line 28 of file x86_64.hxx.

28 {
29 return SYSCALLNR{orig_rax};
30 }

◆ syscallPars()

template<typename SYSCALLNR>
SystemCallPars clues::RegisterDataX86_64_T< SYSCALLNR >::syscallPars ( ) const
inline

Definition at line 32 of file x86_64.hxx.

32 {
33 return SystemCallPars{
34 rdi, rsi, rdx, r10, r8, r9
35 };
36 }
std::array< register_t, NUM_SYSCALL_PARS > SystemCallPars

◆ syscallRes()

template<typename SYSCALLNR>
auto clues::RegisterDataX86_64_T< SYSCALLNR >::syscallRes ( ) const
inline

Definition at line 24 of file x86_64.hxx.

24 {
25 return rax;
26 }

Member Data Documentation

◆ cs

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::cs

Definition at line 79 of file x86_64.hxx.

◆ ds

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::ds

Definition at line 85 of file x86_64.hxx.

◆ es

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::es

Definition at line 86 of file x86_64.hxx.

◆ flags

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::flags

Definition at line 80 of file x86_64.hxx.

◆ fs

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::fs

Definition at line 87 of file x86_64.hxx.

◆ fs_base

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::fs_base

Definition at line 83 of file x86_64.hxx.

◆ gs

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::gs

Definition at line 88 of file x86_64.hxx.

◆ gs_base

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::gs_base

Definition at line 84 of file x86_64.hxx.

◆ NUM_REGS

template<typename SYSCALLNR>
auto clues::RegisterDataX86_64_T< SYSCALLNR >::NUM_REGS = 27
staticconstexpr

Definition at line 20 of file x86_64.hxx.

◆ orig_rax

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::orig_rax

Definition at line 77 of file x86_64.hxx.

◆ r10

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::r10

Definition at line 69 of file x86_64.hxx.

◆ r11

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::r11

Definition at line 68 of file x86_64.hxx.

◆ r12

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::r12

Definition at line 65 of file x86_64.hxx.

◆ r13

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::r13

Definition at line 64 of file x86_64.hxx.

◆ r14

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::r14

Definition at line 63 of file x86_64.hxx.

◆ r15

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::r15

Definition at line 62 of file x86_64.hxx.

◆ r8

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::r8

Definition at line 71 of file x86_64.hxx.

◆ r9

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::r9

Definition at line 70 of file x86_64.hxx.

◆ rax

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::rax

Definition at line 72 of file x86_64.hxx.

◆ rbp

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::rbp

Definition at line 66 of file x86_64.hxx.

◆ rbx

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::rbx

Definition at line 67 of file x86_64.hxx.

◆ rcx

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::rcx

Definition at line 73 of file x86_64.hxx.

◆ rdi

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::rdi

Definition at line 76 of file x86_64.hxx.

◆ rdx

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::rdx

Definition at line 74 of file x86_64.hxx.

◆ rip

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::rip

Definition at line 78 of file x86_64.hxx.

◆ rsi

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::rsi

Definition at line 75 of file x86_64.hxx.

◆ rsp

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::rsp

Definition at line 81 of file x86_64.hxx.

◆ ss

template<typename SYSCALLNR>
register_t clues::RegisterDataX86_64_T< SYSCALLNR >::ss

Definition at line 82 of file x86_64.hxx.


The documentation for this struct was generated from the following file: