nm - listează simbolurile din fișierele obiect
nm [-A|-o|--print-file-name]
[-a|--debug-syms]
[-B|--format=bsd]
[-C|--demangle[=stil]]
[-D|--dynamic]
[-fformat|--format=format]
[-g|--extern-only]
[-h|--help]
[--ifunc-chars=CARACTERE]
[-j|--format=just-symbols]
[-l|--line-numbers] [--inlines]
[-n|-v|--numeric-sort]
[-P|--portability]
[-p|--no-sort]
[-r|--reverse-sort]
[-S|--print-size]
[-s|--print-armap]
[-t bază|--radix=bază]
[-u|--undefined-only]
[-U|--defined-only]
[-V|--version]
[-W|--no-weak]
[-X 32_64]
[--no-demangle]
[--no-recurse-limit|--recurse-limit]]
[--plugin nume]
[--size-sort]
[--special-syms]
[--synthetic]
[--target=nume-bfd]
[--unicode=metoda]
[--with-symbol-versions]
[--without-symbol-versions]
[fișier-obiect...]
GNU nm listează simbolurile din fișierele
obiect fișier-obiect.... Dacă niciun fișier
obiect nu este listat ca argument, nm presupune fișierul
a.out.
Pentru fiecare simbol, nm afișează:
- Valoarea simbolului, în baza selectată prin opțiuni
(a se vedea mai jos) sau în hexazecimal în mod
implicit.
- Tipul de simbol. Se utilizează cel puțin următoarele
tipuri; se pot utiliza și altele, în funcție de
formatul fișierului obiect. Dacă este scris cu minuscule,
simbolul este de obicei local; dacă este scris cu majuscule,
simbolul este global (extern). Există totuși câteva
simboluri minuscule care sunt afișate pentru simboluri globale
speciale („u”,
„v” și
„w”).
- "A"
- Valoarea simbolului este absolută și nu va fi
schimbată de o legătură ulterioară.
- "B"
- "b"
- Simbolul se află în secțiunea de date BSS.
Această secțiune conține de obicei date
inițializate zero sau neinițializate, deși
comportamentul exact depinde de sistem.
- "C"
- "c"
- Simbolul este comun. Simbolurile comune sunt date neinițializate.
La crearea unei legături, pot apărea mai multe simboluri
comune cu același nume. În cazul în care simbolul
este definit oriunde, simbolurile comune sunt tratate ca referințe
nedefinite. Caracterul minuscul c este utilizat atunci când
simbolul se află într-o secțiune specială
pentru comunele mici.
- "D"
- "d"
- Simbolul se află în secțiunea de date
inițializate.
- "G"
- "g"
- Simbolul se află într-o secțiune de date
inițializate pentru obiecte mici. Unele formate de fișiere
obiect permit un acces mai eficient la obiecte de date mici, cum ar fi o
variabilă globală int, spre deosebire de o matrice
globală mare.
- "i"
- În cazul fișierelor în format PE, acest lucru
indică faptul că simbolul se află într-o
secțiune specifică implementării DLL-urilor.
În cazul fișierelor în format ELF, acest
lucru indică faptul că simbolul este o funcție
indirectă. Aceasta este o extensie GNU la setul standard de
tipuri de simboluri ELF. Acesta indică un simbol care,
dacă este menționat printr-o realocare, nu este evaluat la
adresa sa, ci trebuie să fie invocat în timpul
execuției. Executarea în timp de execuție va
returna apoi valoarea care va fi utilizată în
realocare.
Notă - afișarea efectivă a simbolurilor
pentru simbolurile indirecte GNU este controlată de
opțiunea de linie de comandă --ifunc-chars.
Dacă această opțiune a fost furnizată,
atunci primul caracter din șirul de caractere va fi utilizat
pentru simbolurile funcțiilor indirecte globale. Dacă
șirul conține un al doilea caracter, acesta va fi utilizat
pentru simbolurile funcțiilor indirecte locale.
- "I"
- Simbolul este o referință indirectă la un alt
simbol.
- "N"
- Simbolul este un simbol de depanare.
- "n"
- Simbolul se află într-o secțiune de numai-citire
fără date, fără cod și
fără depanare.
- "p"
- Simbolul se află într-o secțiune de
desfășurare a stivei.
- "R"
- "r"
- Simbolul se află într-o secțiune de date
numai-pentru-citire.
- "S"
- "s"
- Simbolul se află într-o secțiune de date
neinițializată sau cu inițializare zero pentru
obiecte mici.
- "T"
- "t"
- Simbolul se află în secțiunea de text (cod).
- "U"
- Simbolul este nedefinit.
- "u"
- Simbolul este un simbol global unic. Aceasta este o extensie GNU la setul
standard de legături de simboluri ELF. Pentru un astfel de simbol,
editorul de legături dinamice se va asigura că în
întregul proces este utilizat un singur simbol cu acest nume
și tip.
- "V"
- "v"
- Simbolul este un obiect slab. Atunci când un simbol slab definit
este legat de un simbol normal definit, simbolul normal definit este
utilizat fără nicio eroare. Atunci când un simbol
slab nedefinit este legat și simbolul nu este definit, valoarea
simbolului slab devine zero fără nicio eroare. Pe unele
sisteme, majusculele indică faptul că a fost
specificată o valoare implicită.
- "W"
- "w"
- Simbolul este un simbol slab care nu a fost etichetat în mod
specific ca simbol obiect slab. Atunci când un simbol slab definit
este legat de un simbol normal definit, simbolul normal definit este
utilizat fără nicio eroare. Atunci când un simbol
slab nedefinit este legat și simbolul nu este definit, valoarea
simbolului este determinată într-un mod specific sistemului,
fără erori. Pe unele sisteme, majusculele indică
faptul că a fost specificată o valoare
implicită.
- "-"
- Simbolul este un simbol stabs într-un fișier obiect a.out.
În acest caz, următoarele valori afișate sunt
câmpul stabs other, câmpul stabs desc și tipul de
stab. Simbolurile stabs sunt utilizate pentru a păstra
informații de depanare.
- "?"
- Tipul de simbol este necunoscut sau specific formatului de fișier
obiect.
- •
- Numele simbolului. În cazul în care un simbol are asociate
informații despre versiune, atunci sunt afișate și
informațiile despre versiune. În cazul în care
simbolul cu versiune este nedefinit sau ascuns de editorul de
legături, șirul de versiuni este afișat ca sufix la
numele simbolului, precedat de un caracter @. De exemplu,
foo@VER_1. În cazul în care versiunea este versiunea
implicită care urmează să fie utilizată la
rezolvarea trimiterilor la simbol fără versiune, aceasta
este afișată sub forma unui sufix precedat de două
caractere @. De exemplu, foo@@VER_2.
Forma lungă și forma scurtă a
opțiunilor, prezentate aici ca alternative, sunt echivalente.
- -A
- -o
- --print-file-name
- Fiecare simbol este precedat de numele fișierului de intrare (sau
al membrului de arhivă) în care a fost găsit,
în loc de a identifica fișierul de intrare o singură
dată, înaintea tuturor simbolurilor sale.
- -a
- --debug-syms
- Afișează toate simbolurile, chiar și simbolurile
exclusiv pentru depanare; în mod normal, acestea nu sunt
listate.
- -B
- La fel ca --format=bsd (pentru compatibilitate cu MIPS
nm).
- -C
- --demangle[=stil]
- Decodifică (demangle) numele simbolurilor de nivel
scăzut în nume de nivel utilizator. În afară
de eliminarea oricărei sublinieri inițiale preaplicate de
sistem, acest lucru face ca numele funcțiilor C++ să fie mai
ușor de citit. Compilatoare diferite au stiluri diferite de
codificare. Argumentul opțional „demangling style (stil
decodificare)” poate fi utilizat pentru a alege un stil de
decodificare adecvat pentru compilatorul dumneavoastră.
- --no-demangle
- Nu decodifică numele simbolurilor de nivel scăzut. Aceasta
este opțiunea implicită.
- --recurse-limit
- --no-recurse-limit
- --recursion-limit
- --no-recursion-limit
- Activează sau dezactivează limitarea numărului de
recursivități efectuate în timpul
decodificării șirurilor de caractere. Deoarece formatele de
manipulare a numelor permit un nivel infinit de recursivitate, este
posibil să se creeze șiruri a căror decodificare va
epuiza spațiul de stivă disponibil pe calculatorul
gazdă, declanșând o eroare de memorie. Limitarea
încearcă să prevină acest lucru prin
restricționarea recursivității la 2048 de niveluri de
imbricare.
În mod implicit, această limită este
activată, dar poate fi necesar să fie dezactivată
pentru a dezmembra nume cu adevărat complicate.
Rețineți totuși că, dacă limita de
recursivitate este dezactivată, este posibilă epuizarea
stivei și orice raport de eroare privind un astfel de eveniment
va fi respins.
- -D
- --dynamic
- Afișează simbolurile dinamice în loc de simbolurile
normale. Acest lucru este semnificativ numai pentru obiectele dinamice,
cum ar fi anumite tipuri de biblioteci partajate.
- -f format
- --format=format
- Utilizează formatul de ieșire format, care poate fi
„bsd”,
„sysv”,
„posix” sau
„just-symbols”. Valoarea
implicită este „bsd”. Numai
primul caracter din format este semnificativ; acesta poate fi
majusculă sau minusculă.
- -g
- --extern-only
- Afișează numai simboluri externe.
- -h
- --help
- Afișează un rezumat al opțiunilor pentru nm
și iese.
- --ifunc-chars=CARACTERE
- La afișarea simbolurilor funcțiilor indirecte GNU, nm
va utiliza în mod implicit caracterul
„i” atât pentru
funcțiile indirecte locale, cât și pentru
funcțiile indirecte globale. Opțiunea --ifunc-chars
permite utilizatorului să specifice un șir de caractere care
să conțină unul sau două caractere. Primul
caracter va fi utilizat pentru simbolurile funcțiilor indirecte
globale, iar al doilea caracter, dacă este prezent, va fi utilizat
pentru simbolurile funcțiilor indirecte locale.
- j
- La fel cas --format=just-symbols.
- -l
- --line-numbers
- Pentru fiecare simbol, utilizează informațiile de depanare
pentru a încerca să găsească un nume de
fișier și un număr de linie. Pentru un simbol
definit, caută numărul de linie al adresei simbolului.
Pentru un simbol nedefinit, caută numărul de linie al unei
intrări de realocare care se referă la simbol. În
cazul în care se pot găsi informații despre
numărul de linie, acestea se imprimă după celelalte
informații despre simbol.
- --inlines
- Atunci când opțiunea -l este activă,
dacă adresa aparține unei funcții care a fost
expandată în linie „inlined”, atunci
această opțiune determină afișarea și a
informațiilor sursă pentru toate domeniile de cuprindere
până la prima funcție ne-expandată în
linie „non-inlined”. De exemplu, dacă
„main” expandează în
linie „callee1” care
expandează în linie
„callee2”, și adresa este din
„callee2”, informațiile
sursă pentru „callee1”
și „main” vor fi deasemenea
afișate.
- -n
- -v
- --numeric-sort
- Sortează simbolurile numeric în funcție de adresele
lor, mai degrabă decât în ordine alfabetică
după nume.
- -p
- --no-sort
- Nu se deranjează să sorteze simbolurile în nicio
ordine, ci le imprimă în ordinea
întâlnită.
- -P
- --portability
- Utilizează formatul de ieșire standard POSIX.2 în
locul formatului implicit. Echivalent cu -f posix.
- -r
- --reverse-sort
- Inversează ordinea de sortare (fie ea numerică sau
alfabetică); lasă ultimul să fie primul.
- -S
- --print-size
- Imprimă atât valoarea, cât și dimensiunea
simbolurilor definite pentru stilul de ieșire
„bsd”. Această opțiune
nu are niciun efect pentru formatele de obiecte care nu
înregistrează dimensiunile simbolurilor, cu excepția
cazului în care se utilizează și --size-sort,
caz în care se afișează o dimensiune
calculată.
- -s
- --print-armap
- La enumerarea simbolurilor din membrii arhivei, include indexul: o
cartografiere (stocată în arhivă prin ar sau
ranlib) a modulelor care conțin definiții pentru care
nume.
- -t
bază
- --radix=bază
- Utilizează bază ca bază pentru imprimarea
valorilor simbolurilor. Aceasta trebuie să fie d pentru
zecimal, o pentru octal sau x pentru hexazecimal.
- -u
- --undefined-only
- Afișează numai simbolurile nedefinite (cele externe
fiecărui fișier obiect). În mod implicit, sunt
afișate atât simbolurile definite, cât și cele
nedefinite.
- -U
- --defined-only
- Afișează numai simbolurile definite pentru fiecare
fișier obiect. În mod implicit, sunt afișate
atât simbolurile definite, cât și cele
nedefinite.
- -V
- --version
- Afișează numărul versiunii de nm și
iese.
- -X
- Această opțiune este ignorată pentru compatibilitate
cu versiunea AIX a nm. Aceasta acceptă un parametru care
trebuie să fie șirul 32_64. Modul implicit al AIX
nm corespunde -X 32, care nu este acceptat de GNU
nm.
- --plugin
nume
- Încarcă modulul numit nume pentru a adăuga
suport pentru alte tipuri de ținte. Această opțiune
este disponibilă numai dacă setul de instrumente a fost
construit cu suportul pentru module activat.
Dacă opțiunea --plugin nu este
furnizată, dar suportul pentru module a fost activat, atunci
nm parcurge fișierele din ${libdir}/bfd-plugins
în ordine alfabetică și se utilizează primul
modul de extensie care revendică obiectul în
cauză.
Vă rugăm să rețineți
că acest director de căutare de module nu este cel
folosit de opțiunea -plugin a ld. Pentru ca
nm să utilizeze modulul editorului de legături,
acesta trebuie copiat în directorul ${libdir}/bfd-plugins.
Pentru compilațiile bazate pe GCC, modulul editorului de
legături se numește liblto_plugin.so.0.0.0.0.
Pentru compilațiile bazate pe Clang, acesta se numește
LLVMgold.so. Modulul GCC este întotdeauna compatibil cu
versiunile anterioare, astfel încât este suficient
să se copieze doar cel mai nou.
- --size-sort
- Sortează simbolurile în funcție de dimensiune. Pentru
obiectele ELF, dimensiunile simbolurilor sunt citite din ELF, iar pentru
alte tipuri de obiecte, dimensiunile simbolurilor sunt calculate ca
diferență între valoarea simbolului și
valoarea simbolului cu valoarea imediat superioară. În cazul
în care se utilizează formatul de ieșire
„bsd”, se imprimă dimensiunea
simbolului, și nu valoarea, iar -S trebuie să fie
utilizată pentru ca atât dimensiunea, cât și
valoarea să fie imprimate.
Notă - această opțiune nu
funcționează dacă --undefined-only a fost
activată, deoarece simbolurile nedefinite nu au dimensiune.
- --special-syms
- Afișează simbolurile care au o semnificație
specială specifică pentru țintă. Aceste
simboluri sunt utilizate de obicei de către țintă
pentru anumite prelucrări speciale și, în mod normal,
nu sunt utile atunci când sunt incluse în listele normale de
simboluri. De exemplu, pentru țintele ARM, această
opțiune ar omite simbolurile de cartografiere utilizate pentru a
marca tranzițiile între codul ARM, codul THUMB și
date.
- --synthetic
- Include simbolurile sintetice în rezultat. Acestea sunt simboluri
speciale create de către editorul de legături în
diverse scopuri. Ele nu sunt afișate în mod implicit,
deoarece nu fac parte din codul sursă original al binarului.
- --unicode=[default|invalid|locale|escape|hex|highlight]
- Controlează afișarea caracterelor multi-octet codificate
UTF-8 în șiruri de caractere. În mod implicit
(--unicode=default), acestea nu beneficiază de un tratament
special. Opțiunea --unicode=locale afișează
secvența în limba locală curentă, care poate
să le suporte sau nu. Opțiunile --unicode=hex
și --unicode=invalid le afișează sub
formă de secvențe de octeți hexazecimali,
încadrate fie de paranteze unghiulare, fie de paranteze drepte.
Opțiunea --unicode=escape le
afișează ca secvențe de eludare (\uxxxx),
iar opțiunea --unicode=highlight le afișează
ca secvențe de eludare evidențiate cu roșu
(dacă sunt acceptate de dispozitivul de ieșire). Culoarea
are rolul de a atrage atenția asupra prezenței
secvențelor unicode acolo unde nu ar fi de așteptat.
- -W
- --no-weak
- Nu afișează simboluri slabe.
- --with-symbol-versions
- --without-symbol-versions
- Activează sau dezactivează afișarea
informațiilor privind versiunea simbolului. Șirul de
versiuni este afișat ca sufix la numele simbolului, precedat de un
caracter @. De exemplu, foo@VER_1. În cazul în care
versiunea este versiunea implicită care urmează să
fie utilizată la rezolvarea trimiterilor la simbol
fără versiune, aceasta este afișată sub forma
unui sufix precedat de două caractere @. De exemplu,
foo@@VER_2. În mod implicit, se afișează
informațiile privind versiunea simbolului.
- --target=nume-bfd
- Specifică un alt format de cod obiect decât formatul
implicit al sistemului dumneavoastră.
- @fișier
- Citește opțiunile liniei de comandă din
fișier. Opțiunile citite sunt inserate în
locul opțiunii originale @fișier. Dacă
fișier nu există sau nu poate fi citit, atunci
opțiunea va fi tratată literal și nu va fi
eliminată.
Opțiunile din fișier sunt separate prin
spații albe. Un caracter de spațiere poate fi inclus
într-o opțiune prin includerea întregii
opțiuni între ghilimele simple sau duble. Orice caracter
(inclusiv o bară oblică inversă) poate fi inclus
prin prefixarea caracterului care urmează să fie inclus cu
o bară oblică inversă. fișier poate
conține la rândul său opțiuni
@fișier suplimentare; orice astfel de opțiuni vor
fi procesate în mod recursiv.
Drepturi de autor © 1991-2025 Free Software Foundation,
Inc.
Se acordă permisiunea de a copia, distribui și/sau
modifica acest document în conformitate cu termenii Licenței
GNU Free Documentation, versiunea 1.3 sau orice versiune ulterioară
publicată de Free Software Foundation; fără
secțiuni invariante, fără texte de copertă
și fără texte de contra copertă. O copie a
licenței este inclusă în secțiunea
intitulată „GNU Free Documentation License”.
Traducerea în limba română a acestui manual a
fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită;
citiți
Licența
publică generală GNU Versiunea 3 sau o versiune
ulterioară cu privire la condiții privind drepturile de autor.
NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea
acestui manual, vă rugăm să trimiteți un e-mail
la
translation-team-ro@lists.sourceforge.net.