News:

When registered with our forums, feel free to send a "here I am" post here to differ human beings from SPAM bots.

Main Menu

In troubles trying to display the resulting assembly

Started by Elena, November 17, 2022, 01:27:45 PM

Previous topic - Next topic

Elena

Hi, as a premise I am not expert with GCC technical details, I am using CB with MinGW to develop on Windows.
Often I need to have a look at the resulting assembly but I am having a hard time achieving such a simple task.
Googling around, I noticed I must use the -S option for gcc not to assemble and link the project sources but to rather generate an intermediate assembly file one can inspect.

Unfortunately if I add the "-S" option in the list of Other Compiler options (where all my other options reside and work fine, like -mfma for example) on building I get the following error:

||=== Build: Release in Workbench (compiler: MINGW_x64) ===|
d:\mingw64\bin\..\lib\gcc\x86_64-w64-mingw32\12.1.0\..\..\..\..\x86_64-w64-mingw32\bin\ld.exe:obj\Release\ED_Shared\FastMath32.o|1|syntax error|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 4 warning(s) (0 minute(s), 0 second(s)) ===|



here is the build log:


-------------- Build: Release in Workbench (compiler: MINGW_x64)---------------

g++.exe -Wall -std=c++17 -m64 -O3 -mfma -S -ID:\mingw64 -c E:\SE_SDK\_Workbench\main.cpp -o obj\Release\_Workbench\main.o

g++.exe  -o Workbench.exe obj\Release\ED_Shared\FastMath32.o obj\Release\_Workbench\main.o  -static-libstdc++ -static-libgcc -static -m64 -s  ..\ESD_SDK\libESDToolKit.a -liphlpapi -lgdi32

d:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:obj\Release\ED_Shared\FastMath32.o: file format not recognized; treating as linker script

d:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:obj\Release\ED_Shared\FastMath32.o:1: syntax error

collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
2 error(s), 4 warning(s) (0 minute(s), 0 second(s))


What should I do from within C::B to have the resulting assembly file(s) to inspect, without having to issue gcc commands manually in a shell ? Thanks in advance for any relevant support !


Miguel Gimenez

The compiler saves the generated assembly in main.o, and the linker tries to interpret it as an object file. See the first answer here for more information.

Elena

Geez! I could never have figured out it saved the asm as main.o and not main.s  :o :o I will check the link thx

jordi

Try to use -save-temps option which will leave all the temporary files including the .s file

Elena

Thank you ALOT Jordi, the -save-temps option does *exactly* what I needed, wow  :D :D :D :D :D :D