Forum: Compiler & IDEs avr-gcc 5.2 für Windows


von Heiner (Gast)


Lesenswert?

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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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

von Heiner (Gast)


Lesenswert?

Danke. Also ein sehr einfaches Projekt kompiliert. Ein Größeres nicht. 
Muss noch gucken, warum.

von Dominik S. (zerobrain)


Lesenswert?

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...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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 :-)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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
von Heiner (Gast)


Lesenswert?

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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Hast du einen Testfall?

Vermutlich verletzt dein Code sie Aliasing-Regeln von C.

von Heiner (Gast)


Lesenswert?

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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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

von Heiner (Gast)


Lesenswert?

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.

von Heiner (Gast)


Lesenswert?

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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

+1 für mein Fegefeuer :-)

https://gcc.gnu.org/PR59396

von guest (Gast)


Lesenswert?

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/

von Heiner (Gast)


Lesenswert?

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...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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?

von Heiner (Gast)


Lesenswert?

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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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 ?

von Heiner (Gast)


Angehängte Dateien:

Lesenswert?

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...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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
von Heiner (Gast)


Lesenswert?

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

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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

von Heiner (Gast)


Lesenswert?

Danke. Und jetzt benenne "Bug.c" mal um in "Mug.c" und versuche es 
erneut. Das ist der Effekt, den ich nicht kapiere.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Seh ich keinen Unterschied, weder für x86-linux-gnu noch für 
avr-unknown-none.  Hab allerdings momentan x86-linux-gnu.

von Heiner (Gast)


Lesenswert?

Dann ist es Windows-spezifisch.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

... 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 ;-)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?


von Heiner (Gast)


Lesenswert?

Jetzt fehlt nur noch der Download-Link. ;)

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
Noch kein Account? Hier anmelden.