Skip to content

Commit 496cb0f

Browse files
masz-nordicdanieldegrasse
authored andcommitted
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>
1 parent a1ef239 commit 496cb0f

File tree

8 files changed

+24
-2
lines changed

8 files changed

+24
-2
lines changed

CMakeLists.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1909,11 +1909,14 @@ if(CONFIG_BUILD_OUTPUT_S19)
19091909
endif()
19101910

19111911
if(CONFIG_OUTPUT_DISASSEMBLY)
1912-
if(CONFIG_OUTPUT_DISASSEMBLE_ALL)
1912+
if(CONFIG_OUTPUT_DISASSEMBLE_ALL)
19131913
set(disassembly_type "$<TARGET_PROPERTY:bintools,disassembly_flag_all>")
1914-
elseif (CONFIG_OUTPUT_DISASSEMBLY_WITH_SOURCE)
1914+
elseif(CONFIG_OUTPUT_DISASSEMBLY_WITH_SOURCE)
19151915
set(disassembly_type "$<TARGET_PROPERTY:bintools,disassembly_flag_inline_source>")
19161916
endif()
1917+
if(CONFIG_OUTPUT_DISASSEMBLY_NO_ALIASES)
1918+
list(APPEND disassembly_type "$<TARGET_PROPERTY:bintools,disassembly_flag_no_aliases>")
1919+
endif()
19171920
list(APPEND
19181921
post_build_commands
19191922
COMMAND $<TARGET_PROPERTY:bintools,disassembly_command>

Kconfig.zephyr

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,13 @@ config OUTPUT_DISASSEMBLY_WITH_SOURCE
697697
the .lst file that can vary across platforms because
698698
of reasons such as having ".." include paths.
699699

700+
config OUTPUT_DISASSEMBLY_NO_ALIASES
701+
bool "Disassemble with raw instruction mnemonics"
702+
depends on OUTPUT_DISASSEMBLY
703+
help
704+
The .lst file will contain raw instruction mnemonic instead of
705+
pseudo instructions.
706+
700707
config OUTPUT_PRINT_MEMORY_USAGE
701708
bool "Print memory usage to stdout"
702709
default y

cmake/bintools/arcmwdt/target_bintools.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,15 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "-DOUTFILE=")
4747
# disassembly_flag : -T
4848
# disassembly_flag_final : empty
4949
# disassembly_flag_inline_source : -S
50+
# disassembly_flag_no_aliases : empty
5051
# disassembly_flag_all : empty
5152
# disassembly_flag_infile : empty
5253
# disassembly_flag_outfile : '>'
5354
set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_OBJDUMP})
5455
set_property(TARGET bintools PROPERTY disassembly_flag -T)
5556
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
5657
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source -S)
58+
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
5759
set_property(TARGET bintools PROPERTY disassembly_flag_all "") # No support for all ?
5860

5961
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

cmake/bintools/armclang/target_bintools.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "-DOUTFILE=")
3838
# disassembly_flag : --disassemble
3939
# disassembly_flag_final : empty
4040
# disassembly_flag_inline_source : --interleave=source
41+
# disassembly_flag_no_aliases : empty
4142
# disassembly_flag_all : empty, fromelf does not differentiate on this.
4243
# disassembly_flag_infile : empty, fromelf doesn't take arguments for filenames
4344
# disassembly_flag_outfile : --output
@@ -46,6 +47,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_FROMELF})
4647
set_property(TARGET bintools PROPERTY disassembly_flag --disassemble)
4748
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
4849
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source --interleave=source)
50+
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
4951
set_property(TARGET bintools PROPERTY disassembly_flag_all "")
5052

5153
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

cmake/bintools/bintools_template.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
# disassembly_flag : Flags that must always be applied when calling disassembly command
8787
# disassembly_flag_final : Flags that must always be applied last at the disassembly command
8888
# disassembly_flag_inline_source : Flag to use to display source code mixed with disassembly
89+
# disassembly_flag_no_aliases : Flag to use to disassemble with raw instruction mnemonics
8990
# disassembly_flag_all : Flag to use for disassemble everything, including zeroes
9091
# disassembly_flag_infile : Flag for specifying the input file
9192
# disassembly_flag_outfile : Flag for specifying the output file
@@ -135,6 +136,7 @@ set_property(TARGET bintools PROPERTY disassembly_command ${CMAKE_COMMAND} -E ec
135136
set_property(TARGET bintools PROPERTY disassembly_flag "")
136137
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
137138
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source "")
139+
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
138140
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")
139141
set_property(TARGET bintools PROPERTY disassembly_flag_outfile "")
140142

cmake/bintools/gnu/target_bintools.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "")
6464
# disassembly_flag : -d
6565
# disassembly_flag_final : empty
6666
# disassembly_flag_inline_source : -S
67+
# disassembly_flag_no_aliases : -M no-aliases
6768
# disassembly_flag_all : -SDz
6869
# disassembly_flag_infile : empty, objdump doesn't take arguments for filenames
6970
# 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})
7273
set_property(TARGET bintools PROPERTY disassembly_flag -d)
7374
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
7475
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source -S)
76+
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases -M no-aliases)
7577
set_property(TARGET bintools PROPERTY disassembly_flag_all -SDz)
7678

7779
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

cmake/bintools/iar/target_bintools.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "")
6161
# disassembly_flag : -d
6262
# disassembly_flag_final : empty
6363
# disassembly_flag_inline_source : -S
64+
# disassembly_flag_no_aliases : empty
6465
# disassembly_flag_all : -SDz
6566
# disassembly_flag_infile : empty, objdump doesn't take arguments for filenames
6667
# 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})
6970
set_property(TARGET bintools PROPERTY disassembly_flag -d)
7071
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
7172
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source -S)
73+
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
7274
set_property(TARGET bintools PROPERTY disassembly_flag_all -SDz)
7375

7476
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

cmake/bintools/llvm/target_bintools.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ set_property(TARGET bintools PROPERTY elfconvert_flag_outfile "")
6161
# disassembly_flag : -d
6262
# disassembly_flag_final : empty
6363
# disassembly_flag_inline_source : -S
64+
# disassembly_flag_no_aliases : empty
6465
# disassembly_flag_all : -SDz
6566
# disassembly_flag_infile : empty, objdump doesn't take arguments for filenames
6667
# 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})
6970
set_property(TARGET bintools PROPERTY disassembly_flag -d)
7071
set_property(TARGET bintools PROPERTY disassembly_flag_final "")
7172
set_property(TARGET bintools PROPERTY disassembly_flag_inline_source "")
73+
set_property(TARGET bintools PROPERTY disassembly_flag_no_aliases "")
7274
set_property(TARGET bintools PROPERTY disassembly_flag_all "")
7375

7476
set_property(TARGET bintools PROPERTY disassembly_flag_infile "")

0 commit comments

Comments
 (0)