Diese Erweiterung der Entwicklertools ist ein neues Leistungsmerkmal der Developer-Version 9/07.
In dieser Version wurden die Datentypen uid_t und gid_t von long (32-Bit-Binärdateien) und int (64-Bit-Binärdateien) in den Datentyp uint32_t geändert. Dieser Datentyp wird für 32-Bit- und 64-Bit-Binärdateien verwendet. Durch diese Änderung wird die Kompatibilität mit anderen Betriebssystemen hergestellt.
Im Rahmen der Änderung der Datentypen uid_t und gid_t sind für die Solaris-Implementierung für uid_t und gid_t auch die Werte von 231 bis 232 - 2 reserviert. Der Wert 232 - 1 ist weiterhin als Hinweiswert reserviert. In diesem neuen Bereich zugewiesene Werte sind temporäre, vom Identitätszuweisungsdienst vorgenommene Zuweisungen. Beachten Sie, dass diese Werte beim nächsten Systemneustart zurückgesetzt werden. Aus diesem Grunde sollten Anwendungsprogramme keine UID- bzw. GID-Werte in persistente Dateien im Dateisystem schreiben oder diese über das Netzwerk zur Identifizierung persistenter Identitäten versenden. Für die Identifizierung persistenter Identitäten sollte der jeweilige Identitätenname verwendet werden. Solaris-Dienstprogramme wie z. B. der Befehl tar und das NFSv4-Netzwerkprotokoll nutzen diese Richtlinien bereits.
Da die alten und neuen uid_t- und gid_t-Datentypen gleich groß sind, wirkt sich die Datentypänderung nicht auf vorhandene Binärdateien, z. B. solche, die mit älteren Definitionen compiliert wurden, aus. In diesen Fällen muss der Code nicht neu compiliert werden. Binärdateien, Objektdateien und dynamisch gelinkte Bibliotheken (Shared Libraries) einschließlich Bibliotheken, die gegen dynamisch gelinkte Solaris-Bibliotheken gelinkt werden, sind ebenfalls nicht betroffen.
Diese Änderungen wirken sich wie folgt aus:
Neucompilierte C-Binärdateien – Bei der Neucompilierung von Code sollten Änderungen an den Datentypen uid_t und gid_t durch Standardparktiken im Entwicklungsprozess erkannt und gemeldet werden. Wenn sich eine Vorzeichenänderung auf die Codesemantik, den C-Compiler und/oder den lint-Prozess auswirken kann, werden entsprechende Warnungen ausgegeben. Entwickler sollten beachten, dass alle im Rahmen dieser Änderungen generierten Warnmeldungen sorgfältig überprüft werden müssen.
C++ - Code – C++ - Compilers verwenden zur Generierung symbolischer Funktionsnamen ein Verfahren, das als „Namenskryptisierung“ (engl. „name mangling“) bezeichnet wird. Dieses Verfahren codiert primitive Typnamen, die in Funktionsaufrufsignaturen verwendet werden. Die Änderung an den Datentypen uid_t und gid_t hat eine neue Namenskryptisierung von Funktionen und Objekten in C++ zur Folge.
Wie bei C-Binärdateien auch funktionieren C++—Binärdateien und -Bibliotheken jedoch weiterhin wie zuvor. Die einzige Ausnahme besteht bei Bibliotheken mit Schnittstellen, die die Datentypen uid_t und gid_t verwenden.
Da im Betriebssystem Solaris C++—Schnittstellen dieser Art nicht öffentlich zugänglich sind, werden keine Inkompatibilitäen mit Solaris-Bibliotheken erwartet.
Einzelheiten zu den Auswirkungen dieser Datentypänderung sowie Warnmeldungen im Zusammenhang damit finden Sie unter Änderungen an den Datentypen uid_t und gid_t im Developer-Release 9/07 in den Solaris Express Developer Edition Versionshinweisen.