GNU Toolchains

FIXME Hier muss noch viel geschrieben und sortiert werden. Ich will aber einfach beginnen, meine Informationen zu notieren und hier zu sammeln.


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

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:

Für mein alt geliebtes 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.

BIN Utilities (binutils)

Die BIN Utilities beinhalten den GNU Assembler, Linker, Archiver und die OBJ Werkzeuge.

Bezugsquellen

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

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

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

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

RedHat New Library (newlib)

Die New Library ist eine einfache ANSI C Programmierbibliothek mit mathematischer Erweiterung und einer Kollektion von verschiedenen BSP.

Bezugsquellen