Browse Source

cmake: add option to force raw instruction mnemonics

Some architectures use pseudo instructions in assembly.
Introduce an option that allows forcing raw instruction mnemonics.
Currently implemented for GNU binutils.

Signed-off-by: Marcin Szymczyk <marcin.szymczyk@nordicsemi.no>
pull/87669/merge
Marcin Szymczyk 2 weeks ago committed by Daniel DeGrasse
parent
commit
496cb0f46e
  1. 3
      CMakeLists.txt
  2. 7
      Kconfig.zephyr
  3. 2
      cmake/bintools/arcmwdt/target_bintools.cmake
  4. 2
      cmake/bintools/armclang/target_bintools.cmake
  5. 2
      cmake/bintools/bintools_template.cmake
  6. 2
      cmake/bintools/gnu/target_bintools.cmake
  7. 2
      cmake/bintools/iar/target_bintools.cmake
  8. 2
      cmake/bintools/llvm/target_bintools.cmake

3
CMakeLists.txt

@ -1914,6 +1914,9 @@ if(CONFIG_OUTPUT_DISASSEMBLE_ALL) @@ -1914,6 +1914,9 @@ if(CONFIG_OUTPUT_DISASSEMBLE_ALL)
elseif(CONFIG_OUTPUT_DISASSEMBLY_WITH_SOURCE)
set(disassembly_type "$<TARGET_PROPERTY:bintools,disassembly_flag_inline_source>")
endif()
if(CONFIG_OUTPUT_DISASSEMBLY_NO_ALIASES)
list(APPEND disassembly_type "$<TARGET_PROPERTY:bintools,disassembly_flag_no_aliases>")
endif()
list(APPEND
post_build_commands
COMMAND $<TARGET_PROPERTY:bintools,disassembly_command>

7
Kconfig.zephyr

@ -697,6 +697,13 @@ config OUTPUT_DISASSEMBLY_WITH_SOURCE @@ -697,6 +697,13 @@ config OUTPUT_DISASSEMBLY_WITH_SOURCE
the .lst file that can vary across platforms because
of reasons such as having ".." include paths.
config OUTPUT_DISASSEMBLY_NO_ALIASES
bool "Disassemble with raw instruction mnemonics"
depends on OUTPUT_DISASSEMBLY
help
The .lst file will contain raw instruction mnemonic instead of
pseudo instructions.
config OUTPUT_PRINT_MEMORY_USAGE
bool "Print memory usage to stdout"
default y

2
cmake/bintools/arcmwdt/target_bintools.cmake

@ -47,6 +47,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "-DOUTFILE=") @@ -47,6 +47,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "-DOUTFILE=")
# disassembly_flag : -T
# disassembly_flag_final : empty
# disassembly_flag_inline_source : -S
# disassembly_flag_no_aliases : empty
# disassembly_flag_all : empty
# disassembly_flag_infile : empty
# disassembly_flag_outfile : '>'
@ -54,6 +55,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_OBJDUMP}) @@ -54,6 +55,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_OBJDUMP})
set_property(TARGET bintools PROPERTY disassembly_flag -T)
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source -S)
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
set_property(TARGET bintools PROPERTY disassembly_flag_all "") # No support for all ?
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

2
cmake/bintools/armclang/target_bintools.cmake

@ -38,6 +38,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "-DOUTFILE=") @@ -38,6 +38,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "-DOUTFILE=")
# disassembly_flag : --disassemble
# disassembly_flag_final : empty
# disassembly_flag_inline_source : --interleave=source
# disassembly_flag_no_aliases : empty
# disassembly_flag_all : empty, fromelf does not differentiate on this.
# disassembly_flag_infile : empty, fromelf doesn't take arguments for filenames
# disassembly_flag_outfile : --output
@ -46,6 +47,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_FROMELF}) @@ -46,6 +47,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_FROMELF})
set_property(TARGET bintools PROPERTY disassembly_flag --disassemble)
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source --interleave=source)
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
set_property(TARGET bintools PROPERTY disassembly_flag_all "")
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

2
cmake/bintools/bintools_template.cmake

@ -86,6 +86,7 @@ @@ -86,6 +86,7 @@
# disassembly_flag : Flags that must always be applied when calling disassembly command
# disassembly_flag_final : Flags that must always be applied last at the disassembly command
# disassembly_flag_inline_source : Flag to use to display source code mixed with disassembly
# disassembly_flag_no_aliases : Flag to use to disassemble with raw instruction mnemonics
# disassembly_flag_all : Flag to use for disassemble everything, including zeroes
# disassembly_flag_infile : Flag for specifying the input file
# disassembly_flag_outfile : Flag for specifying the output file
@ -135,6 +136,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_COMMAND} -E ec @@ -135,6 +136,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_COMMAND} -E ec
set_property(TARGET bintools PROPERTY disassembly_flag "")
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source "")
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")
set_property(TARGET bintools PROPERTY disassembly_flag_outfile "")

2
cmake/bintools/gnu/target_bintools.cmake

@ -64,6 +64,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "") @@ -64,6 +64,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "")
# disassembly_flag : -d
# disassembly_flag_final : empty
# disassembly_flag_inline_source : -S
# disassembly_flag_no_aliases : -M no-aliases
# disassembly_flag_all : -SDz
# disassembly_flag_infile : empty, objdump doesn't take arguments for filenames
# disassembly_flag_outfile : '>', objdump doesn't take arguments for output file, but result is printed to standard out, and is redirected.
@ -72,6 +73,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_OBJDUMP}) @@ -72,6 +73,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_OBJDUMP})
set_property(TARGET bintools PROPERTY disassembly_flag -d)
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source -S)
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases -M no-aliases)
set_property(TARGET bintools PROPERTY disassembly_flag_all -SDz)
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

2
cmake/bintools/iar/target_bintools.cmake

@ -61,6 +61,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "") @@ -61,6 +61,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "")
# disassembly_flag : -d
# disassembly_flag_final : empty
# disassembly_flag_inline_source : -S
# disassembly_flag_no_aliases : empty
# disassembly_flag_all : -SDz
# disassembly_flag_infile : empty, objdump doesn't take arguments for filenames
# disassembly_flag_outfile : '>', objdump doesn't take arguments for output file, but result is printed to standard out, and is redirected.
@ -69,6 +70,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_OBJDUMP}) @@ -69,6 +70,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_OBJDUMP})
set_property(TARGET bintools PROPERTY disassembly_flag -d)
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source -S)
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
set_property(TARGET bintools PROPERTY disassembly_flag_all -SDz)
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

2
cmake/bintools/llvm/target_bintools.cmake

@ -61,6 +61,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "") @@ -61,6 +61,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "")
# disassembly_flag : -d
# disassembly_flag_final : empty
# disassembly_flag_inline_source : -S
# disassembly_flag_no_aliases : empty
# disassembly_flag_all : -SDz
# disassembly_flag_infile : empty, objdump doesn't take arguments for filenames
# disassembly_flag_outfile : '>', objdump doesn't take arguments for output file, but result is printed to standard out, and is redirected.
@ -69,6 +70,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_OBJDUMP}) @@ -69,6 +70,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_OBJDUMP})
set_property(TARGET bintools PROPERTY disassembly_flag -d)
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source "")
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
set_property(TARGET bintools PROPERTY disassembly_flag_all "")
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

Loading…
Cancel
Save