Hallo, weiss das zufällig jemand? Nein, nicht mit dem Parameter -S unter den "Other compiler options", das erzeugt nur Fehlermeldungen. Im Netz ist auch nichts zu finden, außer dass mehrere das Problem schon hatten. Im obj Ordner sind zwar .s Files aber da drin steht nur .ascii .... und das seitenweise. Gruss, Christian Seltsame Ausgabe.... .ascii "\243\331\200n1\276\225\240)E\267\014\337\312\321lDw" .ascii "\023\232\012t7\243\331\202n%\232\255\350V\241\331\206" .ascii "n5\232\000\272\333\321\324\240\033DS\213n\035\276\355" .ascii "@S\217n\003\232Ft\233\3204\243\273\023\315.t[\320\354" .ascii "Fw\017\276\355%\3526\020\211\364\312\362@\2119\340\352" .ascii "\346\300\263_\265\255\370\327\273x\233\334\030\377e" .ascii "f\341\216\324F\377\204\037hZw\3349u\343\260\365\353" .ascii "\034\326t!\266\251{\374\024\374\271-j\255\207(\305&" .ascii "\"\017\367\3116\255\271\211\265\010q-7\336d-b\025\271" .ascii "(\367ve\302\230g\310i\350eg\275\325\347\035\312\362" .ascii "\3466\351\271f\314d\003!v\022e6\340\313Z\223\305h4q" .ascii "\264CTO\312V\014\224\210\013\031\237\017\2377\206\227" .ascii "\270\270vu\002j\036_\342\320N\364\214\371\230\314\001" .ascii "J\235\327\251\215xk\326a\016*t\321\252\247\347\303U" .ascii "L\345\324\366B\035\255\317\200sA\203\272\0074f\345Z" .ascii "_h\326\306\231\233\017\007\230\302\3156\177\212\374" .ascii "\370G\227\303\250V\211\314g\263\025\343\"\252t\271\254" .ascii "\227\207AL\221\336\277\272\216\031\325\
Irgendwo hier vermute ich muss was geändert werden....
Hallo, das sind schon die richtigen Files, aber es sieht so aus, als ob du -flto aktiviert hättest. Also entweder das abschalten, oder, was immer geht, ein komplettes Disassembly erstellen: objdump -d [-S] inputfile > outputfile.lss Mit freundlichen Grüßen, N.G.
Ok, un wo trägt man das ein? Das soll ja automatisch passieren...... und aktiviert habe ich nichts, das macht ja die IDE,. diesen String zusammen setzen.
Heinz V. schrieb: > "Dont delete intermediate Files" Nein das ist es leider nicht allein.... das habe ich schon.
Christian J. schrieb: > Ok, > > un wo trägt man das ein? Das soll ja automatisch passieren...... und > aktiviert habe ich nichts, das macht ja die IDE,. diesen String zusammen > setzen. Vielleicht bei post-build steps wie schon der Name suggeriert?
1) Übersetze mit -save-temps -v 2) Suche in den Console-Ausgaben nach *.ltrans*.s 3) Suche in den ltrans, welche zur Quelle gehört. Eine 1:1 Zuirdnung gibt es nicht. -ffat-lto-objects ist NICHT was du willst, denn die s-Files enthalten dann nur Makulature. Das einzige, was -ffat-lto-objects bewirkt, ist, den Build-Vorgang zu verlangsamen :-)
... bei mir funktioniert folgendes (avr-gcc) 1) Übersetzen mit -v -save-temps 2) Ausgabe filtern nach "[Leaving LTRANS", das sind Zeilen, die z.B. so aussehen:
1 | [Leaving LTRANS /tmp/ccTUojfO.ltrans.out] |
2 | [Leaving LTRANS /tmp/ccTUojfO.ltrans0.o] |
3) Die Dateinamen der Assembler-Dumps ergeben sich aus den *.o Zeilen: Im Beispiel ist es nur ein Modul, und das Dump in ccTUojfO.ltrans0.s, d.h. ohne den führenden Pfadname. was auch geht, die Ausgabe nach Aufrufen von as zu durchsuchen, da wird dann das asm-File explizit genannt. Beispiel:
1 | /srv/local/gnu/install/gcc-7/bin/../lib/gcc/avr/7.0.1/../../../../avr/bin/as -v -mmcu=avr4 -mno-skip-bug -o /tmp/ccTUojfO.ltrans0.ltrans.o ccTUojfO.ltrans0.s |
Die asm-Datei ist also ccTUojfO.ltrans0.s. p.s. -dumpbase scheint nicht wie gewünscht zu funktionieren.
:
Bearbeitet durch User
Hallo, bitte nicht falsch verstehen aber diese Antworten enthalten alle etwas anderes, letzte Beitrag verstehe ich überhaupt nicht. "Ausgabe filtern nach..." Wie filtert man welche Ausgabe? Mit den Augen durchsuchen? Das läuft vollautomatisch ab der Compiler+Link Vorgang. Und das Manual von Embitz ist grottenschlecht, ein typisches Nerd Produkt was für Normalbenutzer nahezu unverständlich ist. Und leider ist es genauso bei vielen engl. Beiträgen. -save-temps -v bewirkt nur, dass der Kompiliervorgang mit etlichen Erros endet. Und man auch nicht nachvolziehen kann was da nicht stimmt. Ich arbeite mit dem STM32 Cortex M3. Daher bitte nur jener antworten, wer dieses Tool wirklich benutzt und den gewünschten Effekt schon erreicht hat. Vielleicht mit einem Screenshot dabei wo was eingetragen wird. Es gibt unendlich viele Dialogfenster, die teilweise tief geschachtelt sind.
Christian J. schrieb: > letzte Beitrag verstehe ich überhaupt nicht. Ist aber das, was du brauchst, um an die Assembler-Ausgabe von GCC ranzukommen. Das Problem ist, dass der Compiliervorgang mit LTO deutlich komplizierter ist als ein "normaler", also nicht-LTO-compile. Das erste Compile enthält nur Bytecode, der hier nicht wirklich hilfreich ist. Bytecode ist das, was du in deinem 1. Beitrag gepostet hast. > "Ausgabe filtern nach..." > > Wie filtert man welche Ausgabe? Kommt auf deine Umgebung an. Ich kann dir Hilfestellung für die Tools (Compiler, Linker, etc.) geben. aber wenn das ... > Daher bitte nur jener antworten, wer dieses Tool wirklich benutzt ...nicht gewünscht ist, dann gerne :-)
Johann, Du hast sicher ne Menge Ahnung, viel mehr als ich :-) Aber ich weiss weder was LTO ist noch bin ich mit den Interna eines Compilers + Linkers vertraut. Typischer Anwender. Ich überlasse das einfach der IDE und dass die mein Projekt richtig verarbeitet, genau wie die Jungs nebenan in der Entwicklung, die Keil verwenden und dafür viel Geld ausgeben. Bisher ganz gut damit gefahren seit ca 20 Jahren, auch ohne zu wissen wie ein make File funktioniert, maximal ein Linker Script verstehe ich, bzw kann es anpassen. Im cmd fenster von Windows lässt sich aus dem .o File mit objdump auch ein Asm File erzeugen, wenn man es manuell macht. Falls die Dateien als zb typische Linux Temp Namen haben fällt die Chose flach. Mir fehlt der Nerv dazu diese Schritte nach jedem Komplilat zu machen. Entweder ich hole mir so ein .s File direkt in den Editor und sehe nach jedem Durchgang was bei rauskommt oder ich muss es lassen. Dass sich Embitz auch durch Scripte steuern lässt weiss ich aber da gibt es keine gescheiten Tutorials zu. So gut die IDE ist, die auf EmBlocks basiert, so schlecht ist ihre Akzeptanz wegen der grottenschlechten bzw gar nicht vorhandenen Doku.
Christian J. schrieb: > noch bin ich mit den Interna eines Compilers + Linkers > vertraut. Typischer Anwender. Als "Anwender" kommt man doch gar nicht in die Verlegenheit eine IDE zu benutzen und C zu programmieren, als Anwender wendet man fertige Produkte an! Von einem C Programmierer jedoch erwartet man daß er weiß wie man mit seinen Hauptwerkzeugen (nämlich Compiler und Linker) umgeht, was die für Optionen haben und was die bewirken. Christian J. schrieb: > Mir fehlt der Nerv dazu diese Schritte nach jedem Komplilat zu > machen. Dann trags doch einfach in die Post build steps ein, fertig.
Ich probiers :-( Hat ja bisher alles auch nicht funktioniert, da ich zb nicht mal den GCC Parameterstring kontrollieren kann. Übrigens mal bei google nach "embitz generate assembly listing" suchen. was ihr da findet ist komplett anders als alles was hier steht, auch die Parameter sind andere als hier vorgeschlagen. Daher die Riesenverwirrung.
Am einfachsten wird es für dich sein, LTO zu deaktivieren, so dass main.s wieder den Assembler Code enthält so wie du es gewohnt bist. Und nein, wie man in der komischen GUI -flto entfernt, das weiß ich auch nicht ;-)
Die einfachste Kiste ist die, beim Debuggen "Assembler View" anzuzeigen und Mixed Mode zu wählen. Irgendwie erzeugt die IDE schon intern alles ganz richtig und beim Debuggen kann man sich anschauen wie alles aussieht und hat noch den C-Text dazu. Ganz ohne Verrenkungen...
Ok, also nur ein DISassembly. Das macht's natürlich einfach...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.