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\
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.
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:
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...
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang