nm(1) nm(1)
NAME
nm - Symboltabelle einer Objektdatei ausgeben
SYNTAX
nm [Option...] Datei...
BESCHREIBUNG
Das Kommando nm (name list) zeigt die Symboltabelle jeder ELF- oder
COFF-Objektdatei an, die durch Datei angegeben ist. Die Datei kann
eine verschiebbare oder eine absolute ELF- oder COFF-Objektdatei sein;
oder es kann sich auch um ein Archiv von verschiebbaren oder absoluten
ELF- oder COFF-Objektdateien handeln. Für jedes Symbol werden folgende
Informationen ausgegeben:
Lib/Obj
Name der Bibliothek bzw. des Objekts (nur bei -A)
Name Name des Symbols
Type Typ des Symbols:
A absolutes Symbol global
a absolutes Symbol lokal
B bss Symbol global
b bss Symbol lokal
D Datenobjekt-Symbol global
d Datenobjekt-Symbol lokal
T Textobjekt-Symbol global
t Textobjekt-Symbol lokal
U undefiniertes Symbol
Value
Wert des Symbols ist der Offset eines definierten Symbols in
einer verschiebbaren Datei; es gibt Beschränkungen für die Aus-
richtung von Symbolen mit einem Sektionsindex gleich SHNCOMMON
sowie einer virtuellen Adresse in ausführbaren und dynamischen
Bibliotheksdateien.
Size Größe in Bytes des assoziierten Objekts
Index
Index des Symbols, erscheint in Klammern
Bind Attribute des Gültigkeitsbereichs eines Symbols. Bei LOCAL-
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
nm(1) nm(1)
Symbolen ist der Gültigkeitsbereich auf die Objektdatei, die ihre
Defintion enthält, beschränkt. GLOBAL-Symbole sind in allen kom-
binierten Objektdateien sichtbar. WEAK-Symbole sind im Grunde
genommen globale Symbole, die aber einen geringeren Vorrang als
GLOBAL-Symbole haben.
Other
Feld, das für zukünftige Verwendung reserviert ist, zur Zeit ent-
hält es 0.
Shndx
Mit Ausnahme von drei speziellen Werten, ist dies der Index in
der Abschnittskopftabelle, in der das Symbol definiert ist. Die
folgenden speziellen Werte existieren: ABS gibt an, daß sich der
Symbolwert bei einer Relokation nicht ändert; COMMON gibt einen
freien Block und den Wert für eine Ausrichtung an. UNDEF gibt ein
undefiniertes Symbol an.
OPTIONEN
Die Ausgabe von nm kann mit folgenden Optionen gesteuert werden:
-A in jeder Zeile den vollen Pfadnamen bzw. Bibliotheksnamen eines
Objekts ausgeben
-e siehe Abschnitt HINWEISE
-f siehe Abschnitt HINWEISE
-g nur externe Symbole ausgeben
-h Daten des Ausgabekopfs nicht anzeigen
-l Damit zwischen WEAK- und GLOBAL-Attributen der Symbole unter-
schieden werden kann, wird ein * an den Buchstaben bei WEAK-
Symbolen angehängt.
-n externe Symbole vor der Ausgabe nach ihren Namen sortieren
-o Wert und Größe eines Symbols in Oktal- statt in Dezimalform aus-
geben (gleichbedeutend mit -t o)
-p leicht analysierbare kurze Ausgabe erstellen. Jeder Symbolbe-
zeichnung wird ihr Wert (Leerzeichen, wenn undefiniert) und einer
der Buchstaben U (undefiniert), N (Symbol hat keinen Typ), D
(Datenobjekt-Symbol), T (Textobjekt-Symbol), S (Segmentsymbol)
oder F (Dateisymbol) vorangestellt. Hat das Symbol das Attribut
lokal (nicht extern), wird der Buchstabe für den Typ kleinge-
schrieben. Hat das Symbol das Attribut WEAK, so wird der Buch-
stabe groß geschrieben. Wird zusätzlich die Option -l angegeben,
so folgt dem Buchstaben ein *. Der Buchstabe wird groß ausgege-
ben, wenn das Symbol das Attribut GLOBAL hat.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
nm(1) nm(1)
-P Ausgabe in einem portierbaren Format erstellen. Ist auch die
Option -A angegeben, wird für jedes Symbol eine Zeile in folgen-
dem Format ausgegeben:
<Bibliotheks-/Objektname> <Symbolname> <Typ> <Wert> <Größe>
Ist -A nicht angegeben, wird der Bibliotheks-/Objektname in eine
eigene Zeile geschrieben. Ist die Option -t nicht angegeben, wird
implizit -t x angenommen.
-r Name der Objektdatei oder des Archivs vor jede Ausgabezeile stel-
len
-t format
Ausgabeformat von Wert und Größe eines Symbols festlegen:
d Wert und Größe werden dezimal ausgegeben (Standard)
o Wert und Größe werden oktal ausgegeben (entspricht -o)
x Wert und Größe werden hexadezimal ausgegeben (entspricht -x)
-T siehe Abschnitt HINWEISE
-u nur undefinierte Symbole ausgeben
-v externe Symbole vor der Ausgabe nach ihrem Wert sortieren (statt
alphabetisch)
-V Die Version des Kommandos nm wird auf der Standard-Fehlerausgabe
ausgeben. (Sollte in portierbaren Scripts nicht verwendet wer-
den.)
-x Wert und Größe eines Symbols in Hexadezimal- statt in Dezimalform
ausgeben (gleichbedeutend mit -t x)
-- Ende der Optionenliste. Die Angabe ist nötig, wenn der erste
Dateiname mit - beginnt.
Die Optionen können in beliebiger Reihenfolge einzeln oder in Kombina-
tionen verwendet werden. Wenn Optionen angegeben werden, die sich
widersprechen (wie z. B. nm -v -n), wird die erste Option verwendet
und die zweite ignoriert. Es wird eine Warnung ausgegeben, daß die
zweite Option ignoriert wurde.
HINWEISE
Die folgenden Optionen sind aufgrund von Änderungen beim Objektformat
überflüssig geworden.
-e ausschließliche Ausgabe von externen und statischen Symbolen.
Automatische Symbole erscheinen nicht mehr in der Symboltabelle.
Sie stehen in den Informationen für den Debugger, die mit dem
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
nm(1) nm(1)
Kommando cc -g erzeugt werden. Diese können dann mit dump(1)
angesehen werden.
-f erzeugt eine vollständige Ausgabe. Redundante Symbole (wie z. B.
Ausgabe entspricht der Standardausgabe.
-T Standardmäßig gibt nm den vollständigen Namen der angezeigten
Symbole aus. Da die Symbolnamen jetzt in der letzten Spalte aus-
gegeben werden, ist das Problem der zu langen Bezeichner ver-
schwunden und es ist nicht länger notwendig, den Symbolnamen zu
kürzen.
INTERNATIONALE UMGEBUNG
Die Sprache der Meldungstexte wird durch die Umgebungsvariablen
LCALL, LCMESSAGES oder LANG bestimmt.
In der Standardeinstellung verhält sich das System so, als wäre es
nicht internationalisiert, d. h. die Meldungstexte erscheinen in eng-
lischer Sprache. Wenn Sie die Sprache der Meldungstexte ändern wollen,
müssen Sie eine dieser Variablen entsprechend setzen.
Ausführliche Informationen zu den Abhängigkeiten der Umgebungsvaria-
blen und zur Internationalisierung im allgemeinen finden Sie im Hand-
buch "Leitfaden für Programmierer: Internationalisierung - Lokalisie-
rung". Zur Einstellung der Benutzerumgebung siehe auch environ(5).
SIEHE AUCH
cc(1), dump(1), ld(1), a.out(4), ar(4).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98