mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 10:07:44 +00:00
Kernel: Make dump_backtrace_impl() take base pointer as a FlatPtr
Since FlatPtr is register width agnostic. :^)
This commit is contained in:
parent
4177953530
commit
7379c589c7
1 changed files with 5 additions and 5 deletions
|
@ -115,7 +115,7 @@ static void load_kernel_sybols_from_data(const ByteBuffer& buffer)
|
||||||
g_kernel_symbols_available = true;
|
g_kernel_symbols_available = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
NEVER_INLINE void dump_backtrace_impl(u32 ebp, bool use_ksyms)
|
NEVER_INLINE void dump_backtrace_impl(FlatPtr base_pointer, bool use_ksyms)
|
||||||
{
|
{
|
||||||
SmapDisabler disabler;
|
SmapDisabler disabler;
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -141,14 +141,14 @@ NEVER_INLINE void dump_backtrace_impl(u32 ebp, bool use_ksyms)
|
||||||
RecognizedSymbol recognized_symbols[max_recognized_symbol_count];
|
RecognizedSymbol recognized_symbols[max_recognized_symbol_count];
|
||||||
size_t recognized_symbol_count = 0;
|
size_t recognized_symbol_count = 0;
|
||||||
if (use_ksyms) {
|
if (use_ksyms) {
|
||||||
for (FlatPtr* stack_ptr = (FlatPtr*)ebp;
|
for (FlatPtr* stack_ptr = (FlatPtr*)base_pointer;
|
||||||
(Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1) && recognized_symbol_count < max_recognized_symbol_count; stack_ptr = (u32*)*stack_ptr) {
|
(Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1) && recognized_symbol_count < max_recognized_symbol_count; stack_ptr = (FlatPtr*)*stack_ptr) {
|
||||||
FlatPtr retaddr = stack_ptr[1];
|
FlatPtr retaddr = stack_ptr[1];
|
||||||
recognized_symbols[recognized_symbol_count++] = { retaddr, symbolicate_kernel_address(retaddr) };
|
recognized_symbols[recognized_symbol_count++] = { retaddr, symbolicate_kernel_address(retaddr) };
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (FlatPtr* stack_ptr = (FlatPtr*)ebp;
|
for (FlatPtr* stack_ptr = (FlatPtr*)base_pointer;
|
||||||
(Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1); stack_ptr = (u32*)*stack_ptr) {
|
(Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1); stack_ptr = (FlatPtr*)*stack_ptr) {
|
||||||
FlatPtr retaddr = stack_ptr[1];
|
FlatPtr retaddr = stack_ptr[1];
|
||||||
dbg() << String::format("%x", retaddr) << " (next: " << String::format("%x", (stack_ptr ? (u32*)*stack_ptr : 0)) << ")";
|
dbg() << String::format("%x", retaddr) << " (next: " << String::format("%x", (stack_ptr ? (u32*)*stack_ptr : 0)) << ")";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue