NM(1) Instrumente pentru dezvoltare(programare) GNU NM(1) NUME nm - listeaza simbolurile din fiierele obiect SINOPSIS 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 baza|--radix=baza] [-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] [fiier-obiect...] DESCRIERE GNU nm listeaza simbolurile din fiierele obiect fiier-obiect.... Daca niciun fiier obiect nu este listat ca argument, nm presupune fiierul a.out. Pentru fiecare simbol, nm afieaza: o Valoarea simbolului, in baza selectata prin opiuni (a se vedea mai jos) sau in hexazecimal in mod implicit. o Tipul de simbol. Se utilizeaza cel puin urmatoarele tipuri; se pot utiliza i altele, in funcie de formatul fiierului obiect. Daca este scris cu minuscule, simbolul este de obicei local; daca este scris cu majuscule, simbolul este global (extern). Exista totui cateva simboluri minuscule care sunt afiate pentru simboluri globale speciale (,,u", ,,v" i ,,w"). "A" Valoarea simbolului este absoluta i nu va fi schimbata de o legatura ulterioara. "B" "b" Simbolul se afla in seciunea de date BSS. Aceasta seciune conine de obicei date iniializate zero sau neiniializate, dei comportamentul exact depinde de sistem. "C" "c" Simbolul este comun. Simbolurile comune sunt date neiniializate. La crearea unei legaturi, pot aparea mai multe simboluri comune cu acelai nume. In cazul in care simbolul este definit oriunde, simbolurile comune sunt tratate ca referine nedefinite. Caracterul minuscul c este utilizat atunci cand simbolul se afla intr-o seciune speciala pentru comunele mici. "D" "d" Simbolul se afla in seciunea de date iniializate. "G" "g" Simbolul se afla intr-o seciune de date iniializate pentru obiecte mici. Unele formate de fiiere obiect permit un acces mai eficient la obiecte de date mici, cum ar fi o variabila globala int, spre deosebire de o matrice globala mare. "i" In cazul fiierelor in format PE, acest lucru indica faptul ca simbolul se afla intr-o seciune specifica implementarii DLL-urilor. In cazul fiierelor in format ELF, acest lucru indica faptul ca simbolul este o funcie indirecta. Aceasta este o extensie GNU la setul standard de tipuri de simboluri ELF. Acesta indica un simbol care, daca este menionat printr-o realocare, nu este evaluat la adresa sa, ci trebuie sa fie invocat in timpul execuiei. Executarea in timp de execuie va returna apoi valoarea care va fi utilizata in realocare. Nota - afiarea efectiva a simbolurilor pentru simbolurile indirecte GNU este controlata de opiunea de linie de comanda --ifunc-chars. Daca aceasta opiune a fost furnizata, atunci primul caracter din irul de caractere va fi utilizat pentru simbolurile funciilor indirecte globale. Daca irul conine un al doilea caracter, acesta va fi utilizat pentru simbolurile funciilor indirecte locale. "I" Simbolul este o referina indirecta la un alt simbol. "N" Simbolul este un simbol de depanare. "n" Simbolul se afla intr-o seciune de numai-citire fara date, fara cod i fara depanare. "p" Simbolul se afla intr-o seciune de desfaurare a stivei. "R" "r" Simbolul se afla intr-o seciune de date numai-pentru-citire. "S" "s" Simbolul se afla intr-o seciune de date neiniializata sau cu iniializare zero pentru obiecte mici. "T" "t" Simbolul se afla in seciunea de text (cod). "U" Simbolul este nedefinit. "u" Simbolul este un simbol global unic. Aceasta este o extensie GNU la setul standard de legaturi de simboluri ELF. Pentru un astfel de simbol, editorul de legaturi dinamice se va asigura ca in intregul proces este utilizat un singur simbol cu acest nume i tip. "V" "v" Simbolul este un obiect slab. Atunci cand un simbol slab definit este legat de un simbol normal definit, simbolul normal definit este utilizat fara nicio eroare. Atunci cand un simbol slab nedefinit este legat i simbolul nu este definit, valoarea simbolului slab devine zero fara nicio eroare. Pe unele sisteme, majusculele indica faptul ca a fost specificata o valoare implicita. "W" "w" Simbolul este un simbol slab care nu a fost etichetat in mod specific ca simbol obiect slab. Atunci cand un simbol slab definit este legat de un simbol normal definit, simbolul normal definit este utilizat fara nicio eroare. Atunci cand un simbol slab nedefinit este legat i simbolul nu este definit, valoarea simbolului este determinata intr-un mod specific sistemului, fara erori. Pe unele sisteme, majusculele indica faptul ca a fost specificata o valoare implicita. "-" Simbolul este un simbol stabs intr-un fiier obiect a.out. In acest caz, urmatoarele valori afiate sunt campul stabs other, campul stabs desc i tipul de stab. Simbolurile stabs sunt utilizate pentru a pastra informaii de depanare. "?" Tipul de simbol este necunoscut sau specific formatului de fiier obiect. o Numele simbolului. In cazul in care un simbol are asociate informaii despre versiune, atunci sunt afiate i informaiile despre versiune. In cazul in care simbolul cu versiune este nedefinit sau ascuns de editorul de legaturi, irul de versiuni este afiat ca sufix la numele simbolului, precedat de un caracter @. De exemplu, foo@VER_1. In cazul in care versiunea este versiunea implicita care urmeaza sa fie utilizata la rezolvarea trimiterilor la simbol fara versiune, aceasta este afiata sub forma unui sufix precedat de doua caractere @. De exemplu, foo@@VER_2. OPIUNI Forma lunga i forma scurta a opiunilor, prezentate aici ca alternative, sunt echivalente. -A -o --print-file-name Fiecare simbol este precedat de numele fiierului de intrare (sau al membrului de arhiva) in care a fost gasit, in loc de a identifica fiierul de intrare o singura data, inaintea tuturor simbolurilor sale. -a --debug-syms Afieaza toate simbolurile, chiar i simbolurile exclusiv pentru depanare; in mod normal, acestea nu sunt listate. -B La fel ca --format=bsd (pentru compatibilitate cu MIPS nm). -C --demangle[=stil] Decodifica (demangle) numele simbolurilor de nivel scazut in nume de nivel utilizator. In afara de eliminarea oricarei sublinieri iniiale preaplicate de sistem, acest lucru face ca numele funciilor C++ sa fie mai uor de citit. Compilatoare diferite au stiluri diferite de codificare. Argumentul opional ,,demangling style (stil decodificare)" poate fi utilizat pentru a alege un stil de decodificare adecvat pentru compilatorul dumneavoastra. --no-demangle Nu decodifica numele simbolurilor de nivel scazut. Aceasta este opiunea implicita. --recurse-limit --no-recurse-limit --recursion-limit --no-recursion-limit Activeaza sau dezactiveaza limitarea numarului de recursivitai efectuate in timpul decodificarii irurilor de caractere. Deoarece formatele de manipulare a numelor permit un nivel infinit de recursivitate, este posibil sa se creeze iruri a caror decodificare va epuiza spaiul de stiva disponibil pe calculatorul gazda, declanand o eroare de memorie. Limitarea incearca sa previna acest lucru prin restricionarea recursivitaii la 2048 de niveluri de imbricare. In mod implicit, aceasta limita este activata, dar poate fi necesar sa fie dezactivata pentru a dezmembra nume cu adevarat complicate. Reinei totui ca, daca limita de recursivitate este dezactivata, este posibila epuizarea stivei i orice raport de eroare privind un astfel de eveniment va fi respins. -D --dynamic Afieaza simbolurile dinamice in loc de simbolurile normale. Acest lucru este semnificativ numai pentru obiectele dinamice, cum ar fi anumite tipuri de biblioteci partajate. -f format --format=format Utilizeaza formatul de ieire format, care poate fi ,,bsd", ,,sysv", ,,posix" sau ,,just-symbols". Valoarea implicita este ,,bsd". Numai primul caracter din format este semnificativ; acesta poate fi majuscula sau minuscula. -g --extern-only Afieaza numai simboluri externe. -h --help Afieaza un rezumat al opiunilor pentru nm i iese. --ifunc-chars=CARACTERE La afiarea simbolurilor funciilor indirecte GNU, nm va utiliza in mod implicit caracterul ,,i" atat pentru funciile indirecte locale, cat i pentru funciile indirecte globale. Opiunea --ifunc-chars permite utilizatorului sa specifice un ir de caractere care sa conina unul sau doua caractere. Primul caracter va fi utilizat pentru simbolurile funciilor indirecte globale, iar al doilea caracter, daca este prezent, va fi utilizat pentru simbolurile funciilor indirecte locale. j La fel cas --format=just-symbols. -l --line-numbers Pentru fiecare simbol, utilizeaza informaiile de depanare pentru a incerca sa gaseasca un nume de fiier i un numar de linie. Pentru un simbol definit, cauta numarul de linie al adresei simbolului. Pentru un simbol nedefinit, cauta numarul de linie al unei intrari de realocare care se refera la simbol. In cazul in care se pot gasi informaii despre numarul de linie, acestea se imprima dupa celelalte informaii despre simbol. --inlines Atunci cand opiunea -l este activa, daca adresa aparine unei funcii care a fost expandata in linie ,,inlined", atunci aceasta opiune determina afiarea i a informaiilor sursa pentru toate domeniile de cuprindere pana la prima funcie ne-expandata in linie ,,non-inlined". De exemplu, daca ,,main" expandeaza in linie ,,callee1" care expandeaza in linie ,,callee2", i adresa este din ,,callee2", informaiile sursa pentru ,,callee1" i ,,main" vor fi deasemenea afiate. -n -v --numeric-sort Sorteaza simbolurile numeric in funcie de adresele lor, mai degraba decat in ordine alfabetica dupa nume. -p --no-sort Nu se deranjeaza sa sorteze simbolurile in nicio ordine, ci le imprima in ordinea intalnita. -P --portability Utilizeaza formatul de ieire standard POSIX.2 in locul formatului implicit. Echivalent cu -f posix. -r --reverse-sort Inverseaza ordinea de sortare (fie ea numerica sau alfabetica); lasa ultimul sa fie primul. -S --print-size Imprima atat valoarea, cat i dimensiunea simbolurilor definite pentru stilul de ieire ,,bsd". Aceasta opiune nu are niciun efect pentru formatele de obiecte care nu inregistreaza dimensiunile simbolurilor, cu excepia cazului in care se utilizeaza i --size-sort, caz in care se afieaza o dimensiune calculata. -s --print-armap La enumerarea simbolurilor din membrii arhivei, include indexul: o cartografiere (stocata in arhiva prin ar sau ranlib) a modulelor care conin definiii pentru care nume. -t baza --radix=baza Utilizeaza baza ca baza pentru imprimarea valorilor simbolurilor. Aceasta trebuie sa fie d pentru zecimal, o pentru octal sau x pentru hexazecimal. -u --undefined-only Afieaza numai simbolurile nedefinite (cele externe fiecarui fiier obiect). In mod implicit, sunt afiate atat simbolurile definite, cat i cele nedefinite. -U --defined-only Afieaza numai simbolurile definite pentru fiecare fiier obiect. In mod implicit, sunt afiate atat simbolurile definite, cat i cele nedefinite. -V --version Afieaza numarul versiunii de nm i iese. -X Aceasta opiune este ignorata pentru compatibilitate cu versiunea AIX a nm. Aceasta accepta un parametru care trebuie sa fie irul 32_64. Modul implicit al AIX nm corespunde -X 32, care nu este acceptat de GNU nm. --plugin nume Incarca modulul numit nume pentru a adauga suport pentru alte tipuri de inte. Aceasta opiune este disponibila numai daca setul de instrumente a fost construit cu suportul pentru module activat. Daca opiunea --plugin nu este furnizata, dar suportul pentru module a fost activat, atunci nm parcurge fiierele din ${libdir}/bfd-plugins in ordine alfabetica i se utilizeaza primul modul de extensie care revendica obiectul in cauza. Va rugam sa reinei ca acest director de cautare de module nu este cel folosit de opiunea -plugin a ld. Pentru ca nm sa utilizeze modulul editorului de legaturi, acesta trebuie copiat in directorul ${libdir}/bfd-plugins. Pentru compilaiile bazate pe GCC, modulul editorului de legaturi se numete liblto_plugin.so.0.0.0.0. Pentru compilaiile bazate pe Clang, acesta se numete LLVMgold.so. Modulul GCC este intotdeauna compatibil cu versiunile anterioare, astfel incat este suficient sa se copieze doar cel mai nou. --size-sort Sorteaza simbolurile in funcie de dimensiune. Pentru obiectele ELF, dimensiunile simbolurilor sunt citite din ELF, iar pentru alte tipuri de obiecte, dimensiunile simbolurilor sunt calculate ca diferena intre valoarea simbolului i valoarea simbolului cu valoarea imediat superioara. In cazul in care se utilizeaza formatul de ieire ,,bsd", se imprima dimensiunea simbolului, i nu valoarea, iar -S trebuie sa fie utilizata pentru ca atat dimensiunea, cat i valoarea sa fie imprimate. Nota - aceasta opiune nu funcioneaza daca --undefined-only a fost activata, deoarece simbolurile nedefinite nu au dimensiune. --special-syms Afieaza simbolurile care au o semnificaie speciala specifica pentru inta. Aceste simboluri sunt utilizate de obicei de catre inta pentru anumite prelucrari speciale i, in mod normal, nu sunt utile atunci cand sunt incluse in listele normale de simboluri. De exemplu, pentru intele ARM, aceasta opiune ar omite simbolurile de cartografiere utilizate pentru a marca tranziiile intre codul ARM, codul THUMB i date. --synthetic Include simbolurile sintetice in rezultat. Acestea sunt simboluri speciale create de catre editorul de legaturi in diverse scopuri. Ele nu sunt afiate in mod implicit, deoarece nu fac parte din codul sursa original al binarului. --unicode=[default|invalid|locale|escape|hex|highlight] Controleaza afiarea caracterelor multi-octet codificate UTF-8 in iruri de caractere. In mod implicit (--unicode=default), acestea nu beneficiaza de un tratament special. Opiunea --unicode=locale afieaza secvena in limba locala curenta, care poate sa le suporte sau nu. Opiunile --unicode=hex i --unicode=invalid le afieaza sub forma de secvene de octei hexazecimali, incadrate fie de paranteze unghiulare, fie de paranteze drepte. Opiunea --unicode=escape le afieaza ca secvene de eludare (\uxxxx), iar opiunea --unicode=highlight le afieaza ca secvene de eludare evideniate cu rou (daca sunt acceptate de dispozitivul de ieire). Culoarea are rolul de a atrage atenia asupra prezenei secvenelor unicode acolo unde nu ar fi de ateptat. -W --no-weak Nu afieaza simboluri slabe. --with-symbol-versions --without-symbol-versions Activeaza sau dezactiveaza afiarea informaiilor privind versiunea simbolului. irul de versiuni este afiat ca sufix la numele simbolului, precedat de un caracter @. De exemplu, foo@VER_1. In cazul in care versiunea este versiunea implicita care urmeaza sa fie utilizata la rezolvarea trimiterilor la simbol fara versiune, aceasta este afiata sub forma unui sufix precedat de doua caractere @. De exemplu, foo@@VER_2. In mod implicit, se afieaza informaiile privind versiunea simbolului. --target=nume-bfd Specifica un alt format de cod obiect decat formatul implicit al sistemului dumneavoastra. @fiier Citete opiunile liniei de comanda din fiier. Opiunile citite sunt inserate in locul opiunii originale @fiier. Daca fiier nu exista sau nu poate fi citit, atunci opiunea va fi tratata literal i nu va fi eliminata. Opiunile din fiier sunt separate prin spaii albe. Un caracter de spaiere poate fi inclus intr-o opiune prin includerea intregii opiuni intre ghilimele simple sau duble. Orice caracter (inclusiv o bara oblica inversa) poate fi inclus prin prefixarea caracterului care urmeaza sa fie inclus cu o bara oblica inversa. fiier poate conine la randul sau opiuni @fiier suplimentare; orice astfel de opiuni vor fi procesate in mod recursiv. CONSULTAI I ar(1), objdump(1), ranlib(1), i intrarile Info pentru binutils. DREPTURI DE AUTOR Drepturi de autor (C) 1991-2024 Free Software Foundation, Inc. Se acorda permisiunea de a copia, distribui i/sau modifica acest document in conformitate cu termenii Licenei GNU Free Documentation, versiunea 1.3 sau orice versiune ulterioara publicata de Free Software Foundation; fara seciuni invariante, fara texte de coperta i fara texte de contra coperta. O copie a licenei este inclusa in seciunea intitulata ,,GNU Free Documentation License". TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . binutils-2.42.0 7 mai 2024 NM(1)