Wie sieht es mit neueren Compilerversionen aus? Mittlerweise gibt es avr-gcc 5.2. Hat den schon jemand für Windows gebaut? Früher gab's ja regelmäßig mal Binaries.
Ein Buils ist da: http://sourceforge.net/projects/mobilechessboar/files/avr-gcc%20snapshots%20%28Win32%29/ * avr-gcc@gcc-5-branch/HEAD * Binutils@master * AVR-LibC@trunk Komplett ungetestet
Danke. Also ein sehr einfaches Projekt kompiliert. Ein Größeres nicht. Muss noch gucken, warum.
Ich wäre vorsichtig. Wir hatten mit verschiedenen Versionen (alle nicht "offizielle" mit dem Studio mitgelieferte) seltsame Probleme. Ich kriege es nicht mehr auf die Reihe, aber ein Kollege hat eine Woche debuggt, bis er dann wieder auf den 4.7.x zurückgegangen ist...
Dominik S. schrieb: > ein Kollege hat eine Woche debuggt, Den Compiler oder die Applikation? > Wir hatten mit verschiedenen Versionen (alle nicht "offizielle" mit > dem Studio mitgelieferte) seltsame Probleme. Konkret? Ihr werden wohl nicht bis ultimo auf 4.7.2 bleiben wollen, genauso wie die meisten heute nicht mehr 3.4.6 einsetzen, obwohl die eine der besten war :-)
Ok, habe mal ein kleines Projekt (cd. 4k .text) damit durchgenudelt und gleich 2 Fehler gefunden — im Projekt, nicht im Compiler wohlgemerkt! Bug #1 Eine Variable, auf die in einer ISR nur lesend zugegriffen wird, war nicht volatile. Der Code war in etwa so:
1 | bool volatile isr_busy; |
2 | char volatile data_from_isr; |
3 | char data_for_isr; |
4 | |
5 | ISR() |
6 | {
|
7 | if (isr_busy) |
8 | {
|
9 | data_from_isr = data_for_isr; |
10 | isr_busy = false; |
11 | }
|
12 | }
|
13 | |
14 | void foo (char data) |
15 | {
|
16 | while (isr_busy) |
17 | ;
|
18 | data_for_isr = data; |
19 | isr_busy = true; |
20 | }
|
Bug #2 Ein Modul verwaltet die Konfiguration der Anwendung und non-volatile Einstellungen im EEprom. Damit andere Module nicht versehentlich die Konfiguration schreiben, war die entsprechende struct-Komponente const. Der Code wurde unter der Annahme geschrieben, dass der Compiler (damals avr-gcc 3.4.6) nicht in anderen Module sieht, so dass keine Undefined Behavior auftritt. Mit GCC 5.2 gibt's dafür nen Tritt in den A.... :-)
:
Bearbeitet durch User
Ok, ich habe das Problem gefunden, das bei mir den Compiler crashen lies: Das größere Projekt habe ich immer mit -fipa-pta kompiliert, weil das einiges an Platzersparnis brachte. avr-gcc 5.2 hat da wohl einen Bug. Ohne den Schalter läuft's.
Hast du einen Testfall? Vermutlich verletzt dein Code sie Aliasing-Regeln von C.
Das wird ein paar Tage dauern. Aber wenn du mir ein Beispiel gibst, was du damit meinst, kann ich mal nachschauen und den Code kommende Woche vereinfachen und das Problem zu isolieren versuchen.
Ein "Testfall" in diesem Zusammenhang ist etwas, das es anderen ermöglicht, einen Fehler nachzuvollziehen. Dies beinhaltet insbesondere: 1) Die Compilerausgabe, wenn die betroffenen s-Dateien zusätzlich mit -v erzeugt werden (ohne LTO ist das nur eine). 2) Die präprozessierten Quellen, d.h. i-Datei (C) bzw. ii-Datei (C++) wie mit -save-temps erzeugt (ohne LTO ist das nur eine Datei). Dies stellt sicher, dass das Modul übersetzt werden kann (keine fehlenden Dateien wie Header, etc.) und keine Makros, Deklarationen, etc. geraten werden müssen. Zudem sieht man OS, Configure- und Compiler-Optionen, Build-Datum und -Version, Vendor, etc. Weil der erzeugte Code nicht ausführbar ist (GCC erzeugt Assembler-Code, also Text), ist eine genaue Fehlerbeschreibung notwendig, evtl. hilf auch die erzeugte s-Datei um den Fehler zu erklären. Ausführbarer Code ist in den nicht hilfreich, da die erforderliche Hardware nicht vorliegt. Bevor man an einen Fehler in der C-Implementation denkt, sollte man einen Fehler in der Applikation in Betracht ziehen: -- Warnungen aktivieren, evtl. auch solche, die nicht in -Wall, -W, oder -Wextra enthalten sind, z.B. -Woverflow, -Wconversion, -Wsign-conversion, -Wstrict-prototypes, -Wmissing-prototyes, -Waddr-space-convert, -Wstrict-aliasing=, -Wstrict-overflow=, ... In deinem Fall z.B. Warnungen, die sich auf Aliasing beziehen. -- Code mit Lint etc. untersuchen, auf Undefined Behavior testen (Signed-Overflow, Aliasing-Regeln, Division durch 0, INT_MIN / -1, Schreiben von nicht-volatile const-Objekten, etc.) Beachte, dass nicht alle Fehler zur Compilezeit erkannt werden können, und Sanitizer für avr-gcc nicht zur Verfügung stehen (wären eh Overkill). In deinem Fall liegt die Vermutung nahe, dass Aliasing-Regeln verletzt werden. Typisches Idiom ist z.B.
1 | void foo (long *p, float f) |
2 | {
|
3 | * (long*) p = f; |
4 | }
|
oder ähnliche Hacks die Type-Punning über Unions erledigen. Versuchsweise kann mit -fno-strict-aliasing übersetzt werden, ditto -fwrapv oder einzelne Module mit bestimmten Optimierungen deaktiviert oder von LTO ausgenommen, z.B. im Makefile per
1 | modul.o: CFLAGS += -fno-lto |
Fehler tritt nur auf, wenn -flto und -fipa-pta zusammentreffen. -fno-strict-aliasing und/oder -fwrapv führen zu keiner Besserung. Lint etc. lief schon drüber und -Wextra ist immer an. Spezielle aliasing-Warnungen muss ich noch suchen welche ich am besten einschalte. Mehr kommende Woche wegen Zeitmangels.
Ich persönlich tippe ja auf einen Compilerfehler. avr-gcc haut hier traditionell viele unsinnige Fehlermeldungen raus. Ich verwendete bisher die 4.8.1 und da nervte er mich z.B. immer mit adc.c:16:1: warning: '_vector_21' appears to be a misspelled signal handler [enabled by default] ISR(ADC_vect) { ^ Die Software funktioniert aber einwandfrei! Den Umstieg mache ich hauptsächlich wegen sowas, weil das in mir schon Zweifel und Misstrauen weckt, ob da nicht doch Bugs im Compiler sind.
Zumindest GCC 4.9.2 gibts als Beta auch von Atmel: http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.5.0-beta/
Es ist gar nicht so einfach, den Bug zu isolieren, da er mal da ist und mal weg. Vor allem hängt er davon ab, wie man die Dateien nennt... Benennt man sie um, kompiliert es!? Ich vereinfache das Projekt noch...
Heiner schrieb: > Es ist gar nicht so einfach, den Bug zu isolieren, da er mal da ist und > mal weg. Vor allem hängt er davon ab, wie man die Dateien nennt... > Benennt man sie um, kompiliert es!? Hä? Ich dachte es geht darum, dass dein Code nicht funktioniert, und nicht darum, dass der Build-Vorgang abbricht?
Heiner schrieb: > Also ein sehr einfaches Projekt kompiliert. Ein Größeres nicht. So schrieb ich das. Der Compiler crasht bzw. meldet einen kryptischen Fehler. "section x is missing". Der Fehler tritt bei Verwendung von -flto und -fipa-pta in Abhängigkeit des Dateinamens einer c-Datei und je nach Größe des Codes auf. Ich habe beim Reduzieren meines Projektes gemerkt, dass der Fehler irgendwann weg war. Als ich irgendwelche Nonsense-Operationen einbaute, war er wieder da. Irgendwie läuft da im Compiler was über, glaube ich. Ich hänge das reduzierte Projekt nachher mal an.
Heiner schrieb: > Heiner schrieb: >> Also ein sehr einfaches Projekt kompiliert. Ein Größeres nicht. > > So schrieb ich das. Der Compiler crasht bzw. meldet einen kryptischen > Fehler. "section x is missing". Der Fehler tritt bei Verwendung von > -flto und -fipa-pta in Abhängigkeit des Dateinamens einer c-Datei und je > nach Größe des Codes auf. Ich habe beim Reduzieren meines Projektes > gemerkt, dass der Fehler irgendwann weg war. Ah wenn das so ist kannst du doch ganz einfach nen Testfall zur Verfügung stellen, nämlich den / die präprozessierten i-Files, die Optionen (nebst -v) und Console-Ausgabe des Compilers. Wie ist die Ausgabe mit -v ?
Hier kannste dein Glück mal versuchen. make.bat ruft das exakt so auf, wie bei mir. Aber Achtung: Bei der kleinsten Änderung funktioniert es möglicherweise...
Bitte noch die Ausgabe des Compilers mit -v. Ich versucht nicht mein Glück, ich versuche dir zu helfen. Dafür brauche ich bestimmte Informationen. Wenn das Thema für dich nicht von Interesse ist, dann sag das bitte.
:
Bearbeitet durch User
Hier die Ausgabe mit -v. Mh, ich denke, dass es auch im Interesse anderer Nutzer ist und auch im Interesse der Compilerbauer sein müsste, wenn Fehler in ihrem Produkt korrigiert werden. Oder zumindest besser auf eine Fehlbedienung hinzuweisen, sofern diese vorliegt.
1 | Using built-in specs. |
2 | Reading specs from c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/device-specs/specs-atmega328p |
3 | COLLECT_GCC=avr-gcc |
4 | COLLECT_LTO_WRAPPER=c:/program\ files\ (x86)/gcc-5-avr-mingw32/bin/../libexec/gcc/avr/5.2.1/lto-wrapper.exe |
5 | Target: avr |
6 | Configured with: ../../gcc.gnu.org/gcc-5-branch/configure --target=avr --disable-nls --prefix=/local/gnu/install/gcc-5-a |
7 | vr-mingw32 --host=i386-mingw32 --build=i686-linux-gnu --enable-languages=c,c++,lto --with-gnu-as --with-gnu-ld --disable |
8 | -shared --with-dwarf2 |
9 | Thread model: single |
10 | gcc version 5.2.1 20150816 (GCC) |
11 | COLLECT_GCC_OPTIONS='-v' '-D' 'F_CPU=20000000UL' '-flto' '-fpack-struct' '-fshort-enums' '-funsigned-bitfields' '-funsig |
12 | ned-char' '-gdwarf-2' '-Os' '-std=gnu99' '-Waddr-space-convert' '-Wall' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-o' |
13 | 'test.elf' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' |
14 | c:/program files (x86)/gcc-5-avr-mingw32/bin/../libexec/gcc/avr/5.2.1/cc1.exe -quiet -v -imultilib avr5 -iprefix c:\pro |
15 | gram files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/ -D__AVR_ATmega328P__ -D__AVR_DEVICE_NAME__=atmega328p -D F_ |
16 | CPU=20000000UL Bug.c -mn-flash=1 -mno-skip-bug -quiet -dumpbase Bug.c -mmcu=avr5 -auxbase Bug -gdwarf-2 -Os -Waddr-space |
17 | -convert -Wall -Wextra -Wstrict-overflow -std=gnu99 -version -flto -fpack-struct -fshort-enums -funsigned-bitfields -fun |
18 | signed-char -fipa-pta -o C:\Users\bla\AppData\Local\Temp\ccl7MHL1.s |
19 | GNU C99 (GCC) version 5.2.1 20150816 (avr) |
20 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
21 | .2 |
22 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
23 | ignoring nonexistent directory "c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/../../../../avr/sys-in |
24 | clude" |
25 | ignoring duplicate directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/include" |
26 | ignoring duplicate directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/include-fixed" |
27 | ignoring nonexistent directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/../../../../avr |
28 | /sys-include" |
29 | ignoring duplicate directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/../../../../avr/i |
30 | nclude" |
31 | #include "..." search starts here: |
32 | #include <...> search starts here: |
33 | c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/include |
34 | c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/include-fixed |
35 | c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/../../../../avr/include |
36 | End of search list. |
37 | GNU C99 (GCC) version 5.2.1 20150816 (avr) |
38 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
39 | .2 |
40 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
41 | Compiler executable checksum: 219aa38592dc87635344e287ae0fb6cc |
42 | COLLECT_GCC_OPTIONS='-v' '-D' 'F_CPU=20000000UL' '-flto' '-fpack-struct' '-fshort-enums' '-funsigned-bitfields' '-funsig |
43 | ned-char' '-gdwarf-2' '-Os' '-std=gnu99' '-Waddr-space-convert' '-Wall' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-o' |
44 | 'test.elf' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' |
45 | c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/bin/as.exe -v -mmcu=avr5 -mno-skip-bu |
46 | g -o C:\Users\bla\AppData\Local\Temp\cc26utp4.o C:\Users\bla\AppData\Local\Temp\ccl7MHL1.s |
47 | GNU assembler version 2.25.51 (avr) using BFD version (GNU Binutils) 2.25.51.20150816 |
48 | COLLECT_GCC_OPTIONS='-v' '-D' 'F_CPU=20000000UL' '-flto' '-fpack-struct' '-fshort-enums' '-funsigned-bitfields' '-funsig |
49 | ned-char' '-gdwarf-2' '-Os' '-std=gnu99' '-Waddr-space-convert' '-Wall' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-o' |
50 | 'test.elf' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' |
51 | c:/program files (x86)/gcc-5-avr-mingw32/bin/../libexec/gcc/avr/5.2.1/cc1.exe -quiet -v -imultilib avr5 -iprefix c:\pro |
52 | gram files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/ -D__AVR_ATmega328P__ -D__AVR_DEVICE_NAME__=atmega328p -D F_ |
53 | CPU=20000000UL e.c -mn-flash=1 -mno-skip-bug -quiet -dumpbase e.c -mmcu=avr5 -auxbase e -gdwarf-2 -Os -Waddr-space-conve |
54 | rt -Wall -Wextra -Wstrict-overflow -std=gnu99 -version -flto -fpack-struct -fshort-enums -funsigned-bitfields -funsigned |
55 | -char -fipa-pta -o C:\Users\bla\AppData\Local\Temp\ccl7MHL1.s |
56 | GNU C99 (GCC) version 5.2.1 20150816 (avr) |
57 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
58 | .2 |
59 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
60 | ignoring nonexistent directory "c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/../../../../avr/sys-in |
61 | clude" |
62 | ignoring duplicate directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/include" |
63 | ignoring duplicate directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/include-fixed" |
64 | ignoring nonexistent directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/../../../../avr |
65 | /sys-include" |
66 | ignoring duplicate directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/../../../../avr/i |
67 | nclude" |
68 | #include "..." search starts here: |
69 | #include <...> search starts here: |
70 | c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/include |
71 | c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/include-fixed |
72 | c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/../../../../avr/include |
73 | End of search list. |
74 | GNU C99 (GCC) version 5.2.1 20150816 (avr) |
75 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
76 | .2 |
77 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
78 | Compiler executable checksum: 219aa38592dc87635344e287ae0fb6cc |
79 | COLLECT_GCC_OPTIONS='-v' '-D' 'F_CPU=20000000UL' '-flto' '-fpack-struct' '-fshort-enums' '-funsigned-bitfields' '-funsig |
80 | ned-char' '-gdwarf-2' '-Os' '-std=gnu99' '-Waddr-space-convert' '-Wall' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-o' |
81 | 'test.elf' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' |
82 | c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/bin/as.exe -v -mmcu=avr5 -mno-skip-bu |
83 | g -o C:\Users\bla\AppData\Local\Temp\ccaAd5Ra.o C:\Users\bla\AppData\Local\Temp\ccl7MHL1.s |
84 | GNU assembler version 2.25.51 (avr) using BFD version (GNU Binutils) 2.25.51.20150816 |
85 | COLLECT_GCC_OPTIONS='-v' '-D' 'F_CPU=20000000UL' '-flto' '-fpack-struct' '-fshort-enums' '-funsigned-bitfields' '-funsig |
86 | ned-char' '-gdwarf-2' '-Os' '-std=gnu99' '-Waddr-space-convert' '-Wall' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-o' |
87 | 'test.elf' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' |
88 | c:/program files (x86)/gcc-5-avr-mingw32/bin/../libexec/gcc/avr/5.2.1/cc1.exe -quiet -v -imultilib avr5 -iprefix c:\pro |
89 | gram files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/ -D__AVR_ATmega328P__ -D__AVR_DEVICE_NAME__=atmega328p -D F_ |
90 | CPU=20000000UL i.c -mn-flash=1 -mno-skip-bug -quiet -dumpbase i.c -mmcu=avr5 -auxbase i -gdwarf-2 -Os -Waddr-space-conve |
91 | rt -Wall -Wextra -Wstrict-overflow -std=gnu99 -version -flto -fpack-struct -fshort-enums -funsigned-bitfields -funsigned |
92 | -char -fipa-pta -o C:\Users\bla\AppData\Local\Temp\ccl7MHL1.s |
93 | GNU C99 (GCC) version 5.2.1 20150816 (avr) |
94 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
95 | .2 |
96 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
97 | ignoring nonexistent directory "c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/../../../../avr/sys-in |
98 | clude" |
99 | ignoring duplicate directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/include" |
100 | ignoring duplicate directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/include-fixed" |
101 | ignoring nonexistent directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/../../../../avr |
102 | /sys-include" |
103 | ignoring duplicate directory "c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../lib/gcc/avr/5.2.1/../../../../avr/i |
104 | nclude" |
105 | #include "..." search starts here: |
106 | #include <...> search starts here: |
107 | c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/include |
108 | c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/include-fixed |
109 | c:\program files (x86)\gcc-5-avr-mingw32\bin\../lib/gcc/avr/5.2.1/../../../../avr/include |
110 | End of search list. |
111 | GNU C99 (GCC) version 5.2.1 20150816 (avr) |
112 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
113 | .2 |
114 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
115 | Compiler executable checksum: 219aa38592dc87635344e287ae0fb6cc |
116 | COLLECT_GCC_OPTIONS='-v' '-D' 'F_CPU=20000000UL' '-flto' '-fpack-struct' '-fshort-enums' '-funsigned-bitfields' '-funsig |
117 | ned-char' '-gdwarf-2' '-Os' '-std=gnu99' '-Waddr-space-convert' '-Wall' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-o' |
118 | 'test.elf' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' |
119 | c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/bin/as.exe -v -mmcu=avr5 -mno-skip-bu |
120 | g -o C:\Users\bla\AppData\Local\Temp\ccQiffjw.o C:\Users\bla\AppData\Local\Temp\ccl7MHL1.s |
121 | GNU assembler version 2.25.51 (avr) using BFD version (GNU Binutils) 2.25.51.20150816 |
122 | COMPILER_PATH=c:/program files (x86)/gcc-5-avr-mingw32/bin/../libexec/gcc/avr/5.2.1/;c:/program files (x86)/gcc-5-avr-mi |
123 | ngw32/bin/../libexec/gcc/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/bin/ |
124 | LIBRARY_PATH=c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/avr5/;c:/program files (x86)/gcc-5-avr-mi |
125 | ngw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/lib/avr5/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2 |
126 | .1/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr |
127 | /5.2.1/../../../../avr/lib/ |
128 | COLLECT_GCC_OPTIONS='-v' '-D' 'F_CPU=20000000UL' '-flto' '-fpack-struct' '-fshort-enums' '-funsigned-bitfields' '-funsig |
129 | ned-char' '-gdwarf-2' '-Os' '-std=gnu99' '-Waddr-space-convert' '-Wall' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-o' |
130 | 'test.elf' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' |
131 | c:/program files (x86)/gcc-5-avr-mingw32/bin/../libexec/gcc/avr/5.2.1/collect2.exe -plugin c:/program files (x86)/gcc-5 |
132 | -avr-mingw32/bin/../libexec/gcc/avr/5.2.1/liblto_plugin-0.dll -plugin-opt=c:/program files (x86)/gcc-5-avr-mingw32/bin/. |
133 | ./libexec/gcc/avr/5.2.1/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\bla\AppData\Local\Temp\ccodvO7X.res -plugin-o |
134 | pt=-pass-through=-lgcc -plugin-opt=-pass-through=-lm -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-latmega328 |
135 | p -flto -mavr5 -Tdata 0x800100 -o test.elf c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/../../../.. |
136 | /avr/lib/avr5/crtatmega328p.o -Lc:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/avr5 -Lc:/program file |
137 | s (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/lib/avr5 -Lc:/program files (x86)/gcc-5-avr-mingw32/b |
138 | in/../lib/gcc/avr/5.2.1 -Lc:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc -Lc:/program files (x86)/gcc-5-avr-min |
139 | gw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/lib @C:\Users\bla\AppData\Local\Temp\ccW7KnWp --start-group -lgcc -lm -lc |
140 | -latmega328p --end-group |
141 | avr-gcc @C:\Users\bla\AppData\Local\Temp\cc0wNvzf |
142 | Using built-in specs. |
143 | Reading specs from c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/device-specs/specs-atmega328p |
144 | Reading specs from c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/device-specs/specs-avr5 |
145 | COLLECT_GCC=avr-gcc |
146 | Target: avr |
147 | Configured with: ../../gcc.gnu.org/gcc-5-branch/configure --target=avr --disable-nls --prefix=/local/gnu/install/gcc-5-a |
148 | vr-mingw32 --host=i386-mingw32 --build=i686-linux-gnu --enable-languages=c,c++,lto --with-gnu-as --with-gnu-ld --disable |
149 | -shared --with-dwarf2 |
150 | Thread model: single |
151 | gcc version 5.2.1 20150816 (GCC) |
152 | COLLECT_GCC_OPTIONS='-c' '-fmath-errno' '-fsigned-zeros' '-ftrapping-math' '-fno-trapv' '-fno-openmp' '-fno-openacc' '-m |
153 | n-flash=1' '-mno-skip-bug' '-mmcu=avr5' '-Os' '-v' '-D' 'F_CPU=20000000UL' '-fpack-struct' '-fshort-enums' '-funsigned-c |
154 | har' '-gdwarf-2' '-Os' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' '-d |
155 | umpdir' './' '-dumpbase' 'test.elf.wpa' '-fltrans-output-list=C:\Users\bla\AppData\Local\Temp\ccAQYPRH.ltrans.out' '-fw |
156 | pa' '-fresolution=C:\Users\bla\AppData\Local\Temp\ccodvO7X.res' '-specs=device-specs/specs-avr5' |
157 | c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../libexec/gcc/avr/5.2.1/lto1.exe -mno-skip-bug -quiet -dumpdir ./ |
158 | -dumpbase test.elf.wpa -mn-flash=1 -mno-skip-bug -mmcu=avr5 -mmcu=avr5 -auxbase cc26utp4 -gdwarf-2 -Os -Os -Wextra -Wstr |
159 | ict-overflow -version -fmath-errno -fsigned-zeros -ftrapping-math -fno-trapv -fno-openmp -fno-openacc -fpack-struct -fsh |
160 | ort-enums -funsigned-char -fipa-pta -fltrans-output-list=C:\Users\bla\AppData\Local\Temp\ccAQYPRH.ltrans.out -fwpa -fre |
161 | solution=C:\Users\bla\AppData\Local\Temp\ccodvO7X.res @C:\Users\bla\AppData\Local\Temp\ccg2xIvL |
162 | GNU GIMPLE (GCC) version 5.2.1 20150816 (avr) |
163 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
164 | .2 |
165 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
166 | GNU GIMPLE (GCC) version 5.2.1 20150816 (avr) |
167 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
168 | .2 |
169 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
170 | COMPILER_PATH=c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../libexec/gcc/avr/5.2.1/;c:/program files (x86)/gcc-5 |
171 | -avr-mingw32/lib/gcc/../../libexec/gcc/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../libexec/gcc/avr/5.2.1/;c:/progra |
172 | m files (x86)/gcc-5-avr-mingw32/bin/../libexec/gcc/avr/5.2.1/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../libexec/gc |
173 | c/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/bin/;c:/program files (x86)/gcc-5-a |
174 | vr-mingw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/bin/ |
175 | LIBRARY_PATH=c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/avr5/;c:/program files (x86)/gcc-5-avr-mi |
176 | ngw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/lib/avr5/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2 |
177 | .1/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr |
178 | /5.2.1/../../../../avr/lib/ |
179 | COLLECT_GCC_OPTIONS='-c' '-fmath-errno' '-fsigned-zeros' '-ftrapping-math' '-fno-trapv' '-fno-openmp' '-fno-openacc' '-m |
180 | n-flash=1' '-mno-skip-bug' '-mmcu=avr5' '-Os' '-v' '-D' 'F_CPU=20000000UL' '-fpack-struct' '-fshort-enums' '-funsigned-c |
181 | har' '-gdwarf-2' '-Os' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' '-d |
182 | umpdir' './' '-dumpbase' 'test.elf.wpa' '-fltrans-output-list=C:\Users\bla\AppData\Local\Temp\ccAQYPRH.ltrans.out' '-fw |
183 | pa' '-fresolution=C:\Users\bla\AppData\Local\Temp\ccodvO7X.res' '-specs=device-specs/specs-avr5' |
184 | avr-gcc @C:\Users\bla\AppData\Local\Temp\ccufqjqS |
185 | Using built-in specs. |
186 | Reading specs from c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/device-specs/specs-atmega328p |
187 | Reading specs from c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/device-specs/specs-avr5 |
188 | COLLECT_GCC=avr-gcc |
189 | Target: avr |
190 | Configured with: ../../gcc.gnu.org/gcc-5-branch/configure --target=avr --disable-nls --prefix=/local/gnu/install/gcc-5-a |
191 | vr-mingw32 --host=i386-mingw32 --build=i686-linux-gnu --enable-languages=c,c++,lto --with-gnu-as --with-gnu-ld --disable |
192 | -shared --with-dwarf2 |
193 | Thread model: single |
194 | gcc version 5.2.1 20150816 (GCC) |
195 | COLLECT_GCC_OPTIONS='-c' '-fmath-errno' '-fsigned-zeros' '-ftrapping-math' '-fno-trapv' '-fno-openmp' '-fno-openacc' '-m |
196 | n-flash=1' '-mno-skip-bug' '-mmcu=avr5' '-Os' '-v' '-D' 'F_CPU=20000000UL' '-fpack-struct' '-fshort-enums' '-funsigned-c |
197 | har' '-gdwarf-2' '-Os' '-Wextra' '-Wstrict-overflow' '-fipa-pta' '-specs=device-specs/specs-atmega328p' '-mmcu=avr5' '-d |
198 | umpdir' './' '-dumpbase' 'test.elf.ltrans0' '-fltrans' '-o' 'C:\Users\bla\AppData\Local\Temp\ccAQYPRH.ltrans0.ltrans.o' |
199 | '-specs=device-specs/specs-avr5' |
200 | c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../libexec/gcc/avr/5.2.1/lto1.exe -mno-skip-bug -quiet -dumpdir ./ |
201 | -dumpbase test.elf.ltrans0 -mn-flash=1 -mno-skip-bug -mmcu=avr5 -mmcu=avr5 -auxbase-strip C:\Users\bla\AppData\Local\Te |
202 | mp\ccAQYPRH.ltrans0.ltrans.o -gdwarf-2 -Os -Os -Wextra -Wstrict-overflow -version -fmath-errno -fsigned-zeros -ftrapping |
203 | -math -fno-trapv -fno-openmp -fno-openacc -fpack-struct -fshort-enums -funsigned-char -fipa-pta -fltrans @C:\Users\bla\ |
204 | AppData\Local\Temp\ccyPMX0M -o C:\Users\bla\AppData\Local\Temp\ccK6tIKo.s |
205 | GNU GIMPLE (GCC) version 5.2.1 20150816 (avr) |
206 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
207 | .2 |
208 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
209 | GNU GIMPLE (GCC) version 5.2.1 20150816 (avr) |
210 | compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8 |
211 | .2 |
212 | GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 |
213 | lto1.exe: fatal error: C:\Users\bla\AppData\Local\Temp\ccAQYPRH.ltrans0.o: section Foo is missing |
214 | compilation terminated. |
215 | lto-wrapper.exe: fatal error: avr-gcc returned 1 exit status |
216 | compilation terminated. |
217 | c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2.1/../../../../avr/bin/ld.exe: error: lto-wrapper failed |
218 | collect2.exe: error: ld returned 1 exit status |
Heiner schrieb: > ich denke, dass es auch im Interesse [...] der Compilerbauer > sein müsste, wenn Fehler in ihrem Produkt korrigiert werden. Ja, ist es. Aber Raten hat sich hier als untauglich erwiesen, und die Information ist mit -v -save-temps einfach und schnell zu erhalten. > Oder zumindest besser auf eine Fehlbedienung hinzuweisen, > sofern diese vorliegt. Sieht mir nicht danach aus. https://gcc.gnu.org/PR67428
Danke. Und jetzt benenne "Bug.c" mal um in "Mug.c" und versuche es erneut. Das ist der Effekt, den ich nicht kapiere.
Seh ich keinen Unterschied, weder für x86-linux-gnu noch für avr-unknown-none. Hab allerdings momentan x86-linux-gnu.
... und außerdem hab ich alle Header entsorgt, damit ander was mit den Quellen anfangen können :-) einer schrieb: > Dann ist es Windows-spezifisch. Nicht unbedingt, kann auch ein Problem mit der Speicherverwaltung sein. Wir werden sehen, ist ja auf x86 reproduzierbar — und der Traum aller Compileranwender, der Fehler möge im Compiler sein und nicht im eigenen Code ;-)
Johann L. schrieb: > https://gcc.gnu.org/PR67428 Ist seit vorgestern behoben, d.h ab GCC 5.3: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66705#c7
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.