OBJCOPY(1) Instrumente pentru dezvoltare(programare) GNU OBJCOPY(1) NUME objcopy - copiaza i traduce fiiere obiect SINOPSIS objcopy [-F nume-bfd|--target=nume-bfd] [-I nume-bfd|--input-target=nume-bfd] [-O nume-bfd|--output-target=nume-bfd] [-B arhitectura-bfd|--binary-architecture=arhitectura-bfd] [-S|--strip-all] [-g|--strip-debug] [--strip-unneeded] [-K nume-simbol|--keep-symbol=nume-simbol] [--keep-file-symbols] [--keep-section-symbols] [-N nume-simbol|--strip-symbol=nume-simbol] [--strip-unneeded-symbol=nume-simbol] [-G nume-simbol|--keep-global-symbol=nume-simbol] [--localize-hidden] [-L nume-simbol|--localize-symbol=nume-simbol] [--globalize-symbol=nume-simbol] [--globalize-symbols=nume-fiier] [-W nume-simbol|--weaken-symbol=nume-simbol] [-w|--wildcard] [-x|--discard-all] [-X|--discard-locals] [-b octet|--byte=octet] [-i [intindere]|--interleave[=intindere]] [--interleave-width=laime] [-j model-seciune|--only-section=model-seciune] [-R model-seciune|--remove-section=model-seciune] [--keep-section=model-seciune] [--remove-relocations=model-seciune] [--strip-section-headers] [-p|--preserve-dates] [-D|--enable-deterministic-archives] [-U|--disable-deterministic-archives] [--debugging] [--gap-fill=valoare] [--pad-to=adresa] [--set-start=valoare] [--adjust-start=increment] [--change-addresses=increment] [--change-section-address model-seciune{=,+,-}valoare] [--change-section-lma model-seciune{=,+,-}valoare] [--change-section-vma model-seciune{=,+,-}valoare] [--change-warnings] [--no-change-warnings] [--set-section-flags model-seciune=fanioane] [--set-section-alignment model-seciune=alinierea] [--add-section sectionname=nume-fiier] [--dump-section sectionname=nume-fiier] [--update-section sectionname=nume-fiier] [--rename-section nume-vechi=nume-nou[,fanioane]] [--long-section-names {enable,disable,keep}] [--change-leading-char] [--remove-leading-char] [--reverse-bytes=numar] [--srec-len=valoare] [--srec-forceS3] [--redefine-sym vechi=nou] [--redefine-syms=nume-fiier] [--weaken] [--keep-symbols=nume-fiier] [--strip-symbols=nume-fiier] [--strip-unneeded-symbols=nume-fiier] [--keep-global-symbols=nume-fiier] [--localize-symbols=nume-fiier] [--weaken-symbols=nume-fiier] [--binary-symbol-prefixstring][--add-symbol nume=[seciune:]valoare[,fanioane]] [--alt-machine-code=indice] [--prefix-symbols=ir] [--prefix-sections=ir] [--prefix-alloc-sections=ir] [--add-gnu-debuglink=ruta-catre-fiier] [--only-keep-debug] [--strip-dwo] [--extract-dwo] [--extract-symbol] [--writable-text] [--readonly-text] [--pure] [--impure] [--file-alignment=numar] [--heap=rezerva[,angajata]] [--image-base=adresa] [--section-alignment=numar] [--stack=rezerva[,angajata]] [--subsystem=care:major.minor] [--compress-debug-sections] [--decompress-debug-sections] [--elf-stt-common=valoare] [--merge-notes] [--no-merge-notes] [--verilog-data-width=valoare] [-v|--verbose] [-V|--version] [--help] [--info] fiier-intrare [fiier-ieire] DESCRIERE Instrumentul GNU objcopy copiaza coninutul unui fiier obiect in altul. objcopy utilizeaza biblioteca GNU BFD pentru citirea i scrierea fiierelor obiect. Acesta poate scrie fiierul obiect de destinaie intr-un format diferit de cel al fiierului obiect sursa. Comportamentul exact al objcopy este controlat de opiunile din linia de comanda. Reinei ca objcopy ar trebui sa fie capabil sa copieze un fiier complet legat intre oricare doua formate. Cu toate acestea, copierea unui fiier obiect realocabil intre oricare doua formate poate sa nu funcioneze conform ateptarilor. objcopy creeaza fiiere temporare pentru efectuarea conversiilor i le terge dupa aceea. objcopy utilizeaza BFD pentru a-i efectua toate conversiile; are acces la toate formatele descrise in BFD i, prin urmare, este capabil sa recunoasca majoritatea formatelor fara a i se spune explicit. objcopy poate fi utilizat pentru a genera S-records utilizand o inta de ieire srec (de exemplu, utilizai -O srec). objcopy poate fi utilizat pentru a genera un fiier binar brut utilizand o inta de ieire binary (de exemplu, utilizai -O binary). Atunci cand objcopy genereaza un fiier binar brut, acesta va produce in esena o descarcare din memorie a coninutului fiierului obiect de intrare. Toate simbolurile i informaiile de relocare vor fi eliminate. Descarcarea din memorie va incepe la adresa de incarcare a celei mai mici seciuni copiate in fiierul de ieire. La generarea unei inregistrari S sau a unui fiier binar brut, poate fi util sa se utilizeze -S pentru a elimina seciunile care conin informaii de depanare. In unele cazuri, -R va fi util pentru a elimina seciunile care conin informaii care nu sunt necesare pentru fiierul binar. Nota---objcopy nu este capabil sa schimbe endianness-ul fiierelor sale de intrare. Daca formatul de intrare are un endianness (unele formate nu au), objcopy poate copia intrarile numai in formate de fiiere care au acelai endianness sau care nu au endianness (de exemplu, srec). (Cu toate acestea, a se vedea opiunea --reverse-bytes). OPIUNI fiier-intrare fiier-ieire Fiierele de intrare i, respectiv, de ieire. Daca nu specificai fiier-ieire, objcopy creeaza un fiier temporar i redenumete distructiv rezultatul cu numele fiier-intrare. -I nume-bfd --input-target=nume-bfd Considera ca formatul obiect al fiierului sursa este nume-bfd, in loc sa incerce sa il deduca. -O nume-bfd --output-target=nume-bfd Scrie fiierul de ieire utilizand formatul obiectului nume-bfd. -F nume-bfd --target=nume-bfd Utilizeaza nume-bfd ca format obiect atat pentru fiierul de intrare, cat i pentru cel de ieire; de exemplu, transfera pur i simplu datele de la sursa la destinaie fara transformare. -B arhitectura-bfd --binary-architecture=arhitectura-bfd Util in cazul transformarii unui fiier de intrare fara arhitectura intr-un fiier obiect. In acest caz, arhitectura de ieire poate fi stabilita la arhitectura-bfd. Aceasta opiune va fi ignorata daca fiierul de intrare are o arhitectura-bfd cunoscuta. Putei accesa aceste date binare in interiorul unui program facand referire la simbolurile speciale care sunt create de procesul de conversie. Aceste simboluri se numesc _binary_fiier-obiect_start, _binary_fiier-obiect_end i _binary_fiier-obiect_size. de exemplu, putei transforma un fiier imagine intr-un fiier obiect i apoi il putei accesa in codul dvs. utilizand aceste simboluri. -j model-seciune --only-section=model-seciune Copiaza numai seciunile indicate din fiierul de intrare in fiierul de ieire. Aceasta opiune poate fi data de mai multe ori. Reinei ca utilizarea necorespunzatoare a acestei opiuni poate face inutilizabil fiierul de ieire. Caracterele joker sunt acceptate in model-seciune. Daca primul caracter din model-seciune este semnul exclamarii (!), atunci seciunile corespunzatoare nu vor fi copiate, chiar daca utilizarea anterioara a lui --only-section pe aceeai linie de comanda le-ar fi copiat. De exemplu: --only-section=.text.* --only-section=!.text.foo va copia toate seciunile care se potrivesc cu ,,text.*", dar nu i seciunea ,,text.foo". -R model-seciune --remove-section=model-seciune Elimina orice seciune care corespunde model-seciune din fiierul de ieire. Aceasta opiune poate fi data de mai multe ori. Reinei ca utilizarea necorespunzatoare a acestei opiuni poate face inutilizabil fiierul de ieire. Caracterele joker sunt acceptate in model-seciune. Utilizarea simultana a opiunilor -j i -R duce la un comportament nedefinit. Daca primul caracter din model-seciune este semnul exclamarii (!), atunci seciunile corespunzatoare nu vor fi eliminate chiar daca o utilizare anterioara a --remove-section pe aceeai linie de comanda ar fi eliminat-o in caz contrar. De exemplu: --remove-section=.text.* --remove-section=!.text.foo va elimina toate seciunile care corespund modelului '.text.*', dar nu va elimina seciunea '.text.foo'. --keep-section=model-seciune Atunci cand se elimina seciuni din fiierul de ieire, pastreaza seciunile care se potrivesc cu model-seciune. --remove-relocations=model-seciune Elimina realocarile non-dinamice din fiierul de ieire pentru orice seciune care corespunde model-seciune. Aceasta opiune poate fi data de mai multe ori. Reinei ca utilizarea necorespunzatoare a acestei opiuni poate face fiierul de ieire inutilizabil, iar incercarea de a elimina o seciune de realocare dinamica precum .rela.plt dintr-un executabil sau biblioteca partajata cu --remove-relocations=.plt nu va funciona. Caracterele joker sunt acceptate in model-seciune. De exemplu: --remove-relocations=.text.* va elimina realocarile pentru toate seciunile care corespund modelului ,,&.text.*". Daca primul caracter din model-seciune este semnul exclamarii (!), atunci seciunile care se potrivesc nu vor avea realocarile eliminate, chiar daca o utilizare anterioara a --remove-relocations pe aceeai linie de comanda ar fi determinat altfel eliminarea realocarilor. De exemplu: --remove-relocations=.text.* --remove-relocations=!.text.foo va elimina toate realocarile pentru seciunile care corespund modelului '.text.*', dar nu va elimina realocarile pentru seciunea '.text.foo'. --strip-section-headers Elimina antetul seciunii. Aceasta opiune este specifica fiierelor ELF. Implica --strip-all i --merge-notes. -S --strip-all Nu copiaza informaiile privind realocarea i simbolurile din fiierul sursa. De asemenea, terge seciunile de depanare. -g --strip-debug Nu copiaza simboluri sau seciuni de depanare din fiierul sursa. --strip-unneeded Elimina toate simbolurile care nu sunt necesare pentru procesarea realocarii, in plus faa de simbolurile de depanare i seciunile eliminate de --strip-debug. -K nume-simbol --keep-symbol=nume-simbol La eliminarea simbolurilor, pastreaza simbolul nume-simbol chiar daca in mod normal ar fi eliminat. Aceasta opiune poate fi data de mai multe ori. -N nume-simbol --strip-symbol=nume-simbol Nu copiaza simbolul nume-simbol din fiierul sursa. Aceasta opiune poate fi data de mai multe ori. --strip-unneeded-symbol=nume-simbol Nu copiaza simbolul nume-simbol din fiierul sursa decat daca este necesar pentru o realocare. Aceasta opiune poate fi data de mai multe ori. -G nume-simbol --keep-global-symbol=nume-simbol Menine doar simbolul simbolname global. Face toate celelalte simboluri locale pentru fiier, astfel incat acestea sa nu fie vizibile din exterior. Aceasta opiune poate fi data de mai multe ori. Nota: aceasta opiune nu poate fi utilizata impreuna cu opiunile --globalize-symbol sau --globalize-symbols. --localize-hidden Intr-un obiect ELF, marcheaza toate simbolurile care au vizibilitate ascunsa sau interna ca fiind locale. Aceasta opiune se aplica in plus faa de opiunile de localizare specifice simbolurilor, cum ar fi -L. -L nume-simbol --localize-symbol=nume-simbol Convertete un simbol global sau slab numit nume-simbol intr-un simbol local, astfel incat acesta sa nu fie vizibil din exterior. Aceasta opiune poate fi data de mai multe ori Nota - simbolurile unice nu sunt convertite. -W nume-simbol --weaken-symbol=nume-simbol Face simbolul nume-simbol slab. Aceasta opiune poate fi data de mai multe ori. --binary-symbol-prefix=ir Cand este utilizata cu --input-target=binary, definete ir ca nume de baza pentru simbolurile generate pentru fiierul de intrare. Aceste simboluri sunt: <ir>_start <ir>_end <ir>_size In mod implicit, gestionarul de intrare binara deriva numele simbolului prefixului dintr-o versiune modificata a numelui fiierului de intrare i prefixul _binary. Aceasta opiune permite specificarea explicita a acestuia. --globalize-symbol=nume-simbol Ofera simbolului nume-simbol domeniul de aplicare global, astfel incat acesta sa fie vizibil in afara fiierului in care este definit. Aceasta opiune poate fi data de mai multe ori. Nota: aceasta opiune nu poate fi utilizata impreuna cu opiunile -G sau --keep-global-symbol. -w --wildcard Permite expresii regulate in nume-simbols utilizate in alte opiuni din linia de comanda. Operatorii semn de intrebare (?), asterisc (*), bara oblica inversa (\) i parantezele drepte ([]) pot fi utilizate oriunde in numele simbolului. Daca primul caracter din numele simbolului este semnul exclamarii (!), atunci sensul opiunii este inversat pentru acel simbol. De exemplu: -w -W !foo -W fo* va determina objcopy sa slabeasca toate simbolurile care incep cu ,,fo", cu excepia simbolului ,,foo". -x --discard-all Nu copiaza simbolurile non-globale din fiierul sursa. -X --discard-locals Nu copiaza simbolurile locale generate de compilator. (Acestea incep de obicei cu L sau ..) -b octet --byte=octet Daca intercalarea a fost activata prin opiunea --interleave, atunci incepe intervalul de octei de pastrat de la octetul octet. octet poate fi cuprins intre 0 i intindere-1, unde intindere este valoarea data de opiunea --interleave. -i [intindere] --interleave[=intindere] Copiaza doar un interval din fiecare intindere octei. (Datele de antet nu sunt afectate). Selecteaza octetul din interval care incepe copierea cu opiunea --byte. Selecteaza laimea intervalului cu opiunea --interleave-width. Aceasta opiune este utila pentru crearea de fiiere pentru programul ROM. Este utilizata de obicei cu o inta de ieire "srec". Reinei ca objcopy se va plange daca nu specificai i opiunea --byte. Intinderea implicita de intercalare este de 4, deci cu --byte stabilita la 0, objcopy ar copia primul octet din fiecare patru octei de la intrare, la ieire. --interleave-width=laime Atunci cand se utilizeaza cu opiunea --interleave, se copiaza laime octei la un moment dat. Inceputul intervalului de octei de copiat este stabilit de opiunea --byte, iar intinderea intervalului este stabilita cu opiunea --interleave. Valoarea implicita pentru aceasta opiune este 1. Valoarea laime plus valoarea octet stabilita prin opiunea --octet nu trebuie sa depaeasca intinderea de intercalare stabilita prin opiunea --interleave. Aceasta opiune poate fi utilizata pentru a crea imagini pentru doua cliee de 16 bii intercalate intr--o magistrala de 32 de bii trecand -b 0 -i 4 --interleave-width=2 i -b 2 -i 4 --interleave-width=2 la doua comenzi objcopy. Daca intrarea a fost ,,12345678", atunci ieirile vor fi ,,1256" i, respectiv, ,,3478". -p --preserve-dates Stabilete ca datele de acces i de modificare ale fiierului de ieire sa fie aceleai cu cele ale fiierului de intrare. Aceasta opiune copiaza, de asemenea, data stocata in antetul unui fiier format PE, cu excepia cazului in care este definita variabila de mediu SOURCE_DATE_EPOCH. Daca este definita, atunci aceasta variabila va fi utilizata ca data stocata in antet, interpretata ca numar de secunde de la epoca Unix. -D --enable-deterministic-archives Funcioneaza in modul determinist. La copierea membrilor arhivei i la scrierea indexului arhivei, se utilizeaza zero pentru UID-uri, GID-uri, marcaje de timp i se utilizeaza moduri de fiier coerente pentru toate fiierele. Daca binutils a fost configurat cu --enable-deterministic-archives, atunci acest mod este activat in mod implicit. Acesta poate fi dezactivat cu opiunea -U, de mai jos. -U --disable-deterministic-archives Nu funcioneaza in modul determinist. Aceasta este inversa opiunii -D, de mai sus: atunci cand copiaza membrii arhivei i scrie indexul arhivei, utilizeaza valorile lor reale UID, GID, marcaj de timp i modul de fiier. Aceasta este valoarea implicita, cu excepia cazului in care binutils a fost configurat cu --enable-deterministic-archives. --debugging Convertete informaiile de depanare, daca este posibil. Aceasta nu este opiunea implicita, deoarece sunt acceptate numai anumite formate de depanare, iar procesul de conversie poate dura mult. --gap-fill valoare Umple golurile dintre seciuni cu valoare. Aceasta operaie se aplica la adresa de incarcare (LMA) a seciunilor. Se realizeaza prin creterea dimensiunii seciunii cu adresa inferioara i umplerea spaiului suplimentar creat cu valoare. --pad-to adresa Completeaza fiierul de ieire pana la adresa de incarcare adresa. Acest lucru se realizeaza prin creterea dimensiunii ultimei seciuni. Spaiul suplimentar este umplut cu valoarea specificata de --gap-fill (implicit zero). --set-start valoare Stabilete adresa de inceput (cunoscuta i ca adresa de intrare) a noului fiier la valoare. Nu toate formatele de fiiere obiect accepta definirea adresei de inceput. --change-start increment --adjust-start increment Schimba adresa de pornire (cunoscuta i ca adresa de intrare) prin adaugarea increment. Nu toate formatele de fiiere obiect accepta definirea adresei de inceput. --change-addresses increment --adjust-vma increment Schimba adresele VMA i LMA ale tuturor seciunilor, precum i adresa de inceput, adaugand increment. Unele formate de fiiere obiect nu permit schimbarea arbitrara a adreselor seciunilor. Reinei ca aceasta opiune nu realoca seciunile; daca programul se ateapta ca seciunile sa fie incarcate la o anumita adresa, iar aceasta opiune este utilizata pentru a schimba seciunile astfel incat acestea sa fie incarcate la o adresa diferita, programul poate eua. --change-section-address model-seciune{=,+,-}valoare --adjust-section-vma model-seciune{=,+,-}valoare Stabilete sau modifica atat adresa VMA, cat i adresa LMA a oricarei seciuni care corespunde model-seciune. Daca se utilizeaza =, adresa seciunii este stabilita la valoare. In caz contrar, valoare este adaugata sau scazuta din adresa seciunii. A se vedea comentariile de la --change-addresses, de mai sus. Daca model-seciune nu se potrivete cu nicio seciune din fiierul de intrare, va fi emis un avertisment, cu excepia cazului in care se utilizeaza opiunea --no-change-warnings. --change-section-lma model-seciune{=,+,-}valoare Stabilete sau modifica adresa LMA a oricarei seciuni care corespunde model-seciune. Adresa LMA este adresa la care seciunea va fi incarcata in memorie in momentul incarcarii programului. In mod normal, aceasta este aceeai cu adresa VMA, care este adresa seciunii la momentul rularii programului, dar pe unele sisteme, in special pe cele in care programul este pastrat in ROM, cele doua pot fi diferite. Daca se utilizeaza =, adresa seciunii este stabilita la valoare. In caz contrar, valoarea este adaugata sau scazuta din adresa seciunii. A se vedea comentariile de la --change-addresses, de mai sus. Daca model-seciune nu se potrivete cu nicio seciune din fiierul de intrare, va fi emis un avertisment, cu excepia cazului in care se utilizeaza opiunea --no-change-warnings. --change-section-vma model-seciune{=,+,-}valoare Definete sau modifica adresa VMA a oricarei seciuni care corespunde model-seciune. Adresa VMA este adresa la care va fi localizata seciunea odata ce programul a inceput execuia. In mod normal, aceasta este aceeai cu adresa LMA, care este adresa la care seciunea va fi incarcata in memorie, dar pe unele sisteme, in special pe cele in care un program este pastrat in ROM, cele doua pot fi diferite. Daca se utilizeaza =, adresa seciunii este stabilita la valoare. In caz contrar, valoare este adaugata sau scazuta din adresa seciunii. A se vedea comentariile de la opiunea --change-addresses, de mai sus. Daca model-seciune nu se potrivete cu nicio seciune din fiierul de intrare, va fi emis un avertisment, cu excepia cazului in care se utilizeaza opiunea --no-change-warnings. Nota - modificarea VMA a seciunilor intr-un binar complet legat poate fi periculoasa, deoarece poate exista cod care se ateapta ca seciunile sa fie localizate la vechea lor adresa. --change-warnings --adjust-warnings Daca se utilizeaza --change-section-address sau --change-section-lma sau --change-section-vma, iar modelul de seciune nu corespunde niciunei seciuni, se emite un avertisment. Aceasta este valoarea implicita. --no-change-warnings --no-adjust-warnings Nu emite un avertisment daca se utilizeaza --change-section-address sau --adjust-section-lma sau --adjust-section-vma, chiar daca modelul de seciune nu corespunde niciunei seciuni. --set-section-flags model-seciune=fanioane Stabilete fanioanele pentru toate seciunile care se potrivesc cu model-seciune. Argumentul fanioane este un ir de nume de fanioane separate prin virgule. Numele recunoscute sunt alloc, contents, load, noload, readonly, code, data, rom, exclude, share, debug i large. Putei defini fanionul contents pentru o seciune care nu are coninut, dar nu are sens sa tergei fanionul contents al unei seciuni care are coninut - eliminai seciunea in schimb. Nu toate fanioanele sunt semnificative pentru toate formatele de fiiere obiect. In special, fanionul share este valabil numai pentru fiierele in format COFF i nu pentru fiierele in format ELF. Fanionul specific ELF x86-64 large corespunde cu SHF_X86_64_LARGE. --set-section-alignment model-seciune=alinierea Stabilete alinierea pentru toate seciunile care corespund model-seciune. alinierea specifica alinierea in octei i trebuie sa fie o putere de doi, adica 1, 2, 4, 8.... Nota - definirea alinierii unei seciuni nu va alinia automat adresele sale LMA sau VMA. Daca i acestea trebuie modificate, atunci trebuie utilizate opiunile --change-section-lma i/sau --change-section-vma. De asemenea, reinei ca schimbarea VMA poate cauza probleme in binarele complet legate, unde poate exista cod care se ateapta ca coninutul seciunilor sa fie localizat la vechea lor adresa. --add-section model-seciune=nume-fiier Adauga o noua seciune numita nume-seciune in timp ce copiaza fiierul. Coninutul noii seciuni este preluat din fiierul nume-fiier. Dimensiunea seciunii va fi egala cu dimensiunea fiierului. Aceasta opiune funcioneaza numai pe formate de fiier care pot suporta seciuni cu nume arbitrare. Nota - este posibil sa fie necesara utilizarea opiunii --set-section-flags pentru a defini atributele seciunii nou create. --dump-section nume-seciune=nume-fiier Plaseaza coninutul seciunii numite nume-seciune in fiierul nume-fiier, suprascriind orice coninut care ar fi putut fi acolo anterior. Aceasta opiune este inversa faa de --add-section. Aceasta opiune este similara opiunii --only-section, cu excepia faptului ca nu creeaza un fiier formatat, ci doar descarca coninutul ca date binare brute, fara a aplica nicio realocare. Opiunea poate fi specificata de mai multe ori. --update-section nume-seciune=nume-fiier Inlocuiete coninutul existent al unei seciuni numita nume-seciune cu coninutul fiierului nume-fiier. Dimensiunea seciunii va fi ajustata la dimensiunea fiierului. Fanioanele seciunii pentru nume-seciune vor ramane neschimbate. Pentru fiierele in format ELF, corespondena dintre seciune i segment va ramane, de asemenea, neschimbata, ceea ce nu este posibil folosind --remove-section urmata de --add-section. Opiunea poate fi specificata de mai multe ori. Nota - este posibil sa utilizai --rename-section i --update-section pentru a actualiza i redenumi o seciune de pe aceeai linie de comanda. In acest caz, trecei numele original al seciunii la --update-section, iar numele original i cel nou al seciunii la --rename-section. --add-symbol nume=[seciune:]valoare[,fanioane] Adauga un nou simbol numit nume in timpul copierii fiierului. Aceasta opiune poate fi specificata de mai multe ori. Daca se indica seciunea, simbolul va fi asociat cu seciunea respectiva i va fi relativ la aceasta, altfel va fi un simbol ABS. Specificarea unei seciuni nedefinite va duc la o eroare fatala. Nu exista nicio verificare a valorii, aceasta va fi luata aa cum a fost specificata. Se pot specifica fanioane de simbol i nu toate fanioanele vor fi semnificative pentru toate formatele de fiiere obiect. In mod implicit, simbolul va fi global. Fanionul special ,,before=alt-simbol" va introduce noul simbol in faa simbolului alt-simbol specificat, in caz contrar simbolul (simbolurile) vor fi adaugate la sfaritul tabelului de simboluri in ordinea in care apar. --rename-section nume-vechi=nume-nou[,fanioane] Redenumete o seciune din nume-vechi in nume-nou, schimband opional fanioanele seciunii in fanioane in acest proces. Aceasta opiune are avantajul ca, faa de utilizarea unui script editor de legaturi pentru a efectua redenumirea, rezultatul ramane un fiier obiect i nu devine un executabil legat. Aceasta opiune accepta acelai set de fanioane ca i opiunea --set-section-flags. Aceasta opiune este deosebit de utila atunci cand formatul de intrare este binar, deoarece aceasta va crea intotdeauna o seciune numita .data. Daca, de exemplu, dorii in schimb sa creai o seciune numita .rodata care sa conina date binare, putei utiliza urmatoarea linie de comanda pentru a realiza acest lucru: objcopy -I binary -O ire> -B \ --rename-section .data=.rodata,alloc,load,readonly,data,contents \ ier_binar_intrare> ier_obiect_ieire --long-section-names {enable,disable,keep} Controleaza gestionarea numelor lungi de seciuni la prelucrarea formatelor de obiect "COFF" i "PE-COFF". Comportamentul implicit, keep, este de a pastra numele seciunilor lungi daca acestea sunt prezente in fiierul de intrare. Opiunile enable i disable activeaza sau dezactiveaza forat utilizarea numelor lungi de seciuni in obiectul de ieire; atunci cand disable este in vigoare, orice nume lungi de seciuni din obiectul de intrare vor fi trunchiate. Opiunea enable va emite nume lungi de seciuni numai daca acestea sunt prezente in datele de intrare; aceasta este in mare parte aceeai cu opiunea keep, dar nu este definit daca opiunea enable ar putea fora crearea unui tabel de iruri gol in fiierul de ieire. --change-leading-char Unele formate de fiiere obiect utilizeaza caractere speciale la inceputul simbolurilor. Cel mai comun astfel de caracter este liniua de subliniere, pe care compilatoarele o adauga adesea inaintea fiecarui simbol. Aceasta opiune ii indica lui objcopy sa schimbe caracterul de inceput al fiecarui simbol atunci cand convertete intre formate de fiiere obiect. Daca formatele fiierelor de obiecte utilizeaza acelai caracter iniial, aceasta opiune nu are niciun efect. In caz contrar, aceasta va adauga un caracter, va elimina un caracter sau va modifica un caracter, dupa caz. --remove-leading-char Daca primul caracter al unui simbol global este un caracter special de precedare a simbolului utilizat de formatul fiierului obiect, elimina caracterul. Cel mai frecvent caracter de precedare a simbolului este liniua de subliniere. Aceasta opiune va elimina liniua de subliniere de la toate simbolurile globale. Aceasta opiune poate fi utila daca dorii sa legai intre ele obiecte din diferite formate de fiier cu convenii diferite pentru numele simbolurilor. Aceasta opiune este diferita de --change-leading-char deoarece schimba intotdeauna numele simbolului atunci cand este cazul, indiferent de formatul fiierului obiect al fiierului de ieire. --reverse-bytes=numar Inverseaza octeii dintr-o seciune cu coninutul de ieire. Lungimea unei seciuni trebuie sa fie divizibila in mod egal cu valoarea data pentru a putea avea loc inversarea. Inversarea are loc inainte de efectuarea intercalarii. Aceasta opiune este utilizata de obicei in generarea imaginilor ROM pentru sistemele inta problematice. De exemplu, pe unele placi inta, cuvintele pe 32 de bii preluate din ROM-urile pe 8 bii sunt reasamblate in ordinea octeilor little-endian, indiferent de ordinea octeilor CPU-ului. In funcie de modelul de programare, este posibil sa fie necesara modificarea endianness-ului ROM-ului. Luai in considerare un fiier simplu cu o seciune care conine urmatorii opt octei: 12345678. Folosind --reverse-bytes=2 pentru exemplul de mai sus, octeii din fiierul de ieire vor fi ordonai 21436587. Folosind --reverse-bytes=4 pentru exemplul de mai sus, octeii din fiierul de ieire vor fi ordonai 43218765. Prin folosirea --reverse-bytes=2 pentru exemplul de mai sus, urmat de --reverse-bytes=4 pe fiierul de ieire, octeii din al doilea fiier de ieire vor fi ordonai 34127856. --srec-len=valoare Semnificativa numai pentru ieirea srec. Stabilete lungimea maxima a inregistrarilor Srecord produse la valoare. Aceasta lungime acopera atat adresa, cat i campurile de date i crc. --srec-forceS3 Semnificativa numai pentru ieirea srec. Evita generarea inregistrarilor S1/S2, creand un format de inregistrare exclusiv S3. --redefine-sym vechi=nou Schimba numele unui simbol vechi, in nou. Acest lucru poate fi util atunci cand incercai sa legai impreuna doua lucruri pentru care nu avei nicio sursa i exista coliziuni de nume. --redefine-syms=nume-fiier Aplica --redefine-sym fiecarei perechi de simboluri ,,vechi nou" enumerate in fiierul nume-fiier. nume-fiier este pur i simplu un fiier plan, cu o pereche de simboluri pe linie. Comentariile de linie pot fi introduse prin caracterul hash. Aceasta opiune poate fi data de mai multe ori. --weaken Schimba toate simbolurile globale din fiier pentru a fi slabe. Acest lucru poate fi util atunci cand se construiete un obiect care va fi legat cu alte obiecte utilizand opiunea -R a editorului de legaturi. Aceasta opiune este eficienta numai atunci cand se utilizeaza un format de fiier obiect care accepta simboluri slabe. --keep-symbols=nume-fiier Aplica opiunea --keep-symbol pentru fiecare simbol listat in fiierul nume-fiier. nume-fiier este pur i simplu un fiier plan, cu un nume de simbol pe linie. Comentariile de linie pot fi introduse prin caracterul hash. Aceasta opiune poate fi data de mai multe ori. --strip-symbols=nume-fiier Aplica opiunea --strip-symbol fiecarui simbol listat in fiierul nume-fiier. nume-fiier este pur i simplu un fiier plan, cu un nume de simbol pe linie. Comentariile de linie pot fi introduse prin caracterul hash. Aceasta opiune poate fi data de mai multe ori. --strip-unneeded-symbols=nume-fiier Aplica opiunea --strip-unneeded-symbol pentru fiecare simbol listat in fiierul nume-fiier. nume-fiier este pur i simplu un fiier plan, cu un nume de simbol pe linie. Comentariile de linie pot fi introduse prin caracterul hash. Aceasta opiune poate fi data de mai multe ori. --keep-global-symbols=nume-fiier Aplica opiunea --keep-global-symbol pentru fiecare simbol listat in fiierul nume-fiier. nume-fiier este pur i simplu un fiier plan, cu un nume de simbol pe linie. Comentariile de linie pot fi introduse prin caracterul hash. Aceasta opiune poate fi data de mai multe ori. --localize-symbols=nume-fiier Aplica opiunea --localize-symbol pentru fiecare simbol listat in fiierul nume-fiier. nume-fiier este pur i simplu un fiier plan, cu un nume de simbol pe linie. Comentariile de linie pot fi introduse prin caracterul hash. Aceasta opiune poate fi data de mai multe ori. --globalize-symbols=nume-fiier Aplica opiunea --globalize--symbol pentru fiecare simbol listat in fiierul nume-fiier. nume-fiier este pur i simplu un fiier plan, cu un nume de simbol pe linie. Comentariile de linie pot fi introduse prin caracterul hash. Aceasta opiune poate fi data de mai multe ori. Nota: aceasta opiune nu poate fi utilizata impreuna cu opiunile -G sau --keep-global-symbol. --weaken-symbols=nume-fiier Aplica opiunea --weaken-symbol pentru fiecare simbol listat in fiierul nume-fiier. nume-fiier este pur i simplu un fiier plan, cu un nume de simbol pe linie. Comentariile de linie pot fi introduse prin caracterul hash. Aceasta opiune poate fi data de mai multe ori. --alt-machine-code=indice Daca arhitectura de ieire are coduri de maina alternative, utilizeaza al indicelea cod in locul celui implicit. Acest lucru este util in cazul in care unei maini i se atribuie un cod oficial i lanul de instrumente adopta noul cod, dar alte aplicaii depind in continuare de utilizarea codului original. Pentru arhitecturile bazate pe ELF, daca alternativa indice nu exista, atunci valoarea este tratata ca un numar absolut care trebuie stocat in campul e_machine din antetul ELF. --writable-text Marcheaza textul de ieire ca fiind inscriptibil. Aceasta opiune nu este semnificativa pentru toate formatele de fiiere obiect. --readonly-text Marcheaza textul de ieire ca fiind protejat la scriere. Aceasta opiune nu este semnificativa pentru toate formatele de fiiere obiect. --pure Marcheaza fiierul de ieire ca fiind paginat la cerere. Aceasta opiune nu este semnificativa pentru toate formatele de fiiere obiect. --impure Marcheaza fiierul de ieire ca fiind impur. Aceasta opiune nu este semnificativa pentru toate formatele de fiiere obiect. --prefix-symbols=ir Prefixeaza toate simbolurile din fiierul de ieire cu ir. --prefix-sections=ir Prefixeaza toate numele seciunilor din fiierul de ieire cu ir. --prefix-alloc-sections=ir Prefixeaza toate numele tuturor seciunilor alocate din fiierul de ieire cu ir. --add-gnu-debuglink=ruta-catre-fiier Creeaza o seciune .gnu_debuglink care conine o referina la ruta-catre-fiier i o adauga la fiierul de ieire. Nota: fiierul de la ruta-catre-fiier trebuie sa existe. O parte a procesului de adaugare a seciunii .gnu_debuglink implica incorporarea in seciune a unei sume de control a coninutului fiierului de informaii de depanare. Daca fiierul de informaii de depanare este creat intr-o locaie, dar urmeaza sa fie instalat ulterior intr-o locaie diferita, atunci nu utilizai ruta catre locaia instalata. Opiunea --add-gnu-debuglink va eua deoarece fiierul instalat nu exista inca. In schimb, punei fiierul de informaii de depanare in directorul curent i utilizai opiunea --add-gnu-debuglink fara nicio componenta de director, astfel: objcopy --add-gnu-debuglink=foo.debug In momentul depanarii, depanatorul va incerca sa caute fiierul de informaii de depanare separat intr-un set de locaii cunoscute. Setul exact al acestor locaii variaza in funcie de distribuia utilizata, dar de obicei include: o Acelai director cu fiierul executabil. o Un subdirector din directorul care conine executabilul numit .debug. o Un director global de depanare, cum ar fi ,,/usr/lib/debug". Atata timp cat fiierul cu informaii de depanare a fost instalat intr-una dintre aceste locaii inainte de rularea depanatorului, totul ar trebui sa funcioneze corect. --keep-section-symbols Atunci cand se elimina un fiier, poate cu --strip-debug sau --strip-unneeded, pastreaza toate simbolurile care specifica nume de seciuni, care altfel ar fi eliminate. --keep-file-symbols Atunci cand se elimina un fiier, poate cu --strip-debug sau --strip-unneeded, pastreaza toate simbolurile care specifica nume de fiiere sursa, care altfel ar fi eliminate. --only-keep-debug Curaa un fiier, eliminand coninutul oricarei seciuni care nu ar fi eliminata de --strip-debug i lasand seciunile de depanare intacte. In fiierele ELF, acest lucru pastreaza toate seciunile de note in ieire. Nota - antetele seciunilor eliminate sunt pastrate, inclusiv dimensiunile lor, dar coninutul seciunii este eliminat. Antetele seciunilor sunt pastrate pentru ca alte instrumente sa poata compara fiierul de depanare cu executabilul real, chiar daca acesta a fost realocat intr-un spaiu de adrese diferit. Intenia este ca aceasta opiune sa fie utilizata impreuna cu --add-gnu-debuglink pentru a crea un executabil din doua pari. Unul este un fiier binar curaat, care va ocupa mai puin spaiu in RAM i in distribuie, iar al doilea este un fiier de informaii de depanare, care este necesar doar daca sunt necesare abilitai de depanare. Procedura sugerata pentru a crea aceste fiiere este urmatoarea: 1. Leaga executabilul in mod normal. Presupunand ca acesta este numit "foo" apoi.. 2. Rulai "objcopy --only-keep-debug foo foo.dbg" pentru a crea un fiier care conine informaiile de depanare. 3. Rulai "objcopy --strip-debug foo" pentru a crea un executabil simplificat. 4. Rulai "objcopy --add-gnu-debuglink=foo.dbg foo" pentru a adauga o legatura catre informaiile de depanare in executabilul curaat. Nota - alegerea ,,.dbg" ca extensie pentru fiierul de informaii de depanare este arbitrara. De asemenea, pasul ,,--only-keep-debug" este opional. In schimb, ai putea face aa: 1. Leaga executabilul in mod normal. 2. Copiaza "foo" la "foo.full". 3. Rulai "objcopy --strip-debug foo". 4. Rulai "objcopy --add-gnu-debuglink=foo.full foo". adica, fiierul indicat de --add-gnu-debuglink poate fi executabilul complet. Nu trebuie sa fie un fiier creat de opiunea --only-keep-debug. Nota - aceasta opiune este destinata utilizarii numai pentru fiierele complet legate. Nu are sens sa fie utilizat in cazul fiierelor obiect, unde informaiile de depanare pot fi incomplete. In plus, caracteristica gnu_debuglink suporta in prezent doar prezena unui singur nume de fiier care conine informaii de depanare, nu mai multe nume de fiiere pentru fiecare fiier obiect in parte. --strip-dwo Elimina coninutul tuturor seciunilor DWARF .dwo, lasand seciunile de depanare ramase i toate simbolurile intacte. Aceasta opiune este destinata utilizarii de catre compilator ca parte a opiunii -gsplit-dwarf, care imparte informaiile de depanare intre fiierul .o i un fiier .dwo separat. Compilatorul genereaza toate informaiile de depanare in acelai fiier, apoi utilizeaza opiunea --extract-dwo pentru a copia seciunile .dwo in fiierul .dwo, apoi opiunea --strip-dwo pentru a elimina aceste seciuni din fiierul .o original. --extract-dwo Extrage coninutul tuturor seciunilor DWARF .dwo. Consultai opiunea --strip-dwo pentru mai multe informaii. --file-alignment numar Specifica alinierea fiierului. Seciunile din fiier vor incepe intotdeauna la poziii de fiier care sunt multipli ai acestui numar. Valoarea implicita este 512. [Aceasta opiune este specifica intelor PE.] --heap rezerva --heap rezerva,angajata Specifica numarul de octei de memorie care trebuie rezervai (i opional angajai) pentru a fi utilizai ca gramada pentru acest program. [Aceasta opiune este specifica intelor PE.] --image-base valoare Utilizeaza valoare ca adresa de baza a programului sau a dll-ului dumneavoastra. Aceasta este cea mai joasa locaie de memorie care va fi utilizata atunci cand programul sau dll-ul dumneavoastra este incarcat. Pentru a reduce nevoia de realocare i pentru a imbunatai performana dll-urilor dvs., fiecare trebuie sa aiba o adresa de baza unica i sa nu se suprapuna peste alte dll-uri. Valoarea implicita este 0x400000 pentru executabile i 0x10000000 pentru dll-uri. [Aceasta opiune este specifica obiectivelor PE.] --section-alignment numar [Aceasta opiune este specifica intelor PE.] Stabilete campul de aliniere a seciunii din antetul PE - daca este prezent unul in binar. Seciunile din memorie vor incepe intotdeauna la adrese care sunt un multiplu al acestui numar. Valoarea implicita este 0x1000. Nota - daca adresele LMA sau VMA ale unei seciuni nu mai sunt aliniate i aceste adrese nu au fost definite prin intermediul opiunilor --set-section-lma sau --set-section-vma, iar fiierul a fost complet realocat, atunci va fi emis un mesaj de avertizare. Utilizatorul va trebui sa decida daca LMA i VMA trebuie actualizate. --stack rezerva --stack rezerva,angajata Specifica numarul de octei de memorie care urmeaza sa fie rezervai (i opional angajai) pentru a fi utilizai ca stiva pentru acest program. [Aceasta opiune este specifica intelor PE.] --subsystem care --subsystem care:major --subsystem care:major.minor Specifica subsistemul sub care se va executa programul dumneavoastra. Valorile valide pentru which sunt "native", "windows", "console", "posix", "efi-app", "efi-bsd", "efi-rtd", "sal-rtd", i "xbox". Opional, putei defini i versiunea subsistemului. Valorile numerice sunt acceptate i pentru which. [Aceasta opiune este specifica intelor PE.] --extract-symbol Pastreaza fanioanele i simbolurile de seciune ale fiierului, dar elimina toate datele de seciune. Mai exact, aceasta opiune: o Elimina coninutul tuturor seciunilor. o Stabilete dimensiunea fiecarei seciuni la zero. o Pune adresa de start a fiierului la zero. Aceasta opiune este utilizata pentru a crea un fiier .sym pentru un nucleu VxWorks. Poate fi, de asemenea, o modalitate utila de a reduce dimensiunea unui fiier de intrare al editorului de legaturi cu --just-symbols. --compress-debug-sections Comprima seciunile de depanare DWARF utilizand zlib cu SHF_COMPRESSED din ABI ELF. Nota - daca comprimarea ar face de fapt o seciune mai mare, atunci aceasta nu este comprimata. --compress-debug-sections=none --compress-debug-sections=zlib --compress-debug-sections=zlib-gnu --compress-debug-sections=zlib-gabi --compress-debug-sections=zstd Pentru fiierele ELF, aceste opiuni controleaza modul in care sunt comprimate seciunile de depanare DWARF. --compress-debug-sections=none este echivalenta cu --decompress-debug-sections. --compress-debug-sections=zlib i --compress-debug-sections=zlib-gabi sunt echivalente cu --compress-debug-sections. --compress-debug-sections=zlib-gnu comprima seciunile de depanare DWARF utilizand formatul invechit zlib-gnu. Seciunile de depanare sunt redenumite pentru a incepe cu .zdebug. --compress-debug-sections=zstd comprima seciunile de depanare DWARF utilizand zstd. Nota - daca comprimarea ar face de fapt o seciune mai mare, atunci aceasta nu este nici comprimata, nici redenumita. --decompress-debug-sections Decomprima seciunile de depanare DWARF. Pentru o seciune .zdebug, numele original este restaurat. --elf-stt-common=yes --elf-stt-common=no Pentru fiierele ELF, aceste opiuni controleaza daca simbolurile comune trebuie convertite la tipul "STT_COMMON" sau "STT_OBJECT". --elf-stt-common=yes convertete tipul de simbol comun in "STT_COMMON". --elf-stt-common=no convertete tipul de simbol comun in "STT_OBJECT". --merge-notes --no-merge-notes Pentru fiierele ELF, incearca (sau nu incearca) sa reduca dimensiunea oricarei seciuni de tip SHT_NOTE prin eliminarea notelor duplicate. -V --version Afieaza numarul versiunii objcopy. --verilog-data-width=octei Pentru ieirea Verilog, aceasta opiune controleaza numarul de octei convertii pentru fiecare element de date de ieire. inta de intrare controleaza ,,endianness-ul", ordinea de octei a conversiei. -v --verbose Ieire detaliata: listeaza toate fiierele obiect modificate. In cazul arhivelor, objcopy -V enumera toi membrii arhivei. --help Afieaza un rezumat al opiunilor pentru objcopy. --info Afieaza o lista cu toate arhitecturile i formatele de obiecte disponibile. @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 ld(1), objdump(1), i intrarile Info pentru binutils. DREPTURI DE AUTOR Drepturi de autor (C) 1991-2026 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.46.0 1 mai 2026 OBJCOPY(1)