diff --git a/CMakeLists.txt b/CMakeLists.txt index 53b0c165b3c..1228d43ce62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1214,10 +1214,15 @@ endif() if(CONFIG_OUTPUT_DISASSEMBLY) set(out_disassembly_cmd "") set(out_disassembly_byprod "") + if(CONFIG_OUTPUT_DISASSEMBLE_ALL) + set(disassembly_type DISASSEMBLE_ALL) + else() + set(disassembly_type DISASSEMBLE_SOURCE) + endif() bintools_objdump( RESULT_CMD_LIST out_disassembly_cmd RESULT_BYPROD_LIST out_disassembly_byprod - DISASSEMBLE_SOURCE + ${disassembly_type} FILE_INPUT ${KERNEL_ELF_NAME} FILE_OUTPUT ${KERNEL_LST_NAME} ) diff --git a/Kconfig.zephyr b/Kconfig.zephyr index 8e8a3d93b08..07de0c50368 100644 --- a/Kconfig.zephyr +++ b/Kconfig.zephyr @@ -288,6 +288,14 @@ config OUTPUT_DISASSEMBLY help Create an .lst file with the assembly listing of the firmware. +config OUTPUT_DISASSEMBLE_ALL + bool "Disassemble all sections with source. Fill zeros." + default n + depends on OUTPUT_DISASSEMBLY + help + The .lst file will contain complete disassembly of the firmware + not just those expected to contain instructions including zeros + config OUTPUT_PRINT_MEMORY_USAGE bool "Print memory usage to stdout" default y diff --git a/cmake/bintools/gnu/target_objdump.cmake b/cmake/bintools/gnu/target_objdump.cmake index a1d5aebca9f..f223958fd3e 100644 --- a/cmake/bintools/gnu/target_objdump.cmake +++ b/cmake/bintools/gnu/target_objdump.cmake @@ -10,6 +10,7 @@ # # DISASSEMBLE # DISASSEMBLE_SOURCE < Display source code intermixed with disassembly, if possible> +# DISASSEMBLE_ALL # # FILE_INPUT # FILE_OUTPUT @@ -19,7 +20,7 @@ function(bintools_objdump) # Prefix of output variables BINTOOLS_OBJDUMP # List of argument names without values, hence boolean - "DISASSEMBLE;DISASSEMBLE_SOURCE" + "DISASSEMBLE;DISASSEMBLE_SOURCE;DISASSEMBLE_ALL" # List of argument names with one value "RESULT_CMD_LIST;RESULT_BYPROD_LIST;FILE_INPUT;FILE_OUTPUT" # List of argument names with multible values @@ -41,6 +42,8 @@ function(bintools_objdump) set(obj_dump_disassemble "-S") # --source elseif(${BINTOOLS_OBJDUMP_DISASSEMBLE}) set(obj_dump_disassemble "-d") # --disassemble + elseif(${BINTOOLS_OBJDUMP_DISASSEMBLE_ALL}) + set(obj_dump_disassemble "-SDz") # --source --disassemble-all --disassemble-zeroes endif() # Handle output