cmake: Assembly listing containing all sections
Added support for creating an assembly listing containing all sections like rodata, data and debug sections, not just those expected to contain instructions. Signed-off-by: Rohit Gujarathi <gujju.rohit@gmail.com>
This commit is contained in:
parent
f93924c689
commit
35713f2ef6
3 changed files with 18 additions and 2 deletions
|
@ -1214,10 +1214,15 @@ endif()
|
||||||
if(CONFIG_OUTPUT_DISASSEMBLY)
|
if(CONFIG_OUTPUT_DISASSEMBLY)
|
||||||
set(out_disassembly_cmd "")
|
set(out_disassembly_cmd "")
|
||||||
set(out_disassembly_byprod "")
|
set(out_disassembly_byprod "")
|
||||||
|
if(CONFIG_OUTPUT_DISASSEMBLE_ALL)
|
||||||
|
set(disassembly_type DISASSEMBLE_ALL)
|
||||||
|
else()
|
||||||
|
set(disassembly_type DISASSEMBLE_SOURCE)
|
||||||
|
endif()
|
||||||
bintools_objdump(
|
bintools_objdump(
|
||||||
RESULT_CMD_LIST out_disassembly_cmd
|
RESULT_CMD_LIST out_disassembly_cmd
|
||||||
RESULT_BYPROD_LIST out_disassembly_byprod
|
RESULT_BYPROD_LIST out_disassembly_byprod
|
||||||
DISASSEMBLE_SOURCE
|
${disassembly_type}
|
||||||
FILE_INPUT ${KERNEL_ELF_NAME}
|
FILE_INPUT ${KERNEL_ELF_NAME}
|
||||||
FILE_OUTPUT ${KERNEL_LST_NAME}
|
FILE_OUTPUT ${KERNEL_LST_NAME}
|
||||||
)
|
)
|
||||||
|
|
|
@ -288,6 +288,14 @@ config OUTPUT_DISASSEMBLY
|
||||||
help
|
help
|
||||||
Create an .lst file with the assembly listing of the firmware.
|
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
|
config OUTPUT_PRINT_MEMORY_USAGE
|
||||||
bool "Print memory usage to stdout"
|
bool "Print memory usage to stdout"
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#
|
#
|
||||||
# DISASSEMBLE <Display the assembler mnemonics for the machine instructions from input>
|
# DISASSEMBLE <Display the assembler mnemonics for the machine instructions from input>
|
||||||
# DISASSEMBLE_SOURCE < Display source code intermixed with disassembly, if possible>
|
# DISASSEMBLE_SOURCE < Display source code intermixed with disassembly, if possible>
|
||||||
|
# DISASSEMBLE_ALL <Display disassembly of all sections not just the instruction sections>
|
||||||
#
|
#
|
||||||
# FILE_INPUT <The input file>
|
# FILE_INPUT <The input file>
|
||||||
# FILE_OUTPUT <The output file>
|
# FILE_OUTPUT <The output file>
|
||||||
|
@ -19,7 +20,7 @@ function(bintools_objdump)
|
||||||
# Prefix of output variables
|
# Prefix of output variables
|
||||||
BINTOOLS_OBJDUMP
|
BINTOOLS_OBJDUMP
|
||||||
# List of argument names without values, hence boolean
|
# List of argument names without values, hence boolean
|
||||||
"DISASSEMBLE;DISASSEMBLE_SOURCE"
|
"DISASSEMBLE;DISASSEMBLE_SOURCE;DISASSEMBLE_ALL"
|
||||||
# List of argument names with one value
|
# List of argument names with one value
|
||||||
"RESULT_CMD_LIST;RESULT_BYPROD_LIST;FILE_INPUT;FILE_OUTPUT"
|
"RESULT_CMD_LIST;RESULT_BYPROD_LIST;FILE_INPUT;FILE_OUTPUT"
|
||||||
# List of argument names with multible values
|
# List of argument names with multible values
|
||||||
|
@ -41,6 +42,8 @@ function(bintools_objdump)
|
||||||
set(obj_dump_disassemble "-S") # --source
|
set(obj_dump_disassemble "-S") # --source
|
||||||
elseif(${BINTOOLS_OBJDUMP_DISASSEMBLE})
|
elseif(${BINTOOLS_OBJDUMP_DISASSEMBLE})
|
||||||
set(obj_dump_disassemble "-d") # --disassemble
|
set(obj_dump_disassemble "-d") # --disassemble
|
||||||
|
elseif(${BINTOOLS_OBJDUMP_DISASSEMBLE_ALL})
|
||||||
|
set(obj_dump_disassemble "-SDz") # --source --disassemble-all --disassemble-zeroes
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Handle output
|
# Handle output
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue