Forráskód Böngészése

Kernel: Use our toolchain's c++filt tool for the kernel map

The host's version of c++filt might not work on some operating systems,
e.g. macOS.
Gunnar Beutner 4 éve
szülő
commit
b7ca269b4d
3 módosított fájl, 4 hozzáadás és 2 törlés
  1. 1 0
      CMakeLists.txt
  2. 1 1
      Kernel/CMakeLists.txt
  3. 2 1
      Kernel/mkmap.sh

+ 1 - 0
CMakeLists.txt

@@ -175,6 +175,7 @@ else()
     set(CMAKE_STRIP ${TOOLCHAIN_PREFIX}strip)
     set(CMAKE_AR ${TOOLCHAIN_PREFIX}gcc-ar)
     set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
+    set(CMAKE_CXXFILT ${TOOLCHAIN_PREFIX}c++filt)
 endif()
 
 foreach(lang ASM C CXX OBJC OBJCXX)

+ 1 - 1
Kernel/CMakeLists.txt

@@ -451,7 +451,7 @@ add_dependencies(Kernel kernel_heap)
 
 add_custom_command(
     TARGET Kernel POST_BUILD
-    COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/mkmap.sh
+    COMMAND ${CMAKE_COMMAND} -E env CXXFILT=${CMAKE_CXXFILT} sh ${CMAKE_CURRENT_SOURCE_DIR}/mkmap.sh
     COMMAND ${CMAKE_COMMAND} -E env OBJCOPY=${CMAKE_OBJCOPY} sh ${CMAKE_CURRENT_SOURCE_DIR}/embedmap.sh
     COMMAND ${CMAKE_OBJCOPY} --only-keep-debug Kernel Kernel.debug
     COMMAND ${CMAKE_OBJCOPY} --strip-debug Kernel

+ 2 - 1
Kernel/mkmap.sh

@@ -2,5 +2,6 @@
 tmp=$(mktemp)
 nm -n Kernel | grep -vE \\.Lubsan_data | awk '{ if ($2 != "a") print; }' | uniq > "$tmp"
 printf "%08x\n" "$(wc -l "$tmp" | awk '{print $1}')" > kernel.map
-c++filt < "$tmp" >> kernel.map
+CXXFILT="${CXXFILT:-c++filt}"
+"$CXXFILT" < "$tmp" >> kernel.map
 rm -f "$tmp"