diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 0a5926e33a..dabf55b931 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -413,7 +413,7 @@ if (ENABLE_KERNEL_LTO) check_ipo_supported() set_property(TARGET ${KERNEL_TARGET} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) endif() -target_link_libraries(${KERNEL_TARGET} kernel_heap gcc supc++) +target_link_libraries(${KERNEL_TARGET} kernel_heap gcc) add_dependencies(${KERNEL_TARGET} kernel_heap) add_custom_command( diff --git a/Kernel/KSyms.cpp b/Kernel/KSyms.cpp index bc9b6b8e25..3bd05a9025 100644 --- a/Kernel/KSyms.cpp +++ b/Kernel/KSyms.cpp @@ -4,7 +4,6 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include #include #include #include @@ -148,7 +147,7 @@ NEVER_INLINE static void dump_backtrace_impl(FlatPtr base_pointer, bool use_ksym if (symbol.symbol->address == g_highest_kernel_symbol_address && offset > 4096) dbgln("{:p}", symbol.address); else - dbgln("{:p} {} +0x{:x}", symbol.address, demangle(symbol.symbol->name), offset); + dbgln("{:p} {} +0x{:x}", symbol.address, symbol.symbol->name, offset); } } diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index b6de160f0d..10a2c0ee19 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -4,7 +4,6 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include #include #include #include @@ -362,7 +361,7 @@ void Process::crash(int signal, FlatPtr ip, bool out_of_memory) } else { if (ip >= KERNEL_BASE && g_kernel_symbols_available) { auto* symbol = symbolicate_kernel_address(ip); - dbgln("\033[31;1m{:p} {} +{}\033[0m\n", ip, (symbol ? demangle(symbol->name) : "(k?)"), (symbol ? ip - symbol->address : 0)); + dbgln("\033[31;1m{:p} {} +{}\033[0m\n", ip, (symbol ? symbol->name : "(k?)"), (symbol ? ip - symbol->address : 0)); } else { dbgln("\033[31;1m{:p} (?)\033[0m\n", ip); } diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index 6ed5d3e108..6853876186 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -4,7 +4,6 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include #include #include #include @@ -1051,7 +1050,7 @@ static bool symbolicate(RecognizedSymbol const& symbol, Process& process, String if (symbol.symbol->address == g_highest_kernel_symbol_address && offset > 4096) { builder.appendff("{:p}\n", (void*)(mask_kernel_addresses ? 0xdeadc0de : symbol.address)); } else { - builder.appendff("{:p} {} + 0x{:x}\n", (void*)(mask_kernel_addresses ? 0xdeadc0de : symbol.address), demangle(symbol.symbol->name), offset); + builder.appendff("{:p} {} + 0x{:x}\n", (void*)(mask_kernel_addresses ? 0xdeadc0de : symbol.address), symbol.symbol->name, offset); } return true; } diff --git a/Kernel/mkmap.sh b/Kernel/mkmap.sh index 35c112805d..e452f18ab0 100644 --- a/Kernel/mkmap.sh +++ b/Kernel/mkmap.sh @@ -7,5 +7,5 @@ else fi nm -n $kernel_binary | awk '{ if ($2 != "a") print; }' | uniq > "$tmp" printf "%08x\n" "$(wc -l "$tmp" | cut -f1 -d' ')" > kernel.map -cat "$tmp" >> kernel.map +c++filt < "$tmp" >> kernel.map rm -f "$tmp" diff --git a/Userland/Libraries/LibELF/Image.cpp b/Userland/Libraries/LibELF/Image.cpp index 393738a764..79a3a766a6 100644 --- a/Userland/Libraries/LibELF/Image.cpp +++ b/Userland/Libraries/LibELF/Image.cpp @@ -289,6 +289,7 @@ StringView Image::Symbol::raw_data() const return { section.raw_data() + (value() - section.address()), size() }; } +#ifndef KERNEL Optional Image::find_demangled_function(const StringView& name) const { Optional found; @@ -309,6 +310,7 @@ Optional Image::find_demangled_function(const StringView& name) c }); return found; } +#endif Image::SortedSymbol* Image::find_sorted_symbol(FlatPtr address) const { @@ -355,6 +357,7 @@ NEVER_INLINE void Image::sort_symbols() const }); } +#ifndef KERNEL String Image::symbolicate(u32 address, u32* out_offset) const { auto symbol_count = this->symbol_count(); @@ -381,5 +384,6 @@ String Image::symbolicate(u32 address, u32* out_offset) const } return String::formatted("{} +{:#x}", demangled_name, address - symbol->address); } +#endif } // end namespace ELF diff --git a/Userland/Libraries/LibELF/Image.h b/Userland/Libraries/LibELF/Image.h index e3ae009ec4..4d0b1c21bb 100644 --- a/Userland/Libraries/LibELF/Image.h +++ b/Userland/Libraries/LibELF/Image.h @@ -227,10 +227,11 @@ public: FlatPtr base_address() const { return (FlatPtr)m_buffer; } size_t size() const { return m_size; } - Optional find_demangled_function(const StringView& name) const; - bool has_symbols() const { return symbol_count(); } +#ifndef KERNEL + Optional find_demangled_function(const StringView& name) const; String symbolicate(u32 address, u32* offset = nullptr) const; +#endif Optional find_symbol(u32 address, u32* offset = nullptr) const; private: