#include <asm/types.h> #include <asm/page.h> /* Core file format: The core file is written in such a way that gdb canunderstanditandprovideusefulinformationtotheuser. Therearequiteanumberofobstaclestobeingabletoviewthe contentsofthefloatingpointregisters,anduntiltheseare solvedyouwillnotbeabletoviewthecontentsofthem. Actually,youcanreadinthecorefileandlookatthecontentsof theuserstructtofindoutwhatthefloatingpointregisters contain.
Theactualfilecontentsareasfollows: UPAGE:1pageconsistingofauserstructthattellsgdbwhatispresent inthefile.Directlyafterthisisacopyofthetask_struct,which iscurrentlynotusedbygdb,butitmaycomeinusefulatsomepoint. Alloftheregistersarestoredaspartoftheupage.Theupageshould alwaysbeonlyonepage. DATA:Thedataareaisstored.Weusecurrent->end_textto current->brktopickupalloftheuservariables,plusanymemory thatmayhavebeenmalloced.Noattemptismadetodetermineifapage isdemand-zeroorifapageistotallyunused,wejustcovertheentire range.Alloftheaddressesareroundedinsuchawaythatanintegral numberofpagesiswritten. STACK:Weneedthestackinformationinordertogetameaningful backtrace.Weneedtowritethedatafrom(esp)to current->start_stack,soweroundeachoftheseoffinordertobeable towriteanintegernumberofpages.
The minimum core file size is 3 pages, or 12288 bytes. */
/* This matches the 64bit FXSAVE format as defined by AMD. It is the same asthe32bitformatdefinedbyIntel,exceptthattheselector:offsetpairs
for data and eip are replaced with flat 64bit pointers. */ struct user_i387_struct { unsignedshort cwd; unsignedshort swd; unsignedshort twd; /* Note this is not the same as
the 32bit/x87/FSAVE twd */ unsignedshort fop;
__u64 rip;
__u64 rdp;
__u32 mxcsr;
__u32 mxcsr_mask;
__u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
__u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 256 bytes */
__u32 padding[24];
};
/* When the kernel dumps core, it starts by dumping the user struct - thiswillbeusedbygdbtofigureoutwherethedataandstacksegments
are within the file, and what virtual addresses to use. */
struct user { /* We start with the registers, to mimic the way that "memory" is returned
from the ptrace(3,...) function. */ struct user_regs_struct regs; /* Where the registers are actually stored */ /* ptrace does not yet supply these. Someday.... */ int u_fpvalid; /* True if math co-processor being used. */ /* for this mess. Not yet used. */ int pad0; struct user_i387_struct i387; /* Math Co-processor registers. */ /* The rest of this junk is to help gdb figure out what goes where */ unsignedlongint u_tsize; /* Text segment size (pages). */ unsignedlongint u_dsize; /* Data segment size (pages). */ unsignedlongint u_ssize; /* Stack segment size (pages). */ unsignedlong start_code; /* Starting virtual address of text. */ unsignedlong start_stack; /* Starting virtual address of stack area. Thisisactuallythebottomofthestack, thetopofthestackisalwaysfoundinthe
esp register. */ longint signal; /* Signal that caused the core dump. */ int reserved; /* No longer used */ int pad1; unsignedlong u_ar0; /* Used by gdb to help find the values for */ /* the registers. */ struct user_i387_struct *u_fpstate; /* Math Co-processor pointer. */ unsignedlong magic; /* To uniquely identify a core file */ char u_comm[32]; /* User command that was responsible */ unsignedlong u_debugreg[8]; unsignedlong error_code; /* CPU error code or 0 */ unsignedlong fault_address; /* CR3 or 0 */
};
#endif/* _ASM_X86_USER_64_H */
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-10-01)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.