12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723 |
- This is binutils.info, produced by makeinfo version 6.7 from
- binutils.texi.
- Copyright (C) 1991-2020 Free Software Foundation, Inc.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3 or
- any later version published by the Free Software Foundation; with no
- Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
- Texts. A copy of the license is included in the section entitled "GNU
- Free Documentation License".
- INFO-DIR-SECTION Software development
- START-INFO-DIR-ENTRY
- * Binutils: (binutils). The GNU binary utilities.
- END-INFO-DIR-ENTRY
- INFO-DIR-SECTION Individual utilities
- START-INFO-DIR-ENTRY
- * addr2line: (binutils)addr2line. Convert addresses to file and line.
- * ar: (binutils)ar. Create, modify, and extract from archives.
- * c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols.
- * cxxfilt: (binutils)c++filt. MS-DOS name for c++filt.
- * dlltool: (binutils)dlltool. Create files needed to build and use DLLs.
- * nm: (binutils)nm. List symbols from object files.
- * objcopy: (binutils)objcopy. Copy and translate object files.
- * objdump: (binutils)objdump. Display information from object files.
- * ranlib: (binutils)ranlib. Generate index to archive contents.
- * readelf: (binutils)readelf. Display the contents of ELF format files.
- * size: (binutils)size. List section sizes and total size.
- * strings: (binutils)strings. List printable strings from files.
- * strip: (binutils)strip. Discard symbols.
- * elfedit: (binutils)elfedit. Update ELF header and property of ELF files.
- * windmc: (binutils)windmc. Generator for Windows message resources.
- * windres: (binutils)windres. Manipulate Windows resources.
- END-INFO-DIR-ENTRY
- File: binutils.info, Node: Top, Next: ar, Up: (dir)
- Introduction
- ************
- This brief manual contains documentation for the GNU binary utilities
- (GNU Binutils) version 2.34:
- This document is distributed under the terms of the GNU Free
- Documentation License version 1.3. A copy of the license is included in
- the section entitled "GNU Free Documentation License".
- * Menu:
- * ar:: Create, modify, and extract from archives
- * nm:: List symbols from object files
- * objcopy:: Copy and translate object files
- * objdump:: Display information from object files
- * ranlib:: Generate index to archive contents
- * size:: List section sizes and total size
- * strings:: List printable strings from files
- * strip:: Discard symbols
- * c++filt:: Filter to demangle encoded C++ symbols
- * cxxfilt: c++filt. MS-DOS name for c++filt
- * addr2line:: Convert addresses to file and line
- * windmc:: Generator for Windows message resources
- * windres:: Manipulate Windows resources
- * dlltool:: Create files needed to build and use DLLs
- * readelf:: Display the contents of ELF format files
- * elfedit:: Update ELF header and property of ELF files
- * Common Options:: Command-line options for all utilities
- * Selecting the Target System:: How these utilities determine the target
- * debuginfod:: Using binutils with debuginfod
- * Reporting Bugs:: Reporting Bugs
- * GNU Free Documentation License:: GNU Free Documentation License
- * Binutils Index:: Binutils Index
- File: binutils.info, Node: ar, Next: nm, Prev: Top, Up: Top
- 1 ar
- ****
- ar [-]P[MOD] [--plugin NAME] [--target BFDNAME] [--output DIRNAME] [RELPOS] [COUNT] ARCHIVE [MEMBER...]
- ar -M [ <mri-script ]
- The GNU 'ar' program creates, modifies, and extracts from archives.
- An "archive" is a single file holding a collection of other files in a
- structure that makes it possible to retrieve the original individual
- files (called "members" of the archive).
- The original files' contents, mode (permissions), timestamp, owner,
- and group are preserved in the archive, and can be restored on
- extraction.
- GNU 'ar' can maintain archives whose members have names of any
- length; however, depending on how 'ar' is configured on your system, a
- limit on member-name length may be imposed for compatibility with
- archive formats maintained with other tools. If it exists, the limit is
- often 15 characters (typical of formats related to a.out) or 16
- characters (typical of formats related to coff).
- 'ar' is considered a binary utility because archives of this sort are
- most often used as "libraries" holding commonly needed subroutines.
- 'ar' creates an index to the symbols defined in relocatable object
- modules in the archive when you specify the modifier 's'. Once created,
- this index is updated in the archive whenever 'ar' makes a change to its
- contents (save for the 'q' update operation). An archive with such an
- index speeds up linking to the library, and allows routines in the
- library to call each other without regard to their placement in the
- archive.
- You may use 'nm -s' or 'nm --print-armap' to list this index table.
- If an archive lacks the table, another form of 'ar' called 'ranlib' can
- be used to add just the table.
- GNU 'ar' can optionally create a _thin_ archive, which contains a
- symbol index and references to the original copies of the member files
- of the archive. This is useful for building libraries for use within a
- local build tree, where the relocatable objects are expected to remain
- available, and copying the contents of each object would only waste time
- and space.
- An archive can either be _thin_ or it can be normal. It cannot be
- both at the same time. Once an archive is created its format cannot be
- changed without first deleting it and then creating a new archive in its
- place.
- Thin archives are also _flattened_, so that adding one thin archive
- to another thin archive does not nest it, as would happen with a normal
- archive. Instead the elements of the first archive are added
- individually to the second archive.
- The paths to the elements of the archive are stored relative to the
- archive itself.
- GNU 'ar' is designed to be compatible with two different facilities.
- You can control its activity using command-line options, like the
- different varieties of 'ar' on Unix systems; or, if you specify the
- single command-line option '-M', you can control it with a script
- supplied via standard input, like the MRI "librarian" program.
- * Menu:
- * ar cmdline:: Controlling 'ar' on the command line
- * ar scripts:: Controlling 'ar' with a script
- File: binutils.info, Node: ar cmdline, Next: ar scripts, Up: ar
- 1.1 Controlling 'ar' on the Command Line
- ========================================
- ar [-X32_64] [-]P[MOD] [--plugin NAME] [--target BFDNAME] [--output DIRNAME] [RELPOS] [COUNT] ARCHIVE [MEMBER...]
- When you use 'ar' in the Unix style, 'ar' insists on at least two
- arguments to execute: one keyletter specifying the _operation_
- (optionally accompanied by other keyletters specifying _modifiers_), and
- the archive name to act on.
- Most operations can also accept further MEMBER arguments, specifying
- particular files to operate on.
- GNU 'ar' allows you to mix the operation code P and modifier flags
- MOD in any order, within the first command-line argument.
- If you wish, you may begin the first command-line argument with a
- dash.
- The P keyletter specifies what operation to execute; it may be any of
- the following, but you must specify only one of them:
- 'd'
- _Delete_ modules from the archive. Specify the names of modules to
- be deleted as MEMBER...; the archive is untouched if you specify no
- files to delete.
- If you specify the 'v' modifier, 'ar' lists each module as it is
- deleted.
- 'm'
- Use this operation to _move_ members in an archive.
- The ordering of members in an archive can make a difference in how
- programs are linked using the library, if a symbol is defined in
- more than one member.
- If no modifiers are used with 'm', any members you name in the
- MEMBER arguments are moved to the _end_ of the archive; you can use
- the 'a', 'b', or 'i' modifiers to move them to a specified place
- instead.
- 'p'
- _Print_ the specified members of the archive, to the standard
- output file. If the 'v' modifier is specified, show the member
- name before copying its contents to standard output.
- If you specify no MEMBER arguments, all the files in the archive
- are printed.
- 'q'
- _Quick append_; Historically, add the files MEMBER... to the end of
- ARCHIVE, without checking for replacement.
- The modifiers 'a', 'b', and 'i' do _not_ affect this operation; new
- members are always placed at the end of the archive.
- The modifier 'v' makes 'ar' list each file as it is appended.
- Since the point of this operation is speed, implementations of 'ar'
- have the option of not updating the archive's symbol table if one
- exists. Too many different systems however assume that symbol
- tables are always up-to-date, so GNU 'ar' will rebuild the table
- even with a quick append.
- Note - GNU 'ar' treats the command 'qs' as a synonym for 'r' -
- replacing already existing files in the archive and appending new
- ones at the end.
- 'r'
- Insert the files MEMBER... into ARCHIVE (with _replacement_). This
- operation differs from 'q' in that any previously existing members
- are deleted if their names match those being added.
- If one of the files named in MEMBER... does not exist, 'ar'
- displays an error message, and leaves undisturbed any existing
- members of the archive matching that name.
- By default, new members are added at the end of the file; but you
- may use one of the modifiers 'a', 'b', or 'i' to request placement
- relative to some existing member.
- The modifier 'v' used with this operation elicits a line of output
- for each file inserted, along with one of the letters 'a' or 'r' to
- indicate whether the file was appended (no old member deleted) or
- replaced.
- 's'
- Add an index to the archive, or update it if it already exists.
- Note this command is an exception to the rule that there can only
- be one command letter, as it is possible to use it as either a
- command or a modifier. In either case it does the same thing.
- 't'
- Display a _table_ listing the contents of ARCHIVE, or those of the
- files listed in MEMBER... that are present in the archive.
- Normally only the member name is shown, but if the modifier 'O' is
- specified, then the corresponding offset of the member is also
- displayed. Finally, in order to see the modes (permissions),
- timestamp, owner, group, and size the 'v' modifier should be
- included.
- If you do not specify a MEMBER, all files in the archive are
- listed.
- If there is more than one file with the same name (say, 'fie') in
- an archive (say 'b.a'), 'ar t b.a fie' lists only the first
- instance; to see them all, you must ask for a complete listing--in
- our example, 'ar t b.a'.
- 'x'
- _Extract_ members (named MEMBER) from the archive. You can use the
- 'v' modifier with this operation, to request that 'ar' list each
- name as it extracts it.
- If you do not specify a MEMBER, all files in the archive are
- extracted.
- Files cannot be extracted from a thin archive, and there are
- restrictions on extracting from archives created with 'P': The
- paths must not be absolute, may not contain '..', and any
- subdirectories in the paths must exist. If it is desired to avoid
- these restrictions then used the '--output' option to specify an
- output directory.
- A number of modifiers (MOD) may immediately follow the P keyletter,
- to specify variations on an operation's behavior:
- 'a'
- Add new files _after_ an existing member of the archive. If you
- use the modifier 'a', the name of an existing archive member must
- be present as the RELPOS argument, before the ARCHIVE
- specification.
- 'b'
- Add new files _before_ an existing member of the archive. If you
- use the modifier 'b', the name of an existing archive member must
- be present as the RELPOS argument, before the ARCHIVE
- specification. (same as 'i').
- 'c'
- _Create_ the archive. The specified ARCHIVE is always created if
- it did not exist, when you request an update. But a warning is
- issued unless you specify in advance that you expect to create it,
- by using this modifier.
- 'D'
- Operate in _deterministic_ mode. When adding files and the archive
- index use zero for UIDs, GIDs, timestamps, and use consistent file
- modes for all files. When this option is used, if 'ar' is used
- with identical options and identical input files, multiple runs
- will create identical output files regardless of the input files'
- owners, groups, file modes, or modification times.
- If 'binutils' was configured with
- '--enable-deterministic-archives', then this mode is on by default.
- It can be disabled with the 'U' modifier, below.
- 'f'
- Truncate names in the archive. GNU 'ar' will normally permit file
- names of any length. This will cause it to create archives which
- are not compatible with the native 'ar' program on some systems.
- If this is a concern, the 'f' modifier may be used to truncate file
- names when putting them in the archive.
- 'i'
- Insert new files _before_ an existing member of the archive. If
- you use the modifier 'i', the name of an existing archive member
- must be present as the RELPOS argument, before the ARCHIVE
- specification. (same as 'b').
- 'l'
- This modifier is accepted but not used.
- 'N'
- Uses the COUNT parameter. This is used if there are multiple
- entries in the archive with the same name. Extract or delete
- instance COUNT of the given name from the archive.
- 'o'
- Preserve the _original_ dates of members when extracting them. If
- you do not specify this modifier, files extracted from the archive
- are stamped with the time of extraction.
- 'O'
- Display member offsets inside the archive. Use together with the
- 't' option.
- 'P'
- Use the full path name when matching or storing names in the
- archive. Archives created with full path names are not POSIX
- compliant, and thus may not work with tools other than up to date
- GNU tools. Modifying such archives with GNU 'ar' without using 'P'
- will remove the full path names unless the archive is a thin
- archive. Note that 'P' may be useful when adding files to a thin
- archive since 'r' without 'P' ignores the path when choosing which
- element to replace. Thus
- ar rcST archive.a subdir/file1 subdir/file2 file1
- will result in the first 'subdir/file1' being replaced with 'file1'
- from the current directory. Adding 'P' will prevent this
- replacement.
- 's'
- Write an object-file index into the archive, or update an existing
- one, even if no other change is made to the archive. You may use
- this modifier flag either with any operation, or alone. Running
- 'ar s' on an archive is equivalent to running 'ranlib' on it.
- 'S'
- Do not generate an archive symbol table. This can speed up
- building a large library in several steps. The resulting archive
- can not be used with the linker. In order to build a symbol table,
- you must omit the 'S' modifier on the last execution of 'ar', or
- you must run 'ranlib' on the archive.
- 'T'
- Make the specified ARCHIVE a _thin_ archive. If it already exists
- and is a regular archive, the existing members must be present in
- the same directory as ARCHIVE.
- 'u'
- Normally, 'ar r'... inserts all files listed into the archive. If
- you would like to insert _only_ those of the files you list that
- are newer than existing members of the same names, use this
- modifier. The 'u' modifier is allowed only for the operation 'r'
- (replace). In particular, the combination 'qu' is not allowed,
- since checking the timestamps would lose any speed advantage from
- the operation 'q'.
- 'U'
- Do _not_ operate in _deterministic_ mode. This is the inverse of
- the 'D' modifier, above: added files and the archive index will get
- their actual UID, GID, timestamp, and file mode values.
- This is the default unless 'binutils' was configured with
- '--enable-deterministic-archives'.
- 'v'
- This modifier requests the _verbose_ version of an operation. Many
- operations display additional information, such as filenames
- processed, when the modifier 'v' is appended.
- 'V'
- This modifier shows the version number of 'ar'.
- The 'ar' program also supports some command-line options which are
- neither modifiers nor actions, but which do change its behaviour in
- specific ways:
- '--help'
- Displays the list of command-line options supported by 'ar' and
- then exits.
- '--version'
- Displays the version information of 'ar' and then exits.
- '-X32_64'
- 'ar' ignores an initial option spelled '-X32_64', for compatibility
- with AIX. The behaviour produced by this option is the default for
- GNU 'ar'. 'ar' does not support any of the other '-X' options; in
- particular, it does not support '-X32' which is the default for AIX
- 'ar'.
- '--plugin NAME'
- The optional command-line switch '--plugin NAME' causes 'ar' to
- load the plugin called NAME which adds support for more file
- formats, including object files with link-time optimization
- information.
- This option is only available if the toolchain has been built with
- plugin support enabled.
- If '--plugin' is not provided, but plugin support has been enabled
- then 'ar' iterates over the files in '${libdir}/bfd-plugins' in
- alphabetic order and the first plugin that claims the object in
- question is used.
- Please note that this plugin search directory is _not_ the one used
- by 'ld''s '-plugin' option. In order to make 'ar' use the linker
- plugin it must be copied into the '${libdir}/bfd-plugins'
- directory. For GCC based compilations the linker plugin is called
- 'liblto_plugin.so.0.0.0'. For Clang based compilations it is
- called 'LLVMgold.so'. The GCC plugin is always backwards
- compatible with earlier versions, so it is sufficient to just copy
- the newest one.
- '--target TARGET'
- The optional command-line switch '--target BFDNAME' specifies that
- the archive members are in an object code format different from
- your system's default format. See *Note Target Selection::, for
- more information.
- '--output DIRNAME'
- The '--output' option can be used to specify a path to a directory
- into which archive members should be extracted. If this option is
- not specified then the current directory will be used.
- Note - although the presence of this option does imply a 'x'
- extraction operation that option must still be included on the
- command line.
- File: binutils.info, Node: ar scripts, Prev: ar cmdline, Up: ar
- 1.2 Controlling 'ar' with a Script
- ==================================
- ar -M [ <SCRIPT ]
- If you use the single command-line option '-M' with 'ar', you can
- control its operation with a rudimentary command language. This form of
- 'ar' operates interactively if standard input is coming directly from a
- terminal. During interactive use, 'ar' prompts for input (the prompt is
- 'AR >'), and continues executing even after errors. If you redirect
- standard input to a script file, no prompts are issued, and 'ar'
- abandons execution (with a nonzero exit code) on any error.
- The 'ar' command language is _not_ designed to be equivalent to the
- command-line options; in fact, it provides somewhat less control over
- archives. The only purpose of the command language is to ease the
- transition to GNU 'ar' for developers who already have scripts written
- for the MRI "librarian" program.
- The syntax for the 'ar' command language is straightforward:
- * commands are recognized in upper or lower case; for example, 'LIST'
- is the same as 'list'. In the following descriptions, commands are
- shown in upper case for clarity.
- * a single command may appear on each line; it is the first word on
- the line.
- * empty lines are allowed, and have no effect.
- * comments are allowed; text after either of the characters '*' or
- ';' is ignored.
- * Whenever you use a list of names as part of the argument to an 'ar'
- command, you can separate the individual names with either commas
- or blanks. Commas are shown in the explanations below, for
- clarity.
- * '+' is used as a line continuation character; if '+' appears at the
- end of a line, the text on the following line is considered part of
- the current command.
- Here are the commands you can use in 'ar' scripts, or when using 'ar'
- interactively. Three of them have special significance:
- 'OPEN' or 'CREATE' specify a "current archive", which is a temporary
- file required for most of the other commands.
- 'SAVE' commits the changes so far specified by the script. Prior to
- 'SAVE', commands affect only the temporary copy of the current archive.
- 'ADDLIB ARCHIVE'
- 'ADDLIB ARCHIVE (MODULE, MODULE, ... MODULE)'
- Add all the contents of ARCHIVE (or, if specified, each named
- MODULE from ARCHIVE) to the current archive.
- Requires prior use of 'OPEN' or 'CREATE'.
- 'ADDMOD MEMBER, MEMBER, ... MEMBER'
- Add each named MEMBER as a module in the current archive.
- Requires prior use of 'OPEN' or 'CREATE'.
- 'CLEAR'
- Discard the contents of the current archive, canceling the effect
- of any operations since the last 'SAVE'. May be executed (with no
- effect) even if no current archive is specified.
- 'CREATE ARCHIVE'
- Creates an archive, and makes it the current archive (required for
- many other commands). The new archive is created with a temporary
- name; it is not actually saved as ARCHIVE until you use 'SAVE'.
- You can overwrite existing archives; similarly, the contents of any
- existing file named ARCHIVE will not be destroyed until 'SAVE'.
- 'DELETE MODULE, MODULE, ... MODULE'
- Delete each listed MODULE from the current archive; equivalent to
- 'ar -d ARCHIVE MODULE ... MODULE'.
- Requires prior use of 'OPEN' or 'CREATE'.
- 'DIRECTORY ARCHIVE (MODULE, ... MODULE)'
- 'DIRECTORY ARCHIVE (MODULE, ... MODULE) OUTPUTFILE'
- List each named MODULE present in ARCHIVE. The separate command
- 'VERBOSE' specifies the form of the output: when verbose output is
- off, output is like that of 'ar -t ARCHIVE MODULE...'. When
- verbose output is on, the listing is like 'ar -tv ARCHIVE
- MODULE...'.
- Output normally goes to the standard output stream; however, if you
- specify OUTPUTFILE as a final argument, 'ar' directs the output to
- that file.
- 'END'
- Exit from 'ar', with a '0' exit code to indicate successful
- completion. This command does not save the output file; if you
- have changed the current archive since the last 'SAVE' command,
- those changes are lost.
- 'EXTRACT MODULE, MODULE, ... MODULE'
- Extract each named MODULE from the current archive, writing them
- into the current directory as separate files. Equivalent to 'ar -x
- ARCHIVE MODULE...'.
- Requires prior use of 'OPEN' or 'CREATE'.
- 'LIST'
- Display full contents of the current archive, in "verbose" style
- regardless of the state of 'VERBOSE'. The effect is like 'ar tv
- ARCHIVE'. (This single command is a GNU 'ar' enhancement, rather
- than present for MRI compatibility.)
- Requires prior use of 'OPEN' or 'CREATE'.
- 'OPEN ARCHIVE'
- Opens an existing archive for use as the current archive (required
- for many other commands). Any changes as the result of subsequent
- commands will not actually affect ARCHIVE until you next use
- 'SAVE'.
- 'REPLACE MODULE, MODULE, ... MODULE'
- In the current archive, replace each existing MODULE (named in the
- 'REPLACE' arguments) from files in the current working directory.
- To execute this command without errors, both the file, and the
- module in the current archive, must exist.
- Requires prior use of 'OPEN' or 'CREATE'.
- 'VERBOSE'
- Toggle an internal flag governing the output from 'DIRECTORY'.
- When the flag is on, 'DIRECTORY' output matches output from 'ar -tv
- '....
- 'SAVE'
- Commit your changes to the current archive, and actually save it as
- a file with the name specified in the last 'CREATE' or 'OPEN'
- command.
- Requires prior use of 'OPEN' or 'CREATE'.
- File: binutils.info, Node: nm, Next: objcopy, Prev: ar, Up: Top
- 2 nm
- ****
- nm [-A|-o|--print-file-name] [-a|--debug-syms]
- [-B|--format=bsd] [-C|--demangle[=STYLE]]
- [-D|--dynamic] [-fFORMAT|--format=FORMAT]
- [-g|--extern-only] [-h|--help]
- [-l|--line-numbers] [--inlines]
- [-n|-v|--numeric-sort]
- [-P|--portability] [-p|--no-sort]
- [-r|--reverse-sort] [-S|--print-size]
- [-s|--print-armap] [-t RADIX|--radix=RADIX]
- [-u|--undefined-only] [-V|--version]
- [-X 32_64] [--defined-only] [--no-demangle]
- [--plugin NAME]
- [--no-recurse-limit|--recurse-limit]]
- [--size-sort] [--special-syms]
- [--synthetic] [--with-symbol-versions] [--target=BFDNAME]
- [OBJFILE...]
- GNU 'nm' lists the symbols from object files OBJFILE.... If no
- object files are listed as arguments, 'nm' assumes the file 'a.out'.
- For each symbol, 'nm' shows:
- * The symbol value, in the radix selected by options (see below), or
- hexadecimal by default.
- * The symbol type. At least the following types are used; others
- are, as well, depending on the object file format. If lowercase,
- the symbol is usually local; if uppercase, the symbol is global
- (external). There are however a few lowercase symbols that are
- shown for special global symbols ('u', 'v' and 'w').
- 'A'
- The symbol's value is absolute, and will not be changed by
- further linking.
- 'B'
- 'b'
- The symbol is in the BSS data section. This section typically
- contains zero-initialized or uninitialized data, although the
- exact behavior is system dependent.
- 'C'
- The symbol is common. Common symbols are uninitialized data.
- When linking, multiple common symbols may appear with the same
- name. If the symbol is defined anywhere, the common symbols
- are treated as undefined references. For more details on
- common symbols, see the discussion of -warn-common in *note
- Linker options: (ld.info)Options.
- 'D'
- 'd'
- The symbol is in the initialized data section.
- 'G'
- 'g'
- The symbol is in an initialized data section for small
- objects. Some object file formats permit more efficient
- access to small data objects, such as a global int variable as
- opposed to a large global array.
- 'i'
- For PE format files this indicates that the symbol is in a
- section specific to the implementation of DLLs. For ELF
- format files this indicates that the symbol is an indirect
- function. This is a GNU extension to the standard set of ELF
- symbol types. It indicates a symbol which if referenced by a
- relocation does not evaluate to its address, but instead must
- be invoked at runtime. The runtime execution will then return
- the value to be used in the relocation.
- 'I'
- The symbol is an indirect reference to another symbol.
- 'N'
- The symbol is a debugging symbol.
- 'n'
- The symbol is in the read-only data section.
- 'p'
- The symbol is in a stack unwind section.
- 'R'
- 'r'
- The symbol is in a read only data section.
- 'S'
- 's'
- The symbol is in an uninitialized or zero-initialized data
- section for small objects.
- 'T'
- 't'
- The symbol is in the text (code) section.
- 'U'
- The symbol is undefined.
- 'u'
- The symbol is a unique global symbol. This is a GNU extension
- to the standard set of ELF symbol bindings. For such a symbol
- the dynamic linker will make sure that in the entire process
- there is just one symbol with this name and type in use.
- 'V'
- 'v'
- The symbol is a weak object. When a weak defined symbol is
- linked with a normal defined symbol, the normal defined symbol
- is used with no error. When a weak undefined symbol is linked
- and the symbol is not defined, the value of the weak symbol
- becomes zero with no error. On some systems, uppercase
- indicates that a default value has been specified.
- 'W'
- 'w'
- The symbol is a weak symbol that has not been specifically
- tagged as a weak object symbol. When a weak defined symbol is
- linked with a normal defined symbol, the normal defined symbol
- is used with no error. When a weak undefined symbol is linked
- and the symbol is not defined, the value of the symbol is
- determined in a system-specific manner without error. On some
- systems, uppercase indicates that a default value has been
- specified.
- '-'
- The symbol is a stabs symbol in an a.out object file. In this
- case, the next values printed are the stabs other field, the
- stabs desc field, and the stab type. Stabs symbols are used
- to hold debugging information.
- '?'
- The symbol type is unknown, or object file format specific.
- * The symbol name.
- The long and short forms of options, shown here as alternatives, are
- equivalent.
- '-A'
- '-o'
- '--print-file-name'
- Precede each symbol by the name of the input file (or archive
- member) in which it was found, rather than identifying the input
- file once only, before all of its symbols.
- '-a'
- '--debug-syms'
- Display all symbols, even debugger-only symbols; normally these are
- not listed.
- '-B'
- The same as '--format=bsd' (for compatibility with the MIPS 'nm').
- '-C'
- '--demangle[=STYLE]'
- Decode ("demangle") low-level symbol names into user-level names.
- Besides removing any initial underscore prepended by the system,
- this makes C++ function names readable. Different compilers have
- different mangling styles. The optional demangling style argument
- can be used to choose an appropriate demangling style for your
- compiler. *Note c++filt::, for more information on demangling.
- '--no-demangle'
- Do not demangle low-level symbol names. This is the default.
- '--recurse-limit'
- '--no-recurse-limit'
- '--recursion-limit'
- '--no-recursion-limit'
- Enables or disables a limit on the amount of recursion performed
- whilst demangling strings. Since the name mangling formats allow
- for an inifinite level of recursion it is possible to create
- strings whose decoding will exhaust the amount of stack space
- available on the host machine, triggering a memory fault. The
- limit tries to prevent this from happening by restricting recursion
- to 2048 levels of nesting.
- The default is for this limit to be enabled, but disabling it may
- be necessary in order to demangle truly complicated names. Note
- however that if the recursion limit is disabled then stack
- exhaustion is possible and any bug reports about such an event will
- be rejected.
- '-D'
- '--dynamic'
- Display the dynamic symbols rather than the normal symbols. This
- is only meaningful for dynamic objects, such as certain types of
- shared libraries.
- '-f FORMAT'
- '--format=FORMAT'
- Use the output format FORMAT, which can be 'bsd', 'sysv', or
- 'posix'. The default is 'bsd'. Only the first character of FORMAT
- is significant; it can be either upper or lower case.
- '-g'
- '--extern-only'
- Display only external symbols.
- '-h'
- '--help'
- Show a summary of the options to 'nm' and exit.
- '-l'
- '--line-numbers'
- For each symbol, use debugging information to try to find a
- filename and line number. For a defined symbol, look for the line
- number of the address of the symbol. For an undefined symbol, look
- for the line number of a relocation entry which refers to the
- symbol. If line number information can be found, print it after
- the other symbol information.
- '--inlines'
- When option '-l' is active, if the address belongs to a function
- that was inlined, then this option causes the source information
- for all enclosing scopes back to the first non-inlined function to
- be printed as well. For example, if 'main' inlines 'callee1' which
- inlines 'callee2', and address is from 'callee2', the source
- information for 'callee1' and 'main' will also be printed.
- '-n'
- '-v'
- '--numeric-sort'
- Sort symbols numerically by their addresses, rather than
- alphabetically by their names.
- '-p'
- '--no-sort'
- Do not bother to sort the symbols in any order; print them in the
- order encountered.
- '-P'
- '--portability'
- Use the POSIX.2 standard output format instead of the default
- format. Equivalent to '-f posix'.
- '-r'
- '--reverse-sort'
- Reverse the order of the sort (whether numeric or alphabetic); let
- the last come first.
- '-S'
- '--print-size'
- Print both value and size of defined symbols for the 'bsd' output
- style. This option has no effect for object formats that do not
- record symbol sizes, unless '--size-sort' is also used in which
- case a calculated size is displayed.
- '-s'
- '--print-armap'
- When listing symbols from archive members, include the index: a
- mapping (stored in the archive by 'ar' or 'ranlib') of which
- modules contain definitions for which names.
- '-t RADIX'
- '--radix=RADIX'
- Use RADIX as the radix for printing the symbol values. It must be
- 'd' for decimal, 'o' for octal, or 'x' for hexadecimal.
- '-u'
- '--undefined-only'
- Display only undefined symbols (those external to each object
- file).
- '-V'
- '--version'
- Show the version number of 'nm' and exit.
- '-X'
- This option is ignored for compatibility with the AIX version of
- 'nm'. It takes one parameter which must be the string '32_64'.
- The default mode of AIX 'nm' corresponds to '-X 32', which is not
- supported by GNU 'nm'.
- '--defined-only'
- Display only defined symbols for each object file.
- '--plugin NAME'
- Load the plugin called NAME to add support for extra target types.
- This option is only available if the toolchain has been built with
- plugin support enabled.
- If '--plugin' is not provided, but plugin support has been enabled
- then 'nm' iterates over the files in '${libdir}/bfd-plugins' in
- alphabetic order and the first plugin that claims the object in
- question is used.
- Please note that this plugin search directory is _not_ the one used
- by 'ld''s '-plugin' option. In order to make 'nm' use the linker
- plugin it must be copied into the '${libdir}/bfd-plugins'
- directory. For GCC based compilations the linker plugin is called
- 'liblto_plugin.so.0.0.0'. For Clang based compilations it is
- called 'LLVMgold.so'. The GCC plugin is always backwards
- compatible with earlier versions, so it is sufficient to just copy
- the newest one.
- '--size-sort'
- Sort symbols by size. For ELF objects symbol sizes are read from
- the ELF, for other object types the symbol sizes are computed as
- the difference between the value of the symbol and the value of the
- symbol with the next higher value. If the 'bsd' output format is
- used the size of the symbol is printed, rather than the value, and
- '-S' must be used in order both size and value to be printed.
- '--special-syms'
- Display symbols which have a target-specific special meaning.
- These symbols are usually used by the target for some special
- processing and are not normally helpful when included in the normal
- symbol lists. For example for ARM targets this option would skip
- the mapping symbols used to mark transitions between ARM code,
- THUMB code and data.
- '--synthetic'
- Include synthetic symbols in the output. These are special symbols
- created by the linker for various purposes. They are not shown by
- default since they are not part of the binary's original source
- code.
- '--with-symbol-versions'
- Enables the display of symbol version information if any exists.
- The version string is displayed as a suffix to the symbol name,
- preceeded by an @ character. For example 'foo@VER_1'. If the
- version is the default version to be used when resolving
- unversioned references to the symbol then it is displayed as a
- suffix preceeded by two @ characters. For example 'foo@@VER_2'.
- '--target=BFDNAME'
- Specify an object code format other than your system's default
- format. *Note Target Selection::, for more information.
- File: binutils.info, Node: objcopy, Next: objdump, Prev: nm, Up: Top
- 3 objcopy
- *********
- objcopy [-F BFDNAME|--target=BFDNAME]
- [-I BFDNAME|--input-target=BFDNAME]
- [-O BFDNAME|--output-target=BFDNAME]
- [-B BFDARCH|--binary-architecture=BFDARCH]
- [-S|--strip-all]
- [-g|--strip-debug]
- [--strip-unneeded]
- [-K SYMBOLNAME|--keep-symbol=SYMBOLNAME]
- [-N SYMBOLNAME|--strip-symbol=SYMBOLNAME]
- [--strip-unneeded-symbol=SYMBOLNAME]
- [-G SYMBOLNAME|--keep-global-symbol=SYMBOLNAME]
- [--localize-hidden]
- [-L SYMBOLNAME|--localize-symbol=SYMBOLNAME]
- [--globalize-symbol=SYMBOLNAME]
- [--globalize-symbols=FILENAME]
- [-W SYMBOLNAME|--weaken-symbol=SYMBOLNAME]
- [-w|--wildcard]
- [-x|--discard-all]
- [-X|--discard-locals]
- [-b BYTE|--byte=BYTE]
- [-i [BREADTH]|--interleave[=BREADTH]]
- [--interleave-width=WIDTH]
- [-j SECTIONPATTERN|--only-section=SECTIONPATTERN]
- [-R SECTIONPATTERN|--remove-section=SECTIONPATTERN]
- [--keep-section=SECTIONPATTERN]
- [--remove-relocations=SECTIONPATTERN]
- [-p|--preserve-dates]
- [-D|--enable-deterministic-archives]
- [-U|--disable-deterministic-archives]
- [--debugging]
- [--gap-fill=VAL]
- [--pad-to=ADDRESS]
- [--set-start=VAL]
- [--adjust-start=INCR]
- [--change-addresses=INCR]
- [--change-section-address SECTIONPATTERN{=,+,-}VAL]
- [--change-section-lma SECTIONPATTERN{=,+,-}VAL]
- [--change-section-vma SECTIONPATTERN{=,+,-}VAL]
- [--change-warnings] [--no-change-warnings]
- [--set-section-flags SECTIONPATTERN=FLAGS]
- [--set-section-alignment SECTIONPATTERN=ALIGN]
- [--add-section SECTIONNAME=FILENAME]
- [--dump-section SECTIONNAME=FILENAME]
- [--update-section SECTIONNAME=FILENAME]
- [--rename-section OLDNAME=NEWNAME[,FLAGS]]
- [--long-section-names {enable,disable,keep}]
- [--change-leading-char] [--remove-leading-char]
- [--reverse-bytes=NUM]
- [--srec-len=IVAL] [--srec-forceS3]
- [--redefine-sym OLD=NEW]
- [--redefine-syms=FILENAME]
- [--weaken]
- [--keep-symbols=FILENAME]
- [--strip-symbols=FILENAME]
- [--strip-unneeded-symbols=FILENAME]
- [--keep-global-symbols=FILENAME]
- [--localize-symbols=FILENAME]
- [--weaken-symbols=FILENAME]
- [--add-symbol NAME=[SECTION:]VALUE[,FLAGS]]
- [--alt-machine-code=INDEX]
- [--prefix-symbols=STRING]
- [--prefix-sections=STRING]
- [--prefix-alloc-sections=STRING]
- [--add-gnu-debuglink=PATH-TO-FILE]
- [--keep-file-symbols]
- [--only-keep-debug]
- [--strip-dwo]
- [--extract-dwo]
- [--extract-symbol]
- [--writable-text]
- [--readonly-text]
- [--pure]
- [--impure]
- [--file-alignment=NUM]
- [--heap=SIZE]
- [--image-base=ADDRESS]
- [--section-alignment=NUM]
- [--stack=SIZE]
- [--subsystem=WHICH:MAJOR.MINOR]
- [--compress-debug-sections]
- [--decompress-debug-sections]
- [--elf-stt-common=VAL]
- [--merge-notes]
- [--no-merge-notes]
- [--verilog-data-width=VAL]
- [-v|--verbose]
- [-V|--version]
- [--help] [--info]
- INFILE [OUTFILE]
- The GNU 'objcopy' utility copies the contents of an object file to
- another. 'objcopy' uses the GNU BFD Library to read and write the
- object files. It can write the destination object file in a format
- different from that of the source object file. The exact behavior of
- 'objcopy' is controlled by command-line options. Note that 'objcopy'
- should be able to copy a fully linked file between any two formats.
- However, copying a relocatable object file between any two formats may
- not work as expected.
- 'objcopy' creates temporary files to do its translations and deletes
- them afterward. 'objcopy' uses BFD to do all its translation work; it
- has access to all the formats described in BFD and thus is able to
- recognize most formats without being told explicitly. *Note BFD:
- (ld.info)BFD.
- 'objcopy' can be used to generate S-records by using an output target
- of 'srec' (e.g., use '-O srec').
- 'objcopy' can be used to generate a raw binary file by using an
- output target of 'binary' (e.g., use '-O binary'). When 'objcopy'
- generates a raw binary file, it will essentially produce a memory dump
- of the contents of the input object file. All symbols and relocation
- information will be discarded. The memory dump will start at the load
- address of the lowest section copied into the output file.
- When generating an S-record or a raw binary file, it may be helpful
- to use '-S' to remove sections containing debugging information. In
- some cases '-R' will be useful to remove sections which contain
- information that is not needed by the binary file.
- Note--'objcopy' is not able to change the endianness of its input
- files. If the input format has an endianness (some formats do not),
- 'objcopy' can only copy the inputs into file formats that have the same
- endianness or which have no endianness (e.g., 'srec'). (However, see
- the '--reverse-bytes' option.)
- 'INFILE'
- 'OUTFILE'
- The input and output files, respectively. If you do not specify
- OUTFILE, 'objcopy' creates a temporary file and destructively
- renames the result with the name of INFILE.
- '-I BFDNAME'
- '--input-target=BFDNAME'
- Consider the source file's object format to be BFDNAME, rather than
- attempting to deduce it. *Note Target Selection::, for more
- information.
- '-O BFDNAME'
- '--output-target=BFDNAME'
- Write the output file using the object format BFDNAME. *Note
- Target Selection::, for more information.
- '-F BFDNAME'
- '--target=BFDNAME'
- Use BFDNAME as the object format for both the input and the output
- file; i.e., simply transfer data from source to destination with no
- translation. *Note Target Selection::, for more information.
- '-B BFDARCH'
- '--binary-architecture=BFDARCH'
- Useful when transforming a architecture-less input file into an
- object file. In this case the output architecture can be set to
- BFDARCH. This option will be ignored if the input file has a known
- BFDARCH. You can access this binary data inside a program by
- referencing the special symbols that are created by the conversion
- process. These symbols are called _binary_OBJFILE_start,
- _binary_OBJFILE_end and _binary_OBJFILE_size. e.g. you can
- transform a picture file into an object file and then access it in
- your code using these symbols.
- '-j SECTIONPATTERN'
- '--only-section=SECTIONPATTERN'
- Copy only the indicated sections from the input file to the output
- file. This option may be given more than once. Note that using
- this option inappropriately may make the output file unusable.
- Wildcard characters are accepted in SECTIONPATTERN.
- If the first character of SECTIONPATTERN is the exclamation point
- (!) then matching sections will not be copied, even if earlier use
- of '--only-section' on the same command line would otherwise copy
- it. For example:
- --only-section=.text.* --only-section=!.text.foo
- will copy all sectinos maching '.text.*' but not the section
- '.text.foo'.
- '-R SECTIONPATTERN'
- '--remove-section=SECTIONPATTERN'
- Remove any section matching SECTIONPATTERN from the output file.
- This option may be given more than once. Note that using this
- option inappropriately may make the output file unusable. Wildcard
- characters are accepted in SECTIONPATTERN. Using both the '-j' and
- '-R' options together results in undefined behaviour.
- If the first character of SECTIONPATTERN is the exclamation point
- (!) then matching sections will not be removed even if an earlier
- use of '--remove-section' on the same command line would otherwise
- remove it. For example:
- --remove-section=.text.* --remove-section=!.text.foo
- will remove all sections matching the pattern '.text.*', but will
- not remove the section '.text.foo'.
- '--keep-section=SECTIONPATTERN'
- When removing sections from the output file, keep sections that
- match SECTIONPATTERN.
- '--remove-relocations=SECTIONPATTERN'
- Remove non-dynamic relocations from the output file for any section
- matching SECTIONPATTERN. This option may be given more than once.
- Note that using this option inappropriately may make the output
- file unusable, and attempting to remove a dynamic relocation
- section such as '.rela.plt' from an executable or shared library
- with '--remove-relocations=.plt' will not work. Wildcard
- characters are accepted in SECTIONPATTERN. For example:
- --remove-relocations=.text.*
- will remove the relocations for all sections matching the pattern
- '.text.*'.
- If the first character of SECTIONPATTERN is the exclamation point
- (!) then matching sections will not have their relocation removed
- even if an earlier use of '--remove-relocations' on the same
- command line would otherwise cause the relocations to be removed.
- For example:
- --remove-relocations=.text.* --remove-relocations=!.text.foo
- will remove all relocations for sections matching the pattern
- '.text.*', but will not remove relocations for the section
- '.text.foo'.
- '-S'
- '--strip-all'
- Do not copy relocation and symbol information from the source file.
- '-g'
- '--strip-debug'
- Do not copy debugging symbols or sections from the source file.
- '--strip-unneeded'
- Strip all symbols that are not needed for relocation processing.
- '-K SYMBOLNAME'
- '--keep-symbol=SYMBOLNAME'
- When stripping symbols, keep symbol SYMBOLNAME even if it would
- normally be stripped. This option may be given more than once.
- '-N SYMBOLNAME'
- '--strip-symbol=SYMBOLNAME'
- Do not copy symbol SYMBOLNAME from the source file. This option
- may be given more than once.
- '--strip-unneeded-symbol=SYMBOLNAME'
- Do not copy symbol SYMBOLNAME from the source file unless it is
- needed by a relocation. This option may be given more than once.
- '-G SYMBOLNAME'
- '--keep-global-symbol=SYMBOLNAME'
- Keep only symbol SYMBOLNAME global. Make all other symbols local
- to the file, so that they are not visible externally. This option
- may be given more than once. Note: this option cannot be used in
- conjunction with the '--globalize-symbol' or '--globalize-symbols'
- options.
- '--localize-hidden'
- In an ELF object, mark all symbols that have hidden or internal
- visibility as local. This option applies on top of symbol-specific
- localization options such as '-L'.
- '-L SYMBOLNAME'
- '--localize-symbol=SYMBOLNAME'
- Convert a global or weak symbol called SYMBOLNAME into a local
- symbol, so that it is not visible externally. This option may be
- given more than once. Note - unique symbols are not converted.
- '-W SYMBOLNAME'
- '--weaken-symbol=SYMBOLNAME'
- Make symbol SYMBOLNAME weak. This option may be given more than
- once.
- '--globalize-symbol=SYMBOLNAME'
- Give symbol SYMBOLNAME global scoping so that it is visible outside
- of the file in which it is defined. This option may be given more
- than once. Note: this option cannot be used in conjunction with
- the '-G' or '--keep-global-symbol' options.
- '-w'
- '--wildcard'
- Permit regular expressions in SYMBOLNAMEs used in other command
- line options. The question mark (?), asterisk (*), backslash (\)
- and square brackets ([]) operators can be used anywhere in the
- symbol name. If the first character of the symbol name is the
- exclamation point (!) then the sense of the switch is reversed for
- that symbol. For example:
- -w -W !foo -W fo*
- would cause objcopy to weaken all symbols that start with "fo"
- except for the symbol "foo".
- '-x'
- '--discard-all'
- Do not copy non-global symbols from the source file.
- '-X'
- '--discard-locals'
- Do not copy compiler-generated local symbols. (These usually start
- with 'L' or '.'.)
- '-b BYTE'
- '--byte=BYTE'
- If interleaving has been enabled via the '--interleave' option then
- start the range of bytes to keep at the BYTEth byte. BYTE can be
- in the range from 0 to BREADTH-1, where BREADTH is the value given
- by the '--interleave' option.
- '-i [BREADTH]'
- '--interleave[=BREADTH]'
- Only copy a range out of every BREADTH bytes. (Header data is not
- affected). Select which byte in the range begins the copy with the
- '--byte' option. Select the width of the range with the
- '--interleave-width' option.
- This option is useful for creating files to program ROM. It is
- typically used with an 'srec' output target. Note that 'objcopy'
- will complain if you do not specify the '--byte' option as well.
- The default interleave breadth is 4, so with '--byte' set to 0,
- 'objcopy' would copy the first byte out of every four bytes from
- the input to the output.
- '--interleave-width=WIDTH'
- When used with the '--interleave' option, copy WIDTH bytes at a
- time. The start of the range of bytes to be copied is set by the
- '--byte' option, and the extent of the range is set with the
- '--interleave' option.
- The default value for this option is 1. The value of WIDTH plus
- the BYTE value set by the '--byte' option must not exceed the
- interleave breadth set by the '--interleave' option.
- This option can be used to create images for two 16-bit flashes
- interleaved in a 32-bit bus by passing '-b 0 -i 4
- --interleave-width=2' and '-b 2 -i 4 --interleave-width=2' to two
- 'objcopy' commands. If the input was '12345678' then the outputs
- would be '1256' and '3478' respectively.
- '-p'
- '--preserve-dates'
- Set the access and modification dates of the output file to be the
- same as those of the input file.
- '-D'
- '--enable-deterministic-archives'
- Operate in _deterministic_ mode. When copying archive members and
- writing the archive index, use zero for UIDs, GIDs, timestamps, and
- use consistent file modes for all files.
- If 'binutils' was configured with
- '--enable-deterministic-archives', then this mode is on by default.
- It can be disabled with the '-U' option, below.
- '-U'
- '--disable-deterministic-archives'
- Do _not_ operate in _deterministic_ mode. This is the inverse of
- the '-D' option, above: when copying archive members and writing
- the archive index, use their actual UID, GID, timestamp, and file
- mode values.
- This is the default unless 'binutils' was configured with
- '--enable-deterministic-archives'.
- '--debugging'
- Convert debugging information, if possible. This is not the
- default because only certain debugging formats are supported, and
- the conversion process can be time consuming.
- '--gap-fill VAL'
- Fill gaps between sections with VAL. This operation applies to the
- _load address_ (LMA) of the sections. It is done by increasing the
- size of the section with the lower address, and filling in the
- extra space created with VAL.
- '--pad-to ADDRESS'
- Pad the output file up to the load address ADDRESS. This is done
- by increasing the size of the last section. The extra space is
- filled in with the value specified by '--gap-fill' (default zero).
- '--set-start VAL'
- Set the start address of the new file to VAL. Not all object file
- formats support setting the start address.
- '--change-start INCR'
- '--adjust-start INCR'
- Change the start address by adding INCR. Not all object file
- formats support setting the start address.
- '--change-addresses INCR'
- '--adjust-vma INCR'
- Change the VMA and LMA addresses of all sections, as well as the
- start address, by adding INCR. Some object file formats do not
- permit section addresses to be changed arbitrarily. Note that this
- does not relocate the sections; if the program expects sections to
- be loaded at a certain address, and this option is used to change
- the sections such that they are loaded at a different address, the
- program may fail.
- '--change-section-address SECTIONPATTERN{=,+,-}VAL'
- '--adjust-section-vma SECTIONPATTERN{=,+,-}VAL'
- Set or change both the VMA address and the LMA address of any
- section matching SECTIONPATTERN. If '=' is used, the section
- address is set to VAL. Otherwise, VAL is added to or subtracted
- from the section address. See the comments under
- '--change-addresses', above. If SECTIONPATTERN does not match any
- sections in the input file, a warning will be issued, unless
- '--no-change-warnings' is used.
- '--change-section-lma SECTIONPATTERN{=,+,-}VAL'
- Set or change the LMA address of any sections matching
- SECTIONPATTERN. The LMA address is the address where the section
- will be loaded into memory at program load time. Normally this is
- the same as the VMA address, which is the address of the section at
- program run time, but on some systems, especially those where a
- program is held in ROM, the two can be different. If '=' is used,
- the section address is set to VAL. Otherwise, VAL is added to or
- subtracted from the section address. See the comments under
- '--change-addresses', above. If SECTIONPATTERN does not match any
- sections in the input file, a warning will be issued, unless
- '--no-change-warnings' is used.
- '--change-section-vma SECTIONPATTERN{=,+,-}VAL'
- Set or change the VMA address of any section matching
- SECTIONPATTERN. The VMA address is the address where the section
- will be located once the program has started executing. Normally
- this is the same as the LMA address, which is the address where the
- section will be loaded into memory, but on some systems, especially
- those where a program is held in ROM, the two can be different. If
- '=' is used, the section address is set to VAL. Otherwise, VAL is
- added to or subtracted from the section address. See the comments
- under '--change-addresses', above. If SECTIONPATTERN does not
- match any sections in the input file, a warning will be issued,
- unless '--no-change-warnings' is used.
- '--change-warnings'
- '--adjust-warnings'
- If '--change-section-address' or '--change-section-lma' or
- '--change-section-vma' is used, and the section pattern does not
- match any sections, issue a warning. This is the default.
- '--no-change-warnings'
- '--no-adjust-warnings'
- Do not issue a warning if '--change-section-address' or
- '--adjust-section-lma' or '--adjust-section-vma' is used, even if
- the section pattern does not match any sections.
- '--set-section-flags SECTIONPATTERN=FLAGS'
- Set the flags for any sections matching SECTIONPATTERN. The FLAGS
- argument is a comma separated string of flag names. The recognized
- names are 'alloc', 'contents', 'load', 'noload', 'readonly',
- 'code', 'data', 'rom', 'share', and 'debug'. You can set the
- 'contents' flag for a section which does not have contents, but it
- is not meaningful to clear the 'contents' flag of a section which
- does have contents-just remove the section instead. Not all flags
- are meaningful for all object file formats.
- '--set-section-alignment SECTIONPATTERN=ALIGN'
- Set the alignment for any sections matching SECTIONPATTERN. ALIGN
- specifies the alignment in bytes and must be a power of two, i.e.
- 1, 2, 4, 8....
- '--add-section SECTIONNAME=FILENAME'
- Add a new section named SECTIONNAME while copying the file. The
- contents of the new section are taken from the file FILENAME. The
- size of the section will be the size of the file. This option only
- works on file formats which can support sections with arbitrary
- names. Note - it may be necessary to use the '--set-section-flags'
- option to set the attributes of the newly created section.
- '--dump-section SECTIONNAME=FILENAME'
- Place the contents of section named SECTIONNAME into the file
- FILENAME, overwriting any contents that may have been there
- previously. This option is the inverse of '--add-section'. This
- option is similar to the '--only-section' option except that it
- does not create a formatted file, it just dumps the contents as raw
- binary data, without applying any relocations. The option can be
- specified more than once.
- '--update-section SECTIONNAME=FILENAME'
- Replace the existing contents of a section named SECTIONNAME with
- the contents of file FILENAME. The size of the section will be
- adjusted to the size of the file. The section flags for
- SECTIONNAME will be unchanged. For ELF format files the section to
- segment mapping will also remain unchanged, something which is not
- possible using '--remove-section' followed by '--add-section'. The
- option can be specified more than once.
- Note - it is possible to use '--rename-section' and
- '--update-section' to both update and rename a section from one
- command line. In this case, pass the original section name to
- '--update-section', and the original and new section names to
- '--rename-section'.
- '--add-symbol NAME=[SECTION:]VALUE[,FLAGS]'
- Add a new symbol named NAME while copying the file. This option
- may be specified multiple times. If the SECTION is given, the
- symbol will be associated with and relative to that section,
- otherwise it will be an ABS symbol. Specifying an undefined
- section will result in a fatal error. There is no check for the
- value, it will be taken as specified. Symbol flags can be
- specified and not all flags will be meaningful for all object file
- formats. By default, the symbol will be global. The special flag
- 'before=OTHERSYM' will insert the new symbol in front of the
- specified OTHERSYM, otherwise the symbol(s) will be added at the
- end of the symbol table in the order they appear.
- '--rename-section OLDNAME=NEWNAME[,FLAGS]'
- Rename a section from OLDNAME to NEWNAME, optionally changing the
- section's flags to FLAGS in the process. This has the advantage
- over using a linker script to perform the rename in that the output
- stays as an object file and does not become a linked executable.
- This option is particularly helpful when the input format is
- binary, since this will always create a section called .data. If
- for example, you wanted instead to create a section called .rodata
- containing binary data you could use the following command line to
- achieve it:
- objcopy -I binary -O <output_format> -B <architecture> \
- --rename-section .data=.rodata,alloc,load,readonly,data,contents \
- <input_binary_file> <output_object_file>
- '--long-section-names {enable,disable,keep}'
- Controls the handling of long section names when processing 'COFF'
- and 'PE-COFF' object formats. The default behaviour, 'keep', is to
- preserve long section names if any are present in the input file.
- The 'enable' and 'disable' options forcibly enable or disable the
- use of long section names in the output object; when 'disable' is
- in effect, any long section names in the input object will be
- truncated. The 'enable' option will only emit long section names
- if any are present in the inputs; this is mostly the same as
- 'keep', but it is left undefined whether the 'enable' option might
- force the creation of an empty string table in the output file.
- '--change-leading-char'
- Some object file formats use special characters at the start of
- symbols. The most common such character is underscore, which
- compilers often add before every symbol. This option tells
- 'objcopy' to change the leading character of every symbol when it
- converts between object file formats. If the object file formats
- use the same leading character, this option has no effect.
- Otherwise, it will add a character, or remove a character, or
- change a character, as appropriate.
- '--remove-leading-char'
- If the first character of a global symbol is a special symbol
- leading character used by the object file format, remove the
- character. The most common symbol leading character is underscore.
- This option will remove a leading underscore from all global
- symbols. This can be useful if you want to link together objects
- of different file formats with different conventions for symbol
- names. This is different from '--change-leading-char' because it
- always changes the symbol name when appropriate, regardless of the
- object file format of the output file.
- '--reverse-bytes=NUM'
- Reverse the bytes in a section with output contents. A section
- length must be evenly divisible by the value given in order for the
- swap to be able to take place. Reversing takes place before the
- interleaving is performed.
- This option is used typically in generating ROM images for
- problematic target systems. For example, on some target boards,
- the 32-bit words fetched from 8-bit ROMs are re-assembled in
- little-endian byte order regardless of the CPU byte order.
- Depending on the programming model, the endianness of the ROM may
- need to be modified.
- Consider a simple file with a section containing the following
- eight bytes: '12345678'.
- Using '--reverse-bytes=2' for the above example, the bytes in the
- output file would be ordered '21436587'.
- Using '--reverse-bytes=4' for the above example, the bytes in the
- output file would be ordered '43218765'.
- By using '--reverse-bytes=2' for the above example, followed by
- '--reverse-bytes=4' on the output file, the bytes in the second
- output file would be ordered '34127856'.
- '--srec-len=IVAL'
- Meaningful only for srec output. Set the maximum length of the
- Srecords being produced to IVAL. This length covers both address,
- data and crc fields.
- '--srec-forceS3'
- Meaningful only for srec output. Avoid generation of S1/S2
- records, creating S3-only record format.
- '--redefine-sym OLD=NEW'
- Change the name of a symbol OLD, to NEW. This can be useful when
- one is trying link two things together for which you have no
- source, and there are name collisions.
- '--redefine-syms=FILENAME'
- Apply '--redefine-sym' to each symbol pair "OLD NEW" listed in the
- file FILENAME. FILENAME is simply a flat file, with one symbol
- pair per line. Line comments may be introduced by the hash
- character. This option may be given more than once.
- '--weaken'
- Change all global symbols in the file to be weak. This can be
- useful when building an object which will be linked against other
- objects using the '-R' option to the linker. This option is only
- effective when using an object file format which supports weak
- symbols.
- '--keep-symbols=FILENAME'
- Apply '--keep-symbol' option to each symbol listed in the file
- FILENAME. FILENAME is simply a flat file, with one symbol name per
- line. Line comments may be introduced by the hash character. This
- option may be given more than once.
- '--strip-symbols=FILENAME'
- Apply '--strip-symbol' option to each symbol listed in the file
- FILENAME. FILENAME is simply a flat file, with one symbol name per
- line. Line comments may be introduced by the hash character. This
- option may be given more than once.
- '--strip-unneeded-symbols=FILENAME'
- Apply '--strip-unneeded-symbol' option to each symbol listed in the
- file FILENAME. FILENAME is simply a flat file, with one symbol
- name per line. Line comments may be introduced by the hash
- character. This option may be given more than once.
- '--keep-global-symbols=FILENAME'
- Apply '--keep-global-symbol' option to each symbol listed in the
- file FILENAME. FILENAME is simply a flat file, with one symbol
- name per line. Line comments may be introduced by the hash
- character. This option may be given more than once.
- '--localize-symbols=FILENAME'
- Apply '--localize-symbol' option to each symbol listed in the file
- FILENAME. FILENAME is simply a flat file, with one symbol name per
- line. Line comments may be introduced by the hash character. This
- option may be given more than once.
- '--globalize-symbols=FILENAME'
- Apply '--globalize-symbol' option to each symbol listed in the file
- FILENAME. FILENAME is simply a flat file, with one symbol name per
- line. Line comments may be introduced by the hash character. This
- option may be given more than once. Note: this option cannot be
- used in conjunction with the '-G' or '--keep-global-symbol'
- options.
- '--weaken-symbols=FILENAME'
- Apply '--weaken-symbol' option to each symbol listed in the file
- FILENAME. FILENAME is simply a flat file, with one symbol name per
- line. Line comments may be introduced by the hash character. This
- option may be given more than once.
- '--alt-machine-code=INDEX'
- If the output architecture has alternate machine codes, use the
- INDEXth code instead of the default one. This is useful in case a
- machine is assigned an official code and the tool-chain adopts the
- new code, but other applications still depend on the original code
- being used. For ELF based architectures if the INDEX alternative
- does not exist then the value is treated as an absolute number to
- be stored in the e_machine field of the ELF header.
- '--writable-text'
- Mark the output text as writable. This option isn't meaningful for
- all object file formats.
- '--readonly-text'
- Make the output text write protected. This option isn't meaningful
- for all object file formats.
- '--pure'
- Mark the output file as demand paged. This option isn't meaningful
- for all object file formats.
- '--impure'
- Mark the output file as impure. This option isn't meaningful for
- all object file formats.
- '--prefix-symbols=STRING'
- Prefix all symbols in the output file with STRING.
- '--prefix-sections=STRING'
- Prefix all section names in the output file with STRING.
- '--prefix-alloc-sections=STRING'
- Prefix all the names of all allocated sections in the output file
- with STRING.
- '--add-gnu-debuglink=PATH-TO-FILE'
- Creates a .gnu_debuglink section which contains a reference to
- PATH-TO-FILE and adds it to the output file. Note: the file at
- PATH-TO-FILE must exist. Part of the process of adding the
- .gnu_debuglink section involves embedding a checksum of the
- contents of the debug info file into the section.
- If the debug info file is built in one location but it is going to
- be installed at a later time into a different location then do not
- use the path to the installed location. The '--add-gnu-debuglink'
- option will fail because the installed file does not exist yet.
- Instead put the debug info file in the current directory and use
- the '--add-gnu-debuglink' option without any directory components,
- like this:
- objcopy --add-gnu-debuglink=foo.debug
- At debug time the debugger will attempt to look for the separate
- debug info file in a set of known locations. The exact set of
- these locations varies depending upon the distribution being used,
- but it typically includes:
- '* The same directory as the executable.'
- '* A sub-directory of the directory containing the executable'
- called .debug
- '* A global debug directory such as /usr/lib/debug.'
- As long as the debug info file has been installed into one of these
- locations before the debugger is run everything should work
- correctly.
- '--keep-file-symbols'
- When stripping a file, perhaps with '--strip-debug' or
- '--strip-unneeded', retain any symbols specifying source file
- names, which would otherwise get stripped.
- '--only-keep-debug'
- Strip a file, removing contents of any sections that would not be
- stripped by '--strip-debug' and leaving the debugging sections
- intact. In ELF files, this preserves all note sections in the
- output.
- Note - the section headers of the stripped sections are preserved,
- including their sizes, but the contents of the section are
- discarded. The section headers are preserved so that other tools
- can match up the debuginfo file with the real executable, even if
- that executable has been relocated to a different address space.
- The intention is that this option will be used in conjunction with
- '--add-gnu-debuglink' to create a two part executable. One a
- stripped binary which will occupy less space in RAM and in a
- distribution and the second a debugging information file which is
- only needed if debugging abilities are required. The suggested
- procedure to create these files is as follows:
- 1. Link the executable as normal. Assuming that it is called
- 'foo' then...
- 2. Run 'objcopy --only-keep-debug foo foo.dbg' to create a file
- containing the debugging info.
- 3. Run 'objcopy --strip-debug foo' to create a stripped
- executable.
- 4. Run 'objcopy --add-gnu-debuglink=foo.dbg foo' to add a link to
- the debugging info into the stripped executable.
- Note--the choice of '.dbg' as an extension for the debug info file
- is arbitrary. Also the '--only-keep-debug' step is optional. You
- could instead do this:
- 1. Link the executable as normal.
- 2. Copy 'foo' to 'foo.full'
- 3. Run 'objcopy --strip-debug foo'
- 4. Run 'objcopy --add-gnu-debuglink=foo.full foo'
- i.e., the file pointed to by the '--add-gnu-debuglink' can be the
- full executable. It does not have to be a file created by the
- '--only-keep-debug' switch.
- Note--this switch is only intended for use on fully linked files.
- It does not make sense to use it on object files where the
- debugging information may be incomplete. Besides the gnu_debuglink
- feature currently only supports the presence of one filename
- containing debugging information, not multiple filenames on a
- one-per-object-file basis.
- '--strip-dwo'
- Remove the contents of all DWARF .dwo sections, leaving the
- remaining debugging sections and all symbols intact. This option
- is intended for use by the compiler as part of the '-gsplit-dwarf'
- option, which splits debug information between the .o file and a
- separate .dwo file. The compiler generates all debug information
- in the same file, then uses the '--extract-dwo' option to copy the
- .dwo sections to the .dwo file, then the '--strip-dwo' option to
- remove those sections from the original .o file.
- '--extract-dwo'
- Extract the contents of all DWARF .dwo sections. See the
- '--strip-dwo' option for more information.
- '--file-alignment NUM'
- Specify the file alignment. Sections in the file will always begin
- at file offsets which are multiples of this number. This defaults
- to 512. [This option is specific to PE targets.]
- '--heap RESERVE'
- '--heap RESERVE,COMMIT'
- Specify the number of bytes of memory to reserve (and optionally
- commit) to be used as heap for this program. [This option is
- specific to PE targets.]
- '--image-base VALUE'
- Use VALUE as the base address of your program or dll. This is the
- lowest memory location that will be used when your program or dll
- is loaded. To reduce the need to relocate and improve performance
- of your dlls, each should have a unique base address and not
- overlap any other dlls. The default is 0x400000 for executables,
- and 0x10000000 for dlls. [This option is specific to PE targets.]
- '--section-alignment NUM'
- Sets the section alignment field in the PE header. Sections in
- memory will always begin at addresses which are a multiple of this
- number. Defaults to 0x1000. [This option is specific to PE
- targets.]
- '--stack RESERVE'
- '--stack RESERVE,COMMIT'
- Specify the number of bytes of memory to reserve (and optionally
- commit) to be used as stack for this program. [This option is
- specific to PE targets.]
- '--subsystem WHICH'
- '--subsystem WHICH:MAJOR'
- '--subsystem WHICH:MAJOR.MINOR'
- Specifies the subsystem under which your program will execute. The
- legal values for WHICH are 'native', 'windows', 'console', 'posix',
- 'efi-app', 'efi-bsd', 'efi-rtd', 'sal-rtd', and 'xbox'. You may
- optionally set the subsystem version also. Numeric values are also
- accepted for WHICH. [This option is specific to PE targets.]
- '--extract-symbol'
- Keep the file's section flags and symbols but remove all section
- data. Specifically, the option:
- * removes the contents of all sections;
- * sets the size of every section to zero; and
- * sets the file's start address to zero.
- This option is used to build a '.sym' file for a VxWorks kernel.
- It can also be a useful way of reducing the size of a
- '--just-symbols' linker input file.
- '--compress-debug-sections'
- Compress DWARF debug sections using zlib with SHF_COMPRESSED from
- the ELF ABI. Note - if compression would actually make a section
- _larger_, then it is not compressed.
- '--compress-debug-sections=none'
- '--compress-debug-sections=zlib'
- '--compress-debug-sections=zlib-gnu'
- '--compress-debug-sections=zlib-gabi'
- For ELF files, these options control how DWARF debug sections are
- compressed. '--compress-debug-sections=none' is equivalent to
- '--decompress-debug-sections'. '--compress-debug-sections=zlib'
- and '--compress-debug-sections=zlib-gabi' are equivalent to
- '--compress-debug-sections'. '--compress-debug-sections=zlib-gnu'
- compresses DWARF debug sections using zlib. The debug sections are
- renamed to begin with '.zdebug' instead of '.debug'. Note - if
- compression would actually make a section _larger_, then it is not
- compressed nor renamed.
- '--decompress-debug-sections'
- Decompress DWARF debug sections using zlib. The original section
- names of the compressed sections are restored.
- '--elf-stt-common=yes'
- '--elf-stt-common=no'
- For ELF files, these options control whether common symbols should
- be converted to the 'STT_COMMON' or 'STT_OBJECT' type.
- '--elf-stt-common=yes' converts common symbol type to 'STT_COMMON'.
- '--elf-stt-common=no' converts common symbol type to 'STT_OBJECT'.
- '--merge-notes'
- '--no-merge-notes'
- For ELF files, attempt (or do not attempt) to reduce the size of
- any SHT_NOTE type sections by removing duplicate notes.
- '-V'
- '--version'
- Show the version number of 'objcopy'.
- '--verilog-data-width=BYTES'
- For Verilog output, this options controls the number of bytes
- converted for each output data element. The input target controls
- the endianness of the conversion.
- '-v'
- '--verbose'
- Verbose output: list all object files modified. In the case of
- archives, 'objcopy -V' lists all members of the archive.
- '--help'
- Show a summary of the options to 'objcopy'.
- '--info'
- Display a list showing all architectures and object formats
- available.
- File: binutils.info, Node: objdump, Next: ranlib, Prev: objcopy, Up: Top
- 4 objdump
- *********
- objdump [-a|--archive-headers]
- [-b BFDNAME|--target=BFDNAME]
- [-C|--demangle[=STYLE] ]
- [-d|--disassemble[=SYMBOL]]
- [-D|--disassemble-all]
- [-z|--disassemble-zeroes]
- [-EB|-EL|--endian={big | little }]
- [-f|--file-headers]
- [-F|--file-offsets]
- [--file-start-context]
- [-g|--debugging]
- [-e|--debugging-tags]
- [-h|--section-headers|--headers]
- [-i|--info]
- [-j SECTION|--section=SECTION]
- [-l|--line-numbers]
- [-S|--source]
- [--source-comment[=TEXT]]
- [-m MACHINE|--architecture=MACHINE]
- [-M OPTIONS|--disassembler-options=OPTIONS]
- [-p|--private-headers]
- [-P OPTIONS|--private=OPTIONS]
- [-r|--reloc]
- [-R|--dynamic-reloc]
- [-s|--full-contents]
- [-W[lLiaprmfFsoRtUuTgAckK]|
- --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]]
- [--ctf=SECTION]
- [-G|--stabs]
- [-t|--syms]
- [-T|--dynamic-syms]
- [-x|--all-headers]
- [-w|--wide]
- [--start-address=ADDRESS]
- [--stop-address=ADDRESS]
- [--prefix-addresses]
- [--[no-]show-raw-insn]
- [--adjust-vma=OFFSET]
- [--dwarf-depth=N]
- [--dwarf-start=N]
- [--ctf-parent=SECTION]
- [--no-recurse-limit|--recurse-limit]
- [--special-syms]
- [--prefix=PREFIX]
- [--prefix-strip=LEVEL]
- [--insn-width=WIDTH]
- [--visualize-jumps[=color|=extended-color|=off]
- [-V|--version]
- [-H|--help]
- OBJFILE...
- 'objdump' displays information about one or more object files. The
- options control what particular information to display. This
- information is mostly useful to programmers who are working on the
- compilation tools, as opposed to programmers who just want their program
- to compile and work.
- OBJFILE... are the object files to be examined. When you specify
- archives, 'objdump' shows information on each of the member object
- files.
- The long and short forms of options, shown here as alternatives, are
- equivalent. At least one option from the list
- '-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x' must be
- given.
- '-a'
- '--archive-header'
- If any of the OBJFILE files are archives, display the archive
- header information (in a format similar to 'ls -l'). Besides the
- information you could list with 'ar tv', 'objdump -a' shows the
- object file format of each archive member.
- '--adjust-vma=OFFSET'
- When dumping information, first add OFFSET to all the section
- addresses. This is useful if the section addresses do not
- correspond to the symbol table, which can happen when putting
- sections at particular addresses when using a format which can not
- represent section addresses, such as a.out.
- '-b BFDNAME'
- '--target=BFDNAME'
- Specify that the object-code format for the object files is
- BFDNAME. This option may not be necessary; OBJDUMP can
- automatically recognize many formats.
- For example,
- objdump -b oasys -m vax -h fu.o
- displays summary information from the section headers ('-h') of
- 'fu.o', which is explicitly identified ('-m') as a VAX object file
- in the format produced by Oasys compilers. You can list the
- formats available with the '-i' option. *Note Target Selection::,
- for more information.
- '-C'
- '--demangle[=STYLE]'
- Decode ("demangle") low-level symbol names into user-level names.
- Besides removing any initial underscore prepended by the system,
- this makes C++ function names readable. Different compilers have
- different mangling styles. The optional demangling style argument
- can be used to choose an appropriate demangling style for your
- compiler. *Note c++filt::, for more information on demangling.
- '--recurse-limit'
- '--no-recurse-limit'
- '--recursion-limit'
- '--no-recursion-limit'
- Enables or disables a limit on the amount of recursion performed
- whilst demangling strings. Since the name mangling formats allow
- for an inifinite level of recursion it is possible to create
- strings whose decoding will exhaust the amount of stack space
- available on the host machine, triggering a memory fault. The
- limit tries to prevent this from happening by restricting recursion
- to 2048 levels of nesting.
- The default is for this limit to be enabled, but disabling it may
- be necessary in order to demangle truly complicated names. Note
- however that if the recursion limit is disabled then stack
- exhaustion is possible and any bug reports about such an event will
- be rejected.
- '-g'
- '--debugging'
- Display debugging information. This attempts to parse STABS
- debugging format information stored in the file and print it out
- using a C like syntax. If no STABS debuging was found this option
- falls back on the '-W' option to print any DWARF information in the
- file.
- '-e'
- '--debugging-tags'
- Like '-g', but the information is generated in a format compatible
- with ctags tool.
- '-d'
- '--disassemble'
- '--disassemble=SYMBOL'
- Display the assembler mnemonics for the machine instructions from
- the input file. This option only disassembles those sections which
- are expected to contain instructions. If the optional SYMBOL
- argument is given, then display the assembler mnemonics starting at
- SYMBOL. If SYMBOL is a function name then disassembly will stop at
- the end of the function, otherwise it will stop when the next
- symbol is encountered. If there are no matches for SYMBOL then
- nothing will be displayed.
- Note if the '--dwarf=follow-links' option has also been enabled
- then any symbol tables in linked debug info files will be read in
- and used when disassembling.
- '-D'
- '--disassemble-all'
- Like '-d', but disassemble the contents of all sections, not just
- those expected to contain instructions.
- This option also has a subtle effect on the disassembly of
- instructions in code sections. When option '-d' is in effect
- objdump will assume that any symbols present in a code section
- occur on the boundary between instructions and it will refuse to
- disassemble across such a boundary. When option '-D' is in effect
- however this assumption is supressed. This means that it is
- possible for the output of '-d' and '-D' to differ if, for example,
- data is stored in code sections.
- If the target is an ARM architecture this switch also has the
- effect of forcing the disassembler to decode pieces of data found
- in code sections as if they were instructions.
- Note if the '--dwarf=follow-links' option has also been enabled
- then any symbol tables in linked debug info files will be read in
- and used when disassembling.
- '--prefix-addresses'
- When disassembling, print the complete address on each line. This
- is the older disassembly format.
- '-EB'
- '-EL'
- '--endian={big|little}'
- Specify the endianness of the object files. This only affects
- disassembly. This can be useful when disassembling a file format
- which does not describe endianness information, such as S-records.
- '-f'
- '--file-headers'
- Display summary information from the overall header of each of the
- OBJFILE files.
- '-F'
- '--file-offsets'
- When disassembling sections, whenever a symbol is displayed, also
- display the file offset of the region of data that is about to be
- dumped. If zeroes are being skipped, then when disassembly
- resumes, tell the user how many zeroes were skipped and the file
- offset of the location from where the disassembly resumes. When
- dumping sections, display the file offset of the location from
- where the dump starts.
- '--file-start-context'
- Specify that when displaying interlisted source code/disassembly
- (assumes '-S') from a file that has not yet been displayed, extend
- the context to the start of the file.
- '-h'
- '--section-headers'
- '--headers'
- Display summary information from the section headers of the object
- file.
- File segments may be relocated to nonstandard addresses, for
- example by using the '-Ttext', '-Tdata', or '-Tbss' options to
- 'ld'. However, some object file formats, such as a.out, do not
- store the starting address of the file segments. In those
- situations, although 'ld' relocates the sections correctly, using
- 'objdump -h' to list the file section headers cannot show the
- correct addresses. Instead, it shows the usual addresses, which
- are implicit for the target.
- Note, in some cases it is possible for a section to have both the
- READONLY and the NOREAD attributes set. In such cases the NOREAD
- attribute takes precedence, but 'objdump' will report both since
- the exact setting of the flag bits might be important.
- '-H'
- '--help'
- Print a summary of the options to 'objdump' and exit.
- '-i'
- '--info'
- Display a list showing all architectures and object formats
- available for specification with '-b' or '-m'.
- '-j NAME'
- '--section=NAME'
- Display information only for section NAME.
- '-l'
- '--line-numbers'
- Label the display (using debugging information) with the filename
- and source line numbers corresponding to the object code or relocs
- shown. Only useful with '-d', '-D', or '-r'.
- '-m MACHINE'
- '--architecture=MACHINE'
- Specify the architecture to use when disassembling object files.
- This can be useful when disassembling object files which do not
- describe architecture information, such as S-records. You can list
- the available architectures with the '-i' option.
- If the target is an ARM architecture then this switch has an
- additional effect. It restricts the disassembly to only those
- instructions supported by the architecture specified by MACHINE.
- If it is necessary to use this switch because the input file does
- not contain any architecture information, but it is also desired to
- disassemble all the instructions use '-marm'.
- '-M OPTIONS'
- '--disassembler-options=OPTIONS'
- Pass target specific information to the disassembler. Only
- supported on some targets. If it is necessary to specify more than
- one disassembler option then multiple '-M' options can be used or
- can be placed together into a comma separated list.
- For ARC, 'dsp' controls the printing of DSP instructions, 'spfp'
- selects the printing of FPX single precision FP instructions,
- 'dpfp' selects the printing of FPX double precision FP
- instructions, 'quarkse_em' selects the printing of special
- QuarkSE-EM instructions, 'fpuda' selects the printing of double
- precision assist instructions, 'fpus' selects the printing of FPU
- single precision FP instructions, while 'fpud' selects the printing
- of FPU double precision FP instructions. Additionally, one can
- choose to have all the immediates printed in hexadecimal using
- 'hex'. By default, the short immediates are printed using the
- decimal representation, while the long immediate values are printed
- as hexadecimal.
- 'cpu=...' allows to enforce a particular ISA when disassembling
- instructions, overriding the '-m' value or whatever is in the ELF
- file. This might be useful to select ARC EM or HS ISA, because
- architecture is same for those and disassembler relies on private
- ELF header data to decide if code is for EM or HS. This option
- might be specified multiple times - only the latest value will be
- used. Valid values are same as for the assembler '-mcpu=...'
- option.
- If the target is an ARM architecture then this switch can be used
- to select which register name set is used during disassembler.
- Specifying '-M reg-names-std' (the default) will select the
- register names as used in ARM's instruction set documentation, but
- with register 13 called 'sp', register 14 called 'lr' and register
- 15 called 'pc'. Specifying '-M reg-names-apcs' will select the
- name set used by the ARM Procedure Call Standard, whilst specifying
- '-M reg-names-raw' will just use 'r' followed by the register
- number.
- There are also two variants on the APCS register naming scheme
- enabled by '-M reg-names-atpcs' and '-M reg-names-special-atpcs'
- which use the ARM/Thumb Procedure Call Standard naming conventions.
- (Either with the normal register names or the special register
- names).
- This option can also be used for ARM architectures to force the
- disassembler to interpret all instructions as Thumb instructions by
- using the switch '--disassembler-options=force-thumb'. This can be
- useful when attempting to disassemble thumb code produced by other
- compilers.
- For AArch64 targets this switch can be used to set whether
- instructions are disassembled as the most general instruction using
- the '-M no-aliases' option or whether instruction notes should be
- generated as comments in the disasssembly using '-M notes'.
- For the x86, some of the options duplicate functions of the '-m'
- switch, but allow finer grained control. Multiple selections from
- the following may be specified as a comma separated string.
- 'x86-64'
- 'i386'
- 'i8086'
- Select disassembly for the given architecture.
- 'intel'
- 'att'
- Select between intel syntax mode and AT&T syntax mode.
- 'amd64'
- 'intel64'
- Select between AMD64 ISA and Intel64 ISA.
- 'intel-mnemonic'
- 'att-mnemonic'
- Select between intel mnemonic mode and AT&T mnemonic mode.
- Note: 'intel-mnemonic' implies 'intel' and 'att-mnemonic'
- implies 'att'.
- 'addr64'
- 'addr32'
- 'addr16'
- 'data32'
- 'data16'
- Specify the default address size and operand size. These five
- options will be overridden if 'x86-64', 'i386' or 'i8086'
- appear later in the option string.
- 'suffix'
- When in AT&T mode, instructs the disassembler to print a
- mnemonic suffix even when the suffix could be inferred by the
- operands.
- For PowerPC, the '-M' argument 'raw' selects disasssembly of
- hardware insns rather than aliases. For example, you will see
- 'rlwinm' rather than 'clrlwi', and 'addi' rather than 'li'. All of
- the '-m' arguments for 'gas' that select a CPU are supported.
- These are: '403', '405', '440', '464', '476', '601', '603', '604',
- '620', '7400', '7410', '7450', '7455', '750cl', '821', '850',
- '860', 'a2', 'booke', 'booke32', 'cell', 'com', 'e200z4', 'e300',
- 'e500', 'e500mc', 'e500mc64', 'e500x2', 'e5500', 'e6500', 'efs',
- 'power4', 'power5', 'power6', 'power7', 'power8', 'power9', 'ppc',
- 'ppc32', 'ppc64', 'ppc64bridge', 'ppcps', 'pwr', 'pwr2', 'pwr4',
- 'pwr5', 'pwr5x', 'pwr6', 'pwr7', 'pwr8', 'pwr9', 'pwrx', 'titan',
- and 'vle'. '32' and '64' modify the default or a prior CPU
- selection, disabling and enabling 64-bit insns respectively. In
- addition, 'altivec', 'any', 'htm', 'vsx', and 'spe' add
- capabilities to a previous _or later_ CPU selection. 'any' will
- disassemble any opcode known to binutils, but in cases where an
- opcode has two different meanings or different arguments, you may
- not see the disassembly you expect. If you disassemble without
- giving a CPU selection, a default will be chosen from information
- gleaned by BFD from the object files headers, but the result again
- may not be as you expect.
- For MIPS, this option controls the printing of instruction mnemonic
- names and register names in disassembled instructions. Multiple
- selections from the following may be specified as a comma separated
- string, and invalid options are ignored:
- 'no-aliases'
- Print the 'raw' instruction mnemonic instead of some pseudo
- instruction mnemonic. I.e., print 'daddu' or 'or' instead of
- 'move', 'sll' instead of 'nop', etc.
- 'msa'
- Disassemble MSA instructions.
- 'virt'
- Disassemble the virtualization ASE instructions.
- 'xpa'
- Disassemble the eXtended Physical Address (XPA) ASE
- instructions.
- 'gpr-names=ABI'
- Print GPR (general-purpose register) names as appropriate for
- the specified ABI. By default, GPR names are selected
- according to the ABI of the binary being disassembled.
- 'fpr-names=ABI'
- Print FPR (floating-point register) names as appropriate for
- the specified ABI. By default, FPR numbers are printed rather
- than names.
- 'cp0-names=ARCH'
- Print CP0 (system control coprocessor; coprocessor 0) register
- names as appropriate for the CPU or architecture specified by
- ARCH. By default, CP0 register names are selected according
- to the architecture and CPU of the binary being disassembled.
- 'hwr-names=ARCH'
- Print HWR (hardware register, used by the 'rdhwr' instruction)
- names as appropriate for the CPU or architecture specified by
- ARCH. By default, HWR names are selected according to the
- architecture and CPU of the binary being disassembled.
- 'reg-names=ABI'
- Print GPR and FPR names as appropriate for the selected ABI.
- 'reg-names=ARCH'
- Print CPU-specific register names (CP0 register and HWR names)
- as appropriate for the selected CPU or architecture.
- For any of the options listed above, ABI or ARCH may be specified
- as 'numeric' to have numbers printed rather than names, for the
- selected types of registers. You can list the available values of
- ABI and ARCH using the '--help' option.
- For VAX, you can specify function entry addresses with '-M
- entry:0xf00ba'. You can use this multiple times to properly
- disassemble VAX binary files that don't contain symbol tables (like
- ROM dumps). In these cases, the function entry mask would
- otherwise be decoded as VAX instructions, which would probably lead
- the rest of the function being wrongly disassembled.
- '-p'
- '--private-headers'
- Print information that is specific to the object file format. The
- exact information printed depends upon the object file format. For
- some object file formats, no additional information is printed.
- '-P OPTIONS'
- '--private=OPTIONS'
- Print information that is specific to the object file format. The
- argument OPTIONS is a comma separated list that depends on the
- format (the lists of options is displayed with the help).
- For XCOFF, the available options are:
- 'header'
- 'aout'
- 'sections'
- 'syms'
- 'relocs'
- 'lineno,'
- 'loader'
- 'except'
- 'typchk'
- 'traceback'
- 'toc'
- 'ldinfo'
- Not all object formats support this option. In particular the ELF
- format does not use it.
- '-r'
- '--reloc'
- Print the relocation entries of the file. If used with '-d' or
- '-D', the relocations are printed interspersed with the
- disassembly.
- '-R'
- '--dynamic-reloc'
- Print the dynamic relocation entries of the file. This is only
- meaningful for dynamic objects, such as certain types of shared
- libraries. As for '-r', if used with '-d' or '-D', the relocations
- are printed interspersed with the disassembly.
- '-s'
- '--full-contents'
- Display the full contents of any sections requested. By default
- all non-empty sections are displayed.
- '-S'
- '--source'
- Display source code intermixed with disassembly, if possible.
- Implies '-d'.
- '--source-comment[=TXT]'
- Like the '-S' option, but all source code lines are displayed with
- a prefix of TXT. Typically TXT will be a comment string which can
- be used to distinguish the assembler code from the source code. If
- TXT is not provided then a default string of "# " (hash followed by
- a space), will be used.
- '--prefix=PREFIX'
- Specify PREFIX to add to the absolute paths when used with '-S'.
- '--prefix-strip=LEVEL'
- Indicate how many initial directory names to strip off the
- hardwired absolute paths. It has no effect without
- '--prefix='PREFIX.
- '--show-raw-insn'
- When disassembling instructions, print the instruction in hex as
- well as in symbolic form. This is the default except when
- '--prefix-addresses' is used.
- '--no-show-raw-insn'
- When disassembling instructions, do not print the instruction
- bytes. This is the default when '--prefix-addresses' is used.
- '--insn-width=WIDTH'
- Display WIDTH bytes on a single line when disassembling
- instructions.
- '--visualize-jumps[=color|=extended-color|=off]'
- Visualize jumps that stay inside a function by drawing ASCII art
- between the start and target addresses. The optional '=color'
- argument adds color to the output using simple terminal colors.
- Alternatively the '=extended-color' argument will add color using
- 8bit colors, but these might not work on all terminals.
- If it is necessary to disable the 'visualize-jumps' option after it
- has previously been enabled then use 'visualize-jumps=off'.
- '-W[lLiaprmfFsoRtUuTgAckK]'
- '--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]'
- Displays the contents of the DWARF debug sections in the file, if
- any are present. Compressed debug sections are automatically
- decompressed (temporarily) before they are displayed. If one or
- more of the optional letters or words follows the switch then only
- those type(s) of data will be dumped. The letters and words refer
- to the following information:
- 'a'
- '=abbrev'
- Displays the contents of the '.debug_abbrev' section.
- 'A'
- '=addr'
- Displays the contents of the '.debug_addr' section.
- 'c'
- '=cu_index'
- Displays the contents of the '.debug_cu_index' and/or
- '.debug_tu_index' sections.
- 'f'
- '=frames'
- Display the raw contents of a '.debug_frame' section.
- 'F'
- '=frame-interp'
- Display the interpreted contents of a '.debug_frame' section.
- 'g'
- '=gdb_index'
- Displays the contents of the '.gdb_index' and/or
- '.debug_names' sections.
- 'i'
- '=info'
- Displays the contents of the '.debug_info' section. Note: the
- output from this option can also be restricted by the use of
- the '--dwarf-depth' and '--dwarf-start' options.
- 'k'
- '=links'
- Displays the contents of the '.gnu_debuglink' and/or
- '.gnu_debugaltlink' sections. Also displays any links to
- separate dwarf object files (dwo), if they are specified by
- the DW_AT_GNU_dwo_name or DW_AT_dwo_name attributes in the
- '.debug_info' section.
- 'K'
- '=follow-links'
- Display the contents of any selected debug sections that are
- found in linked, separate debug info file(s). This can result
- in multiple versions of the same debug section being displayed
- if it exists in more than one file.
- In addition, when displaying DWARF attributes, if a form is
- found that references the separate debug info file, then the
- referenced contents will also be displayed.
- 'l'
- '=rawline'
- Displays the contents of the '.debug_line' section in a raw
- format.
- 'L'
- '=decodedline'
- Displays the interpreted contents of the '.debug_line'
- section.
- 'm'
- '=macro'
- Displays the contents of the '.debug_macro' and/or
- '.debug_macinfo' sections.
- 'o'
- '=loc'
- Displays the contents of the '.debug_loc' and/or
- '.debug_loclists' sections.
- 'p'
- '=pubnames'
- Displays the contents of the '.debug_pubnames' and/or
- '.debug_gnu_pubnames' sections.
- 'r'
- '=aranges'
- Displays the contents of the '.debug_aranges' section.
- 'R'
- '=Ranges'
- Displays the contents of the '.debug_ranges' and/or
- '.debug_rnglists' sections.
- 's'
- '=str'
- Displays the contents of the '.debug_str', '.debug_line_str'
- and/or '.debug_str_offsets' sections.
- 't'
- '=pubtype'
- Displays the contents of the '.debug_pubtypes' and/or
- '.debug_gnu_pubtypes' sections.
- 'T'
- '=trace_aranges'
- Displays the contents of the '.trace_aranges' section.
- 'u'
- '=trace_abbrev'
- Displays the contents of the '.trace_abbrev' section.
- 'U'
- '=trace_info'
- Displays the contents of the '.trace_info' section.
- Note: displaying the contents of '.debug_static_funcs',
- '.debug_static_vars' and 'debug_weaknames' sections is not
- currently supported.
- '--dwarf-depth=N'
- Limit the dump of the '.debug_info' section to N children. This is
- only useful with '--debug-dump=info'. The default is to print all
- DIEs; the special value 0 for N will also have this effect.
- With a non-zero value for N, DIEs at or deeper than N levels will
- not be printed. The range for N is zero-based.
- '--dwarf-start=N'
- Print only DIEs beginning with the DIE numbered N. This is only
- useful with '--debug-dump=info'.
- If specified, this option will suppress printing of any header
- information and all DIEs before the DIE numbered N. Only siblings
- and children of the specified DIE will be printed.
- This can be used in conjunction with '--dwarf-depth'.
- '--dwarf-check'
- Enable additional checks for consistency of Dwarf information.
- '--ctf=SECTION'
- Display the contents of the specified CTF section. CTF sections
- themselves contain many subsections, all of which are displayed in
- order.
- '--ctf-parent=SECTION'
- Specify the name of another section from which the CTF dictionary
- can inherit types. (If none is specified, we assume the CTF
- dictionary inherits types from the default-named member of the
- archive contained within this section.)
- '-G'
- '--stabs'
- Display the full contents of any sections requested. Display the
- contents of the .stab and .stab.index and .stab.excl sections from
- an ELF file. This is only useful on systems (such as Solaris 2.0)
- in which '.stab' debugging symbol-table entries are carried in an
- ELF section. In most other file formats, debugging symbol-table
- entries are interleaved with linkage symbols, and are visible in
- the '--syms' output.
- '--start-address=ADDRESS'
- Start displaying data at the specified address. This affects the
- output of the '-d', '-r' and '-s' options.
- '--stop-address=ADDRESS'
- Stop displaying data at the specified address. This affects the
- output of the '-d', '-r' and '-s' options.
- '-t'
- '--syms'
- Print the symbol table entries of the file. This is similar to the
- information provided by the 'nm' program, although the display
- format is different. The format of the output depends upon the
- format of the file being dumped, but there are two main types. One
- looks like this:
- [ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss
- [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred
- where the number inside the square brackets is the number of the
- entry in the symbol table, the SEC number is the section number,
- the FL value are the symbol's flag bits, the TY number is the
- symbol's type, the SCL number is the symbol's storage class and the
- NX value is the number of auxilary entries associated with the
- symbol. The last two fields are the symbol's value and its name.
- The other common output format, usually seen with ELF based files,
- looks like this:
- 00000000 l d .bss 00000000 .bss
- 00000000 g .text 00000000 fred
- Here the first number is the symbol's value (sometimes refered to
- as its address). The next field is actually a set of characters
- and spaces indicating the flag bits that are set on the symbol.
- These characters are described below. Next is the section with
- which the symbol is associated or _*ABS*_ if the section is
- absolute (ie not connected with any section), or _*UND*_ if the
- section is referenced in the file being dumped, but not defined
- there.
- After the section name comes another field, a number, which for
- common symbols is the alignment and for other symbol is the size.
- Finally the symbol's name is displayed.
- The flag characters are divided into 7 groups as follows:
- 'l'
- 'g'
- 'u'
- '!'
- The symbol is a local (l), global (g), unique global (u),
- neither global nor local (a space) or both global and local
- (!). A symbol can be neither local or global for a variety of
- reasons, e.g., because it is used for debugging, but it is
- probably an indication of a bug if it is ever both local and
- global. Unique global symbols are a GNU extension to the
- standard set of ELF symbol bindings. For such a symbol the
- dynamic linker will make sure that in the entire process there
- is just one symbol with this name and type in use.
- 'w'
- The symbol is weak (w) or strong (a space).
- 'C'
- The symbol denotes a constructor (C) or an ordinary symbol (a
- space).
- 'W'
- The symbol is a warning (W) or a normal symbol (a space). A
- warning symbol's name is a message to be displayed if the
- symbol following the warning symbol is ever referenced.
- 'I'
- 'i'
- The symbol is an indirect reference to another symbol (I), a
- function to be evaluated during reloc processing (i) or a
- normal symbol (a space).
- 'd'
- 'D'
- The symbol is a debugging symbol (d) or a dynamic symbol (D)
- or a normal symbol (a space).
- 'F'
- 'f'
- 'O'
- The symbol is the name of a function (F) or a file (f) or an
- object (O) or just a normal symbol (a space).
- '-T'
- '--dynamic-syms'
- Print the dynamic symbol table entries of the file. This is only
- meaningful for dynamic objects, such as certain types of shared
- libraries. This is similar to the information provided by the 'nm'
- program when given the '-D' ('--dynamic') option.
- The output format is similar to that produced by the '--syms'
- option, except that an extra field is inserted before the symbol's
- name, giving the version information associated with the symbol.
- If the version is the default version to be used when resolving
- unversioned references to the symbol then it's displayed as is,
- otherwise it's put into parentheses.
- '--special-syms'
- When displaying symbols include those which the target considers to
- be special in some way and which would not normally be of interest
- to the user.
- '-V'
- '--version'
- Print the version number of 'objdump' and exit.
- '-x'
- '--all-headers'
- Display all available header information, including the symbol
- table and relocation entries. Using '-x' is equivalent to
- specifying all of '-a -f -h -p -r -t'.
- '-w'
- '--wide'
- Format some lines for output devices that have more than 80
- columns. Also do not truncate symbol names when they are
- displayed.
- '-z'
- '--disassemble-zeroes'
- Normally the disassembly output will skip blocks of zeroes. This
- option directs the disassembler to disassemble those blocks, just
- like any other data.
- File: binutils.info, Node: ranlib, Next: size, Prev: objdump, Up: Top
- 5 ranlib
- ********
- ranlib [--plugin NAME] [-DhHvVt] ARCHIVE
- 'ranlib' generates an index to the contents of an archive and stores
- it in the archive. The index lists each symbol defined by a member of
- an archive that is a relocatable object file.
- You may use 'nm -s' or 'nm --print-armap' to list this index.
- An archive with such an index speeds up linking to the library and
- allows routines in the library to call each other without regard to
- their placement in the archive.
- The GNU 'ranlib' program is another form of GNU 'ar'; running
- 'ranlib' is completely equivalent to executing 'ar -s'. *Note ar::.
- '-h'
- '-H'
- '--help'
- Show usage information for 'ranlib'.
- '-v'
- '-V'
- '--version'
- Show the version number of 'ranlib'.
- '-D'
- Operate in _deterministic_ mode. The symbol map archive member's
- header will show zero for the UID, GID, and timestamp. When this
- option is used, multiple runs will produce identical output files.
- If 'binutils' was configured with
- '--enable-deterministic-archives', then this mode is on by default.
- It can be disabled with the '-U' option, described below.
- '-t'
- Update the timestamp of the symbol map of an archive.
- '-U'
- Do _not_ operate in _deterministic_ mode. This is the inverse of
- the '-D' option, above: the archive index will get actual UID, GID,
- timestamp, and file mode values.
- If 'binutils' was configured _without_
- '--enable-deterministic-archives', then this mode is on by default.
- File: binutils.info, Node: size, Next: strings, Prev: ranlib, Up: Top
- 6 size
- ******
- size [-A|-B|-G|--format=COMPATIBILITY]
- [--help]
- [-d|-o|-x|--radix=NUMBER]
- [--common]
- [-t|--totals]
- [--target=BFDNAME] [-V|--version]
- [OBJFILE...]
- The GNU 'size' utility lists the section sizes and the total size for
- each of the binary files OBJFILE on its argument list. By default, one
- line of output is generated for each file or each module if the file is
- an archive.
- OBJFILE... are the files to be examined. If none are specified, the
- file 'a.out' will be used instead.
- The command-line options have the following meanings:
- '-A'
- '-B'
- '-G'
- '--format=COMPATIBILITY'
- Using one of these options, you can choose whether the output from
- GNU 'size' resembles output from System V 'size' (using '-A', or
- '--format=sysv'), or Berkeley 'size' (using '-B', or
- '--format=berkeley'). The default is the one-line format similar
- to Berkeley's. Alternatively, you can choose the GNU format output
- (using '-G', or '--format=gnu'), this is similar to Berkeley's
- output format, but sizes are counted differently.
- Here is an example of the Berkeley (default) format of output from
- 'size':
- $ size --format=Berkeley ranlib size
- text data bss dec hex filename
- 294880 81920 11592 388392 5ed28 ranlib
- 294880 81920 11888 388688 5ee50 size
- The Berkeley style output counts read only data in the 'text'
- column, not in the 'data' column, the 'dec' and 'hex' columns both
- display the sum of the 'text', 'data', and 'bss' columns in decimal
- and hexadecimal respectively.
- The GNU format counts read only data in the 'data' column, not the
- 'text' column, and only displays the sum of the 'text', 'data', and
- 'bss' columns once, in the 'total' column. The '--radix' option
- can be used to change the number base for all columns. Here is the
- same data displayed with GNU conventions:
- $ size --format=GNU ranlib size
- text data bss total filename
- 279880 96920 11592 388392 ranlib
- 279880 96920 11888 388688 size
- This is the same data, but displayed closer to System V
- conventions:
- $ size --format=SysV ranlib size
- ranlib :
- section size addr
- .text 294880 8192
- .data 81920 303104
- .bss 11592 385024
- Total 388392
- size :
- section size addr
- .text 294880 8192
- .data 81920 303104
- .bss 11888 385024
- Total 388688
- '--help'
- Show a summary of acceptable arguments and options.
- '-d'
- '-o'
- '-x'
- '--radix=NUMBER'
- Using one of these options, you can control whether the size of
- each section is given in decimal ('-d', or '--radix=10'); octal
- ('-o', or '--radix=8'); or hexadecimal ('-x', or '--radix=16'). In
- '--radix=NUMBER', only the three values (8, 10, 16) are supported.
- The total size is always given in two radices; decimal and
- hexadecimal for '-d' or '-x' output, or octal and hexadecimal if
- you're using '-o'.
- '--common'
- Print total size of common symbols in each file. When using
- Berkeley or GNU format these are included in the bss size.
- '-t'
- '--totals'
- Show totals of all objects listed (Berkeley or GNU format mode
- only).
- '--target=BFDNAME'
- Specify that the object-code format for OBJFILE is BFDNAME. This
- option may not be necessary; 'size' can automatically recognize
- many formats. *Note Target Selection::, for more information.
- '-V'
- '--version'
- Display the version number of 'size'.
- File: binutils.info, Node: strings, Next: strip, Prev: size, Up: Top
- 7 strings
- *********
- strings [-afovV] [-MIN-LEN]
- [-n MIN-LEN] [--bytes=MIN-LEN]
- [-t RADIX] [--radix=RADIX]
- [-e ENCODING] [--encoding=ENCODING]
- [-] [--all] [--print-file-name]
- [-T BFDNAME] [--target=BFDNAME]
- [-w] [--include-all-whitespace]
- [-s] [--output-separatorSEP_STRING]
- [--help] [--version] FILE...
- For each FILE given, GNU 'strings' prints the printable character
- sequences that are at least 4 characters long (or the number given with
- the options below) and are followed by an unprintable character.
- Depending upon how the strings program was configured it will default
- to either displaying all the printable sequences that it can find in
- each file, or only those sequences that are in loadable, initialized
- data sections. If the file type in unrecognizable, or if strings is
- reading from stdin then it will always display all of the printable
- sequences that it can find.
- For backwards compatibility any file that occurs after a command-line
- option of just '-' will also be scanned in full, regardless of the
- presence of any '-d' option.
- 'strings' is mainly useful for determining the contents of non-text
- files.
- '-a'
- '--all'
- '-'
- Scan the whole file, regardless of what sections it contains or
- whether those sections are loaded or initialized. Normally this is
- the default behaviour, but strings can be configured so that the
- '-d' is the default instead.
- The '-' option is position dependent and forces strings to perform
- full scans of any file that is mentioned after the '-' on the
- command line, even if the '-d' option has been specified.
- '-d'
- '--data'
- Only print strings from initialized, loaded data sections in the
- file. This may reduce the amount of garbage in the output, but it
- also exposes the strings program to any security flaws that may be
- present in the BFD library used to scan and load sections. Strings
- can be configured so that this option is the default behaviour. In
- such cases the '-a' option can be used to avoid using the BFD
- library and instead just print all of the strings found in the
- file.
- '-f'
- '--print-file-name'
- Print the name of the file before each string.
- '--help'
- Print a summary of the program usage on the standard output and
- exit.
- '-MIN-LEN'
- '-n MIN-LEN'
- '--bytes=MIN-LEN'
- Print sequences of characters that are at least MIN-LEN characters
- long, instead of the default 4.
- '-o'
- Like '-t o'. Some other versions of 'strings' have '-o' act like
- '-t d' instead. Since we can not be compatible with both ways, we
- simply chose one.
- '-t RADIX'
- '--radix=RADIX'
- Print the offset within the file before each string. The single
- character argument specifies the radix of the offset--'o' for
- octal, 'x' for hexadecimal, or 'd' for decimal.
- '-e ENCODING'
- '--encoding=ENCODING'
- Select the character encoding of the strings that are to be found.
- Possible values for ENCODING are: 's' = single-7-bit-byte
- characters (ASCII, ISO 8859, etc., default), 'S' =
- single-8-bit-byte characters, 'b' = 16-bit bigendian, 'l' = 16-bit
- littleendian, 'B' = 32-bit bigendian, 'L' = 32-bit littleendian.
- Useful for finding wide character strings. ('l' and 'b' apply to,
- for example, Unicode UTF-16/UCS-2 encodings).
- '-T BFDNAME'
- '--target=BFDNAME'
- Specify an object code format other than your system's default
- format. *Note Target Selection::, for more information.
- '-v'
- '-V'
- '--version'
- Print the program version number on the standard output and exit.
- '-w'
- '--include-all-whitespace'
- By default tab and space characters are included in the strings
- that are displayed, but other whitespace characters, such a
- newlines and carriage returns, are not. The '-w' option changes
- this so that all whitespace characters are considered to be part of
- a string.
- '-s'
- '--output-separator'
- By default, output strings are delimited by a new-line. This
- option allows you to supply any string to be used as the output
- record separator. Useful with -include-all-whitespace where
- strings may contain new-lines internally.
- File: binutils.info, Node: strip, Next: c++filt, Prev: strings, Up: Top
- 8 strip
- *******
- strip [-F BFDNAME |--target=BFDNAME]
- [-I BFDNAME |--input-target=BFDNAME]
- [-O BFDNAME |--output-target=BFDNAME]
- [-s|--strip-all]
- [-S|-g|-d|--strip-debug]
- [--strip-dwo]
- [-K SYMBOLNAME|--keep-symbol=SYMBOLNAME]
- [-M|--merge-notes][--no-merge-notes]
- [-N SYMBOLNAME |--strip-symbol=SYMBOLNAME]
- [-w|--wildcard]
- [-x|--discard-all] [-X |--discard-locals]
- [-R SECTIONNAME |--remove-section=SECTIONNAME]
- [--keep-section=SECTIONPATTERN]
- [--remove-relocations=SECTIONPATTERN]
- [-o FILE] [-p|--preserve-dates]
- [-D|--enable-deterministic-archives]
- [-U|--disable-deterministic-archives]
- [--keep-file-symbols]
- [--only-keep-debug]
- [-v |--verbose] [-V|--version]
- [--help] [--info]
- OBJFILE...
- GNU 'strip' discards all symbols from object files OBJFILE. The list
- of object files may include archives. At least one object file must be
- given.
- 'strip' modifies the files named in its argument, rather than writing
- modified copies under different names.
- '-F BFDNAME'
- '--target=BFDNAME'
- Treat the original OBJFILE as a file with the object code format
- BFDNAME, and rewrite it in the same format. *Note Target
- Selection::, for more information.
- '--help'
- Show a summary of the options to 'strip' and exit.
- '--info'
- Display a list showing all architectures and object formats
- available.
- '-I BFDNAME'
- '--input-target=BFDNAME'
- Treat the original OBJFILE as a file with the object code format
- BFDNAME. *Note Target Selection::, for more information.
- '-O BFDNAME'
- '--output-target=BFDNAME'
- Replace OBJFILE with a file in the output format BFDNAME. *Note
- Target Selection::, for more information.
- '-R SECTIONNAME'
- '--remove-section=SECTIONNAME'
- Remove any section named SECTIONNAME from the output file, in
- addition to whatever sections would otherwise be removed. This
- option may be given more than once. Note that using this option
- inappropriately may make the output file unusable. The wildcard
- character '*' may be given at the end of SECTIONNAME. If so, then
- any section starting with SECTIONNAME will be removed.
- If the first character of SECTIONPATTERN is the exclamation point
- (!) then matching sections will not be removed even if an earlier
- use of '--remove-section' on the same command line would otherwise
- remove it. For example:
- --remove-section=.text.* --remove-section=!.text.foo
- will remove all sections matching the pattern '.text.*', but will
- not remove the section '.text.foo'.
- '--keep-section=SECTIONPATTERN'
- When removing sections from the output file, keep sections that
- match SECTIONPATTERN.
- '--remove-relocations=SECTIONPATTERN'
- Remove relocations from the output file for any section matching
- SECTIONPATTERN. This option may be given more than once. Note
- that using this option inappropriately may make the output file
- unusable. Wildcard characters are accepted in SECTIONPATTERN. For
- example:
- --remove-relocations=.text.*
- will remove the relocations for all sections matching the patter
- '.text.*'.
- If the first character of SECTIONPATTERN is the exclamation point
- (!) then matching sections will not have their relocation removed
- even if an earlier use of '--remove-relocations' on the same
- command line would otherwise cause the relocations to be removed.
- For example:
- --remove-relocations=.text.* --remove-relocations=!.text.foo
- will remove all relocations for sections matching the pattern
- '.text.*', but will not remove relocations for the section
- '.text.foo'.
- '-s'
- '--strip-all'
- Remove all symbols.
- '-g'
- '-S'
- '-d'
- '--strip-debug'
- Remove debugging symbols only.
- '--strip-dwo'
- Remove the contents of all DWARF .dwo sections, leaving the
- remaining debugging sections and all symbols intact. See the
- description of this option in the 'objcopy' section for more
- information.
- '--strip-unneeded'
- Remove all symbols that are not needed for relocation processing.
- '-K SYMBOLNAME'
- '--keep-symbol=SYMBOLNAME'
- When stripping symbols, keep symbol SYMBOLNAME even if it would
- normally be stripped. This option may be given more than once.
- '-M'
- '--merge-notes'
- '--no-merge-notes'
- For ELF files, attempt (or do not attempt) to reduce the size of
- any SHT_NOTE type sections by removing duplicate notes. The
- default is to attempt this reduction unless stripping debug or DWO
- information.
- '-N SYMBOLNAME'
- '--strip-symbol=SYMBOLNAME'
- Remove symbol SYMBOLNAME from the source file. This option may be
- given more than once, and may be combined with strip options other
- than '-K'.
- '-o FILE'
- Put the stripped output in FILE, rather than replacing the existing
- file. When this argument is used, only one OBJFILE argument may be
- specified.
- '-p'
- '--preserve-dates'
- Preserve the access and modification dates of the file.
- '-D'
- '--enable-deterministic-archives'
- Operate in _deterministic_ mode. When copying archive members and
- writing the archive index, use zero for UIDs, GIDs, timestamps, and
- use consistent file modes for all files.
- If 'binutils' was configured with
- '--enable-deterministic-archives', then this mode is on by default.
- It can be disabled with the '-U' option, below.
- '-U'
- '--disable-deterministic-archives'
- Do _not_ operate in _deterministic_ mode. This is the inverse of
- the '-D' option, above: when copying archive members and writing
- the archive index, use their actual UID, GID, timestamp, and file
- mode values.
- This is the default unless 'binutils' was configured with
- '--enable-deterministic-archives'.
- '-w'
- '--wildcard'
- Permit regular expressions in SYMBOLNAMEs used in other command
- line options. The question mark (?), asterisk (*), backslash (\)
- and square brackets ([]) operators can be used anywhere in the
- symbol name. If the first character of the symbol name is the
- exclamation point (!) then the sense of the switch is reversed for
- that symbol. For example:
- -w -K !foo -K fo*
- would cause strip to only keep symbols that start with the letters
- "fo", but to discard the symbol "foo".
- '-x'
- '--discard-all'
- Remove non-global symbols.
- '-X'
- '--discard-locals'
- Remove compiler-generated local symbols. (These usually start with
- 'L' or '.'.)
- '--keep-file-symbols'
- When stripping a file, perhaps with '--strip-debug' or
- '--strip-unneeded', retain any symbols specifying source file
- names, which would otherwise get stripped.
- '--only-keep-debug'
- Strip a file, emptying the contents of any sections that would not
- be stripped by '--strip-debug' and leaving the debugging sections
- intact. In ELF files, this preserves all the note sections in the
- output as well.
- Note - the section headers of the stripped sections are preserved,
- including their sizes, but the contents of the section are
- discarded. The section headers are preserved so that other tools
- can match up the debuginfo file with the real executable, even if
- that executable has been relocated to a different address space.
- The intention is that this option will be used in conjunction with
- '--add-gnu-debuglink' to create a two part executable. One a
- stripped binary which will occupy less space in RAM and in a
- distribution and the second a debugging information file which is
- only needed if debugging abilities are required. The suggested
- procedure to create these files is as follows:
- 1. Link the executable as normal. Assuming that it is called
- 'foo' then...
- 2. Run 'objcopy --only-keep-debug foo foo.dbg' to create a file
- containing the debugging info.
- 3. Run 'objcopy --strip-debug foo' to create a stripped
- executable.
- 4. Run 'objcopy --add-gnu-debuglink=foo.dbg foo' to add a link to
- the debugging info into the stripped executable.
- Note--the choice of '.dbg' as an extension for the debug info file
- is arbitrary. Also the '--only-keep-debug' step is optional. You
- could instead do this:
- 1. Link the executable as normal.
- 2. Copy 'foo' to 'foo.full'
- 3. Run 'strip --strip-debug foo'
- 4. Run 'objcopy --add-gnu-debuglink=foo.full foo'
- i.e., the file pointed to by the '--add-gnu-debuglink' can be the
- full executable. It does not have to be a file created by the
- '--only-keep-debug' switch.
- Note--this switch is only intended for use on fully linked files.
- It does not make sense to use it on object files where the
- debugging information may be incomplete. Besides the gnu_debuglink
- feature currently only supports the presence of one filename
- containing debugging information, not multiple filenames on a
- one-per-object-file basis.
- '-V'
- '--version'
- Show the version number for 'strip'.
- '-v'
- '--verbose'
- Verbose output: list all object files modified. In the case of
- archives, 'strip -v' lists all members of the archive.
- File: binutils.info, Node: c++filt, Next: addr2line, Prev: strip, Up: Top
- 9 c++filt
- *********
- c++filt [-_|--strip-underscore]
- [-n|--no-strip-underscore]
- [-p|--no-params]
- [-t|--types]
- [-i|--no-verbose]
- [-r|--no-recurse-limit]
- [-R|--recurse-limit]
- [-s FORMAT|--format=FORMAT]
- [--help] [--version] [SYMBOL...]
- The C++ and Java languages provide function overloading, which means
- that you can write many functions with the same name, providing that
- each function takes parameters of different types. In order to be able
- to distinguish these similarly named functions C++ and Java encode them
- into a low-level assembler name which uniquely identifies each different
- version. This process is known as "mangling". The 'c++filt' (1)
- program does the inverse mapping: it decodes ("demangles") low-level
- names into user-level names so that they can be read.
- Every alphanumeric word (consisting of letters, digits, underscores,
- dollars, or periods) seen in the input is a potential mangled name. If
- the name decodes into a C++ name, the C++ name replaces the low-level
- name in the output, otherwise the original word is output. In this way
- you can pass an entire assembler source file, containing mangled names,
- through 'c++filt' and see the same source file containing demangled
- names.
- You can also use 'c++filt' to decipher individual symbols by passing
- them on the command line:
- c++filt SYMBOL
- If no SYMBOL arguments are given, 'c++filt' reads symbol names from
- the standard input instead. All the results are printed on the standard
- output. The difference between reading names from the command line
- versus reading names from the standard input is that command-line
- arguments are expected to be just mangled names and no checking is
- performed to separate them from surrounding text. Thus for example:
- c++filt -n _Z1fv
- will work and demangle the name to "f()" whereas:
- c++filt -n _Z1fv,
- will not work. (Note the extra comma at the end of the mangled name
- which makes it invalid). This command however will work:
- echo _Z1fv, | c++filt -n
- and will display "f(),", i.e., the demangled name followed by a
- trailing comma. This behaviour is because when the names are read from
- the standard input it is expected that they might be part of an
- assembler source file where there might be extra, extraneous characters
- trailing after a mangled name. For example:
- .type _Z1fv, @function
- '-_'
- '--strip-underscore'
- On some systems, both the C and C++ compilers put an underscore in
- front of every name. For example, the C name 'foo' gets the
- low-level name '_foo'. This option removes the initial underscore.
- Whether 'c++filt' removes the underscore by default is target
- dependent.
- '-n'
- '--no-strip-underscore'
- Do not remove the initial underscore.
- '-p'
- '--no-params'
- When demangling the name of a function, do not display the types of
- the function's parameters.
- '-t'
- '--types'
- Attempt to demangle types as well as function names. This is
- disabled by default since mangled types are normally only used
- internally in the compiler, and they can be confused with
- non-mangled names. For example, a function called "a" treated as a
- mangled type name would be demangled to "signed char".
- '-i'
- '--no-verbose'
- Do not include implementation details (if any) in the demangled
- output.
- '-r'
- '-R'
- '--recurse-limit'
- '--no-recurse-limit'
- '--recursion-limit'
- '--no-recursion-limit'
- Enables or disables a limit on the amount of recursion performed
- whilst demangling strings. Since the name mangling formats allow
- for an inifinite level of recursion it is possible to create
- strings whose decoding will exhaust the amount of stack space
- available on the host machine, triggering a memory fault. The
- limit tries to prevent this from happening by restricting recursion
- to 2048 levels of nesting.
- The default is for this limit to be enabled, but disabling it may
- be necessary in order to demangle truly complicated names. Note
- however that if the recursion limit is disabled then stack
- exhaustion is possible and any bug reports about such an event will
- be rejected.
- The '-r' option is a synonym for the '--no-recurse-limit' option.
- The '-R' option is a synonym for the '--recurse-limit' option.
- '-s FORMAT'
- '--format=FORMAT'
- 'c++filt' can decode various methods of mangling, used by different
- compilers. The argument to this option selects which method it
- uses:
- 'auto'
- Automatic selection based on executable (the default method)
- 'gnu'
- the one used by the GNU C++ compiler (g++)
- 'lucid'
- the one used by the Lucid compiler (lcc)
- 'arm'
- the one specified by the C++ Annotated Reference Manual
- 'hp'
- the one used by the HP compiler (aCC)
- 'edg'
- the one used by the EDG compiler
- 'gnu-v3'
- the one used by the GNU C++ compiler (g++) with the V3 ABI.
- 'java'
- the one used by the GNU Java compiler (gcj)
- 'gnat'
- the one used by the GNU Ada compiler (GNAT).
- '--help'
- Print a summary of the options to 'c++filt' and exit.
- '--version'
- Print the version number of 'c++filt' and exit.
- _Warning:_ 'c++filt' is a new utility, and the details of its user
- interface are subject to change in future releases. In particular,
- a command-line option may be required in the future to decode a
- name passed as an argument on the command line; in other words,
- c++filt SYMBOL
- may in a future release become
- c++filt OPTION SYMBOL
- ---------- Footnotes ----------
- (1) MS-DOS does not allow '+' characters in file names, so on MS-DOS
- this program is named 'CXXFILT'.
- File: binutils.info, Node: addr2line, Next: windmc, Prev: c++filt, Up: Top
- 10 addr2line
- ************
- addr2line [-a|--addresses]
- [-b BFDNAME|--target=BFDNAME]
- [-C|--demangle[=STYLE]]
- [-r|--no-recurse-limit]
- [-R|--recurse-limit]
- [-e FILENAME|--exe=FILENAME]
- [-f|--functions] [-s|--basename]
- [-i|--inlines]
- [-p|--pretty-print]
- [-j|--section=NAME]
- [-H|--help] [-V|--version]
- [addr addr ...]
- 'addr2line' translates addresses into file names and line numbers.
- Given an address in an executable or an offset in a section of a
- relocatable object, it uses the debugging information to figure out
- which file name and line number are associated with it.
- The executable or relocatable object to use is specified with the
- '-e' option. The default is the file 'a.out'. The section in the
- relocatable object to use is specified with the '-j' option.
- 'addr2line' has two modes of operation.
- In the first, hexadecimal addresses are specified on the command
- line, and 'addr2line' displays the file name and line number for each
- address.
- In the second, 'addr2line' reads hexadecimal addresses from standard
- input, and prints the file name and line number for each address on
- standard output. In this mode, 'addr2line' may be used in a pipe to
- convert dynamically chosen addresses.
- The format of the output is 'FILENAME:LINENO'. By default each input
- address generates one line of output.
- Two options can generate additional lines before each
- 'FILENAME:LINENO' line (in that order).
- If the '-a' option is used then a line with the input address is
- displayed.
- If the '-f' option is used, then a line with the 'FUNCTIONNAME' is
- displayed. This is the name of the function containing the address.
- One option can generate additional lines after the 'FILENAME:LINENO'
- line.
- If the '-i' option is used and the code at the given address is
- present there because of inlining by the compiler then additional lines
- are displayed afterwards. One or two extra lines (if the '-f' option is
- used) are displayed for each inlined function.
- Alternatively if the '-p' option is used then each input address
- generates a single, long, output line containing the address, the
- function name, the file name and the line number. If the '-i' option
- has also been used then any inlined functions will be displayed in the
- same manner, but on separate lines, and prefixed by the text '(inlined
- by)'.
- If the file name or function name can not be determined, 'addr2line'
- will print two question marks in their place. If the line number can
- not be determined, 'addr2line' will print 0.
- The long and short forms of options, shown here as alternatives, are
- equivalent.
- '-a'
- '--addresses'
- Display the address before the function name, file and line number
- information. The address is printed with a '0x' prefix to easily
- identify it.
- '-b BFDNAME'
- '--target=BFDNAME'
- Specify that the object-code format for the object files is
- BFDNAME.
- '-C'
- '--demangle[=STYLE]'
- Decode ("demangle") low-level symbol names into user-level names.
- Besides removing any initial underscore prepended by the system,
- this makes C++ function names readable. Different compilers have
- different mangling styles. The optional demangling style argument
- can be used to choose an appropriate demangling style for your
- compiler. *Note c++filt::, for more information on demangling.
- '-e FILENAME'
- '--exe=FILENAME'
- Specify the name of the executable for which addresses should be
- translated. The default file is 'a.out'.
- '-f'
- '--functions'
- Display function names as well as file and line number information.
- '-s'
- '--basenames'
- Display only the base of each file name.
- '-i'
- '--inlines'
- If the address belongs to a function that was inlined, the source
- information for all enclosing scopes back to the first non-inlined
- function will also be printed. For example, if 'main' inlines
- 'callee1' which inlines 'callee2', and address is from 'callee2',
- the source information for 'callee1' and 'main' will also be
- printed.
- '-j'
- '--section'
- Read offsets relative to the specified section instead of absolute
- addresses.
- '-p'
- '--pretty-print'
- Make the output more human friendly: each location are printed on
- one line. If option '-i' is specified, lines for all enclosing
- scopes are prefixed with '(inlined by)'.
- '-r'
- '-R'
- '--recurse-limit'
- '--no-recurse-limit'
- '--recursion-limit'
- '--no-recursion-limit'
- Enables or disables a limit on the amount of recursion performed
- whilst demangling strings. Since the name mangling formats allow
- for an inifinite level of recursion it is possible to create
- strings whose decoding will exhaust the amount of stack space
- available on the host machine, triggering a memory fault. The
- limit tries to prevent this from happening by restricting recursion
- to 2048 levels of nesting.
- The default is for this limit to be enabled, but disabling it may
- be necessary in order to demangle truly complicated names. Note
- however that if the recursion limit is disabled then stack
- exhaustion is possible and any bug reports about such an event will
- be rejected.
- The '-r' option is a synonym for the '--no-recurse-limit' option.
- The '-R' option is a synonym for the '--recurse-limit' option.
- Note this option is only effective if the '-C' or '--demangle'
- option has been enabled.
- File: binutils.info, Node: windmc, Next: windres, Prev: addr2line, Up: Top
- 11 windmc
- *********
- 'windmc' may be used to generator Windows message resources.
- _Warning:_ 'windmc' is not always built as part of the binary
- utilities, since it is only useful for Windows targets.
- windmc [options] input-file
- 'windmc' reads message definitions from an input file (.mc) and
- translate them into a set of output files. The output files may be of
- four kinds:
- 'h'
- A C header file containing the message definitions.
- 'rc'
- A resource file compilable by the 'windres' tool.
- 'bin'
- One or more binary files containing the resource data for a
- specific message language.
- 'dbg'
- A C include file that maps message id's to their symbolic name.
- The exact description of these different formats is available in
- documentation from Microsoft.
- When 'windmc' converts from the 'mc' format to the 'bin' format,
- 'rc', 'h', and optional 'dbg' it is acting like the Windows Message
- Compiler.
- '-a'
- '--ascii_in'
- Specifies that the input file specified is ASCII. This is the
- default behaviour.
- '-A'
- '--ascii_out'
- Specifies that messages in the output 'bin' files should be in
- ASCII format.
- '-b'
- '--binprefix'
- Specifies that 'bin' filenames should have to be prefixed by the
- basename of the source file.
- '-c'
- '--customflag'
- Sets the customer bit in all message id's.
- '-C CODEPAGE'
- '--codepage_in CODEPAGE'
- Sets the default codepage to be used to convert input file to
- UTF16. The default is ocdepage 1252.
- '-d'
- '--decimal_values'
- Outputs the constants in the header file in decimal. Default is
- using hexadecimal output.
- '-e EXT'
- '--extension EXT'
- The extension for the header file. The default is .h extension.
- '-F TARGET'
- '--target TARGET'
- Specify the BFD format to use for a bin file as output. This is a
- BFD target name; you can use the '--help' option to see a list of
- supported targets. Normally 'windmc' will use the default format,
- which is the first one listed by the '--help' option. *note Target
- Selection::.
- '-h PATH'
- '--headerdir PATH'
- The target directory of the generated header file. The default is
- the current directory.
- '-H'
- '--help'
- Displays a list of command-line options and then exits.
- '-m CHARACTERS'
- '--maxlength CHARACTERS'
- Instructs 'windmc' to generate a warning if the length of any
- message exceeds the number specified.
- '-n'
- '--nullterminate'
- Terminate message text in 'bin' files by zero. By default they are
- terminated by CR/LF.
- '-o'
- '--hresult_use'
- Not yet implemented. Instructs 'windmc' to generate an OLE2 header
- file, using HRESULT definitions. Status codes are used if the flag
- is not specified.
- '-O CODEPAGE'
- '--codepage_out CODEPAGE'
- Sets the default codepage to be used to output text files. The
- default is ocdepage 1252.
- '-r PATH'
- '--rcdir PATH'
- The target directory for the generated 'rc' script and the
- generated 'bin' files that the resource compiler script includes.
- The default is the current directory.
- '-u'
- '--unicode_in'
- Specifies that the input file is UTF16.
- '-U'
- '--unicode_out'
- Specifies that messages in the output 'bin' file should be in UTF16
- format. This is the default behaviour.
- '-v'
- '--verbose'
- Enable verbose mode.
- '-V'
- '--version'
- Prints the version number for 'windmc'.
- '-x PATH'
- '--xdgb PATH'
- The path of the 'dbg' C include file that maps message id's to the
- symbolic name. No such file is generated without specifying the
- switch.
- File: binutils.info, Node: windres, Next: dlltool, Prev: windmc, Up: Top
- 12 windres
- **********
- 'windres' may be used to manipulate Windows resources.
- _Warning:_ 'windres' is not always built as part of the binary
- utilities, since it is only useful for Windows targets.
- windres [options] [input-file] [output-file]
- 'windres' reads resources from an input file and copies them into an
- output file. Either file may be in one of three formats:
- 'rc'
- A text format read by the Resource Compiler.
- 'res'
- A binary format generated by the Resource Compiler.
- 'coff'
- A COFF object or executable.
- The exact description of these different formats is available in
- documentation from Microsoft.
- When 'windres' converts from the 'rc' format to the 'res' format, it
- is acting like the Windows Resource Compiler. When 'windres' converts
- from the 'res' format to the 'coff' format, it is acting like the
- Windows 'CVTRES' program.
- When 'windres' generates an 'rc' file, the output is similar but not
- identical to the format expected for the input. When an input 'rc' file
- refers to an external filename, an output 'rc' file will instead include
- the file contents.
- If the input or output format is not specified, 'windres' will guess
- based on the file name, or, for the input file, the file contents. A
- file with an extension of '.rc' will be treated as an 'rc' file, a file
- with an extension of '.res' will be treated as a 'res' file, and a file
- with an extension of '.o' or '.exe' will be treated as a 'coff' file.
- If no output file is specified, 'windres' will print the resources in
- 'rc' format to standard output.
- The normal use is for you to write an 'rc' file, use 'windres' to
- convert it to a COFF object file, and then link the COFF file into your
- application. This will make the resources described in the 'rc' file
- available to Windows.
- '-i FILENAME'
- '--input FILENAME'
- The name of the input file. If this option is not used, then
- 'windres' will use the first non-option argument as the input file
- name. If there are no non-option arguments, then 'windres' will
- read from standard input. 'windres' can not read a COFF file from
- standard input.
- '-o FILENAME'
- '--output FILENAME'
- The name of the output file. If this option is not used, then
- 'windres' will use the first non-option argument, after any used
- for the input file name, as the output file name. If there is no
- non-option argument, then 'windres' will write to standard output.
- 'windres' can not write a COFF file to standard output. Note, for
- compatibility with 'rc' the option '-fo' is also accepted, but its
- use is not recommended.
- '-J FORMAT'
- '--input-format FORMAT'
- The input format to read. FORMAT may be 'res', 'rc', or 'coff'.
- If no input format is specified, 'windres' will guess, as described
- above.
- '-O FORMAT'
- '--output-format FORMAT'
- The output format to generate. FORMAT may be 'res', 'rc', or
- 'coff'. If no output format is specified, 'windres' will guess, as
- described above.
- '-F TARGET'
- '--target TARGET'
- Specify the BFD format to use for a COFF file as input or output.
- This is a BFD target name; you can use the '--help' option to see a
- list of supported targets. Normally 'windres' will use the default
- format, which is the first one listed by the '--help' option.
- *note Target Selection::.
- '--preprocessor PROGRAM'
- When 'windres' reads an 'rc' file, it runs it through the C
- preprocessor first. This option may be used to specify the
- preprocessor to use, including any leading arguments. The default
- preprocessor argument is 'gcc -E -xc-header -DRC_INVOKED'.
- '--preprocessor-arg OPTION'
- When 'windres' reads an 'rc' file, it runs it through the C
- preprocessor first. This option may be used to specify additional
- text to be passed to preprocessor on its command line. This option
- can be used multiple times to add multiple options to the
- preprocessor command line.
- '-I DIRECTORY'
- '--include-dir DIRECTORY'
- Specify an include directory to use when reading an 'rc' file.
- 'windres' will pass this to the preprocessor as an '-I' option.
- 'windres' will also search this directory when looking for files
- named in the 'rc' file. If the argument passed to this command
- matches any of the supported FORMATS (as described in the '-J'
- option), it will issue a deprecation warning, and behave just like
- the '-J' option. New programs should not use this behaviour. If a
- directory happens to match a FORMAT, simple prefix it with './' to
- disable the backward compatibility.
- '-D TARGET'
- '--define SYM[=VAL]'
- Specify a '-D' option to pass to the preprocessor when reading an
- 'rc' file.
- '-U TARGET'
- '--undefine SYM'
- Specify a '-U' option to pass to the preprocessor when reading an
- 'rc' file.
- '-r'
- Ignored for compatibility with rc.
- '-v'
- Enable verbose mode. This tells you what the preprocessor is if
- you didn't specify one.
- '-c VAL'
- '--codepage VAL'
- Specify the default codepage to use when reading an 'rc' file. VAL
- should be a hexadecimal prefixed by '0x' or decimal codepage code.
- The valid range is from zero up to 0xffff, but the validity of the
- codepage is host and configuration dependent.
- '-l VAL'
- '--language VAL'
- Specify the default language to use when reading an 'rc' file. VAL
- should be a hexadecimal language code. The low eight bits are the
- language, and the high eight bits are the sublanguage.
- '--use-temp-file'
- Use a temporary file to instead of using popen to read the output
- of the preprocessor. Use this option if the popen implementation
- is buggy on the host (eg., certain non-English language versions of
- Windows 95 and Windows 98 are known to have buggy popen where the
- output will instead go the console).
- '--no-use-temp-file'
- Use popen, not a temporary file, to read the output of the
- preprocessor. This is the default behaviour.
- '-h'
- '--help'
- Prints a usage summary.
- '-V'
- '--version'
- Prints the version number for 'windres'.
- '--yydebug'
- If 'windres' is compiled with 'YYDEBUG' defined as '1', this will
- turn on parser debugging.
- File: binutils.info, Node: dlltool, Next: readelf, Prev: windres, Up: Top
- 13 dlltool
- **********
- 'dlltool' is used to create the files needed to create dynamic link
- libraries (DLLs) on systems which understand PE format image files such
- as Windows. A DLL contains an export table which contains information
- that the runtime loader needs to resolve references from a referencing
- program.
- The export table is generated by this program by reading in a '.def'
- file or scanning the '.a' and '.o' files which will be in the DLL. A
- '.o' file can contain information in special '.drectve' sections with
- export information.
- _Note:_ 'dlltool' is not always built as part of the binary
- utilities, since it is only useful for those targets which support
- DLLs.
- dlltool [-d|--input-def DEF-FILE-NAME]
- [-b|--base-file BASE-FILE-NAME]
- [-e|--output-exp EXPORTS-FILE-NAME]
- [-z|--output-def DEF-FILE-NAME]
- [-l|--output-lib LIBRARY-FILE-NAME]
- [-y|--output-delaylib LIBRARY-FILE-NAME]
- [--export-all-symbols] [--no-export-all-symbols]
- [--exclude-symbols LIST]
- [--no-default-excludes]
- [-S|--as PATH-TO-ASSEMBLER] [-f|--as-flags OPTIONS]
- [-D|--dllname NAME] [-m|--machine MACHINE]
- [-a|--add-indirect]
- [-U|--add-underscore] [--add-stdcall-underscore]
- [-k|--kill-at] [-A|--add-stdcall-alias]
- [-p|--ext-prefix-alias PREFIX]
- [-x|--no-idata4] [-c|--no-idata5]
- [--use-nul-prefixed-import-tables]
- [-I|--identify LIBRARY-FILE-NAME] [--identify-strict]
- [-i|--interwork]
- [-n|--nodelete] [-t|--temp-prefix PREFIX]
- [-v|--verbose]
- [-h|--help] [-V|--version]
- [--no-leading-underscore] [--leading-underscore]
- [object-file ...]
- 'dlltool' reads its inputs, which can come from the '-d' and '-b'
- options as well as object files specified on the command line. It then
- processes these inputs and if the '-e' option has been specified it
- creates a exports file. If the '-l' option has been specified it
- creates a library file and if the '-z' option has been specified it
- creates a def file. Any or all of the '-e', '-l' and '-z' options can
- be present in one invocation of dlltool.
- When creating a DLL, along with the source for the DLL, it is
- necessary to have three other files. 'dlltool' can help with the
- creation of these files.
- The first file is a '.def' file which specifies which functions are
- exported from the DLL, which functions the DLL imports, and so on. This
- is a text file and can be created by hand, or 'dlltool' can be used to
- create it using the '-z' option. In this case 'dlltool' will scan the
- object files specified on its command line looking for those functions
- which have been specially marked as being exported and put entries for
- them in the '.def' file it creates.
- In order to mark a function as being exported from a DLL, it needs to
- have an '-export:<name_of_function>' entry in the '.drectve' section of
- the object file. This can be done in C by using the asm() operator:
- asm (".section .drectve");
- asm (".ascii \"-export:my_func\"");
- int my_func (void) { ... }
- The second file needed for DLL creation is an exports file. This
- file is linked with the object files that make up the body of the DLL
- and it handles the interface between the DLL and the outside world.
- This is a binary file and it can be created by giving the '-e' option to
- 'dlltool' when it is creating or reading in a '.def' file.
- The third file needed for DLL creation is the library file that
- programs will link with in order to access the functions in the DLL (an
- 'import library'). This file can be created by giving the '-l' option
- to dlltool when it is creating or reading in a '.def' file.
- If the '-y' option is specified, dlltool generates a delay-import
- library that can be used instead of the normal import library to allow a
- program to link to the dll only as soon as an imported function is
- called for the first time. The resulting executable will need to be
- linked to the static delayimp library containing __delayLoadHelper2(),
- which in turn will import LoadLibraryA and GetProcAddress from kernel32.
- 'dlltool' builds the library file by hand, but it builds the exports
- file by creating temporary files containing assembler statements and
- then assembling these. The '-S' command-line option can be used to
- specify the path to the assembler that dlltool will use, and the '-f'
- option can be used to pass specific flags to that assembler. The '-n'
- can be used to prevent dlltool from deleting these temporary assembler
- files when it is done, and if '-n' is specified twice then this will
- prevent dlltool from deleting the temporary object files it used to
- build the library.
- Here is an example of creating a DLL from a source file 'dll.c' and
- also creating a program (from an object file called 'program.o') that
- uses that DLL:
- gcc -c dll.c
- dlltool -e exports.o -l dll.lib dll.o
- gcc dll.o exports.o -o dll.dll
- gcc program.o dll.lib -o program
- 'dlltool' may also be used to query an existing import library to
- determine the name of the DLL to which it is associated. See the
- description of the '-I' or '--identify' option.
- The command-line options have the following meanings:
- '-d FILENAME'
- '--input-def FILENAME'
- Specifies the name of a '.def' file to be read in and processed.
- '-b FILENAME'
- '--base-file FILENAME'
- Specifies the name of a base file to be read in and processed. The
- contents of this file will be added to the relocation section in
- the exports file generated by dlltool.
- '-e FILENAME'
- '--output-exp FILENAME'
- Specifies the name of the export file to be created by dlltool.
- '-z FILENAME'
- '--output-def FILENAME'
- Specifies the name of the '.def' file to be created by dlltool.
- '-l FILENAME'
- '--output-lib FILENAME'
- Specifies the name of the library file to be created by dlltool.
- '-y FILENAME'
- '--output-delaylib FILENAME'
- Specifies the name of the delay-import library file to be created
- by dlltool.
- '--export-all-symbols'
- Treat all global and weak defined symbols found in the input object
- files as symbols to be exported. There is a small list of symbols
- which are not exported by default; see the '--no-default-excludes'
- option. You may add to the list of symbols to not export by using
- the '--exclude-symbols' option.
- '--no-export-all-symbols'
- Only export symbols explicitly listed in an input '.def' file or in
- '.drectve' sections in the input object files. This is the default
- behaviour. The '.drectve' sections are created by 'dllexport'
- attributes in the source code.
- '--exclude-symbols LIST'
- Do not export the symbols in LIST. This is a list of symbol names
- separated by comma or colon characters. The symbol names should
- not contain a leading underscore. This is only meaningful when
- '--export-all-symbols' is used.
- '--no-default-excludes'
- When '--export-all-symbols' is used, it will by default avoid
- exporting certain special symbols. The current list of symbols to
- avoid exporting is 'DllMain@12', 'DllEntryPoint@0', 'impure_ptr'.
- You may use the '--no-default-excludes' option to go ahead and
- export these special symbols. This is only meaningful when
- '--export-all-symbols' is used.
- '-S PATH'
- '--as PATH'
- Specifies the path, including the filename, of the assembler to be
- used to create the exports file.
- '-f OPTIONS'
- '--as-flags OPTIONS'
- Specifies any specific command-line options to be passed to the
- assembler when building the exports file. This option will work
- even if the '-S' option is not used. This option only takes one
- argument, and if it occurs more than once on the command line, then
- later occurrences will override earlier occurrences. So if it is
- necessary to pass multiple options to the assembler they should be
- enclosed in double quotes.
- '-D NAME'
- '--dll-name NAME'
- Specifies the name to be stored in the '.def' file as the name of
- the DLL when the '-e' option is used. If this option is not
- present, then the filename given to the '-e' option will be used as
- the name of the DLL.
- '-m MACHINE'
- '-machine MACHINE'
- Specifies the type of machine for which the library file should be
- built. 'dlltool' has a built in default type, depending upon how
- it was created, but this option can be used to override that. This
- is normally only useful when creating DLLs for an ARM processor,
- when the contents of the DLL are actually encode using Thumb
- instructions.
- '-a'
- '--add-indirect'
- Specifies that when 'dlltool' is creating the exports file it
- should add a section which allows the exported functions to be
- referenced without using the import library. Whatever the hell
- that means!
- '-U'
- '--add-underscore'
- Specifies that when 'dlltool' is creating the exports file it
- should prepend an underscore to the names of _all_ exported
- symbols.
- '--no-leading-underscore'
- '--leading-underscore'
- Specifies whether standard symbol should be forced to be prefixed,
- or not.
- '--add-stdcall-underscore'
- Specifies that when 'dlltool' is creating the exports file it
- should prepend an underscore to the names of exported _stdcall_
- functions. Variable names and non-stdcall function names are not
- modified. This option is useful when creating GNU-compatible
- import libs for third party DLLs that were built with MS-Windows
- tools.
- '-k'
- '--kill-at'
- Specifies that '@<number>' suffixes should be omitted from the
- names of stdcall functions that will be imported from the DLL. This
- is useful when creating an import library for a DLL which exports
- stdcall functions but without the usual '@<number>' symbol name
- suffix.
- This does not change the naming of symbols provided by the import
- library to programs linked against it, but only the entries in the
- import table (ie the .idata section).
- '-A'
- '--add-stdcall-alias'
- Specifies that when 'dlltool' is creating the exports file it
- should add aliases for stdcall symbols without '@ <number>' in
- addition to the symbols with '@ <number>'.
- '-p'
- '--ext-prefix-alias PREFIX'
- Causes 'dlltool' to create external aliases for all DLL imports
- with the specified prefix. The aliases are created for both
- external and import symbols with no leading underscore.
- '-x'
- '--no-idata4'
- Specifies that when 'dlltool' is creating the exports and library
- files it should omit the '.idata4' section. This is for
- compatibility with certain operating systems.
- '--use-nul-prefixed-import-tables'
- Specifies that when 'dlltool' is creating the exports and library
- files it should prefix the '.idata4' and '.idata5' by zero an
- element. This emulates old gnu import library generation of
- 'dlltool'. By default this option is turned off.
- '-c'
- '--no-idata5'
- Specifies that when 'dlltool' is creating the exports and library
- files it should omit the '.idata5' section. This is for
- compatibility with certain operating systems.
- '-I FILENAME'
- '--identify FILENAME'
- Specifies that 'dlltool' should inspect the import library
- indicated by FILENAME and report, on 'stdout', the name(s) of the
- associated DLL(s). This can be performed in addition to any other
- operations indicated by the other options and arguments. 'dlltool'
- fails if the import library does not exist or is not actually an
- import library. See also '--identify-strict'.
- '--identify-strict'
- Modifies the behavior of the '--identify' option, such that an
- error is reported if FILENAME is associated with more than one DLL.
- '-i'
- '--interwork'
- Specifies that 'dlltool' should mark the objects in the library
- file and exports file that it produces as supporting interworking
- between ARM and Thumb code.
- '-n'
- '--nodelete'
- Makes 'dlltool' preserve the temporary assembler files it used to
- create the exports file. If this option is repeated then dlltool
- will also preserve the temporary object files it uses to create the
- library file.
- '-t PREFIX'
- '--temp-prefix PREFIX'
- Makes 'dlltool' use PREFIX when constructing the names of temporary
- assembler and object files. By default, the temp file prefix is
- generated from the pid.
- '-v'
- '--verbose'
- Make dlltool describe what it is doing.
- '-h'
- '--help'
- Displays a list of command-line options and then exits.
- '-V'
- '--version'
- Displays dlltool's version number and then exits.
- * Menu:
- * def file format:: The format of the dlltool '.def' file
- File: binutils.info, Node: def file format, Up: dlltool
- 13.1 The format of the 'dlltool' '.def' file
- ============================================
- A '.def' file contains any number of the following commands:
- 'NAME' NAME '[ ,' BASE ']'
- The result is going to be named NAME'.exe'.
- 'LIBRARY' NAME '[ ,' BASE ']'
- The result is going to be named NAME'.dll'. Note: If you want to
- use LIBRARY as name then you need to quote. Otherwise this will
- fail due a necessary hack for libtool (see PR binutils/13710 for
- more details).
- 'EXPORTS ( ( (' NAME1 '[ = ' NAME2 '] ) | ( ' NAME1 '=' MODULE-NAME '.' EXTERNAL-NAME ') ) [ == ' ITS_NAME ']'
- '[' INTEGER '] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *'
- Declares NAME1 as an exported symbol from the DLL, with optional
- ordinal number INTEGER, or declares NAME1 as an alias (forward) of
- the function EXTERNAL-NAME in the DLL. If ITS_NAME is specified,
- this name is used as string in export table. MODULE-NAME. Note:
- The 'EXPORTS' has to be the last command in .def file, as keywords
- are treated - beside 'LIBRARY' - as simple name-identifiers. If
- you want to use LIBRARY as name then you need to quote it.
- 'IMPORTS ( (' INTERNAL-NAME '=' MODULE-NAME '.' INTEGER ') | [' INTERNAL-NAME '= ]' MODULE-NAME '.' EXTERNAL-NAME ') [ == ) ITS_NAME ] *'
- Declares that EXTERNAL-NAME or the exported function whose ordinal
- number is INTEGER is to be imported from the file MODULE-NAME. If
- INTERNAL-NAME is specified then this is the name that the imported
- function will be referred to in the body of the DLL. If ITS_NAME is
- specified, this name is used as string in import table. Note: The
- 'IMPORTS' has to be the last command in .def file, as keywords are
- treated - beside 'LIBRARY' - as simple name-identifiers. If you
- want to use LIBRARY as name then you need to quote it.
- 'DESCRIPTION' STRING
- Puts STRING into the output '.exp' file in the '.rdata' section.
- 'STACKSIZE' NUMBER-RESERVE '[, ' NUMBER-COMMIT ']'
- 'HEAPSIZE' NUMBER-RESERVE '[, ' NUMBER-COMMIT ']'
- Generates '--stack' or '--heap' NUMBER-RESERVE,NUMBER-COMMIT in the
- output '.drectve' section. The linker will see this and act upon
- it.
- 'CODE' ATTR '+'
- 'DATA' ATTR '+'
- 'SECTIONS (' SECTION-NAME ATTR' + ) *'
- Generates '--attr' SECTION-NAME ATTR in the output '.drectve'
- section, where ATTR is one of 'READ', 'WRITE', 'EXECUTE' or
- 'SHARED'. The linker will see this and act upon it.
- File: binutils.info, Node: readelf, Next: elfedit, Prev: dlltool, Up: Top
- 14 readelf
- **********
- readelf [-a|--all]
- [-h|--file-header]
- [-l|--program-headers|--segments]
- [-S|--section-headers|--sections]
- [-g|--section-groups]
- [-t|--section-details]
- [-e|--headers]
- [-s|--syms|--symbols]
- [--dyn-syms]
- [-n|--notes]
- [-r|--relocs]
- [-u|--unwind]
- [-d|--dynamic]
- [-V|--version-info]
- [-A|--arch-specific]
- [-D|--use-dynamic]
- [-x <number or name>|--hex-dump=<number or name>]
- [-p <number or name>|--string-dump=<number or name>]
- [-R <number or name>|--relocated-dump=<number or name>]
- [-z|--decompress]
- [-c|--archive-index]
- [-w[lLiaprmfFsoRtUuTgAckK]|
- --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]]
- [--dwarf-depth=N]
- [--dwarf-start=N]
- [--ctf=SECTION]
- [--ctf-parent=SECTION]
- [--ctf-symbols=SECTION]
- [--ctf-strings=SECTION]
- [-I|--histogram]
- [-v|--version]
- [-W|--wide]
- [-H|--help]
- ELFFILE...
- 'readelf' displays information about one or more ELF format object
- files. The options control what particular information to display.
- ELFFILE... are the object files to be examined. 32-bit and 64-bit
- ELF files are supported, as are archives containing ELF files.
- This program performs a similar function to 'objdump' but it goes
- into more detail and it exists independently of the BFD library, so if
- there is a bug in BFD then readelf will not be affected.
- The long and short forms of options, shown here as alternatives, are
- equivalent. At least one option besides '-v' or '-H' must be given.
- '-a'
- '--all'
- Equivalent to specifying '--file-header', '--program-headers',
- '--sections', '--symbols', '--relocs', '--dynamic', '--notes',
- '--version-info', '--arch-specific', '--unwind', '--section-groups'
- and '--histogram'.
- Note - this option does not enable '--use-dynamic' itself, so if
- that option is not present on the command line then dynamic symbols
- and dynamic relocs will not be displayed.
- '-h'
- '--file-header'
- Displays the information contained in the ELF header at the start
- of the file.
- '-l'
- '--program-headers'
- '--segments'
- Displays the information contained in the file's segment headers,
- if it has any.
- '-S'
- '--sections'
- '--section-headers'
- Displays the information contained in the file's section headers,
- if it has any.
- '-g'
- '--section-groups'
- Displays the information contained in the file's section groups, if
- it has any.
- '-t'
- '--section-details'
- Displays the detailed section information. Implies '-S'.
- '-s'
- '--symbols'
- '--syms'
- Displays the entries in symbol table section of the file, if it has
- one. If a symbol has version information associated with it then
- this is displayed as well. The version string is displayed as a
- suffix to the symbol name, preceeded by an @ character. For
- example 'foo@VER_1'. If the version is the default version to be
- used when resolving unversioned references to the symbol then it is
- displayed as a suffix preceeded by two @ characters. For example
- 'foo@@VER_2'.
- '--dyn-syms'
- Displays the entries in dynamic symbol table section of the file,
- if it has one. The output format is the same as the format used by
- the '--syms' option.
- '-e'
- '--headers'
- Display all the headers in the file. Equivalent to '-h -l -S'.
- '-n'
- '--notes'
- Displays the contents of the NOTE segments and/or sections, if any.
- '-r'
- '--relocs'
- Displays the contents of the file's relocation section, if it has
- one.
- '-u'
- '--unwind'
- Displays the contents of the file's unwind section, if it has one.
- Only the unwind sections for IA64 ELF files, as well as ARM unwind
- tables ('.ARM.exidx' / '.ARM.extab') are currently supported. If
- support is not yet implemented for your architecture you could try
- dumping the contents of the .EH_FRAMES section using the
- '--debug-dump=frames' or '--debug-dump=frames-interp' options.
- '-d'
- '--dynamic'
- Displays the contents of the file's dynamic section, if it has one.
- '-V'
- '--version-info'
- Displays the contents of the version sections in the file, it they
- exist.
- '-A'
- '--arch-specific'
- Displays architecture-specific information in the file, if there is
- any.
- '-D'
- '--use-dynamic'
- When displaying symbols, this option makes 'readelf' use the symbol
- hash tables in the file's dynamic section, rather than the symbol
- table sections.
- When displaying relocations, this option makes 'readelf' display
- the dynamic relocations rather than the static relocations.
- '-x <number or name>'
- '--hex-dump=<number or name>'
- Displays the contents of the indicated section as a hexadecimal
- bytes. A number identifies a particular section by index in the
- section table; any other string identifies all sections with that
- name in the object file.
- '-R <number or name>'
- '--relocated-dump=<number or name>'
- Displays the contents of the indicated section as a hexadecimal
- bytes. A number identifies a particular section by index in the
- section table; any other string identifies all sections with that
- name in the object file. The contents of the section will be
- relocated before they are displayed.
- '-p <number or name>'
- '--string-dump=<number or name>'
- Displays the contents of the indicated section as printable
- strings. A number identifies a particular section by index in the
- section table; any other string identifies all sections with that
- name in the object file.
- '-z'
- '--decompress'
- Requests that the section(s) being dumped by 'x', 'R' or 'p'
- options are decompressed before being displayed. If the section(s)
- are not compressed then they are displayed as is.
- '-c'
- '--archive-index'
- Displays the file symbol index information contained in the header
- part of binary archives. Performs the same function as the 't'
- command to 'ar', but without using the BFD library. *Note ar::.
- '-w[lLiaprmfFsoRtUuTgAckK]'
- '--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]'
- Displays the contents of the DWARF debug sections in the file, if
- any are present. Compressed debug sections are automatically
- decompressed (temporarily) before they are displayed. If one or
- more of the optional letters or words follows the switch then only
- those type(s) of data will be dumped. The letters and words refer
- to the following information:
- 'a'
- '=abbrev'
- Displays the contents of the '.debug_abbrev' section.
- 'A'
- '=addr'
- Displays the contents of the '.debug_addr' section.
- 'c'
- '=cu_index'
- Displays the contents of the '.debug_cu_index' and/or
- '.debug_tu_index' sections.
- 'f'
- '=frames'
- Display the raw contents of a '.debug_frame' section.
- 'F'
- '=frame-interp'
- Display the interpreted contents of a '.debug_frame' section.
- 'g'
- '=gdb_index'
- Displays the contents of the '.gdb_index' and/or
- '.debug_names' sections.
- 'i'
- '=info'
- Displays the contents of the '.debug_info' section. Note: the
- output from this option can also be restricted by the use of
- the '--dwarf-depth' and '--dwarf-start' options.
- 'k'
- '=links'
- Displays the contents of the '.gnu_debuglink' and/or
- '.gnu_debugaltlink' sections. Also displays any links to
- separate dwarf object files (dwo), if they are specified by
- the DW_AT_GNU_dwo_name or DW_AT_dwo_name attributes in the
- '.debug_info' section.
- 'K'
- '=follow-links'
- Display the contents of any selected debug sections that are
- found in linked, separate debug info file(s). This can result
- in multiple versions of the same debug section being displayed
- if it exists in more than one file.
- In addition, when displaying DWARF attributes, if a form is
- found that references the separate debug info file, then the
- referenced contents will also be displayed.
- 'l'
- '=rawline'
- Displays the contents of the '.debug_line' section in a raw
- format.
- 'L'
- '=decodedline'
- Displays the interpreted contents of the '.debug_line'
- section.
- 'm'
- '=macro'
- Displays the contents of the '.debug_macro' and/or
- '.debug_macinfo' sections.
- 'o'
- '=loc'
- Displays the contents of the '.debug_loc' and/or
- '.debug_loclists' sections.
- 'p'
- '=pubnames'
- Displays the contents of the '.debug_pubnames' and/or
- '.debug_gnu_pubnames' sections.
- 'r'
- '=aranges'
- Displays the contents of the '.debug_aranges' section.
- 'R'
- '=Ranges'
- Displays the contents of the '.debug_ranges' and/or
- '.debug_rnglists' sections.
- 's'
- '=str'
- Displays the contents of the '.debug_str', '.debug_line_str'
- and/or '.debug_str_offsets' sections.
- 't'
- '=pubtype'
- Displays the contents of the '.debug_pubtypes' and/or
- '.debug_gnu_pubtypes' sections.
- 'T'
- '=trace_aranges'
- Displays the contents of the '.trace_aranges' section.
- 'u'
- '=trace_abbrev'
- Displays the contents of the '.trace_abbrev' section.
- 'U'
- '=trace_info'
- Displays the contents of the '.trace_info' section.
- Note: displaying the contents of '.debug_static_funcs',
- '.debug_static_vars' and 'debug_weaknames' sections is not
- currently supported.
- '--dwarf-depth=N'
- Limit the dump of the '.debug_info' section to N children. This is
- only useful with '--debug-dump=info'. The default is to print all
- DIEs; the special value 0 for N will also have this effect.
- With a non-zero value for N, DIEs at or deeper than N levels will
- not be printed. The range for N is zero-based.
- '--dwarf-start=N'
- Print only DIEs beginning with the DIE numbered N. This is only
- useful with '--debug-dump=info'.
- If specified, this option will suppress printing of any header
- information and all DIEs before the DIE numbered N. Only siblings
- and children of the specified DIE will be printed.
- This can be used in conjunction with '--dwarf-depth'.
- '--ctf=SECTION'
- Display the contents of the specified CTF section. CTF sections
- themselves contain many subsections, all of which are displayed in
- order.
- '--ctf-parent=SECTION'
- Specify the name of another section from which the CTF dictionary
- can inherit types. (If none is specified, we assume the CTF
- dictionary inherits types from the default-named member of the
- archive contained within this section.)
- '--ctf-symbols=SECTION'
- '--ctf-strings=SECTION'
- Specify the name of another section from which the CTF file can
- inherit strings and symbols. By default, the '.symtab' and its
- linked string table are used.
- If either of '--ctf-symbols' or '--ctf-strings' is specified, the
- other must be specified as well.
- '-I'
- '--histogram'
- Display a histogram of bucket list lengths when displaying the
- contents of the symbol tables.
- '-v'
- '--version'
- Display the version number of readelf.
- '-W'
- '--wide'
- Don't break output lines to fit into 80 columns. By default
- 'readelf' breaks section header and segment listing lines for
- 64-bit ELF files, so that they fit into 80 columns. This option
- causes 'readelf' to print each section header resp. each segment
- one a single line, which is far more readable on terminals wider
- than 80 columns.
- '-H'
- '--help'
- Display the command-line options understood by 'readelf'.
- File: binutils.info, Node: elfedit, Next: Common Options, Prev: readelf, Up: Top
- 15 elfedit
- **********
- elfedit [--input-mach=MACHINE]
- [--input-type=TYPE]
- [--input-osabi=OSABI]
- --output-mach=MACHINE
- --output-type=TYPE
- --output-osabi=OSABI
- --enable-x86-feature=FEATURE
- --disable-x86-feature=FEATURE
- [-v|--version]
- [-h|--help]
- ELFFILE...
- 'elfedit' updates the ELF header and program property of ELF files
- which have the matching ELF machine and file types. The options control
- how and which fields in the ELF header and program property should be
- updated.
- ELFFILE... are the ELF files to be updated. 32-bit and 64-bit ELF
- files are supported, as are archives containing ELF files.
- The long and short forms of options, shown here as alternatives, are
- equivalent. At least one of the '--output-mach', '--output-type',
- '--output-osabi', '--enable-x86-feature' and '--disable-x86-feature'
- options must be given.
- '--input-mach=MACHINE'
- Set the matching input ELF machine type to MACHINE. If
- '--input-mach' isn't specified, it will match any ELF machine
- types.
- The supported ELF machine types are, I386, IAMCU, L1OM, K1OM and
- X86-64.
- '--output-mach=MACHINE'
- Change the ELF machine type in the ELF header to MACHINE. The
- supported ELF machine types are the same as '--input-mach'.
- '--input-type=TYPE'
- Set the matching input ELF file type to TYPE. If '--input-type'
- isn't specified, it will match any ELF file types.
- The supported ELF file types are, REL, EXEC and DYN.
- '--output-type=TYPE'
- Change the ELF file type in the ELF header to TYPE. The supported
- ELF types are the same as '--input-type'.
- '--input-osabi=OSABI'
- Set the matching input ELF file OSABI to OSABI. If '--input-osabi'
- isn't specified, it will match any ELF OSABIs.
- The supported ELF OSABIs are, NONE, HPUX, NETBSD, GNU, LINUX (alias
- for GNU), SOLARIS, AIX, IRIX, FREEBSD, TRU64, MODESTO, OPENBSD,
- OPENVMS, NSK, AROS and FENIXOS.
- '--output-osabi=OSABI'
- Change the ELF OSABI in the ELF header to OSABI. The supported ELF
- OSABI are the same as '--input-osabi'.
- '--enable-x86-feature=FEATURE'
- Set the FEATURE bit in program property in EXEC or DYN ELF files
- with machine types of I386 or X86-64. The supported features are,
- IBT and SHSTK.
- '--disable-x86-feature=FEATURE'
- Clear the FEATURE bit in program property in EXEC or DYN ELF files
- with machine types of I386 or X86-64. The supported features are
- the same as '--enable-x86-feature'.
- Note: '--enable-x86-feature' and '--disable-x86-feature' are
- available only on hosts with 'mmap' support.
- '-v'
- '--version'
- Display the version number of 'elfedit'.
- '-h'
- '--help'
- Display the command-line options understood by 'elfedit'.
- File: binutils.info, Node: Common Options, Next: Selecting the Target System, Prev: elfedit, Up: Top
- 16 Common Options
- *****************
- The following command-line options are supported by all of the programs
- described in this manual.
- '@FILE'
- Read command-line options from FILE. The options read are inserted
- in place of the original @FILE option. If FILE does not exist, or
- cannot be read, then the option will be treated literally, and not
- removed.
- Options in FILE are separated by whitespace. A whitespace
- character may be included in an option by surrounding the entire
- option in either single or double quotes. Any character (including
- a backslash) may be included by prefixing the character to be
- included with a backslash. The FILE may itself contain additional
- @FILE options; any such options will be processed recursively.
- '--help'
- Display the command-line options supported by the program.
- '--version'
- Display the version number of the program.
- File: binutils.info, Node: Selecting the Target System, Next: debuginfod, Prev: Common Options, Up: Top
- 17 Selecting the Target System
- ******************************
- You can specify two aspects of the target system to the GNU binary file
- utilities, each in several ways:
- * the target
- * the architecture
- In the following summaries, the lists of ways to specify values are
- in order of decreasing precedence. The ways listed first override those
- listed later.
- The commands to list valid values only list the values for which the
- programs you are running were configured. If they were configured with
- '--enable-targets=all', the commands list most of the available values,
- but a few are left out; not all targets can be configured in at once
- because some of them can only be configured "native" (on hosts with the
- same type as the target system).
- * Menu:
- * Target Selection::
- * Architecture Selection::
- File: binutils.info, Node: Target Selection, Next: Architecture Selection, Up: Selecting the Target System
- 17.1 Target Selection
- =====================
- A "target" is an object file format. A given target may be supported
- for multiple architectures (*note Architecture Selection::). A target
- selection may also have variations for different operating systems or
- architectures.
- The command to list valid target values is 'objdump -i' (the first
- column of output contains the relevant information).
- Some sample values are: 'a.out-hp300bsd', 'ecoff-littlemips',
- 'a.out-sunos-big'.
- You can also specify a target using a configuration triplet. This is
- the same sort of name that is passed to 'configure' to specify a target.
- When you use a configuration triplet as an argument, it must be fully
- canonicalized. You can see the canonical version of a triplet by
- running the shell script 'config.sub' which is included with the
- sources.
- Some sample configuration triplets are: 'm68k-hp-bsd',
- 'mips-dec-ultrix', 'sparc-sun-sunos'.
- 'objdump' Target
- ----------------
- Ways to specify:
- 1. command-line option: '-b' or '--target'
- 2. environment variable 'GNUTARGET'
- 3. deduced from the input file
- 'objcopy' and 'strip' Input Target
- ----------------------------------
- Ways to specify:
- 1. command-line options: '-I' or '--input-target', or '-F' or
- '--target'
- 2. environment variable 'GNUTARGET'
- 3. deduced from the input file
- 'objcopy' and 'strip' Output Target
- -----------------------------------
- Ways to specify:
- 1. command-line options: '-O' or '--output-target', or '-F' or
- '--target'
- 2. the input target (see "'objcopy' and 'strip' Input Target" above)
- 3. environment variable 'GNUTARGET'
- 4. deduced from the input file
- 'nm', 'size', and 'strings' Target
- ----------------------------------
- Ways to specify:
- 1. command-line option: '--target'
- 2. environment variable 'GNUTARGET'
- 3. deduced from the input file
- File: binutils.info, Node: Architecture Selection, Prev: Target Selection, Up: Selecting the Target System
- 17.2 Architecture Selection
- ===========================
- An "architecture" is a type of CPU on which an object file is to run.
- Its name may contain a colon, separating the name of the processor
- family from the name of the particular CPU.
- The command to list valid architecture values is 'objdump -i' (the
- second column contains the relevant information).
- Sample values: 'm68k:68020', 'mips:3000', 'sparc'.
- 'objdump' Architecture
- ----------------------
- Ways to specify:
- 1. command-line option: '-m' or '--architecture'
- 2. deduced from the input file
- 'objcopy', 'nm', 'size', 'strings' Architecture
- -----------------------------------------------
- Ways to specify:
- 1. deduced from the input file
- File: binutils.info, Node: debuginfod, Next: Reporting Bugs, Prev: Selecting the Target System, Up: Top
- 18 debuginfod
- *************
- debuginfod is a web service that indexes ELF/DWARF debugging resources
- by build-id and serves them over HTTP.
- Binutils can be built with the debuginfod client library
- 'libdebuginfod' using the '--with-debuginfod' configure option. This
- option is enabled by default if 'libdebuginfod' is installed and found
- at configure time. This allows 'objdump' and 'readelf' to automatically
- query debuginfod servers for separate debug files when the files are
- otherwise not found.
- debuginfod is packaged with elfutils, starting with version 0.178.
- You can get the latest version from 'https://sourceware.org/elfutils/'.
- File: binutils.info, Node: Reporting Bugs, Next: GNU Free Documentation License, Prev: debuginfod, Up: Top
- 19 Reporting Bugs
- *****************
- Your bug reports play an essential role in making the binary utilities
- reliable.
- Reporting a bug may help you by bringing a solution to your problem,
- or it may not. But in any case the principal function of a bug report
- is to help the entire community by making the next version of the binary
- utilities work better. Bug reports are your contribution to their
- maintenance.
- In order for a bug report to serve its purpose, you must include the
- information that enables us to fix the bug.
- * Menu:
- * Bug Criteria:: Have you found a bug?
- * Bug Reporting:: How to report bugs
- File: binutils.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs
- 19.1 Have You Found a Bug?
- ==========================
- If you are not sure whether you have found a bug, here are some
- guidelines:
- * If a binary utility gets a fatal signal, for any input whatever,
- that is a bug. Reliable utilities never crash.
- * If a binary utility produces an error message for valid input, that
- is a bug.
- * If you are an experienced user of binary utilities, your
- suggestions for improvement are welcome in any case.
- File: binutils.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs
- 19.2 How to Report Bugs
- =======================
- A number of companies and individuals offer support for GNU products.
- If you obtained the binary utilities from a support organization, we
- recommend you contact that organization first.
- You can find contact information for many support companies and
- individuals in the file 'etc/SERVICE' in the GNU Emacs distribution.
- In any event, we also recommend that you send bug reports for the
- binary utilities to <http://www.sourceware.org/bugzilla/>.
- The fundamental principle of reporting bugs usefully is this: *report
- all the facts*. If you are not sure whether to state a fact or leave it
- out, state it!
- Often people omit facts because they think they know what causes the
- problem and assume that some details do not matter. Thus, you might
- assume that the name of a file you use in an example does not matter.
- Well, probably it does not, but one cannot be sure. Perhaps the bug is
- a stray memory reference which happens to fetch from the location where
- that pathname is stored in memory; perhaps, if the pathname were
- different, the contents of that location would fool the utility into
- doing the right thing despite the bug. Play it safe and give a
- specific, complete example. That is the easiest thing for you to do,
- and the most helpful.
- Keep in mind that the purpose of a bug report is to enable us to fix
- the bug if it is new to us. Therefore, always write your bug reports on
- the assumption that the bug has not been reported previously.
- Sometimes people give a few sketchy facts and ask, "Does this ring a
- bell?" This cannot help us fix a bug, so it is basically useless. We
- respond by asking for enough details to enable us to investigate. You
- might as well expedite matters by sending them to begin with.
- To enable us to fix the bug, you should include all these things:
- * The version of the utility. Each utility announces it if you start
- it with the '--version' argument.
- Without this, we will not know whether there is any point in
- looking for the bug in the current version of the binary utilities.
- * Any patches you may have applied to the source, including any
- patches made to the 'BFD' library.
- * The type of machine you are using, and the operating system name
- and version number.
- * What compiler (and its version) was used to compile the
- utilities--e.g. "'gcc-2.7'".
- * The command arguments you gave the utility to observe the bug. To
- guarantee you will not omit something important, list them all. A
- copy of the Makefile (or the output from make) is sufficient.
- If we were to try to guess the arguments, we would probably guess
- wrong and then we might not encounter the bug.
- * A complete input file, or set of input files, that will reproduce
- the bug. If the utility is reading an object file or files, then
- it is generally most helpful to send the actual object files.
- If the source files were produced exclusively using GNU programs
- (e.g., 'gcc', 'gas', and/or the GNU 'ld'), then it may be OK to
- send the source files rather than the object files. In this case,
- be sure to say exactly what version of 'gcc', or whatever, was used
- to produce the object files. Also say how 'gcc', or whatever, was
- configured.
- * A description of what behavior you observe that you believe is
- incorrect. For example, "It gets a fatal signal."
- Of course, if the bug is that the utility gets a fatal signal, then
- we will certainly notice it. But if the bug is incorrect output,
- we might not notice unless it is glaringly wrong. You might as
- well not give us a chance to make a mistake.
- Even if the problem you experience is a fatal signal, you should
- still say so explicitly. Suppose something strange is going on,
- such as your copy of the utility is out of sync, or you have
- encountered a bug in the C library on your system. (This has
- happened!) Your copy might crash and ours would not. If you told
- us to expect a crash, then when ours fails to crash, we would know
- that the bug was not happening for us. If you had not told us to
- expect a crash, then we would not be able to draw any conclusion
- from our observations.
- * If you wish to suggest changes to the source, send us context
- diffs, as generated by 'diff' with the '-u', '-c', or '-p' option.
- Always send diffs from the old file to the new file. If you wish
- to discuss something in the 'ld' source, refer to it by context,
- not by line number.
- The line numbers in our development sources will not match those in
- your sources. Your line numbers would convey no useful information
- to us.
- Here are some things that are not necessary:
- * A description of the envelope of the bug.
- Often people who encounter a bug spend a lot of time investigating
- which changes to the input file will make the bug go away and which
- changes will not affect it.
- This is often time consuming and not very useful, because the way
- we will find the bug is by running a single example under the
- debugger with breakpoints, not by pure deduction from a series of
- examples. We recommend that you save your time for something else.
- Of course, if you can find a simpler example to report _instead_ of
- the original one, that is a convenience for us. Errors in the
- output will be easier to spot, running under the debugger will take
- less time, and so on.
- However, simplification is not vital; if you do not want to do
- this, report the bug anyway and send us the entire test case you
- used.
- * A patch for the bug.
- A patch for the bug does help us if it is a good one. But do not
- omit the necessary information, such as the test case, on the
- assumption that a patch is all we need. We might see problems with
- your patch and decide to fix the problem another way, or we might
- not understand it at all.
- Sometimes with programs as complicated as the binary utilities it
- is very hard to construct an example that will make the program
- follow a certain path through the code. If you do not send us the
- example, we will not be able to construct one, so we will not be
- able to verify that the bug is fixed.
- And if we cannot understand what bug you are trying to fix, or why
- your patch should be an improvement, we will not install it. A
- test case will help us to understand.
- * A guess about what the bug is or what it depends on.
- Such guesses are usually wrong. Even we cannot guess right about
- such things without first using the debugger to find the facts.
- File: binutils.info, Node: GNU Free Documentation License, Next: Binutils Index, Prev: Reporting Bugs, Up: Top
- Appendix A GNU Free Documentation License
- *****************************************
- Version 1.3, 3 November 2008
- Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
- <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
- 0. PREAMBLE
- The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to
- assure everyone the effective freedom to copy and redistribute it,
- with or without modifying it, either commercially or
- noncommercially. Secondarily, this License preserves for the
- author and publisher a way to get credit for their work, while not
- being considered responsible for modifications made by others.
- This License is a kind of "copyleft", which means that derivative
- works of the document must themselves be free in the same sense.
- It complements the GNU General Public License, which is a copyleft
- license designed for free software.
- We have designed this License in order to use it for manuals for
- free software, because free software needs free documentation: a
- free program should come with manuals providing the same freedoms
- that the software does. But this License is not limited to
- software manuals; it can be used for any textual work, regardless
- of subject matter or whether it is published as a printed book. We
- recommend this License principally for works whose purpose is
- instruction or reference.
- 1. APPLICABILITY AND DEFINITIONS
- This License applies to any manual or other work, in any medium,
- that contains a notice placed by the copyright holder saying it can
- be distributed under the terms of this License. Such a notice
- grants a world-wide, royalty-free license, unlimited in duration,
- to use that work under the conditions stated herein. The
- "Document", below, refers to any such manual or work. Any member
- of the public is a licensee, and is addressed as "you". You accept
- the license if you copy, modify or distribute the work in a way
- requiring permission under copyright law.
- A "Modified Version" of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with
- modifications and/or translated into another language.
- A "Secondary Section" is a named appendix or a front-matter section
- of the Document that deals exclusively with the relationship of the
- publishers or authors of the Document to the Document's overall
- subject (or to related matters) and contains nothing that could
- fall directly within that overall subject. (Thus, if the Document
- is in part a textbook of mathematics, a Secondary Section may not
- explain any mathematics.) The relationship could be a matter of
- historical connection with the subject or with related matters, or
- of legal, commercial, philosophical, ethical or political position
- regarding them.
- The "Invariant Sections" are certain Secondary Sections whose
- titles are designated, as being those of Invariant Sections, in the
- notice that says that the Document is released under this License.
- If a section does not fit the above definition of Secondary then it
- is not allowed to be designated as Invariant. The Document may
- contain zero Invariant Sections. If the Document does not identify
- any Invariant Sections then there are none.
- The "Cover Texts" are certain short passages of text that are
- listed, as Front-Cover Texts or Back-Cover Texts, in the notice
- that says that the Document is released under this License. A
- Front-Cover Text may be at most 5 words, and a Back-Cover Text may
- be at most 25 words.
- A "Transparent" copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the
- general public, that is suitable for revising the document
- straightforwardly with generic text editors or (for images composed
- of pixels) generic paint programs or (for drawings) some widely
- available drawing editor, and that is suitable for input to text
- formatters or for automatic translation to a variety of formats
- suitable for input to text formatters. A copy made in an otherwise
- Transparent file format whose markup, or absence of markup, has
- been arranged to thwart or discourage subsequent modification by
- readers is not Transparent. An image format is not Transparent if
- used for any substantial amount of text. A copy that is not
- "Transparent" is called "Opaque".
- Examples of suitable formats for Transparent copies include plain
- ASCII without markup, Texinfo input format, LaTeX input format,
- SGML or XML using a publicly available DTD, and standard-conforming
- simple HTML, PostScript or PDF designed for human modification.
- Examples of transparent image formats include PNG, XCF and JPG.
- Opaque formats include proprietary formats that can be read and
- edited only by proprietary word processors, SGML or XML for which
- the DTD and/or processing tools are not generally available, and
- the machine-generated HTML, PostScript or PDF produced by some word
- processors for output purposes only.
- The "Title Page" means, for a printed book, the title page itself,
- plus such following pages as are needed to hold, legibly, the
- material this License requires to appear in the title page. For
- works in formats which do not have any title page as such, "Title
- Page" means the text near the most prominent appearance of the
- work's title, preceding the beginning of the body of the text.
- The "publisher" means any person or entity that distributes copies
- of the Document to the public.
- A section "Entitled XYZ" means a named subunit of the Document
- whose title either is precisely XYZ or contains XYZ in parentheses
- following text that translates XYZ in another language. (Here XYZ
- stands for a specific section name mentioned below, such as
- "Acknowledgements", "Dedications", "Endorsements", or "History".)
- To "Preserve the Title" of such a section when you modify the
- Document means that it remains a section "Entitled XYZ" according
- to this definition.
- The Document may include Warranty Disclaimers next to the notice
- which states that this License applies to the Document. These
- Warranty Disclaimers are considered to be included by reference in
- this License, but only as regards disclaiming warranties: any other
- implication that these Warranty Disclaimers may have is void and
- has no effect on the meaning of this License.
- 2. VERBATIM COPYING
- You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License
- applies to the Document are reproduced in all copies, and that you
- add no other conditions whatsoever to those of this License. You
- may not use technical measures to obstruct or control the reading
- or further copying of the copies you make or distribute. However,
- you may accept compensation in exchange for copies. If you
- distribute a large enough number of copies you must also follow the
- conditions in section 3.
- You may also lend copies, under the same conditions stated above,
- and you may publicly display copies.
- 3. COPYING IN QUANTITY
- If you publish printed copies (or copies in media that commonly
- have printed covers) of the Document, numbering more than 100, and
- the Document's license notice requires Cover Texts, you must
- enclose the copies in covers that carry, clearly and legibly, all
- these Cover Texts: Front-Cover Texts on the front cover, and
- Back-Cover Texts on the back cover. Both covers must also clearly
- and legibly identify you as the publisher of these copies. The
- front cover must present the full title with all words of the title
- equally prominent and visible. You may add other material on the
- covers in addition. Copying with changes limited to the covers, as
- long as they preserve the title of the Document and satisfy these
- conditions, can be treated as verbatim copying in other respects.
- If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto
- adjacent pages.
- If you publish or distribute Opaque copies of the Document
- numbering more than 100, you must either include a machine-readable
- Transparent copy along with each Opaque copy, or state in or with
- each Opaque copy a computer-network location from which the general
- network-using public has access to download using public-standard
- network protocols a complete Transparent copy of the Document, free
- of added material. If you use the latter option, you must take
- reasonably prudent steps, when you begin distribution of Opaque
- copies in quantity, to ensure that this Transparent copy will
- remain thus accessible at the stated location until at least one
- year after the last time you distribute an Opaque copy (directly or
- through your agents or retailers) of that edition to the public.
- It is requested, but not required, that you contact the authors of
- the Document well before redistributing any large number of copies,
- to give them a chance to provide you with an updated version of the
- Document.
- 4. MODIFICATIONS
- You may copy and distribute a Modified Version of the Document
- under the conditions of sections 2 and 3 above, provided that you
- release the Modified Version under precisely this License, with the
- Modified Version filling the role of the Document, thus licensing
- distribution and modification of the Modified Version to whoever
- possesses a copy of it. In addition, you must do these things in
- the Modified Version:
- A. Use in the Title Page (and on the covers, if any) a title
- distinct from that of the Document, and from those of previous
- versions (which should, if there were any, be listed in the
- History section of the Document). You may use the same title
- as a previous version if the original publisher of that
- version gives permission.
- B. List on the Title Page, as authors, one or more persons or
- entities responsible for authorship of the modifications in
- the Modified Version, together with at least five of the
- principal authors of the Document (all of its principal
- authors, if it has fewer than five), unless they release you
- from this requirement.
- C. State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
- D. Preserve all the copyright notices of the Document.
- E. Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
- F. Include, immediately after the copyright notices, a license
- notice giving the public permission to use the Modified
- Version under the terms of this License, in the form shown in
- the Addendum below.
- G. Preserve in that license notice the full lists of Invariant
- Sections and required Cover Texts given in the Document's
- license notice.
- H. Include an unaltered copy of this License.
- I. Preserve the section Entitled "History", Preserve its Title,
- and add to it an item stating at least the title, year, new
- authors, and publisher of the Modified Version as given on the
- Title Page. If there is no section Entitled "History" in the
- Document, create one stating the title, year, authors, and
- publisher of the Document as given on its Title Page, then add
- an item describing the Modified Version as stated in the
- previous sentence.
- J. Preserve the network location, if any, given in the Document
- for public access to a Transparent copy of the Document, and
- likewise the network locations given in the Document for
- previous versions it was based on. These may be placed in the
- "History" section. You may omit a network location for a work
- that was published at least four years before the Document
- itself, or if the original publisher of the version it refers
- to gives permission.
- K. For any section Entitled "Acknowledgements" or "Dedications",
- Preserve the Title of the section, and preserve in the section
- all the substance and tone of each of the contributor
- acknowledgements and/or dedications given therein.
- L. Preserve all the Invariant Sections of the Document, unaltered
- in their text and in their titles. Section numbers or the
- equivalent are not considered part of the section titles.
- M. Delete any section Entitled "Endorsements". Such a section
- may not be included in the Modified Version.
- N. Do not retitle any existing section to be Entitled
- "Endorsements" or to conflict in title with any Invariant
- Section.
- O. Preserve any Warranty Disclaimers.
- If the Modified Version includes new front-matter sections or
- appendices that qualify as Secondary Sections and contain no
- material copied from the Document, you may at your option designate
- some or all of these sections as invariant. To do this, add their
- titles to the list of Invariant Sections in the Modified Version's
- license notice. These titles must be distinct from any other
- section titles.
- You may add a section Entitled "Endorsements", provided it contains
- nothing but endorsements of your Modified Version by various
- parties--for example, statements of peer review or that the text
- has been approved by an organization as the authoritative
- definition of a standard.
- You may add a passage of up to five words as a Front-Cover Text,
- and a passage of up to 25 words as a Back-Cover Text, to the end of
- the list of Cover Texts in the Modified Version. Only one passage
- of Front-Cover Text and one of Back-Cover Text may be added by (or
- through arrangements made by) any one entity. If the Document
- already includes a cover text for the same cover, previously added
- by you or by arrangement made by the same entity you are acting on
- behalf of, you may not add another; but you may replace the old
- one, on explicit permission from the previous publisher that added
- the old one.
- The author(s) and publisher(s) of the Document do not by this
- License give permission to use their names for publicity for or to
- assert or imply endorsement of any Modified Version.
- 5. COMBINING DOCUMENTS
- You may combine the Document with other documents released under
- this License, under the terms defined in section 4 above for
- modified versions, provided that you include in the combination all
- of the Invariant Sections of all of the original documents,
- unmodified, and list them all as Invariant Sections of your
- combined work in its license notice, and that you preserve all
- their Warranty Disclaimers.
- The combined work need only contain one copy of this License, and
- multiple identical Invariant Sections may be replaced with a single
- copy. If there are multiple Invariant Sections with the same name
- but different contents, make the title of each such section unique
- by adding at the end of it, in parentheses, the name of the
- original author or publisher of that section if known, or else a
- unique number. Make the same adjustment to the section titles in
- the list of Invariant Sections in the license notice of the
- combined work.
- In the combination, you must combine any sections Entitled
- "History" in the various original documents, forming one section
- Entitled "History"; likewise combine any sections Entitled
- "Acknowledgements", and any sections Entitled "Dedications". You
- must delete all sections Entitled "Endorsements."
- 6. COLLECTIONS OF DOCUMENTS
- You may make a collection consisting of the Document and other
- documents released under this License, and replace the individual
- copies of this License in the various documents with a single copy
- that is included in the collection, provided that you follow the
- rules of this License for verbatim copying of each of the documents
- in all other respects.
- You may extract a single document from such a collection, and
- distribute it individually under this License, provided you insert
- a copy of this License into the extracted document, and follow this
- License in all other respects regarding verbatim copying of that
- document.
- 7. AGGREGATION WITH INDEPENDENT WORKS
- A compilation of the Document or its derivatives with other
- separate and independent documents or works, in or on a volume of a
- storage or distribution medium, is called an "aggregate" if the
- copyright resulting from the compilation is not used to limit the
- legal rights of the compilation's users beyond what the individual
- works permit. When the Document is included in an aggregate, this
- License does not apply to the other works in the aggregate which
- are not themselves derivative works of the Document.
- If the Cover Text requirement of section 3 is applicable to these
- copies of the Document, then if the Document is less than one half
- of the entire aggregate, the Document's Cover Texts may be placed
- on covers that bracket the Document within the aggregate, or the
- electronic equivalent of covers if the Document is in electronic
- form. Otherwise they must appear on printed covers that bracket
- the whole aggregate.
- 8. TRANSLATION
- Translation is considered a kind of modification, so you may
- distribute translations of the Document under the terms of section
- 4. Replacing Invariant Sections with translations requires special
- permission from their copyright holders, but you may include
- translations of some or all Invariant Sections in addition to the
- original versions of these Invariant Sections. You may include a
- translation of this License, and all the license notices in the
- Document, and any Warranty Disclaimers, provided that you also
- include the original English version of this License and the
- original versions of those notices and disclaimers. In case of a
- disagreement between the translation and the original version of
- this License or a notice or disclaimer, the original version will
- prevail.
- If a section in the Document is Entitled "Acknowledgements",
- "Dedications", or "History", the requirement (section 4) to
- Preserve its Title (section 1) will typically require changing the
- actual title.
- 9. TERMINATION
- You may not copy, modify, sublicense, or distribute the Document
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense, or distribute it is void,
- and will automatically terminate your rights under this License.
- However, if you cease all violation of this License, then your
- license from a particular copyright holder is reinstated (a)
- provisionally, unless and until the copyright holder explicitly and
- finally terminates your license, and (b) permanently, if the
- copyright holder fails to notify you of the violation by some
- reasonable means prior to 60 days after the cessation.
- Moreover, your license from a particular copyright holder is
- reinstated permanently if the copyright holder notifies you of the
- violation by some reasonable means, this is the first time you have
- received notice of violation of this License (for any work) from
- that copyright holder, and you cure the violation prior to 30 days
- after your receipt of the notice.
- Termination of your rights under this section does not terminate
- the licenses of parties who have received copies or rights from you
- under this License. If your rights have been terminated and not
- permanently reinstated, receipt of a copy of some or all of the
- same material does not give you any rights to use it.
- 10. FUTURE REVISIONS OF THIS LICENSE
- The Free Software Foundation may publish new, revised versions of
- the GNU Free Documentation License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns. See
- <http://www.gnu.org/copyleft/>.
- Each version of the License is given a distinguishing version
- number. If the Document specifies that a particular numbered
- version of this License "or any later version" applies to it, you
- have the option of following the terms and conditions either of
- that specified version or of any later version that has been
- published (not as a draft) by the Free Software Foundation. If the
- Document does not specify a version number of this License, you may
- choose any version ever published (not as a draft) by the Free
- Software Foundation. If the Document specifies that a proxy can
- decide which future versions of this License can be used, that
- proxy's public statement of acceptance of a version permanently
- authorizes you to choose that version for the Document.
- 11. RELICENSING
- "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
- World Wide Web server that publishes copyrightable works and also
- provides prominent facilities for anybody to edit those works. A
- public wiki that anybody can edit is an example of such a server.
- A "Massive Multiauthor Collaboration" (or "MMC") contained in the
- site means any set of copyrightable works thus published on the MMC
- site.
- "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
- license published by Creative Commons Corporation, a not-for-profit
- corporation with a principal place of business in San Francisco,
- California, as well as future copyleft versions of that license
- published by that same organization.
- "Incorporate" means to publish or republish a Document, in whole or
- in part, as part of another Document.
- An MMC is "eligible for relicensing" if it is licensed under this
- License, and if all works that were first published under this
- License somewhere other than this MMC, and subsequently
- incorporated in whole or in part into the MMC, (1) had no cover
- texts or invariant sections, and (2) were thus incorporated prior
- to November 1, 2008.
- The operator of an MMC Site may republish an MMC contained in the
- site under CC-BY-SA on the same site at any time before August 1,
- 2009, provided the MMC is eligible for relicensing.
- ADDENDUM: How to use this License for your documents
- ====================================================
- To use this License in a document you have written, include a copy of
- the License in the document and put the following copyright and license
- notices just after the title page:
- Copyright (C) YEAR YOUR NAME.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
- Texts. A copy of the license is included in the section entitled ``GNU
- Free Documentation License''.
- If you have Invariant Sections, Front-Cover Texts and Back-Cover
- Texts, replace the "with...Texts." line with this:
- with the Invariant Sections being LIST THEIR TITLES, with
- the Front-Cover Texts being LIST, and with the Back-Cover Texts
- being LIST.
- If you have Invariant Sections without Cover Texts, or some other
- combination of the three, merge those two alternatives to suit the
- situation.
- If your document contains nontrivial examples of program code, we
- recommend releasing these examples in parallel under your choice of free
- software license, such as the GNU General Public License, to permit
- their use in free software.
- File: binutils.info, Node: Binutils Index, Prev: GNU Free Documentation License, Up: Top
- Binutils Index
- **************
- �[index�]
- * Menu:
- * -enable-deterministic-archives: ar cmdline. (line 150)
- * -enable-deterministic-archives <1>: ar cmdline. (line 233)
- * -enable-deterministic-archives <2>: objcopy. (line 355)
- * -enable-deterministic-archives <3>: objcopy. (line 365)
- * -enable-deterministic-archives <4>: ranlib. (line 32)
- * -enable-deterministic-archives <5>: ranlib. (line 44)
- * -enable-deterministic-archives <6>: strip. (line 155)
- * -enable-deterministic-archives <7>: strip. (line 165)
- * .stab: objdump. (line 684)
- * Add prefix to absolute paths: objdump. (line 497)
- * addr2line: addr2line. (line 6)
- * address to file name and line number: addr2line. (line 6)
- * all header information, object file: objdump. (line 806)
- * ar: ar. (line 6)
- * ar compatibility: ar. (line 60)
- * architecture: objdump. (line 250)
- * architectures available: objdump. (line 235)
- * archive contents: ranlib. (line 6)
- * Archive file symbol index information: readelf. (line 183)
- * archive headers: objdump. (line 74)
- * archives: ar. (line 6)
- * base files: dlltool. (line 124)
- * bug criteria: Bug Criteria. (line 6)
- * bug reports: Bug Reporting. (line 6)
- * bugs: Reporting Bugs. (line 6)
- * bugs, reporting: Bug Reporting. (line 6)
- * c++filt: c++filt. (line 6)
- * changing object addresses: objcopy. (line 400)
- * changing section address: objcopy. (line 410)
- * changing section LMA: objcopy. (line 419)
- * changing section VMA: objcopy. (line 432)
- * changing start address: objcopy. (line 395)
- * collections of files: ar. (line 6)
- * Compact Type Format: objdump. (line 670)
- * Compact Type Format <1>: readelf. (line 327)
- * compatibility, ar: ar. (line 60)
- * contents of archive: ar cmdline. (line 97)
- * crash: Bug Criteria. (line 9)
- * creating archives: ar cmdline. (line 144)
- * creating thin archive: ar cmdline. (line 219)
- * CTF: objdump. (line 670)
- * CTF <1>: readelf. (line 327)
- * cxxfilt: c++filt. (line 16)
- * dates in archive: ar cmdline. (line 183)
- * debug symbols: objdump. (line 684)
- * debugging symbols: nm. (line 153)
- * deleting from archive: ar cmdline. (line 26)
- * demangling C++ symbols: c++filt. (line 6)
- * demangling in nm: nm. (line 161)
- * demangling in objdump: objdump. (line 102)
- * demangling in objdump <1>: addr2line. (line 86)
- * deterministic archives: ar cmdline. (line 150)
- * deterministic archives <1>: ar cmdline. (line 233)
- * deterministic archives <2>: objcopy. (line 355)
- * deterministic archives <3>: objcopy. (line 365)
- * deterministic archives <4>: ranlib. (line 32)
- * deterministic archives <5>: ranlib. (line 44)
- * deterministic archives <6>: strip. (line 155)
- * deterministic archives <7>: strip. (line 165)
- * disassembling object code: objdump. (line 143)
- * disassembly architecture: objdump. (line 250)
- * disassembly endianness: objdump. (line 185)
- * disassembly, with source: objdump. (line 486)
- * disassembly, with source <1>: objdump. (line 490)
- * discarding symbols: strip. (line 6)
- * DLL: dlltool. (line 6)
- * dlltool: dlltool. (line 6)
- * dynamic relocation entries, in object file: objdump. (line 474)
- * dynamic symbol table entries, printing: objdump. (line 783)
- * dynamic symbols: nm. (line 191)
- * ELF dynamic section information: readelf. (line 132)
- * ELF dynamic symbol table information: readelf. (line 104)
- * ELF file header information: readelf. (line 67)
- * ELF file information: readelf. (line 6)
- * ELF notes: readelf. (line 114)
- * ELF object file format: objdump. (line 684)
- * ELF program header information: readelf. (line 73)
- * ELF reloc information: readelf. (line 118)
- * ELF section group information: readelf. (line 84)
- * ELF section information: readelf. (line 79)
- * ELF section information <1>: readelf. (line 89)
- * ELF segment information: readelf. (line 73)
- * ELF symbol table information: readelf. (line 94)
- * ELF version sections information: readelf. (line 136)
- * elfedit: elfedit. (line 6)
- * endianness: objdump. (line 185)
- * error on valid input: Bug Criteria. (line 12)
- * external symbols: nm. (line 203)
- * external symbols <1>: nm. (line 267)
- * external symbols <2>: nm. (line 281)
- * extract from archive: ar cmdline. (line 114)
- * fatal signal: Bug Criteria. (line 9)
- * file name: nm. (line 147)
- * header information, all: objdump. (line 806)
- * input .def file: dlltool. (line 120)
- * input file name: nm. (line 147)
- * Instruction width: objdump. (line 514)
- * libraries: ar. (line 25)
- * listings strings: strings. (line 6)
- * machine instructions: objdump. (line 143)
- * moving in archive: ar cmdline. (line 34)
- * MRI compatibility, ar: ar scripts. (line 8)
- * name duplication in archive: ar cmdline. (line 108)
- * name length: ar. (line 18)
- * nm: nm. (line 6)
- * nm compatibility: nm. (line 157)
- * nm compatibility <1>: nm. (line 197)
- * nm format: nm. (line 157)
- * nm format <1>: nm. (line 197)
- * not writing archive index: ar cmdline. (line 212)
- * objdump: objdump. (line 6)
- * objdump inlines: nm. (line 219)
- * object code format: nm. (line 333)
- * object code format <1>: objdump. (line 88)
- * object code format <2>: size. (line 103)
- * object code format <3>: strings. (line 94)
- * object code format <4>: addr2line. (line 81)
- * object file header: objdump. (line 191)
- * object file information: objdump. (line 6)
- * object file offsets: objdump. (line 196)
- * object file sections: objdump. (line 481)
- * object formats available: objdump. (line 235)
- * offsets of files: ar cmdline. (line 188)
- * operations on archive: ar cmdline. (line 22)
- * plugins: ar cmdline. (line 267)
- * plugins <1>: nm. (line 284)
- * printing from archive: ar cmdline. (line 46)
- * printing strings: strings. (line 6)
- * quick append to archive: ar cmdline. (line 54)
- * radix for section sizes: size. (line 85)
- * ranlib: ranlib. (line 6)
- * ranlib <1>: ar cmdline. (line 91)
- * readelf: readelf. (line 6)
- * relative placement in archive: ar cmdline. (line 132)
- * relocation entries, in object file: objdump. (line 468)
- * removing symbols: strip. (line 6)
- * repeated names in archive: ar cmdline. (line 108)
- * replacement in archive: ar cmdline. (line 73)
- * reporting bugs: Reporting Bugs. (line 6)
- * scripts, ar: ar scripts. (line 8)
- * section addresses in objdump: objdump. (line 80)
- * section headers: objdump. (line 212)
- * section information: objdump. (line 240)
- * section sizes: size. (line 6)
- * sections, full contents: objdump. (line 481)
- * separate debug files: debuginfod. (line 6)
- * size: size. (line 6)
- * size display format: size. (line 28)
- * size number format: size. (line 85)
- * sorting symbols: nm. (line 234)
- * source code context: objdump. (line 205)
- * source disassembly: objdump. (line 486)
- * source disassembly <1>: objdump. (line 490)
- * source file name: nm. (line 147)
- * source filenames for object files: objdump. (line 244)
- * stab: objdump. (line 684)
- * start-address: objdump. (line 693)
- * stop-address: objdump. (line 697)
- * strings: strings. (line 6)
- * strings, printing: strings. (line 6)
- * strip: strip. (line 6)
- * Strip absolute paths: objdump. (line 500)
- * symbol index: ar. (line 28)
- * symbol index <1>: ranlib. (line 6)
- * symbol index, listing: nm. (line 256)
- * symbol line numbers: nm. (line 211)
- * symbol table entries, printing: objdump. (line 702)
- * symbols: nm. (line 6)
- * symbols, discarding: strip. (line 6)
- * thin archives: ar. (line 40)
- * undefined symbols: nm. (line 267)
- * undefined symbols <1>: nm. (line 281)
- * Unix compatibility, ar: ar cmdline. (line 8)
- * unwind information: readelf. (line 123)
- * Update ELF header: elfedit. (line 6)
- * updating an archive: ar cmdline. (line 224)
- * version: Top. (line 6)
- * VMA in objdump: objdump. (line 80)
- * wide output, printing: objdump. (line 812)
- * writing archive index: ar cmdline. (line 206)
- Tag Table:
- Node: Top1834
- Node: ar3551
- Node: ar cmdline6704
- Node: ar scripts19330
- Node: nm25016
- Node: objcopy37640
- Node: objdump77841
- Node: ranlib110414
- Node: size112013
- Node: strings115982
- Node: strip120354
- Node: c++filt129879
- Ref: c++filt-Footnote-1135741
- Node: addr2line135847
- Node: windmc141526
- Node: windres145185
- Node: dlltool151544
- Node: def file format164541
- Node: readelf167071
- Node: elfedit179645
- Node: Common Options182601
- Node: Selecting the Target System183635
- Node: Target Selection184563
- Node: Architecture Selection186544
- Node: debuginfod187372
- Node: Reporting Bugs188131
- Node: Bug Criteria188893
- Node: Bug Reporting189446
- Node: GNU Free Documentation License196316
- Node: Binutils Index221476
- End Tag Table
- Local Variables:
- coding: utf-8
- End:
|