In ACDS Version 13.1 wird die Nios® II GNU Toolchain von GCC 4.1.2 auf GCC 4.7.3 aktualisiert. Benutzer, die ein Upgrade auf die neue Toolchain durchführen, müssen die folgenden unten aufgeführten Änderungen beachten.
Nios II spezifische Änderungen:
- Verwenden Sie __buildin_custom_* anstelle von -mcustom-* oder #pragma , um zuverlässig Nios II Floating Point Custom Instructions (FPCI) zu generieren, unabhängig von der Compiler-Optimierungsebene und Befehlszeilen-Flags.
- So verwenden Sie -mcustom-* oder #pragma für Nios II Floating Point Custom Instructions (FPCI):
- Die Kennzeichnung -ffinite-math-only muss verwendet werden, um fmins und fmax FPCI zu generieren
- die Optimierung (nicht -O0-Flag ) muss verwendet werden, um fsqrts FPCI zu generieren
- Benutzer, die transzendentale Funktionen in der Hardware implementieren, müssen das Flag -funsafe-math-optimizations verwenden, um die FPCI für die transzendentalen Funktionen fsins(), fcoss(), ftans(), fatiges(), fexps(), hexasings() und entsprechende Doppelpräzisionsfunktionen zu generieren.
- Das-format hat sich von z. B. #pragma custom_fadds 253 bis #pragma GCC Target("custom-fadds=253") und Funktionsattribute bieten ein alternatives Format __attribute__((target("custom-fadds=253"))).
- Verwenden Sie die Flags -mel/-meb anstelle von -EL/-EB für endianische Einstellungen. Das Software-Build-Tool für Eclipse (SBTE)-Benutzer muss den BSP neu erstellen, damit diese Einstellung wirksam wird.
- Die Flag -mreverse-bitfields und reverse_bitfields werden nicht mehr unterstützt.
- Das Flag -fstack-check muss anstelle von -mstack-check verwendet werden, um die Stack-Überprüfung zu aktivieren.
GCC Änderungen und Verbesserungen:
- Die Flag -Wa,-relax-all im nios2-elf-gcc GCC 4.7.3 unterstützt Funktionsanrufe und Programme, die die 256 MB-Limit überschreiten.
- Wenn der Inline-Assembly-Code mit dem asm-Operator bei der Optimierung verwendet wird, muss er Werte angeben, die aus C importiert und nach C zurück exportiert werden, wobei die in http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Extended-Asm beschriebenen Mechanismen verwendet werden.
- Pre-Standard-C-Header werden in GCC 4.7.3 nicht unterstützt. Ersetzen Sie Vorstandard C durch Standard C, z. B. #include , cout, endl mit #include , std::cout bzw . std::endl .
- Das Kompilierungs-Flag -Wl,--defsym gcc=bar , bei dem bar ein undefiniertes Symbol ist, generiert einen Fehler auf Linker-Ebene in GCC 4.7.3. GCC 4.1.2 umfasst diese Überprüfung nicht.
GNU bietet auch einen Portierungsleitfaden für GCC4.7 zur Dokumentation gängiger Probleme: http://gcc.gnu.org/gcc-4.7/porting_to.html
Vollständige GCC-Versionshinweise finden Sie unter http://gcc.gnu.org/releases.html.