====== GNU Toolchains ======
FIXME Hier muss noch viel geschrieben und sortiert werden. Ich will aber einfach beginnen, meine Informationen zu notieren und hier zu sammeln.
----
===== Xilinx MicroBlaze Unterstützung =====
Die durch Xilinx und PetaLogix gelebte Bereitstellung und Pflege der GNU Compiler Collection für MicroBlaze war lange Zeit ein wunder Punkt. Bis heute hat man immer wieder beteuert, dass man alle Ergebnisse in den Up-Stream der FSF einpflegen und damit einen ordentlichen Zugriff auf die Quellbasis bereitstellen wolle. Mitte 2009 gab es [[http://sourceware.org/ml/binutils/2009-07/msg00307.html|erste Regungen]] durch Michael Eager für die MicroBlaze Unterstützung in den Binutils. Durch seine Arbeiten bis Ende 2010 und mit Erscheinen von gcc-4.6.0 im [[http://gcc.gnu.org/gcc-4.6/changes.html#microblaze|März 2011]] steht heute eine erste freie Implementierung der GNU Tools für MicroBlaze zur Verfügung. Diese kann aber ausschließlich nur für die „standalone“ Programmierung auf Basis der Newlib genutzt werden.
==== GNU Compiler Collection für Linux/Glibc ====
Trotz erster Erfolge steht für ein Linux Zielsystem mit GNU Lib C noch immer keine Up-Stream Unterstützung zur Verfügung. Xilinx und PataLogix arbeiten daran -- verschiedene Originalzitate bekräftigen das:
Michael Eager, März 2011 ([[http://sourceware.org/ml/gdb/2011-03/msg00028.html|alles]]):
> I understand that Xilinx is interested in upgrading the Linux tool chain to the same version in the GNU tree and presumably submitting any changes to FSF. I don't have any details on the when this might happen; the status on this has not changed in many months. Naturally, updating the GNU tree gdb and gdbserver to work on correctly on MicroBlaze Linux doesn't require Xilinx's involvement, the projects are open source. It does require a suitable environment and someone to do the port.
John Williams, Februar 2011 ([[http://permalink.gmane.org/gmane.linux.uclinux.microblaze/11505|alles]]):
> Moving forward we are discussing with Xilinx on how to best get the MicroBlaze toolchains properly supported and maintained upstream. This is a work in progress so there are unlikely to be tanglible results from this effort for a little while yet. Once the toolchain sources are upstream, then it opens the way to get standard toolchain builders such as crosstool-ng knowing about MicroBlaze. This in turn should greatly reduce the pain factor for individuals to build their own MicroBlaze toolchains.
John Williams, April 2012 ([[http://permalink.gmane.org/gmane.linux.uclinux.microblaze/11846|alles]]):
> The release is imminent. We are ironing out the last few remaining issues in testing now. Getting it upstream is also part of the plan, along with securing a commitment to maintain it there.
>
> Stay tuned!
=== Xilinx Binärpakete ===
Für die Bereitstellung und Pflege einer GNU Compiler Collection auf Basis der aktuellen FSF Quellen besteht daher immer noch Handlungsbedarf durch Xilinx bzw. der Mithilfe von PetaLogix. Die einzige heute funktionstüchtige Toolchain stammt von John Williams (PetaLogix) und basiert auf den mittlerweile historischen Versionen binutils-2.16.1, gcc-4.1.2 und glibc-2.3.6.
Xilinx stellt fertig übersetzte Binärpakete bereit:
* Version 2.0 (März 2011) **obsolete** :!::
* MicroBlaze Big Endian Linux Developer Binaries: [[http://git.xilinx.com/?p=xldk/microblaze_v2.0.git;a=blob_plain;f=microblaze-unknown-linux-gnu.tgz;hb=HEAD|microblaze-unknown-linux-gnu.tgz]]
* MicroBlaze Little Endian Linux Developer Binaries: [[http://git.xilinx.com/?p=xldk/microblaze_v2.0_le.git;a=blob_plain;f=microblazeel-unknown-linux-gnu.tgz;hb=HEAD|microblaze-unknown-linux-gnu.tgz]]
* Version 1.0 (Dezember 2010) **obsolete** :!::
* MicroBlaze Little Endian Linux Developer Binaries: [[http://git.xilinx.com/?p=xldk/microblaze_v1.0_le.git;a=blob_plain;f=microblazeel-unknown-linux-gnu.tar.gz;hb=HEAD|microblazeel-unknown-linux-gnu.tar.gz]]
* Version 1.0 (Oktober 2009) **obsolete** :!::
* MicroBlaze (Big Endian) Linux Developer Binaries: [[http://git.xilinx.com/?p=xldk/microblaze_v1.0.git;a=blob_plain;f=mb_gnu_tools_bin.tar.bz;hb=HEAD|mb_gnu_tools_bin.tar.bz2]]
=== PetaLogix Patch Set ===
Seit Februar 2011 stellt John Williams (PetaLinux) nun endlich seine hierfür notwendigen Patch Sets der Öffentlichkeit zur Verfügung -- das ist ein lang ersehnter und erfreulicher Schritt für die Programmiergemeinde:
* **obsolete** :!: [[http://git.monstr.eu/git/gitweb.cgi?p=toolchain/binutils.git|GNU binutils 2.16.1 plus MicroBlaze patches]] (Git: git://git.monstr.eu/toolchain/binutils.git)
* **obsolete** :!: [[http://git.monstr.eu/git/gitweb.cgi?p=toolchain/gcc.git|GNU gcc 4.1.2 plus MicroBlaze patches big and little-endian support]] (Git: git://git.monstr.eu/toolchain/gcc.git)
* **obsolete** :!: [[http://git.monstr.eu/git/gitweb.cgi?p=toolchain/glibc.git|GNU glibc 2.3.6 plus MicroBlaze patches big and little-endian support]] (Git: git://git.monstr.eu/toolchain/glibc.git)
===== AVR 8-bit Unerstützung =====
Nativ vorhanden:
* [[http://www.atmel.no/beta_ware/|Atmel Norway : BetaWare]]
* [[http://distribute.atmel.no/tools/opensource/avr-gcc/|Atmel Norway : Distribution]]
* [[http://www.heise.de/ct/projekte/machmit/ctbot/wiki/AVRToolchain|c't-Bot Distribution]] (c't Projekt)
* [[https://build.opensuse.org/project/packages?project=CrossToolchain%3Aavr|CrossToolchain:Avr]] (OBS Projekt)
* [[http://winavr.cvs.sourceforge.net/viewvc/winavr/patches/|WINAVR Patches]]
===== Zilog Z80 Unterstützung =====
Für mein alt geliebtes [[http://www.li-pro.net/pcm.phtml|PC/M Eigenbauprojekt]] beobachte ich seit mehr als 10 Jahren die verschiedenen Versuche und Aktionen in Richtung Z80 Unterstützung durch die GNU Compiler Collection. Einzige bisher wirklich funktionstüchtige Aktion war die Integration des Assembler und Linker sowie der OBJ-Manipulationsprogramme in die BIN Utilities.
* [[http://gcc.gnu.org/ml/gcc/2003-05/msg00602.html|Porting GCC to Zilog z80]]
* [[http://gcc.gnu.org/ml/gcc-patches/2001-06/msg01546.html|gcc-z80 patch]] (gcc-2.95.2)
* [[http://www.z80.eu/|Peter Dassow Z80 Page]]
* [[http://www.z80.info/|Thomas Scherrer Z80-Family Official Support Page]]
* [[http://datasheets.chipdb.org/|Thomas Chip DB]]
* [[http://wiki.qemu.org/Features/Z80|Z80/Qemu]]
* [[http://www.mail-archive.com/sdcc-user@lists.sourceforge.net/msg03242.html|A better register allocator for the Z80]] (sdcc)
===== Linksammlung =====
* [[http://elk.informatik.fh-augsburg.de/da/guest/hk/Diplomarbeit.pdf|Entwurf eines Compilerbackends für…]], Hannes Klas 2010
===== Interna Quellcode =====
==== BIN Utilities (binutils) ====
Die //BIN Utilities// beinhalten den GNU Assembler, Linker, Archiver und die OBJ Werkzeuge.
=== Bezugsquellen ===
* [[http://sourceware.org/binutils/|Projektseite]]
* [[ftp://sourceware.org/pub/binutils/releases/|aktuelle Ausgaben]] ++alternative|[[http://ftp.gnu.org/gnu/binutils/|gnu.org]]++
* [[ftp://sourceware.org/pub/binutils/old-releases/|alte Ausgaben]]
* [[ftp://sourceware.org/pub/binutils/snapshots/|Schnappschüsse]]
* [[http://sourceware.org/cgi-bin/cvsweb.cgi/src/?cvsroot=src|CVS Webinterface]]
* [[http://sourceware.org/git/?p=binutils.git|Git Webinterface]]
=== Versionsnummern ===
Die Versionsnummer wird über die Autoconf Variable ''bfd_version_string'' zum Übersetzungszeitpunkt als CPP Define ''BFD_VERSION_STRING'' in die Quellen eingebracht. Die damit in Verbindung stehende Versionsvariable ''VERSION'' wird in ''bfd/configure'' zugewiesen.
Die Ablage erfolgt in der Datei:
* aktuell in: ''bfd/Makefile.in'' (bzw. ''bfd/Makefile.am'') als Inhalt der zu erzeugenden Datei ''bfdver.h''
* bis zum 2004-05-22 in: ''bfd/configure'' (bzw. ''bfd/configure.in'')
==== GNU Compiler Collection (gcc) ====
Die //GNU Compiler Collection// beinhalten den GNU C, C++, Objective-C, Fortran, Java, and Ada (GNAT) Compiler sowie hierfür notwendige Bibliotheken (libstdc++, libgcj,...).
=== Bezugsquellen ===
* [[http://sourceware.org/gcc/|Projektseite]]
* [[ftp://sourceware.org/pub/gcc/releases/|aktuelle Ausgaben]] ++alternative|[[http://ftp.gnu.org/gnu/gcc/|gnu.org]]++
* [[ftp://sourceware.org/pub/gcc/old-releases/|alte Ausgaben]]
* [[ftp://sourceware.org/pub/gcc/snapshots/|Schnappschüsse]]
* [[http://gcc.gnu.org/viewcvs/|SVN Webinterface]]
* [[http://gcc.gnu.org/git/?p=gcc.git|Git Webinterface]]
=== Versionsnummern ===
Die Versionsnummer wird über die Variable ''version_string'' zum Übersetzungszeitpunkt in die Quellen eingebracht. Die damit in Verbindung stehenden Versionsvariablen ''BASEVER'', ''DATESTAMP'' und ''DEVPHASE'' werden in ''gcc/Makefile.in'' zugewiesen und entsprechen den Inhalten der Dateien ''gcc/BASE-VER'', ''gcc/DATESTAMP'' und ''gcc/DEV-PHASE''. Die Variable ''version_string'' wird in der Datei ''gcc/version.h'' zum Übersetzungszeitpunkt mit dem CPP Define ''VERSUFFIX'' erweitert (Nutzung durch Redistribution).
Die Ablage erfolgt in der Datei:
* Basisversion in: ''gcc/BASE-VER''
* Zeitstempel in: ''gcc/DATESTAMP''
* Entwicklungsphase (optionaler Text) in: ''gcc/DEV-PHASE''
* Vertriebskennung in: ''gcc/version.h'' als CPP Define ''VERSUFFIX''
==== GNU Debugger (gdb) ====
Der //GNU Debugger// beinhalten den GNU Source-Level Debugger für lokale, entfernte und post-mortem Programmkontrolle.
=== Bezugsquellen ===
* [[http://sourceware.org/gdb/|Projektseite]]
* [[ftp://sourceware.org/pub/gdb/releases/|aktuelle Ausgaben]] ++alternative|[[http://ftp.gnu.org/gnu/gdb/|gnu.org]]++
* [[ftp://sourceware.org/pub/gdb/old-releases/|alte Ausgaben]]
* [[ftp://sourceware.org/pub/gdb/snapshots/|Schnappschüsse]]
* [[http://sourceware.org/cgi-bin/cvsweb.cgi/src/?cvsroot=src|CVS Webinterface]]
* [[http://sourceware.org/git/?p=gdb.git|Git Webinterface]]
==== GNU C Library (glibc) ====
Die //GNU C Library// ist die unter POSIX Systemen, wie Linux oder BSD Unix, am häufigsten benutzte ANSI/ISO C Programmierbibliothek mit mathematischer Erweiterung und C-plus-plus Unterstützung.
=== Bezugsquellen ===
* [[http://sourceware.org/glibc/|Projektseite]] ++alternative|[[http://sources.redhat.com/glibc/|redhat.com]]++
* [[ftp://sourceware.org/pub/glibc/|aktuelle Ausgaben]] ++alternative|[[ftp://sources.redhat.com/pub/glibc/|redhat.com]]++
* [[http://sourceware.org/git/?p=glibc.git|Git Webinterface]]
==== Embedded GNU C Library (eglibc) ====
Die //Embedded GNU C Library// ist eine Variante der GLIBC speziell für die Benutzung in eingebetteten Systemen (Embedded Systems). Die EGLIBC wird ausschließlich über ein Subversion Repository bereitgestellt. Es gibt keine Quellcode Pakete zum Herunterladen.
=== Bezugsquellen ===
* [[http://www.eglibc.org/|Projektseite]]
* [[http://www.eglibc.org/cgi-bin/viewvc.cgi/|Subversion Webinterface]]
* [[http://www.eglibc.org/svn/|Subversion Repository]]
==== RedHat New Library (newlib) ====
Die //New Library// ist eine einfache ANSI C Programmierbibliothek mit mathematischer Erweiterung und einer Kollektion von verschiedenen BSP.
=== Bezugsquellen ===
* [[http://sourceware.org/newlib/|Projektseite]] ++alternative|[[http://sources.redhat.com/newlib/|redhat.com]]++
* [[ftp://sourceware.org/pub/newlib/|aktuelle Ausgaben]] ++alternative|[[ftp://sources.redhat.com/pub/newlib/|redhat.com]]++
* [[http://sourceware.org/cgi-bin/cvsweb.cgi/src/?cvsroot=src|CVS Webinterface]]
* [[http://sourceware.org/git/?p=newlib.git|Git Webinterface]]
{{tag>toolchain binutils gcc gdb glibc eglibc newlib z80 microblaze avr}}