1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711 |
- This is bfd.info, produced by makeinfo version 6.5 from bfd.texi.
- This file documents the BFD library.
- Copyright (C) 1991-2019 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 the
- Invariant Sections being "GNU General Public License" and "Funding Free
- Software", the Front-Cover texts being (a) (see below), and with the
- Back-Cover Texts being (b) (see below). A copy of the license is
- included in the section entitled "GNU Free Documentation License".
- (a) The FSF's Front-Cover Text is:
- A GNU Manual
- (b) The FSF's Back-Cover Text is:
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise funds
- for GNU development.
- INFO-DIR-SECTION Software development
- START-INFO-DIR-ENTRY
- * Bfd: (bfd). The Binary File Descriptor library.
- END-INFO-DIR-ENTRY
- File: bfd.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir)
- This file documents the binary file descriptor library libbfd.
- * Menu:
- * Overview:: Overview of BFD
- * BFD front end:: BFD front end
- * BFD back ends:: BFD back ends
- * GNU Free Documentation License:: GNU Free Documentation License
- * BFD Index:: BFD Index
- File: bfd.info, Node: Overview, Next: BFD front end, Prev: Top, Up: Top
- 1 Introduction
- **************
- BFD is a package which allows applications to use the same routines to
- operate on object files whatever the object file format. A new object
- file format can be supported simply by creating a new BFD back end and
- adding it to the library.
- BFD is split into two parts: the front end, and the back ends (one
- for each object file format).
- * The front end of BFD provides the interface to the user. It
- manages memory and various canonical data structures. The front
- end also decides which back end to use and when to call back end
- routines.
- * The back ends provide BFD its view of the real world. Each back
- end provides a set of calls which the BFD front end can use to
- maintain its canonical form. The back ends also may keep around
- information for their own use, for greater efficiency.
- * Menu:
- * History:: History
- * How It Works:: How It Works
- * What BFD Version 2 Can Do:: What BFD Version 2 Can Do
- File: bfd.info, Node: History, Next: How It Works, Prev: Overview, Up: Overview
- 1.1 History
- ===========
- One spur behind BFD was the desire, on the part of the GNU 960 team at
- Intel Oregon, for interoperability of applications on their COFF and
- b.out file formats. Cygnus was providing GNU support for the team, and
- was contracted to provide the required functionality.
- The name came from a conversation David Wallace was having with
- Richard Stallman about the library: RMS said that it would be quite
- hard--David said "BFD". Stallman was right, but the name stuck.
- At the same time, Ready Systems wanted much the same thing, but for
- different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k
- coff.
- BFD was first implemented by members of Cygnus Support; Steve
- Chamberlain ('sac@cygnus.com'), John Gilmore ('gnu@cygnus.com'), K.
- Richard Pixley ('rich@cygnus.com') and David Henkel-Wallace
- ('gumby@cygnus.com').
- File: bfd.info, Node: How It Works, Next: What BFD Version 2 Can Do, Prev: History, Up: Overview
- 1.2 How To Use BFD
- ==================
- To use the library, include 'bfd.h' and link with 'libbfd.a'.
- BFD provides a common interface to the parts of an object file for a
- calling application.
- When an application successfully opens a target file (object,
- archive, or whatever), a pointer to an internal structure is returned.
- This pointer points to a structure called 'bfd', described in 'bfd.h'.
- Our convention is to call this pointer a BFD, and instances of it within
- code 'abfd'. All operations on the target object file are applied as
- methods to the BFD. The mapping is defined within 'bfd.h' in a set of
- macros, all beginning with 'bfd_' to reduce namespace pollution.
- For example, this sequence does what you would probably expect:
- return the number of sections in an object file attached to a BFD
- 'abfd'.
- #include "bfd.h"
- unsigned int number_of_sections (abfd)
- bfd *abfd;
- {
- return bfd_count_sections (abfd);
- }
- The abstraction used within BFD is that an object file has:
- * a header,
- * a number of sections containing raw data (*note Sections::),
- * a set of relocations (*note Relocations::), and
- * some symbol information (*note Symbols::).
- Also, BFDs opened for archives have the additional attribute of an index
- and contain subordinate BFDs. This approach is fine for a.out and coff,
- but loses efficiency when applied to formats such as S-records and
- IEEE-695.
- File: bfd.info, Node: What BFD Version 2 Can Do, Prev: How It Works, Up: Overview
- 1.3 What BFD Version 2 Can Do
- =============================
- When an object file is opened, BFD subroutines automatically determine
- the format of the input object file. They then build a descriptor in
- memory with pointers to routines that will be used to access elements of
- the object file's data structures.
- As different information from the object files is required, BFD reads
- from different sections of the file and processes them. For example, a
- very common operation for the linker is processing symbol tables. Each
- BFD back end provides a routine for converting between the object file's
- representation of symbols and an internal canonical format. When the
- linker asks for the symbol table of an object file, it calls through a
- memory pointer to the routine from the relevant BFD back end which reads
- and converts the table into a canonical form. The linker then operates
- upon the canonical form. When the link is finished and the linker
- writes the output file's symbol table, another BFD back end routine is
- called to take the newly created symbol table and convert it into the
- chosen output format.
- * Menu:
- * BFD information loss:: Information Loss
- * Canonical format:: The BFD canonical object-file format
- File: bfd.info, Node: BFD information loss, Next: Canonical format, Up: What BFD Version 2 Can Do
- 1.3.1 Information Loss
- ----------------------
- _Information can be lost during output._ The output formats supported
- by BFD do not provide identical facilities, and information which can be
- described in one form has nowhere to go in another format. One example
- of this is alignment information in 'b.out'. There is nowhere in an
- 'a.out' format file to store alignment information on the contained
- data, so when a file is linked from 'b.out' and an 'a.out' image is
- produced, alignment information will not propagate to the output file.
- (The linker will still use the alignment information internally, so the
- link is performed correctly).
- Another example is COFF section names. COFF files may contain an
- unlimited number of sections, each one with a textual section name. If
- the target of the link is a format which does not have many sections
- (e.g., 'a.out') or has sections without names (e.g., the Oasys format),
- the link cannot be done simply. You can circumvent this problem by
- describing the desired input-to-output section mapping with the linker
- command language.
- _Information can be lost during canonicalization._ The BFD internal
- canonical form of the external formats is not exhaustive; there are
- structures in input formats for which there is no direct representation
- internally. This means that the BFD back ends cannot maintain all
- possible data richness through the transformation between external to
- internal and back to external formats.
- This limitation is only a problem when an application reads one
- format and writes another. Each BFD back end is responsible for
- maintaining as much data as possible, and the internal BFD canonical
- form has structures which are opaque to the BFD core, and exported only
- to the back ends. When a file is read in one format, the canonical form
- is generated for BFD and the application. At the same time, the back
- end saves away any information which may otherwise be lost. If the data
- is then written back in the same format, the back end routine will be
- able to use the canonical form provided by the BFD core as well as the
- information it prepared earlier. Since there is a great deal of
- commonality between back ends, there is no information lost when linking
- or copying big endian COFF to little endian COFF, or 'a.out' to 'b.out'.
- When a mixture of formats is linked, the information is only lost from
- the files whose format differs from the destination.
- File: bfd.info, Node: Canonical format, Prev: BFD information loss, Up: What BFD Version 2 Can Do
- 1.3.2 The BFD canonical object-file format
- ------------------------------------------
- The greatest potential for loss of information occurs when there is the
- least overlap between the information provided by the source format,
- that stored by the canonical format, and that needed by the destination
- format. A brief description of the canonical form may help you
- understand which kinds of data you can count on preserving across
- conversions.
- _files_
- Information stored on a per-file basis includes target machine
- architecture, particular implementation format type, a demand
- pageable bit, and a write protected bit. Information like Unix
- magic numbers is not stored here--only the magic numbers' meaning,
- so a 'ZMAGIC' file would have both the demand pageable bit and the
- write protected text bit set. The byte order of the target is
- stored on a per-file basis, so that big- and little-endian object
- files may be used with one another.
- _sections_
- Each section in the input file contains the name of the section,
- the section's original address in the object file, size and
- alignment information, various flags, and pointers into other BFD
- data structures.
- _symbols_
- Each symbol contains a pointer to the information for the object
- file which originally defined it, its name, its value, and various
- flag bits. When a BFD back end reads in a symbol table, it
- relocates all symbols to make them relative to the base of the
- section where they were defined. Doing this ensures that each
- symbol points to its containing section. Each symbol also has a
- varying amount of hidden private data for the BFD back end. Since
- the symbol points to the original file, the private data format for
- that symbol is accessible. 'ld' can operate on a collection of
- symbols of wildly different formats without problems.
- Normal global and simple local symbols are maintained on output, so
- an output file (no matter its format) will retain symbols pointing
- to functions and to global, static, and common variables. Some
- symbol information is not worth retaining; in 'a.out', type
- information is stored in the symbol table as long symbol names.
- This information would be useless to most COFF debuggers; the
- linker has command-line switches to allow users to throw it away.
- There is one word of type information within the symbol, so if the
- format supports symbol type information within symbols (for
- example, COFF, Oasys) and the type is simple enough to fit within
- one word (nearly everything but aggregates), the information will
- be preserved.
- _relocation level_
- Each canonical BFD relocation record contains a pointer to the
- symbol to relocate to, the offset of the data to relocate, the
- section the data is in, and a pointer to a relocation type
- descriptor. Relocation is performed by passing messages through
- the relocation type descriptor and the symbol pointer. Therefore,
- relocations can be performed on output data using a relocation
- method that is only available in one of the input formats. For
- instance, Oasys provides a byte relocation format. A relocation
- record requesting this relocation type would point indirectly to a
- routine to perform this, so the relocation may be performed on a
- byte being written to a 68k COFF file, even though 68k COFF has no
- such relocation type.
- _line numbers_
- Object formats can contain, for debugging purposes, some form of
- mapping between symbols, source line numbers, and addresses in the
- output file. These addresses have to be relocated along with the
- symbol information. Each symbol with an associated list of line
- number records points to the first record of the list. The head of
- a line number list consists of a pointer to the symbol, which
- allows finding out the address of the function whose line number is
- being described. The rest of the list is made up of pairs: offsets
- into the section and line numbers. Any format which can simply
- derive this information can pass it successfully between formats.
- File: bfd.info, Node: BFD front end, Next: BFD back ends, Prev: Overview, Up: Top
- 2 BFD Front End
- ***************
- * Menu:
- * typedef bfd::
- * Error reporting::
- * Miscellaneous::
- * Memory Usage::
- * Initialization::
- * Sections::
- * Symbols::
- * Archives::
- * Formats::
- * Relocations::
- * Core Files::
- * Targets::
- * Architectures::
- * Opening and Closing::
- * Internal::
- * File Caching::
- * Linker Functions::
- * Hash Tables::
- File: bfd.info, Node: typedef bfd, Next: Error reporting, Prev: BFD front end, Up: BFD front end
- 2.1 'typedef bfd'
- =================
- A BFD has type 'bfd'; objects of this type are the cornerstone of any
- application using BFD. Using BFD consists of making references though
- the BFD and to data in the BFD.
- Here is the structure that defines the type 'bfd'. It contains the
- major data about the file and pointers to the rest of the data.
- enum bfd_direction
- {
- no_direction = 0,
- read_direction = 1,
- write_direction = 2,
- both_direction = 3
- };
- enum bfd_plugin_format
- {
- bfd_plugin_unknown = 0,
- bfd_plugin_yes = 1,
- bfd_plugin_no = 2
- };
- struct bfd_build_id
- {
- bfd_size_type size;
- bfd_byte data[1];
- };
- struct bfd
- {
- /* The filename the application opened the BFD with. */
- const char *filename;
- /* A pointer to the target jump table. */
- const struct bfd_target *xvec;
- /* The IOSTREAM, and corresponding IO vector that provide access
- to the file backing the BFD. */
- void *iostream;
- const struct bfd_iovec *iovec;
- /* The caching routines use these to maintain a
- least-recently-used list of BFDs. */
- struct bfd *lru_prev, *lru_next;
- /* Track current file position (or current buffer offset for
- in-memory BFDs). When a file is closed by the caching routines,
- BFD retains state information on the file here. */
- ufile_ptr where;
- /* File modified time, if mtime_set is TRUE. */
- long mtime;
- /* A unique identifier of the BFD */
- unsigned int id;
- /* The format which belongs to the BFD. (object, core, etc.) */
- ENUM_BITFIELD (bfd_format) format : 3;
- /* The direction with which the BFD was opened. */
- ENUM_BITFIELD (bfd_direction) direction : 2;
- /* Format_specific flags. */
- flagword flags;
- /* Values that may appear in the flags field of a BFD. These also
- appear in the object_flags field of the bfd_target structure, where
- they indicate the set of flags used by that backend (not all flags
- are meaningful for all object file formats) (FIXME: at the moment,
- the object_flags values have mostly just been copied from backend
- to another, and are not necessarily correct). */
- #define BFD_NO_FLAGS 0x0
- /* BFD contains relocation entries. */
- #define HAS_RELOC 0x1
- /* BFD is directly executable. */
- #define EXEC_P 0x2
- /* BFD has line number information (basically used for F_LNNO in a
- COFF header). */
- #define HAS_LINENO 0x4
- /* BFD has debugging information. */
- #define HAS_DEBUG 0x08
- /* BFD has symbols. */
- #define HAS_SYMS 0x10
- /* BFD has local symbols (basically used for F_LSYMS in a COFF
- header). */
- #define HAS_LOCALS 0x20
- /* BFD is a dynamic object. */
- #define DYNAMIC 0x40
- /* Text section is write protected (if D_PAGED is not set, this is
- like an a.out NMAGIC file) (the linker sets this by default, but
- clears it for -r or -N). */
- #define WP_TEXT 0x80
- /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
- linker sets this by default, but clears it for -r or -n or -N). */
- #define D_PAGED 0x100
- /* BFD is relaxable (this means that bfd_relax_section may be able to
- do something) (sometimes bfd_relax_section can do something even if
- this is not set). */
- #define BFD_IS_RELAXABLE 0x200
- /* This may be set before writing out a BFD to request using a
- traditional format. For example, this is used to request that when
- writing out an a.out object the symbols not be hashed to eliminate
- duplicates. */
- #define BFD_TRADITIONAL_FORMAT 0x400
- /* This flag indicates that the BFD contents are actually cached
- in memory. If this is set, iostream points to a bfd_in_memory
- struct. */
- #define BFD_IN_MEMORY 0x800
- /* This BFD has been created by the linker and doesn't correspond
- to any input file. */
- #define BFD_LINKER_CREATED 0x1000
- /* This may be set before writing out a BFD to request that it
- be written using values for UIDs, GIDs, timestamps, etc. that
- will be consistent from run to run. */
- #define BFD_DETERMINISTIC_OUTPUT 0x2000
- /* Compress sections in this BFD. */
- #define BFD_COMPRESS 0x4000
- /* Decompress sections in this BFD. */
- #define BFD_DECOMPRESS 0x8000
- /* BFD is a dummy, for plugins. */
- #define BFD_PLUGIN 0x10000
- /* Compress sections in this BFD with SHF_COMPRESSED from gABI. */
- #define BFD_COMPRESS_GABI 0x20000
- /* Convert ELF common symbol type to STT_COMMON or STT_OBJECT in this
- BFD. */
- #define BFD_CONVERT_ELF_COMMON 0x40000
- /* Use the ELF STT_COMMON type in this BFD. */
- #define BFD_USE_ELF_STT_COMMON 0x80000
- /* Put pathnames into archives (non-POSIX). */
- #define BFD_ARCHIVE_FULL_PATH 0x100000
- /* Flags bits to be saved in bfd_preserve_save. */
- #define BFD_FLAGS_SAVED \
- (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
- | BFD_PLUGIN | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON \
- | BFD_USE_ELF_STT_COMMON)
- /* Flags bits which are for BFD use only. */
- #define BFD_FLAGS_FOR_BFD_USE_MASK \
- (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
- | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
- | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
- /* Is the file descriptor being cached? That is, can it be closed as
- needed, and re-opened when accessed later? */
- unsigned int cacheable : 1;
- /* Marks whether there was a default target specified when the
- BFD was opened. This is used to select which matching algorithm
- to use to choose the back end. */
- unsigned int target_defaulted : 1;
- /* ... and here: (``once'' means at least once). */
- unsigned int opened_once : 1;
- /* Set if we have a locally maintained mtime value, rather than
- getting it from the file each time. */
- unsigned int mtime_set : 1;
- /* Flag set if symbols from this BFD should not be exported. */
- unsigned int no_export : 1;
- /* Remember when output has begun, to stop strange things
- from happening. */
- unsigned int output_has_begun : 1;
- /* Have archive map. */
- unsigned int has_armap : 1;
- /* Set if this is a thin archive. */
- unsigned int is_thin_archive : 1;
- /* Set if this archive should not cache element positions. */
- unsigned int no_element_cache : 1;
- /* Set if only required symbols should be added in the link hash table for
- this object. Used by VMS linkers. */
- unsigned int selective_search : 1;
- /* Set if this is the linker output BFD. */
- unsigned int is_linker_output : 1;
- /* Set if this is the linker input BFD. */
- unsigned int is_linker_input : 1;
- /* If this is an input for a compiler plug-in library. */
- ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2;
- /* Set if this is a plugin output file. */
- unsigned int lto_output : 1;
- /* Set if this is a slim LTO object not loaded with a compiler plugin. */
- unsigned int lto_slim_object : 1;
- /* Set to dummy BFD created when claimed by a compiler plug-in
- library. */
- bfd *plugin_dummy_bfd;
- /* Currently my_archive is tested before adding origin to
- anything. I believe that this can become always an add of
- origin, with origin set to 0 for non archive files. */
- ufile_ptr origin;
- /* The origin in the archive of the proxy entry. This will
- normally be the same as origin, except for thin archives,
- when it will contain the current offset of the proxy in the
- thin archive rather than the offset of the bfd in its actual
- container. */
- ufile_ptr proxy_origin;
- /* A hash table for section names. */
- struct bfd_hash_table section_htab;
- /* Pointer to linked list of sections. */
- struct bfd_section *sections;
- /* The last section on the section list. */
- struct bfd_section *section_last;
- /* The number of sections. */
- unsigned int section_count;
- /* A field used by _bfd_generic_link_add_archive_symbols. This will
- be used only for archive elements. */
- int archive_pass;
- /* Stuff only useful for object files:
- The start address. */
- bfd_vma start_address;
- /* Symbol table for output BFD (with symcount entries).
- Also used by the linker to cache input BFD symbols. */
- struct bfd_symbol **outsymbols;
- /* Used for input and output. */
- unsigned int symcount;
- /* Used for slurped dynamic symbol tables. */
- unsigned int dynsymcount;
- /* Pointer to structure which contains architecture information. */
- const struct bfd_arch_info *arch_info;
- /* Stuff only useful for archives. */
- void *arelt_data;
- struct bfd *my_archive; /* The containing archive BFD. */
- struct bfd *archive_next; /* The next BFD in the archive. */
- struct bfd *archive_head; /* The first BFD in the archive. */
- struct bfd *nested_archives; /* List of nested archive in a flattened
- thin archive. */
- union {
- /* For input BFDs, a chain of BFDs involved in a link. */
- struct bfd *next;
- /* For output BFD, the linker hash table. */
- struct bfd_link_hash_table *hash;
- } link;
- /* Used by the back end to hold private data. */
- union
- {
- struct aout_data_struct *aout_data;
- struct artdata *aout_ar_data;
- struct coff_tdata *coff_obj_data;
- struct pe_tdata *pe_obj_data;
- struct xcoff_tdata *xcoff_obj_data;
- struct ecoff_tdata *ecoff_obj_data;
- struct srec_data_struct *srec_data;
- struct verilog_data_struct *verilog_data;
- struct ihex_data_struct *ihex_data;
- struct tekhex_data_struct *tekhex_data;
- struct elf_obj_tdata *elf_obj_data;
- struct mmo_data_struct *mmo_data;
- struct sun_core_struct *sun_core_data;
- struct sco5_core_struct *sco5_core_data;
- struct trad_core_struct *trad_core_data;
- struct som_data_struct *som_data;
- struct hpux_core_struct *hpux_core_data;
- struct hppabsd_core_struct *hppabsd_core_data;
- struct sgi_core_struct *sgi_core_data;
- struct lynx_core_struct *lynx_core_data;
- struct osf_core_struct *osf_core_data;
- struct cisco_core_struct *cisco_core_data;
- struct versados_data_struct *versados_data;
- struct netbsd_core_struct *netbsd_core_data;
- struct mach_o_data_struct *mach_o_data;
- struct mach_o_fat_data_struct *mach_o_fat_data;
- struct plugin_data_struct *plugin_data;
- struct bfd_pef_data_struct *pef_data;
- struct bfd_pef_xlib_data_struct *pef_xlib_data;
- struct bfd_sym_data_struct *sym_data;
- void *any;
- }
- tdata;
- /* Used by the application to hold private data. */
- void *usrdata;
- /* Where all the allocated stuff under this BFD goes. This is a
- struct objalloc *, but we use void * to avoid requiring the inclusion
- of objalloc.h. */
- void *memory;
- /* For input BFDs, the build ID, if the object has one. */
- const struct bfd_build_id *build_id;
- };
- static inline const char *
- bfd_get_filename (const bfd *abfd)
- {
- return abfd->filename;
- }
- static inline bfd_boolean
- bfd_get_cacheable (const bfd *abfd)
- {
- return abfd->cacheable;
- }
- static inline enum bfd_format
- bfd_get_format (const bfd *abfd)
- {
- return abfd->format;
- }
- static inline flagword
- bfd_get_file_flags (const bfd *abfd)
- {
- return abfd->flags;
- }
- static inline bfd_vma
- bfd_get_start_address (const bfd *abfd)
- {
- return abfd->start_address;
- }
- static inline unsigned int
- bfd_get_symcount (const bfd *abfd)
- {
- return abfd->symcount;
- }
- static inline unsigned int
- bfd_get_dynamic_symcount (const bfd *abfd)
- {
- return abfd->dynsymcount;
- }
- static inline struct bfd_symbol **
- bfd_get_outsymbols (const bfd *abfd)
- {
- return abfd->outsymbols;
- }
- static inline unsigned int
- bfd_count_sections (const bfd *abfd)
- {
- return abfd->section_count;
- }
- static inline bfd_boolean
- bfd_has_map (const bfd *abfd)
- {
- return abfd->has_armap;
- }
- static inline bfd_boolean
- bfd_is_thin_archive (const bfd *abfd)
- {
- return abfd->is_thin_archive;
- }
- static inline void *
- bfd_usrdata (const bfd *abfd)
- {
- return abfd->usrdata;
- }
- /* See note beside bfd_set_section_userdata. */
- static inline bfd_boolean
- bfd_set_cacheable (bfd * abfd, bfd_boolean val)
- {
- abfd->cacheable = val;
- return TRUE;
- }
- static inline void
- bfd_set_thin_archive (bfd *abfd, bfd_boolean val)
- {
- abfd->is_thin_archive = val;
- }
- static inline void
- bfd_set_usrdata (bfd *abfd, void *val)
- {
- abfd->usrdata = val;
- }
- static inline asection *
- bfd_asymbol_section (const asymbol *sy)
- {
- return sy->section;
- }
- static inline bfd_vma
- bfd_asymbol_value (const asymbol *sy)
- {
- return sy->section->vma + sy->value;
- }
- static inline const char *
- bfd_asymbol_name (const asymbol *sy)
- {
- return sy->name;
- }
- static inline struct bfd *
- bfd_asymbol_bfd (const asymbol *sy)
- {
- return sy->the_bfd;
- }
- static inline void
- bfd_set_asymbol_name (asymbol *sy, const char *name)
- {
- sy->name = name;
- }
- static inline bfd_size_type
- bfd_get_section_limit_octets (const bfd *abfd, const asection *sec)
- {
- if (abfd->direction != write_direction && sec->rawsize != 0)
- return sec->rawsize;
- return sec->size;
- }
- /* Find the address one past the end of SEC. */
- static inline bfd_size_type
- bfd_get_section_limit (const bfd *abfd, const asection *sec)
- {
- return (bfd_get_section_limit_octets (abfd, sec)
- / bfd_octets_per_byte (abfd, sec));
- }
- /* Functions to handle insertion and deletion of a bfd's sections. These
- only handle the list pointers, ie. do not adjust section_count,
- target_index etc. */
- static inline void
- bfd_section_list_remove (bfd *abfd, asection *s)
- {
- asection *next = s->next;
- asection *prev = s->prev;
- if (prev)
- prev->next = next;
- else
- abfd->sections = next;
- if (next)
- next->prev = prev;
- else
- abfd->section_last = prev;
- }
- static inline void
- bfd_section_list_append (bfd *abfd, asection *s)
- {
- s->next = 0;
- if (abfd->section_last)
- {
- s->prev = abfd->section_last;
- abfd->section_last->next = s;
- }
- else
- {
- s->prev = 0;
- abfd->sections = s;
- }
- abfd->section_last = s;
- }
- static inline void
- bfd_section_list_prepend (bfd *abfd, asection *s)
- {
- s->prev = 0;
- if (abfd->sections)
- {
- s->next = abfd->sections;
- abfd->sections->prev = s;
- }
- else
- {
- s->next = 0;
- abfd->section_last = s;
- }
- abfd->sections = s;
- }
- static inline void
- bfd_section_list_insert_after (bfd *abfd, asection *a, asection *s)
- {
- asection *next = a->next;
- s->next = next;
- s->prev = a;
- a->next = s;
- if (next)
- next->prev = s;
- else
- abfd->section_last = s;
- }
- static inline void
- bfd_section_list_insert_before (bfd *abfd, asection *b, asection *s)
- {
- asection *prev = b->prev;
- s->prev = prev;
- s->next = b;
- b->prev = s;
- if (prev)
- prev->next = s;
- else
- abfd->sections = s;
- }
- static inline bfd_boolean
- bfd_section_removed_from_list (const bfd *abfd, const asection *s)
- {
- return s->next ? s->next->prev != s : abfd->section_last != s;
- }
- File: bfd.info, Node: Error reporting, Next: Miscellaneous, Prev: typedef bfd, Up: BFD front end
- 2.2 Error reporting
- ===================
- Most BFD functions return nonzero on success (check their individual
- documentation for precise semantics). On an error, they call
- 'bfd_set_error' to set an error condition that callers can check by
- calling 'bfd_get_error'. If that returns 'bfd_error_system_call', then
- check 'errno'.
- The easiest way to report a BFD error to the user is to use
- 'bfd_perror'.
- 2.2.1 Type 'bfd_error_type'
- ---------------------------
- The values returned by 'bfd_get_error' are defined by the enumerated
- type 'bfd_error_type'.
- typedef enum bfd_error
- {
- bfd_error_no_error = 0,
- bfd_error_system_call,
- bfd_error_invalid_target,
- bfd_error_wrong_format,
- bfd_error_wrong_object_format,
- bfd_error_invalid_operation,
- bfd_error_no_memory,
- bfd_error_no_symbols,
- bfd_error_no_armap,
- bfd_error_no_more_archived_files,
- bfd_error_malformed_archive,
- bfd_error_missing_dso,
- bfd_error_file_not_recognized,
- bfd_error_file_ambiguously_recognized,
- bfd_error_no_contents,
- bfd_error_nonrepresentable_section,
- bfd_error_no_debug_section,
- bfd_error_bad_value,
- bfd_error_file_truncated,
- bfd_error_file_too_big,
- bfd_error_sorry,
- bfd_error_on_input,
- bfd_error_invalid_error_code
- }
- bfd_error_type;
- 2.2.1.1 'bfd_get_error'
- .......................
- *Synopsis*
- bfd_error_type bfd_get_error (void);
- *Description*
- Return the current BFD error condition.
- 2.2.1.2 'bfd_set_error'
- .......................
- *Synopsis*
- void bfd_set_error (bfd_error_type error_tag);
- *Description*
- Set the BFD error condition to be ERROR_TAG.
- ERROR_TAG must not be bfd_error_on_input. Use bfd_set_input_error
- for input errors instead.
- 2.2.1.3 'bfd_set_input_error'
- .............................
- *Synopsis*
- void bfd_set_input_error (bfd *input, bfd_error_type error_tag);
- *Description*
- Set the BFD error condition to be bfd_error_on_input. INPUT is the
- input bfd where the error occurred, and ERROR_TAG the bfd_error_type
- error.
- 2.2.1.4 'bfd_errmsg'
- ....................
- *Synopsis*
- const char *bfd_errmsg (bfd_error_type error_tag);
- *Description*
- Return a string describing the error ERROR_TAG, or the system error if
- ERROR_TAG is 'bfd_error_system_call'.
- 2.2.1.5 'bfd_perror'
- ....................
- *Synopsis*
- void bfd_perror (const char *message);
- *Description*
- Print to the standard error stream a string describing the last BFD
- error that occurred, or the last system error if the last BFD error was
- a system call failure. If MESSAGE is non-NULL and non-empty, the error
- string printed is preceded by MESSAGE, a colon, and a space. It is
- followed by a newline.
- 2.2.2 BFD error handler
- -----------------------
- Some BFD functions want to print messages describing the problem. They
- call a BFD error handler function. This function may be overridden by
- the program.
- The BFD error handler acts like vprintf.
- typedef void (*bfd_error_handler_type) (const char *, va_list);
- 2.2.2.1 '_bfd_error_handler'
- ............................
- *Synopsis*
- void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
- *Description*
- This is the default routine to handle BFD error messages. Like fprintf
- (stderr, ...), but also handles some extra format specifiers.
- %pA section name from section. For group components, prints group
- name too. %pB file name from bfd. For archive components, prints
- archive too.
- Beware: Only supports a maximum of 9 format arguments.
- 2.2.2.2 'bfd_set_error_handler'
- ...............................
- *Synopsis*
- bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
- *Description*
- Set the BFD error handler function. Returns the previous function.
- 2.2.2.3 'bfd_set_error_program_name'
- ....................................
- *Synopsis*
- void bfd_set_error_program_name (const char *);
- *Description*
- Set the program name to use when printing a BFD error. This is printed
- before the error message followed by a colon and space. The string must
- not be changed after it is passed to this function.
- 2.2.3 BFD assert handler
- ------------------------
- If BFD finds an internal inconsistency, the bfd assert handler is called
- with information on the BFD version, BFD source file and line. If this
- happens, most programs linked against BFD are expected to want to exit
- with an error, or mark the current BFD operation as failed, so it is
- recommended to override the default handler, which just calls
- _bfd_error_handler and continues.
- typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
- const char *bfd_version,
- const char *bfd_file,
- int bfd_line);
- 2.2.3.1 'bfd_set_assert_handler'
- ................................
- *Synopsis*
- bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
- *Description*
- Set the BFD assert handler function. Returns the previous function.
- File: bfd.info, Node: Miscellaneous, Next: Memory Usage, Prev: Error reporting, Up: BFD front end
- 2.3 Miscellaneous
- =================
- 2.3.1 Miscellaneous functions
- -----------------------------
- 2.3.1.1 'bfd_get_reloc_upper_bound'
- ...................................
- *Synopsis*
- long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
- *Description*
- Return the number of bytes required to store the relocation information
- associated with section SECT attached to bfd ABFD. If an error occurs,
- return -1.
- 2.3.1.2 'bfd_canonicalize_reloc'
- ................................
- *Synopsis*
- long bfd_canonicalize_reloc
- (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
- *Description*
- Call the back end associated with the open BFD ABFD and translate the
- external form of the relocation information attached to SEC into the
- internal canonical form. Place the table into memory at LOC, which has
- been preallocated, usually by a call to 'bfd_get_reloc_upper_bound'.
- Returns the number of relocs, or -1 on error.
- The SYMS table is also needed for horrible internal magic reasons.
- 2.3.1.3 'bfd_set_reloc'
- .......................
- *Synopsis*
- void bfd_set_reloc
- (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
- *Description*
- Set the relocation pointer and count within section SEC to the values
- REL and COUNT. The argument ABFD is ignored.
- #define bfd_set_reloc(abfd, asect, location, count) \
- BFD_SEND (abfd, _bfd_set_reloc, (abfd, asect, location, count))
- 2.3.1.4 'bfd_set_file_flags'
- ............................
- *Synopsis*
- bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
- *Description*
- Set the flag word in the BFD ABFD to the value FLAGS.
- Possible errors are:
- * 'bfd_error_wrong_format' - The target bfd was not of object format.
- * 'bfd_error_invalid_operation' - The target bfd was open for
- reading.
- * 'bfd_error_invalid_operation' - The flag word contained a bit which
- was not applicable to the type of file. E.g., an attempt was made
- to set the 'D_PAGED' bit on a BFD format which does not support
- demand paging.
- 2.3.1.5 'bfd_get_arch_size'
- ...........................
- *Synopsis*
- int bfd_get_arch_size (bfd *abfd);
- *Description*
- Returns the normalized architecture address size, in bits, as determined
- by the object file's format. By normalized, we mean either 32 or 64.
- For ELF, this information is included in the header. Use
- bfd_arch_bits_per_address for number of bits in the architecture
- address.
- *Returns*
- Returns the arch size in bits if known, '-1' otherwise.
- 2.3.1.6 'bfd_get_sign_extend_vma'
- .................................
- *Synopsis*
- int bfd_get_sign_extend_vma (bfd *abfd);
- *Description*
- Indicates if the target architecture "naturally" sign extends an
- address. Some architectures implicitly sign extend address values when
- they are converted to types larger than the size of an address. For
- instance, bfd_get_start_address() will return an address sign extended
- to fill a bfd_vma when this is the case.
- *Returns*
- Returns '1' if the target architecture is known to sign extend
- addresses, '0' if the target architecture is known to not sign extend
- addresses, and '-1' otherwise.
- 2.3.1.7 'bfd_set_start_address'
- ...............................
- *Synopsis*
- bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
- *Description*
- Make VMA the entry point of output BFD ABFD.
- *Returns*
- Returns 'TRUE' on success, 'FALSE' otherwise.
- 2.3.1.8 'bfd_get_gp_size'
- .........................
- *Synopsis*
- unsigned int bfd_get_gp_size (bfd *abfd);
- *Description*
- Return the maximum size of objects to be optimized using the GP register
- under MIPS ECOFF. This is typically set by the '-G' argument to the
- compiler, assembler or linker.
- 2.3.1.9 'bfd_set_gp_size'
- .........................
- *Synopsis*
- void bfd_set_gp_size (bfd *abfd, unsigned int i);
- *Description*
- Set the maximum size of objects to be optimized using the GP register
- under ECOFF or MIPS ELF. This is typically set by the '-G' argument to
- the compiler, assembler or linker.
- 2.3.1.10 'bfd_scan_vma'
- .......................
- *Synopsis*
- bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
- *Description*
- Convert, like 'strtoul', a numerical expression STRING into a 'bfd_vma'
- integer, and return that integer. (Though without as many bells and
- whistles as 'strtoul'.) The expression is assumed to be unsigned (i.e.,
- positive). If given a BASE, it is used as the base for conversion. A
- base of 0 causes the function to interpret the string in hex if a
- leading "0x" or "0X" is found, otherwise in octal if a leading zero is
- found, otherwise in decimal.
- If the value would overflow, the maximum 'bfd_vma' value is returned.
- 2.3.1.11 'bfd_copy_private_header_data'
- .......................................
- *Synopsis*
- bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
- *Description*
- Copy private BFD header information from the BFD IBFD to the the BFD
- OBFD. This copies information that may require sections to exist, but
- does not require symbol tables. Return 'true' on success, 'false' on
- error. Possible error returns are:
- * 'bfd_error_no_memory' - Not enough memory exists to create private
- data for OBFD.
- #define bfd_copy_private_header_data(ibfd, obfd) \
- BFD_SEND (obfd, _bfd_copy_private_header_data, \
- (ibfd, obfd))
- 2.3.1.12 'bfd_copy_private_bfd_data'
- ....................................
- *Synopsis*
- bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
- *Description*
- Copy private BFD information from the BFD IBFD to the the BFD OBFD.
- Return 'TRUE' on success, 'FALSE' on error. Possible error returns are:
- * 'bfd_error_no_memory' - Not enough memory exists to create private
- data for OBFD.
- #define bfd_copy_private_bfd_data(ibfd, obfd) \
- BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
- (ibfd, obfd))
- 2.3.1.13 'bfd_set_private_flags'
- ................................
- *Synopsis*
- bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
- *Description*
- Set private BFD flag information in the BFD ABFD. Return 'TRUE' on
- success, 'FALSE' on error. Possible error returns are:
- * 'bfd_error_no_memory' - Not enough memory exists to create private
- data for OBFD.
- #define bfd_set_private_flags(abfd, flags) \
- BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
- 2.3.1.14 'Other functions'
- ..........................
- *Description*
- The following functions exist but have not yet been documented.
- #define bfd_sizeof_headers(abfd, info) \
- BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
- #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
- BFD_SEND (abfd, _bfd_find_nearest_line, \
- (abfd, syms, sec, off, file, func, line, NULL))
- #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
- line, disc) \
- BFD_SEND (abfd, _bfd_find_nearest_line, \
- (abfd, syms, sec, off, file, func, line, disc))
- #define bfd_find_line(abfd, syms, sym, file, line) \
- BFD_SEND (abfd, _bfd_find_line, \
- (abfd, syms, sym, file, line))
- #define bfd_find_inliner_info(abfd, file, func, line) \
- BFD_SEND (abfd, _bfd_find_inliner_info, \
- (abfd, file, func, line))
- #define bfd_debug_info_start(abfd) \
- BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
- #define bfd_debug_info_end(abfd) \
- BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
- #define bfd_debug_info_accumulate(abfd, section) \
- BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
- #define bfd_stat_arch_elt(abfd, stat) \
- BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
- #define bfd_update_armap_timestamp(abfd) \
- BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
- #define bfd_set_arch_mach(abfd, arch, mach)\
- BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
- #define bfd_relax_section(abfd, section, link_info, again) \
- BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
- #define bfd_gc_sections(abfd, link_info) \
- BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
- #define bfd_lookup_section_flags(link_info, flag_info, section) \
- BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
- #define bfd_merge_sections(abfd, link_info) \
- BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
- #define bfd_is_group_section(abfd, sec) \
- BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
- #define bfd_group_name(abfd, sec) \
- BFD_SEND (abfd, _bfd_group_name, (abfd, sec))
- #define bfd_discard_group(abfd, sec) \
- BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
- #define bfd_link_hash_table_create(abfd) \
- BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
- #define bfd_link_add_symbols(abfd, info) \
- BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
- #define bfd_link_just_syms(abfd, sec, info) \
- BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
- #define bfd_final_link(abfd, info) \
- BFD_SEND (abfd, _bfd_final_link, (abfd, info))
- #define bfd_free_cached_info(abfd) \
- BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
- #define bfd_get_dynamic_symtab_upper_bound(abfd) \
- BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
- #define bfd_print_private_bfd_data(abfd, file)\
- BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
- #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
- BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
- #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
- BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
- dyncount, dynsyms, ret))
- #define bfd_get_dynamic_reloc_upper_bound(abfd) \
- BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
- #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
- BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
- extern bfd_byte *bfd_get_relocated_section_contents
- (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
- bfd_boolean, asymbol **);
- 2.3.1.15 'bfd_alt_mach_code'
- ............................
- *Synopsis*
- bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
- *Description*
- When more than one machine code number is available for the same machine
- type, this function can be used to switch between the preferred one
- (alternative == 0) and any others. Currently, only ELF supports this
- feature, with up to two alternate machine codes.
- 2.3.1.16 'bfd_emul_get_maxpagesize'
- ...................................
- *Synopsis*
- bfd_vma bfd_emul_get_maxpagesize (const char *);
- *Description*
- Returns the maximum page size, in bytes, as determined by emulation.
- *Returns*
- Returns the maximum page size in bytes for ELF, 0 otherwise.
- 2.3.1.17 'bfd_emul_set_maxpagesize'
- ...................................
- *Synopsis*
- void bfd_emul_set_maxpagesize (const char *, bfd_vma);
- *Description*
- For ELF, set the maximum page size for the emulation. It is a no-op for
- other formats.
- 2.3.1.18 'bfd_emul_get_commonpagesize'
- ......................................
- *Synopsis*
- bfd_vma bfd_emul_get_commonpagesize (const char *, bfd_boolean);
- *Description*
- Returns the common page size, in bytes, as determined by emulation.
- *Returns*
- Returns the common page size in bytes for ELF, 0 otherwise.
- 2.3.1.19 'bfd_emul_set_commonpagesize'
- ......................................
- *Synopsis*
- void bfd_emul_set_commonpagesize (const char *, bfd_vma);
- *Description*
- For ELF, set the common page size for the emulation. It is a no-op for
- other formats.
- 2.3.1.20 'bfd_demangle'
- .......................
- *Synopsis*
- char *bfd_demangle (bfd *, const char *, int);
- *Description*
- Wrapper around cplus_demangle. Strips leading underscores and other
- such chars that would otherwise confuse the demangler. If passed a g++
- v3 ABI mangled name, returns a buffer allocated with malloc holding the
- demangled name. Returns NULL otherwise and on memory alloc failure.
- 2.3.1.21 'bfd_update_compression_header'
- ........................................
- *Synopsis*
- void bfd_update_compression_header
- (bfd *abfd, bfd_byte *contents, asection *sec);
- *Description*
- Set the compression header at CONTENTS of SEC in ABFD and update
- elf_section_flags for compression.
- 2.3.1.22 'bfd_check_compression_header'
- .......................................
- *Synopsis*
- bfd_boolean bfd_check_compression_header
- (bfd *abfd, bfd_byte *contents, asection *sec,
- bfd_size_type *uncompressed_size,
- unsigned int *uncompressed_alignment_power);
- *Description*
- Check the compression header at CONTENTS of SEC in ABFD and store the
- uncompressed size in UNCOMPRESSED_SIZE and the uncompressed data
- alignment in UNCOMPRESSED_ALIGNMENT_POWER if the compression header is
- valid.
- *Returns*
- Return TRUE if the compression header is valid.
- 2.3.1.23 'bfd_get_compression_header_size'
- ..........................................
- *Synopsis*
- int bfd_get_compression_header_size (bfd *abfd, asection *sec);
- *Description*
- Return the size of the compression header of SEC in ABFD.
- *Returns*
- Return the size of the compression header in bytes.
- 2.3.1.24 'bfd_convert_section_size'
- ...................................
- *Synopsis*
- bfd_size_type bfd_convert_section_size
- (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size);
- *Description*
- Convert the size SIZE of the section ISEC in input BFD IBFD to the
- section size in output BFD OBFD.
- 2.3.1.25 'bfd_convert_section_contents'
- .......................................
- *Synopsis*
- bfd_boolean bfd_convert_section_contents
- (bfd *ibfd, asection *isec, bfd *obfd,
- bfd_byte **ptr, bfd_size_type *ptr_size);
- *Description*
- Convert the contents, stored in *PTR, of the section ISEC in input BFD
- IBFD to output BFD OBFD if needed. The original buffer pointed to by
- *PTR may be freed and *PTR is returned with memory malloc'd by this
- function, and the new size written to PTR_SIZE.
- 2.3.1.26 'struct bfd_iovec'
- ...........................
- *Description*
- The 'struct bfd_iovec' contains the internal file I/O class. Each 'BFD'
- has an instance of this class and all file I/O is routed through it (it
- is assumed that the instance implements all methods listed below).
- struct bfd_iovec
- {
- /* To avoid problems with macros, a "b" rather than "f"
- prefix is prepended to each method name. */
- /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
- bytes starting at PTR. Return the number of bytes actually
- transfered (a read past end-of-file returns less than NBYTES),
- or -1 (setting bfd_error) if an error occurs. */
- file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
- file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
- file_ptr nbytes);
- /* Return the current IOSTREAM file offset, or -1 (setting bfd_error
- if an error occurs. */
- file_ptr (*btell) (struct bfd *abfd);
- /* For the following, on successful completion a value of 0 is returned.
- Otherwise, a value of -1 is returned (and bfd_error is set). */
- int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
- int (*bclose) (struct bfd *abfd);
- int (*bflush) (struct bfd *abfd);
- int (*bstat) (struct bfd *abfd, struct stat *sb);
- /* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual
- mmap parameter, except that LEN and OFFSET do not need to be page
- aligned. Returns (void *)-1 on failure, mmapped address on success.
- Also write in MAP_ADDR the address of the page aligned buffer and in
- MAP_LEN the size mapped (a page multiple). Use unmap with MAP_ADDR and
- MAP_LEN to unmap. */
- void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
- int prot, int flags, file_ptr offset,
- void **map_addr, bfd_size_type *map_len);
- };
- extern const struct bfd_iovec _bfd_memory_iovec;
- 2.3.1.27 'bfd_get_mtime'
- ........................
- *Synopsis*
- long bfd_get_mtime (bfd *abfd);
- *Description*
- Return the file modification time (as read from the file system, or from
- the archive header for archive members).
- 2.3.1.28 'bfd_get_size'
- .......................
- *Synopsis*
- ufile_ptr bfd_get_size (bfd *abfd);
- *Description*
- Return the file size (as read from file system) for the file associated
- with BFD ABFD.
- The initial motivation for, and use of, this routine is not so we can
- get the exact size of the object the BFD applies to, since that might
- not be generally possible (archive members for example). It would be
- ideal if someone could eventually modify it so that such results were
- guaranteed.
- Instead, we want to ask questions like "is this NNN byte sized object
- I'm about to try read from file offset YYY reasonable?" As as example
- of where we might do this, some object formats use string tables for
- which the first 'sizeof (long)' bytes of the table contain the size of
- the table itself, including the size bytes. If an application tries to
- read what it thinks is one of these string tables, without some way to
- validate the size, and for some reason the size is wrong (byte swapping
- error, wrong location for the string table, etc.), the only clue is
- likely to be a read error when it tries to read the table, or a "virtual
- memory exhausted" error when it tries to allocate 15 bazillon bytes of
- space for the 15 bazillon byte table it is about to read. This function
- at least allows us to answer the question, "is the size reasonable?".
- 2.3.1.29 'bfd_get_file_size'
- ............................
- *Synopsis*
- ufile_ptr bfd_get_file_size (bfd *abfd);
- *Description*
- Return the file size (as read from file system) for the file associated
- with BFD ABFD. It supports both normal files and archive elements.
- 2.3.1.30 'bfd_mmap'
- ...................
- *Synopsis*
- void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
- int prot, int flags, file_ptr offset,
- void **map_addr, bfd_size_type *map_len);
- *Description*
- Return mmap()ed region of the file, if possible and implemented. LEN
- and OFFSET do not need to be page aligned. The page aligned address and
- length are written to MAP_ADDR and MAP_LEN.
- File: bfd.info, Node: Memory Usage, Next: Initialization, Prev: Miscellaneous, Up: BFD front end
- 2.4 Memory Usage
- ================
- BFD keeps all of its internal structures in obstacks. There is one
- obstack per open BFD file, into which the current state is stored. When
- a BFD is closed, the obstack is deleted, and so everything which has
- been allocated by BFD for the closing file is thrown away.
- BFD does not free anything created by an application, but pointers
- into 'bfd' structures become invalid on a 'bfd_close'; for example,
- after a 'bfd_close' the vector passed to 'bfd_canonicalize_symtab' is
- still around, since it has been allocated by the application, but the
- data that it pointed to are lost.
- The general rule is to not close a BFD until all operations dependent
- upon data from the BFD have been completed, or all the data from within
- the file has been copied. To help with the management of memory, there
- is a function ('bfd_alloc_size') which returns the number of bytes in
- obstacks associated with the supplied BFD. This could be used to select
- the greediest open BFD, close it to reclaim the memory, perform some
- operation and reopen the BFD again, to get a fresh copy of the data
- structures.
- File: bfd.info, Node: Initialization, Next: Sections, Prev: Memory Usage, Up: BFD front end
- 2.5 Initialization
- ==================
- 2.5.1 Initialization functions
- ------------------------------
- These are the functions that handle initializing a BFD.
- 2.5.1.1 'bfd_init'
- ..................
- *Synopsis*
- unsigned int bfd_init (void);
- *Description*
- This routine must be called before any other BFD function to initialize
- magical internal data structures. Returns a magic number, which may be
- used to check that the bfd library is configured as expected by users.
- /* Value returned by bfd_init. */
- #define BFD_INIT_MAGIC (sizeof (struct bfd_section))
- File: bfd.info, Node: Sections, Next: Symbols, Prev: Initialization, Up: BFD front end
- 2.6 Sections
- ============
- The raw data contained within a BFD is maintained through the section
- abstraction. A single BFD may have any number of sections. It keeps
- hold of them by pointing to the first; each one points to the next in
- the list.
- Sections are supported in BFD in 'section.c'.
- * Menu:
- * Section Input::
- * Section Output::
- * typedef asection::
- * section prototypes::
- File: bfd.info, Node: Section Input, Next: Section Output, Prev: Sections, Up: Sections
- 2.6.1 Section input
- -------------------
- When a BFD is opened for reading, the section structures are created and
- attached to the BFD.
- Each section has a name which describes the section in the outside
- world--for example, 'a.out' would contain at least three sections,
- called '.text', '.data' and '.bss'.
- Names need not be unique; for example a COFF file may have several
- sections named '.data'.
- Sometimes a BFD will contain more than the "natural" number of
- sections. A back end may attach other sections containing constructor
- data, or an application may add a section (using 'bfd_make_section') to
- the sections attached to an already open BFD. For example, the linker
- creates an extra section 'COMMON' for each input file's BFD to hold
- information about common storage.
- The raw data is not necessarily read in when the section descriptor
- is created. Some targets may leave the data in place until a
- 'bfd_get_section_contents' call is made. Other back ends may read in
- all the data at once. For example, an S-record file has to be read once
- to determine the size of the data.
- File: bfd.info, Node: Section Output, Next: typedef asection, Prev: Section Input, Up: Sections
- 2.6.2 Section output
- --------------------
- To write a new object style BFD, the various sections to be written have
- to be created. They are attached to the BFD in the same way as input
- sections; data is written to the sections using
- 'bfd_set_section_contents'.
- Any program that creates or combines sections (e.g., the assembler
- and linker) must use the 'asection' fields 'output_section' and
- 'output_offset' to indicate the file sections to which each section must
- be written. (If the section is being created from scratch,
- 'output_section' should probably point to the section itself and
- 'output_offset' should probably be zero.)
- The data to be written comes from input sections attached (via
- 'output_section' pointers) to the output sections. The output section
- structure can be considered a filter for the input section: the output
- section determines the vma of the output data and the name, but the
- input section determines the offset into the output section of the data
- to be written.
- E.g., to create a section "O", starting at 0x100, 0x123 long,
- containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and
- "B" at offset 0x20 (i.e., at vma 0x120) the 'asection' structures would
- look like:
- section name "A"
- output_offset 0x00
- size 0x20
- output_section -----------> section name "O"
- | vma 0x100
- section name "B" | size 0x123
- output_offset 0x20 |
- size 0x103 |
- output_section --------|
- 2.6.3 Link orders
- -----------------
- The data within a section is stored in a "link_order". These are much
- like the fixups in 'gas'. The link_order abstraction allows a section
- to grow and shrink within itself.
- A link_order knows how big it is, and which is the next link_order
- and where the raw data for it is; it also points to a list of
- relocations which apply to it.
- The link_order is used by the linker to perform relaxing on final
- code. The compiler creates code which is as big as necessary to make it
- work without relaxing, and the user can select whether to relax.
- Sometimes relaxing takes a lot of time. The linker runs around the
- relocations to see if any are attached to data which can be shrunk, if
- so it does it on a link_order by link_order basis.
- File: bfd.info, Node: typedef asection, Next: section prototypes, Prev: Section Output, Up: Sections
- 2.6.4 typedef asection
- ----------------------
- Here is the section structure:
- typedef struct bfd_section
- {
- /* The name of the section; the name isn't a copy, the pointer is
- the same as that passed to bfd_make_section. */
- const char *name;
- /* A unique sequence number. */
- unsigned int id;
- /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
- unsigned int index;
- /* The next section in the list belonging to the BFD, or NULL. */
- struct bfd_section *next;
- /* The previous section in the list belonging to the BFD, or NULL. */
- struct bfd_section *prev;
- /* The field flags contains attributes of the section. Some
- flags are read in from the object file, and some are
- synthesized from other information. */
- flagword flags;
- #define SEC_NO_FLAGS 0x0
- /* Tells the OS to allocate space for this section when loading.
- This is clear for a section containing debug information only. */
- #define SEC_ALLOC 0x1
- /* Tells the OS to load the section from the file when loading.
- This is clear for a .bss section. */
- #define SEC_LOAD 0x2
- /* The section contains data still to be relocated, so there is
- some relocation information too. */
- #define SEC_RELOC 0x4
- /* A signal to the OS that the section contains read only data. */
- #define SEC_READONLY 0x8
- /* The section contains code only. */
- #define SEC_CODE 0x10
- /* The section contains data only. */
- #define SEC_DATA 0x20
- /* The section will reside in ROM. */
- #define SEC_ROM 0x40
- /* The section contains constructor information. This section
- type is used by the linker to create lists of constructors and
- destructors used by g++. When a back end sees a symbol
- which should be used in a constructor list, it creates a new
- section for the type of name (e.g., __CTOR_LIST__), attaches
- the symbol to it, and builds a relocation. To build the lists
- of constructors, all the linker has to do is catenate all the
- sections called __CTOR_LIST__ and relocate the data
- contained within - exactly the operations it would peform on
- standard data. */
- #define SEC_CONSTRUCTOR 0x80
- /* The section has contents - a data section could be
- SEC_ALLOC | SEC_HAS_CONTENTS; a debug section could be
- SEC_HAS_CONTENTS */
- #define SEC_HAS_CONTENTS 0x100
- /* An instruction to the linker to not output the section
- even if it has information which would normally be written. */
- #define SEC_NEVER_LOAD 0x200
- /* The section contains thread local data. */
- #define SEC_THREAD_LOCAL 0x400
- /* The section's size is fixed. Generic linker code will not
- recalculate it and it is up to whoever has set this flag to
- get the size right. */
- #define SEC_FIXED_SIZE 0x800
- /* The section contains common symbols (symbols may be defined
- multiple times, the value of a symbol is the amount of
- space it requires, and the largest symbol value is the one
- used). Most targets have exactly one of these (which we
- translate to bfd_com_section_ptr), but ECOFF has two. */
- #define SEC_IS_COMMON 0x1000
- /* The section contains only debugging information. For
- example, this is set for ELF .debug and .stab sections.
- strip tests this flag to see if a section can be
- discarded. */
- #define SEC_DEBUGGING 0x2000
- /* The contents of this section are held in memory pointed to
- by the contents field. This is checked by bfd_get_section_contents,
- and the data is retrieved from memory if appropriate. */
- #define SEC_IN_MEMORY 0x4000
- /* The contents of this section are to be excluded by the
- linker for executable and shared objects unless those
- objects are to be further relocated. */
- #define SEC_EXCLUDE 0x8000
- /* The contents of this section are to be sorted based on the sum of
- the symbol and addend values specified by the associated relocation
- entries. Entries without associated relocation entries will be
- appended to the end of the section in an unspecified order. */
- #define SEC_SORT_ENTRIES 0x10000
- /* When linking, duplicate sections of the same name should be
- discarded, rather than being combined into a single section as
- is usually done. This is similar to how common symbols are
- handled. See SEC_LINK_DUPLICATES below. */
- #define SEC_LINK_ONCE 0x20000
- /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
- should handle duplicate sections. */
- #define SEC_LINK_DUPLICATES 0xc0000
- /* This value for SEC_LINK_DUPLICATES means that duplicate
- sections with the same name should simply be discarded. */
- #define SEC_LINK_DUPLICATES_DISCARD 0x0
- /* This value for SEC_LINK_DUPLICATES means that the linker
- should warn if there are any duplicate sections, although
- it should still only link one copy. */
- #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
- /* This value for SEC_LINK_DUPLICATES means that the linker
- should warn if any duplicate sections are a different size. */
- #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
- /* This value for SEC_LINK_DUPLICATES means that the linker
- should warn if any duplicate sections contain different
- contents. */
- #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
- (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
- /* This section was created by the linker as part of dynamic
- relocation or other arcane processing. It is skipped when
- going through the first-pass output, trusting that someone
- else up the line will take care of it later. */
- #define SEC_LINKER_CREATED 0x100000
- /* This section should not be subject to garbage collection.
- Also set to inform the linker that this section should not be
- listed in the link map as discarded. */
- #define SEC_KEEP 0x200000
- /* This section contains "short" data, and should be placed
- "near" the GP. */
- #define SEC_SMALL_DATA 0x400000
- /* Attempt to merge identical entities in the section.
- Entity size is given in the entsize field. */
- #define SEC_MERGE 0x800000
- /* If given with SEC_MERGE, entities to merge are zero terminated
- strings where entsize specifies character size instead of fixed
- size entries. */
- #define SEC_STRINGS 0x1000000
- /* This section contains data about section groups. */
- #define SEC_GROUP 0x2000000
- /* The section is a COFF shared library section. This flag is
- only for the linker. If this type of section appears in
- the input file, the linker must copy it to the output file
- without changing the vma or size. FIXME: Although this
- was originally intended to be general, it really is COFF
- specific (and the flag was renamed to indicate this). It
- might be cleaner to have some more general mechanism to
- allow the back end to control what the linker does with
- sections. */
- #define SEC_COFF_SHARED_LIBRARY 0x4000000
- /* This input section should be copied to output in reverse order
- as an array of pointers. This is for ELF linker internal use
- only. */
- #define SEC_ELF_REVERSE_COPY 0x4000000
- /* This section contains data which may be shared with other
- executables or shared objects. This is for COFF only. */
- #define SEC_COFF_SHARED 0x8000000
- /* This section should be compressed. This is for ELF linker
- internal use only. */
- #define SEC_ELF_COMPRESS 0x8000000
- /* When a section with this flag is being linked, then if the size of
- the input section is less than a page, it should not cross a page
- boundary. If the size of the input section is one page or more,
- it should be aligned on a page boundary. This is for TI
- TMS320C54X only. */
- #define SEC_TIC54X_BLOCK 0x10000000
- /* This section should be renamed. This is for ELF linker
- internal use only. */
- #define SEC_ELF_RENAME 0x10000000
- /* Conditionally link this section; do not link if there are no
- references found to any symbol in the section. This is for TI
- TMS320C54X only. */
- #define SEC_TIC54X_CLINK 0x20000000
- /* This section contains vliw code. This is for Toshiba MeP only. */
- #define SEC_MEP_VLIW 0x20000000
- /* All symbols, sizes and relocations in this section are octets
- instead of bytes. Required for DWARF debug sections as DWARF
- information is organized in octets, not bytes. */
- #define SEC_ELF_OCTETS 0x40000000
- /* Indicate that section has the no read flag set. This happens
- when memory read flag isn't set. */
- #define SEC_COFF_NOREAD 0x40000000
- /* Indicate that section has the purecode flag set. */
- #define SEC_ELF_PURECODE 0x80000000
- /* End of section flags. */
- /* Some internal packed boolean fields. */
- /* See the vma field. */
- unsigned int user_set_vma : 1;
- /* A mark flag used by some of the linker backends. */
- unsigned int linker_mark : 1;
- /* Another mark flag used by some of the linker backends. Set for
- output sections that have an input section. */
- unsigned int linker_has_input : 1;
- /* Mark flag used by some linker backends for garbage collection. */
- unsigned int gc_mark : 1;
- /* Section compression status. */
- unsigned int compress_status : 2;
- #define COMPRESS_SECTION_NONE 0
- #define COMPRESS_SECTION_DONE 1
- #define DECOMPRESS_SECTION_SIZED 2
- /* The following flags are used by the ELF linker. */
- /* Mark sections which have been allocated to segments. */
- unsigned int segment_mark : 1;
- /* Type of sec_info information. */
- unsigned int sec_info_type:3;
- #define SEC_INFO_TYPE_NONE 0
- #define SEC_INFO_TYPE_STABS 1
- #define SEC_INFO_TYPE_MERGE 2
- #define SEC_INFO_TYPE_EH_FRAME 3
- #define SEC_INFO_TYPE_JUST_SYMS 4
- #define SEC_INFO_TYPE_TARGET 5
- #define SEC_INFO_TYPE_EH_FRAME_ENTRY 6
- /* Nonzero if this section uses RELA relocations, rather than REL. */
- unsigned int use_rela_p:1;
- /* Bits used by various backends. The generic code doesn't touch
- these fields. */
- unsigned int sec_flg0:1;
- unsigned int sec_flg1:1;
- unsigned int sec_flg2:1;
- unsigned int sec_flg3:1;
- unsigned int sec_flg4:1;
- unsigned int sec_flg5:1;
- /* End of internal packed boolean fields. */
- /* The virtual memory address of the section - where it will be
- at run time. The symbols are relocated against this. The
- user_set_vma flag is maintained by bfd; if it's not set, the
- backend can assign addresses (for example, in a.out, where
- the default address for .data is dependent on the specific
- target and various flags). */
- bfd_vma vma;
- /* The load address of the section - where it would be in a
- rom image; really only used for writing section header
- information. */
- bfd_vma lma;
- /* The size of the section in *octets*, as it will be output.
- Contains a value even if the section has no contents (e.g., the
- size of .bss). */
- bfd_size_type size;
- /* For input sections, the original size on disk of the section, in
- octets. This field should be set for any section whose size is
- changed by linker relaxation. It is required for sections where
- the linker relaxation scheme doesn't cache altered section and
- reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
- targets), and thus the original size needs to be kept to read the
- section multiple times. For output sections, rawsize holds the
- section size calculated on a previous linker relaxation pass. */
- bfd_size_type rawsize;
- /* The compressed size of the section in octets. */
- bfd_size_type compressed_size;
- /* Relaxation table. */
- struct relax_table *relax;
- /* Count of used relaxation table entries. */
- int relax_count;
- /* If this section is going to be output, then this value is the
- offset in *bytes* into the output section of the first byte in the
- input section (byte ==> smallest addressable unit on the
- target). In most cases, if this was going to start at the
- 100th octet (8-bit quantity) in the output section, this value
- would be 100. However, if the target byte size is 16 bits
- (bfd_octets_per_byte is "2"), this value would be 50. */
- bfd_vma output_offset;
- /* The output section through which to map on output. */
- struct bfd_section *output_section;
- /* The alignment requirement of the section, as an exponent of 2 -
- e.g., 3 aligns to 2^3 (or 8). */
- unsigned int alignment_power;
- /* If an input section, a pointer to a vector of relocation
- records for the data in this section. */
- struct reloc_cache_entry *relocation;
- /* If an output section, a pointer to a vector of pointers to
- relocation records for the data in this section. */
- struct reloc_cache_entry **orelocation;
- /* The number of relocation records in one of the above. */
- unsigned reloc_count;
- /* Information below is back end specific - and not always used
- or updated. */
- /* File position of section data. */
- file_ptr filepos;
- /* File position of relocation info. */
- file_ptr rel_filepos;
- /* File position of line data. */
- file_ptr line_filepos;
- /* Pointer to data for applications. */
- void *userdata;
- /* If the SEC_IN_MEMORY flag is set, this points to the actual
- contents. */
- unsigned char *contents;
- /* Attached line number information. */
- alent *lineno;
- /* Number of line number records. */
- unsigned int lineno_count;
- /* Entity size for merging purposes. */
- unsigned int entsize;
- /* Points to the kept section if this section is a link-once section,
- and is discarded. */
- struct bfd_section *kept_section;
- /* When a section is being output, this value changes as more
- linenumbers are written out. */
- file_ptr moving_line_filepos;
- /* What the section number is in the target world. */
- int target_index;
- void *used_by_bfd;
- /* If this is a constructor section then here is a list of the
- relocations created to relocate items within it. */
- struct relent_chain *constructor_chain;
- /* The BFD which owns the section. */
- bfd *owner;
- /* A symbol which points at this section only. */
- struct bfd_symbol *symbol;
- struct bfd_symbol **symbol_ptr_ptr;
- /* Early in the link process, map_head and map_tail are used to build
- a list of input sections attached to an output section. Later,
- output sections use these fields for a list of bfd_link_order
- structs. */
- union {
- struct bfd_link_order *link_order;
- struct bfd_section *s;
- } map_head, map_tail;
- } asection;
- /* Relax table contains information about instructions which can
- be removed by relaxation -- replacing a long address with a
- short address. */
- struct relax_table {
- /* Address where bytes may be deleted. */
- bfd_vma addr;
- /* Number of bytes to be deleted. */
- int size;
- };
- static inline const char *
- bfd_section_name (const asection *sec)
- {
- return sec->name;
- }
- static inline bfd_size_type
- bfd_section_size (const asection *sec)
- {
- return sec->size;
- }
- static inline bfd_vma
- bfd_section_vma (const asection *sec)
- {
- return sec->vma;
- }
- static inline bfd_vma
- bfd_section_lma (const asection *sec)
- {
- return sec->lma;
- }
- static inline unsigned int
- bfd_section_alignment (const asection *sec)
- {
- return sec->alignment_power;
- }
- static inline flagword
- bfd_section_flags (const asection *sec)
- {
- return sec->flags;
- }
- static inline void *
- bfd_section_userdata (const asection *sec)
- {
- return sec->userdata;
- }
- static inline bfd_boolean
- bfd_is_com_section (const asection *sec)
- {
- return (sec->flags & SEC_IS_COMMON) != 0;
- }
- /* Note: the following are provided as inline functions rather than macros
- because not all callers use the return value. A macro implementation
- would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
- compilers will complain about comma expressions that have no effect. */
- static inline bfd_boolean
- bfd_set_section_userdata (asection *sec, void *val)
- {
- sec->userdata = val;
- return TRUE;
- }
- static inline bfd_boolean
- bfd_set_section_vma (asection *sec, bfd_vma val)
- {
- sec->vma = sec->lma = val;
- sec->user_set_vma = TRUE;
- return TRUE;
- }
- static inline bfd_boolean
- bfd_set_section_lma (asection *sec, bfd_vma val)
- {
- sec->lma = val;
- return TRUE;
- }
- static inline bfd_boolean
- bfd_set_section_alignment (asection *sec, unsigned int val)
- {
- sec->alignment_power = val;
- return TRUE;
- }
- /* These sections are global, and are managed by BFD. The application
- and target back end are not permitted to change the values in
- these sections. */
- extern asection _bfd_std_section[4];
- #define BFD_ABS_SECTION_NAME "*ABS*"
- #define BFD_UND_SECTION_NAME "*UND*"
- #define BFD_COM_SECTION_NAME "*COM*"
- #define BFD_IND_SECTION_NAME "*IND*"
- /* Pointer to the common section. */
- #define bfd_com_section_ptr (&_bfd_std_section[0])
- /* Pointer to the undefined section. */
- #define bfd_und_section_ptr (&_bfd_std_section[1])
- /* Pointer to the absolute section. */
- #define bfd_abs_section_ptr (&_bfd_std_section[2])
- /* Pointer to the indirect section. */
- #define bfd_ind_section_ptr (&_bfd_std_section[3])
- static inline bfd_boolean
- bfd_is_und_section (const asection *sec)
- {
- return sec == bfd_und_section_ptr;
- }
- static inline bfd_boolean
- bfd_is_abs_section (const asection *sec)
- {
- return sec == bfd_abs_section_ptr;
- }
- static inline bfd_boolean
- bfd_is_ind_section (const asection *sec)
- {
- return sec == bfd_ind_section_ptr;
- }
- static inline bfd_boolean
- bfd_is_const_section (const asection *sec)
- {
- return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
- }
- /* Return TRUE if input section SEC has been discarded. */
- static inline bfd_boolean
- discarded_section (const asection *sec)
- {
- return (!bfd_is_abs_section (sec)
- && bfd_is_abs_section (sec->output_section)
- && sec->sec_info_type != SEC_INFO_TYPE_MERGE
- && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS);
- }
- #define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS) \
- /* name, id, index, next, prev, flags, user_set_vma, */ \
- { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
- \
- /* linker_mark, linker_has_input, gc_mark, decompress_status, */ \
- 0, 0, 1, 0, \
- \
- /* segment_mark, sec_info_type, use_rela_p, */ \
- 0, 0, 0, \
- \
- /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ \
- 0, 0, 0, 0, 0, 0, \
- \
- /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ \
- 0, 0, 0, 0, 0, 0, 0, \
- \
- /* output_offset, output_section, alignment_power, */ \
- 0, &SEC, 0, \
- \
- /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
- NULL, NULL, 0, 0, 0, \
- \
- /* line_filepos, userdata, contents, lineno, lineno_count, */ \
- 0, NULL, NULL, NULL, 0, \
- \
- /* entsize, kept_section, moving_line_filepos, */ \
- 0, NULL, 0, \
- \
- /* target_index, used_by_bfd, constructor_chain, owner, */ \
- 0, NULL, NULL, NULL, \
- \
- /* symbol, symbol_ptr_ptr, */ \
- (struct bfd_symbol *) SYM, &SEC.symbol, \
- \
- /* map_head, map_tail */ \
- { NULL }, { NULL } \
- }
- /* We use a macro to initialize the static asymbol structures because
- traditional C does not permit us to initialize a union member while
- gcc warns if we don't initialize it.
- the_bfd, name, value, attr, section [, udata] */
- #ifdef __STDC__
- #define GLOBAL_SYM_INIT(NAME, SECTION) \
- { 0, NAME, 0, BSF_SECTION_SYM, SECTION, { 0 }}
- #else
- #define GLOBAL_SYM_INIT(NAME, SECTION) \
- { 0, NAME, 0, BSF_SECTION_SYM, SECTION }
- #endif
- File: bfd.info, Node: section prototypes, Prev: typedef asection, Up: Sections
- 2.6.5 Section prototypes
- ------------------------
- These are the functions exported by the section handling part of BFD.
- 2.6.5.1 'bfd_section_list_clear'
- ................................
- *Synopsis*
- void bfd_section_list_clear (bfd *);
- *Description*
- Clears the section list, and also resets the section count and hash
- table entries.
- 2.6.5.2 'bfd_get_section_by_name'
- .................................
- *Synopsis*
- asection *bfd_get_section_by_name (bfd *abfd, const char *name);
- *Description*
- Return the most recently created section attached to ABFD named NAME.
- Return NULL if no such section exists.
- 2.6.5.3 'bfd_get_next_section_by_name'
- ......................................
- *Synopsis*
- asection *bfd_get_next_section_by_name (bfd *ibfd, asection *sec);
- *Description*
- Given SEC is a section returned by 'bfd_get_section_by_name', return the
- next most recently created section attached to the same BFD with the
- same name, or if no such section exists in the same BFD and IBFD is
- non-NULL, the next section with the same name in any input BFD following
- IBFD. Return NULL on finding no section.
- 2.6.5.4 'bfd_get_linker_section'
- ................................
- *Synopsis*
- asection *bfd_get_linker_section (bfd *abfd, const char *name);
- *Description*
- Return the linker created section attached to ABFD named NAME. Return
- NULL if no such section exists.
- 2.6.5.5 'bfd_get_section_by_name_if'
- ....................................
- *Synopsis*
- asection *bfd_get_section_by_name_if
- (bfd *abfd,
- const char *name,
- bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
- void *obj);
- *Description*
- Call the provided function FUNC for each section attached to the BFD
- ABFD whose name matches NAME, passing OBJ as an argument. The function
- will be called as if by
- func (abfd, the_section, obj);
- It returns the first section for which FUNC returns true, otherwise
- 'NULL'.
- 2.6.5.6 'bfd_get_unique_section_name'
- .....................................
- *Synopsis*
- char *bfd_get_unique_section_name
- (bfd *abfd, const char *templat, int *count);
- *Description*
- Invent a section name that is unique in ABFD by tacking a dot and a
- digit suffix onto the original TEMPLAT. If COUNT is non-NULL, then it
- specifies the first number tried as a suffix to generate a unique name.
- The value pointed to by COUNT will be incremented in this case.
- 2.6.5.7 'bfd_make_section_old_way'
- ..................................
- *Synopsis*
- asection *bfd_make_section_old_way (bfd *abfd, const char *name);
- *Description*
- Create a new empty section called NAME and attach it to the end of the
- chain of sections for the BFD ABFD. An attempt to create a section with
- a name which is already in use returns its pointer without changing the
- section chain.
- It has the funny name since this is the way it used to be before it
- was rewritten....
- Possible errors are:
- * 'bfd_error_invalid_operation' - If output has already started for
- this BFD.
- * 'bfd_error_no_memory' - If memory allocation fails.
- 2.6.5.8 'bfd_make_section_anyway_with_flags'
- ............................................
- *Synopsis*
- asection *bfd_make_section_anyway_with_flags
- (bfd *abfd, const char *name, flagword flags);
- *Description*
- Create a new empty section called NAME and attach it to the end of the
- chain of sections for ABFD. Create a new section even if there is
- already a section with that name. Also set the attributes of the new
- section to the value FLAGS.
- Return 'NULL' and set 'bfd_error' on error; possible errors are:
- * 'bfd_error_invalid_operation' - If output has already started for
- ABFD.
- * 'bfd_error_no_memory' - If memory allocation fails.
- 2.6.5.9 'bfd_make_section_anyway'
- .................................
- *Synopsis*
- asection *bfd_make_section_anyway (bfd *abfd, const char *name);
- *Description*
- Create a new empty section called NAME and attach it to the end of the
- chain of sections for ABFD. Create a new section even if there is
- already a section with that name.
- Return 'NULL' and set 'bfd_error' on error; possible errors are:
- * 'bfd_error_invalid_operation' - If output has already started for
- ABFD.
- * 'bfd_error_no_memory' - If memory allocation fails.
- 2.6.5.10 'bfd_make_section_with_flags'
- ......................................
- *Synopsis*
- asection *bfd_make_section_with_flags
- (bfd *, const char *name, flagword flags);
- *Description*
- Like 'bfd_make_section_anyway', but return 'NULL' (without calling
- bfd_set_error ()) without changing the section chain if there is already
- a section named NAME. Also set the attributes of the new section to the
- value FLAGS. If there is an error, return 'NULL' and set 'bfd_error'.
- 2.6.5.11 'bfd_make_section'
- ...........................
- *Synopsis*
- asection *bfd_make_section (bfd *, const char *name);
- *Description*
- Like 'bfd_make_section_anyway', but return 'NULL' (without calling
- bfd_set_error ()) without changing the section chain if there is already
- a section named NAME. If there is an error, return 'NULL' and set
- 'bfd_error'.
- 2.6.5.12 'bfd_set_section_flags'
- ................................
- *Synopsis*
- bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
- *Description*
- Set the attributes of the section SEC to the value FLAGS. Return 'TRUE'
- on success, 'FALSE' on error. Possible error returns are:
- * 'bfd_error_invalid_operation' - The section cannot have one or more
- of the attributes requested. For example, a .bss section in
- 'a.out' may not have the 'SEC_HAS_CONTENTS' field set.
- 2.6.5.13 'bfd_rename_section'
- .............................
- *Synopsis*
- void bfd_rename_section
- (asection *sec, const char *newname);
- *Description*
- Rename section SEC to NEWNAME.
- 2.6.5.14 'bfd_map_over_sections'
- ................................
- *Synopsis*
- void bfd_map_over_sections
- (bfd *abfd,
- void (*func) (bfd *abfd, asection *sect, void *obj),
- void *obj);
- *Description*
- Call the provided function FUNC for each section attached to the BFD
- ABFD, passing OBJ as an argument. The function will be called as if by
- func (abfd, the_section, obj);
- This is the preferred method for iterating over sections; an
- alternative would be to use a loop:
- asection *p;
- for (p = abfd->sections; p != NULL; p = p->next)
- func (abfd, p, ...)
- 2.6.5.15 'bfd_sections_find_if'
- ...............................
- *Synopsis*
- asection *bfd_sections_find_if
- (bfd *abfd,
- bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
- void *obj);
- *Description*
- Call the provided function OPERATION for each section attached to the
- BFD ABFD, passing OBJ as an argument. The function will be called as if
- by
- operation (abfd, the_section, obj);
- It returns the first section for which OPERATION returns true.
- 2.6.5.16 'bfd_set_section_size'
- ...............................
- *Synopsis*
- bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
- *Description*
- Set SEC to the size VAL. If the operation is ok, then 'TRUE' is
- returned, else 'FALSE'.
- Possible error returns:
- * 'bfd_error_invalid_operation' - Writing has started to the BFD, so
- setting the size is invalid.
- 2.6.5.17 'bfd_set_section_contents'
- ...................................
- *Synopsis*
- bfd_boolean bfd_set_section_contents
- (bfd *abfd, asection *section, const void *data,
- file_ptr offset, bfd_size_type count);
- *Description*
- Sets the contents of the section SECTION in BFD ABFD to the data
- starting in memory at LOCATION. The data is written to the output
- section starting at offset OFFSET for COUNT octets.
- Normally 'TRUE' is returned, but 'FALSE' is returned if there was an
- error. Possible error returns are:
- * 'bfd_error_no_contents' - The output section does not have the
- 'SEC_HAS_CONTENTS' attribute, so nothing can be written to it.
- * 'bfd_error_bad_value' - The section is unable to contain all of the
- data.
- * 'bfd_error_invalid_operation' - The BFD is not writeable.
- * and some more too.
- This routine is front end to the back end function
- '_bfd_set_section_contents'.
- 2.6.5.18 'bfd_get_section_contents'
- ...................................
- *Synopsis*
- bfd_boolean bfd_get_section_contents
- (bfd *abfd, asection *section, void *location, file_ptr offset,
- bfd_size_type count);
- *Description*
- Read data from SECTION in BFD ABFD into memory starting at LOCATION.
- The data is read at an offset of OFFSET from the start of the input
- section, and is read for COUNT bytes.
- If the contents of a constructor with the 'SEC_CONSTRUCTOR' flag set
- are requested or if the section does not have the 'SEC_HAS_CONTENTS'
- flag set, then the LOCATION is filled with zeroes. If no errors occur,
- 'TRUE' is returned, else 'FALSE'.
- 2.6.5.19 'bfd_malloc_and_get_section'
- .....................................
- *Synopsis*
- bfd_boolean bfd_malloc_and_get_section
- (bfd *abfd, asection *section, bfd_byte **buf);
- *Description*
- Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by
- this function.
- 2.6.5.20 'bfd_copy_private_section_data'
- ........................................
- *Synopsis*
- bfd_boolean bfd_copy_private_section_data
- (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
- *Description*
- Copy private section information from ISEC in the BFD IBFD to the
- section OSEC in the BFD OBFD. Return 'TRUE' on success, 'FALSE' on
- error. Possible error returns are:
- * 'bfd_error_no_memory' - Not enough memory exists to create private
- data for OSEC.
- #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
- BFD_SEND (obfd, _bfd_copy_private_section_data, \
- (ibfd, isection, obfd, osection))
- 2.6.5.21 'bfd_generic_is_group_section'
- .......................................
- *Synopsis*
- bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
- *Description*
- Returns TRUE if SEC is a member of a group.
- 2.6.5.22 'bfd_generic_group_name'
- .................................
- *Synopsis*
- const char *bfd_generic_group_name (bfd *, const asection *sec);
- *Description*
- Returns group name if SEC is a member of a group.
- 2.6.5.23 'bfd_generic_discard_group'
- ....................................
- *Synopsis*
- bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
- *Description*
- Remove all members of GROUP from the output.
- File: bfd.info, Node: Symbols, Next: Archives, Prev: Sections, Up: BFD front end
- 2.7 Symbols
- ===========
- BFD tries to maintain as much symbol information as it can when it moves
- information from file to file. BFD passes information to applications
- though the 'asymbol' structure. When the application requests the
- symbol table, BFD reads the table in the native form and translates
- parts of it into the internal format. To maintain more than the
- information passed to applications, some targets keep some information
- "behind the scenes" in a structure only the particular back end knows
- about. For example, the coff back end keeps the original symbol table
- structure as well as the canonical structure when a BFD is read in. On
- output, the coff back end can reconstruct the output symbol table so
- that no information is lost, even information unique to coff which BFD
- doesn't know or understand. If a coff symbol table were read, but were
- written through an a.out back end, all the coff specific information
- would be lost. The symbol table of a BFD is not necessarily read in
- until a canonicalize request is made. Then the BFD back end fills in a
- table provided by the application with pointers to the canonical
- information. To output symbols, the application provides BFD with a
- table of pointers to pointers to 'asymbol's. This allows applications
- like the linker to output a symbol as it was read, since the "behind the
- scenes" information will be still available.
- * Menu:
- * Reading Symbols::
- * Writing Symbols::
- * Mini Symbols::
- * typedef asymbol::
- * symbol handling functions::
- File: bfd.info, Node: Reading Symbols, Next: Writing Symbols, Prev: Symbols, Up: Symbols
- 2.7.1 Reading symbols
- ---------------------
- There are two stages to reading a symbol table from a BFD: allocating
- storage, and the actual reading process. This is an excerpt from an
- application which reads the symbol table:
- long storage_needed;
- asymbol **symbol_table;
- long number_of_symbols;
- long i;
- storage_needed = bfd_get_symtab_upper_bound (abfd);
- if (storage_needed < 0)
- FAIL
- if (storage_needed == 0)
- return;
- symbol_table = xmalloc (storage_needed);
- ...
- number_of_symbols =
- bfd_canonicalize_symtab (abfd, symbol_table);
- if (number_of_symbols < 0)
- FAIL
- for (i = 0; i < number_of_symbols; i++)
- process_symbol (symbol_table[i]);
- All storage for the symbols themselves is in an objalloc connected to
- the BFD; it is freed when the BFD is closed.
- File: bfd.info, Node: Writing Symbols, Next: Mini Symbols, Prev: Reading Symbols, Up: Symbols
- 2.7.2 Writing symbols
- ---------------------
- Writing of a symbol table is automatic when a BFD open for writing is
- closed. The application attaches a vector of pointers to pointers to
- symbols to the BFD being written, and fills in the symbol count. The
- close and cleanup code reads through the table provided and performs all
- the necessary operations. The BFD output code must always be provided
- with an "owned" symbol: one which has come from another BFD, or one
- which has been created using 'bfd_make_empty_symbol'. Here is an
- example showing the creation of a symbol table with only one element:
- #include "sysdep.h"
- #include "bfd.h"
- int main (void)
- {
- bfd *abfd;
- asymbol *ptrs[2];
- asymbol *new;
- abfd = bfd_openw ("foo","a.out-sunos-big");
- bfd_set_format (abfd, bfd_object);
- new = bfd_make_empty_symbol (abfd);
- new->name = "dummy_symbol";
- new->section = bfd_make_section_old_way (abfd, ".text");
- new->flags = BSF_GLOBAL;
- new->value = 0x12345;
- ptrs[0] = new;
- ptrs[1] = 0;
- bfd_set_symtab (abfd, ptrs, 1);
- bfd_close (abfd);
- return 0;
- }
- ./makesym
- nm foo
- 00012345 A dummy_symbol
- Many formats cannot represent arbitrary symbol information; for
- instance, the 'a.out' object format does not allow an arbitrary number
- of sections. A symbol pointing to a section which is not one of
- '.text', '.data' or '.bss' cannot be described.
- File: bfd.info, Node: Mini Symbols, Next: typedef asymbol, Prev: Writing Symbols, Up: Symbols
- 2.7.3 Mini Symbols
- ------------------
- Mini symbols provide read-only access to the symbol table. They use
- less memory space, but require more time to access. They can be useful
- for tools like nm or objdump, which may have to handle symbol tables of
- extremely large executables.
- The 'bfd_read_minisymbols' function will read the symbols into memory
- in an internal form. It will return a 'void *' pointer to a block of
- memory, a symbol count, and the size of each symbol. The pointer is
- allocated using 'malloc', and should be freed by the caller when it is
- no longer needed.
- The function 'bfd_minisymbol_to_symbol' will take a pointer to a
- minisymbol, and a pointer to a structure returned by
- 'bfd_make_empty_symbol', and return a 'asymbol' structure. The return
- value may or may not be the same as the value from
- 'bfd_make_empty_symbol' which was passed in.
- File: bfd.info, Node: typedef asymbol, Next: symbol handling functions, Prev: Mini Symbols, Up: Symbols
- 2.7.4 typedef asymbol
- ---------------------
- An 'asymbol' has the form:
- typedef struct bfd_symbol
- {
- /* A pointer to the BFD which owns the symbol. This information
- is necessary so that a back end can work out what additional
- information (invisible to the application writer) is carried
- with the symbol.
- This field is *almost* redundant, since you can use section->owner
- instead, except that some symbols point to the global sections
- bfd_{abs,com,und}_section. This could be fixed by making
- these globals be per-bfd (or per-target-flavor). FIXME. */
- struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
- /* The text of the symbol. The name is left alone, and not copied; the
- application may not alter it. */
- const char *name;
- /* The value of the symbol. This really should be a union of a
- numeric value with a pointer, since some flags indicate that
- a pointer to another symbol is stored here. */
- symvalue value;
- /* Attributes of a symbol. */
- #define BSF_NO_FLAGS 0
- /* The symbol has local scope; static in C. The value
- is the offset into the section of the data. */
- #define BSF_LOCAL (1 << 0)
- /* The symbol has global scope; initialized data in C. The
- value is the offset into the section of the data. */
- #define BSF_GLOBAL (1 << 1)
- /* The symbol has global scope and is exported. The value is
- the offset into the section of the data. */
- #define BSF_EXPORT BSF_GLOBAL /* No real difference. */
- /* A normal C symbol would be one of:
- BSF_LOCAL, BSF_UNDEFINED or BSF_GLOBAL. */
- /* The symbol is a debugging record. The value has an arbitrary
- meaning, unless BSF_DEBUGGING_RELOC is also set. */
- #define BSF_DEBUGGING (1 << 2)
- /* The symbol denotes a function entry point. Used in ELF,
- perhaps others someday. */
- #define BSF_FUNCTION (1 << 3)
- /* Used by the linker. */
- #define BSF_KEEP (1 << 5)
- /* An ELF common symbol. */
- #define BSF_ELF_COMMON (1 << 6)
- /* A weak global symbol, overridable without warnings by
- a regular global symbol of the same name. */
- #define BSF_WEAK (1 << 7)
- /* This symbol was created to point to a section, e.g. ELF's
- STT_SECTION symbols. */
- #define BSF_SECTION_SYM (1 << 8)
- /* The symbol used to be a common symbol, but now it is
- allocated. */
- #define BSF_OLD_COMMON (1 << 9)
- /* In some files the type of a symbol sometimes alters its
- location in an output file - ie in coff a ISFCN symbol
- which is also C_EXT symbol appears where it was
- declared and not at the end of a section. This bit is set
- by the target BFD part to convey this information. */
- #define BSF_NOT_AT_END (1 << 10)
- /* Signal that the symbol is the label of constructor section. */
- #define BSF_CONSTRUCTOR (1 << 11)
- /* Signal that the symbol is a warning symbol. The name is a
- warning. The name of the next symbol is the one to warn about;
- if a reference is made to a symbol with the same name as the next
- symbol, a warning is issued by the linker. */
- #define BSF_WARNING (1 << 12)
- /* Signal that the symbol is indirect. This symbol is an indirect
- pointer to the symbol with the same name as the next symbol. */
- #define BSF_INDIRECT (1 << 13)
- /* BSF_FILE marks symbols that contain a file name. This is used
- for ELF STT_FILE symbols. */
- #define BSF_FILE (1 << 14)
- /* Symbol is from dynamic linking information. */
- #define BSF_DYNAMIC (1 << 15)
- /* The symbol denotes a data object. Used in ELF, and perhaps
- others someday. */
- #define BSF_OBJECT (1 << 16)
- /* This symbol is a debugging symbol. The value is the offset
- into the section of the data. BSF_DEBUGGING should be set
- as well. */
- #define BSF_DEBUGGING_RELOC (1 << 17)
- /* This symbol is thread local. Used in ELF. */
- #define BSF_THREAD_LOCAL (1 << 18)
- /* This symbol represents a complex relocation expression,
- with the expression tree serialized in the symbol name. */
- #define BSF_RELC (1 << 19)
- /* This symbol represents a signed complex relocation expression,
- with the expression tree serialized in the symbol name. */
- #define BSF_SRELC (1 << 20)
- /* This symbol was created by bfd_get_synthetic_symtab. */
- #define BSF_SYNTHETIC (1 << 21)
- /* This symbol is an indirect code object. Unrelated to BSF_INDIRECT.
- The dynamic linker will compute the value of this symbol by
- calling the function that it points to. BSF_FUNCTION must
- also be also set. */
- #define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
- /* This symbol is a globally unique data object. The dynamic linker
- will make sure that in the entire process there is just one symbol
- with this name and type in use. BSF_OBJECT must also be set. */
- #define BSF_GNU_UNIQUE (1 << 23)
- flagword flags;
- /* A pointer to the section to which this symbol is
- relative. This will always be non NULL, there are special
- sections for undefined and absolute symbols. */
- struct bfd_section *section;
- /* Back end special data. */
- union
- {
- void *p;
- bfd_vma i;
- }
- udata;
- }
- asymbol;
- File: bfd.info, Node: symbol handling functions, Prev: typedef asymbol, Up: Symbols
- 2.7.5 Symbol handling functions
- -------------------------------
- 2.7.5.1 'bfd_get_symtab_upper_bound'
- ....................................
- *Description*
- Return the number of bytes required to store a vector of pointers to
- 'asymbols' for all the symbols in the BFD ABFD, including a terminal
- NULL pointer. If there are no symbols in the BFD, then return 0. If an
- error occurs, return -1.
- #define bfd_get_symtab_upper_bound(abfd) \
- BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
- 2.7.5.2 'bfd_is_local_label'
- ............................
- *Synopsis*
- bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
- *Description*
- Return TRUE if the given symbol SYM in the BFD ABFD is a compiler
- generated local label, else return FALSE.
- 2.7.5.3 'bfd_is_local_label_name'
- .................................
- *Synopsis*
- bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
- *Description*
- Return TRUE if a symbol with the name NAME in the BFD ABFD is a compiler
- generated local label, else return FALSE. This just checks whether the
- name has the form of a local label.
- #define bfd_is_local_label_name(abfd, name) \
- BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
- 2.7.5.4 'bfd_is_target_special_symbol'
- ......................................
- *Synopsis*
- bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
- *Description*
- Return TRUE iff a symbol SYM in the BFD ABFD is something special to the
- particular target represented by the BFD. Such symbols should normally
- not be mentioned to the user.
- #define bfd_is_target_special_symbol(abfd, sym) \
- BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
- 2.7.5.5 'bfd_canonicalize_symtab'
- .................................
- *Description*
- Read the symbols from the BFD ABFD, and fills in the vector LOCATION
- with pointers to the symbols and a trailing NULL. Return the actual
- number of symbol pointers, not including the NULL.
- #define bfd_canonicalize_symtab(abfd, location) \
- BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
- 2.7.5.6 'bfd_set_symtab'
- ........................
- *Synopsis*
- bfd_boolean bfd_set_symtab
- (bfd *abfd, asymbol **location, unsigned int count);
- *Description*
- Arrange that when the output BFD ABFD is closed, the table LOCATION of
- COUNT pointers to symbols will be written.
- 2.7.5.7 'bfd_print_symbol_vandf'
- ................................
- *Synopsis*
- void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
- *Description*
- Print the value and flags of the SYMBOL supplied to the stream FILE.
- 2.7.5.8 'bfd_make_empty_symbol'
- ...............................
- *Description*
- Create a new 'asymbol' structure for the BFD ABFD and return a pointer
- to it.
- This routine is necessary because each back end has private
- information surrounding the 'asymbol'. Building your own 'asymbol' and
- pointing to it will not create the private information, and will cause
- problems later on.
- #define bfd_make_empty_symbol(abfd) \
- BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
- 2.7.5.9 '_bfd_generic_make_empty_symbol'
- ........................................
- *Synopsis*
- asymbol *_bfd_generic_make_empty_symbol (bfd *);
- *Description*
- Create a new 'asymbol' structure for the BFD ABFD and return a pointer
- to it. Used by core file routines, binary back-end and anywhere else
- where no private info is needed.
- 2.7.5.10 'bfd_make_debug_symbol'
- ................................
- *Description*
- Create a new 'asymbol' structure for the BFD ABFD, to be used as a
- debugging symbol. Further details of its use have yet to be worked out.
- #define bfd_make_debug_symbol(abfd,ptr,size) \
- BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
- 2.7.5.11 'bfd_decode_symclass'
- ..............................
- *Description*
- Return a character corresponding to the symbol class of SYMBOL, or '?'
- for an unknown class.
- *Synopsis*
- int bfd_decode_symclass (asymbol *symbol);
- 2.7.5.12 'bfd_is_undefined_symclass'
- ....................................
- *Description*
- Returns non-zero if the class symbol returned by bfd_decode_symclass
- represents an undefined symbol. Returns zero otherwise.
- *Synopsis*
- bfd_boolean bfd_is_undefined_symclass (int symclass);
- 2.7.5.13 'bfd_symbol_info'
- ..........................
- *Description*
- Fill in the basic info about symbol that nm needs. Additional info may
- be added by the back-ends after calling this function.
- *Synopsis*
- void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
- 2.7.5.14 'bfd_copy_private_symbol_data'
- .......................................
- *Synopsis*
- bfd_boolean bfd_copy_private_symbol_data
- (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
- *Description*
- Copy private symbol information from ISYM in the BFD IBFD to the symbol
- OSYM in the BFD OBFD. Return 'TRUE' on success, 'FALSE' on error.
- Possible error returns are:
- * 'bfd_error_no_memory' - Not enough memory exists to create private
- data for OSEC.
- #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
- BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
- (ibfd, isymbol, obfd, osymbol))
- File: bfd.info, Node: Archives, Next: Formats, Prev: Symbols, Up: BFD front end
- 2.8 Archives
- ============
- *Description*
- An archive (or library) is just another BFD. It has a symbol table,
- although there's not much a user program will do with it.
- The big difference between an archive BFD and an ordinary BFD is that
- the archive doesn't have sections. Instead it has a chain of BFDs that
- are considered its contents. These BFDs can be manipulated like any
- other. The BFDs contained in an archive opened for reading will all be
- opened for reading. You may put either input or output BFDs into an
- archive opened for output; they will be handled correctly when the
- archive is closed.
- Use 'bfd_openr_next_archived_file' to step through the contents of an
- archive opened for input. You don't have to read the entire archive if
- you don't want to! Read it until you find what you want.
- A BFD returned by 'bfd_openr_next_archived_file' can be closed
- manually with 'bfd_close'. If you do not close it, then a second
- iteration through the members of an archive may return the same BFD. If
- you close the archive BFD, then all the member BFDs will automatically
- be closed as well.
- Archive contents of output BFDs are chained through the
- 'archive_next' pointer in a BFD. The first one is findable through the
- 'archive_head' slot of the archive. Set it with 'bfd_set_archive_head'
- (q.v.). A given BFD may be in only one open output archive at a time.
- As expected, the BFD archive code is more general than the archive
- code of any given environment. BFD archives may contain files of
- different formats (e.g., a.out and coff) and even different
- architectures. You may even place archives recursively into archives!
- This can cause unexpected confusion, since some archive formats are
- more expressive than others. For instance, Intel COFF archives can
- preserve long filenames; SunOS a.out archives cannot. If you move a
- file from the first to the second format and back again, the filename
- may be truncated. Likewise, different a.out environments have different
- conventions as to how they truncate filenames, whether they preserve
- directory names in filenames, etc. When interoperating with native
- tools, be sure your files are homogeneous.
- Beware: most of these formats do not react well to the presence of
- spaces in filenames. We do the best we can, but can't always handle
- this case due to restrictions in the format of archives. Many Unix
- utilities are braindead in regards to spaces and such in filenames
- anyway, so this shouldn't be much of a restriction.
- Archives are supported in BFD in 'archive.c'.
- 2.8.1 Archive functions
- -----------------------
- 2.8.1.1 'bfd_get_next_mapent'
- .............................
- *Synopsis*
- symindex bfd_get_next_mapent
- (bfd *abfd, symindex previous, carsym **sym);
- *Description*
- Step through archive ABFD's symbol table (if it has one). Successively
- update SYM with the next symbol's information, returning that symbol's
- (internal) index into the symbol table.
- Supply 'BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first
- one; returns 'BFD_NO_MORE_SYMBOLS' when you've already got the last one.
- A 'carsym' is a canonical archive symbol. The only user-visible
- element is its name, a null-terminated string.
- 2.8.1.2 'bfd_set_archive_head'
- ..............................
- *Synopsis*
- bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
- *Description*
- Set the head of the chain of BFDs contained in the archive OUTPUT to
- NEW_HEAD.
- 2.8.1.3 'bfd_openr_next_archived_file'
- ......................................
- *Synopsis*
- bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
- *Description*
- Provided a BFD, ARCHIVE, containing an archive and NULL, open an input
- BFD on the first contained element and returns that. Subsequent calls
- should pass the archive and the previous return value to return a
- created BFD to the next contained element. NULL is returned when there
- are no more. Note - if you want to process the bfd returned by this
- call be sure to call bfd_check_format() on it first.
- File: bfd.info, Node: Formats, Next: Relocations, Prev: Archives, Up: BFD front end
- 2.9 File formats
- ================
- A format is a BFD concept of high level file contents type. The formats
- supported by BFD are:
- * 'bfd_object'
- The BFD may contain data, symbols, relocations and debug info.
- * 'bfd_archive'
- The BFD contains other BFDs and an optional index.
- * 'bfd_core'
- The BFD contains the result of an executable core dump.
- 2.9.1 File format functions
- ---------------------------
- 2.9.1.1 'bfd_check_format'
- ..........................
- *Synopsis*
- bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
- *Description*
- Verify if the file attached to the BFD ABFD is compatible with the
- format FORMAT (i.e., one of 'bfd_object', 'bfd_archive' or 'bfd_core').
- If the BFD has been set to a specific target before the call, only
- the named target and format combination is checked. If the target has
- not been set, or has been set to 'default', then all the known target
- backends is interrogated to determine a match. If the default target
- matches, it is used. If not, exactly one target must recognize the
- file, or an error results.
- The function returns 'TRUE' on success, otherwise 'FALSE' with one of
- the following error codes:
- * 'bfd_error_invalid_operation' - if 'format' is not one of
- 'bfd_object', 'bfd_archive' or 'bfd_core'.
- * 'bfd_error_system_call' - if an error occured during a read - even
- some file mismatches can cause bfd_error_system_calls.
- * 'file_not_recognised' - none of the backends recognised the file
- format.
- * 'bfd_error_file_ambiguously_recognized' - more than one backend
- recognised the file format.
- 2.9.1.2 'bfd_check_format_matches'
- ..................................
- *Synopsis*
- bfd_boolean bfd_check_format_matches
- (bfd *abfd, bfd_format format, char ***matching);
- *Description*
- Like 'bfd_check_format', except when it returns FALSE with 'bfd_errno'
- set to 'bfd_error_file_ambiguously_recognized'. In that case, if
- MATCHING is not NULL, it will be filled in with a NULL-terminated list
- of the names of the formats that matched, allocated with 'malloc'. Then
- the user may choose a format and try again.
- When done with the list that MATCHING points to, the caller should
- free it.
- 2.9.1.3 'bfd_set_format'
- ........................
- *Synopsis*
- bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
- *Description*
- This function sets the file format of the BFD ABFD to the format FORMAT.
- If the target set in the BFD does not support the format requested, the
- format is invalid, or the BFD is not open for writing, then an error
- occurs.
- 2.9.1.4 'bfd_format_string'
- ...........................
- *Synopsis*
- const char *bfd_format_string (bfd_format format);
- *Description*
- Return a pointer to a const string 'invalid', 'object', 'archive',
- 'core', or 'unknown', depending upon the value of FORMAT.
- File: bfd.info, Node: Relocations, Next: Core Files, Prev: Formats, Up: BFD front end
- 2.10 Relocations
- ================
- BFD maintains relocations in much the same way it maintains symbols:
- they are left alone until required, then read in en-masse and translated
- into an internal form. A common routine 'bfd_perform_relocation' acts
- upon the canonical form to do the fixup.
- Relocations are maintained on a per section basis, while symbols are
- maintained on a per BFD basis.
- All that a back end has to do to fit the BFD interface is to create a
- 'struct reloc_cache_entry' for each relocation in a particular section,
- and fill in the right bits of the structures.
- * Menu:
- * typedef arelent::
- * howto manager::
- File: bfd.info, Node: typedef arelent, Next: howto manager, Prev: Relocations, Up: Relocations
- 2.10.1 typedef arelent
- ----------------------
- This is the structure of a relocation entry:
- typedef enum bfd_reloc_status
- {
- /* No errors detected. Note - the value 2 is used so that it
- will not be mistaken for the boolean TRUE or FALSE values. */
- bfd_reloc_ok = 2,
- /* The relocation was performed, but there was an overflow. */
- bfd_reloc_overflow,
- /* The address to relocate was not within the section supplied. */
- bfd_reloc_outofrange,
- /* Used by special functions. */
- bfd_reloc_continue,
- /* Unsupported relocation size requested. */
- bfd_reloc_notsupported,
- /* Unused. */
- bfd_reloc_other,
- /* The symbol to relocate against was undefined. */
- bfd_reloc_undefined,
- /* The relocation was performed, but may not be ok. If this type is
- returned, the error_message argument to bfd_perform_relocation
- will be set. */
- bfd_reloc_dangerous
- }
- bfd_reloc_status_type;
- typedef const struct reloc_howto_struct reloc_howto_type;
- typedef struct reloc_cache_entry
- {
- /* A pointer into the canonical table of pointers. */
- struct bfd_symbol **sym_ptr_ptr;
- /* offset in section. */
- bfd_size_type address;
- /* addend for relocation value. */
- bfd_vma addend;
- /* Pointer to how to perform the required relocation. */
- reloc_howto_type *howto;
- }
- arelent;
- *Description*
- Here is a description of each of the fields within an 'arelent':
- * 'sym_ptr_ptr'
- The symbol table pointer points to a pointer to the symbol associated
- with the relocation request. It is the pointer into the table returned
- by the back end's 'canonicalize_symtab' action. *Note Symbols::. The
- symbol is referenced through a pointer to a pointer so that tools like
- the linker can fix up all the symbols of the same name by modifying only
- one pointer. The relocation routine looks in the symbol and uses the
- base of the section the symbol is attached to and the value of the
- symbol as the initial relocation offset. If the symbol pointer is zero,
- then the section provided is looked up.
- * 'address'
- The 'address' field gives the offset in bytes from the base of the
- section data which owns the relocation record to the first byte of
- relocatable information. The actual data relocated will be relative to
- this point; for example, a relocation type which modifies the bottom two
- bytes of a four byte word would not touch the first byte pointed to in a
- big endian world.
- * 'addend'
- The 'addend' is a value provided by the back end to be added (!) to
- the relocation offset. Its interpretation is dependent upon the howto.
- For example, on the 68k the code:
- char foo[];
- main()
- {
- return foo[0x12345678];
- }
- Could be compiled into:
- linkw fp,#-4
- moveb @#12345678,d0
- extbl d0
- unlk fp
- rts
- This could create a reloc pointing to 'foo', but leave the offset in
- the data, something like:
- RELOCATION RECORDS FOR [.text]:
- offset type value
- 00000006 32 _foo
- 00000000 4e56 fffc ; linkw fp,#-4
- 00000004 1039 1234 5678 ; moveb @#12345678,d0
- 0000000a 49c0 ; extbl d0
- 0000000c 4e5e ; unlk fp
- 0000000e 4e75 ; rts
- Using coff and an 88k, some instructions don't have enough space in
- them to represent the full address range, and pointers have to be loaded
- in two parts. So you'd get something like:
- or.u r13,r0,hi16(_foo+0x12345678)
- ld.b r2,r13,lo16(_foo+0x12345678)
- jmp r1
- This should create two relocs, both pointing to '_foo', and with
- 0x12340000 in their addend field. The data would consist of:
- RELOCATION RECORDS FOR [.text]:
- offset type value
- 00000002 HVRT16 _foo+0x12340000
- 00000006 LVRT16 _foo+0x12340000
- 00000000 5da05678 ; or.u r13,r0,0x5678
- 00000004 1c4d5678 ; ld.b r2,r13,0x5678
- 00000008 f400c001 ; jmp r1
- The relocation routine digs out the value from the data, adds it to
- the addend to get the original offset, and then adds the value of
- '_foo'. Note that all 32 bits have to be kept around somewhere, to cope
- with carry from bit 15 to bit 16.
- One further example is the sparc and the a.out format. The sparc has
- a similar problem to the 88k, in that some instructions don't have room
- for an entire offset, but on the sparc the parts are created in odd
- sized lumps. The designers of the a.out format chose to not use the
- data within the section for storing part of the offset; all the offset
- is kept within the reloc. Anything in the data should be ignored.
- save %sp,-112,%sp
- sethi %hi(_foo+0x12345678),%g2
- ldsb [%g2+%lo(_foo+0x12345678)],%i0
- ret
- restore
- Both relocs contain a pointer to 'foo', and the offsets contain junk.
- RELOCATION RECORDS FOR [.text]:
- offset type value
- 00000004 HI22 _foo+0x12345678
- 00000008 LO10 _foo+0x12345678
- 00000000 9de3bf90 ; save %sp,-112,%sp
- 00000004 05000000 ; sethi %hi(_foo+0),%g2
- 00000008 f048a000 ; ldsb [%g2+%lo(_foo+0)],%i0
- 0000000c 81c7e008 ; ret
- 00000010 81e80000 ; restore
- * 'howto'
- The 'howto' field can be imagined as a relocation instruction. It is
- a pointer to a structure which contains information on what to do with
- all of the other information in the reloc record and data section. A
- back end would normally have a relocation instruction set and turn
- relocations into pointers to the correct structure on input - but it
- would be possible to create each howto field on demand.
- 2.10.1.1 'enum complain_overflow'
- .................................
- Indicates what sort of overflow checking should be done when performing
- a relocation.
- enum complain_overflow
- {
- /* Do not complain on overflow. */
- complain_overflow_dont,
- /* Complain if the value overflows when considered as a signed
- number one bit larger than the field. ie. A bitfield of N bits
- is allowed to represent -2**n to 2**n-1. */
- complain_overflow_bitfield,
- /* Complain if the value overflows when considered as a signed
- number. */
- complain_overflow_signed,
- /* Complain if the value overflows when considered as an
- unsigned number. */
- complain_overflow_unsigned
- };
- 2.10.1.2 'reloc_howto_type'
- ...........................
- The 'reloc_howto_type' is a structure which contains all the information
- that libbfd needs to know to tie up a back end's data.
- struct reloc_howto_struct
- {
- /* The type field has mainly a documentary use - the back end can
- do what it wants with it, though normally the back end's idea of
- an external reloc number is stored in this field. */
- unsigned int type;
- /* The encoded size of the item to be relocated. This is *not* a
- power-of-two measure. Use bfd_get_reloc_size to find the size
- of the item in bytes. */
- unsigned int size:3;
- /* The number of bits in the field to be relocated. This is used
- when doing overflow checking. */
- unsigned int bitsize:7;
- /* The value the final relocation is shifted right by. This drops
- unwanted data from the relocation. */
- unsigned int rightshift:6;
- /* The bit position of the reloc value in the destination.
- The relocated value is left shifted by this amount. */
- unsigned int bitpos:6;
- /* What type of overflow error should be checked for when
- relocating. */
- ENUM_BITFIELD (complain_overflow) complain_on_overflow:2;
- /* The relocation value should be negated before applying. */
- unsigned int negate:1;
- /* The relocation is relative to the item being relocated. */
- unsigned int pc_relative:1;
- /* Some formats record a relocation addend in the section contents
- rather than with the relocation. For ELF formats this is the
- distinction between USE_REL and USE_RELA (though the code checks
- for USE_REL == 1/0). The value of this field is TRUE if the
- addend is recorded with the section contents; when performing a
- partial link (ld -r) the section contents (the data) will be
- modified. The value of this field is FALSE if addends are
- recorded with the relocation (in arelent.addend); when performing
- a partial link the relocation will be modified.
- All relocations for all ELF USE_RELA targets should set this field
- to FALSE (values of TRUE should be looked on with suspicion).
- However, the converse is not true: not all relocations of all ELF
- USE_REL targets set this field to TRUE. Why this is so is peculiar
- to each particular target. For relocs that aren't used in partial
- links (e.g. GOT stuff) it doesn't matter what this is set to. */
- unsigned int partial_inplace:1;
- /* When some formats create PC relative instructions, they leave
- the value of the pc of the place being relocated in the offset
- slot of the instruction, so that a PC relative relocation can
- be made just by adding in an ordinary offset (e.g., sun3 a.out).
- Some formats leave the displacement part of an instruction
- empty (e.g., ELF); this flag signals the fact. */
- unsigned int pcrel_offset:1;
- /* src_mask selects the part of the instruction (or data) to be used
- in the relocation sum. If the target relocations don't have an
- addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
- dst_mask to extract the addend from the section contents. If
- relocations do have an addend in the reloc, eg. ELF USE_RELA, this
- field should normally be zero. Non-zero values for ELF USE_RELA
- targets should be viewed with suspicion as normally the value in
- the dst_mask part of the section contents should be ignored. */
- bfd_vma src_mask;
- /* dst_mask selects which parts of the instruction (or data) are
- replaced with a relocated value. */
- bfd_vma dst_mask;
- /* If this field is non null, then the supplied function is
- called rather than the normal function. This allows really
- strange relocation methods to be accommodated. */
- bfd_reloc_status_type (*special_function)
- (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
- bfd *, char **);
- /* The textual name of the relocation type. */
- const char *name;
- };
- 2.10.1.3 'The HOWTO Macro'
- ..........................
- *Description*
- The HOWTO macro fills in a reloc_howto_type (a typedef for const struct
- reloc_howto_struct).
- #define HOWTO(type, right, size, bits, pcrel, left, ovf, func, name, \
- inplace, src_mask, dst_mask, pcrel_off) \
- { (unsigned) type, size < 0 ? -size : size, bits, right, left, ovf, \
- size < 0, pcrel, inplace, pcrel_off, src_mask, dst_mask, func, name }
- *Description*
- This is used to fill in an empty howto entry in an array.
- #define EMPTY_HOWTO(C) \
- HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
- NULL, FALSE, 0, 0, FALSE)
- 2.10.1.4 'bfd_get_reloc_size'
- .............................
- *Synopsis*
- unsigned int bfd_get_reloc_size (reloc_howto_type *);
- *Description*
- For a reloc_howto_type that operates on a fixed number of bytes, this
- returns the number of bytes operated on.
- 2.10.1.5 'arelent_chain'
- ........................
- *Description*
- How relocs are tied together in an 'asection':
- typedef struct relent_chain
- {
- arelent relent;
- struct relent_chain *next;
- }
- arelent_chain;
- 2.10.1.6 'bfd_check_overflow'
- .............................
- *Synopsis*
- bfd_reloc_status_type bfd_check_overflow
- (enum complain_overflow how,
- unsigned int bitsize,
- unsigned int rightshift,
- unsigned int addrsize,
- bfd_vma relocation);
- *Description*
- Perform overflow checking on RELOCATION which has BITSIZE significant
- bits and will be shifted right by RIGHTSHIFT bits, on a machine with
- addresses containing ADDRSIZE significant bits. The result is either of
- 'bfd_reloc_ok' or 'bfd_reloc_overflow'.
- 2.10.1.7 'bfd_reloc_offset_in_range'
- ....................................
- *Synopsis*
- bfd_boolean bfd_reloc_offset_in_range
- (reloc_howto_type *howto,
- bfd *abfd,
- asection *section,
- bfd_size_type offset);
- *Description*
- Returns TRUE if the reloc described by HOWTO can be applied at OFFSET
- octets in SECTION.
- 2.10.1.8 'bfd_perform_relocation'
- .................................
- *Synopsis*
- bfd_reloc_status_type bfd_perform_relocation
- (bfd *abfd,
- arelent *reloc_entry,
- void *data,
- asection *input_section,
- bfd *output_bfd,
- char **error_message);
- *Description*
- If OUTPUT_BFD is supplied to this function, the generated image will be
- relocatable; the relocations are copied to the output file after they
- have been changed to reflect the new state of the world. There are two
- ways of reflecting the results of partial linkage in an output file: by
- modifying the output data in place, and by modifying the relocation
- record. Some native formats (e.g., basic a.out and basic coff) have no
- way of specifying an addend in the relocation type, so the addend has to
- go in the output data. This is no big deal since in these formats the
- output data slot will always be big enough for the addend. Complex
- reloc types with addends were invented to solve just this problem. The
- ERROR_MESSAGE argument is set to an error message if this return
- 'bfd_reloc_dangerous'.
- 2.10.1.9 'bfd_install_relocation'
- .................................
- *Synopsis*
- bfd_reloc_status_type bfd_install_relocation
- (bfd *abfd,
- arelent *reloc_entry,
- void *data, bfd_vma data_start,
- asection *input_section,
- char **error_message);
- *Description*
- This looks remarkably like 'bfd_perform_relocation', except it does not
- expect that the section contents have been filled in. I.e., it's
- suitable for use when creating, rather than applying a relocation.
- For now, this function should be considered reserved for the
- assembler.
- File: bfd.info, Node: howto manager, Prev: typedef arelent, Up: Relocations
- 2.10.2 The howto manager
- ------------------------
- When an application wants to create a relocation, but doesn't know what
- the target machine might call it, it can find out by using this bit of
- code.
- 2.10.2.1 'bfd_reloc_code_type'
- ..............................
- *Description*
- The insides of a reloc code. The idea is that, eventually, there will
- be one enumerator for every type of relocation we ever do. Pass one of
- these values to 'bfd_reloc_type_lookup', and it'll return a howto
- pointer.
- This does mean that the application must determine the correct
- enumerator value; you can't get a howto pointer from a random set of
- attributes.
- Here are the possible values for 'enum bfd_reloc_code_real':
- -- : BFD_RELOC_64
- -- : BFD_RELOC_32
- -- : BFD_RELOC_26
- -- : BFD_RELOC_24
- -- : BFD_RELOC_16
- -- : BFD_RELOC_14
- -- : BFD_RELOC_8
- Basic absolute relocations of N bits.
- -- : BFD_RELOC_64_PCREL
- -- : BFD_RELOC_32_PCREL
- -- : BFD_RELOC_24_PCREL
- -- : BFD_RELOC_16_PCREL
- -- : BFD_RELOC_12_PCREL
- -- : BFD_RELOC_8_PCREL
- PC-relative relocations. Sometimes these are relative to the
- address of the relocation itself; sometimes they are relative to
- the start of the section containing the relocation. It depends on
- the specific target.
- -- : BFD_RELOC_32_SECREL
- Section relative relocations. Some targets need this for DWARF2.
- -- : BFD_RELOC_32_GOT_PCREL
- -- : BFD_RELOC_16_GOT_PCREL
- -- : BFD_RELOC_8_GOT_PCREL
- -- : BFD_RELOC_32_GOTOFF
- -- : BFD_RELOC_16_GOTOFF
- -- : BFD_RELOC_LO16_GOTOFF
- -- : BFD_RELOC_HI16_GOTOFF
- -- : BFD_RELOC_HI16_S_GOTOFF
- -- : BFD_RELOC_8_GOTOFF
- -- : BFD_RELOC_64_PLT_PCREL
- -- : BFD_RELOC_32_PLT_PCREL
- -- : BFD_RELOC_24_PLT_PCREL
- -- : BFD_RELOC_16_PLT_PCREL
- -- : BFD_RELOC_8_PLT_PCREL
- -- : BFD_RELOC_64_PLTOFF
- -- : BFD_RELOC_32_PLTOFF
- -- : BFD_RELOC_16_PLTOFF
- -- : BFD_RELOC_LO16_PLTOFF
- -- : BFD_RELOC_HI16_PLTOFF
- -- : BFD_RELOC_HI16_S_PLTOFF
- -- : BFD_RELOC_8_PLTOFF
- For ELF.
- -- : BFD_RELOC_SIZE32
- -- : BFD_RELOC_SIZE64
- Size relocations.
- -- : BFD_RELOC_68K_GLOB_DAT
- -- : BFD_RELOC_68K_JMP_SLOT
- -- : BFD_RELOC_68K_RELATIVE
- -- : BFD_RELOC_68K_TLS_GD32
- -- : BFD_RELOC_68K_TLS_GD16
- -- : BFD_RELOC_68K_TLS_GD8
- -- : BFD_RELOC_68K_TLS_LDM32
- -- : BFD_RELOC_68K_TLS_LDM16
- -- : BFD_RELOC_68K_TLS_LDM8
- -- : BFD_RELOC_68K_TLS_LDO32
- -- : BFD_RELOC_68K_TLS_LDO16
- -- : BFD_RELOC_68K_TLS_LDO8
- -- : BFD_RELOC_68K_TLS_IE32
- -- : BFD_RELOC_68K_TLS_IE16
- -- : BFD_RELOC_68K_TLS_IE8
- -- : BFD_RELOC_68K_TLS_LE32
- -- : BFD_RELOC_68K_TLS_LE16
- -- : BFD_RELOC_68K_TLS_LE8
- Relocations used by 68K ELF.
- -- : BFD_RELOC_32_BASEREL
- -- : BFD_RELOC_16_BASEREL
- -- : BFD_RELOC_LO16_BASEREL
- -- : BFD_RELOC_HI16_BASEREL
- -- : BFD_RELOC_HI16_S_BASEREL
- -- : BFD_RELOC_8_BASEREL
- -- : BFD_RELOC_RVA
- Linkage-table relative.
- -- : BFD_RELOC_8_FFnn
- Absolute 8-bit relocation, but used to form an address like 0xFFnn.
- -- : BFD_RELOC_32_PCREL_S2
- -- : BFD_RELOC_16_PCREL_S2
- -- : BFD_RELOC_23_PCREL_S2
- These PC-relative relocations are stored as word displacements -
- i.e., byte displacements shifted right two bits. The 30-bit word
- displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the
- SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
- signed 16-bit displacement is used on the MIPS, and the 23-bit
- displacement is used on the Alpha.
- -- : BFD_RELOC_HI22
- -- : BFD_RELOC_LO10
- High 22 bits and low 10 bits of 32-bit value, placed into lower
- bits of the target word. These are used on the SPARC.
- -- : BFD_RELOC_GPREL16
- -- : BFD_RELOC_GPREL32
- For systems that allocate a Global Pointer register, these are
- displacements off that register. These relocation types are
- handled specially, because the value the register will have is
- decided relatively late.
- -- : BFD_RELOC_NONE
- -- : BFD_RELOC_SPARC_WDISP22
- -- : BFD_RELOC_SPARC22
- -- : BFD_RELOC_SPARC13
- -- : BFD_RELOC_SPARC_GOT10
- -- : BFD_RELOC_SPARC_GOT13
- -- : BFD_RELOC_SPARC_GOT22
- -- : BFD_RELOC_SPARC_PC10
- -- : BFD_RELOC_SPARC_PC22
- -- : BFD_RELOC_SPARC_WPLT30
- -- : BFD_RELOC_SPARC_COPY
- -- : BFD_RELOC_SPARC_GLOB_DAT
- -- : BFD_RELOC_SPARC_JMP_SLOT
- -- : BFD_RELOC_SPARC_RELATIVE
- -- : BFD_RELOC_SPARC_UA16
- -- : BFD_RELOC_SPARC_UA32
- -- : BFD_RELOC_SPARC_UA64
- -- : BFD_RELOC_SPARC_GOTDATA_HIX22
- -- : BFD_RELOC_SPARC_GOTDATA_LOX10
- -- : BFD_RELOC_SPARC_GOTDATA_OP_HIX22
- -- : BFD_RELOC_SPARC_GOTDATA_OP_LOX10
- -- : BFD_RELOC_SPARC_GOTDATA_OP
- -- : BFD_RELOC_SPARC_JMP_IREL
- -- : BFD_RELOC_SPARC_IRELATIVE
- SPARC ELF relocations. There is probably some overlap with other
- relocation types already defined.
- -- : BFD_RELOC_SPARC_BASE13
- -- : BFD_RELOC_SPARC_BASE22
- I think these are specific to SPARC a.out (e.g., Sun 4).
- -- : BFD_RELOC_SPARC_64
- -- : BFD_RELOC_SPARC_10
- -- : BFD_RELOC_SPARC_11
- -- : BFD_RELOC_SPARC_OLO10
- -- : BFD_RELOC_SPARC_HH22
- -- : BFD_RELOC_SPARC_HM10
- -- : BFD_RELOC_SPARC_LM22
- -- : BFD_RELOC_SPARC_PC_HH22
- -- : BFD_RELOC_SPARC_PC_HM10
- -- : BFD_RELOC_SPARC_PC_LM22
- -- : BFD_RELOC_SPARC_WDISP16
- -- : BFD_RELOC_SPARC_WDISP19
- -- : BFD_RELOC_SPARC_7
- -- : BFD_RELOC_SPARC_6
- -- : BFD_RELOC_SPARC_5
- -- : BFD_RELOC_SPARC_DISP64
- -- : BFD_RELOC_SPARC_PLT32
- -- : BFD_RELOC_SPARC_PLT64
- -- : BFD_RELOC_SPARC_HIX22
- -- : BFD_RELOC_SPARC_LOX10
- -- : BFD_RELOC_SPARC_H44
- -- : BFD_RELOC_SPARC_M44
- -- : BFD_RELOC_SPARC_L44
- -- : BFD_RELOC_SPARC_REGISTER
- -- : BFD_RELOC_SPARC_H34
- -- : BFD_RELOC_SPARC_SIZE32
- -- : BFD_RELOC_SPARC_SIZE64
- -- : BFD_RELOC_SPARC_WDISP10
- SPARC64 relocations
- -- : BFD_RELOC_SPARC_REV32
- SPARC little endian relocation
- -- : BFD_RELOC_SPARC_TLS_GD_HI22
- -- : BFD_RELOC_SPARC_TLS_GD_LO10
- -- : BFD_RELOC_SPARC_TLS_GD_ADD
- -- : BFD_RELOC_SPARC_TLS_GD_CALL
- -- : BFD_RELOC_SPARC_TLS_LDM_HI22
- -- : BFD_RELOC_SPARC_TLS_LDM_LO10
- -- : BFD_RELOC_SPARC_TLS_LDM_ADD
- -- : BFD_RELOC_SPARC_TLS_LDM_CALL
- -- : BFD_RELOC_SPARC_TLS_LDO_HIX22
- -- : BFD_RELOC_SPARC_TLS_LDO_LOX10
- -- : BFD_RELOC_SPARC_TLS_LDO_ADD
- -- : BFD_RELOC_SPARC_TLS_IE_HI22
- -- : BFD_RELOC_SPARC_TLS_IE_LO10
- -- : BFD_RELOC_SPARC_TLS_IE_LD
- -- : BFD_RELOC_SPARC_TLS_IE_LDX
- -- : BFD_RELOC_SPARC_TLS_IE_ADD
- -- : BFD_RELOC_SPARC_TLS_LE_HIX22
- -- : BFD_RELOC_SPARC_TLS_LE_LOX10
- -- : BFD_RELOC_SPARC_TLS_DTPMOD32
- -- : BFD_RELOC_SPARC_TLS_DTPMOD64
- -- : BFD_RELOC_SPARC_TLS_DTPOFF32
- -- : BFD_RELOC_SPARC_TLS_DTPOFF64
- -- : BFD_RELOC_SPARC_TLS_TPOFF32
- -- : BFD_RELOC_SPARC_TLS_TPOFF64
- SPARC TLS relocations
- -- : BFD_RELOC_SPU_IMM7
- -- : BFD_RELOC_SPU_IMM8
- -- : BFD_RELOC_SPU_IMM10
- -- : BFD_RELOC_SPU_IMM10W
- -- : BFD_RELOC_SPU_IMM16
- -- : BFD_RELOC_SPU_IMM16W
- -- : BFD_RELOC_SPU_IMM18
- -- : BFD_RELOC_SPU_PCREL9a
- -- : BFD_RELOC_SPU_PCREL9b
- -- : BFD_RELOC_SPU_PCREL16
- -- : BFD_RELOC_SPU_LO16
- -- : BFD_RELOC_SPU_HI16
- -- : BFD_RELOC_SPU_PPU32
- -- : BFD_RELOC_SPU_PPU64
- -- : BFD_RELOC_SPU_ADD_PIC
- SPU Relocations.
- -- : BFD_RELOC_ALPHA_GPDISP_HI16
- Alpha ECOFF and ELF relocations. Some of these treat the symbol or
- "addend" in some special way. For GPDISP_HI16 ("gpdisp")
- relocations, the symbol is ignored when writing; when reading, it
- will be the absolute section symbol. The addend is the
- displacement in bytes of the "lda" instruction from the "ldah"
- instruction (which is at the address of this reloc).
- -- : BFD_RELOC_ALPHA_GPDISP_LO16
- For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
- with GPDISP_HI16 relocs. The addend is ignored when writing the
- relocations out, and is filled in with the file's GP value on
- reading, for convenience.
- -- : BFD_RELOC_ALPHA_GPDISP
- The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
- relocation except that there is no accompanying GPDISP_LO16
- relocation.
- -- : BFD_RELOC_ALPHA_LITERAL
- -- : BFD_RELOC_ALPHA_ELF_LITERAL
- -- : BFD_RELOC_ALPHA_LITUSE
- The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
- the assembler turns it into a LDQ instruction to load the address
- of the symbol, and then fills in a register in the real
- instruction.
- The LITERAL reloc, at the LDQ instruction, refers to the .lita
- section symbol. The addend is ignored when writing, but is filled
- in with the file's GP value on reading, for convenience, as with
- the GPDISP_LO16 reloc.
- The ELF_LITERAL reloc is somewhere between 16_GOTOFF and
- GPDISP_LO16. It should refer to the symbol to be referenced, as
- with 16_GOTOFF, but it generates output not based on the position
- within the .got section, but relative to the GP value chosen for
- the file during the final link stage.
- The LITUSE reloc, on the instruction using the loaded address,
- gives information to the linker that it might be able to use to
- optimize away some literal section references. The symbol is
- ignored (read as the absolute section symbol), and the "addend"
- indicates the type of instruction using the register: 1 - "memory"
- fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target of
- branch)
- -- : BFD_RELOC_ALPHA_HINT
- The HINT relocation indicates a value that should be filled into
- the "hint" field of a jmp/jsr/ret instruction, for possible branch-
- prediction logic which may be provided on some processors.
- -- : BFD_RELOC_ALPHA_LINKAGE
- The LINKAGE relocation outputs a linkage pair in the object file,
- which is filled by the linker.
- -- : BFD_RELOC_ALPHA_CODEADDR
- The CODEADDR relocation outputs a STO_CA in the object file, which
- is filled by the linker.
- -- : BFD_RELOC_ALPHA_GPREL_HI16
- -- : BFD_RELOC_ALPHA_GPREL_LO16
- The GPREL_HI/LO relocations together form a 32-bit offset from the
- GP register.
- -- : BFD_RELOC_ALPHA_BRSGP
- Like BFD_RELOC_23_PCREL_S2, except that the source and target must
- share a common GP, and the target address is adjusted for
- STO_ALPHA_STD_GPLOAD.
- -- : BFD_RELOC_ALPHA_NOP
- The NOP relocation outputs a NOP if the longword displacement
- between two procedure entry points is < 2^21.
- -- : BFD_RELOC_ALPHA_BSR
- The BSR relocation outputs a BSR if the longword displacement
- between two procedure entry points is < 2^21.
- -- : BFD_RELOC_ALPHA_LDA
- The LDA relocation outputs a LDA if the longword displacement
- between two procedure entry points is < 2^16.
- -- : BFD_RELOC_ALPHA_BOH
- The BOH relocation outputs a BSR if the longword displacement
- between two procedure entry points is < 2^21, or else a hint.
- -- : BFD_RELOC_ALPHA_TLSGD
- -- : BFD_RELOC_ALPHA_TLSLDM
- -- : BFD_RELOC_ALPHA_DTPMOD64
- -- : BFD_RELOC_ALPHA_GOTDTPREL16
- -- : BFD_RELOC_ALPHA_DTPREL64
- -- : BFD_RELOC_ALPHA_DTPREL_HI16
- -- : BFD_RELOC_ALPHA_DTPREL_LO16
- -- : BFD_RELOC_ALPHA_DTPREL16
- -- : BFD_RELOC_ALPHA_GOTTPREL16
- -- : BFD_RELOC_ALPHA_TPREL64
- -- : BFD_RELOC_ALPHA_TPREL_HI16
- -- : BFD_RELOC_ALPHA_TPREL_LO16
- -- : BFD_RELOC_ALPHA_TPREL16
- Alpha thread-local storage relocations.
- -- : BFD_RELOC_MIPS_JMP
- -- : BFD_RELOC_MICROMIPS_JMP
- The MIPS jump instruction.
- -- : BFD_RELOC_MIPS16_JMP
- The MIPS16 jump instruction.
- -- : BFD_RELOC_MIPS16_GPREL
- MIPS16 GP relative reloc.
- -- : BFD_RELOC_HI16
- High 16 bits of 32-bit value; simple reloc.
- -- : BFD_RELOC_HI16_S
- High 16 bits of 32-bit value but the low 16 bits will be sign
- extended and added to form the final result. If the low 16 bits
- form a negative number, we need to add one to the high value to
- compensate for the borrow when the low bits are added.
- -- : BFD_RELOC_LO16
- Low 16 bits.
- -- : BFD_RELOC_HI16_PCREL
- High 16 bits of 32-bit pc-relative value
- -- : BFD_RELOC_HI16_S_PCREL
- High 16 bits of 32-bit pc-relative value, adjusted
- -- : BFD_RELOC_LO16_PCREL
- Low 16 bits of pc-relative value
- -- : BFD_RELOC_MIPS16_GOT16
- -- : BFD_RELOC_MIPS16_CALL16
- Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
- 16-bit immediate fields
- -- : BFD_RELOC_MIPS16_HI16
- MIPS16 high 16 bits of 32-bit value.
- -- : BFD_RELOC_MIPS16_HI16_S
- MIPS16 high 16 bits of 32-bit value but the low 16 bits will be
- sign extended and added to form the final result. If the low 16
- bits form a negative number, we need to add one to the high value
- to compensate for the borrow when the low bits are added.
- -- : BFD_RELOC_MIPS16_LO16
- MIPS16 low 16 bits.
- -- : BFD_RELOC_MIPS16_TLS_GD
- -- : BFD_RELOC_MIPS16_TLS_LDM
- -- : BFD_RELOC_MIPS16_TLS_DTPREL_HI16
- -- : BFD_RELOC_MIPS16_TLS_DTPREL_LO16
- -- : BFD_RELOC_MIPS16_TLS_GOTTPREL
- -- : BFD_RELOC_MIPS16_TLS_TPREL_HI16
- -- : BFD_RELOC_MIPS16_TLS_TPREL_LO16
- MIPS16 TLS relocations
- -- : BFD_RELOC_MIPS_LITERAL
- -- : BFD_RELOC_MICROMIPS_LITERAL
- Relocation against a MIPS literal section.
- -- : BFD_RELOC_MICROMIPS_7_PCREL_S1
- -- : BFD_RELOC_MICROMIPS_10_PCREL_S1
- -- : BFD_RELOC_MICROMIPS_16_PCREL_S1
- microMIPS PC-relative relocations.
- -- : BFD_RELOC_MIPS16_16_PCREL_S1
- MIPS16 PC-relative relocation.
- -- : BFD_RELOC_MIPS_21_PCREL_S2
- -- : BFD_RELOC_MIPS_26_PCREL_S2
- -- : BFD_RELOC_MIPS_18_PCREL_S3
- -- : BFD_RELOC_MIPS_19_PCREL_S2
- MIPS PC-relative relocations.
- -- : BFD_RELOC_MICROMIPS_GPREL16
- -- : BFD_RELOC_MICROMIPS_HI16
- -- : BFD_RELOC_MICROMIPS_HI16_S
- -- : BFD_RELOC_MICROMIPS_LO16
- microMIPS versions of generic BFD relocs.
- -- : BFD_RELOC_MIPS_GOT16
- -- : BFD_RELOC_MICROMIPS_GOT16
- -- : BFD_RELOC_MIPS_CALL16
- -- : BFD_RELOC_MICROMIPS_CALL16
- -- : BFD_RELOC_MIPS_GOT_HI16
- -- : BFD_RELOC_MICROMIPS_GOT_HI16
- -- : BFD_RELOC_MIPS_GOT_LO16
- -- : BFD_RELOC_MICROMIPS_GOT_LO16
- -- : BFD_RELOC_MIPS_CALL_HI16
- -- : BFD_RELOC_MICROMIPS_CALL_HI16
- -- : BFD_RELOC_MIPS_CALL_LO16
- -- : BFD_RELOC_MICROMIPS_CALL_LO16
- -- : BFD_RELOC_MIPS_SUB
- -- : BFD_RELOC_MICROMIPS_SUB
- -- : BFD_RELOC_MIPS_GOT_PAGE
- -- : BFD_RELOC_MICROMIPS_GOT_PAGE
- -- : BFD_RELOC_MIPS_GOT_OFST
- -- : BFD_RELOC_MICROMIPS_GOT_OFST
- -- : BFD_RELOC_MIPS_GOT_DISP
- -- : BFD_RELOC_MICROMIPS_GOT_DISP
- -- : BFD_RELOC_MIPS_SHIFT5
- -- : BFD_RELOC_MIPS_SHIFT6
- -- : BFD_RELOC_MIPS_INSERT_A
- -- : BFD_RELOC_MIPS_INSERT_B
- -- : BFD_RELOC_MIPS_DELETE
- -- : BFD_RELOC_MIPS_HIGHEST
- -- : BFD_RELOC_MICROMIPS_HIGHEST
- -- : BFD_RELOC_MIPS_HIGHER
- -- : BFD_RELOC_MICROMIPS_HIGHER
- -- : BFD_RELOC_MIPS_SCN_DISP
- -- : BFD_RELOC_MICROMIPS_SCN_DISP
- -- : BFD_RELOC_MIPS_REL16
- -- : BFD_RELOC_MIPS_RELGOT
- -- : BFD_RELOC_MIPS_JALR
- -- : BFD_RELOC_MICROMIPS_JALR
- -- : BFD_RELOC_MIPS_TLS_DTPMOD32
- -- : BFD_RELOC_MIPS_TLS_DTPREL32
- -- : BFD_RELOC_MIPS_TLS_DTPMOD64
- -- : BFD_RELOC_MIPS_TLS_DTPREL64
- -- : BFD_RELOC_MIPS_TLS_GD
- -- : BFD_RELOC_MICROMIPS_TLS_GD
- -- : BFD_RELOC_MIPS_TLS_LDM
- -- : BFD_RELOC_MICROMIPS_TLS_LDM
- -- : BFD_RELOC_MIPS_TLS_DTPREL_HI16
- -- : BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16
- -- : BFD_RELOC_MIPS_TLS_DTPREL_LO16
- -- : BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16
- -- : BFD_RELOC_MIPS_TLS_GOTTPREL
- -- : BFD_RELOC_MICROMIPS_TLS_GOTTPREL
- -- : BFD_RELOC_MIPS_TLS_TPREL32
- -- : BFD_RELOC_MIPS_TLS_TPREL64
- -- : BFD_RELOC_MIPS_TLS_TPREL_HI16
- -- : BFD_RELOC_MICROMIPS_TLS_TPREL_HI16
- -- : BFD_RELOC_MIPS_TLS_TPREL_LO16
- -- : BFD_RELOC_MICROMIPS_TLS_TPREL_LO16
- -- : BFD_RELOC_MIPS_EH
- MIPS ELF relocations.
- -- : BFD_RELOC_MIPS_COPY
- -- : BFD_RELOC_MIPS_JUMP_SLOT
- MIPS ELF relocations (VxWorks and PLT extensions).
- -- : BFD_RELOC_MOXIE_10_PCREL
- Moxie ELF relocations.
- -- : BFD_RELOC_FT32_10
- -- : BFD_RELOC_FT32_20
- -- : BFD_RELOC_FT32_17
- -- : BFD_RELOC_FT32_18
- -- : BFD_RELOC_FT32_RELAX
- -- : BFD_RELOC_FT32_SC0
- -- : BFD_RELOC_FT32_SC1
- -- : BFD_RELOC_FT32_15
- -- : BFD_RELOC_FT32_DIFF32
- FT32 ELF relocations.
- -- : BFD_RELOC_FRV_LABEL16
- -- : BFD_RELOC_FRV_LABEL24
- -- : BFD_RELOC_FRV_LO16
- -- : BFD_RELOC_FRV_HI16
- -- : BFD_RELOC_FRV_GPREL12
- -- : BFD_RELOC_FRV_GPRELU12
- -- : BFD_RELOC_FRV_GPREL32
- -- : BFD_RELOC_FRV_GPRELHI
- -- : BFD_RELOC_FRV_GPRELLO
- -- : BFD_RELOC_FRV_GOT12
- -- : BFD_RELOC_FRV_GOTHI
- -- : BFD_RELOC_FRV_GOTLO
- -- : BFD_RELOC_FRV_FUNCDESC
- -- : BFD_RELOC_FRV_FUNCDESC_GOT12
- -- : BFD_RELOC_FRV_FUNCDESC_GOTHI
- -- : BFD_RELOC_FRV_FUNCDESC_GOTLO
- -- : BFD_RELOC_FRV_FUNCDESC_VALUE
- -- : BFD_RELOC_FRV_FUNCDESC_GOTOFF12
- -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
- -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
- -- : BFD_RELOC_FRV_GOTOFF12
- -- : BFD_RELOC_FRV_GOTOFFHI
- -- : BFD_RELOC_FRV_GOTOFFLO
- -- : BFD_RELOC_FRV_GETTLSOFF
- -- : BFD_RELOC_FRV_TLSDESC_VALUE
- -- : BFD_RELOC_FRV_GOTTLSDESC12
- -- : BFD_RELOC_FRV_GOTTLSDESCHI
- -- : BFD_RELOC_FRV_GOTTLSDESCLO
- -- : BFD_RELOC_FRV_TLSMOFF12
- -- : BFD_RELOC_FRV_TLSMOFFHI
- -- : BFD_RELOC_FRV_TLSMOFFLO
- -- : BFD_RELOC_FRV_GOTTLSOFF12
- -- : BFD_RELOC_FRV_GOTTLSOFFHI
- -- : BFD_RELOC_FRV_GOTTLSOFFLO
- -- : BFD_RELOC_FRV_TLSOFF
- -- : BFD_RELOC_FRV_TLSDESC_RELAX
- -- : BFD_RELOC_FRV_GETTLSOFF_RELAX
- -- : BFD_RELOC_FRV_TLSOFF_RELAX
- -- : BFD_RELOC_FRV_TLSMOFF
- Fujitsu Frv Relocations.
- -- : BFD_RELOC_MN10300_GOTOFF24
- This is a 24bit GOT-relative reloc for the mn10300.
- -- : BFD_RELOC_MN10300_GOT32
- This is a 32bit GOT-relative reloc for the mn10300, offset by two
- bytes in the instruction.
- -- : BFD_RELOC_MN10300_GOT24
- This is a 24bit GOT-relative reloc for the mn10300, offset by two
- bytes in the instruction.
- -- : BFD_RELOC_MN10300_GOT16
- This is a 16bit GOT-relative reloc for the mn10300, offset by two
- bytes in the instruction.
- -- : BFD_RELOC_MN10300_COPY
- Copy symbol at runtime.
- -- : BFD_RELOC_MN10300_GLOB_DAT
- Create GOT entry.
- -- : BFD_RELOC_MN10300_JMP_SLOT
- Create PLT entry.
- -- : BFD_RELOC_MN10300_RELATIVE
- Adjust by program base.
- -- : BFD_RELOC_MN10300_SYM_DIFF
- Together with another reloc targeted at the same location, allows
- for a value that is the difference of two symbols in the same
- section.
- -- : BFD_RELOC_MN10300_ALIGN
- The addend of this reloc is an alignment power that must be
- honoured at the offset's location, regardless of linker relaxation.
- -- : BFD_RELOC_MN10300_TLS_GD
- -- : BFD_RELOC_MN10300_TLS_LD
- -- : BFD_RELOC_MN10300_TLS_LDO
- -- : BFD_RELOC_MN10300_TLS_GOTIE
- -- : BFD_RELOC_MN10300_TLS_IE
- -- : BFD_RELOC_MN10300_TLS_LE
- -- : BFD_RELOC_MN10300_TLS_DTPMOD
- -- : BFD_RELOC_MN10300_TLS_DTPOFF
- -- : BFD_RELOC_MN10300_TLS_TPOFF
- Various TLS-related relocations.
- -- : BFD_RELOC_MN10300_32_PCREL
- This is a 32bit pcrel reloc for the mn10300, offset by two bytes in
- the instruction.
- -- : BFD_RELOC_MN10300_16_PCREL
- This is a 16bit pcrel reloc for the mn10300, offset by two bytes in
- the instruction.
- -- : BFD_RELOC_386_GOT32
- -- : BFD_RELOC_386_PLT32
- -- : BFD_RELOC_386_COPY
- -- : BFD_RELOC_386_GLOB_DAT
- -- : BFD_RELOC_386_JUMP_SLOT
- -- : BFD_RELOC_386_RELATIVE
- -- : BFD_RELOC_386_GOTOFF
- -- : BFD_RELOC_386_GOTPC
- -- : BFD_RELOC_386_TLS_TPOFF
- -- : BFD_RELOC_386_TLS_IE
- -- : BFD_RELOC_386_TLS_GOTIE
- -- : BFD_RELOC_386_TLS_LE
- -- : BFD_RELOC_386_TLS_GD
- -- : BFD_RELOC_386_TLS_LDM
- -- : BFD_RELOC_386_TLS_LDO_32
- -- : BFD_RELOC_386_TLS_IE_32
- -- : BFD_RELOC_386_TLS_LE_32
- -- : BFD_RELOC_386_TLS_DTPMOD32
- -- : BFD_RELOC_386_TLS_DTPOFF32
- -- : BFD_RELOC_386_TLS_TPOFF32
- -- : BFD_RELOC_386_TLS_GOTDESC
- -- : BFD_RELOC_386_TLS_DESC_CALL
- -- : BFD_RELOC_386_TLS_DESC
- -- : BFD_RELOC_386_IRELATIVE
- -- : BFD_RELOC_386_GOT32X
- i386/elf relocations
- -- : BFD_RELOC_X86_64_GOT32
- -- : BFD_RELOC_X86_64_PLT32
- -- : BFD_RELOC_X86_64_COPY
- -- : BFD_RELOC_X86_64_GLOB_DAT
- -- : BFD_RELOC_X86_64_JUMP_SLOT
- -- : BFD_RELOC_X86_64_RELATIVE
- -- : BFD_RELOC_X86_64_GOTPCREL
- -- : BFD_RELOC_X86_64_32S
- -- : BFD_RELOC_X86_64_DTPMOD64
- -- : BFD_RELOC_X86_64_DTPOFF64
- -- : BFD_RELOC_X86_64_TPOFF64
- -- : BFD_RELOC_X86_64_TLSGD
- -- : BFD_RELOC_X86_64_TLSLD
- -- : BFD_RELOC_X86_64_DTPOFF32
- -- : BFD_RELOC_X86_64_GOTTPOFF
- -- : BFD_RELOC_X86_64_TPOFF32
- -- : BFD_RELOC_X86_64_GOTOFF64
- -- : BFD_RELOC_X86_64_GOTPC32
- -- : BFD_RELOC_X86_64_GOT64
- -- : BFD_RELOC_X86_64_GOTPCREL64
- -- : BFD_RELOC_X86_64_GOTPC64
- -- : BFD_RELOC_X86_64_GOTPLT64
- -- : BFD_RELOC_X86_64_PLTOFF64
- -- : BFD_RELOC_X86_64_GOTPC32_TLSDESC
- -- : BFD_RELOC_X86_64_TLSDESC_CALL
- -- : BFD_RELOC_X86_64_TLSDESC
- -- : BFD_RELOC_X86_64_IRELATIVE
- -- : BFD_RELOC_X86_64_PC32_BND
- -- : BFD_RELOC_X86_64_PLT32_BND
- -- : BFD_RELOC_X86_64_GOTPCRELX
- -- : BFD_RELOC_X86_64_REX_GOTPCRELX
- x86-64/elf relocations
- -- : BFD_RELOC_NS32K_IMM_8
- -- : BFD_RELOC_NS32K_IMM_16
- -- : BFD_RELOC_NS32K_IMM_32
- -- : BFD_RELOC_NS32K_IMM_8_PCREL
- -- : BFD_RELOC_NS32K_IMM_16_PCREL
- -- : BFD_RELOC_NS32K_IMM_32_PCREL
- -- : BFD_RELOC_NS32K_DISP_8
- -- : BFD_RELOC_NS32K_DISP_16
- -- : BFD_RELOC_NS32K_DISP_32
- -- : BFD_RELOC_NS32K_DISP_8_PCREL
- -- : BFD_RELOC_NS32K_DISP_16_PCREL
- -- : BFD_RELOC_NS32K_DISP_32_PCREL
- ns32k relocations
- -- : BFD_RELOC_PDP11_DISP_8_PCREL
- -- : BFD_RELOC_PDP11_DISP_6_PCREL
- PDP11 relocations
- -- : BFD_RELOC_PJ_CODE_HI16
- -- : BFD_RELOC_PJ_CODE_LO16
- -- : BFD_RELOC_PJ_CODE_DIR16
- -- : BFD_RELOC_PJ_CODE_DIR32
- -- : BFD_RELOC_PJ_CODE_REL16
- -- : BFD_RELOC_PJ_CODE_REL32
- Picojava relocs. Not all of these appear in object files.
- -- : BFD_RELOC_PPC_B26
- -- : BFD_RELOC_PPC_BA26
- -- : BFD_RELOC_PPC_TOC16
- -- : BFD_RELOC_PPC_B16
- -- : BFD_RELOC_PPC_B16_BRTAKEN
- -- : BFD_RELOC_PPC_B16_BRNTAKEN
- -- : BFD_RELOC_PPC_BA16
- -- : BFD_RELOC_PPC_BA16_BRTAKEN
- -- : BFD_RELOC_PPC_BA16_BRNTAKEN
- -- : BFD_RELOC_PPC_COPY
- -- : BFD_RELOC_PPC_GLOB_DAT
- -- : BFD_RELOC_PPC_JMP_SLOT
- -- : BFD_RELOC_PPC_RELATIVE
- -- : BFD_RELOC_PPC_LOCAL24PC
- -- : BFD_RELOC_PPC_EMB_NADDR32
- -- : BFD_RELOC_PPC_EMB_NADDR16
- -- : BFD_RELOC_PPC_EMB_NADDR16_LO
- -- : BFD_RELOC_PPC_EMB_NADDR16_HI
- -- : BFD_RELOC_PPC_EMB_NADDR16_HA
- -- : BFD_RELOC_PPC_EMB_SDAI16
- -- : BFD_RELOC_PPC_EMB_SDA2I16
- -- : BFD_RELOC_PPC_EMB_SDA2REL
- -- : BFD_RELOC_PPC_EMB_SDA21
- -- : BFD_RELOC_PPC_EMB_MRKREF
- -- : BFD_RELOC_PPC_EMB_RELSEC16
- -- : BFD_RELOC_PPC_EMB_RELST_LO
- -- : BFD_RELOC_PPC_EMB_RELST_HI
- -- : BFD_RELOC_PPC_EMB_RELST_HA
- -- : BFD_RELOC_PPC_EMB_BIT_FLD
- -- : BFD_RELOC_PPC_EMB_RELSDA
- -- : BFD_RELOC_PPC_VLE_REL8
- -- : BFD_RELOC_PPC_VLE_REL15
- -- : BFD_RELOC_PPC_VLE_REL24
- -- : BFD_RELOC_PPC_VLE_LO16A
- -- : BFD_RELOC_PPC_VLE_LO16D
- -- : BFD_RELOC_PPC_VLE_HI16A
- -- : BFD_RELOC_PPC_VLE_HI16D
- -- : BFD_RELOC_PPC_VLE_HA16A
- -- : BFD_RELOC_PPC_VLE_HA16D
- -- : BFD_RELOC_PPC_VLE_SDA21
- -- : BFD_RELOC_PPC_VLE_SDA21_LO
- -- : BFD_RELOC_PPC_VLE_SDAREL_LO16A
- -- : BFD_RELOC_PPC_VLE_SDAREL_LO16D
- -- : BFD_RELOC_PPC_VLE_SDAREL_HI16A
- -- : BFD_RELOC_PPC_VLE_SDAREL_HI16D
- -- : BFD_RELOC_PPC_VLE_SDAREL_HA16A
- -- : BFD_RELOC_PPC_VLE_SDAREL_HA16D
- -- : BFD_RELOC_PPC_16DX_HA
- -- : BFD_RELOC_PPC_REL16DX_HA
- -- : BFD_RELOC_PPC64_HIGHER
- -- : BFD_RELOC_PPC64_HIGHER_S
- -- : BFD_RELOC_PPC64_HIGHEST
- -- : BFD_RELOC_PPC64_HIGHEST_S
- -- : BFD_RELOC_PPC64_TOC16_LO
- -- : BFD_RELOC_PPC64_TOC16_HI
- -- : BFD_RELOC_PPC64_TOC16_HA
- -- : BFD_RELOC_PPC64_TOC
- -- : BFD_RELOC_PPC64_PLTGOT16
- -- : BFD_RELOC_PPC64_PLTGOT16_LO
- -- : BFD_RELOC_PPC64_PLTGOT16_HI
- -- : BFD_RELOC_PPC64_PLTGOT16_HA
- -- : BFD_RELOC_PPC64_ADDR16_DS
- -- : BFD_RELOC_PPC64_ADDR16_LO_DS
- -- : BFD_RELOC_PPC64_GOT16_DS
- -- : BFD_RELOC_PPC64_GOT16_LO_DS
- -- : BFD_RELOC_PPC64_PLT16_LO_DS
- -- : BFD_RELOC_PPC64_SECTOFF_DS
- -- : BFD_RELOC_PPC64_SECTOFF_LO_DS
- -- : BFD_RELOC_PPC64_TOC16_DS
- -- : BFD_RELOC_PPC64_TOC16_LO_DS
- -- : BFD_RELOC_PPC64_PLTGOT16_DS
- -- : BFD_RELOC_PPC64_PLTGOT16_LO_DS
- -- : BFD_RELOC_PPC64_ADDR16_HIGH
- -- : BFD_RELOC_PPC64_ADDR16_HIGHA
- -- : BFD_RELOC_PPC64_REL16_HIGH
- -- : BFD_RELOC_PPC64_REL16_HIGHA
- -- : BFD_RELOC_PPC64_REL16_HIGHER
- -- : BFD_RELOC_PPC64_REL16_HIGHERA
- -- : BFD_RELOC_PPC64_REL16_HIGHEST
- -- : BFD_RELOC_PPC64_REL16_HIGHESTA
- -- : BFD_RELOC_PPC64_ADDR64_LOCAL
- -- : BFD_RELOC_PPC64_ENTRY
- -- : BFD_RELOC_PPC64_REL24_NOTOC
- -- : BFD_RELOC_PPC64_D34
- -- : BFD_RELOC_PPC64_D34_LO
- -- : BFD_RELOC_PPC64_D34_HI30
- -- : BFD_RELOC_PPC64_D34_HA30
- -- : BFD_RELOC_PPC64_PCREL34
- -- : BFD_RELOC_PPC64_GOT_PCREL34
- -- : BFD_RELOC_PPC64_PLT_PCREL34
- -- : BFD_RELOC_PPC64_ADDR16_HIGHER34
- -- : BFD_RELOC_PPC64_ADDR16_HIGHERA34
- -- : BFD_RELOC_PPC64_ADDR16_HIGHEST34
- -- : BFD_RELOC_PPC64_ADDR16_HIGHESTA34
- -- : BFD_RELOC_PPC64_REL16_HIGHER34
- -- : BFD_RELOC_PPC64_REL16_HIGHERA34
- -- : BFD_RELOC_PPC64_REL16_HIGHEST34
- -- : BFD_RELOC_PPC64_REL16_HIGHESTA34
- -- : BFD_RELOC_PPC64_D28
- -- : BFD_RELOC_PPC64_PCREL28
- Power(rs6000) and PowerPC relocations.
- -- : BFD_RELOC_PPC_TLS
- -- : BFD_RELOC_PPC_TLSGD
- -- : BFD_RELOC_PPC_TLSLD
- -- : BFD_RELOC_PPC_DTPMOD
- -- : BFD_RELOC_PPC_TPREL16
- -- : BFD_RELOC_PPC_TPREL16_LO
- -- : BFD_RELOC_PPC_TPREL16_HI
- -- : BFD_RELOC_PPC_TPREL16_HA
- -- : BFD_RELOC_PPC_TPREL
- -- : BFD_RELOC_PPC_DTPREL16
- -- : BFD_RELOC_PPC_DTPREL16_LO
- -- : BFD_RELOC_PPC_DTPREL16_HI
- -- : BFD_RELOC_PPC_DTPREL16_HA
- -- : BFD_RELOC_PPC_DTPREL
- -- : BFD_RELOC_PPC_GOT_TLSGD16
- -- : BFD_RELOC_PPC_GOT_TLSGD16_LO
- -- : BFD_RELOC_PPC_GOT_TLSGD16_HI
- -- : BFD_RELOC_PPC_GOT_TLSGD16_HA
- -- : BFD_RELOC_PPC_GOT_TLSLD16
- -- : BFD_RELOC_PPC_GOT_TLSLD16_LO
- -- : BFD_RELOC_PPC_GOT_TLSLD16_HI
- -- : BFD_RELOC_PPC_GOT_TLSLD16_HA
- -- : BFD_RELOC_PPC_GOT_TPREL16
- -- : BFD_RELOC_PPC_GOT_TPREL16_LO
- -- : BFD_RELOC_PPC_GOT_TPREL16_HI
- -- : BFD_RELOC_PPC_GOT_TPREL16_HA
- -- : BFD_RELOC_PPC_GOT_DTPREL16
- -- : BFD_RELOC_PPC_GOT_DTPREL16_LO
- -- : BFD_RELOC_PPC_GOT_DTPREL16_HI
- -- : BFD_RELOC_PPC_GOT_DTPREL16_HA
- -- : BFD_RELOC_PPC64_TPREL16_DS
- -- : BFD_RELOC_PPC64_TPREL16_LO_DS
- -- : BFD_RELOC_PPC64_TPREL16_HIGH
- -- : BFD_RELOC_PPC64_TPREL16_HIGHA
- -- : BFD_RELOC_PPC64_TPREL16_HIGHER
- -- : BFD_RELOC_PPC64_TPREL16_HIGHERA
- -- : BFD_RELOC_PPC64_TPREL16_HIGHEST
- -- : BFD_RELOC_PPC64_TPREL16_HIGHESTA
- -- : BFD_RELOC_PPC64_DTPREL16_DS
- -- : BFD_RELOC_PPC64_DTPREL16_LO_DS
- -- : BFD_RELOC_PPC64_DTPREL16_HIGH
- -- : BFD_RELOC_PPC64_DTPREL16_HIGHA
- -- : BFD_RELOC_PPC64_DTPREL16_HIGHER
- -- : BFD_RELOC_PPC64_DTPREL16_HIGHERA
- -- : BFD_RELOC_PPC64_DTPREL16_HIGHEST
- -- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA
- -- : BFD_RELOC_PPC64_TPREL34
- -- : BFD_RELOC_PPC64_DTPREL34
- -- : BFD_RELOC_PPC64_GOT_TLSGD34
- -- : BFD_RELOC_PPC64_GOT_TLSLD34
- -- : BFD_RELOC_PPC64_GOT_TPREL34
- -- : BFD_RELOC_PPC64_GOT_DTPREL34
- -- : BFD_RELOC_PPC64_TLS_PCREL
- PowerPC and PowerPC64 thread-local storage relocations.
- -- : BFD_RELOC_I370_D12
- IBM 370/390 relocations
- -- : BFD_RELOC_CTOR
- The type of reloc used to build a constructor table - at the moment
- probably a 32 bit wide absolute relocation, but the target can
- choose. It generally does map to one of the other relocation
- types.
- -- : BFD_RELOC_ARM_PCREL_BRANCH
- ARM 26 bit pc-relative branch. The lowest two bits must be zero
- and are not stored in the instruction.
- -- : BFD_RELOC_ARM_PCREL_BLX
- ARM 26 bit pc-relative branch. The lowest bit must be zero and is
- not stored in the instruction. The 2nd lowest bit comes from a 1
- bit field in the instruction.
- -- : BFD_RELOC_THUMB_PCREL_BLX
- Thumb 22 bit pc-relative branch. The lowest bit must be zero and
- is not stored in the instruction. The 2nd lowest bit comes from a
- 1 bit field in the instruction.
- -- : BFD_RELOC_ARM_PCREL_CALL
- ARM 26-bit pc-relative branch for an unconditional BL or BLX
- instruction.
- -- : BFD_RELOC_ARM_PCREL_JUMP
- ARM 26-bit pc-relative branch for B or conditional BL instruction.
- -- : BFD_RELOC_THUMB_PCREL_BRANCH5
- ARM 5-bit pc-relative branch for Branch Future instructions.
- -- : BFD_RELOC_THUMB_PCREL_BFCSEL
- ARM 6-bit pc-relative branch for BFCSEL instruction.
- -- : BFD_RELOC_ARM_THUMB_BF17
- ARM 17-bit pc-relative branch for Branch Future instructions.
- -- : BFD_RELOC_ARM_THUMB_BF13
- ARM 13-bit pc-relative branch for BFCSEL instruction.
- -- : BFD_RELOC_ARM_THUMB_BF19
- ARM 19-bit pc-relative branch for Branch Future Link instruction.
- -- : BFD_RELOC_ARM_THUMB_LOOP12
- ARM 12-bit pc-relative branch for Low Overhead Loop instructions.
- -- : BFD_RELOC_THUMB_PCREL_BRANCH7
- -- : BFD_RELOC_THUMB_PCREL_BRANCH9
- -- : BFD_RELOC_THUMB_PCREL_BRANCH12
- -- : BFD_RELOC_THUMB_PCREL_BRANCH20
- -- : BFD_RELOC_THUMB_PCREL_BRANCH23
- -- : BFD_RELOC_THUMB_PCREL_BRANCH25
- Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches. The
- lowest bit must be zero and is not stored in the instruction. Note
- that the corresponding ELF R_ARM_THM_JUMPnn constant has an "nn"
- one smaller in all cases. Note further that BRANCH23 corresponds
- to R_ARM_THM_CALL.
- -- : BFD_RELOC_ARM_OFFSET_IMM
- 12-bit immediate offset, used in ARM-format ldr and str
- instructions.
- -- : BFD_RELOC_ARM_THUMB_OFFSET
- 5-bit immediate offset, used in Thumb-format ldr and str
- instructions.
- -- : BFD_RELOC_ARM_TARGET1
- Pc-relative or absolute relocation depending on target. Used for
- entries in .init_array sections.
- -- : BFD_RELOC_ARM_ROSEGREL32
- Read-only segment base relative address.
- -- : BFD_RELOC_ARM_SBREL32
- Data segment base relative address.
- -- : BFD_RELOC_ARM_TARGET2
- This reloc is used for references to RTTI data from exception
- handling tables. The actual definition depends on the target. It
- may be a pc-relative or some form of GOT-indirect relocation.
- -- : BFD_RELOC_ARM_PREL31
- 31-bit PC relative address.
- -- : BFD_RELOC_ARM_MOVW
- -- : BFD_RELOC_ARM_MOVT
- -- : BFD_RELOC_ARM_MOVW_PCREL
- -- : BFD_RELOC_ARM_MOVT_PCREL
- -- : BFD_RELOC_ARM_THUMB_MOVW
- -- : BFD_RELOC_ARM_THUMB_MOVT
- -- : BFD_RELOC_ARM_THUMB_MOVW_PCREL
- -- : BFD_RELOC_ARM_THUMB_MOVT_PCREL
- Low and High halfword relocations for MOVW and MOVT instructions.
- -- : BFD_RELOC_ARM_GOTFUNCDESC
- -- : BFD_RELOC_ARM_GOTOFFFUNCDESC
- -- : BFD_RELOC_ARM_FUNCDESC
- -- : BFD_RELOC_ARM_FUNCDESC_VALUE
- -- : BFD_RELOC_ARM_TLS_GD32_FDPIC
- -- : BFD_RELOC_ARM_TLS_LDM32_FDPIC
- -- : BFD_RELOC_ARM_TLS_IE32_FDPIC
- ARM FDPIC specific relocations.
- -- : BFD_RELOC_ARM_JUMP_SLOT
- -- : BFD_RELOC_ARM_GLOB_DAT
- -- : BFD_RELOC_ARM_GOT32
- -- : BFD_RELOC_ARM_PLT32
- -- : BFD_RELOC_ARM_RELATIVE
- -- : BFD_RELOC_ARM_GOTOFF
- -- : BFD_RELOC_ARM_GOTPC
- -- : BFD_RELOC_ARM_GOT_PREL
- Relocations for setting up GOTs and PLTs for shared libraries.
- -- : BFD_RELOC_ARM_TLS_GD32
- -- : BFD_RELOC_ARM_TLS_LDO32
- -- : BFD_RELOC_ARM_TLS_LDM32
- -- : BFD_RELOC_ARM_TLS_DTPOFF32
- -- : BFD_RELOC_ARM_TLS_DTPMOD32
- -- : BFD_RELOC_ARM_TLS_TPOFF32
- -- : BFD_RELOC_ARM_TLS_IE32
- -- : BFD_RELOC_ARM_TLS_LE32
- -- : BFD_RELOC_ARM_TLS_GOTDESC
- -- : BFD_RELOC_ARM_TLS_CALL
- -- : BFD_RELOC_ARM_THM_TLS_CALL
- -- : BFD_RELOC_ARM_TLS_DESCSEQ
- -- : BFD_RELOC_ARM_THM_TLS_DESCSEQ
- -- : BFD_RELOC_ARM_TLS_DESC
- ARM thread-local storage relocations.
- -- : BFD_RELOC_ARM_ALU_PC_G0_NC
- -- : BFD_RELOC_ARM_ALU_PC_G0
- -- : BFD_RELOC_ARM_ALU_PC_G1_NC
- -- : BFD_RELOC_ARM_ALU_PC_G1
- -- : BFD_RELOC_ARM_ALU_PC_G2
- -- : BFD_RELOC_ARM_LDR_PC_G0
- -- : BFD_RELOC_ARM_LDR_PC_G1
- -- : BFD_RELOC_ARM_LDR_PC_G2
- -- : BFD_RELOC_ARM_LDRS_PC_G0
- -- : BFD_RELOC_ARM_LDRS_PC_G1
- -- : BFD_RELOC_ARM_LDRS_PC_G2
- -- : BFD_RELOC_ARM_LDC_PC_G0
- -- : BFD_RELOC_ARM_LDC_PC_G1
- -- : BFD_RELOC_ARM_LDC_PC_G2
- -- : BFD_RELOC_ARM_ALU_SB_G0_NC
- -- : BFD_RELOC_ARM_ALU_SB_G0
- -- : BFD_RELOC_ARM_ALU_SB_G1_NC
- -- : BFD_RELOC_ARM_ALU_SB_G1
- -- : BFD_RELOC_ARM_ALU_SB_G2
- -- : BFD_RELOC_ARM_LDR_SB_G0
- -- : BFD_RELOC_ARM_LDR_SB_G1
- -- : BFD_RELOC_ARM_LDR_SB_G2
- -- : BFD_RELOC_ARM_LDRS_SB_G0
- -- : BFD_RELOC_ARM_LDRS_SB_G1
- -- : BFD_RELOC_ARM_LDRS_SB_G2
- -- : BFD_RELOC_ARM_LDC_SB_G0
- -- : BFD_RELOC_ARM_LDC_SB_G1
- -- : BFD_RELOC_ARM_LDC_SB_G2
- ARM group relocations.
- -- : BFD_RELOC_ARM_V4BX
- Annotation of BX instructions.
- -- : BFD_RELOC_ARM_IRELATIVE
- ARM support for STT_GNU_IFUNC.
- -- : BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC
- -- : BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC
- -- : BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC
- -- : BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC
- Thumb1 relocations to support execute-only code.
- -- : BFD_RELOC_ARM_IMMEDIATE
- -- : BFD_RELOC_ARM_ADRL_IMMEDIATE
- -- : BFD_RELOC_ARM_T32_IMMEDIATE
- -- : BFD_RELOC_ARM_T32_ADD_IMM
- -- : BFD_RELOC_ARM_T32_IMM12
- -- : BFD_RELOC_ARM_T32_ADD_PC12
- -- : BFD_RELOC_ARM_SHIFT_IMM
- -- : BFD_RELOC_ARM_SMC
- -- : BFD_RELOC_ARM_HVC
- -- : BFD_RELOC_ARM_SWI
- -- : BFD_RELOC_ARM_MULTI
- -- : BFD_RELOC_ARM_CP_OFF_IMM
- -- : BFD_RELOC_ARM_CP_OFF_IMM_S2
- -- : BFD_RELOC_ARM_T32_CP_OFF_IMM
- -- : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
- -- : BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM
- -- : BFD_RELOC_ARM_ADR_IMM
- -- : BFD_RELOC_ARM_LDR_IMM
- -- : BFD_RELOC_ARM_LITERAL
- -- : BFD_RELOC_ARM_IN_POOL
- -- : BFD_RELOC_ARM_OFFSET_IMM8
- -- : BFD_RELOC_ARM_T32_OFFSET_U8
- -- : BFD_RELOC_ARM_T32_OFFSET_IMM
- -- : BFD_RELOC_ARM_HWLITERAL
- -- : BFD_RELOC_ARM_THUMB_ADD
- -- : BFD_RELOC_ARM_THUMB_IMM
- -- : BFD_RELOC_ARM_THUMB_SHIFT
- These relocs are only used within the ARM assembler. They are not
- (at present) written to any object files.
- -- : BFD_RELOC_SH_PCDISP8BY2
- -- : BFD_RELOC_SH_PCDISP12BY2
- -- : BFD_RELOC_SH_IMM3
- -- : BFD_RELOC_SH_IMM3U
- -- : BFD_RELOC_SH_DISP12
- -- : BFD_RELOC_SH_DISP12BY2
- -- : BFD_RELOC_SH_DISP12BY4
- -- : BFD_RELOC_SH_DISP12BY8
- -- : BFD_RELOC_SH_DISP20
- -- : BFD_RELOC_SH_DISP20BY8
- -- : BFD_RELOC_SH_IMM4
- -- : BFD_RELOC_SH_IMM4BY2
- -- : BFD_RELOC_SH_IMM4BY4
- -- : BFD_RELOC_SH_IMM8
- -- : BFD_RELOC_SH_IMM8BY2
- -- : BFD_RELOC_SH_IMM8BY4
- -- : BFD_RELOC_SH_PCRELIMM8BY2
- -- : BFD_RELOC_SH_PCRELIMM8BY4
- -- : BFD_RELOC_SH_SWITCH16
- -- : BFD_RELOC_SH_SWITCH32
- -- : BFD_RELOC_SH_USES
- -- : BFD_RELOC_SH_COUNT
- -- : BFD_RELOC_SH_ALIGN
- -- : BFD_RELOC_SH_CODE
- -- : BFD_RELOC_SH_DATA
- -- : BFD_RELOC_SH_LABEL
- -- : BFD_RELOC_SH_LOOP_START
- -- : BFD_RELOC_SH_LOOP_END
- -- : BFD_RELOC_SH_COPY
- -- : BFD_RELOC_SH_GLOB_DAT
- -- : BFD_RELOC_SH_JMP_SLOT
- -- : BFD_RELOC_SH_RELATIVE
- -- : BFD_RELOC_SH_GOTPC
- -- : BFD_RELOC_SH_GOT_LOW16
- -- : BFD_RELOC_SH_GOT_MEDLOW16
- -- : BFD_RELOC_SH_GOT_MEDHI16
- -- : BFD_RELOC_SH_GOT_HI16
- -- : BFD_RELOC_SH_GOTPLT_LOW16
- -- : BFD_RELOC_SH_GOTPLT_MEDLOW16
- -- : BFD_RELOC_SH_GOTPLT_MEDHI16
- -- : BFD_RELOC_SH_GOTPLT_HI16
- -- : BFD_RELOC_SH_PLT_LOW16
- -- : BFD_RELOC_SH_PLT_MEDLOW16
- -- : BFD_RELOC_SH_PLT_MEDHI16
- -- : BFD_RELOC_SH_PLT_HI16
- -- : BFD_RELOC_SH_GOTOFF_LOW16
- -- : BFD_RELOC_SH_GOTOFF_MEDLOW16
- -- : BFD_RELOC_SH_GOTOFF_MEDHI16
- -- : BFD_RELOC_SH_GOTOFF_HI16
- -- : BFD_RELOC_SH_GOTPC_LOW16
- -- : BFD_RELOC_SH_GOTPC_MEDLOW16
- -- : BFD_RELOC_SH_GOTPC_MEDHI16
- -- : BFD_RELOC_SH_GOTPC_HI16
- -- : BFD_RELOC_SH_COPY64
- -- : BFD_RELOC_SH_GLOB_DAT64
- -- : BFD_RELOC_SH_JMP_SLOT64
- -- : BFD_RELOC_SH_RELATIVE64
- -- : BFD_RELOC_SH_GOT10BY4
- -- : BFD_RELOC_SH_GOT10BY8
- -- : BFD_RELOC_SH_GOTPLT10BY4
- -- : BFD_RELOC_SH_GOTPLT10BY8
- -- : BFD_RELOC_SH_GOTPLT32
- -- : BFD_RELOC_SH_SHMEDIA_CODE
- -- : BFD_RELOC_SH_IMMU5
- -- : BFD_RELOC_SH_IMMS6
- -- : BFD_RELOC_SH_IMMS6BY32
- -- : BFD_RELOC_SH_IMMU6
- -- : BFD_RELOC_SH_IMMS10
- -- : BFD_RELOC_SH_IMMS10BY2
- -- : BFD_RELOC_SH_IMMS10BY4
- -- : BFD_RELOC_SH_IMMS10BY8
- -- : BFD_RELOC_SH_IMMS16
- -- : BFD_RELOC_SH_IMMU16
- -- : BFD_RELOC_SH_IMM_LOW16
- -- : BFD_RELOC_SH_IMM_LOW16_PCREL
- -- : BFD_RELOC_SH_IMM_MEDLOW16
- -- : BFD_RELOC_SH_IMM_MEDLOW16_PCREL
- -- : BFD_RELOC_SH_IMM_MEDHI16
- -- : BFD_RELOC_SH_IMM_MEDHI16_PCREL
- -- : BFD_RELOC_SH_IMM_HI16
- -- : BFD_RELOC_SH_IMM_HI16_PCREL
- -- : BFD_RELOC_SH_PT_16
- -- : BFD_RELOC_SH_TLS_GD_32
- -- : BFD_RELOC_SH_TLS_LD_32
- -- : BFD_RELOC_SH_TLS_LDO_32
- -- : BFD_RELOC_SH_TLS_IE_32
- -- : BFD_RELOC_SH_TLS_LE_32
- -- : BFD_RELOC_SH_TLS_DTPMOD32
- -- : BFD_RELOC_SH_TLS_DTPOFF32
- -- : BFD_RELOC_SH_TLS_TPOFF32
- -- : BFD_RELOC_SH_GOT20
- -- : BFD_RELOC_SH_GOTOFF20
- -- : BFD_RELOC_SH_GOTFUNCDESC
- -- : BFD_RELOC_SH_GOTFUNCDESC20
- -- : BFD_RELOC_SH_GOTOFFFUNCDESC
- -- : BFD_RELOC_SH_GOTOFFFUNCDESC20
- -- : BFD_RELOC_SH_FUNCDESC
- Renesas / SuperH SH relocs. Not all of these appear in object
- files.
- -- : BFD_RELOC_ARC_NONE
- -- : BFD_RELOC_ARC_8
- -- : BFD_RELOC_ARC_16
- -- : BFD_RELOC_ARC_24
- -- : BFD_RELOC_ARC_32
- -- : BFD_RELOC_ARC_N8
- -- : BFD_RELOC_ARC_N16
- -- : BFD_RELOC_ARC_N24
- -- : BFD_RELOC_ARC_N32
- -- : BFD_RELOC_ARC_SDA
- -- : BFD_RELOC_ARC_SECTOFF
- -- : BFD_RELOC_ARC_S21H_PCREL
- -- : BFD_RELOC_ARC_S21W_PCREL
- -- : BFD_RELOC_ARC_S25H_PCREL
- -- : BFD_RELOC_ARC_S25W_PCREL
- -- : BFD_RELOC_ARC_SDA32
- -- : BFD_RELOC_ARC_SDA_LDST
- -- : BFD_RELOC_ARC_SDA_LDST1
- -- : BFD_RELOC_ARC_SDA_LDST2
- -- : BFD_RELOC_ARC_SDA16_LD
- -- : BFD_RELOC_ARC_SDA16_LD1
- -- : BFD_RELOC_ARC_SDA16_LD2
- -- : BFD_RELOC_ARC_S13_PCREL
- -- : BFD_RELOC_ARC_W
- -- : BFD_RELOC_ARC_32_ME
- -- : BFD_RELOC_ARC_32_ME_S
- -- : BFD_RELOC_ARC_N32_ME
- -- : BFD_RELOC_ARC_SECTOFF_ME
- -- : BFD_RELOC_ARC_SDA32_ME
- -- : BFD_RELOC_ARC_W_ME
- -- : BFD_RELOC_AC_SECTOFF_U8
- -- : BFD_RELOC_AC_SECTOFF_U8_1
- -- : BFD_RELOC_AC_SECTOFF_U8_2
- -- : BFD_RELOC_AC_SECTOFF_S9
- -- : BFD_RELOC_AC_SECTOFF_S9_1
- -- : BFD_RELOC_AC_SECTOFF_S9_2
- -- : BFD_RELOC_ARC_SECTOFF_ME_1
- -- : BFD_RELOC_ARC_SECTOFF_ME_2
- -- : BFD_RELOC_ARC_SECTOFF_1
- -- : BFD_RELOC_ARC_SECTOFF_2
- -- : BFD_RELOC_ARC_SDA_12
- -- : BFD_RELOC_ARC_SDA16_ST2
- -- : BFD_RELOC_ARC_32_PCREL
- -- : BFD_RELOC_ARC_PC32
- -- : BFD_RELOC_ARC_GOT32
- -- : BFD_RELOC_ARC_GOTPC32
- -- : BFD_RELOC_ARC_PLT32
- -- : BFD_RELOC_ARC_COPY
- -- : BFD_RELOC_ARC_GLOB_DAT
- -- : BFD_RELOC_ARC_JMP_SLOT
- -- : BFD_RELOC_ARC_RELATIVE
- -- : BFD_RELOC_ARC_GOTOFF
- -- : BFD_RELOC_ARC_GOTPC
- -- : BFD_RELOC_ARC_S21W_PCREL_PLT
- -- : BFD_RELOC_ARC_S25H_PCREL_PLT
- -- : BFD_RELOC_ARC_TLS_DTPMOD
- -- : BFD_RELOC_ARC_TLS_TPOFF
- -- : BFD_RELOC_ARC_TLS_GD_GOT
- -- : BFD_RELOC_ARC_TLS_GD_LD
- -- : BFD_RELOC_ARC_TLS_GD_CALL
- -- : BFD_RELOC_ARC_TLS_IE_GOT
- -- : BFD_RELOC_ARC_TLS_DTPOFF
- -- : BFD_RELOC_ARC_TLS_DTPOFF_S9
- -- : BFD_RELOC_ARC_TLS_LE_S9
- -- : BFD_RELOC_ARC_TLS_LE_32
- -- : BFD_RELOC_ARC_S25W_PCREL_PLT
- -- : BFD_RELOC_ARC_S21H_PCREL_PLT
- -- : BFD_RELOC_ARC_NPS_CMEM16
- -- : BFD_RELOC_ARC_JLI_SECTOFF
- ARC relocs.
- -- : BFD_RELOC_BFIN_16_IMM
- ADI Blackfin 16 bit immediate absolute reloc.
- -- : BFD_RELOC_BFIN_16_HIGH
- ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
- -- : BFD_RELOC_BFIN_4_PCREL
- ADI Blackfin 'a' part of LSETUP.
- -- : BFD_RELOC_BFIN_5_PCREL
- ADI Blackfin.
- -- : BFD_RELOC_BFIN_16_LOW
- ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
- -- : BFD_RELOC_BFIN_10_PCREL
- ADI Blackfin.
- -- : BFD_RELOC_BFIN_11_PCREL
- ADI Blackfin 'b' part of LSETUP.
- -- : BFD_RELOC_BFIN_12_PCREL_JUMP
- ADI Blackfin.
- -- : BFD_RELOC_BFIN_12_PCREL_JUMP_S
- ADI Blackfin Short jump, pcrel.
- -- : BFD_RELOC_BFIN_24_PCREL_CALL_X
- ADI Blackfin Call.x not implemented.
- -- : BFD_RELOC_BFIN_24_PCREL_JUMP_L
- ADI Blackfin Long Jump pcrel.
- -- : BFD_RELOC_BFIN_GOT17M4
- -- : BFD_RELOC_BFIN_GOTHI
- -- : BFD_RELOC_BFIN_GOTLO
- -- : BFD_RELOC_BFIN_FUNCDESC
- -- : BFD_RELOC_BFIN_FUNCDESC_GOT17M4
- -- : BFD_RELOC_BFIN_FUNCDESC_GOTHI
- -- : BFD_RELOC_BFIN_FUNCDESC_GOTLO
- -- : BFD_RELOC_BFIN_FUNCDESC_VALUE
- -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
- -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
- -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
- -- : BFD_RELOC_BFIN_GOTOFF17M4
- -- : BFD_RELOC_BFIN_GOTOFFHI
- -- : BFD_RELOC_BFIN_GOTOFFLO
- ADI Blackfin FD-PIC relocations.
- -- : BFD_RELOC_BFIN_GOT
- ADI Blackfin GOT relocation.
- -- : BFD_RELOC_BFIN_PLTPC
- ADI Blackfin PLTPC relocation.
- -- : BFD_ARELOC_BFIN_PUSH
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_CONST
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_ADD
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_SUB
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_MULT
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_DIV
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_MOD
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_LSHIFT
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_RSHIFT
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_AND
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_OR
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_XOR
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_LAND
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_LOR
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_LEN
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_NEG
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_COMP
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_PAGE
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_HWPAGE
- ADI Blackfin arithmetic relocation.
- -- : BFD_ARELOC_BFIN_ADDR
- ADI Blackfin arithmetic relocation.
- -- : BFD_RELOC_D10V_10_PCREL_R
- Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2
- bits assumed to be 0.
- -- : BFD_RELOC_D10V_10_PCREL_L
- Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2
- bits assumed to be 0. This is the same as the previous reloc
- except it is in the left container, i.e., shifted left 15 bits.
- -- : BFD_RELOC_D10V_18
- This is an 18-bit reloc with the right 2 bits assumed to be 0.
- -- : BFD_RELOC_D10V_18_PCREL
- This is an 18-bit reloc with the right 2 bits assumed to be 0.
- -- : BFD_RELOC_D30V_6
- Mitsubishi D30V relocs. This is a 6-bit absolute reloc.
- -- : BFD_RELOC_D30V_9_PCREL
- This is a 6-bit pc-relative reloc with the right 3 bits assumed to
- be 0.
- -- : BFD_RELOC_D30V_9_PCREL_R
- This is a 6-bit pc-relative reloc with the right 3 bits assumed to
- be 0. Same as the previous reloc but on the right side of the
- container.
- -- : BFD_RELOC_D30V_15
- This is a 12-bit absolute reloc with the right 3 bitsassumed to be
- 0.
- -- : BFD_RELOC_D30V_15_PCREL
- This is a 12-bit pc-relative reloc with the right 3 bits assumed to
- be 0.
- -- : BFD_RELOC_D30V_15_PCREL_R
- This is a 12-bit pc-relative reloc with the right 3 bits assumed to
- be 0. Same as the previous reloc but on the right side of the
- container.
- -- : BFD_RELOC_D30V_21
- This is an 18-bit absolute reloc with the right 3 bits assumed to
- be 0.
- -- : BFD_RELOC_D30V_21_PCREL
- This is an 18-bit pc-relative reloc with the right 3 bits assumed
- to be 0.
- -- : BFD_RELOC_D30V_21_PCREL_R
- This is an 18-bit pc-relative reloc with the right 3 bits assumed
- to be 0. Same as the previous reloc but on the right side of the
- container.
- -- : BFD_RELOC_D30V_32
- This is a 32-bit absolute reloc.
- -- : BFD_RELOC_D30V_32_PCREL
- This is a 32-bit pc-relative reloc.
- -- : BFD_RELOC_DLX_HI16_S
- DLX relocs
- -- : BFD_RELOC_DLX_LO16
- DLX relocs
- -- : BFD_RELOC_DLX_JMP26
- DLX relocs
- -- : BFD_RELOC_M32C_HI8
- -- : BFD_RELOC_M32C_RL_JUMP
- -- : BFD_RELOC_M32C_RL_1ADDR
- -- : BFD_RELOC_M32C_RL_2ADDR
- Renesas M16C/M32C Relocations.
- -- : BFD_RELOC_M32R_24
- Renesas M32R (formerly Mitsubishi M32R) relocs. This is a 24 bit
- absolute address.
- -- : BFD_RELOC_M32R_10_PCREL
- This is a 10-bit pc-relative reloc with the right 2 bits assumed to
- be 0.
- -- : BFD_RELOC_M32R_18_PCREL
- This is an 18-bit reloc with the right 2 bits assumed to be 0.
- -- : BFD_RELOC_M32R_26_PCREL
- This is a 26-bit reloc with the right 2 bits assumed to be 0.
- -- : BFD_RELOC_M32R_HI16_ULO
- This is a 16-bit reloc containing the high 16 bits of an address
- used when the lower 16 bits are treated as unsigned.
- -- : BFD_RELOC_M32R_HI16_SLO
- This is a 16-bit reloc containing the high 16 bits of an address
- used when the lower 16 bits are treated as signed.
- -- : BFD_RELOC_M32R_LO16
- This is a 16-bit reloc containing the lower 16 bits of an address.
- -- : BFD_RELOC_M32R_SDA16
- This is a 16-bit reloc containing the small data area offset for
- use in add3, load, and store instructions.
- -- : BFD_RELOC_M32R_GOT24
- -- : BFD_RELOC_M32R_26_PLTREL
- -- : BFD_RELOC_M32R_COPY
- -- : BFD_RELOC_M32R_GLOB_DAT
- -- : BFD_RELOC_M32R_JMP_SLOT
- -- : BFD_RELOC_M32R_RELATIVE
- -- : BFD_RELOC_M32R_GOTOFF
- -- : BFD_RELOC_M32R_GOTOFF_HI_ULO
- -- : BFD_RELOC_M32R_GOTOFF_HI_SLO
- -- : BFD_RELOC_M32R_GOTOFF_LO
- -- : BFD_RELOC_M32R_GOTPC24
- -- : BFD_RELOC_M32R_GOT16_HI_ULO
- -- : BFD_RELOC_M32R_GOT16_HI_SLO
- -- : BFD_RELOC_M32R_GOT16_LO
- -- : BFD_RELOC_M32R_GOTPC_HI_ULO
- -- : BFD_RELOC_M32R_GOTPC_HI_SLO
- -- : BFD_RELOC_M32R_GOTPC_LO
- For PIC.
- -- : BFD_RELOC_NDS32_20
- NDS32 relocs. This is a 20 bit absolute address.
- -- : BFD_RELOC_NDS32_9_PCREL
- This is a 9-bit pc-relative reloc with the right 1 bit assumed to
- be 0.
- -- : BFD_RELOC_NDS32_WORD_9_PCREL
- This is a 9-bit pc-relative reloc with the right 1 bit assumed to
- be 0.
- -- : BFD_RELOC_NDS32_15_PCREL
- This is an 15-bit reloc with the right 1 bit assumed to be 0.
- -- : BFD_RELOC_NDS32_17_PCREL
- This is an 17-bit reloc with the right 1 bit assumed to be 0.
- -- : BFD_RELOC_NDS32_25_PCREL
- This is a 25-bit reloc with the right 1 bit assumed to be 0.
- -- : BFD_RELOC_NDS32_HI20
- This is a 20-bit reloc containing the high 20 bits of an address
- used with the lower 12 bits
- -- : BFD_RELOC_NDS32_LO12S3
- This is a 12-bit reloc containing the lower 12 bits of an address
- then shift right by 3. This is used with ldi,sdi...
- -- : BFD_RELOC_NDS32_LO12S2
- This is a 12-bit reloc containing the lower 12 bits of an address
- then shift left by 2. This is used with lwi,swi...
- -- : BFD_RELOC_NDS32_LO12S1
- This is a 12-bit reloc containing the lower 12 bits of an address
- then shift left by 1. This is used with lhi,shi...
- -- : BFD_RELOC_NDS32_LO12S0
- This is a 12-bit reloc containing the lower 12 bits of an address
- then shift left by 0. This is used with lbisbi...
- -- : BFD_RELOC_NDS32_LO12S0_ORI
- This is a 12-bit reloc containing the lower 12 bits of an address
- then shift left by 0. This is only used with branch relaxations
- -- : BFD_RELOC_NDS32_SDA15S3
- This is a 15-bit reloc containing the small data area 18-bit signed
- offset and shift left by 3 for use in ldi, sdi...
- -- : BFD_RELOC_NDS32_SDA15S2
- This is a 15-bit reloc containing the small data area 17-bit signed
- offset and shift left by 2 for use in lwi, swi...
- -- : BFD_RELOC_NDS32_SDA15S1
- This is a 15-bit reloc containing the small data area 16-bit signed
- offset and shift left by 1 for use in lhi, shi...
- -- : BFD_RELOC_NDS32_SDA15S0
- This is a 15-bit reloc containing the small data area 15-bit signed
- offset and shift left by 0 for use in lbi, sbi...
- -- : BFD_RELOC_NDS32_SDA16S3
- This is a 16-bit reloc containing the small data area 16-bit signed
- offset and shift left by 3
- -- : BFD_RELOC_NDS32_SDA17S2
- This is a 17-bit reloc containing the small data area 17-bit signed
- offset and shift left by 2 for use in lwi.gp, swi.gp...
- -- : BFD_RELOC_NDS32_SDA18S1
- This is a 18-bit reloc containing the small data area 18-bit signed
- offset and shift left by 1 for use in lhi.gp, shi.gp...
- -- : BFD_RELOC_NDS32_SDA19S0
- This is a 19-bit reloc containing the small data area 19-bit signed
- offset and shift left by 0 for use in lbi.gp, sbi.gp...
- -- : BFD_RELOC_NDS32_GOT20
- -- : BFD_RELOC_NDS32_9_PLTREL
- -- : BFD_RELOC_NDS32_25_PLTREL
- -- : BFD_RELOC_NDS32_COPY
- -- : BFD_RELOC_NDS32_GLOB_DAT
- -- : BFD_RELOC_NDS32_JMP_SLOT
- -- : BFD_RELOC_NDS32_RELATIVE
- -- : BFD_RELOC_NDS32_GOTOFF
- -- : BFD_RELOC_NDS32_GOTOFF_HI20
- -- : BFD_RELOC_NDS32_GOTOFF_LO12
- -- : BFD_RELOC_NDS32_GOTPC20
- -- : BFD_RELOC_NDS32_GOT_HI20
- -- : BFD_RELOC_NDS32_GOT_LO12
- -- : BFD_RELOC_NDS32_GOTPC_HI20
- -- : BFD_RELOC_NDS32_GOTPC_LO12
- for PIC
- -- : BFD_RELOC_NDS32_INSN16
- -- : BFD_RELOC_NDS32_LABEL
- -- : BFD_RELOC_NDS32_LONGCALL1
- -- : BFD_RELOC_NDS32_LONGCALL2
- -- : BFD_RELOC_NDS32_LONGCALL3
- -- : BFD_RELOC_NDS32_LONGJUMP1
- -- : BFD_RELOC_NDS32_LONGJUMP2
- -- : BFD_RELOC_NDS32_LONGJUMP3
- -- : BFD_RELOC_NDS32_LOADSTORE
- -- : BFD_RELOC_NDS32_9_FIXED
- -- : BFD_RELOC_NDS32_15_FIXED
- -- : BFD_RELOC_NDS32_17_FIXED
- -- : BFD_RELOC_NDS32_25_FIXED
- -- : BFD_RELOC_NDS32_LONGCALL4
- -- : BFD_RELOC_NDS32_LONGCALL5
- -- : BFD_RELOC_NDS32_LONGCALL6
- -- : BFD_RELOC_NDS32_LONGJUMP4
- -- : BFD_RELOC_NDS32_LONGJUMP5
- -- : BFD_RELOC_NDS32_LONGJUMP6
- -- : BFD_RELOC_NDS32_LONGJUMP7
- for relax
- -- : BFD_RELOC_NDS32_PLTREL_HI20
- -- : BFD_RELOC_NDS32_PLTREL_LO12
- -- : BFD_RELOC_NDS32_PLT_GOTREL_HI20
- -- : BFD_RELOC_NDS32_PLT_GOTREL_LO12
- for PIC
- -- : BFD_RELOC_NDS32_SDA12S2_DP
- -- : BFD_RELOC_NDS32_SDA12S2_SP
- -- : BFD_RELOC_NDS32_LO12S2_DP
- -- : BFD_RELOC_NDS32_LO12S2_SP
- for floating point
- -- : BFD_RELOC_NDS32_DWARF2_OP1
- -- : BFD_RELOC_NDS32_DWARF2_OP2
- -- : BFD_RELOC_NDS32_DWARF2_LEB
- for dwarf2 debug_line.
- -- : BFD_RELOC_NDS32_UPDATE_TA
- for eliminate 16-bit instructions
- -- : BFD_RELOC_NDS32_PLT_GOTREL_LO20
- -- : BFD_RELOC_NDS32_PLT_GOTREL_LO15
- -- : BFD_RELOC_NDS32_PLT_GOTREL_LO19
- -- : BFD_RELOC_NDS32_GOT_LO15
- -- : BFD_RELOC_NDS32_GOT_LO19
- -- : BFD_RELOC_NDS32_GOTOFF_LO15
- -- : BFD_RELOC_NDS32_GOTOFF_LO19
- -- : BFD_RELOC_NDS32_GOT15S2
- -- : BFD_RELOC_NDS32_GOT17S2
- for PIC object relaxation
- -- : BFD_RELOC_NDS32_5
- NDS32 relocs. This is a 5 bit absolute address.
- -- : BFD_RELOC_NDS32_10_UPCREL
- This is a 10-bit unsigned pc-relative reloc with the right 1 bit
- assumed to be 0.
- -- : BFD_RELOC_NDS32_SDA_FP7U2_RELA
- If fp were omitted, fp can used as another gp.
- -- : BFD_RELOC_NDS32_RELAX_ENTRY
- -- : BFD_RELOC_NDS32_GOT_SUFF
- -- : BFD_RELOC_NDS32_GOTOFF_SUFF
- -- : BFD_RELOC_NDS32_PLT_GOT_SUFF
- -- : BFD_RELOC_NDS32_MULCALL_SUFF
- -- : BFD_RELOC_NDS32_PTR
- -- : BFD_RELOC_NDS32_PTR_COUNT
- -- : BFD_RELOC_NDS32_PTR_RESOLVED
- -- : BFD_RELOC_NDS32_PLTBLOCK
- -- : BFD_RELOC_NDS32_RELAX_REGION_BEGIN
- -- : BFD_RELOC_NDS32_RELAX_REGION_END
- -- : BFD_RELOC_NDS32_MINUEND
- -- : BFD_RELOC_NDS32_SUBTRAHEND
- -- : BFD_RELOC_NDS32_DIFF8
- -- : BFD_RELOC_NDS32_DIFF16
- -- : BFD_RELOC_NDS32_DIFF32
- -- : BFD_RELOC_NDS32_DIFF_ULEB128
- -- : BFD_RELOC_NDS32_EMPTY
- relaxation relative relocation types
- -- : BFD_RELOC_NDS32_25_ABS
- This is a 25 bit absolute address.
- -- : BFD_RELOC_NDS32_DATA
- -- : BFD_RELOC_NDS32_TRAN
- -- : BFD_RELOC_NDS32_17IFC_PCREL
- -- : BFD_RELOC_NDS32_10IFCU_PCREL
- For ex9 and ifc using.
- -- : BFD_RELOC_NDS32_TPOFF
- -- : BFD_RELOC_NDS32_GOTTPOFF
- -- : BFD_RELOC_NDS32_TLS_LE_HI20
- -- : BFD_RELOC_NDS32_TLS_LE_LO12
- -- : BFD_RELOC_NDS32_TLS_LE_20
- -- : BFD_RELOC_NDS32_TLS_LE_15S0
- -- : BFD_RELOC_NDS32_TLS_LE_15S1
- -- : BFD_RELOC_NDS32_TLS_LE_15S2
- -- : BFD_RELOC_NDS32_TLS_LE_ADD
- -- : BFD_RELOC_NDS32_TLS_LE_LS
- -- : BFD_RELOC_NDS32_TLS_IE_HI20
- -- : BFD_RELOC_NDS32_TLS_IE_LO12
- -- : BFD_RELOC_NDS32_TLS_IE_LO12S2
- -- : BFD_RELOC_NDS32_TLS_IEGP_HI20
- -- : BFD_RELOC_NDS32_TLS_IEGP_LO12
- -- : BFD_RELOC_NDS32_TLS_IEGP_LO12S2
- -- : BFD_RELOC_NDS32_TLS_IEGP_LW
- -- : BFD_RELOC_NDS32_TLS_DESC
- -- : BFD_RELOC_NDS32_TLS_DESC_HI20
- -- : BFD_RELOC_NDS32_TLS_DESC_LO12
- -- : BFD_RELOC_NDS32_TLS_DESC_20
- -- : BFD_RELOC_NDS32_TLS_DESC_SDA17S2
- -- : BFD_RELOC_NDS32_TLS_DESC_ADD
- -- : BFD_RELOC_NDS32_TLS_DESC_FUNC
- -- : BFD_RELOC_NDS32_TLS_DESC_CALL
- -- : BFD_RELOC_NDS32_TLS_DESC_MEM
- -- : BFD_RELOC_NDS32_REMOVE
- -- : BFD_RELOC_NDS32_GROUP
- For TLS.
- -- : BFD_RELOC_NDS32_LSI
- For floating load store relaxation.
- -- : BFD_RELOC_V850_9_PCREL
- This is a 9-bit reloc
- -- : BFD_RELOC_V850_22_PCREL
- This is a 22-bit reloc
- -- : BFD_RELOC_V850_SDA_16_16_OFFSET
- This is a 16 bit offset from the short data area pointer.
- -- : BFD_RELOC_V850_SDA_15_16_OFFSET
- This is a 16 bit offset (of which only 15 bits are used) from the
- short data area pointer.
- -- : BFD_RELOC_V850_ZDA_16_16_OFFSET
- This is a 16 bit offset from the zero data area pointer.
- -- : BFD_RELOC_V850_ZDA_15_16_OFFSET
- This is a 16 bit offset (of which only 15 bits are used) from the
- zero data area pointer.
- -- : BFD_RELOC_V850_TDA_6_8_OFFSET
- This is an 8 bit offset (of which only 6 bits are used) from the
- tiny data area pointer.
- -- : BFD_RELOC_V850_TDA_7_8_OFFSET
- This is an 8bit offset (of which only 7 bits are used) from the
- tiny data area pointer.
- -- : BFD_RELOC_V850_TDA_7_7_OFFSET
- This is a 7 bit offset from the tiny data area pointer.
- -- : BFD_RELOC_V850_TDA_16_16_OFFSET
- This is a 16 bit offset from the tiny data area pointer.
- -- : BFD_RELOC_V850_TDA_4_5_OFFSET
- This is a 5 bit offset (of which only 4 bits are used) from the
- tiny data area pointer.
- -- : BFD_RELOC_V850_TDA_4_4_OFFSET
- This is a 4 bit offset from the tiny data area pointer.
- -- : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
- This is a 16 bit offset from the short data area pointer, with the
- bits placed non-contiguously in the instruction.
- -- : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
- This is a 16 bit offset from the zero data area pointer, with the
- bits placed non-contiguously in the instruction.
- -- : BFD_RELOC_V850_CALLT_6_7_OFFSET
- This is a 6 bit offset from the call table base pointer.
- -- : BFD_RELOC_V850_CALLT_16_16_OFFSET
- This is a 16 bit offset from the call table base pointer.
- -- : BFD_RELOC_V850_LONGCALL
- Used for relaxing indirect function calls.
- -- : BFD_RELOC_V850_LONGJUMP
- Used for relaxing indirect jumps.
- -- : BFD_RELOC_V850_ALIGN
- Used to maintain alignment whilst relaxing.
- -- : BFD_RELOC_V850_LO16_SPLIT_OFFSET
- This is a variation of BFD_RELOC_LO16 that can be used in v850e
- ld.bu instructions.
- -- : BFD_RELOC_V850_16_PCREL
- This is a 16-bit reloc.
- -- : BFD_RELOC_V850_17_PCREL
- This is a 17-bit reloc.
- -- : BFD_RELOC_V850_23
- This is a 23-bit reloc.
- -- : BFD_RELOC_V850_32_PCREL
- This is a 32-bit reloc.
- -- : BFD_RELOC_V850_32_ABS
- This is a 32-bit reloc.
- -- : BFD_RELOC_V850_16_SPLIT_OFFSET
- This is a 16-bit reloc.
- -- : BFD_RELOC_V850_16_S1
- This is a 16-bit reloc.
- -- : BFD_RELOC_V850_LO16_S1
- Low 16 bits. 16 bit shifted by 1.
- -- : BFD_RELOC_V850_CALLT_15_16_OFFSET
- This is a 16 bit offset from the call table base pointer.
- -- : BFD_RELOC_V850_32_GOTPCREL
- DSO relocations.
- -- : BFD_RELOC_V850_16_GOT
- DSO relocations.
- -- : BFD_RELOC_V850_32_GOT
- DSO relocations.
- -- : BFD_RELOC_V850_22_PLT_PCREL
- DSO relocations.
- -- : BFD_RELOC_V850_32_PLT_PCREL
- DSO relocations.
- -- : BFD_RELOC_V850_COPY
- DSO relocations.
- -- : BFD_RELOC_V850_GLOB_DAT
- DSO relocations.
- -- : BFD_RELOC_V850_JMP_SLOT
- DSO relocations.
- -- : BFD_RELOC_V850_RELATIVE
- DSO relocations.
- -- : BFD_RELOC_V850_16_GOTOFF
- DSO relocations.
- -- : BFD_RELOC_V850_32_GOTOFF
- DSO relocations.
- -- : BFD_RELOC_V850_CODE
- start code.
- -- : BFD_RELOC_V850_DATA
- start data in text.
- -- : BFD_RELOC_TIC30_LDP
- This is a 8bit DP reloc for the tms320c30, where the most
- significant 8 bits of a 24 bit word are placed into the least
- significant 8 bits of the opcode.
- -- : BFD_RELOC_TIC54X_PARTLS7
- This is a 7bit reloc for the tms320c54x, where the least
- significant 7 bits of a 16 bit word are placed into the least
- significant 7 bits of the opcode.
- -- : BFD_RELOC_TIC54X_PARTMS9
- This is a 9bit DP reloc for the tms320c54x, where the most
- significant 9 bits of a 16 bit word are placed into the least
- significant 9 bits of the opcode.
- -- : BFD_RELOC_TIC54X_23
- This is an extended address 23-bit reloc for the tms320c54x.
- -- : BFD_RELOC_TIC54X_16_OF_23
- This is a 16-bit reloc for the tms320c54x, where the least
- significant 16 bits of a 23-bit extended address are placed into
- the opcode.
- -- : BFD_RELOC_TIC54X_MS7_OF_23
- This is a reloc for the tms320c54x, where the most significant 7
- bits of a 23-bit extended address are placed into the opcode.
- -- : BFD_RELOC_C6000_PCR_S21
- -- : BFD_RELOC_C6000_PCR_S12
- -- : BFD_RELOC_C6000_PCR_S10
- -- : BFD_RELOC_C6000_PCR_S7
- -- : BFD_RELOC_C6000_ABS_S16
- -- : BFD_RELOC_C6000_ABS_L16
- -- : BFD_RELOC_C6000_ABS_H16
- -- : BFD_RELOC_C6000_SBR_U15_B
- -- : BFD_RELOC_C6000_SBR_U15_H
- -- : BFD_RELOC_C6000_SBR_U15_W
- -- : BFD_RELOC_C6000_SBR_S16
- -- : BFD_RELOC_C6000_SBR_L16_B
- -- : BFD_RELOC_C6000_SBR_L16_H
- -- : BFD_RELOC_C6000_SBR_L16_W
- -- : BFD_RELOC_C6000_SBR_H16_B
- -- : BFD_RELOC_C6000_SBR_H16_H
- -- : BFD_RELOC_C6000_SBR_H16_W
- -- : BFD_RELOC_C6000_SBR_GOT_U15_W
- -- : BFD_RELOC_C6000_SBR_GOT_L16_W
- -- : BFD_RELOC_C6000_SBR_GOT_H16_W
- -- : BFD_RELOC_C6000_DSBT_INDEX
- -- : BFD_RELOC_C6000_PREL31
- -- : BFD_RELOC_C6000_COPY
- -- : BFD_RELOC_C6000_JUMP_SLOT
- -- : BFD_RELOC_C6000_EHTYPE
- -- : BFD_RELOC_C6000_PCR_H16
- -- : BFD_RELOC_C6000_PCR_L16
- -- : BFD_RELOC_C6000_ALIGN
- -- : BFD_RELOC_C6000_FPHEAD
- -- : BFD_RELOC_C6000_NOCMP
- TMS320C6000 relocations.
- -- : BFD_RELOC_FR30_48
- This is a 48 bit reloc for the FR30 that stores 32 bits.
- -- : BFD_RELOC_FR30_20
- This is a 32 bit reloc for the FR30 that stores 20 bits split up
- into two sections.
- -- : BFD_RELOC_FR30_6_IN_4
- This is a 16 bit reloc for the FR30 that stores a 6 bit word offset
- in 4 bits.
- -- : BFD_RELOC_FR30_8_IN_8
- This is a 16 bit reloc for the FR30 that stores an 8 bit byte
- offset into 8 bits.
- -- : BFD_RELOC_FR30_9_IN_8
- This is a 16 bit reloc for the FR30 that stores a 9 bit short
- offset into 8 bits.
- -- : BFD_RELOC_FR30_10_IN_8
- This is a 16 bit reloc for the FR30 that stores a 10 bit word
- offset into 8 bits.
- -- : BFD_RELOC_FR30_9_PCREL
- This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
- short offset into 8 bits.
- -- : BFD_RELOC_FR30_12_PCREL
- This is a 16 bit reloc for the FR30 that stores a 12 bit pc
- relative short offset into 11 bits.
- -- : BFD_RELOC_MCORE_PCREL_IMM8BY4
- -- : BFD_RELOC_MCORE_PCREL_IMM11BY2
- -- : BFD_RELOC_MCORE_PCREL_IMM4BY2
- -- : BFD_RELOC_MCORE_PCREL_32
- -- : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
- -- : BFD_RELOC_MCORE_RVA
- Motorola Mcore relocations.
- -- : BFD_RELOC_MEP_8
- -- : BFD_RELOC_MEP_16
- -- : BFD_RELOC_MEP_32
- -- : BFD_RELOC_MEP_PCREL8A2
- -- : BFD_RELOC_MEP_PCREL12A2
- -- : BFD_RELOC_MEP_PCREL17A2
- -- : BFD_RELOC_MEP_PCREL24A2
- -- : BFD_RELOC_MEP_PCABS24A2
- -- : BFD_RELOC_MEP_LOW16
- -- : BFD_RELOC_MEP_HI16U
- -- : BFD_RELOC_MEP_HI16S
- -- : BFD_RELOC_MEP_GPREL
- -- : BFD_RELOC_MEP_TPREL
- -- : BFD_RELOC_MEP_TPREL7
- -- : BFD_RELOC_MEP_TPREL7A2
- -- : BFD_RELOC_MEP_TPREL7A4
- -- : BFD_RELOC_MEP_UIMM24
- -- : BFD_RELOC_MEP_ADDR24A4
- -- : BFD_RELOC_MEP_GNU_VTINHERIT
- -- : BFD_RELOC_MEP_GNU_VTENTRY
- Toshiba Media Processor Relocations.
- -- : BFD_RELOC_METAG_HIADDR16
- -- : BFD_RELOC_METAG_LOADDR16
- -- : BFD_RELOC_METAG_RELBRANCH
- -- : BFD_RELOC_METAG_GETSETOFF
- -- : BFD_RELOC_METAG_HIOG
- -- : BFD_RELOC_METAG_LOOG
- -- : BFD_RELOC_METAG_REL8
- -- : BFD_RELOC_METAG_REL16
- -- : BFD_RELOC_METAG_HI16_GOTOFF
- -- : BFD_RELOC_METAG_LO16_GOTOFF
- -- : BFD_RELOC_METAG_GETSET_GOTOFF
- -- : BFD_RELOC_METAG_GETSET_GOT
- -- : BFD_RELOC_METAG_HI16_GOTPC
- -- : BFD_RELOC_METAG_LO16_GOTPC
- -- : BFD_RELOC_METAG_HI16_PLT
- -- : BFD_RELOC_METAG_LO16_PLT
- -- : BFD_RELOC_METAG_RELBRANCH_PLT
- -- : BFD_RELOC_METAG_GOTOFF
- -- : BFD_RELOC_METAG_PLT
- -- : BFD_RELOC_METAG_COPY
- -- : BFD_RELOC_METAG_JMP_SLOT
- -- : BFD_RELOC_METAG_RELATIVE
- -- : BFD_RELOC_METAG_GLOB_DAT
- -- : BFD_RELOC_METAG_TLS_GD
- -- : BFD_RELOC_METAG_TLS_LDM
- -- : BFD_RELOC_METAG_TLS_LDO_HI16
- -- : BFD_RELOC_METAG_TLS_LDO_LO16
- -- : BFD_RELOC_METAG_TLS_LDO
- -- : BFD_RELOC_METAG_TLS_IE
- -- : BFD_RELOC_METAG_TLS_IENONPIC
- -- : BFD_RELOC_METAG_TLS_IENONPIC_HI16
- -- : BFD_RELOC_METAG_TLS_IENONPIC_LO16
- -- : BFD_RELOC_METAG_TLS_TPOFF
- -- : BFD_RELOC_METAG_TLS_DTPMOD
- -- : BFD_RELOC_METAG_TLS_DTPOFF
- -- : BFD_RELOC_METAG_TLS_LE
- -- : BFD_RELOC_METAG_TLS_LE_HI16
- -- : BFD_RELOC_METAG_TLS_LE_LO16
- Imagination Technologies Meta relocations.
- -- : BFD_RELOC_MMIX_GETA
- -- : BFD_RELOC_MMIX_GETA_1
- -- : BFD_RELOC_MMIX_GETA_2
- -- : BFD_RELOC_MMIX_GETA_3
- These are relocations for the GETA instruction.
- -- : BFD_RELOC_MMIX_CBRANCH
- -- : BFD_RELOC_MMIX_CBRANCH_J
- -- : BFD_RELOC_MMIX_CBRANCH_1
- -- : BFD_RELOC_MMIX_CBRANCH_2
- -- : BFD_RELOC_MMIX_CBRANCH_3
- These are relocations for a conditional branch instruction.
- -- : BFD_RELOC_MMIX_PUSHJ
- -- : BFD_RELOC_MMIX_PUSHJ_1
- -- : BFD_RELOC_MMIX_PUSHJ_2
- -- : BFD_RELOC_MMIX_PUSHJ_3
- -- : BFD_RELOC_MMIX_PUSHJ_STUBBABLE
- These are relocations for the PUSHJ instruction.
- -- : BFD_RELOC_MMIX_JMP
- -- : BFD_RELOC_MMIX_JMP_1
- -- : BFD_RELOC_MMIX_JMP_2
- -- : BFD_RELOC_MMIX_JMP_3
- These are relocations for the JMP instruction.
- -- : BFD_RELOC_MMIX_ADDR19
- This is a relocation for a relative address as in a GETA
- instruction or a branch.
- -- : BFD_RELOC_MMIX_ADDR27
- This is a relocation for a relative address as in a JMP
- instruction.
- -- : BFD_RELOC_MMIX_REG_OR_BYTE
- This is a relocation for an instruction field that may be a general
- register or a value 0..255.
- -- : BFD_RELOC_MMIX_REG
- This is a relocation for an instruction field that may be a general
- register.
- -- : BFD_RELOC_MMIX_BASE_PLUS_OFFSET
- This is a relocation for two instruction fields holding a register
- and an offset, the equivalent of the relocation.
- -- : BFD_RELOC_MMIX_LOCAL
- This relocation is an assertion that the expression is not
- allocated as a global register. It does not modify contents.
- -- : BFD_RELOC_AVR_7_PCREL
- This is a 16 bit reloc for the AVR that stores 8 bit pc relative
- short offset into 7 bits.
- -- : BFD_RELOC_AVR_13_PCREL
- This is a 16 bit reloc for the AVR that stores 13 bit pc relative
- short offset into 12 bits.
- -- : BFD_RELOC_AVR_16_PM
- This is a 16 bit reloc for the AVR that stores 17 bit value
- (usually program memory address) into 16 bits.
- -- : BFD_RELOC_AVR_LO8_LDI
- This is a 16 bit reloc for the AVR that stores 8 bit value (usually
- data memory address) into 8 bit immediate value of LDI insn.
- -- : BFD_RELOC_AVR_HI8_LDI
- This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
- bit of data memory address) into 8 bit immediate value of LDI insn.
- -- : BFD_RELOC_AVR_HH8_LDI
- This is a 16 bit reloc for the AVR that stores 8 bit value (most
- high 8 bit of program memory address) into 8 bit immediate value of
- LDI insn.
- -- : BFD_RELOC_AVR_MS8_LDI
- This is a 16 bit reloc for the AVR that stores 8 bit value (most
- high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
- -- : BFD_RELOC_AVR_LO8_LDI_NEG
- This is a 16 bit reloc for the AVR that stores negated 8 bit value
- (usually data memory address) into 8 bit immediate value of SUBI
- insn.
- -- : BFD_RELOC_AVR_HI8_LDI_NEG
- This is a 16 bit reloc for the AVR that stores negated 8 bit value
- (high 8 bit of data memory address) into 8 bit immediate value of
- SUBI insn.
- -- : BFD_RELOC_AVR_HH8_LDI_NEG
- This is a 16 bit reloc for the AVR that stores negated 8 bit value
- (most high 8 bit of program memory address) into 8 bit immediate
- value of LDI or SUBI insn.
- -- : BFD_RELOC_AVR_MS8_LDI_NEG
- This is a 16 bit reloc for the AVR that stores negated 8 bit value
- (msb of 32 bit value) into 8 bit immediate value of LDI insn.
- -- : BFD_RELOC_AVR_LO8_LDI_PM
- This is a 16 bit reloc for the AVR that stores 8 bit value (usually
- command address) into 8 bit immediate value of LDI insn.
- -- : BFD_RELOC_AVR_LO8_LDI_GS
- This is a 16 bit reloc for the AVR that stores 8 bit value (command
- address) into 8 bit immediate value of LDI insn. If the address is
- beyond the 128k boundary, the linker inserts a jump stub for this
- reloc in the lower 128k.
- -- : BFD_RELOC_AVR_HI8_LDI_PM
- This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
- bit of command address) into 8 bit immediate value of LDI insn.
- -- : BFD_RELOC_AVR_HI8_LDI_GS
- This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
- bit of command address) into 8 bit immediate value of LDI insn. If
- the address is beyond the 128k boundary, the linker inserts a jump
- stub for this reloc below 128k.
- -- : BFD_RELOC_AVR_HH8_LDI_PM
- This is a 16 bit reloc for the AVR that stores 8 bit value (most
- high 8 bit of command address) into 8 bit immediate value of LDI
- insn.
- -- : BFD_RELOC_AVR_LO8_LDI_PM_NEG
- This is a 16 bit reloc for the AVR that stores negated 8 bit value
- (usually command address) into 8 bit immediate value of SUBI insn.
- -- : BFD_RELOC_AVR_HI8_LDI_PM_NEG
- This is a 16 bit reloc for the AVR that stores negated 8 bit value
- (high 8 bit of 16 bit command address) into 8 bit immediate value
- of SUBI insn.
- -- : BFD_RELOC_AVR_HH8_LDI_PM_NEG
- This is a 16 bit reloc for the AVR that stores negated 8 bit value
- (high 6 bit of 22 bit command address) into 8 bit immediate value
- of SUBI insn.
- -- : BFD_RELOC_AVR_CALL
- This is a 32 bit reloc for the AVR that stores 23 bit value into 22
- bits.
- -- : BFD_RELOC_AVR_LDI
- This is a 16 bit reloc for the AVR that stores all needed bits for
- absolute addressing with ldi with overflow check to linktime
- -- : BFD_RELOC_AVR_6
- This is a 6 bit reloc for the AVR that stores offset for ldd/std
- instructions
- -- : BFD_RELOC_AVR_6_ADIW
- This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
- instructions
- -- : BFD_RELOC_AVR_8_LO
- This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
- in .byte lo8(symbol)
- -- : BFD_RELOC_AVR_8_HI
- This is a 8 bit reloc for the AVR that stores bits 8..15 of a
- symbol in .byte hi8(symbol)
- -- : BFD_RELOC_AVR_8_HLO
- This is a 8 bit reloc for the AVR that stores bits 16..23 of a
- symbol in .byte hlo8(symbol)
- -- : BFD_RELOC_AVR_DIFF8
- -- : BFD_RELOC_AVR_DIFF16
- -- : BFD_RELOC_AVR_DIFF32
- AVR relocations to mark the difference of two local symbols. These
- are only needed to support linker relaxation and can be ignored
- when not relaxing. The field is set to the value of the difference
- assuming no relaxation. The relocation encodes the position of the
- second symbol so the linker can determine whether to adjust the
- field value.
- -- : BFD_RELOC_AVR_LDS_STS_16
- This is a 7 bit reloc for the AVR that stores SRAM address for
- 16bit lds and sts instructions supported only tiny core.
- -- : BFD_RELOC_AVR_PORT6
- This is a 6 bit reloc for the AVR that stores an I/O register
- number for the IN and OUT instructions
- -- : BFD_RELOC_AVR_PORT5
- This is a 5 bit reloc for the AVR that stores an I/O register
- number for the SBIC, SBIS, SBI and CBI instructions
- -- : BFD_RELOC_RISCV_HI20
- -- : BFD_RELOC_RISCV_PCREL_HI20
- -- : BFD_RELOC_RISCV_PCREL_LO12_I
- -- : BFD_RELOC_RISCV_PCREL_LO12_S
- -- : BFD_RELOC_RISCV_LO12_I
- -- : BFD_RELOC_RISCV_LO12_S
- -- : BFD_RELOC_RISCV_GPREL12_I
- -- : BFD_RELOC_RISCV_GPREL12_S
- -- : BFD_RELOC_RISCV_TPREL_HI20
- -- : BFD_RELOC_RISCV_TPREL_LO12_I
- -- : BFD_RELOC_RISCV_TPREL_LO12_S
- -- : BFD_RELOC_RISCV_TPREL_ADD
- -- : BFD_RELOC_RISCV_CALL
- -- : BFD_RELOC_RISCV_CALL_PLT
- -- : BFD_RELOC_RISCV_ADD8
- -- : BFD_RELOC_RISCV_ADD16
- -- : BFD_RELOC_RISCV_ADD32
- -- : BFD_RELOC_RISCV_ADD64
- -- : BFD_RELOC_RISCV_SUB8
- -- : BFD_RELOC_RISCV_SUB16
- -- : BFD_RELOC_RISCV_SUB32
- -- : BFD_RELOC_RISCV_SUB64
- -- : BFD_RELOC_RISCV_GOT_HI20
- -- : BFD_RELOC_RISCV_TLS_GOT_HI20
- -- : BFD_RELOC_RISCV_TLS_GD_HI20
- -- : BFD_RELOC_RISCV_JMP
- -- : BFD_RELOC_RISCV_TLS_DTPMOD32
- -- : BFD_RELOC_RISCV_TLS_DTPREL32
- -- : BFD_RELOC_RISCV_TLS_DTPMOD64
- -- : BFD_RELOC_RISCV_TLS_DTPREL64
- -- : BFD_RELOC_RISCV_TLS_TPREL32
- -- : BFD_RELOC_RISCV_TLS_TPREL64
- -- : BFD_RELOC_RISCV_ALIGN
- -- : BFD_RELOC_RISCV_RVC_BRANCH
- -- : BFD_RELOC_RISCV_RVC_JUMP
- -- : BFD_RELOC_RISCV_RVC_LUI
- -- : BFD_RELOC_RISCV_GPREL_I
- -- : BFD_RELOC_RISCV_GPREL_S
- -- : BFD_RELOC_RISCV_TPREL_I
- -- : BFD_RELOC_RISCV_TPREL_S
- -- : BFD_RELOC_RISCV_RELAX
- -- : BFD_RELOC_RISCV_CFA
- -- : BFD_RELOC_RISCV_SUB6
- -- : BFD_RELOC_RISCV_SET6
- -- : BFD_RELOC_RISCV_SET8
- -- : BFD_RELOC_RISCV_SET16
- -- : BFD_RELOC_RISCV_SET32
- -- : BFD_RELOC_RISCV_32_PCREL
- RISC-V relocations.
- -- : BFD_RELOC_RL78_NEG8
- -- : BFD_RELOC_RL78_NEG16
- -- : BFD_RELOC_RL78_NEG24
- -- : BFD_RELOC_RL78_NEG32
- -- : BFD_RELOC_RL78_16_OP
- -- : BFD_RELOC_RL78_24_OP
- -- : BFD_RELOC_RL78_32_OP
- -- : BFD_RELOC_RL78_8U
- -- : BFD_RELOC_RL78_16U
- -- : BFD_RELOC_RL78_24U
- -- : BFD_RELOC_RL78_DIR3U_PCREL
- -- : BFD_RELOC_RL78_DIFF
- -- : BFD_RELOC_RL78_GPRELB
- -- : BFD_RELOC_RL78_GPRELW
- -- : BFD_RELOC_RL78_GPRELL
- -- : BFD_RELOC_RL78_SYM
- -- : BFD_RELOC_RL78_OP_SUBTRACT
- -- : BFD_RELOC_RL78_OP_NEG
- -- : BFD_RELOC_RL78_OP_AND
- -- : BFD_RELOC_RL78_OP_SHRA
- -- : BFD_RELOC_RL78_ABS8
- -- : BFD_RELOC_RL78_ABS16
- -- : BFD_RELOC_RL78_ABS16_REV
- -- : BFD_RELOC_RL78_ABS32
- -- : BFD_RELOC_RL78_ABS32_REV
- -- : BFD_RELOC_RL78_ABS16U
- -- : BFD_RELOC_RL78_ABS16UW
- -- : BFD_RELOC_RL78_ABS16UL
- -- : BFD_RELOC_RL78_RELAX
- -- : BFD_RELOC_RL78_HI16
- -- : BFD_RELOC_RL78_HI8
- -- : BFD_RELOC_RL78_LO16
- -- : BFD_RELOC_RL78_CODE
- -- : BFD_RELOC_RL78_SADDR
- Renesas RL78 Relocations.
- -- : BFD_RELOC_RX_NEG8
- -- : BFD_RELOC_RX_NEG16
- -- : BFD_RELOC_RX_NEG24
- -- : BFD_RELOC_RX_NEG32
- -- : BFD_RELOC_RX_16_OP
- -- : BFD_RELOC_RX_24_OP
- -- : BFD_RELOC_RX_32_OP
- -- : BFD_RELOC_RX_8U
- -- : BFD_RELOC_RX_16U
- -- : BFD_RELOC_RX_24U
- -- : BFD_RELOC_RX_DIR3U_PCREL
- -- : BFD_RELOC_RX_DIFF
- -- : BFD_RELOC_RX_GPRELB
- -- : BFD_RELOC_RX_GPRELW
- -- : BFD_RELOC_RX_GPRELL
- -- : BFD_RELOC_RX_SYM
- -- : BFD_RELOC_RX_OP_SUBTRACT
- -- : BFD_RELOC_RX_OP_NEG
- -- : BFD_RELOC_RX_ABS8
- -- : BFD_RELOC_RX_ABS16
- -- : BFD_RELOC_RX_ABS16_REV
- -- : BFD_RELOC_RX_ABS32
- -- : BFD_RELOC_RX_ABS32_REV
- -- : BFD_RELOC_RX_ABS16U
- -- : BFD_RELOC_RX_ABS16UW
- -- : BFD_RELOC_RX_ABS16UL
- -- : BFD_RELOC_RX_RELAX
- Renesas RX Relocations.
- -- : BFD_RELOC_390_12
- Direct 12 bit.
- -- : BFD_RELOC_390_GOT12
- 12 bit GOT offset.
- -- : BFD_RELOC_390_PLT32
- 32 bit PC relative PLT address.
- -- : BFD_RELOC_390_COPY
- Copy symbol at runtime.
- -- : BFD_RELOC_390_GLOB_DAT
- Create GOT entry.
- -- : BFD_RELOC_390_JMP_SLOT
- Create PLT entry.
- -- : BFD_RELOC_390_RELATIVE
- Adjust by program base.
- -- : BFD_RELOC_390_GOTPC
- 32 bit PC relative offset to GOT.
- -- : BFD_RELOC_390_GOT16
- 16 bit GOT offset.
- -- : BFD_RELOC_390_PC12DBL
- PC relative 12 bit shifted by 1.
- -- : BFD_RELOC_390_PLT12DBL
- 12 bit PC rel. PLT shifted by 1.
- -- : BFD_RELOC_390_PC16DBL
- PC relative 16 bit shifted by 1.
- -- : BFD_RELOC_390_PLT16DBL
- 16 bit PC rel. PLT shifted by 1.
- -- : BFD_RELOC_390_PC24DBL
- PC relative 24 bit shifted by 1.
- -- : BFD_RELOC_390_PLT24DBL
- 24 bit PC rel. PLT shifted by 1.
- -- : BFD_RELOC_390_PC32DBL
- PC relative 32 bit shifted by 1.
- -- : BFD_RELOC_390_PLT32DBL
- 32 bit PC rel. PLT shifted by 1.
- -- : BFD_RELOC_390_GOTPCDBL
- 32 bit PC rel. GOT shifted by 1.
- -- : BFD_RELOC_390_GOT64
- 64 bit GOT offset.
- -- : BFD_RELOC_390_PLT64
- 64 bit PC relative PLT address.
- -- : BFD_RELOC_390_GOTENT
- 32 bit rel. offset to GOT entry.
- -- : BFD_RELOC_390_GOTOFF64
- 64 bit offset to GOT.
- -- : BFD_RELOC_390_GOTPLT12
- 12-bit offset to symbol-entry within GOT, with PLT handling.
- -- : BFD_RELOC_390_GOTPLT16
- 16-bit offset to symbol-entry within GOT, with PLT handling.
- -- : BFD_RELOC_390_GOTPLT32
- 32-bit offset to symbol-entry within GOT, with PLT handling.
- -- : BFD_RELOC_390_GOTPLT64
- 64-bit offset to symbol-entry within GOT, with PLT handling.
- -- : BFD_RELOC_390_GOTPLTENT
- 32-bit rel. offset to symbol-entry within GOT, with PLT handling.
- -- : BFD_RELOC_390_PLTOFF16
- 16-bit rel. offset from the GOT to a PLT entry.
- -- : BFD_RELOC_390_PLTOFF32
- 32-bit rel. offset from the GOT to a PLT entry.
- -- : BFD_RELOC_390_PLTOFF64
- 64-bit rel. offset from the GOT to a PLT entry.
- -- : BFD_RELOC_390_TLS_LOAD
- -- : BFD_RELOC_390_TLS_GDCALL
- -- : BFD_RELOC_390_TLS_LDCALL
- -- : BFD_RELOC_390_TLS_GD32
- -- : BFD_RELOC_390_TLS_GD64
- -- : BFD_RELOC_390_TLS_GOTIE12
- -- : BFD_RELOC_390_TLS_GOTIE32
- -- : BFD_RELOC_390_TLS_GOTIE64
- -- : BFD_RELOC_390_TLS_LDM32
- -- : BFD_RELOC_390_TLS_LDM64
- -- : BFD_RELOC_390_TLS_IE32
- -- : BFD_RELOC_390_TLS_IE64
- -- : BFD_RELOC_390_TLS_IEENT
- -- : BFD_RELOC_390_TLS_LE32
- -- : BFD_RELOC_390_TLS_LE64
- -- : BFD_RELOC_390_TLS_LDO32
- -- : BFD_RELOC_390_TLS_LDO64
- -- : BFD_RELOC_390_TLS_DTPMOD
- -- : BFD_RELOC_390_TLS_DTPOFF
- -- : BFD_RELOC_390_TLS_TPOFF
- s390 tls relocations.
- -- : BFD_RELOC_390_20
- -- : BFD_RELOC_390_GOT20
- -- : BFD_RELOC_390_GOTPLT20
- -- : BFD_RELOC_390_TLS_GOTIE20
- Long displacement extension.
- -- : BFD_RELOC_390_IRELATIVE
- STT_GNU_IFUNC relocation.
- -- : BFD_RELOC_SCORE_GPREL15
- Score relocations Low 16 bit for load/store
- -- : BFD_RELOC_SCORE_DUMMY2
- -- : BFD_RELOC_SCORE_JMP
- This is a 24-bit reloc with the right 1 bit assumed to be 0
- -- : BFD_RELOC_SCORE_BRANCH
- This is a 19-bit reloc with the right 1 bit assumed to be 0
- -- : BFD_RELOC_SCORE_IMM30
- This is a 32-bit reloc for 48-bit instructions.
- -- : BFD_RELOC_SCORE_IMM32
- This is a 32-bit reloc for 48-bit instructions.
- -- : BFD_RELOC_SCORE16_JMP
- This is a 11-bit reloc with the right 1 bit assumed to be 0
- -- : BFD_RELOC_SCORE16_BRANCH
- This is a 8-bit reloc with the right 1 bit assumed to be 0
- -- : BFD_RELOC_SCORE_BCMP
- This is a 9-bit reloc with the right 1 bit assumed to be 0
- -- : BFD_RELOC_SCORE_GOT15
- -- : BFD_RELOC_SCORE_GOT_LO16
- -- : BFD_RELOC_SCORE_CALL15
- -- : BFD_RELOC_SCORE_DUMMY_HI16
- Undocumented Score relocs
- -- : BFD_RELOC_IP2K_FR9
- Scenix IP2K - 9-bit register number / data address
- -- : BFD_RELOC_IP2K_BANK
- Scenix IP2K - 4-bit register/data bank number
- -- : BFD_RELOC_IP2K_ADDR16CJP
- Scenix IP2K - low 13 bits of instruction word address
- -- : BFD_RELOC_IP2K_PAGE3
- Scenix IP2K - high 3 bits of instruction word address
- -- : BFD_RELOC_IP2K_LO8DATA
- -- : BFD_RELOC_IP2K_HI8DATA
- -- : BFD_RELOC_IP2K_EX8DATA
- Scenix IP2K - ext/low/high 8 bits of data address
- -- : BFD_RELOC_IP2K_LO8INSN
- -- : BFD_RELOC_IP2K_HI8INSN
- Scenix IP2K - low/high 8 bits of instruction word address
- -- : BFD_RELOC_IP2K_PC_SKIP
- Scenix IP2K - even/odd PC modifier to modify snb pcl.0
- -- : BFD_RELOC_IP2K_TEXT
- Scenix IP2K - 16 bit word address in text section.
- -- : BFD_RELOC_IP2K_FR_OFFSET
- Scenix IP2K - 7-bit sp or dp offset
- -- : BFD_RELOC_VPE4KMATH_DATA
- -- : BFD_RELOC_VPE4KMATH_INSN
- Scenix VPE4K coprocessor - data/insn-space addressing
- -- : BFD_RELOC_VTABLE_INHERIT
- -- : BFD_RELOC_VTABLE_ENTRY
- These two relocations are used by the linker to determine which of
- the entries in a C++ virtual function table are actually used.
- When the -gc-sections option is given, the linker will zero out the
- entries that are not used, so that the code for those functions
- need not be included in the output.
- VTABLE_INHERIT is a zero-space relocation used to describe to the
- linker the inheritance tree of a C++ virtual function table. The
- relocation's symbol should be the parent class' vtable, and the
- relocation should be located at the child vtable.
- VTABLE_ENTRY is a zero-space relocation that describes the use of a
- virtual function table entry. The reloc's symbol should refer to
- the table of the class mentioned in the code. Off of that base, an
- offset describes the entry that is being used. For Rela hosts,
- this offset is stored in the reloc's addend. For Rel hosts, we are
- forced to put this offset in the reloc's section offset.
- -- : BFD_RELOC_IA64_IMM14
- -- : BFD_RELOC_IA64_IMM22
- -- : BFD_RELOC_IA64_IMM64
- -- : BFD_RELOC_IA64_DIR32MSB
- -- : BFD_RELOC_IA64_DIR32LSB
- -- : BFD_RELOC_IA64_DIR64MSB
- -- : BFD_RELOC_IA64_DIR64LSB
- -- : BFD_RELOC_IA64_GPREL22
- -- : BFD_RELOC_IA64_GPREL64I
- -- : BFD_RELOC_IA64_GPREL32MSB
- -- : BFD_RELOC_IA64_GPREL32LSB
- -- : BFD_RELOC_IA64_GPREL64MSB
- -- : BFD_RELOC_IA64_GPREL64LSB
- -- : BFD_RELOC_IA64_LTOFF22
- -- : BFD_RELOC_IA64_LTOFF64I
- -- : BFD_RELOC_IA64_PLTOFF22
- -- : BFD_RELOC_IA64_PLTOFF64I
- -- : BFD_RELOC_IA64_PLTOFF64MSB
- -- : BFD_RELOC_IA64_PLTOFF64LSB
- -- : BFD_RELOC_IA64_FPTR64I
- -- : BFD_RELOC_IA64_FPTR32MSB
- -- : BFD_RELOC_IA64_FPTR32LSB
- -- : BFD_RELOC_IA64_FPTR64MSB
- -- : BFD_RELOC_IA64_FPTR64LSB
- -- : BFD_RELOC_IA64_PCREL21B
- -- : BFD_RELOC_IA64_PCREL21BI
- -- : BFD_RELOC_IA64_PCREL21M
- -- : BFD_RELOC_IA64_PCREL21F
- -- : BFD_RELOC_IA64_PCREL22
- -- : BFD_RELOC_IA64_PCREL60B
- -- : BFD_RELOC_IA64_PCREL64I
- -- : BFD_RELOC_IA64_PCREL32MSB
- -- : BFD_RELOC_IA64_PCREL32LSB
- -- : BFD_RELOC_IA64_PCREL64MSB
- -- : BFD_RELOC_IA64_PCREL64LSB
- -- : BFD_RELOC_IA64_LTOFF_FPTR22
- -- : BFD_RELOC_IA64_LTOFF_FPTR64I
- -- : BFD_RELOC_IA64_LTOFF_FPTR32MSB
- -- : BFD_RELOC_IA64_LTOFF_FPTR32LSB
- -- : BFD_RELOC_IA64_LTOFF_FPTR64MSB
- -- : BFD_RELOC_IA64_LTOFF_FPTR64LSB
- -- : BFD_RELOC_IA64_SEGREL32MSB
- -- : BFD_RELOC_IA64_SEGREL32LSB
- -- : BFD_RELOC_IA64_SEGREL64MSB
- -- : BFD_RELOC_IA64_SEGREL64LSB
- -- : BFD_RELOC_IA64_SECREL32MSB
- -- : BFD_RELOC_IA64_SECREL32LSB
- -- : BFD_RELOC_IA64_SECREL64MSB
- -- : BFD_RELOC_IA64_SECREL64LSB
- -- : BFD_RELOC_IA64_REL32MSB
- -- : BFD_RELOC_IA64_REL32LSB
- -- : BFD_RELOC_IA64_REL64MSB
- -- : BFD_RELOC_IA64_REL64LSB
- -- : BFD_RELOC_IA64_LTV32MSB
- -- : BFD_RELOC_IA64_LTV32LSB
- -- : BFD_RELOC_IA64_LTV64MSB
- -- : BFD_RELOC_IA64_LTV64LSB
- -- : BFD_RELOC_IA64_IPLTMSB
- -- : BFD_RELOC_IA64_IPLTLSB
- -- : BFD_RELOC_IA64_COPY
- -- : BFD_RELOC_IA64_LTOFF22X
- -- : BFD_RELOC_IA64_LDXMOV
- -- : BFD_RELOC_IA64_TPREL14
- -- : BFD_RELOC_IA64_TPREL22
- -- : BFD_RELOC_IA64_TPREL64I
- -- : BFD_RELOC_IA64_TPREL64MSB
- -- : BFD_RELOC_IA64_TPREL64LSB
- -- : BFD_RELOC_IA64_LTOFF_TPREL22
- -- : BFD_RELOC_IA64_DTPMOD64MSB
- -- : BFD_RELOC_IA64_DTPMOD64LSB
- -- : BFD_RELOC_IA64_LTOFF_DTPMOD22
- -- : BFD_RELOC_IA64_DTPREL14
- -- : BFD_RELOC_IA64_DTPREL22
- -- : BFD_RELOC_IA64_DTPREL64I
- -- : BFD_RELOC_IA64_DTPREL32MSB
- -- : BFD_RELOC_IA64_DTPREL32LSB
- -- : BFD_RELOC_IA64_DTPREL64MSB
- -- : BFD_RELOC_IA64_DTPREL64LSB
- -- : BFD_RELOC_IA64_LTOFF_DTPREL22
- Intel IA64 Relocations.
- -- : BFD_RELOC_M68HC11_HI8
- Motorola 68HC11 reloc. This is the 8 bit high part of an absolute
- address.
- -- : BFD_RELOC_M68HC11_LO8
- Motorola 68HC11 reloc. This is the 8 bit low part of an absolute
- address.
- -- : BFD_RELOC_M68HC11_3B
- Motorola 68HC11 reloc. This is the 3 bit of a value.
- -- : BFD_RELOC_M68HC11_RL_JUMP
- Motorola 68HC11 reloc. This reloc marks the beginning of a
- jump/call instruction. It is used for linker relaxation to
- correctly identify beginning of instruction and change some
- branches to use PC-relative addressing mode.
- -- : BFD_RELOC_M68HC11_RL_GROUP
- Motorola 68HC11 reloc. This reloc marks a group of several
- instructions that gcc generates and for which the linker relaxation
- pass can modify and/or remove some of them.
- -- : BFD_RELOC_M68HC11_LO16
- Motorola 68HC11 reloc. This is the 16-bit lower part of an
- address. It is used for 'call' instruction to specify the symbol
- address without any special transformation (due to memory bank
- window).
- -- : BFD_RELOC_M68HC11_PAGE
- Motorola 68HC11 reloc. This is a 8-bit reloc that specifies the
- page number of an address. It is used by 'call' instruction to
- specify the page number of the symbol.
- -- : BFD_RELOC_M68HC11_24
- Motorola 68HC11 reloc. This is a 24-bit reloc that represents the
- address with a 16-bit value and a 8-bit page number. The symbol
- address is transformed to follow the 16K memory bank of 68HC12
- (seen as mapped in the window).
- -- : BFD_RELOC_M68HC12_5B
- Motorola 68HC12 reloc. This is the 5 bits of a value.
- -- : BFD_RELOC_XGATE_RL_JUMP
- Freescale XGATE reloc. This reloc marks the beginning of a bra/jal
- instruction.
- -- : BFD_RELOC_XGATE_RL_GROUP
- Freescale XGATE reloc. This reloc marks a group of several
- instructions that gcc generates and for which the linker relaxation
- pass can modify and/or remove some of them.
- -- : BFD_RELOC_XGATE_LO16
- Freescale XGATE reloc. This is the 16-bit lower part of an
- address. It is used for the '16-bit' instructions.
- -- : BFD_RELOC_XGATE_GPAGE
- Freescale XGATE reloc.
- -- : BFD_RELOC_XGATE_24
- Freescale XGATE reloc.
- -- : BFD_RELOC_XGATE_PCREL_9
- Freescale XGATE reloc. This is a 9-bit pc-relative reloc.
- -- : BFD_RELOC_XGATE_PCREL_10
- Freescale XGATE reloc. This is a 10-bit pc-relative reloc.
- -- : BFD_RELOC_XGATE_IMM8_LO
- Freescale XGATE reloc. This is the 16-bit lower part of an
- address. It is used for the '16-bit' instructions.
- -- : BFD_RELOC_XGATE_IMM8_HI
- Freescale XGATE reloc. This is the 16-bit higher part of an
- address. It is used for the '16-bit' instructions.
- -- : BFD_RELOC_XGATE_IMM3
- Freescale XGATE reloc. This is a 3-bit pc-relative reloc.
- -- : BFD_RELOC_XGATE_IMM4
- Freescale XGATE reloc. This is a 4-bit pc-relative reloc.
- -- : BFD_RELOC_XGATE_IMM5
- Freescale XGATE reloc. This is a 5-bit pc-relative reloc.
- -- : BFD_RELOC_M68HC12_9B
- Motorola 68HC12 reloc. This is the 9 bits of a value.
- -- : BFD_RELOC_M68HC12_16B
- Motorola 68HC12 reloc. This is the 16 bits of a value.
- -- : BFD_RELOC_M68HC12_9_PCREL
- Motorola 68HC12/XGATE reloc. This is a PCREL9 branch.
- -- : BFD_RELOC_M68HC12_10_PCREL
- Motorola 68HC12/XGATE reloc. This is a PCREL10 branch.
- -- : BFD_RELOC_M68HC12_LO8XG
- Motorola 68HC12/XGATE reloc. This is the 8 bit low part of an
- absolute address and immediately precedes a matching HI8XG part.
- -- : BFD_RELOC_M68HC12_HI8XG
- Motorola 68HC12/XGATE reloc. This is the 8 bit high part of an
- absolute address and immediately follows a matching LO8XG part.
- -- : BFD_RELOC_S12Z_15_PCREL
- Freescale S12Z reloc. This is a 15 bit relative address. If the
- most significant bits are all zero then it may be truncated to 8
- bits.
- -- : BFD_RELOC_CR16_NUM8
- -- : BFD_RELOC_CR16_NUM16
- -- : BFD_RELOC_CR16_NUM32
- -- : BFD_RELOC_CR16_NUM32a
- -- : BFD_RELOC_CR16_REGREL0
- -- : BFD_RELOC_CR16_REGREL4
- -- : BFD_RELOC_CR16_REGREL4a
- -- : BFD_RELOC_CR16_REGREL14
- -- : BFD_RELOC_CR16_REGREL14a
- -- : BFD_RELOC_CR16_REGREL16
- -- : BFD_RELOC_CR16_REGREL20
- -- : BFD_RELOC_CR16_REGREL20a
- -- : BFD_RELOC_CR16_ABS20
- -- : BFD_RELOC_CR16_ABS24
- -- : BFD_RELOC_CR16_IMM4
- -- : BFD_RELOC_CR16_IMM8
- -- : BFD_RELOC_CR16_IMM16
- -- : BFD_RELOC_CR16_IMM20
- -- : BFD_RELOC_CR16_IMM24
- -- : BFD_RELOC_CR16_IMM32
- -- : BFD_RELOC_CR16_IMM32a
- -- : BFD_RELOC_CR16_DISP4
- -- : BFD_RELOC_CR16_DISP8
- -- : BFD_RELOC_CR16_DISP16
- -- : BFD_RELOC_CR16_DISP20
- -- : BFD_RELOC_CR16_DISP24
- -- : BFD_RELOC_CR16_DISP24a
- -- : BFD_RELOC_CR16_SWITCH8
- -- : BFD_RELOC_CR16_SWITCH16
- -- : BFD_RELOC_CR16_SWITCH32
- -- : BFD_RELOC_CR16_GOT_REGREL20
- -- : BFD_RELOC_CR16_GOTC_REGREL20
- -- : BFD_RELOC_CR16_GLOB_DAT
- NS CR16 Relocations.
- -- : BFD_RELOC_CRX_REL4
- -- : BFD_RELOC_CRX_REL8
- -- : BFD_RELOC_CRX_REL8_CMP
- -- : BFD_RELOC_CRX_REL16
- -- : BFD_RELOC_CRX_REL24
- -- : BFD_RELOC_CRX_REL32
- -- : BFD_RELOC_CRX_REGREL12
- -- : BFD_RELOC_CRX_REGREL22
- -- : BFD_RELOC_CRX_REGREL28
- -- : BFD_RELOC_CRX_REGREL32
- -- : BFD_RELOC_CRX_ABS16
- -- : BFD_RELOC_CRX_ABS32
- -- : BFD_RELOC_CRX_NUM8
- -- : BFD_RELOC_CRX_NUM16
- -- : BFD_RELOC_CRX_NUM32
- -- : BFD_RELOC_CRX_IMM16
- -- : BFD_RELOC_CRX_IMM32
- -- : BFD_RELOC_CRX_SWITCH8
- -- : BFD_RELOC_CRX_SWITCH16
- -- : BFD_RELOC_CRX_SWITCH32
- NS CRX Relocations.
- -- : BFD_RELOC_CRIS_BDISP8
- -- : BFD_RELOC_CRIS_UNSIGNED_5
- -- : BFD_RELOC_CRIS_SIGNED_6
- -- : BFD_RELOC_CRIS_UNSIGNED_6
- -- : BFD_RELOC_CRIS_SIGNED_8
- -- : BFD_RELOC_CRIS_UNSIGNED_8
- -- : BFD_RELOC_CRIS_SIGNED_16
- -- : BFD_RELOC_CRIS_UNSIGNED_16
- -- : BFD_RELOC_CRIS_LAPCQ_OFFSET
- -- : BFD_RELOC_CRIS_UNSIGNED_4
- These relocs are only used within the CRIS assembler. They are not
- (at present) written to any object files.
- -- : BFD_RELOC_CRIS_COPY
- -- : BFD_RELOC_CRIS_GLOB_DAT
- -- : BFD_RELOC_CRIS_JUMP_SLOT
- -- : BFD_RELOC_CRIS_RELATIVE
- Relocs used in ELF shared libraries for CRIS.
- -- : BFD_RELOC_CRIS_32_GOT
- 32-bit offset to symbol-entry within GOT.
- -- : BFD_RELOC_CRIS_16_GOT
- 16-bit offset to symbol-entry within GOT.
- -- : BFD_RELOC_CRIS_32_GOTPLT
- 32-bit offset to symbol-entry within GOT, with PLT handling.
- -- : BFD_RELOC_CRIS_16_GOTPLT
- 16-bit offset to symbol-entry within GOT, with PLT handling.
- -- : BFD_RELOC_CRIS_32_GOTREL
- 32-bit offset to symbol, relative to GOT.
- -- : BFD_RELOC_CRIS_32_PLT_GOTREL
- 32-bit offset to symbol with PLT entry, relative to GOT.
- -- : BFD_RELOC_CRIS_32_PLT_PCREL
- 32-bit offset to symbol with PLT entry, relative to this
- relocation.
- -- : BFD_RELOC_CRIS_32_GOT_GD
- -- : BFD_RELOC_CRIS_16_GOT_GD
- -- : BFD_RELOC_CRIS_32_GD
- -- : BFD_RELOC_CRIS_DTP
- -- : BFD_RELOC_CRIS_32_DTPREL
- -- : BFD_RELOC_CRIS_16_DTPREL
- -- : BFD_RELOC_CRIS_32_GOT_TPREL
- -- : BFD_RELOC_CRIS_16_GOT_TPREL
- -- : BFD_RELOC_CRIS_32_TPREL
- -- : BFD_RELOC_CRIS_16_TPREL
- -- : BFD_RELOC_CRIS_DTPMOD
- -- : BFD_RELOC_CRIS_32_IE
- Relocs used in TLS code for CRIS.
- -- : BFD_RELOC_OR1K_REL_26
- -- : BFD_RELOC_OR1K_SLO16
- -- : BFD_RELOC_OR1K_PCREL_PG21
- -- : BFD_RELOC_OR1K_LO13
- -- : BFD_RELOC_OR1K_SLO13
- -- : BFD_RELOC_OR1K_GOTPC_HI16
- -- : BFD_RELOC_OR1K_GOTPC_LO16
- -- : BFD_RELOC_OR1K_GOT16
- -- : BFD_RELOC_OR1K_GOT_PG21
- -- : BFD_RELOC_OR1K_GOT_LO13
- -- : BFD_RELOC_OR1K_PLT26
- -- : BFD_RELOC_OR1K_PLTA26
- -- : BFD_RELOC_OR1K_GOTOFF_SLO16
- -- : BFD_RELOC_OR1K_COPY
- -- : BFD_RELOC_OR1K_GLOB_DAT
- -- : BFD_RELOC_OR1K_JMP_SLOT
- -- : BFD_RELOC_OR1K_RELATIVE
- -- : BFD_RELOC_OR1K_TLS_GD_HI16
- -- : BFD_RELOC_OR1K_TLS_GD_LO16
- -- : BFD_RELOC_OR1K_TLS_GD_PG21
- -- : BFD_RELOC_OR1K_TLS_GD_LO13
- -- : BFD_RELOC_OR1K_TLS_LDM_HI16
- -- : BFD_RELOC_OR1K_TLS_LDM_LO16
- -- : BFD_RELOC_OR1K_TLS_LDM_PG21
- -- : BFD_RELOC_OR1K_TLS_LDM_LO13
- -- : BFD_RELOC_OR1K_TLS_LDO_HI16
- -- : BFD_RELOC_OR1K_TLS_LDO_LO16
- -- : BFD_RELOC_OR1K_TLS_IE_HI16
- -- : BFD_RELOC_OR1K_TLS_IE_AHI16
- -- : BFD_RELOC_OR1K_TLS_IE_LO16
- -- : BFD_RELOC_OR1K_TLS_IE_PG21
- -- : BFD_RELOC_OR1K_TLS_IE_LO13
- -- : BFD_RELOC_OR1K_TLS_LE_HI16
- -- : BFD_RELOC_OR1K_TLS_LE_AHI16
- -- : BFD_RELOC_OR1K_TLS_LE_LO16
- -- : BFD_RELOC_OR1K_TLS_LE_SLO16
- -- : BFD_RELOC_OR1K_TLS_TPOFF
- -- : BFD_RELOC_OR1K_TLS_DTPOFF
- -- : BFD_RELOC_OR1K_TLS_DTPMOD
- OpenRISC 1000 Relocations.
- -- : BFD_RELOC_H8_DIR16A8
- -- : BFD_RELOC_H8_DIR16R8
- -- : BFD_RELOC_H8_DIR24A8
- -- : BFD_RELOC_H8_DIR24R8
- -- : BFD_RELOC_H8_DIR32A16
- -- : BFD_RELOC_H8_DISP32A16
- H8 elf Relocations.
- -- : BFD_RELOC_XSTORMY16_REL_12
- -- : BFD_RELOC_XSTORMY16_12
- -- : BFD_RELOC_XSTORMY16_24
- -- : BFD_RELOC_XSTORMY16_FPTR16
- Sony Xstormy16 Relocations.
- -- : BFD_RELOC_RELC
- Self-describing complex relocations.
- -- : BFD_RELOC_XC16X_PAG
- -- : BFD_RELOC_XC16X_POF
- -- : BFD_RELOC_XC16X_SEG
- -- : BFD_RELOC_XC16X_SOF
- Infineon Relocations.
- -- : BFD_RELOC_VAX_GLOB_DAT
- -- : BFD_RELOC_VAX_JMP_SLOT
- -- : BFD_RELOC_VAX_RELATIVE
- Relocations used by VAX ELF.
- -- : BFD_RELOC_MT_PC16
- Morpho MT - 16 bit immediate relocation.
- -- : BFD_RELOC_MT_HI16
- Morpho MT - Hi 16 bits of an address.
- -- : BFD_RELOC_MT_LO16
- Morpho MT - Low 16 bits of an address.
- -- : BFD_RELOC_MT_GNU_VTINHERIT
- Morpho MT - Used to tell the linker which vtable entries are used.
- -- : BFD_RELOC_MT_GNU_VTENTRY
- Morpho MT - Used to tell the linker which vtable entries are used.
- -- : BFD_RELOC_MT_PCINSN8
- Morpho MT - 8 bit immediate relocation.
- -- : BFD_RELOC_MSP430_10_PCREL
- -- : BFD_RELOC_MSP430_16_PCREL
- -- : BFD_RELOC_MSP430_16
- -- : BFD_RELOC_MSP430_16_PCREL_BYTE
- -- : BFD_RELOC_MSP430_16_BYTE
- -- : BFD_RELOC_MSP430_2X_PCREL
- -- : BFD_RELOC_MSP430_RL_PCREL
- -- : BFD_RELOC_MSP430_ABS8
- -- : BFD_RELOC_MSP430X_PCR20_EXT_SRC
- -- : BFD_RELOC_MSP430X_PCR20_EXT_DST
- -- : BFD_RELOC_MSP430X_PCR20_EXT_ODST
- -- : BFD_RELOC_MSP430X_ABS20_EXT_SRC
- -- : BFD_RELOC_MSP430X_ABS20_EXT_DST
- -- : BFD_RELOC_MSP430X_ABS20_EXT_ODST
- -- : BFD_RELOC_MSP430X_ABS20_ADR_SRC
- -- : BFD_RELOC_MSP430X_ABS20_ADR_DST
- -- : BFD_RELOC_MSP430X_PCR16
- -- : BFD_RELOC_MSP430X_PCR20_CALL
- -- : BFD_RELOC_MSP430X_ABS16
- -- : BFD_RELOC_MSP430_ABS_HI16
- -- : BFD_RELOC_MSP430_PREL31
- -- : BFD_RELOC_MSP430_SYM_DIFF
- msp430 specific relocation codes
- -- : BFD_RELOC_NIOS2_S16
- -- : BFD_RELOC_NIOS2_U16
- -- : BFD_RELOC_NIOS2_CALL26
- -- : BFD_RELOC_NIOS2_IMM5
- -- : BFD_RELOC_NIOS2_CACHE_OPX
- -- : BFD_RELOC_NIOS2_IMM6
- -- : BFD_RELOC_NIOS2_IMM8
- -- : BFD_RELOC_NIOS2_HI16
- -- : BFD_RELOC_NIOS2_LO16
- -- : BFD_RELOC_NIOS2_HIADJ16
- -- : BFD_RELOC_NIOS2_GPREL
- -- : BFD_RELOC_NIOS2_UJMP
- -- : BFD_RELOC_NIOS2_CJMP
- -- : BFD_RELOC_NIOS2_CALLR
- -- : BFD_RELOC_NIOS2_ALIGN
- -- : BFD_RELOC_NIOS2_GOT16
- -- : BFD_RELOC_NIOS2_CALL16
- -- : BFD_RELOC_NIOS2_GOTOFF_LO
- -- : BFD_RELOC_NIOS2_GOTOFF_HA
- -- : BFD_RELOC_NIOS2_PCREL_LO
- -- : BFD_RELOC_NIOS2_PCREL_HA
- -- : BFD_RELOC_NIOS2_TLS_GD16
- -- : BFD_RELOC_NIOS2_TLS_LDM16
- -- : BFD_RELOC_NIOS2_TLS_LDO16
- -- : BFD_RELOC_NIOS2_TLS_IE16
- -- : BFD_RELOC_NIOS2_TLS_LE16
- -- : BFD_RELOC_NIOS2_TLS_DTPMOD
- -- : BFD_RELOC_NIOS2_TLS_DTPREL
- -- : BFD_RELOC_NIOS2_TLS_TPREL
- -- : BFD_RELOC_NIOS2_COPY
- -- : BFD_RELOC_NIOS2_GLOB_DAT
- -- : BFD_RELOC_NIOS2_JUMP_SLOT
- -- : BFD_RELOC_NIOS2_RELATIVE
- -- : BFD_RELOC_NIOS2_GOTOFF
- -- : BFD_RELOC_NIOS2_CALL26_NOAT
- -- : BFD_RELOC_NIOS2_GOT_LO
- -- : BFD_RELOC_NIOS2_GOT_HA
- -- : BFD_RELOC_NIOS2_CALL_LO
- -- : BFD_RELOC_NIOS2_CALL_HA
- -- : BFD_RELOC_NIOS2_R2_S12
- -- : BFD_RELOC_NIOS2_R2_I10_1_PCREL
- -- : BFD_RELOC_NIOS2_R2_T1I7_1_PCREL
- -- : BFD_RELOC_NIOS2_R2_T1I7_2
- -- : BFD_RELOC_NIOS2_R2_T2I4
- -- : BFD_RELOC_NIOS2_R2_T2I4_1
- -- : BFD_RELOC_NIOS2_R2_T2I4_2
- -- : BFD_RELOC_NIOS2_R2_X1I7_2
- -- : BFD_RELOC_NIOS2_R2_X2L5
- -- : BFD_RELOC_NIOS2_R2_F1I5_2
- -- : BFD_RELOC_NIOS2_R2_L5I4X1
- -- : BFD_RELOC_NIOS2_R2_T1X1I6
- -- : BFD_RELOC_NIOS2_R2_T1X1I6_2
- Relocations used by the Altera Nios II core.
- -- : BFD_RELOC_PRU_U16
- PRU LDI 16-bit unsigned data-memory relocation.
- -- : BFD_RELOC_PRU_U16_PMEMIMM
- PRU LDI 16-bit unsigned instruction-memory relocation.
- -- : BFD_RELOC_PRU_LDI32
- PRU relocation for two consecutive LDI load instructions that load
- a 32 bit value into a register. If the higher bits are all zero,
- then the second instruction may be relaxed.
- -- : BFD_RELOC_PRU_S10_PCREL
- PRU QBBx 10-bit signed PC-relative relocation.
- -- : BFD_RELOC_PRU_U8_PCREL
- PRU 8-bit unsigned relocation used for the LOOP instruction.
- -- : BFD_RELOC_PRU_32_PMEM
- -- : BFD_RELOC_PRU_16_PMEM
- PRU Program Memory relocations. Used to convert from byte
- addressing to 32-bit word addressing.
- -- : BFD_RELOC_PRU_GNU_DIFF8
- -- : BFD_RELOC_PRU_GNU_DIFF16
- -- : BFD_RELOC_PRU_GNU_DIFF32
- -- : BFD_RELOC_PRU_GNU_DIFF16_PMEM
- -- : BFD_RELOC_PRU_GNU_DIFF32_PMEM
- PRU relocations to mark the difference of two local symbols. These
- are only needed to support linker relaxation and can be ignored
- when not relaxing. The field is set to the value of the difference
- assuming no relaxation. The relocation encodes the position of the
- second symbol so the linker can determine whether to adjust the
- field value. The PMEM variants encode the word difference, instead
- of byte difference between symbols.
- -- : BFD_RELOC_IQ2000_OFFSET_16
- -- : BFD_RELOC_IQ2000_OFFSET_21
- -- : BFD_RELOC_IQ2000_UHI16
- IQ2000 Relocations.
- -- : BFD_RELOC_XTENSA_RTLD
- Special Xtensa relocation used only by PLT entries in ELF shared
- objects to indicate that the runtime linker should set the value to
- one of its own internal functions or data structures.
- -- : BFD_RELOC_XTENSA_GLOB_DAT
- -- : BFD_RELOC_XTENSA_JMP_SLOT
- -- : BFD_RELOC_XTENSA_RELATIVE
- Xtensa relocations for ELF shared objects.
- -- : BFD_RELOC_XTENSA_PLT
- Xtensa relocation used in ELF object files for symbols that may
- require PLT entries. Otherwise, this is just a generic 32-bit
- relocation.
- -- : BFD_RELOC_XTENSA_DIFF8
- -- : BFD_RELOC_XTENSA_DIFF16
- -- : BFD_RELOC_XTENSA_DIFF32
- Xtensa relocations to mark the difference of two local symbols.
- These are only needed to support linker relaxation and can be
- ignored when not relaxing. The field is set to the value of the
- difference assuming no relaxation. The relocation encodes the
- position of the first symbol so the linker can determine whether to
- adjust the field value.
- -- : BFD_RELOC_XTENSA_SLOT0_OP
- -- : BFD_RELOC_XTENSA_SLOT1_OP
- -- : BFD_RELOC_XTENSA_SLOT2_OP
- -- : BFD_RELOC_XTENSA_SLOT3_OP
- -- : BFD_RELOC_XTENSA_SLOT4_OP
- -- : BFD_RELOC_XTENSA_SLOT5_OP
- -- : BFD_RELOC_XTENSA_SLOT6_OP
- -- : BFD_RELOC_XTENSA_SLOT7_OP
- -- : BFD_RELOC_XTENSA_SLOT8_OP
- -- : BFD_RELOC_XTENSA_SLOT9_OP
- -- : BFD_RELOC_XTENSA_SLOT10_OP
- -- : BFD_RELOC_XTENSA_SLOT11_OP
- -- : BFD_RELOC_XTENSA_SLOT12_OP
- -- : BFD_RELOC_XTENSA_SLOT13_OP
- -- : BFD_RELOC_XTENSA_SLOT14_OP
- Generic Xtensa relocations for instruction operands. Only the slot
- number is encoded in the relocation. The relocation applies to the
- last PC-relative immediate operand, or if there are no PC-relative
- immediates, to the last immediate operand.
- -- : BFD_RELOC_XTENSA_SLOT0_ALT
- -- : BFD_RELOC_XTENSA_SLOT1_ALT
- -- : BFD_RELOC_XTENSA_SLOT2_ALT
- -- : BFD_RELOC_XTENSA_SLOT3_ALT
- -- : BFD_RELOC_XTENSA_SLOT4_ALT
- -- : BFD_RELOC_XTENSA_SLOT5_ALT
- -- : BFD_RELOC_XTENSA_SLOT6_ALT
- -- : BFD_RELOC_XTENSA_SLOT7_ALT
- -- : BFD_RELOC_XTENSA_SLOT8_ALT
- -- : BFD_RELOC_XTENSA_SLOT9_ALT
- -- : BFD_RELOC_XTENSA_SLOT10_ALT
- -- : BFD_RELOC_XTENSA_SLOT11_ALT
- -- : BFD_RELOC_XTENSA_SLOT12_ALT
- -- : BFD_RELOC_XTENSA_SLOT13_ALT
- -- : BFD_RELOC_XTENSA_SLOT14_ALT
- Alternate Xtensa relocations. Only the slot is encoded in the
- relocation. The meaning of these relocations is opcode-specific.
- -- : BFD_RELOC_XTENSA_OP0
- -- : BFD_RELOC_XTENSA_OP1
- -- : BFD_RELOC_XTENSA_OP2
- Xtensa relocations for backward compatibility. These have all been
- replaced by BFD_RELOC_XTENSA_SLOT0_OP.
- -- : BFD_RELOC_XTENSA_ASM_EXPAND
- Xtensa relocation to mark that the assembler expanded the
- instructions from an original target. The expansion size is
- encoded in the reloc size.
- -- : BFD_RELOC_XTENSA_ASM_SIMPLIFY
- Xtensa relocation to mark that the linker should simplify
- assembler-expanded instructions. This is commonly used internally
- by the linker after analysis of a BFD_RELOC_XTENSA_ASM_EXPAND.
- -- : BFD_RELOC_XTENSA_TLSDESC_FN
- -- : BFD_RELOC_XTENSA_TLSDESC_ARG
- -- : BFD_RELOC_XTENSA_TLS_DTPOFF
- -- : BFD_RELOC_XTENSA_TLS_TPOFF
- -- : BFD_RELOC_XTENSA_TLS_FUNC
- -- : BFD_RELOC_XTENSA_TLS_ARG
- -- : BFD_RELOC_XTENSA_TLS_CALL
- Xtensa TLS relocations.
- -- : BFD_RELOC_Z80_DISP8
- 8 bit signed offset in (ix+d) or (iy+d).
- -- : BFD_RELOC_Z8K_DISP7
- DJNZ offset.
- -- : BFD_RELOC_Z8K_CALLR
- CALR offset.
- -- : BFD_RELOC_Z8K_IMM4L
- 4 bit value.
- -- : BFD_RELOC_LM32_CALL
- -- : BFD_RELOC_LM32_BRANCH
- -- : BFD_RELOC_LM32_16_GOT
- -- : BFD_RELOC_LM32_GOTOFF_HI16
- -- : BFD_RELOC_LM32_GOTOFF_LO16
- -- : BFD_RELOC_LM32_COPY
- -- : BFD_RELOC_LM32_GLOB_DAT
- -- : BFD_RELOC_LM32_JMP_SLOT
- -- : BFD_RELOC_LM32_RELATIVE
- Lattice Mico32 relocations.
- -- : BFD_RELOC_MACH_O_SECTDIFF
- Difference between two section addreses. Must be followed by a
- BFD_RELOC_MACH_O_PAIR.
- -- : BFD_RELOC_MACH_O_LOCAL_SECTDIFF
- Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.
- -- : BFD_RELOC_MACH_O_PAIR
- Pair of relocation. Contains the first symbol.
- -- : BFD_RELOC_MACH_O_SUBTRACTOR32
- Symbol will be substracted. Must be followed by a BFD_RELOC_32.
- -- : BFD_RELOC_MACH_O_SUBTRACTOR64
- Symbol will be substracted. Must be followed by a BFD_RELOC_64.
- -- : BFD_RELOC_MACH_O_X86_64_BRANCH32
- -- : BFD_RELOC_MACH_O_X86_64_BRANCH8
- PCREL relocations. They are marked as branch to create PLT entry
- if required.
- -- : BFD_RELOC_MACH_O_X86_64_GOT
- Used when referencing a GOT entry.
- -- : BFD_RELOC_MACH_O_X86_64_GOT_LOAD
- Used when loading a GOT entry with movq. It is specially marked so
- that the linker could optimize the movq to a leaq if possible.
- -- : BFD_RELOC_MACH_O_X86_64_PCREL32_1
- Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
- -- : BFD_RELOC_MACH_O_X86_64_PCREL32_2
- Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
- -- : BFD_RELOC_MACH_O_X86_64_PCREL32_4
- Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
- -- : BFD_RELOC_MACH_O_X86_64_TLV
- Used when referencing a TLV entry.
- -- : BFD_RELOC_MACH_O_ARM64_ADDEND
- Addend for PAGE or PAGEOFF.
- -- : BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21
- Relative offset to page of GOT slot.
- -- : BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12
- Relative offset within page of GOT slot.
- -- : BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT
- Address of a GOT entry.
- -- : BFD_RELOC_MICROBLAZE_32_LO
- This is a 32 bit reloc for the microblaze that stores the low 16
- bits of a value
- -- : BFD_RELOC_MICROBLAZE_32_LO_PCREL
- This is a 32 bit pc-relative reloc for the microblaze that stores
- the low 16 bits of a value
- -- : BFD_RELOC_MICROBLAZE_32_ROSDA
- This is a 32 bit reloc for the microblaze that stores a value
- relative to the read-only small data area anchor
- -- : BFD_RELOC_MICROBLAZE_32_RWSDA
- This is a 32 bit reloc for the microblaze that stores a value
- relative to the read-write small data area anchor
- -- : BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
- This is a 32 bit reloc for the microblaze to handle expressions of
- the form "Symbol Op Symbol"
- -- : BFD_RELOC_MICROBLAZE_64_NONE
- This is a 64 bit reloc that stores the 32 bit pc relative value in
- two words (with an imm instruction). No relocation is done here -
- only used for relaxing
- -- : BFD_RELOC_MICROBLAZE_64_GOTPC
- This is a 64 bit reloc that stores the 32 bit pc relative value in
- two words (with an imm instruction). The relocation is PC-relative
- GOT offset
- -- : BFD_RELOC_MICROBLAZE_64_GOT
- This is a 64 bit reloc that stores the 32 bit pc relative value in
- two words (with an imm instruction). The relocation is GOT offset
- -- : BFD_RELOC_MICROBLAZE_64_PLT
- This is a 64 bit reloc that stores the 32 bit pc relative value in
- two words (with an imm instruction). The relocation is PC-relative
- offset into PLT
- -- : BFD_RELOC_MICROBLAZE_64_GOTOFF
- This is a 64 bit reloc that stores the 32 bit GOT relative value in
- two words (with an imm instruction). The relocation is relative
- offset from _GLOBAL_OFFSET_TABLE_
- -- : BFD_RELOC_MICROBLAZE_32_GOTOFF
- This is a 32 bit reloc that stores the 32 bit GOT relative value in
- a word. The relocation is relative offset from
- -- : BFD_RELOC_MICROBLAZE_COPY
- This is used to tell the dynamic linker to copy the value out of
- the dynamic object into the runtime process image.
- -- : BFD_RELOC_MICROBLAZE_64_TLS
- Unused Reloc
- -- : BFD_RELOC_MICROBLAZE_64_TLSGD
- This is a 64 bit reloc that stores the 32 bit GOT relative value of
- the GOT TLS GD info entry in two words (with an imm instruction).
- The relocation is GOT offset.
- -- : BFD_RELOC_MICROBLAZE_64_TLSLD
- This is a 64 bit reloc that stores the 32 bit GOT relative value of
- the GOT TLS LD info entry in two words (with an imm instruction).
- The relocation is GOT offset.
- -- : BFD_RELOC_MICROBLAZE_32_TLSDTPMOD
- This is a 32 bit reloc that stores the Module ID to GOT(n).
- -- : BFD_RELOC_MICROBLAZE_32_TLSDTPREL
- This is a 32 bit reloc that stores TLS offset to GOT(n+1).
- -- : BFD_RELOC_MICROBLAZE_64_TLSDTPREL
- This is a 32 bit reloc for storing TLS offset to two words (uses
- imm instruction)
- -- : BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
- This is a 64 bit reloc that stores 32-bit thread pointer relative
- offset to two words (uses imm instruction).
- -- : BFD_RELOC_MICROBLAZE_64_TLSTPREL
- This is a 64 bit reloc that stores 32-bit thread pointer relative
- offset to two words (uses imm instruction).
- -- : BFD_RELOC_MICROBLAZE_64_TEXTPCREL
- This is a 64 bit reloc that stores the 32 bit pc relative value in
- two words (with an imm instruction). The relocation is PC-relative
- offset from start of TEXT.
- -- : BFD_RELOC_MICROBLAZE_64_TEXTREL
- This is a 64 bit reloc that stores the 32 bit offset value in two
- words (with an imm instruction). The relocation is relative offset
- from start of TEXT.
- -- : BFD_RELOC_AARCH64_RELOC_START
- AArch64 pseudo relocation code to mark the start of the AArch64
- relocation enumerators. N.B. the order of the enumerators is
- important as several tables in the AArch64 bfd backend are indexed
- by these enumerators; make sure they are all synced.
- -- : BFD_RELOC_AARCH64_NULL
- Deprecated AArch64 null relocation code.
- -- : BFD_RELOC_AARCH64_NONE
- AArch64 null relocation code.
- -- : BFD_RELOC_AARCH64_64
- -- : BFD_RELOC_AARCH64_32
- -- : BFD_RELOC_AARCH64_16
- Basic absolute relocations of N bits. These are equivalent to
- BFD_RELOC_N and they were added to assist the indexing of the howto
- table.
- -- : BFD_RELOC_AARCH64_64_PCREL
- -- : BFD_RELOC_AARCH64_32_PCREL
- -- : BFD_RELOC_AARCH64_16_PCREL
- PC-relative relocations. These are equivalent to BFD_RELOC_N_PCREL
- and they were added to assist the indexing of the howto table.
- -- : BFD_RELOC_AARCH64_MOVW_G0
- AArch64 MOV[NZK] instruction with most significant bits 0 to 15 of
- an unsigned address/value.
- -- : BFD_RELOC_AARCH64_MOVW_G0_NC
- AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
- an address/value. No overflow checking.
- -- : BFD_RELOC_AARCH64_MOVW_G1
- AArch64 MOV[NZK] instruction with most significant bits 16 to 31 of
- an unsigned address/value.
- -- : BFD_RELOC_AARCH64_MOVW_G1_NC
- AArch64 MOV[NZK] instruction with less significant bits 16 to 31 of
- an address/value. No overflow checking.
- -- : BFD_RELOC_AARCH64_MOVW_G2
- AArch64 MOV[NZK] instruction with most significant bits 32 to 47 of
- an unsigned address/value.
- -- : BFD_RELOC_AARCH64_MOVW_G2_NC
- AArch64 MOV[NZK] instruction with less significant bits 32 to 47 of
- an address/value. No overflow checking.
- -- : BFD_RELOC_AARCH64_MOVW_G3
- AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 of
- a signed or unsigned address/value.
- -- : BFD_RELOC_AARCH64_MOVW_G0_S
- AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
- signed value. Changes instruction to MOVZ or MOVN depending on the
- value's sign.
- -- : BFD_RELOC_AARCH64_MOVW_G1_S
- AArch64 MOV[NZ] instruction with most significant bits 16 to 31 of
- a signed value. Changes instruction to MOVZ or MOVN depending on
- the value's sign.
- -- : BFD_RELOC_AARCH64_MOVW_G2_S
- AArch64 MOV[NZ] instruction with most significant bits 32 to 47 of
- a signed value. Changes instruction to MOVZ or MOVN depending on
- the value's sign.
- -- : BFD_RELOC_AARCH64_MOVW_PREL_G0
- AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
- signed value. Changes instruction to MOVZ or MOVN depending on the
- value's sign.
- -- : BFD_RELOC_AARCH64_MOVW_PREL_G0_NC
- AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
- signed value. Changes instruction to MOVZ or MOVN depending on the
- value's sign.
- -- : BFD_RELOC_AARCH64_MOVW_PREL_G1
- AArch64 MOVK instruction with most significant bits 16 to 31 of a
- signed value.
- -- : BFD_RELOC_AARCH64_MOVW_PREL_G1_NC
- AArch64 MOVK instruction with most significant bits 16 to 31 of a
- signed value.
- -- : BFD_RELOC_AARCH64_MOVW_PREL_G2
- AArch64 MOVK instruction with most significant bits 32 to 47 of a
- signed value.
- -- : BFD_RELOC_AARCH64_MOVW_PREL_G2_NC
- AArch64 MOVK instruction with most significant bits 32 to 47 of a
- signed value.
- -- : BFD_RELOC_AARCH64_MOVW_PREL_G3
- AArch64 MOVK instruction with most significant bits 47 to 63 of a
- signed value.
- -- : BFD_RELOC_AARCH64_LD_LO19_PCREL
- AArch64 Load Literal instruction, holding a 19 bit pc-relative word
- offset. The lowest two bits must be zero and are not stored in the
- instruction, giving a 21 bit signed byte offset.
- -- : BFD_RELOC_AARCH64_ADR_LO21_PCREL
- AArch64 ADR instruction, holding a simple 21 bit pc-relative byte
- offset.
- -- : BFD_RELOC_AARCH64_ADR_HI21_PCREL
- AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
- offset, giving a 4KB aligned page base address.
- -- : BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL
- AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
- offset, giving a 4KB aligned page base address, but with no
- overflow checking.
- -- : BFD_RELOC_AARCH64_ADD_LO12
- AArch64 ADD immediate instruction, holding bits 0 to 11 of the
- address. Used in conjunction with
- BFD_RELOC_AARCH64_ADR_HI21_PCREL.
- -- : BFD_RELOC_AARCH64_LDST8_LO12
- AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
- address. Used in conjunction with
- BFD_RELOC_AARCH64_ADR_HI21_PCREL.
- -- : BFD_RELOC_AARCH64_TSTBR14
- AArch64 14 bit pc-relative test bit and branch. The lowest two
- bits must be zero and are not stored in the instruction, giving a
- 16 bit signed byte offset.
- -- : BFD_RELOC_AARCH64_BRANCH19
- AArch64 19 bit pc-relative conditional branch and compare & branch.
- The lowest two bits must be zero and are not stored in the
- instruction, giving a 21 bit signed byte offset.
- -- : BFD_RELOC_AARCH64_JUMP26
- AArch64 26 bit pc-relative unconditional branch. The lowest two
- bits must be zero and are not stored in the instruction, giving a
- 28 bit signed byte offset.
- -- : BFD_RELOC_AARCH64_CALL26
- AArch64 26 bit pc-relative unconditional branch and link. The
- lowest two bits must be zero and are not stored in the instruction,
- giving a 28 bit signed byte offset.
- -- : BFD_RELOC_AARCH64_LDST16_LO12
- AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
- address. Used in conjunction with
- BFD_RELOC_AARCH64_ADR_HI21_PCREL.
- -- : BFD_RELOC_AARCH64_LDST32_LO12
- AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
- address. Used in conjunction with
- BFD_RELOC_AARCH64_ADR_HI21_PCREL.
- -- : BFD_RELOC_AARCH64_LDST64_LO12
- AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
- address. Used in conjunction with
- BFD_RELOC_AARCH64_ADR_HI21_PCREL.
- -- : BFD_RELOC_AARCH64_LDST128_LO12
- AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
- address. Used in conjunction with
- BFD_RELOC_AARCH64_ADR_HI21_PCREL.
- -- : BFD_RELOC_AARCH64_GOT_LD_PREL19
- AArch64 Load Literal instruction, holding a 19 bit PC relative word
- offset of the global offset table entry for a symbol. The lowest
- two bits must be zero and are not stored in the instruction, giving
- a 21 bit signed byte offset. This relocation type requires signed
- overflow checking.
- -- : BFD_RELOC_AARCH64_ADR_GOT_PAGE
- Get to the page base of the global offset table entry for a symbol
- as part of an ADRP instruction using a 21 bit PC relative
- value.Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
- -- : BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
- Unsigned 12 bit byte offset for 64 bit load/store from the page of
- the GOT entry for this symbol. Used in conjunction with
- BFD_RELOC_AARCH64_ADR_GOT_PAGE. Valid in LP64 ABI only.
- -- : BFD_RELOC_AARCH64_LD32_GOT_LO12_NC
- Unsigned 12 bit byte offset for 32 bit load/store from the page of
- the GOT entry for this symbol. Used in conjunction with
- BFD_RELOC_AARCH64_ADR_GOT_PAGE. Valid in ILP32 ABI only.
- -- : BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC
- Unsigned 16 bit byte offset for 64 bit load/store from the GOT
- entry for this symbol. Valid in LP64 ABI only.
- -- : BFD_RELOC_AARCH64_MOVW_GOTOFF_G1
- Unsigned 16 bit byte higher offset for 64 bit load/store from the
- GOT entry for this symbol. Valid in LP64 ABI only.
- -- : BFD_RELOC_AARCH64_LD64_GOTOFF_LO15
- Unsigned 15 bit byte offset for 64 bit load/store from the page of
- the GOT entry for this symbol. Valid in LP64 ABI only.
- -- : BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14
- Scaled 14 bit byte offset to the page base of the global offset
- table.
- -- : BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
- Scaled 15 bit byte offset to the page base of the global offset
- table.
- -- : BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
- Get to the page base of the global offset table entry for a symbols
- tls_index structure as part of an adrp instruction using a 21 bit
- PC relative value. Used in conjunction with
- BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
- -- : BFD_RELOC_AARCH64_TLSGD_ADR_PREL21
- AArch64 TLS General Dynamic
- -- : BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
- Unsigned 12 bit byte offset to global offset table entry for a
- symbols tls_index structure. Used in conjunction with
- BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
- -- : BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC
- AArch64 TLS General Dynamic relocation.
- -- : BFD_RELOC_AARCH64_TLSGD_MOVW_G1
- AArch64 TLS General Dynamic relocation.
- -- : BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
- AArch64 TLS INITIAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
- AArch64 TLS INITIAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC
- AArch64 TLS INITIAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19
- AArch64 TLS INITIAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
- AArch64 TLS INITIAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1
- AArch64 TLS INITIAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12
- bit[23:12] of byte offset to module TLS base address.
- -- : BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12
- Unsigned 12 bit byte offset to module TLS base address.
- -- : BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
- No overflow check version of
- BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
- -- : BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC
- Unsigned 12 bit byte offset to global offset table entry for a
- symbols tls_index structure. Used in conjunction with
- BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.
- -- : BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21
- GOT entry page address for AArch64 TLS Local Dynamic, used with
- ADRP instruction.
- -- : BFD_RELOC_AARCH64_TLSLD_ADR_PREL21
- GOT entry address for AArch64 TLS Local Dynamic, used with ADR
- instruction.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12
- bit[11:1] of byte offset to module TLS base address, encoded in
- ldst instructions.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no
- overflow check.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12
- bit[11:2] of byte offset to module TLS base address, encoded in
- ldst instructions.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no
- overflow check.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12
- bit[11:3] of byte offset to module TLS base address, encoded in
- ldst instructions.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no
- overflow check.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12
- bit[11:0] of byte offset to module TLS base address, encoded in
- ldst instructions.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no
- overflow check.
- -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
- bit[15:0] of byte offset to module TLS base address.
- -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
- No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
- -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
- bit[31:16] of byte offset to module TLS base address.
- -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
- No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
- -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2
- bit[47:32] of byte offset to module TLS base address.
- -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
- AArch64 TLS LOCAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
- AArch64 TLS LOCAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
- AArch64 TLS LOCAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0
- AArch64 TLS LOCAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
- AArch64 TLS LOCAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
- AArch64 TLS LOCAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12
- AArch64 TLS LOCAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
- AArch64 TLS LOCAL EXEC relocation.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12
- bit[11:1] of byte offset to module TLS base address, encoded in
- ldst instructions.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no
- overflow check.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12
- bit[11:2] of byte offset to module TLS base address, encoded in
- ldst instructions.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no
- overflow check.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12
- bit[11:3] of byte offset to module TLS base address, encoded in
- ldst instructions.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no
- overflow check.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12
- bit[11:0] of byte offset to module TLS base address, encoded in
- ldst instructions.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no
- overflow check.
- -- : BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_LD64_LO12
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_ADD_LO12
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G1
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_LDR
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_ADD
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC_CALL
- AArch64 TLS DESC relocation.
- -- : BFD_RELOC_AARCH64_COPY
- AArch64 TLS relocation.
- -- : BFD_RELOC_AARCH64_GLOB_DAT
- AArch64 TLS relocation.
- -- : BFD_RELOC_AARCH64_JUMP_SLOT
- AArch64 TLS relocation.
- -- : BFD_RELOC_AARCH64_RELATIVE
- AArch64 TLS relocation.
- -- : BFD_RELOC_AARCH64_TLS_DTPMOD
- AArch64 TLS relocation.
- -- : BFD_RELOC_AARCH64_TLS_DTPREL
- AArch64 TLS relocation.
- -- : BFD_RELOC_AARCH64_TLS_TPREL
- AArch64 TLS relocation.
- -- : BFD_RELOC_AARCH64_TLSDESC
- AArch64 TLS relocation.
- -- : BFD_RELOC_AARCH64_IRELATIVE
- AArch64 support for STT_GNU_IFUNC.
- -- : BFD_RELOC_AARCH64_RELOC_END
- AArch64 pseudo relocation code to mark the end of the AArch64
- relocation enumerators that have direct mapping to ELF reloc codes.
- There are a few more enumerators after this one; those are mainly
- used by the AArch64 assembler for the internal fixup or to select
- one of the above enumerators.
- -- : BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP
- AArch64 pseudo relocation code to be used internally by the AArch64
- assembler and not (currently) written to any object files.
- -- : BFD_RELOC_AARCH64_LDST_LO12
- AArch64 unspecified load/store instruction, holding bits 0 to 11 of
- the address. Used in conjunction with
- BFD_RELOC_AARCH64_ADR_HI21_PCREL.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12
- AArch64 pseudo relocation code for TLS local dynamic mode. It's to
- be used internally by the AArch64 assembler and not (currently)
- written to any object files.
- -- : BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no
- overflow check.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12
- AArch64 pseudo relocation code for TLS local exec mode. It's to be
- used internally by the AArch64 assembler and not (currently)
- written to any object files.
- -- : BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC
- Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow
- check.
- -- : BFD_RELOC_AARCH64_LD_GOT_LO12_NC
- AArch64 pseudo relocation code to be used internally by the AArch64
- assembler and not (currently) written to any object files.
- -- : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC
- AArch64 pseudo relocation code to be used internally by the AArch64
- assembler and not (currently) written to any object files.
- -- : BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC
- AArch64 pseudo relocation code to be used internally by the AArch64
- assembler and not (currently) written to any object files.
- -- : BFD_RELOC_TILEPRO_COPY
- -- : BFD_RELOC_TILEPRO_GLOB_DAT
- -- : BFD_RELOC_TILEPRO_JMP_SLOT
- -- : BFD_RELOC_TILEPRO_RELATIVE
- -- : BFD_RELOC_TILEPRO_BROFF_X1
- -- : BFD_RELOC_TILEPRO_JOFFLONG_X1
- -- : BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT
- -- : BFD_RELOC_TILEPRO_IMM8_X0
- -- : BFD_RELOC_TILEPRO_IMM8_Y0
- -- : BFD_RELOC_TILEPRO_IMM8_X1
- -- : BFD_RELOC_TILEPRO_IMM8_Y1
- -- : BFD_RELOC_TILEPRO_DEST_IMM8_X1
- -- : BFD_RELOC_TILEPRO_MT_IMM15_X1
- -- : BFD_RELOC_TILEPRO_MF_IMM15_X1
- -- : BFD_RELOC_TILEPRO_IMM16_X0
- -- : BFD_RELOC_TILEPRO_IMM16_X1
- -- : BFD_RELOC_TILEPRO_IMM16_X0_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X1_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X0_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X1_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X0_HA
- -- : BFD_RELOC_TILEPRO_IMM16_X1_HA
- -- : BFD_RELOC_TILEPRO_IMM16_X0_PCREL
- -- : BFD_RELOC_TILEPRO_IMM16_X1_PCREL
- -- : BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL
- -- : BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL
- -- : BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL
- -- : BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL
- -- : BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL
- -- : BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL
- -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT
- -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT
- -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA
- -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA
- -- : BFD_RELOC_TILEPRO_MMSTART_X0
- -- : BFD_RELOC_TILEPRO_MMEND_X0
- -- : BFD_RELOC_TILEPRO_MMSTART_X1
- -- : BFD_RELOC_TILEPRO_MMEND_X1
- -- : BFD_RELOC_TILEPRO_SHAMT_X0
- -- : BFD_RELOC_TILEPRO_SHAMT_X1
- -- : BFD_RELOC_TILEPRO_SHAMT_Y0
- -- : BFD_RELOC_TILEPRO_SHAMT_Y1
- -- : BFD_RELOC_TILEPRO_TLS_GD_CALL
- -- : BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD
- -- : BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD
- -- : BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD
- -- : BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD
- -- : BFD_RELOC_TILEPRO_TLS_IE_LOAD
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA
- -- : BFD_RELOC_TILEPRO_TLS_DTPMOD32
- -- : BFD_RELOC_TILEPRO_TLS_DTPOFF32
- -- : BFD_RELOC_TILEPRO_TLS_TPOFF32
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI
- -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA
- -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
- Tilera TILEPro Relocations.
- -- : BFD_RELOC_TILEGX_HW0
- -- : BFD_RELOC_TILEGX_HW1
- -- : BFD_RELOC_TILEGX_HW2
- -- : BFD_RELOC_TILEGX_HW3
- -- : BFD_RELOC_TILEGX_HW0_LAST
- -- : BFD_RELOC_TILEGX_HW1_LAST
- -- : BFD_RELOC_TILEGX_HW2_LAST
- -- : BFD_RELOC_TILEGX_COPY
- -- : BFD_RELOC_TILEGX_GLOB_DAT
- -- : BFD_RELOC_TILEGX_JMP_SLOT
- -- : BFD_RELOC_TILEGX_RELATIVE
- -- : BFD_RELOC_TILEGX_BROFF_X1
- -- : BFD_RELOC_TILEGX_JUMPOFF_X1
- -- : BFD_RELOC_TILEGX_JUMPOFF_X1_PLT
- -- : BFD_RELOC_TILEGX_IMM8_X0
- -- : BFD_RELOC_TILEGX_IMM8_Y0
- -- : BFD_RELOC_TILEGX_IMM8_X1
- -- : BFD_RELOC_TILEGX_IMM8_Y1
- -- : BFD_RELOC_TILEGX_DEST_IMM8_X1
- -- : BFD_RELOC_TILEGX_MT_IMM14_X1
- -- : BFD_RELOC_TILEGX_MF_IMM14_X1
- -- : BFD_RELOC_TILEGX_MMSTART_X0
- -- : BFD_RELOC_TILEGX_MMEND_X0
- -- : BFD_RELOC_TILEGX_SHAMT_X0
- -- : BFD_RELOC_TILEGX_SHAMT_X1
- -- : BFD_RELOC_TILEGX_SHAMT_Y0
- -- : BFD_RELOC_TILEGX_SHAMT_Y1
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW2
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW2
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW3
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW3
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE
- -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE
- -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE
- -- : BFD_RELOC_TILEGX_TLS_DTPMOD64
- -- : BFD_RELOC_TILEGX_TLS_DTPOFF64
- -- : BFD_RELOC_TILEGX_TLS_TPOFF64
- -- : BFD_RELOC_TILEGX_TLS_DTPMOD32
- -- : BFD_RELOC_TILEGX_TLS_DTPOFF32
- -- : BFD_RELOC_TILEGX_TLS_TPOFF32
- -- : BFD_RELOC_TILEGX_TLS_GD_CALL
- -- : BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD
- -- : BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD
- -- : BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD
- -- : BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD
- -- : BFD_RELOC_TILEGX_TLS_IE_LOAD
- -- : BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD
- -- : BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD
- -- : BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD
- -- : BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
- Tilera TILE-Gx Relocations.
- -- : BFD_RELOC_BPF_64
- -- : BFD_RELOC_BPF_32
- -- : BFD_RELOC_BPF_16
- -- : BFD_RELOC_BPF_DISP16
- -- : BFD_RELOC_BPF_DISP32
- Linux eBPF relocations.
- -- : BFD_RELOC_EPIPHANY_SIMM8
- Adapteva EPIPHANY - 8 bit signed pc-relative displacement
- -- : BFD_RELOC_EPIPHANY_SIMM24
- Adapteva EPIPHANY - 24 bit signed pc-relative displacement
- -- : BFD_RELOC_EPIPHANY_HIGH
- Adapteva EPIPHANY - 16 most-significant bits of absolute address
- -- : BFD_RELOC_EPIPHANY_LOW
- Adapteva EPIPHANY - 16 least-significant bits of absolute address
- -- : BFD_RELOC_EPIPHANY_SIMM11
- Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
- -- : BFD_RELOC_EPIPHANY_IMM11
- Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st
- displacement)
- -- : BFD_RELOC_EPIPHANY_IMM8
- Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
- -- : BFD_RELOC_VISIUM_HI16
- -- : BFD_RELOC_VISIUM_LO16
- -- : BFD_RELOC_VISIUM_IM16
- -- : BFD_RELOC_VISIUM_REL16
- -- : BFD_RELOC_VISIUM_HI16_PCREL
- -- : BFD_RELOC_VISIUM_LO16_PCREL
- -- : BFD_RELOC_VISIUM_IM16_PCREL
- Visium Relocations.
- -- : BFD_RELOC_WASM32_LEB128
- -- : BFD_RELOC_WASM32_LEB128_GOT
- -- : BFD_RELOC_WASM32_LEB128_GOT_CODE
- -- : BFD_RELOC_WASM32_LEB128_PLT
- -- : BFD_RELOC_WASM32_PLT_INDEX
- -- : BFD_RELOC_WASM32_ABS32_CODE
- -- : BFD_RELOC_WASM32_COPY
- -- : BFD_RELOC_WASM32_CODE_POINTER
- -- : BFD_RELOC_WASM32_INDEX
- -- : BFD_RELOC_WASM32_PLT_SIG
- WebAssembly relocations.
- -- : BFD_RELOC_CKCORE_NONE
- -- : BFD_RELOC_CKCORE_ADDR32
- -- : BFD_RELOC_CKCORE_PCREL_IMM8BY4
- -- : BFD_RELOC_CKCORE_PCREL_IMM11BY2
- -- : BFD_RELOC_CKCORE_PCREL_IMM4BY2
- -- : BFD_RELOC_CKCORE_PCREL32
- -- : BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2
- -- : BFD_RELOC_CKCORE_GNU_VTINHERIT
- -- : BFD_RELOC_CKCORE_GNU_VTENTRY
- -- : BFD_RELOC_CKCORE_RELATIVE
- -- : BFD_RELOC_CKCORE_COPY
- -- : BFD_RELOC_CKCORE_GLOB_DAT
- -- : BFD_RELOC_CKCORE_JUMP_SLOT
- -- : BFD_RELOC_CKCORE_GOTOFF
- -- : BFD_RELOC_CKCORE_GOTPC
- -- : BFD_RELOC_CKCORE_GOT32
- -- : BFD_RELOC_CKCORE_PLT32
- -- : BFD_RELOC_CKCORE_ADDRGOT
- -- : BFD_RELOC_CKCORE_ADDRPLT
- -- : BFD_RELOC_CKCORE_PCREL_IMM26BY2
- -- : BFD_RELOC_CKCORE_PCREL_IMM16BY2
- -- : BFD_RELOC_CKCORE_PCREL_IMM16BY4
- -- : BFD_RELOC_CKCORE_PCREL_IMM10BY2
- -- : BFD_RELOC_CKCORE_PCREL_IMM10BY4
- -- : BFD_RELOC_CKCORE_ADDR_HI16
- -- : BFD_RELOC_CKCORE_ADDR_LO16
- -- : BFD_RELOC_CKCORE_GOTPC_HI16
- -- : BFD_RELOC_CKCORE_GOTPC_LO16
- -- : BFD_RELOC_CKCORE_GOTOFF_HI16
- -- : BFD_RELOC_CKCORE_GOTOFF_LO16
- -- : BFD_RELOC_CKCORE_GOT12
- -- : BFD_RELOC_CKCORE_GOT_HI16
- -- : BFD_RELOC_CKCORE_GOT_LO16
- -- : BFD_RELOC_CKCORE_PLT12
- -- : BFD_RELOC_CKCORE_PLT_HI16
- -- : BFD_RELOC_CKCORE_PLT_LO16
- -- : BFD_RELOC_CKCORE_ADDRGOT_HI16
- -- : BFD_RELOC_CKCORE_ADDRGOT_LO16
- -- : BFD_RELOC_CKCORE_ADDRPLT_HI16
- -- : BFD_RELOC_CKCORE_ADDRPLT_LO16
- -- : BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2
- -- : BFD_RELOC_CKCORE_TOFFSET_LO16
- -- : BFD_RELOC_CKCORE_DOFFSET_LO16
- -- : BFD_RELOC_CKCORE_PCREL_IMM18BY2
- -- : BFD_RELOC_CKCORE_DOFFSET_IMM18
- -- : BFD_RELOC_CKCORE_DOFFSET_IMM18BY2
- -- : BFD_RELOC_CKCORE_DOFFSET_IMM18BY4
- -- : BFD_RELOC_CKCORE_GOTOFF_IMM18
- -- : BFD_RELOC_CKCORE_GOT_IMM18BY4
- -- : BFD_RELOC_CKCORE_PLT_IMM18BY4
- -- : BFD_RELOC_CKCORE_PCREL_IMM7BY4
- -- : BFD_RELOC_CKCORE_TLS_LE32
- -- : BFD_RELOC_CKCORE_TLS_IE32
- -- : BFD_RELOC_CKCORE_TLS_GD32
- -- : BFD_RELOC_CKCORE_TLS_LDM32
- -- : BFD_RELOC_CKCORE_TLS_LDO32
- -- : BFD_RELOC_CKCORE_TLS_DTPMOD32
- -- : BFD_RELOC_CKCORE_TLS_DTPOFF32
- -- : BFD_RELOC_CKCORE_TLS_TPOFF32
- -- : BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4
- -- : BFD_RELOC_CKCORE_NOJSRI
- -- : BFD_RELOC_CKCORE_CALLGRAPH
- -- : BFD_RELOC_CKCORE_IRELATIVE
- -- : BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4
- -- : BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4
- C-SKY relocations.
- -- : BFD_RELOC_S12Z_OPR
- S12Z relocations.
- typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
- 2.10.2.2 'bfd_reloc_type_lookup'
- ................................
- *Synopsis*
- reloc_howto_type *bfd_reloc_type_lookup
- (bfd *abfd, bfd_reloc_code_real_type code);
- reloc_howto_type *bfd_reloc_name_lookup
- (bfd *abfd, const char *reloc_name);
- *Description*
- Return a pointer to a howto structure which, when invoked, will perform
- the relocation CODE on data from the architecture noted.
- 2.10.2.3 'bfd_default_reloc_type_lookup'
- ........................................
- *Synopsis*
- reloc_howto_type *bfd_default_reloc_type_lookup
- (bfd *abfd, bfd_reloc_code_real_type code);
- *Description*
- Provides a default relocation lookup routine for any architecture.
- 2.10.2.4 'bfd_get_reloc_code_name'
- ..................................
- *Synopsis*
- const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
- *Description*
- Provides a printable name for the supplied relocation code. Useful
- mainly for printing error messages.
- 2.10.2.5 'bfd_generic_relax_section'
- ....................................
- *Synopsis*
- bfd_boolean bfd_generic_relax_section
- (bfd *abfd,
- asection *section,
- struct bfd_link_info *,
- bfd_boolean *);
- *Description*
- Provides default handling for relaxing for back ends which don't do
- relaxing.
- 2.10.2.6 'bfd_generic_gc_sections'
- ..................................
- *Synopsis*
- bfd_boolean bfd_generic_gc_sections
- (bfd *, struct bfd_link_info *);
- *Description*
- Provides default handling for relaxing for back ends which don't do
- section gc - i.e., does nothing.
- 2.10.2.7 'bfd_generic_lookup_section_flags'
- ...........................................
- *Synopsis*
- bfd_boolean bfd_generic_lookup_section_flags
- (struct bfd_link_info *, struct flag_info *, asection *);
- *Description*
- Provides default handling for section flags lookup - i.e., does nothing.
- Returns FALSE if the section should be omitted, otherwise TRUE.
- 2.10.2.8 'bfd_generic_merge_sections'
- .....................................
- *Synopsis*
- bfd_boolean bfd_generic_merge_sections
- (bfd *, struct bfd_link_info *);
- *Description*
- Provides default handling for SEC_MERGE section merging for back ends
- which don't have SEC_MERGE support - i.e., does nothing.
- 2.10.2.9 'bfd_generic_get_relocated_section_contents'
- .....................................................
- *Synopsis*
- bfd_byte *bfd_generic_get_relocated_section_contents
- (bfd *abfd,
- struct bfd_link_info *link_info,
- struct bfd_link_order *link_order,
- bfd_byte *data,
- bfd_boolean relocatable,
- asymbol **symbols);
- *Description*
- Provides default handling of relocation effort for back ends which can't
- be bothered to do it efficiently.
- 2.10.2.10 '_bfd_generic_set_reloc'
- ..................................
- *Synopsis*
- void _bfd_generic_set_reloc
- (bfd *abfd,
- sec_ptr section,
- arelent **relptr,
- unsigned int count);
- *Description*
- Installs a new set of internal relocations in SECTION.
- 2.10.2.11 '_bfd_unrecognized_reloc'
- ...................................
- *Synopsis*
- bfd_boolean _bfd_unrecognized_reloc
- (bfd * abfd,
- sec_ptr section,
- unsigned int r_type);
- *Description*
- Reports an unrecognized reloc. Written as a function in order to reduce
- code duplication. Returns FALSE so that it can be called from a return
- statement.
- File: bfd.info, Node: Core Files, Next: Targets, Prev: Relocations, Up: BFD front end
- 2.11 Core files
- ===============
- 2.11.1 Core file functions
- --------------------------
- *Description*
- These are functions pertaining to core files.
- 2.11.1.1 'bfd_core_file_failing_command'
- ........................................
- *Synopsis*
- const char *bfd_core_file_failing_command (bfd *abfd);
- *Description*
- Return a read-only string explaining which program was running when it
- failed and produced the core file ABFD.
- 2.11.1.2 'bfd_core_file_failing_signal'
- .......................................
- *Synopsis*
- int bfd_core_file_failing_signal (bfd *abfd);
- *Description*
- Returns the signal number which caused the core dump which generated the
- file the BFD ABFD is attached to.
- 2.11.1.3 'bfd_core_file_pid'
- ............................
- *Synopsis*
- int bfd_core_file_pid (bfd *abfd);
- *Description*
- Returns the PID of the process the core dump the BFD ABFD is attached to
- was generated from.
- 2.11.1.4 'core_file_matches_executable_p'
- .........................................
- *Synopsis*
- bfd_boolean core_file_matches_executable_p
- (bfd *core_bfd, bfd *exec_bfd);
- *Description*
- Return 'TRUE' if the core file attached to CORE_BFD was generated by a
- run of the executable file attached to EXEC_BFD, 'FALSE' otherwise.
- 2.11.1.5 'generic_core_file_matches_executable_p'
- .................................................
- *Synopsis*
- bfd_boolean generic_core_file_matches_executable_p
- (bfd *core_bfd, bfd *exec_bfd);
- *Description*
- Return TRUE if the core file attached to CORE_BFD was generated by a run
- of the executable file attached to EXEC_BFD. The match is based on
- executable basenames only.
- Note: When not able to determine the core file failing command or the
- executable name, we still return TRUE even though we're not sure that
- core file and executable match. This is to avoid generating a false
- warning in situations where we really don't know whether they match or
- not.
- File: bfd.info, Node: Targets, Next: Architectures, Prev: Core Files, Up: BFD front end
- 2.12 Targets
- ============
- *Description*
- Each port of BFD to a different machine requires the creation of a
- target back end. All the back end provides to the root part of BFD is a
- structure containing pointers to functions which perform certain low
- level operations on files. BFD translates the applications's requests
- through a pointer into calls to the back end routines.
- When a file is opened with 'bfd_openr', its format and target are
- unknown. BFD uses various mechanisms to determine how to interpret the
- file. The operations performed are:
- * Create a BFD by calling the internal routine '_bfd_new_bfd', then
- call 'bfd_find_target' with the target string supplied to
- 'bfd_openr' and the new BFD pointer.
- * If a null target string was provided to 'bfd_find_target', look up
- the environment variable 'GNUTARGET' and use that as the target
- string.
- * If the target string is still 'NULL', or the target string is
- 'default', then use the first item in the target vector as the
- target type, and set 'target_defaulted' in the BFD to cause
- 'bfd_check_format' to loop through all the targets. *Note
- bfd_target::. *Note Formats::.
- * Otherwise, inspect the elements in the target vector one by one,
- until a match on target name is found. When found, use it.
- * Otherwise return the error 'bfd_error_invalid_target' to
- 'bfd_openr'.
- * 'bfd_openr' attempts to open the file using 'bfd_open_file', and
- returns the BFD.
- Once the BFD has been opened and the target selected, the file format
- may be determined. This is done by calling 'bfd_check_format' on the
- BFD with a suggested format. If 'target_defaulted' has been set, each
- possible target type is tried to see if it recognizes the specified
- format. 'bfd_check_format' returns 'TRUE' when the caller guesses
- right.
- * Menu:
- * bfd_target::
- File: bfd.info, Node: bfd_target, Prev: Targets, Up: Targets
- 2.12.1 bfd_target
- -----------------
- *Description*
- This structure contains everything that BFD knows about a target. It
- includes things like its byte order, name, and which routines to call to
- do various operations.
- Every BFD points to a target structure with its 'xvec' member.
- The macros below are used to dispatch to functions through the
- 'bfd_target' vector. They are used in a number of macros further down
- in 'bfd.h', and are also used when calling various routines by hand
- inside the BFD implementation. The ARGLIST argument must be
- parenthesized; it contains all the arguments to the called function.
- They make the documentation (more) unpleasant to read, so if someone
- wants to fix this and not break the above, please do.
- #define BFD_SEND(bfd, message, arglist) \
- ((*((bfd)->xvec->message)) arglist)
- #ifdef DEBUG_BFD_SEND
- #undef BFD_SEND
- #define BFD_SEND(bfd, message, arglist) \
- (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
- ((*((bfd)->xvec->message)) arglist) : \
- (bfd_assert (__FILE__,__LINE__), NULL))
- #endif
- For operations which index on the BFD format:
- #define BFD_SEND_FMT(bfd, message, arglist) \
- (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
- #ifdef DEBUG_BFD_SEND
- #undef BFD_SEND_FMT
- #define BFD_SEND_FMT(bfd, message, arglist) \
- (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
- (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
- (bfd_assert (__FILE__,__LINE__), NULL))
- #endif
- This is the structure which defines the type of BFD this is. The
- 'xvec' member of the struct 'bfd' itself points here. Each module that
- implements access to a different target under BFD, defines one of these.
- FIXME, these names should be rationalised with the names of the entry
- points which call them. Too bad we can't have one macro to define them
- both!
- enum bfd_flavour
- {
- /* N.B. Update bfd_flavour_name if you change this. */
- bfd_target_unknown_flavour,
- bfd_target_aout_flavour,
- bfd_target_coff_flavour,
- bfd_target_ecoff_flavour,
- bfd_target_xcoff_flavour,
- bfd_target_elf_flavour,
- bfd_target_tekhex_flavour,
- bfd_target_srec_flavour,
- bfd_target_verilog_flavour,
- bfd_target_ihex_flavour,
- bfd_target_som_flavour,
- bfd_target_os9k_flavour,
- bfd_target_versados_flavour,
- bfd_target_msdos_flavour,
- bfd_target_ovax_flavour,
- bfd_target_evax_flavour,
- bfd_target_mmo_flavour,
- bfd_target_mach_o_flavour,
- bfd_target_pef_flavour,
- bfd_target_pef_xlib_flavour,
- bfd_target_sym_flavour
- };
- enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
- /* Forward declaration. */
- typedef struct bfd_link_info _bfd_link_info;
- /* Forward declaration. */
- typedef struct flag_info flag_info;
- typedef struct bfd_target
- {
- /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
- const char *name;
- /* The "flavour" of a back end is a general indication about
- the contents of a file. */
- enum bfd_flavour flavour;
- /* The order of bytes within the data area of a file. */
- enum bfd_endian byteorder;
- /* The order of bytes within the header parts of a file. */
- enum bfd_endian header_byteorder;
- /* A mask of all the flags which an executable may have set -
- from the set BFD_NO_FLAGS, HAS_RELOC, ...D_PAGED. */
- flagword object_flags;
- /* A mask of all the flags which a section may have set - from
- the set SEC_NO_FLAGS, SEC_ALLOC, ...SET_NEVER_LOAD. */
- flagword section_flags;
- /* The character normally found at the front of a symbol.
- (if any), perhaps `_'. */
- char symbol_leading_char;
- /* The pad character for file names within an archive header. */
- char ar_pad_char;
- /* The maximum number of characters in an archive header. */
- unsigned char ar_max_namelen;
- /* How well this target matches, used to select between various
- possible targets when more than one target matches. */
- unsigned char match_priority;
- /* Entries for byte swapping for data. These are different from the
- other entry points, since they don't take a BFD as the first argument.
- Certain other handlers could do the same. */
- bfd_uint64_t (*bfd_getx64) (const void *);
- bfd_int64_t (*bfd_getx_signed_64) (const void *);
- void (*bfd_putx64) (bfd_uint64_t, void *);
- bfd_vma (*bfd_getx32) (const void *);
- bfd_signed_vma (*bfd_getx_signed_32) (const void *);
- void (*bfd_putx32) (bfd_vma, void *);
- bfd_vma (*bfd_getx16) (const void *);
- bfd_signed_vma (*bfd_getx_signed_16) (const void *);
- void (*bfd_putx16) (bfd_vma, void *);
- /* Byte swapping for the headers. */
- bfd_uint64_t (*bfd_h_getx64) (const void *);
- bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
- void (*bfd_h_putx64) (bfd_uint64_t, void *);
- bfd_vma (*bfd_h_getx32) (const void *);
- bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
- void (*bfd_h_putx32) (bfd_vma, void *);
- bfd_vma (*bfd_h_getx16) (const void *);
- bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
- void (*bfd_h_putx16) (bfd_vma, void *);
- /* Format dependent routines: these are vectors of entry points
- within the target vector structure, one for each format to check. */
- /* Check the format of a file being read. Return a bfd_target * or zero. */
- const struct bfd_target *
- (*_bfd_check_format[bfd_type_end]) (bfd *);
- /* Set the format of a file being written. */
- bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
- /* Write cached information into a file being written, at bfd_close. */
- bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
- The general target vector. These vectors are initialized using the
- BFD_JUMP_TABLE macros.
- /* Generic entry points. */
- #define BFD_JUMP_TABLE_GENERIC(NAME) \
- NAME##_close_and_cleanup, \
- NAME##_bfd_free_cached_info, \
- NAME##_new_section_hook, \
- NAME##_get_section_contents, \
- NAME##_get_section_contents_in_window
- /* Called when the BFD is being closed to do any necessary cleanup. */
- bfd_boolean (*_close_and_cleanup) (bfd *);
- /* Ask the BFD to free all cached information. */
- bfd_boolean (*_bfd_free_cached_info) (bfd *);
- /* Called when a new section is created. */
- bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
- /* Read the contents of a section. */
- bfd_boolean (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
- bfd_size_type);
- bfd_boolean (*_bfd_get_section_contents_in_window) (bfd *, sec_ptr,
- bfd_window *, file_ptr,
- bfd_size_type);
- /* Entry points to copy private data. */
- #define BFD_JUMP_TABLE_COPY(NAME) \
- NAME##_bfd_copy_private_bfd_data, \
- NAME##_bfd_merge_private_bfd_data, \
- _bfd_generic_init_private_section_data, \
- NAME##_bfd_copy_private_section_data, \
- NAME##_bfd_copy_private_symbol_data, \
- NAME##_bfd_copy_private_header_data, \
- NAME##_bfd_set_private_flags, \
- NAME##_bfd_print_private_bfd_data
- /* Called to copy BFD general private data from one object file
- to another. */
- bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
- /* Called to merge BFD general private data from one object file
- to a common output file when linking. */
- bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
- /* Called to initialize BFD private section data from one object file
- to another. */
- #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
- BFD_SEND (obfd, _bfd_init_private_section_data, \
- (ibfd, isec, obfd, osec, link_info))
- bfd_boolean (*_bfd_init_private_section_data) (bfd *, sec_ptr, bfd *,
- sec_ptr,
- struct bfd_link_info *);
- /* Called to copy BFD private section data from one object file
- to another. */
- bfd_boolean (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *,
- sec_ptr);
- /* Called to copy BFD private symbol data from one symbol
- to another. */
- bfd_boolean (*_bfd_copy_private_symbol_data) (bfd *, asymbol *, bfd *,
- asymbol *);
- /* Called to copy BFD private header data from one object file
- to another. */
- bfd_boolean (*_bfd_copy_private_header_data) (bfd *, bfd *);
- /* Called to set private backend flags. */
- bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
- /* Called to print private BFD data. */
- bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
- /* Core file entry points. */
- #define BFD_JUMP_TABLE_CORE(NAME) \
- NAME##_core_file_failing_command, \
- NAME##_core_file_failing_signal, \
- NAME##_core_file_matches_executable_p, \
- NAME##_core_file_pid
- char * (*_core_file_failing_command) (bfd *);
- int (*_core_file_failing_signal) (bfd *);
- bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
- int (*_core_file_pid) (bfd *);
- /* Archive entry points. */
- #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
- NAME##_slurp_armap, \
- NAME##_slurp_extended_name_table, \
- NAME##_construct_extended_name_table, \
- NAME##_truncate_arname, \
- NAME##_write_armap, \
- NAME##_read_ar_hdr, \
- NAME##_write_ar_hdr, \
- NAME##_openr_next_archived_file, \
- NAME##_get_elt_at_index, \
- NAME##_generic_stat_arch_elt, \
- NAME##_update_armap_timestamp
- bfd_boolean (*_bfd_slurp_armap) (bfd *);
- bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
- bfd_boolean (*_bfd_construct_extended_name_table) (bfd *, char **,
- bfd_size_type *,
- const char **);
- void (*_bfd_truncate_arname) (bfd *, const char *, char *);
- bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *,
- unsigned int, int);
- void * (*_bfd_read_ar_hdr_fn) (bfd *);
- bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
- bfd * (*openr_next_archived_file) (bfd *, bfd *);
- #define bfd_get_elt_at_index(b,i) \
- BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
- bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
- int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
- bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
- /* Entry points used for symbols. */
- #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
- NAME##_get_symtab_upper_bound, \
- NAME##_canonicalize_symtab, \
- NAME##_make_empty_symbol, \
- NAME##_print_symbol, \
- NAME##_get_symbol_info, \
- NAME##_get_symbol_version_string, \
- NAME##_bfd_is_local_label_name, \
- NAME##_bfd_is_target_special_symbol, \
- NAME##_get_lineno, \
- NAME##_find_nearest_line, \
- NAME##_find_line, \
- NAME##_find_inliner_info, \
- NAME##_bfd_make_debug_symbol, \
- NAME##_read_minisymbols, \
- NAME##_minisymbol_to_symbol
- long (*_bfd_get_symtab_upper_bound) (bfd *);
- long (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
- struct bfd_symbol *
- (*_bfd_make_empty_symbol) (bfd *);
- void (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
- bfd_print_symbol_type);
- #define bfd_print_symbol(b,p,s,e) \
- BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
- void (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *,
- symbol_info *);
- #define bfd_get_symbol_info(b,p,e) \
- BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
- const char *(*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
- bfd_boolean *);
- #define bfd_get_symbol_version_string(b,s,h) \
- BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
- bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
- bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
- alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
- bfd_boolean (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
- struct bfd_section *, bfd_vma,
- const char **, const char **,
- unsigned int *, unsigned int *);
- bfd_boolean (*_bfd_find_line) (bfd *, struct bfd_symbol **,
- struct bfd_symbol *, const char **,
- unsigned int *);
- bfd_boolean (*_bfd_find_inliner_info)
- (bfd *, const char **, const char **, unsigned int *);
- /* Back-door to allow format-aware applications to create debug symbols
- while using BFD for everything else. Currently used by the assembler
- when creating COFF files. */
- asymbol * (*_bfd_make_debug_symbol) (bfd *, void *, unsigned long size);
- #define bfd_read_minisymbols(b, d, m, s) \
- BFD_SEND (b, _read_minisymbols, (b, d, m, s))
- long (*_read_minisymbols) (bfd *, bfd_boolean, void **,
- unsigned int *);
- #define bfd_minisymbol_to_symbol(b, d, m, f) \
- BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
- asymbol * (*_minisymbol_to_symbol) (bfd *, bfd_boolean, const void *,
- asymbol *);
- /* Routines for relocs. */
- #define BFD_JUMP_TABLE_RELOCS(NAME) \
- NAME##_get_reloc_upper_bound, \
- NAME##_canonicalize_reloc, \
- NAME##_set_reloc, \
- NAME##_bfd_reloc_type_lookup, \
- NAME##_bfd_reloc_name_lookup
- long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
- long (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
- struct bfd_symbol **);
- void (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
- /* See documentation on reloc types. */
- reloc_howto_type *
- (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
- reloc_howto_type *
- (*reloc_name_lookup) (bfd *, const char *);
- /* Routines used when writing an object file. */
- #define BFD_JUMP_TABLE_WRITE(NAME) \
- NAME##_set_arch_mach, \
- NAME##_set_section_contents
- bfd_boolean (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
- unsigned long);
- bfd_boolean (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
- file_ptr, bfd_size_type);
- /* Routines used by the linker. */
- #define BFD_JUMP_TABLE_LINK(NAME) \
- NAME##_sizeof_headers, \
- NAME##_bfd_get_relocated_section_contents, \
- NAME##_bfd_relax_section, \
- NAME##_bfd_link_hash_table_create, \
- NAME##_bfd_link_add_symbols, \
- NAME##_bfd_link_just_syms, \
- NAME##_bfd_copy_link_hash_symbol_type, \
- NAME##_bfd_final_link, \
- NAME##_bfd_link_split_section, \
- NAME##_bfd_link_check_relocs, \
- NAME##_bfd_gc_sections, \
- NAME##_bfd_lookup_section_flags, \
- NAME##_bfd_merge_sections, \
- NAME##_bfd_is_group_section, \
- NAME##_bfd_group_name, \
- NAME##_bfd_discard_group, \
- NAME##_section_already_linked, \
- NAME##_bfd_define_common_symbol, \
- NAME##_bfd_link_hide_symbol, \
- NAME##_bfd_define_start_stop
- int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
- bfd_byte * (*_bfd_get_relocated_section_contents) (bfd *,
- struct bfd_link_info *,
- struct bfd_link_order *,
- bfd_byte *, bfd_boolean,
- struct bfd_symbol **);
- bfd_boolean (*_bfd_relax_section) (bfd *, struct bfd_section *,
- struct bfd_link_info *, bfd_boolean *);
- /* Create a hash table for the linker. Different backends store
- different information in this table. */
- struct bfd_link_hash_table *
- (*_bfd_link_hash_table_create) (bfd *);
- /* Add symbols from this object file into the hash table. */
- bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
- /* Indicate that we are only retrieving symbol values from this section. */
- void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
- /* Copy the symbol type and other attributes for a linker script
- assignment of one symbol to another. */
- #define bfd_copy_link_hash_symbol_type(b, t, f) \
- BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
- void (*_bfd_copy_link_hash_symbol_type) (bfd *,
- struct bfd_link_hash_entry *,
- struct bfd_link_hash_entry *);
- /* Do a link based on the link_order structures attached to each
- section of the BFD. */
- bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
- /* Should this section be split up into smaller pieces during linking. */
- bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
- /* Check the relocations in the bfd for validity. */
- bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
- /* Remove sections that are not referenced from the output. */
- bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
- /* Sets the bitmask of allowed and disallowed section flags. */
- bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
- struct flag_info *, asection *);
- /* Attempt to merge SEC_MERGE sections. */
- bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
- /* Is this section a member of a group? */
- bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
- /* The group name, if section is a member of a group. */
- const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
- /* Discard members of a group. */
- bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
- /* Check if SEC has been already linked during a reloceatable or
- final link. */
- bfd_boolean (*_section_already_linked) (bfd *, asection *,
- struct bfd_link_info *);
- /* Define a common symbol. */
- bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
- struct bfd_link_hash_entry *);
- /* Hide a symbol. */
- void (*_bfd_link_hide_symbol) (bfd *, struct bfd_link_info *,
- struct bfd_link_hash_entry *);
- /* Define a __start, __stop, .startof. or .sizeof. symbol. */
- struct bfd_link_hash_entry *
- (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
- asection *);
- /* Routines to handle dynamic symbols and relocs. */
- #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
- NAME##_get_dynamic_symtab_upper_bound, \
- NAME##_canonicalize_dynamic_symtab, \
- NAME##_get_synthetic_symtab, \
- NAME##_get_dynamic_reloc_upper_bound, \
- NAME##_canonicalize_dynamic_reloc
- /* Get the amount of memory required to hold the dynamic symbols. */
- long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
- /* Read in the dynamic symbols. */
- long (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
- /* Create synthetized symbols. */
- long (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
- long, struct bfd_symbol **,
- struct bfd_symbol **);
- /* Get the amount of memory required to hold the dynamic relocs. */
- long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
- /* Read in the dynamic relocs. */
- long (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
- struct bfd_symbol **);
- A pointer to an alternative bfd_target in case the current one is not
- satisfactory. This can happen when the target cpu supports both big and
- little endian code, and target chosen by the linker has the wrong
- endianness. The function open_output() in ld/ldlang.c uses this field
- to find an alternative output format that is suitable.
- /* Opposite endian version of this target. */
- const struct bfd_target *alternative_target;
- /* Data for use by back-end routines, which isn't
- generic enough to belong in this structure. */
- const void *backend_data;
- } bfd_target;
- static inline const char *
- bfd_get_target (const bfd *abfd)
- {
- return abfd->xvec->name;
- }
- static inline enum bfd_flavour
- bfd_get_flavour (const bfd *abfd)
- {
- return abfd->xvec->flavour;
- }
- static inline flagword
- bfd_applicable_file_flags (const bfd *abfd)
- {
- return abfd->xvec->object_flags;
- }
- static inline bfd_boolean
- bfd_family_coff (const bfd *abfd)
- {
- return (bfd_get_flavour (abfd) == bfd_target_coff_flavour
- || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
- }
- static inline bfd_boolean
- bfd_big_endian (const bfd *abfd)
- {
- return abfd->xvec->byteorder == BFD_ENDIAN_BIG;
- }
- static inline bfd_boolean
- bfd_little_endian (const bfd *abfd)
- {
- return abfd->xvec->byteorder == BFD_ENDIAN_LITTLE;
- }
- static inline bfd_boolean
- bfd_header_big_endian (const bfd *abfd)
- {
- return abfd->xvec->header_byteorder == BFD_ENDIAN_BIG;
- }
- static inline bfd_boolean
- bfd_header_little_endian (const bfd *abfd)
- {
- return abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE;
- }
- static inline flagword
- bfd_applicable_section_flags (const bfd *abfd)
- {
- return abfd->xvec->section_flags;
- }
- static inline char
- bfd_get_symbol_leading_char (const bfd *abfd)
- {
- return abfd->xvec->symbol_leading_char;
- }
- static inline enum bfd_flavour
- bfd_asymbol_flavour (const asymbol *sy)
- {
- if ((sy->flags & BSF_SYNTHETIC) != 0)
- return bfd_target_unknown_flavour;
- return sy->the_bfd->xvec->flavour;
- }
- 2.12.1.1 'bfd_set_default_target'
- .................................
- *Synopsis*
- bfd_boolean bfd_set_default_target (const char *name);
- *Description*
- Set the default target vector to use when recognizing a BFD. This takes
- the name of the target, which may be a BFD target name or a
- configuration triplet.
- 2.12.1.2 'bfd_find_target'
- ..........................
- *Synopsis*
- const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
- *Description*
- Return a pointer to the transfer vector for the object target named
- TARGET_NAME. If TARGET_NAME is 'NULL', choose the one in the
- environment variable 'GNUTARGET'; if that is null or not defined, then
- choose the first entry in the target list. Passing in the string
- "default" or setting the environment variable to "default" will cause
- the first entry in the target list to be returned, and
- "target_defaulted" will be set in the BFD if ABFD isn't 'NULL'. This
- causes 'bfd_check_format' to loop over all the targets to find the one
- that matches the file being read.
- 2.12.1.3 'bfd_get_target_info'
- ..............................
- *Synopsis*
- const bfd_target *bfd_get_target_info (const char *target_name,
- bfd *abfd,
- bfd_boolean *is_bigendian,
- int *underscoring,
- const char **def_target_arch);
- *Description*
- Return a pointer to the transfer vector for the object target named
- TARGET_NAME. If TARGET_NAME is 'NULL', choose the one in the
- environment variable 'GNUTARGET'; if that is null or not defined, then
- choose the first entry in the target list. Passing in the string
- "default" or setting the environment variable to "default" will cause
- the first entry in the target list to be returned, and
- "target_defaulted" will be set in the BFD if ABFD isn't 'NULL'. This
- causes 'bfd_check_format' to loop over all the targets to find the one
- that matches the file being read. If IS_BIGENDIAN is not 'NULL', then
- set this value to target's endian mode. True for big-endian, FALSE for
- little-endian or for invalid target. If UNDERSCORING is not 'NULL',
- then set this value to target's underscoring mode. Zero for
- none-underscoring, -1 for invalid target, else the value of target
- vector's symbol underscoring. If DEF_TARGET_ARCH is not 'NULL', then
- set it to the architecture string specified by the target_name.
- 2.12.1.4 'bfd_target_list'
- ..........................
- *Synopsis*
- const char ** bfd_target_list (void);
- *Description*
- Return a freshly malloced NULL-terminated vector of the names of all the
- valid BFD targets. Do not modify the names.
- 2.12.1.5 'bfd_iterate_over_targets'
- ...................................
- *Synopsis*
- const bfd_target *bfd_iterate_over_targets
- (int (*func) (const bfd_target *, void *),
- void *data);
- *Description*
- Call FUNC for each target in the list of BFD target vectors, passing
- DATA to FUNC. Stop iterating if FUNC returns a non-zero result, and
- return that target vector. Return NULL if FUNC always returns zero.
- 2.12.1.6 'bfd_flavour_name'
- ...........................
- *Synopsis*
- const char *bfd_flavour_name (enum bfd_flavour flavour);
- *Description*
- Return the string form of FLAVOUR.
- File: bfd.info, Node: Architectures, Next: Opening and Closing, Prev: Targets, Up: BFD front end
- 2.13 Architectures
- ==================
- BFD keeps one atom in a BFD describing the architecture of the data
- attached to the BFD: a pointer to a 'bfd_arch_info_type'.
- Pointers to structures can be requested independently of a BFD so
- that an architecture's information can be interrogated without access to
- an open BFD.
- The architecture information is provided by each architecture
- package. The set of default architectures is selected by the macro
- 'SELECT_ARCHITECTURES'. This is normally set up in the
- 'config/TARGET.mt' file of your choice. If the name is not defined,
- then all the architectures supported are included.
- When BFD starts up, all the architectures are called with an
- initialize method. It is up to the architecture back end to insert as
- many items into the list of architectures as it wants to; generally this
- would be one for each machine and one for the default case (an item with
- a machine field of 0).
- BFD's idea of an architecture is implemented in 'archures.c'.
- 2.13.1 bfd_architecture
- -----------------------
- *Description*
- This enum gives the object file's CPU architecture, in a global
- sense--i.e., what processor family does it belong to? Another field
- indicates which processor within the family is in use. The machine
- gives a number which distinguishes different versions of the
- architecture, containing, for example, 68020 for Motorola 68020.
- enum bfd_architecture
- {
- bfd_arch_unknown, /* File arch not known. */
- bfd_arch_obscure, /* Arch known, not one of these. */
- bfd_arch_m68k, /* Motorola 68xxx. */
- #define bfd_mach_m68000 1
- #define bfd_mach_m68008 2
- #define bfd_mach_m68010 3
- #define bfd_mach_m68020 4
- #define bfd_mach_m68030 5
- #define bfd_mach_m68040 6
- #define bfd_mach_m68060 7
- #define bfd_mach_cpu32 8
- #define bfd_mach_fido 9
- #define bfd_mach_mcf_isa_a_nodiv 10
- #define bfd_mach_mcf_isa_a 11
- #define bfd_mach_mcf_isa_a_mac 12
- #define bfd_mach_mcf_isa_a_emac 13
- #define bfd_mach_mcf_isa_aplus 14
- #define bfd_mach_mcf_isa_aplus_mac 15
- #define bfd_mach_mcf_isa_aplus_emac 16
- #define bfd_mach_mcf_isa_b_nousp 17
- #define bfd_mach_mcf_isa_b_nousp_mac 18
- #define bfd_mach_mcf_isa_b_nousp_emac 19
- #define bfd_mach_mcf_isa_b 20
- #define bfd_mach_mcf_isa_b_mac 21
- #define bfd_mach_mcf_isa_b_emac 22
- #define bfd_mach_mcf_isa_b_float 23
- #define bfd_mach_mcf_isa_b_float_mac 24
- #define bfd_mach_mcf_isa_b_float_emac 25
- #define bfd_mach_mcf_isa_c 26
- #define bfd_mach_mcf_isa_c_mac 27
- #define bfd_mach_mcf_isa_c_emac 28
- #define bfd_mach_mcf_isa_c_nodiv 29
- #define bfd_mach_mcf_isa_c_nodiv_mac 30
- #define bfd_mach_mcf_isa_c_nodiv_emac 31
- bfd_arch_vax, /* DEC Vax. */
- bfd_arch_or1k, /* OpenRISC 1000. */
- #define bfd_mach_or1k 1
- #define bfd_mach_or1knd 2
- bfd_arch_sparc, /* SPARC. */
- #define bfd_mach_sparc 1
- /* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
- #define bfd_mach_sparc_sparclet 2
- #define bfd_mach_sparc_sparclite 3
- #define bfd_mach_sparc_v8plus 4
- #define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
- #define bfd_mach_sparc_sparclite_le 6
- #define bfd_mach_sparc_v9 7
- #define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
- #define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
- #define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
- #define bfd_mach_sparc_v8plusc 11 /* with UA2005 and T1 add'ns. */
- #define bfd_mach_sparc_v9c 12 /* with UA2005 and T1 add'ns. */
- #define bfd_mach_sparc_v8plusd 13 /* with UA2007 and T3 add'ns. */
- #define bfd_mach_sparc_v9d 14 /* with UA2007 and T3 add'ns. */
- #define bfd_mach_sparc_v8pluse 15 /* with OSA2001 and T4 add'ns (no IMA). */
- #define bfd_mach_sparc_v9e 16 /* with OSA2001 and T4 add'ns (no IMA). */
- #define bfd_mach_sparc_v8plusv 17 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */
- #define bfd_mach_sparc_v9v 18 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */
- #define bfd_mach_sparc_v8plusm 19 /* with OSA2015 and M7 add'ns. */
- #define bfd_mach_sparc_v9m 20 /* with OSA2015 and M7 add'ns. */
- #define bfd_mach_sparc_v8plusm8 21 /* with OSA2017 and M8 add'ns. */
- #define bfd_mach_sparc_v9m8 22 /* with OSA2017 and M8 add'ns. */
- /* Nonzero if MACH has the v9 instruction set. */
- #define bfd_mach_sparc_v9_p(mach) \
- ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9m8 \
- && (mach) != bfd_mach_sparc_sparclite_le)
- /* Nonzero if MACH is a 64 bit sparc architecture. */
- #define bfd_mach_sparc_64bit_p(mach) \
- ((mach) >= bfd_mach_sparc_v9 \
- && (mach) != bfd_mach_sparc_v8plusb \
- && (mach) != bfd_mach_sparc_v8plusc \
- && (mach) != bfd_mach_sparc_v8plusd \
- && (mach) != bfd_mach_sparc_v8pluse \
- && (mach) != bfd_mach_sparc_v8plusv \
- && (mach) != bfd_mach_sparc_v8plusm \
- && (mach) != bfd_mach_sparc_v8plusm8)
- bfd_arch_spu, /* PowerPC SPU. */
- #define bfd_mach_spu 256
- bfd_arch_mips, /* MIPS Rxxxx. */
- #define bfd_mach_mips3000 3000
- #define bfd_mach_mips3900 3900
- #define bfd_mach_mips4000 4000
- #define bfd_mach_mips4010 4010
- #define bfd_mach_mips4100 4100
- #define bfd_mach_mips4111 4111
- #define bfd_mach_mips4120 4120
- #define bfd_mach_mips4300 4300
- #define bfd_mach_mips4400 4400
- #define bfd_mach_mips4600 4600
- #define bfd_mach_mips4650 4650
- #define bfd_mach_mips5000 5000
- #define bfd_mach_mips5400 5400
- #define bfd_mach_mips5500 5500
- #define bfd_mach_mips5900 5900
- #define bfd_mach_mips6000 6000
- #define bfd_mach_mips7000 7000
- #define bfd_mach_mips8000 8000
- #define bfd_mach_mips9000 9000
- #define bfd_mach_mips10000 10000
- #define bfd_mach_mips12000 12000
- #define bfd_mach_mips14000 14000
- #define bfd_mach_mips16000 16000
- #define bfd_mach_mips16 16
- #define bfd_mach_mips5 5
- #define bfd_mach_mips_loongson_2e 3001
- #define bfd_mach_mips_loongson_2f 3002
- #define bfd_mach_mips_gs464 3003
- #define bfd_mach_mips_gs464e 3004
- #define bfd_mach_mips_gs264e 3005
- #define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01. */
- #define bfd_mach_mips_octeon 6501
- #define bfd_mach_mips_octeonp 6601
- #define bfd_mach_mips_octeon2 6502
- #define bfd_mach_mips_octeon3 6503
- #define bfd_mach_mips_xlr 887682 /* decimal 'XLR'. */
- #define bfd_mach_mips_interaptiv_mr2 736550 /* decimal 'IA2'. */
- #define bfd_mach_mipsisa32 32
- #define bfd_mach_mipsisa32r2 33
- #define bfd_mach_mipsisa32r3 34
- #define bfd_mach_mipsisa32r5 36
- #define bfd_mach_mipsisa32r6 37
- #define bfd_mach_mipsisa64 64
- #define bfd_mach_mipsisa64r2 65
- #define bfd_mach_mipsisa64r3 66
- #define bfd_mach_mipsisa64r5 68
- #define bfd_mach_mipsisa64r6 69
- #define bfd_mach_mips_micromips 96
- bfd_arch_i386, /* Intel 386. */
- #define bfd_mach_i386_intel_syntax (1 << 0)
- #define bfd_mach_i386_i8086 (1 << 1)
- #define bfd_mach_i386_i386 (1 << 2)
- #define bfd_mach_x86_64 (1 << 3)
- #define bfd_mach_x64_32 (1 << 4)
- #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
- #define bfd_mach_x86_64_intel_syntax (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
- #define bfd_mach_x64_32_intel_syntax (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
- bfd_arch_l1om, /* Intel L1OM. */
- #define bfd_mach_l1om (1 << 5)
- #define bfd_mach_l1om_intel_syntax (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
- bfd_arch_k1om, /* Intel K1OM. */
- #define bfd_mach_k1om (1 << 6)
- #define bfd_mach_k1om_intel_syntax (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
- #define bfd_mach_i386_nacl (1 << 7)
- #define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
- #define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl)
- #define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl)
- bfd_arch_iamcu, /* Intel MCU. */
- #define bfd_mach_iamcu (1 << 8)
- #define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu)
- #define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax)
- bfd_arch_romp, /* IBM ROMP PC/RT. */
- bfd_arch_convex, /* Convex. */
- bfd_arch_m98k, /* Motorola 98xxx. */
- bfd_arch_pyramid, /* Pyramid Technology. */
- bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300). */
- #define bfd_mach_h8300 1
- #define bfd_mach_h8300h 2
- #define bfd_mach_h8300s 3
- #define bfd_mach_h8300hn 4
- #define bfd_mach_h8300sn 5
- #define bfd_mach_h8300sx 6
- #define bfd_mach_h8300sxn 7
- bfd_arch_pdp11, /* DEC PDP-11. */
- bfd_arch_plugin,
- bfd_arch_powerpc, /* PowerPC. */
- #define bfd_mach_ppc 32
- #define bfd_mach_ppc64 64
- #define bfd_mach_ppc_403 403
- #define bfd_mach_ppc_403gc 4030
- #define bfd_mach_ppc_405 405
- #define bfd_mach_ppc_505 505
- #define bfd_mach_ppc_601 601
- #define bfd_mach_ppc_602 602
- #define bfd_mach_ppc_603 603
- #define bfd_mach_ppc_ec603e 6031
- #define bfd_mach_ppc_604 604
- #define bfd_mach_ppc_620 620
- #define bfd_mach_ppc_630 630
- #define bfd_mach_ppc_750 750
- #define bfd_mach_ppc_860 860
- #define bfd_mach_ppc_a35 35
- #define bfd_mach_ppc_rs64ii 642
- #define bfd_mach_ppc_rs64iii 643
- #define bfd_mach_ppc_7400 7400
- #define bfd_mach_ppc_e500 500
- #define bfd_mach_ppc_e500mc 5001
- #define bfd_mach_ppc_e500mc64 5005
- #define bfd_mach_ppc_e5500 5006
- #define bfd_mach_ppc_e6500 5007
- #define bfd_mach_ppc_titan 83
- #define bfd_mach_ppc_vle 84
- bfd_arch_rs6000, /* IBM RS/6000. */
- #define bfd_mach_rs6k 6000
- #define bfd_mach_rs6k_rs1 6001
- #define bfd_mach_rs6k_rsc 6003
- #define bfd_mach_rs6k_rs2 6002
- bfd_arch_hppa, /* HP PA RISC. */
- #define bfd_mach_hppa10 10
- #define bfd_mach_hppa11 11
- #define bfd_mach_hppa20 20
- #define bfd_mach_hppa20w 25
- bfd_arch_d10v, /* Mitsubishi D10V. */
- #define bfd_mach_d10v 1
- #define bfd_mach_d10v_ts2 2
- #define bfd_mach_d10v_ts3 3
- bfd_arch_d30v, /* Mitsubishi D30V. */
- bfd_arch_dlx, /* DLX. */
- bfd_arch_m68hc11, /* Motorola 68HC11. */
- bfd_arch_m68hc12, /* Motorola 68HC12. */
- #define bfd_mach_m6812_default 0
- #define bfd_mach_m6812 1
- #define bfd_mach_m6812s 2
- bfd_arch_m9s12x, /* Freescale S12X. */
- bfd_arch_m9s12xg, /* Freescale XGATE. */
- bfd_arch_s12z, /* Freescale S12Z. */
- #define bfd_mach_s12z_default 0
- bfd_arch_z8k, /* Zilog Z8000. */
- #define bfd_mach_z8001 1
- #define bfd_mach_z8002 2
- bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH). */
- #define bfd_mach_sh 1
- #define bfd_mach_sh2 0x20
- #define bfd_mach_sh_dsp 0x2d
- #define bfd_mach_sh2a 0x2a
- #define bfd_mach_sh2a_nofpu 0x2b
- #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
- #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
- #define bfd_mach_sh2a_or_sh4 0x2a3
- #define bfd_mach_sh2a_or_sh3e 0x2a4
- #define bfd_mach_sh2e 0x2e
- #define bfd_mach_sh3 0x30
- #define bfd_mach_sh3_nommu 0x31
- #define bfd_mach_sh3_dsp 0x3d
- #define bfd_mach_sh3e 0x3e
- #define bfd_mach_sh4 0x40
- #define bfd_mach_sh4_nofpu 0x41
- #define bfd_mach_sh4_nommu_nofpu 0x42
- #define bfd_mach_sh4a 0x4a
- #define bfd_mach_sh4a_nofpu 0x4b
- #define bfd_mach_sh4al_dsp 0x4d
- bfd_arch_alpha, /* Dec Alpha. */
- #define bfd_mach_alpha_ev4 0x10
- #define bfd_mach_alpha_ev5 0x20
- #define bfd_mach_alpha_ev6 0x30
- bfd_arch_arm, /* Advanced Risc Machines ARM. */
- #define bfd_mach_arm_unknown 0
- #define bfd_mach_arm_2 1
- #define bfd_mach_arm_2a 2
- #define bfd_mach_arm_3 3
- #define bfd_mach_arm_3M 4
- #define bfd_mach_arm_4 5
- #define bfd_mach_arm_4T 6
- #define bfd_mach_arm_5 7
- #define bfd_mach_arm_5T 8
- #define bfd_mach_arm_5TE 9
- #define bfd_mach_arm_XScale 10
- #define bfd_mach_arm_ep9312 11
- #define bfd_mach_arm_iWMMXt 12
- #define bfd_mach_arm_iWMMXt2 13
- #define bfd_mach_arm_5TEJ 14
- #define bfd_mach_arm_6 15
- #define bfd_mach_arm_6KZ 16
- #define bfd_mach_arm_6T2 17
- #define bfd_mach_arm_6K 18
- #define bfd_mach_arm_7 19
- #define bfd_mach_arm_6M 20
- #define bfd_mach_arm_6SM 21
- #define bfd_mach_arm_7EM 22
- #define bfd_mach_arm_8 23
- #define bfd_mach_arm_8R 24
- #define bfd_mach_arm_8M_BASE 25
- #define bfd_mach_arm_8M_MAIN 26
- #define bfd_mach_arm_8_1M_MAIN 27
- bfd_arch_nds32, /* Andes NDS32. */
- #define bfd_mach_n1 1
- #define bfd_mach_n1h 2
- #define bfd_mach_n1h_v2 3
- #define bfd_mach_n1h_v3 4
- #define bfd_mach_n1h_v3m 5
- bfd_arch_ns32k, /* National Semiconductors ns32000. */
- bfd_arch_tic30, /* Texas Instruments TMS320C30. */
- bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X. */
- #define bfd_mach_tic3x 30
- #define bfd_mach_tic4x 40
- bfd_arch_tic54x, /* Texas Instruments TMS320C54X. */
- bfd_arch_tic6x, /* Texas Instruments TMS320C6X. */
- bfd_arch_tic80, /* TI TMS320c80 (MVP). */
- bfd_arch_v850, /* NEC V850. */
- bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI). */
- #define bfd_mach_v850 1
- #define bfd_mach_v850e 'E'
- #define bfd_mach_v850e1 '1'
- #define bfd_mach_v850e2 0x4532
- #define bfd_mach_v850e2v3 0x45325633
- #define bfd_mach_v850e3v5 0x45335635 /* ('E'|'3'|'V'|'5'). */
- bfd_arch_arc, /* ARC Cores. */
- #define bfd_mach_arc_a4 0
- #define bfd_mach_arc_a5 1
- #define bfd_mach_arc_arc600 2
- #define bfd_mach_arc_arc601 4
- #define bfd_mach_arc_arc700 3
- #define bfd_mach_arc_arcv2 5
- bfd_arch_m32c, /* Renesas M16C/M32C. */
- #define bfd_mach_m16c 0x75
- #define bfd_mach_m32c 0x78
- bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D). */
- #define bfd_mach_m32r 1 /* For backwards compatibility. */
- #define bfd_mach_m32rx 'x'
- #define bfd_mach_m32r2 '2'
- bfd_arch_mn10200, /* Matsushita MN10200. */
- bfd_arch_mn10300, /* Matsushita MN10300. */
- #define bfd_mach_mn10300 300
- #define bfd_mach_am33 330
- #define bfd_mach_am33_2 332
- bfd_arch_fr30,
- #define bfd_mach_fr30 0x46523330
- bfd_arch_frv,
- #define bfd_mach_frv 1
- #define bfd_mach_frvsimple 2
- #define bfd_mach_fr300 300
- #define bfd_mach_fr400 400
- #define bfd_mach_fr450 450
- #define bfd_mach_frvtomcat 499 /* fr500 prototype. */
- #define bfd_mach_fr500 500
- #define bfd_mach_fr550 550
- bfd_arch_moxie, /* The moxie processor. */
- #define bfd_mach_moxie 1
- bfd_arch_ft32, /* The ft32 processor. */
- #define bfd_mach_ft32 1
- #define bfd_mach_ft32b 2
- bfd_arch_mcore,
- bfd_arch_mep,
- #define bfd_mach_mep 1
- #define bfd_mach_mep_h1 0x6831
- #define bfd_mach_mep_c5 0x6335
- bfd_arch_metag,
- #define bfd_mach_metag 1
- bfd_arch_ia64, /* HP/Intel ia64. */
- #define bfd_mach_ia64_elf64 64
- #define bfd_mach_ia64_elf32 32
- bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
- #define bfd_mach_ip2022 1
- #define bfd_mach_ip2022ext 2
- bfd_arch_iq2000, /* Vitesse IQ2000. */
- #define bfd_mach_iq2000 1
- #define bfd_mach_iq10 2
- bfd_arch_bpf, /* Linux eBPF. */
- #define bfd_mach_bpf 1
- bfd_arch_epiphany, /* Adapteva EPIPHANY. */
- #define bfd_mach_epiphany16 1
- #define bfd_mach_epiphany32 2
- bfd_arch_mt,
- #define bfd_mach_ms1 1
- #define bfd_mach_mrisc2 2
- #define bfd_mach_ms2 3
- bfd_arch_pj,
- bfd_arch_avr, /* Atmel AVR microcontrollers. */
- #define bfd_mach_avr1 1
- #define bfd_mach_avr2 2
- #define bfd_mach_avr25 25
- #define bfd_mach_avr3 3
- #define bfd_mach_avr31 31
- #define bfd_mach_avr35 35
- #define bfd_mach_avr4 4
- #define bfd_mach_avr5 5
- #define bfd_mach_avr51 51
- #define bfd_mach_avr6 6
- #define bfd_mach_avrtiny 100
- #define bfd_mach_avrxmega1 101
- #define bfd_mach_avrxmega2 102
- #define bfd_mach_avrxmega3 103
- #define bfd_mach_avrxmega4 104
- #define bfd_mach_avrxmega5 105
- #define bfd_mach_avrxmega6 106
- #define bfd_mach_avrxmega7 107
- bfd_arch_bfin, /* ADI Blackfin. */
- #define bfd_mach_bfin 1
- bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
- #define bfd_mach_cr16 1
- bfd_arch_crx, /* National Semiconductor CRX. */
- #define bfd_mach_crx 1
- bfd_arch_cris, /* Axis CRIS. */
- #define bfd_mach_cris_v0_v10 255
- #define bfd_mach_cris_v32 32
- #define bfd_mach_cris_v10_v32 1032
- bfd_arch_riscv,
- #define bfd_mach_riscv32 132
- #define bfd_mach_riscv64 164
- bfd_arch_rl78,
- #define bfd_mach_rl78 0x75
- bfd_arch_rx, /* Renesas RX. */
- #define bfd_mach_rx 0x75
- #define bfd_mach_rx_v2 0x76
- #define bfd_mach_rx_v3 0x77
- bfd_arch_s390, /* IBM s390. */
- #define bfd_mach_s390_31 31
- #define bfd_mach_s390_64 64
- bfd_arch_score, /* Sunplus score. */
- #define bfd_mach_score3 3
- #define bfd_mach_score7 7
- bfd_arch_mmix, /* Donald Knuth's educational processor. */
- bfd_arch_xstormy16,
- #define bfd_mach_xstormy16 1
- bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
- #define bfd_mach_msp11 11
- #define bfd_mach_msp110 110
- #define bfd_mach_msp12 12
- #define bfd_mach_msp13 13
- #define bfd_mach_msp14 14
- #define bfd_mach_msp15 15
- #define bfd_mach_msp16 16
- #define bfd_mach_msp20 20
- #define bfd_mach_msp21 21
- #define bfd_mach_msp22 22
- #define bfd_mach_msp23 23
- #define bfd_mach_msp24 24
- #define bfd_mach_msp26 26
- #define bfd_mach_msp31 31
- #define bfd_mach_msp32 32
- #define bfd_mach_msp33 33
- #define bfd_mach_msp41 41
- #define bfd_mach_msp42 42
- #define bfd_mach_msp43 43
- #define bfd_mach_msp44 44
- #define bfd_mach_msp430x 45
- #define bfd_mach_msp46 46
- #define bfd_mach_msp47 47
- #define bfd_mach_msp54 54
- bfd_arch_xc16x, /* Infineon's XC16X Series. */
- #define bfd_mach_xc16x 1
- #define bfd_mach_xc16xl 2
- #define bfd_mach_xc16xs 3
- bfd_arch_xgate, /* Freescale XGATE. */
- #define bfd_mach_xgate 1
- bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
- #define bfd_mach_xtensa 1
- bfd_arch_z80,
- #define bfd_mach_z80strict 1 /* No undocumented opcodes. */
- #define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
- #define bfd_mach_z80full 7 /* All undocumented instructions. */
- #define bfd_mach_r800 11 /* R800: successor with multiplication. */
- bfd_arch_lm32, /* Lattice Mico32. */
- #define bfd_mach_lm32 1
- bfd_arch_microblaze,/* Xilinx MicroBlaze. */
- bfd_arch_tilepro, /* Tilera TILEPro. */
- bfd_arch_tilegx, /* Tilera TILE-Gx. */
- #define bfd_mach_tilepro 1
- #define bfd_mach_tilegx 1
- #define bfd_mach_tilegx32 2
- bfd_arch_aarch64, /* AArch64. */
- #define bfd_mach_aarch64 0
- #define bfd_mach_aarch64_ilp32 32
- bfd_arch_nios2, /* Nios II. */
- #define bfd_mach_nios2 0
- #define bfd_mach_nios2r1 1
- #define bfd_mach_nios2r2 2
- bfd_arch_visium, /* Visium. */
- #define bfd_mach_visium 1
- bfd_arch_wasm32, /* WebAssembly. */
- #define bfd_mach_wasm32 1
- bfd_arch_pru, /* PRU. */
- #define bfd_mach_pru 0
- bfd_arch_nfp, /* Netronome Flow Processor */
- #define bfd_mach_nfp3200 0x3200
- #define bfd_mach_nfp6000 0x6000
- bfd_arch_csky, /* C-SKY. */
- #define bfd_mach_ck_unknown 0
- #define bfd_mach_ck510 1
- #define bfd_mach_ck610 2
- #define bfd_mach_ck801 3
- #define bfd_mach_ck802 4
- #define bfd_mach_ck803 5
- #define bfd_mach_ck807 6
- #define bfd_mach_ck810 7
- bfd_arch_last
- };
- 2.13.2 bfd_arch_info
- --------------------
- *Description*
- This structure contains information on architectures for use within BFD.
- typedef struct bfd_arch_info
- {
- int bits_per_word;
- int bits_per_address;
- int bits_per_byte;
- enum bfd_architecture arch;
- unsigned long mach;
- const char *arch_name;
- const char *printable_name;
- unsigned int section_align_power;
- /* TRUE if this is the default machine for the architecture.
- The default arch should be the first entry for an arch so that
- all the entries for that arch can be accessed via next. */
- bfd_boolean the_default;
- const struct bfd_arch_info * (*compatible) (const struct bfd_arch_info *,
- const struct bfd_arch_info *);
- bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
- /* Allocate via bfd_malloc and return a fill buffer of size COUNT. If
- IS_BIGENDIAN is TRUE, the order of bytes is big endian. If CODE is
- TRUE, the buffer contains code. */
- void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
- bfd_boolean code);
- const struct bfd_arch_info *next;
- /* On some architectures the offset for a relocation can point into
- the middle of an instruction. This field specifies the maximum
- offset such a relocation can have (in octets). This affects the
- behaviour of the disassembler, since a value greater than zero
- means that it may need to disassemble an instruction twice, once
- to get its length and then a second time to display it. If the
- value is negative then this has to be done for every single
- instruction, regardless of the offset of the reloc. */
- signed int max_reloc_offset_into_insn;
- }
- bfd_arch_info_type;
- 2.13.2.1 'bfd_printable_name'
- .............................
- *Synopsis*
- const char *bfd_printable_name (bfd *abfd);
- *Description*
- Return a printable string representing the architecture and machine from
- the pointer to the architecture info structure.
- 2.13.2.2 'bfd_scan_arch'
- ........................
- *Synopsis*
- const bfd_arch_info_type *bfd_scan_arch (const char *string);
- *Description*
- Figure out if BFD supports any cpu which could be described with the
- name STRING. Return a pointer to an 'arch_info' structure if a machine
- is found, otherwise NULL.
- 2.13.2.3 'bfd_arch_list'
- ........................
- *Synopsis*
- const char **bfd_arch_list (void);
- *Description*
- Return a freshly malloced NULL-terminated vector of the names of all the
- valid BFD architectures. Do not modify the names.
- 2.13.2.4 'bfd_arch_get_compatible'
- ..................................
- *Synopsis*
- const bfd_arch_info_type *bfd_arch_get_compatible
- (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
- *Description*
- Determine whether two BFDs' architectures and machine types are
- compatible. Calculates the lowest common denominator between the two
- architectures and machine types implied by the BFDs and returns a
- pointer to an 'arch_info' structure describing the compatible machine.
- 2.13.2.5 'bfd_default_arch_struct'
- ..................................
- *Description*
- The 'bfd_default_arch_struct' is an item of 'bfd_arch_info_type' which
- has been initialized to a fairly generic state. A BFD starts life by
- pointing to this structure, until the correct back end has determined
- the real architecture of the file.
- extern const bfd_arch_info_type bfd_default_arch_struct;
- 2.13.2.6 'bfd_set_arch_info'
- ............................
- *Synopsis*
- void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
- *Description*
- Set the architecture info of ABFD to ARG.
- 2.13.2.7 'bfd_default_set_arch_mach'
- ....................................
- *Synopsis*
- bfd_boolean bfd_default_set_arch_mach
- (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
- *Description*
- Set the architecture and machine type in BFD ABFD to ARCH and MACH.
- Find the correct pointer to a structure and insert it into the
- 'arch_info' pointer.
- 2.13.2.8 'bfd_get_arch'
- .......................
- *Synopsis*
- enum bfd_architecture bfd_get_arch (const bfd *abfd);
- *Description*
- Return the enumerated type which describes the BFD ABFD's architecture.
- 2.13.2.9 'bfd_get_mach'
- .......................
- *Synopsis*
- unsigned long bfd_get_mach (const bfd *abfd);
- *Description*
- Return the long type which describes the BFD ABFD's machine.
- 2.13.2.10 'bfd_arch_bits_per_byte'
- ..................................
- *Synopsis*
- unsigned int bfd_arch_bits_per_byte (const bfd *abfd);
- *Description*
- Return the number of bits in one of the BFD ABFD's architecture's bytes.
- 2.13.2.11 'bfd_arch_bits_per_address'
- .....................................
- *Synopsis*
- unsigned int bfd_arch_bits_per_address (const bfd *abfd);
- *Description*
- Return the number of bits in one of the BFD ABFD's architecture's
- addresses.
- 2.13.2.12 'bfd_default_compatible'
- ..................................
- *Synopsis*
- const bfd_arch_info_type *bfd_default_compatible
- (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
- *Description*
- The default function for testing for compatibility.
- 2.13.2.13 'bfd_default_scan'
- ............................
- *Synopsis*
- bfd_boolean bfd_default_scan
- (const struct bfd_arch_info *info, const char *string);
- *Description*
- The default function for working out whether this is an architecture hit
- and a machine hit.
- 2.13.2.14 'bfd_get_arch_info'
- .............................
- *Synopsis*
- const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
- *Description*
- Return the architecture info struct in ABFD.
- 2.13.2.15 'bfd_lookup_arch'
- ...........................
- *Synopsis*
- const bfd_arch_info_type *bfd_lookup_arch
- (enum bfd_architecture arch, unsigned long machine);
- *Description*
- Look for the architecture info structure which matches the arguments
- ARCH and MACHINE. A machine of 0 matches the machine/architecture
- structure which marks itself as the default.
- 2.13.2.16 'bfd_printable_arch_mach'
- ...................................
- *Synopsis*
- const char *bfd_printable_arch_mach
- (enum bfd_architecture arch, unsigned long machine);
- *Description*
- Return a printable string representing the architecture and machine
- type.
- This routine is depreciated.
- 2.13.2.17 'bfd_octets_per_byte'
- ...............................
- *Synopsis*
- unsigned int bfd_octets_per_byte (const bfd *abfd,
- const asection *sec);
- *Description*
- Return the number of octets (8-bit quantities) per target byte (minimum
- addressable unit). In most cases, this will be one, but some DSP
- targets have 16, 32, or even 48 bits per byte.
- 2.13.2.18 'bfd_arch_mach_octets_per_byte'
- .........................................
- *Synopsis*
- unsigned int bfd_arch_mach_octets_per_byte
- (enum bfd_architecture arch, unsigned long machine);
- *Description*
- See bfd_octets_per_byte.
- This routine is provided for those cases where a bfd * is not
- available
- 2.13.2.19 'bfd_arch_default_fill'
- .................................
- *Synopsis*
- void *bfd_arch_default_fill (bfd_size_type count,
- bfd_boolean is_bigendian,
- bfd_boolean code);
- *Description*
- Allocate via bfd_malloc and return a fill buffer of size COUNT. If
- IS_BIGENDIAN is TRUE, the order of bytes is big endian. If CODE is
- TRUE, the buffer contains code.
- File: bfd.info, Node: Opening and Closing, Next: Internal, Prev: Architectures, Up: BFD front end
- /* Set to N to open the next N BFDs using an alternate id space. */
- extern unsigned int bfd_use_reserved_id;
- 2.14 Opening and closing BFDs
- =============================
- 2.14.1 Functions for opening and closing
- ----------------------------------------
- 2.14.1.1 'bfd_fopen'
- ....................
- *Synopsis*
- bfd *bfd_fopen (const char *filename, const char *target,
- const char *mode, int fd);
- *Description*
- Open the file FILENAME with the target TARGET. Return a pointer to the
- created BFD. If FD is not -1, then 'fdopen' is used to open the file;
- otherwise, 'fopen' is used. MODE is passed directly to 'fopen' or
- 'fdopen'.
- Calls 'bfd_find_target', so TARGET is interpreted as by that
- function.
- The new BFD is marked as cacheable iff FD is -1.
- If 'NULL' is returned then an error has occured. Possible errors are
- 'bfd_error_no_memory', 'bfd_error_invalid_target' or 'system_call'
- error.
- On error, FD is always closed.
- A copy of the FILENAME argument is stored in the newly created BFD.
- It can be accessed via the bfd_get_filename() macro.
- 2.14.1.2 'bfd_openr'
- ....................
- *Synopsis*
- bfd *bfd_openr (const char *filename, const char *target);
- *Description*
- Open the file FILENAME (using 'fopen') with the target TARGET. Return a
- pointer to the created BFD.
- Calls 'bfd_find_target', so TARGET is interpreted as by that
- function.
- If 'NULL' is returned then an error has occured. Possible errors are
- 'bfd_error_no_memory', 'bfd_error_invalid_target' or 'system_call'
- error.
- A copy of the FILENAME argument is stored in the newly created BFD.
- It can be accessed via the bfd_get_filename() macro.
- 2.14.1.3 'bfd_fdopenr'
- ......................
- *Synopsis*
- bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
- *Description*
- 'bfd_fdopenr' is to 'bfd_fopenr' much like 'fdopen' is to 'fopen'. It
- opens a BFD on a file already described by the FD supplied.
- When the file is later 'bfd_close'd, the file descriptor will be
- closed. If the caller desires that this file descriptor be cached by
- BFD (opened as needed, closed as needed to free descriptors for other
- opens), with the supplied FD used as an initial file descriptor (but
- subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the
- returned BFD. The default is to assume no caching; the file descriptor
- will remain open until 'bfd_close', and will not be affected by BFD
- operations on other files.
- Possible errors are 'bfd_error_no_memory', 'bfd_error_invalid_target'
- and 'bfd_error_system_call'.
- On error, FD is closed.
- A copy of the FILENAME argument is stored in the newly created BFD.
- It can be accessed via the bfd_get_filename() macro.
- 2.14.1.4 'bfd_openstreamr'
- ..........................
- *Synopsis*
- bfd *bfd_openstreamr (const char * filename, const char * target,
- void * stream);
- *Description*
- Open a BFD for read access on an existing stdio stream. When the BFD is
- passed to 'bfd_close', the stream will be closed.
- A copy of the FILENAME argument is stored in the newly created BFD.
- It can be accessed via the bfd_get_filename() macro.
- 2.14.1.5 'bfd_openr_iovec'
- ..........................
- *Synopsis*
- bfd *bfd_openr_iovec (const char *filename, const char *target,
- void *(*open_func) (struct bfd *nbfd,
- void *open_closure),
- void *open_closure,
- file_ptr (*pread_func) (struct bfd *nbfd,
- void *stream,
- void *buf,
- file_ptr nbytes,
- file_ptr offset),
- int (*close_func) (struct bfd *nbfd,
- void *stream),
- int (*stat_func) (struct bfd *abfd,
- void *stream,
- struct stat *sb));
- *Description*
- Create and return a BFD backed by a read-only STREAM. The STREAM is
- created using OPEN_FUNC, accessed using PREAD_FUNC and destroyed using
- CLOSE_FUNC.
- Calls 'bfd_find_target', so TARGET is interpreted as by that
- function.
- Calls OPEN_FUNC (which can call 'bfd_zalloc' and 'bfd_get_filename')
- to obtain the read-only stream backing the BFD. OPEN_FUNC either
- succeeds returning the non-'NULL' STREAM, or fails returning 'NULL'
- (setting 'bfd_error').
- Calls PREAD_FUNC to request NBYTES of data from STREAM starting at
- OFFSET (e.g., via a call to 'bfd_read'). PREAD_FUNC either succeeds
- returning the number of bytes read (which can be less than NBYTES when
- end-of-file), or fails returning -1 (setting 'bfd_error').
- Calls CLOSE_FUNC when the BFD is later closed using 'bfd_close'.
- CLOSE_FUNC either succeeds returning 0, or fails returning -1 (setting
- 'bfd_error').
- Calls STAT_FUNC to fill in a stat structure for bfd_stat,
- bfd_get_size, and bfd_get_mtime calls. STAT_FUNC returns 0 on success,
- or returns -1 on failure (setting 'bfd_error').
- If 'bfd_openr_iovec' returns 'NULL' then an error has occurred.
- Possible errors are 'bfd_error_no_memory', 'bfd_error_invalid_target'
- and 'bfd_error_system_call'.
- A copy of the FILENAME argument is stored in the newly created BFD.
- It can be accessed via the bfd_get_filename() macro.
- 2.14.1.6 'bfd_openw'
- ....................
- *Synopsis*
- bfd *bfd_openw (const char *filename, const char *target);
- *Description*
- Create a BFD, associated with file FILENAME, using the file format
- TARGET, and return a pointer to it.
- Possible errors are 'bfd_error_system_call', 'bfd_error_no_memory',
- 'bfd_error_invalid_target'.
- A copy of the FILENAME argument is stored in the newly created BFD.
- It can be accessed via the bfd_get_filename() macro.
- 2.14.1.7 'bfd_close'
- ....................
- *Synopsis*
- bfd_boolean bfd_close (bfd *abfd);
- *Description*
- Close a BFD. If the BFD was open for writing, then pending operations
- are completed and the file written out and closed. If the created file
- is executable, then 'chmod' is called to mark it as such.
- All memory attached to the BFD is released.
- The file descriptor associated with the BFD is closed (even if it was
- passed in to BFD by 'bfd_fdopenr').
- *Returns*
- 'TRUE' is returned if all is ok, otherwise 'FALSE'.
- 2.14.1.8 'bfd_close_all_done'
- .............................
- *Synopsis*
- bfd_boolean bfd_close_all_done (bfd *);
- *Description*
- Close a BFD. Differs from 'bfd_close' since it does not complete any
- pending operations. This routine would be used if the application had
- just used BFD for swapping and didn't want to use any of the writing
- code.
- If the created file is executable, then 'chmod' is called to mark it
- as such.
- All memory attached to the BFD is released.
- *Returns*
- 'TRUE' is returned if all is ok, otherwise 'FALSE'.
- 2.14.1.9 'bfd_create'
- .....................
- *Synopsis*
- bfd *bfd_create (const char *filename, bfd *templ);
- *Description*
- Create a new BFD in the manner of 'bfd_openw', but without opening a
- file. The new BFD takes the target from the target used by TEMPL. The
- format is always set to 'bfd_object'.
- A copy of the FILENAME argument is stored in the newly created BFD.
- It can be accessed via the bfd_get_filename() macro.
- 2.14.1.10 'bfd_make_writable'
- .............................
- *Synopsis*
- bfd_boolean bfd_make_writable (bfd *abfd);
- *Description*
- Takes a BFD as created by 'bfd_create' and converts it into one like as
- returned by 'bfd_openw'. It does this by converting the BFD to
- BFD_IN_MEMORY. It's assumed that you will call 'bfd_make_readable' on
- this bfd later.
- *Returns*
- 'TRUE' is returned if all is ok, otherwise 'FALSE'.
- 2.14.1.11 'bfd_make_readable'
- .............................
- *Synopsis*
- bfd_boolean bfd_make_readable (bfd *abfd);
- *Description*
- Takes a BFD as created by 'bfd_create' and 'bfd_make_writable' and
- converts it into one like as returned by 'bfd_openr'. It does this by
- writing the contents out to the memory buffer, then reversing the
- direction.
- *Returns*
- 'TRUE' is returned if all is ok, otherwise 'FALSE'.
- 2.14.1.12 'bfd_alloc'
- .....................
- *Synopsis*
- void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
- *Description*
- Allocate a block of WANTED bytes of memory attached to 'abfd' and return
- a pointer to it.
- 2.14.1.13 'bfd_alloc2'
- ......................
- *Synopsis*
- void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
- *Description*
- Allocate a block of NMEMB elements of SIZE bytes each of memory attached
- to 'abfd' and return a pointer to it.
- 2.14.1.14 'bfd_zalloc'
- ......................
- *Synopsis*
- void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
- *Description*
- Allocate a block of WANTED bytes of zeroed memory attached to 'abfd' and
- return a pointer to it.
- 2.14.1.15 'bfd_zalloc2'
- .......................
- *Synopsis*
- void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
- *Description*
- Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory
- attached to 'abfd' and return a pointer to it.
- 2.14.1.16 'bfd_calc_gnu_debuglink_crc32'
- ........................................
- *Synopsis*
- unsigned long bfd_calc_gnu_debuglink_crc32
- (unsigned long crc, const unsigned char *buf, bfd_size_type len);
- *Description*
- Computes a CRC value as used in the .gnu_debuglink section. Advances
- the previously computed CRC value by computing and adding in the crc32
- for LEN bytes of BUF.
- *Returns*
- Return the updated CRC32 value.
- 2.14.1.17 'bfd_get_debug_link_info_1'
- .....................................
- *Synopsis*
- char *bfd_get_debug_link_info_1 (bfd *abfd, void *crc32_out);
- *Description*
- Extracts the filename and CRC32 value for any separate debug information
- file associated with ABFD.
- The CRC32_OUT parameter is an untyped pointer because this routine is
- used as a 'get_func_type' function, but it is expected to be an unsigned
- long pointer.
- *Returns*
- The filename of the associated debug information file, or NULL if there
- is no such file. If the filename was found then the contents of
- CRC32_OUT are updated to hold the corresponding CRC32 value for the
- file.
- The returned filename is allocated with 'malloc'; freeing it is the
- responsibility of the caller.
- 2.14.1.18 'bfd_get_debug_link_info'
- ...................................
- *Synopsis*
- char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
- *Description*
- Extracts the filename and CRC32 value for any separate debug information
- file associated with ABFD.
- *Returns*
- The filename of the associated debug information file, or NULL if there
- is no such file. If the filename was found then the contents of
- CRC32_OUT are updated to hold the corresponding CRC32 value for the
- file.
- The returned filename is allocated with 'malloc'; freeing it is the
- responsibility of the caller.
- 2.14.1.19 'bfd_get_alt_debug_link_info'
- .......................................
- *Synopsis*
- char *bfd_get_alt_debug_link_info (bfd * abfd,
- bfd_size_type *buildid_len,
- bfd_byte **buildid_out);
- *Description*
- Fetch the filename and BuildID value for any alternate debuginfo
- associated with ABFD. Return NULL if no such info found, otherwise
- return filename and update BUILDID_LEN and BUILDID_OUT. The returned
- filename and build_id are allocated with 'malloc'; freeing them is the
- responsibility of the caller.
- 2.14.1.20 'separate_debug_file_exists'
- ......................................
- *Synopsis*
- bfd_boolean separate_debug_file_exists
- (char *name, void *crc32_p);
- *Description*
- Checks to see if NAME is a file and if its contents match CRC32, which
- is a pointer to an 'unsigned long' containing a CRC32.
- The CRC32_P parameter is an untyped pointer because this routine is
- used as a 'check_func_type' function.
- 2.14.1.21 'separate_alt_debug_file_exists'
- ..........................................
- *Synopsis*
- bfd_boolean separate_alt_debug_file_exists
- (char *name, void *unused);
- *Description*
- Checks to see if NAME is a file.
- 2.14.1.22 'find_separate_debug_file'
- ....................................
- *Synopsis*
- char *find_separate_debug_file
- (bfd *abfd, const char *dir, bfd_boolean include_dirs,
- get_func_type get, check_func_type check, void *data);
- *Description*
- Searches for a debug information file corresponding to ABFD.
- The name of the separate debug info file is returned by the GET
- function. This function scans various fixed locations in the
- filesystem, including the file tree rooted at DIR. If the INCLUDE_DIRS
- parameter is true then the directory components of ABFD's filename will
- be included in the searched locations.
- DATA is passed unmodified to the GET and CHECK functions. It is
- generally used to implement build-id-like matching in the callback
- functions.
- *Returns*
- Returns the filename of the first file to be found which receives a TRUE
- result from the CHECK function. Returns NULL if no valid file could be
- found.
- 2.14.1.23 'bfd_follow_gnu_debuglink'
- ....................................
- *Synopsis*
- char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
- *Description*
- Takes a BFD and searches it for a .gnu_debuglink section. If this
- section is found, it examines the section for the name and checksum of a
- '.debug' file containing auxiliary debugging information. It then
- searches the filesystem for this .debug file in some standard locations,
- including the directory tree rooted at DIR, and if found returns the
- full filename.
- If DIR is NULL, the search will take place starting at the current
- directory.
- *Returns*
- 'NULL' on any errors or failure to locate the .debug file, otherwise a
- pointer to a heap-allocated string containing the filename. The caller
- is responsible for freeing this string.
- 2.14.1.24 'bfd_follow_gnu_debugaltlink'
- .......................................
- *Synopsis*
- char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir);
- *Description*
- Takes a BFD and searches it for a .gnu_debugaltlink section. If this
- section is found, it examines the section for the name of a file
- containing auxiliary debugging information. It then searches the
- filesystem for this file in a set of standard locations, including the
- directory tree rooted at DIR, and if found returns the full filename.
- If DIR is NULL, the search will take place starting at the current
- directory.
- *Returns*
- 'NULL' on any errors or failure to locate the debug file, otherwise a
- pointer to a heap-allocated string containing the filename. The caller
- is responsible for freeing this string.
- 2.14.1.25 'bfd_create_gnu_debuglink_section'
- ............................................
- *Synopsis*
- struct bfd_section *bfd_create_gnu_debuglink_section
- (bfd *abfd, const char *filename);
- *Description*
- Takes a BFD and adds a .gnu_debuglink section to it. The section is
- sized to be big enough to contain a link to the specified FILENAME.
- *Returns*
- A pointer to the new section is returned if all is ok. Otherwise 'NULL'
- is returned and bfd_error is set.
- 2.14.1.26 'bfd_fill_in_gnu_debuglink_section'
- .............................................
- *Synopsis*
- bfd_boolean bfd_fill_in_gnu_debuglink_section
- (bfd *abfd, struct bfd_section *sect, const char *filename);
- *Description*
- Takes a BFD and containing a .gnu_debuglink section SECT and fills in
- the contents of the section to contain a link to the specified FILENAME.
- The filename should be relative to the current directory.
- *Returns*
- 'TRUE' is returned if all is ok. Otherwise 'FALSE' is returned and
- bfd_error is set.
- 2.14.1.27 'get_build_id'
- ........................
- *Synopsis*
- struct bfd_build_id * get_build_id (bfd *abfd);
- *Description*
- Finds the build-id associated with ABFD. If the build-id is extracted
- from the note section then a build-id structure is built for it, using
- memory allocated to ABFD, and this is then attached to the ABFD.
- *Returns*
- Returns a pointer to the build-id structure if a build-id could be
- found. If no build-id is found NULL is returned and error code is set.
- 2.14.1.28 'get_build_id_name'
- .............................
- *Synopsis*
- char * get_build_id_name (bfd *abfd, void *build_id_out_p)
- *Description*
- Searches ABFD for a build-id, and then constructs a pathname from it.
- The path is computed as .build-id/NN/NN+NN.debug where NNNN+NN is the
- build-id value as a hexadecimal string.
- *Returns*
- Returns the constructed filename or NULL upon error. It is the caller's
- responsibility to free the memory used to hold the filename. If a
- filename is returned then the BUILD_ID_OUT_P parameter (which points to
- a 'struct bfd_build_id' pointer) is set to a pointer to the build_id
- structure.
- 2.14.1.29 'check_build_id_file'
- ...............................
- *Synopsis*
- bfd_boolean check_build_id_file (char *name, void *buildid_p);
- *Description*
- Checks to see if NAME is a readable file and if its build-id matches
- BUILDID.
- *Returns*
- Returns TRUE if the file exists, is readable, and contains a build-id
- which matches the build-id pointed at by BUILD_ID_P (which is really a
- 'struct bfd_build_id **').
- 2.14.1.30 'bfd_follow_build_id_debuglink'
- .........................................
- *Synopsis*
- char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
- *Description*
- Takes ABFD and searches it for a .note.gnu.build-id section. If this
- section is found, it extracts the value of the NT_GNU_BUILD_ID note,
- which should be a hexadecimal value NNNN+NN (for 32+ hex digits). It
- then searches the filesystem for a file named .BUILD-ID/NN/NN+NN.DEBUG
- in a set of standard locations, including the directory tree rooted at
- DIR. The filename of the first matching file to be found is returned.
- A matching file should contain a .note.gnu.build-id section with the
- same NNNN+NN note as ABFD, although this check is currently not
- implemented.
- If DIR is NULL, the search will take place starting at the current
- directory.
- *Returns*
- 'NULL' on any errors or failure to locate the debug file, otherwise a
- pointer to a heap-allocated string containing the filename. The caller
- is responsible for freeing this string.
- 2.14.1.31 'bfd_set_filename'
- ............................
- *Synopsis*
- void bfd_set_filename (bfd *abfd, char *filename);
- *Description*
- Set the filename of ABFD. The old filename, if any, is freed. FILENAME
- must be allocated using 'xmalloc'. After this call, it is owned ABFD.
- File: bfd.info, Node: Internal, Next: File Caching, Prev: Opening and Closing, Up: BFD front end
- 2.15 Implementation details
- ===========================
- 2.15.1 Internal functions
- -------------------------
- *Description*
- These routines are used within BFD. They are not intended for export,
- but are documented here for completeness.
- 2.15.1.1 'bfd_write_bigendian_4byte_int'
- ........................................
- *Synopsis*
- bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
- *Description*
- Write a 4 byte integer I to the output BFD ABFD, in big endian order
- regardless of what else is going on. This is useful in archives.
- 2.15.1.2 'bfd_put_size'
- .......................
- 2.15.1.3 'bfd_get_size'
- .......................
- *Description*
- These macros as used for reading and writing raw data in sections; each
- access (except for bytes) is vectored through the target format of the
- BFD and mangled accordingly. The mangling performs any necessary endian
- translations and removes alignment restrictions. Note that types
- accepted and returned by these macros are identical so they can be
- swapped around in macros--for example, 'libaout.h' defines 'GET_WORD' to
- either 'bfd_get_32' or 'bfd_get_64'.
- In the put routines, VAL must be a 'bfd_vma'. If we are on a system
- without prototypes, the caller is responsible for making sure that is
- true, with a cast if necessary. We don't cast them in the macro
- definitions because that would prevent 'lint' or 'gcc -Wall' from
- detecting sins such as passing a pointer. To detect calling these with
- less than a 'bfd_vma', use 'gcc -Wconversion' on a host with 64 bit
- 'bfd_vma''s.
- /* Byte swapping macros for user section data. */
- #define bfd_put_8(abfd, val, ptr) \
- ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
- #define bfd_put_signed_8 \
- bfd_put_8
- #define bfd_get_8(abfd, ptr) \
- ((bfd_vma) *(const unsigned char *) (ptr) & 0xff)
- #define bfd_get_signed_8(abfd, ptr) \
- ((((bfd_signed_vma) *(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
- #define bfd_put_16(abfd, val, ptr) \
- BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
- #define bfd_put_signed_16 \
- bfd_put_16
- #define bfd_get_16(abfd, ptr) \
- BFD_SEND (abfd, bfd_getx16, (ptr))
- #define bfd_get_signed_16(abfd, ptr) \
- BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
- #define bfd_put_24(abfd, val, ptr) \
- do \
- if (bfd_big_endian (abfd)) \
- bfd_putb24 ((val), (ptr)); \
- else \
- bfd_putl24 ((val), (ptr)); \
- while (0)
- bfd_vma bfd_getb24 (const void *p);
- bfd_vma bfd_getl24 (const void *p);
- #define bfd_get_24(abfd, ptr) \
- (bfd_big_endian (abfd) ? bfd_getb24 (ptr) : bfd_getl24 (ptr))
- #define bfd_put_32(abfd, val, ptr) \
- BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
- #define bfd_put_signed_32 \
- bfd_put_32
- #define bfd_get_32(abfd, ptr) \
- BFD_SEND (abfd, bfd_getx32, (ptr))
- #define bfd_get_signed_32(abfd, ptr) \
- BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
- #define bfd_put_64(abfd, val, ptr) \
- BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
- #define bfd_put_signed_64 \
- bfd_put_64
- #define bfd_get_64(abfd, ptr) \
- BFD_SEND (abfd, bfd_getx64, (ptr))
- #define bfd_get_signed_64(abfd, ptr) \
- BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
- #define bfd_get(bits, abfd, ptr) \
- ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
- : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
- : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
- : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
- : (abort (), (bfd_vma) - 1))
- #define bfd_put(bits, abfd, val, ptr) \
- ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
- : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
- : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
- : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
- : (abort (), (void) 0))
- 2.15.1.4 'bfd_h_put_size'
- .........................
- *Description*
- These macros have the same function as their 'bfd_get_x' brethren,
- except that they are used for removing information for the header
- records of object files. Believe it or not, some object files keep
- their header records in big endian order and their data in little endian
- order.
- /* Byte swapping macros for file header data. */
- #define bfd_h_put_8(abfd, val, ptr) \
- bfd_put_8 (abfd, val, ptr)
- #define bfd_h_put_signed_8(abfd, val, ptr) \
- bfd_put_8 (abfd, val, ptr)
- #define bfd_h_get_8(abfd, ptr) \
- bfd_get_8 (abfd, ptr)
- #define bfd_h_get_signed_8(abfd, ptr) \
- bfd_get_signed_8 (abfd, ptr)
- #define bfd_h_put_16(abfd, val, ptr) \
- BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
- #define bfd_h_put_signed_16 \
- bfd_h_put_16
- #define bfd_h_get_16(abfd, ptr) \
- BFD_SEND (abfd, bfd_h_getx16, (ptr))
- #define bfd_h_get_signed_16(abfd, ptr) \
- BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
- #define bfd_h_put_32(abfd, val, ptr) \
- BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
- #define bfd_h_put_signed_32 \
- bfd_h_put_32
- #define bfd_h_get_32(abfd, ptr) \
- BFD_SEND (abfd, bfd_h_getx32, (ptr))
- #define bfd_h_get_signed_32(abfd, ptr) \
- BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
- #define bfd_h_put_64(abfd, val, ptr) \
- BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
- #define bfd_h_put_signed_64 \
- bfd_h_put_64
- #define bfd_h_get_64(abfd, ptr) \
- BFD_SEND (abfd, bfd_h_getx64, (ptr))
- #define bfd_h_get_signed_64(abfd, ptr) \
- BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
- /* Aliases for the above, which should eventually go away. */
- #define H_PUT_64 bfd_h_put_64
- #define H_PUT_32 bfd_h_put_32
- #define H_PUT_16 bfd_h_put_16
- #define H_PUT_8 bfd_h_put_8
- #define H_PUT_S64 bfd_h_put_signed_64
- #define H_PUT_S32 bfd_h_put_signed_32
- #define H_PUT_S16 bfd_h_put_signed_16
- #define H_PUT_S8 bfd_h_put_signed_8
- #define H_GET_64 bfd_h_get_64
- #define H_GET_32 bfd_h_get_32
- #define H_GET_16 bfd_h_get_16
- #define H_GET_8 bfd_h_get_8
- #define H_GET_S64 bfd_h_get_signed_64
- #define H_GET_S32 bfd_h_get_signed_32
- #define H_GET_S16 bfd_h_get_signed_16
- #define H_GET_S8 bfd_h_get_signed_8
- 2.15.1.5 'bfd_log2'
- ...................
- *Synopsis*
- unsigned int bfd_log2 (bfd_vma x);
- *Description*
- Return the log base 2 of the value supplied, rounded up. E.g., an X of
- 1025 returns 11. A X of 0 returns 0.
- File: bfd.info, Node: File Caching, Next: Linker Functions, Prev: Internal, Up: BFD front end
- 2.16 File caching
- =================
- The file caching mechanism is embedded within BFD and allows the
- application to open as many BFDs as it wants without regard to the
- underlying operating system's file descriptor limit (often as low as 20
- open files). The module in 'cache.c' maintains a least recently used
- list of 'bfd_cache_max_open' files, and exports the name
- 'bfd_cache_lookup', which runs around and makes sure that the required
- BFD is open. If not, then it chooses a file to close, closes it and
- opens the one wanted, returning its file handle.
- 2.16.1 Caching functions
- ------------------------
- 2.16.1.1 'bfd_cache_init'
- .........................
- *Synopsis*
- bfd_boolean bfd_cache_init (bfd *abfd);
- *Description*
- Add a newly opened BFD to the cache.
- 2.16.1.2 'bfd_cache_close'
- ..........................
- *Synopsis*
- bfd_boolean bfd_cache_close (bfd *abfd);
- *Description*
- Remove the BFD ABFD from the cache. If the attached file is open, then
- close it too.
- *Returns*
- 'FALSE' is returned if closing the file fails, 'TRUE' is returned if all
- is well.
- 2.16.1.3 'bfd_cache_close_all'
- ..............................
- *Synopsis*
- bfd_boolean bfd_cache_close_all (void);
- *Description*
- Remove all BFDs from the cache. If the attached file is open, then
- close it too.
- *Returns*
- 'FALSE' is returned if closing one of the file fails, 'TRUE' is returned
- if all is well.
- 2.16.1.4 'bfd_open_file'
- ........................
- *Synopsis*
- FILE* bfd_open_file (bfd *abfd);
- *Description*
- Call the OS to open a file for ABFD. Return the 'FILE *' (possibly
- 'NULL') that results from this operation. Set up the BFD so that future
- accesses know the file is open. If the 'FILE *' returned is 'NULL',
- then it won't have been put in the cache, so it won't have to be removed
- from it.
- File: bfd.info, Node: Linker Functions, Next: Hash Tables, Prev: File Caching, Up: BFD front end
- 2.17 Linker Functions
- =====================
- The linker uses three special entry points in the BFD target vector. It
- is not necessary to write special routines for these entry points when
- creating a new BFD back end, since generic versions are provided.
- However, writing them can speed up linking and make it use significantly
- less runtime memory.
- The first routine creates a hash table used by the other routines.
- The second routine adds the symbols from an object file to the hash
- table. The third routine takes all the object files and links them
- together to create the output file. These routines are designed so that
- the linker proper does not need to know anything about the symbols in
- the object files that it is linking. The linker merely arranges the
- sections as directed by the linker script and lets BFD handle the
- details of symbols and relocs.
- The second routine and third routines are passed a pointer to a
- 'struct bfd_link_info' structure (defined in 'bfdlink.h') which holds
- information relevant to the link, including the linker hash table (which
- was created by the first routine) and a set of callback functions to the
- linker proper.
- The generic linker routines are in 'linker.c', and use the header
- file 'genlink.h'. As of this writing, the only back ends which have
- implemented versions of these routines are a.out (in 'aoutx.h') and
- ECOFF (in 'ecoff.c'). The a.out routines are used as examples
- throughout this section.
- * Menu:
- * Creating a Linker Hash Table::
- * Adding Symbols to the Hash Table::
- * Performing the Final Link::
- File: bfd.info, Node: Creating a Linker Hash Table, Next: Adding Symbols to the Hash Table, Prev: Linker Functions, Up: Linker Functions
- 2.17.1 Creating a linker hash table
- -----------------------------------
- The linker routines must create a hash table, which must be derived from
- 'struct bfd_link_hash_table' described in 'bfdlink.c'. *Note Hash
- Tables::, for information on how to create a derived hash table. This
- entry point is called using the target vector of the linker output file.
- The '_bfd_link_hash_table_create' entry point must allocate and
- initialize an instance of the desired hash table. If the back end does
- not require any additional information to be stored with the entries in
- the hash table, the entry point may simply create a 'struct
- bfd_link_hash_table'. Most likely, however, some additional information
- will be needed.
- For example, with each entry in the hash table the a.out linker keeps
- the index the symbol has in the final output file (this index number is
- used so that when doing a relocatable link the symbol index used in the
- output file can be quickly filled in when copying over a reloc). The
- a.out linker code defines the required structures and functions for a
- hash table derived from 'struct bfd_link_hash_table'. The a.out linker
- hash table is created by the function
- 'NAME(aout,link_hash_table_create)'; it simply allocates space for the
- hash table, initializes it, and returns a pointer to it.
- When writing the linker routines for a new back end, you will
- generally not know exactly which fields will be required until you have
- finished. You should simply create a new hash table which defines no
- additional fields, and then simply add fields as they become necessary.
- File: bfd.info, Node: Adding Symbols to the Hash Table, Next: Performing the Final Link, Prev: Creating a Linker Hash Table, Up: Linker Functions
- 2.17.2 Adding symbols to the hash table
- ---------------------------------------
- The linker proper will call the '_bfd_link_add_symbols' entry point for
- each object file or archive which is to be linked (typically these are
- the files named on the command line, but some may also come from the
- linker script). The entry point is responsible for examining the file.
- For an object file, BFD must add any relevant symbol information to the
- hash table. For an archive, BFD must determine which elements of the
- archive should be used and adding them to the link.
- The a.out version of this entry point is
- 'NAME(aout,link_add_symbols)'.
- * Menu:
- * Differing file formats::
- * Adding symbols from an object file::
- * Adding symbols from an archive::
- File: bfd.info, Node: Differing file formats, Next: Adding symbols from an object file, Prev: Adding Symbols to the Hash Table, Up: Adding Symbols to the Hash Table
- 2.17.2.1 Differing file formats
- ...............................
- Normally all the files involved in a link will be of the same format,
- but it is also possible to link together different format object files,
- and the back end must support that. The '_bfd_link_add_symbols' entry
- point is called via the target vector of the file to be added. This has
- an important consequence: the function may not assume that the hash
- table is the type created by the corresponding
- '_bfd_link_hash_table_create' vector. All the '_bfd_link_add_symbols'
- function can assume about the hash table is that it is derived from
- 'struct bfd_link_hash_table'.
- Sometimes the '_bfd_link_add_symbols' function must store some
- information in the hash table entry to be used by the '_bfd_final_link'
- function. In such a case the output bfd xvec must be checked to make
- sure that the hash table was created by an object file of the same
- format.
- The '_bfd_final_link' routine must be prepared to handle a hash entry
- without any extra information added by the '_bfd_link_add_symbols'
- function. A hash entry without extra information will also occur when
- the linker script directs the linker to create a symbol. Note that,
- regardless of how a hash table entry is added, all the fields will be
- initialized to some sort of null value by the hash table entry
- initialization function.
- See 'ecoff_link_add_externals' for an example of how to check the
- output bfd before saving information (in this case, the ECOFF external
- symbol debugging information) in a hash table entry.
- File: bfd.info, Node: Adding symbols from an object file, Next: Adding symbols from an archive, Prev: Differing file formats, Up: Adding Symbols to the Hash Table
- 2.17.2.2 Adding symbols from an object file
- ...........................................
- When the '_bfd_link_add_symbols' routine is passed an object file, it
- must add all externally visible symbols in that object file to the hash
- table. The actual work of adding the symbol to the hash table is
- normally handled by the function '_bfd_generic_link_add_one_symbol'.
- The '_bfd_link_add_symbols' routine is responsible for reading all the
- symbols from the object file and passing the correct information to
- '_bfd_generic_link_add_one_symbol'.
- The '_bfd_link_add_symbols' routine should not use
- 'bfd_canonicalize_symtab' to read the symbols. The point of providing
- this routine is to avoid the overhead of converting the symbols into
- generic 'asymbol' structures.
- '_bfd_generic_link_add_one_symbol' handles the details of combining
- common symbols, warning about multiple definitions, and so forth. It
- takes arguments which describe the symbol to add, notably symbol flags,
- a section, and an offset. The symbol flags include such things as
- 'BSF_WEAK' or 'BSF_INDIRECT'. The section is a section in the object
- file, or something like 'bfd_und_section_ptr' for an undefined symbol or
- 'bfd_com_section_ptr' for a common symbol.
- If the '_bfd_final_link' routine is also going to need to read the
- symbol information, the '_bfd_link_add_symbols' routine should save it
- somewhere attached to the object file BFD. However, the information
- should only be saved if the 'keep_memory' field of the 'info' argument
- is TRUE, so that the '-no-keep-memory' linker switch is effective.
- The a.out function which adds symbols from an object file is
- 'aout_link_add_object_symbols', and most of the interesting work is in
- 'aout_link_add_symbols'. The latter saves pointers to the hash tables
- entries created by '_bfd_generic_link_add_one_symbol' indexed by symbol
- number, so that the '_bfd_final_link' routine does not have to call the
- hash table lookup routine to locate the entry.
- File: bfd.info, Node: Adding symbols from an archive, Prev: Adding symbols from an object file, Up: Adding Symbols to the Hash Table
- 2.17.2.3 Adding symbols from an archive
- .......................................
- When the '_bfd_link_add_symbols' routine is passed an archive, it must
- look through the symbols defined by the archive and decide which
- elements of the archive should be included in the link. For each such
- element it must call the 'add_archive_element' linker callback, and it
- must add the symbols from the object file to the linker hash table.
- (The callback may in fact indicate that a replacement BFD should be
- used, in which case the symbols from that BFD should be added to the
- linker hash table instead.)
- In most cases the work of looking through the symbols in the archive
- should be done by the '_bfd_generic_link_add_archive_symbols' function.
- '_bfd_generic_link_add_archive_symbols' is passed a function to call to
- make the final decision about adding an archive element to the link and
- to do the actual work of adding the symbols to the linker hash table.
- If the element is to be included, the 'add_archive_element' linker
- callback routine must be called with the element as an argument, and the
- element's symbols must be added to the linker hash table just as though
- the element had itself been passed to the '_bfd_link_add_symbols'
- function.
- When the a.out '_bfd_link_add_symbols' function receives an archive,
- it calls '_bfd_generic_link_add_archive_symbols' passing
- 'aout_link_check_archive_element' as the function argument.
- 'aout_link_check_archive_element' calls 'aout_link_check_ar_symbols'.
- If the latter decides to add the element (an element is only added if it
- provides a real, non-common, definition for a previously undefined or
- common symbol) it calls the 'add_archive_element' callback and then
- 'aout_link_check_archive_element' calls 'aout_link_add_symbols' to
- actually add the symbols to the linker hash table - possibly those of a
- substitute BFD, if the 'add_archive_element' callback avails itself of
- that option.
- The ECOFF back end is unusual in that it does not normally call
- '_bfd_generic_link_add_archive_symbols', because ECOFF archives already
- contain a hash table of symbols. The ECOFF back end searches the
- archive itself to avoid the overhead of creating a new hash table.
- File: bfd.info, Node: Performing the Final Link, Prev: Adding Symbols to the Hash Table, Up: Linker Functions
- 2.17.3 Performing the final link
- --------------------------------
- When all the input files have been processed, the linker calls the
- '_bfd_final_link' entry point of the output BFD. This routine is
- responsible for producing the final output file, which has several
- aspects. It must relocate the contents of the input sections and copy
- the data into the output sections. It must build an output symbol table
- including any local symbols from the input files and the global symbols
- from the hash table. When producing relocatable output, it must modify
- the input relocs and write them into the output file. There may also be
- object format dependent work to be done.
- The linker will also call the 'write_object_contents' entry point
- when the BFD is closed. The two entry points must work together in
- order to produce the correct output file.
- The details of how this works are inevitably dependent upon the
- specific object file format. The a.out '_bfd_final_link' routine is
- 'NAME(aout,final_link)'.
- * Menu:
- * Information provided by the linker::
- * Relocating the section contents::
- * Writing the symbol table::
- File: bfd.info, Node: Information provided by the linker, Next: Relocating the section contents, Prev: Performing the Final Link, Up: Performing the Final Link
- 2.17.3.1 Information provided by the linker
- ...........................................
- Before the linker calls the '_bfd_final_link' entry point, it sets up
- some data structures for the function to use.
- The 'input_bfds' field of the 'bfd_link_info' structure will point to
- a list of all the input files included in the link. These files are
- linked through the 'link.next' field of the 'bfd' structure.
- Each section in the output file will have a list of 'link_order'
- structures attached to the 'map_head.link_order' field (the 'link_order'
- structure is defined in 'bfdlink.h'). These structures describe how to
- create the contents of the output section in terms of the contents of
- various input sections, fill constants, and, eventually, other types of
- information. They also describe relocs that must be created by the BFD
- backend, but do not correspond to any input file; this is used to
- support -Ur, which builds constructors while generating a relocatable
- object file.
- File: bfd.info, Node: Relocating the section contents, Next: Writing the symbol table, Prev: Information provided by the linker, Up: Performing the Final Link
- 2.17.3.2 Relocating the section contents
- ........................................
- The '_bfd_final_link' function should look through the 'link_order'
- structures attached to each section of the output file. Each
- 'link_order' structure should either be handled specially, or it should
- be passed to the function '_bfd_default_link_order' which will do the
- right thing ('_bfd_default_link_order' is defined in 'linker.c').
- For efficiency, a 'link_order' of type 'bfd_indirect_link_order'
- whose associated section belongs to a BFD of the same format as the
- output BFD must be handled specially. This type of 'link_order'
- describes part of an output section in terms of a section belonging to
- one of the input files. The '_bfd_final_link' function should read the
- contents of the section and any associated relocs, apply the relocs to
- the section contents, and write out the modified section contents. If
- performing a relocatable link, the relocs themselves must also be
- modified and written out.
- The functions '_bfd_relocate_contents' and '_bfd_final_link_relocate'
- provide some general support for performing the actual relocations,
- notably overflow checking. Their arguments include information about
- the symbol the relocation is against and a 'reloc_howto_type' argument
- which describes the relocation to perform. These functions are defined
- in 'reloc.c'.
- The a.out function which handles reading, relocating, and writing
- section contents is 'aout_link_input_section'. The actual relocation is
- done in 'aout_link_input_section_std' and 'aout_link_input_section_ext'.
- File: bfd.info, Node: Writing the symbol table, Prev: Relocating the section contents, Up: Performing the Final Link
- 2.17.3.3 Writing the symbol table
- .................................
- The '_bfd_final_link' function must gather all the symbols in the input
- files and write them out. It must also write out all the symbols in the
- global hash table. This must be controlled by the 'strip' and 'discard'
- fields of the 'bfd_link_info' structure.
- The local symbols of the input files will not have been entered into
- the linker hash table. The '_bfd_final_link' routine must consider each
- input file and include the symbols in the output file. It may be
- convenient to do this when looking through the 'link_order' structures,
- or it may be done by stepping through the 'input_bfds' list.
- The '_bfd_final_link' routine must also traverse the global hash
- table to gather all the externally visible symbols. It is possible that
- most of the externally visible symbols may be written out when
- considering the symbols of each input file, but it is still necessary to
- traverse the hash table since the linker script may have defined some
- symbols that are not in any of the input files.
- The 'strip' field of the 'bfd_link_info' structure controls which
- symbols are written out. The possible values are listed in 'bfdlink.h'.
- If the value is 'strip_some', then the 'keep_hash' field of the
- 'bfd_link_info' structure is a hash table of symbols to keep; each
- symbol should be looked up in this hash table, and only symbols which
- are present should be included in the output file.
- If the 'strip' field of the 'bfd_link_info' structure permits local
- symbols to be written out, the 'discard' field is used to further
- controls which local symbols are included in the output file. If the
- value is 'discard_l', then all local symbols which begin with a certain
- prefix are discarded; this is controlled by the
- 'bfd_is_local_label_name' entry point.
- The a.out backend handles symbols by calling
- 'aout_link_write_symbols' on each input BFD and then traversing the
- global hash table with the function 'aout_link_write_other_symbol'. It
- builds a string table while writing out the symbols, which is written to
- the output file at the end of 'NAME(aout,final_link)'.
- 2.17.3.4 'bfd_link_split_section'
- .................................
- *Synopsis*
- bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
- *Description*
- Return nonzero if SEC should be split during a reloceatable or final
- link.
- #define bfd_link_split_section(abfd, sec) \
- BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
- 2.17.3.5 'bfd_section_already_linked'
- .....................................
- *Synopsis*
- bfd_boolean bfd_section_already_linked (bfd *abfd,
- asection *sec,
- struct bfd_link_info *info);
- *Description*
- Check if DATA has been already linked during a reloceatable or final
- link. Return TRUE if it has.
- #define bfd_section_already_linked(abfd, sec, info) \
- BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
- 2.17.3.6 'bfd_generic_define_common_symbol'
- ...........................................
- *Synopsis*
- bfd_boolean bfd_generic_define_common_symbol
- (bfd *output_bfd, struct bfd_link_info *info,
- struct bfd_link_hash_entry *h);
- *Description*
- Convert common symbol H into a defined symbol. Return TRUE on success
- and FALSE on failure.
- #define bfd_define_common_symbol(output_bfd, info, h) \
- BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
- 2.17.3.7 '_bfd_generic_link_hide_symbol'
- ........................................
- *Synopsis*
- void _bfd_generic_link_hide_symbol
- (bfd *output_bfd, struct bfd_link_info *info,
- struct bfd_link_hash_entry *h);
- *Description*
- Hide symbol H. This is an internal function. It should not be called
- from outside the BFD library.
- #define bfd_link_hide_symbol(output_bfd, info, h) \
- BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h))
- 2.17.3.8 'bfd_generic_define_start_stop'
- ........................................
- *Synopsis*
- struct bfd_link_hash_entry *bfd_generic_define_start_stop
- (struct bfd_link_info *info,
- const char *symbol, asection *sec);
- *Description*
- Define a __start, __stop, .startof. or .sizeof. symbol. Return the
- symbol or NULL if no such undefined symbol exists.
- #define bfd_define_start_stop(output_bfd, info, symbol, sec) \
- BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec))
- 2.17.3.9 'bfd_find_version_for_sym'
- ...................................
- *Synopsis*
- struct bfd_elf_version_tree * bfd_find_version_for_sym
- (struct bfd_elf_version_tree *verdefs,
- const char *sym_name, bfd_boolean *hide);
- *Description*
- Search an elf version script tree for symbol versioning info and export
- / don't-export status for a given symbol. Return non-NULL on success
- and NULL on failure; also sets the output 'hide' boolean parameter.
- 2.17.3.10 'bfd_hide_sym_by_version'
- ...................................
- *Synopsis*
- bfd_boolean bfd_hide_sym_by_version
- (struct bfd_elf_version_tree *verdefs, const char *sym_name);
- *Description*
- Search an elf version script tree for symbol versioning info for a given
- symbol. Return TRUE if the symbol is hidden.
- 2.17.3.11 'bfd_link_check_relocs'
- .................................
- *Synopsis*
- bfd_boolean bfd_link_check_relocs
- (bfd *abfd, struct bfd_link_info *info);
- *Description*
- Checks the relocs in ABFD for validity. Does not execute the relocs.
- Return TRUE if everything is OK, FALSE otherwise. This is the external
- entry point to this code.
- 2.17.3.12 '_bfd_generic_link_check_relocs'
- ..........................................
- *Synopsis*
- bfd_boolean _bfd_generic_link_check_relocs
- (bfd *abfd, struct bfd_link_info *info);
- *Description*
- Stub function for targets that do not implement reloc checking. Return
- TRUE. This is an internal function. It should not be called from
- outside the BFD library.
- 2.17.3.13 'bfd_merge_private_bfd_data'
- ......................................
- *Synopsis*
- bfd_boolean bfd_merge_private_bfd_data
- (bfd *ibfd, struct bfd_link_info *info);
- *Description*
- Merge private BFD information from the BFD IBFD to the the output file
- BFD when linking. Return 'TRUE' on success, 'FALSE' on error. Possible
- error returns are:
- * 'bfd_error_no_memory' - Not enough memory exists to create private
- data for OBFD.
- #define bfd_merge_private_bfd_data(ibfd, info) \
- BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
- (ibfd, info))
- 2.17.3.14 '_bfd_generic_verify_endian_match'
- ............................................
- *Synopsis*
- bfd_boolean _bfd_generic_verify_endian_match
- (bfd *ibfd, struct bfd_link_info *info);
- *Description*
- Can be used from / for bfd_merge_private_bfd_data to check that
- endianness matches between input and output file. Returns TRUE for a
- match, otherwise returns FALSE and emits an error.
- File: bfd.info, Node: Hash Tables, Prev: Linker Functions, Up: BFD front end
- 2.18 Hash Tables
- ================
- BFD provides a simple set of hash table functions. Routines are
- provided to initialize a hash table, to free a hash table, to look up a
- string in a hash table and optionally create an entry for it, and to
- traverse a hash table. There is currently no routine to delete an
- string from a hash table.
- The basic hash table does not permit any data to be stored with a
- string. However, a hash table is designed to present a base class from
- which other types of hash tables may be derived. These derived types
- may store additional information with the string. Hash tables were
- implemented in this way, rather than simply providing a data pointer in
- a hash table entry, because they were designed for use by the linker
- back ends. The linker may create thousands of hash table entries, and
- the overhead of allocating private data and storing and following
- pointers becomes noticeable.
- The basic hash table code is in 'hash.c'.
- * Menu:
- * Creating and Freeing a Hash Table::
- * Looking Up or Entering a String::
- * Traversing a Hash Table::
- * Deriving a New Hash Table Type::
- File: bfd.info, Node: Creating and Freeing a Hash Table, Next: Looking Up or Entering a String, Prev: Hash Tables, Up: Hash Tables
- 2.18.1 Creating and freeing a hash table
- ----------------------------------------
- To create a hash table, create an instance of a 'struct bfd_hash_table'
- (defined in 'bfd.h') and call 'bfd_hash_table_init' (if you know
- approximately how many entries you will need, the function
- 'bfd_hash_table_init_n', which takes a SIZE argument, may be used).
- 'bfd_hash_table_init' returns 'FALSE' if some sort of error occurs.
- The function 'bfd_hash_table_init' take as an argument a function to
- use to create new entries. For a basic hash table, use the function
- 'bfd_hash_newfunc'. *Note Deriving a New Hash Table Type::, for why you
- would want to use a different value for this argument.
- 'bfd_hash_table_init' will create an objalloc which will be used to
- allocate new entries. You may allocate memory on this objalloc using
- 'bfd_hash_allocate'.
- Use 'bfd_hash_table_free' to free up all the memory that has been
- allocated for a hash table. This will not free up the 'struct
- bfd_hash_table' itself, which you must provide.
- Use 'bfd_hash_set_default_size' to set the default size of hash table
- to use.
- File: bfd.info, Node: Looking Up or Entering a String, Next: Traversing a Hash Table, Prev: Creating and Freeing a Hash Table, Up: Hash Tables
- 2.18.2 Looking up or entering a string
- --------------------------------------
- The function 'bfd_hash_lookup' is used both to look up a string in the
- hash table and to create a new entry.
- If the CREATE argument is 'FALSE', 'bfd_hash_lookup' will look up a
- string. If the string is found, it will returns a pointer to a 'struct
- bfd_hash_entry'. If the string is not found in the table
- 'bfd_hash_lookup' will return 'NULL'. You should not modify any of the
- fields in the returns 'struct bfd_hash_entry'.
- If the CREATE argument is 'TRUE', the string will be entered into the
- hash table if it is not already there. Either way a pointer to a
- 'struct bfd_hash_entry' will be returned, either to the existing
- structure or to a newly created one. In this case, a 'NULL' return
- means that an error occurred.
- If the CREATE argument is 'TRUE', and a new entry is created, the
- COPY argument is used to decide whether to copy the string onto the hash
- table objalloc or not. If COPY is passed as 'FALSE', you must be
- careful not to deallocate or modify the string as long as the hash table
- exists.
- File: bfd.info, Node: Traversing a Hash Table, Next: Deriving a New Hash Table Type, Prev: Looking Up or Entering a String, Up: Hash Tables
- 2.18.3 Traversing a hash table
- ------------------------------
- The function 'bfd_hash_traverse' may be used to traverse a hash table,
- calling a function on each element. The traversal is done in a random
- order.
- 'bfd_hash_traverse' takes as arguments a function and a generic 'void
- *' pointer. The function is called with a hash table entry (a 'struct
- bfd_hash_entry *') and the generic pointer passed to
- 'bfd_hash_traverse'. The function must return a 'boolean' value, which
- indicates whether to continue traversing the hash table. If the
- function returns 'FALSE', 'bfd_hash_traverse' will stop the traversal
- and return immediately.
- File: bfd.info, Node: Deriving a New Hash Table Type, Prev: Traversing a Hash Table, Up: Hash Tables
- 2.18.4 Deriving a new hash table type
- -------------------------------------
- Many uses of hash tables want to store additional information which each
- entry in the hash table. Some also find it convenient to store
- additional information with the hash table itself. This may be done
- using a derived hash table.
- Since C is not an object oriented language, creating a derived hash
- table requires sticking together some boilerplate routines with a few
- differences specific to the type of hash table you want to create.
- An example of a derived hash table is the linker hash table. The
- structures for this are defined in 'bfdlink.h'. The functions are in
- 'linker.c'.
- You may also derive a hash table from an already derived hash table.
- For example, the a.out linker backend code uses a hash table derived
- from the linker hash table.
- * Menu:
- * Define the Derived Structures::
- * Write the Derived Creation Routine::
- * Write Other Derived Routines::
- File: bfd.info, Node: Define the Derived Structures, Next: Write the Derived Creation Routine, Prev: Deriving a New Hash Table Type, Up: Deriving a New Hash Table Type
- 2.18.4.1 Define the derived structures
- ......................................
- You must define a structure for an entry in the hash table, and a
- structure for the hash table itself.
- The first field in the structure for an entry in the hash table must
- be of the type used for an entry in the hash table you are deriving
- from. If you are deriving from a basic hash table this is 'struct
- bfd_hash_entry', which is defined in 'bfd.h'. The first field in the
- structure for the hash table itself must be of the type of the hash
- table you are deriving from itself. If you are deriving from a basic
- hash table, this is 'struct bfd_hash_table'.
- For example, the linker hash table defines 'struct
- bfd_link_hash_entry' (in 'bfdlink.h'). The first field, 'root', is of
- type 'struct bfd_hash_entry'. Similarly, the first field in 'struct
- bfd_link_hash_table', 'table', is of type 'struct bfd_hash_table'.
- File: bfd.info, Node: Write the Derived Creation Routine, Next: Write Other Derived Routines, Prev: Define the Derived Structures, Up: Deriving a New Hash Table Type
- 2.18.4.2 Write the derived creation routine
- ...........................................
- You must write a routine which will create and initialize an entry in
- the hash table. This routine is passed as the function argument to
- 'bfd_hash_table_init'.
- In order to permit other hash tables to be derived from the hash
- table you are creating, this routine must be written in a standard way.
- The first argument to the creation routine is a pointer to a hash
- table entry. This may be 'NULL', in which case the routine should
- allocate the right amount of space. Otherwise the space has already
- been allocated by a hash table type derived from this one.
- After allocating space, the creation routine must call the creation
- routine of the hash table type it is derived from, passing in a pointer
- to the space it just allocated. This will initialize any fields used by
- the base hash table.
- Finally the creation routine must initialize any local fields for the
- new hash table type.
- Here is a boilerplate example of a creation routine. FUNCTION_NAME
- is the name of the routine. ENTRY_TYPE is the type of an entry in the
- hash table you are creating. BASE_NEWFUNC is the name of the creation
- routine of the hash table type your hash table is derived from.
- struct bfd_hash_entry *
- FUNCTION_NAME (struct bfd_hash_entry *entry,
- struct bfd_hash_table *table,
- const char *string)
- {
- struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry;
- /* Allocate the structure if it has not already been allocated by a
- derived class. */
- if (ret == NULL)
- {
- ret = bfd_hash_allocate (table, sizeof (* ret));
- if (ret == NULL)
- return NULL;
- }
- /* Call the allocation method of the base class. */
- ret = ((ENTRY_TYPE *)
- BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string));
- /* Initialize the local fields here. */
- return (struct bfd_hash_entry *) ret;
- }
- *Description*
- The creation routine for the linker hash table, which is in 'linker.c',
- looks just like this example. FUNCTION_NAME is
- '_bfd_link_hash_newfunc'. ENTRY_TYPE is 'struct bfd_link_hash_entry'.
- BASE_NEWFUNC is 'bfd_hash_newfunc', the creation routine for a basic
- hash table.
- '_bfd_link_hash_newfunc' also initializes the local fields in a
- linker hash table entry: 'type', 'written' and 'next'.
- File: bfd.info, Node: Write Other Derived Routines, Prev: Write the Derived Creation Routine, Up: Deriving a New Hash Table Type
- 2.18.4.3 Write other derived routines
- .....................................
- You will want to write other routines for your new hash table, as well.
- You will want an initialization routine which calls the
- initialization routine of the hash table you are deriving from and
- initializes any other local fields. For the linker hash table, this is
- '_bfd_link_hash_table_init' in 'linker.c'.
- You will want a lookup routine which calls the lookup routine of the
- hash table you are deriving from and casts the result. The linker hash
- table uses 'bfd_link_hash_lookup' in 'linker.c' (this actually takes an
- additional argument which it uses to decide how to return the looked up
- value).
- You may want a traversal routine. This should just call the
- traversal routine of the hash table you are deriving from with
- appropriate casts. The linker hash table uses 'bfd_link_hash_traverse'
- in 'linker.c'.
- These routines may simply be defined as macros. For example, the
- a.out backend linker hash table, which is derived from the linker hash
- table, uses macros for the lookup and traversal routines. These are
- 'aout_link_hash_lookup' and 'aout_link_hash_traverse' in aoutx.h.
- File: bfd.info, Node: BFD back ends, Next: GNU Free Documentation License, Prev: BFD front end, Up: Top
- 3 BFD back ends
- ***************
- * Menu:
- * What to Put Where::
- * aout :: a.out backends
- * coff :: coff backends
- * elf :: elf backends
- * mmo :: mmo backend
- File: bfd.info, Node: What to Put Where, Next: aout, Prev: BFD back ends, Up: BFD back ends
- 3.1 What to Put Where
- =====================
- All of BFD lives in one directory.
- File: bfd.info, Node: aout, Next: coff, Prev: What to Put Where, Up: BFD back ends
- 3.2 a.out backends
- ==================
- *Description*
- BFD supports a number of different flavours of a.out format, though the
- major differences are only the sizes of the structures on disk, and the
- shape of the relocation information.
- The support is split into a basic support file 'aoutx.h' and other
- files which derive functions from the base. One derivation file is
- 'aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions
- support for sun3, sun4, and 386 a.out files, to create a target jump
- vector for a specific target.
- This information is further split out into more specific files for
- each machine, including 'sunos.c' for sun3 and sun4, and 'demo64.c' for
- a demonstration of a 64 bit a.out format.
- The base file 'aoutx.h' defines general mechanisms for reading and
- writing records to and from disk and various other methods which BFD
- requires. It is included by 'aout32.c' and 'aout64.c' to form the names
- 'aout_32_swap_exec_header_in', 'aout_64_swap_exec_header_in', etc.
- As an example, this is what goes on to make the back end for a sun4,
- from 'aout32.c':
- #define ARCH_SIZE 32
- #include "aoutx.h"
- Which exports names:
- ...
- aout_32_canonicalize_reloc
- aout_32_find_nearest_line
- aout_32_get_lineno
- aout_32_get_reloc_upper_bound
- ...
- from 'sunos.c':
- #define TARGET_NAME "a.out-sunos-big"
- #define VECNAME sparc_aout_sunos_be_vec
- #include "aoutf1.h"
- requires all the names from 'aout32.c', and produces the jump vector
- sparc_aout_sunos_be_vec
- The file 'host-aout.c' is a special case. It is for a large set of
- hosts that use "more or less standard" a.out files, and for which
- cross-debugging is not interesting. It uses the standard 32-bit a.out
- support routines, but determines the file offsets and addresses of the
- text, data, and BSS sections, the machine architecture and machine type,
- and the entry point address, in a host-dependent manner. Once these
- values have been determined, generic code is used to handle the object
- file.
- When porting it to run on a new system, you must supply:
- HOST_PAGE_SIZE
- HOST_SEGMENT_SIZE
- HOST_MACHINE_ARCH (optional)
- HOST_MACHINE_MACHINE (optional)
- HOST_TEXT_START_ADDR
- HOST_STACK_END_ADDR
- in the file '../include/sys/h-XXX.h' (for your host). These values,
- plus the structures and macros defined in 'a.out.h' on your host system,
- will produce a BFD target that will access ordinary a.out files on your
- host. To configure a new machine to use 'host-aout.c', specify:
- TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
- TDEPFILES= host-aout.o trad-core.o
- in the 'config/XXX.mt' file, and modify 'configure.ac' to use the
- 'XXX.mt' file (by setting "'bfd_target=XXX'") when your configuration is
- selected.
- 3.2.1 Relocations
- -----------------
- *Description*
- The file 'aoutx.h' provides for both the _standard_ and _extended_ forms
- of a.out relocation records.
- The standard records contain only an address, a symbol index, and a
- type field. The extended records also have a full integer for an
- addend.
- 3.2.2 Internal entry points
- ---------------------------
- *Description*
- 'aoutx.h' exports several routines for accessing the contents of an
- a.out file, which are gathered and exported in turn by various format
- specific files (eg sunos.c).
- 3.2.2.1 'aout_SIZE_swap_exec_header_in'
- .......................................
- *Synopsis*
- void aout_SIZE_swap_exec_header_in,
- (bfd *abfd,
- struct external_exec *bytes,
- struct internal_exec *execp);
- *Description*
- Swap the information in an executable header RAW_BYTES taken from a raw
- byte stream memory image into the internal exec header structure EXECP.
- 3.2.2.2 'aout_SIZE_swap_exec_header_out'
- ........................................
- *Synopsis*
- void aout_SIZE_swap_exec_header_out
- (bfd *abfd,
- struct internal_exec *execp,
- struct external_exec *raw_bytes);
- *Description*
- Swap the information in an internal exec header structure EXECP into the
- buffer RAW_BYTES ready for writing to disk.
- 3.2.2.3 'aout_SIZE_some_aout_object_p'
- ......................................
- *Synopsis*
- const bfd_target *aout_SIZE_some_aout_object_p
- (bfd *abfd,
- struct internal_exec *execp,
- const bfd_target *(*callback_to_real_object_p) (bfd *));
- *Description*
- Some a.out variant thinks that the file open in ABFD checking is an
- a.out file. Do some more checking, and set up for access if it really
- is. Call back to the calling environment's "finish up" function just
- before returning, to handle any last-minute setup.
- 3.2.2.4 'aout_SIZE_mkobject'
- ............................
- *Synopsis*
- bfd_boolean aout_SIZE_mkobject, (bfd *abfd);
- *Description*
- Initialize BFD ABFD for use with a.out files.
- 3.2.2.5 'aout_SIZE_machine_type'
- ................................
- *Synopsis*
- enum machine_type aout_SIZE_machine_type
- (enum bfd_architecture arch,
- unsigned long machine,
- bfd_boolean *unknown);
- *Description*
- Keep track of machine architecture and machine type for a.out's. Return
- the 'machine_type' for a particular architecture and machine, or
- 'M_UNKNOWN' if that exact architecture and machine can't be represented
- in a.out format.
- If the architecture is understood, machine type 0 (default) is always
- understood.
- 3.2.2.6 'aout_SIZE_set_arch_mach'
- .................................
- *Synopsis*
- bfd_boolean aout_SIZE_set_arch_mach,
- (bfd *,
- enum bfd_architecture arch,
- unsigned long machine);
- *Description*
- Set the architecture and the machine of the BFD ABFD to the values ARCH
- and MACHINE. Verify that ABFD's format can support the architecture
- required.
- 3.2.2.7 'aout_SIZE_new_section_hook'
- ....................................
- *Synopsis*
- bfd_boolean aout_SIZE_new_section_hook,
- (bfd *abfd,
- asection *newsect);
- *Description*
- Called by the BFD in response to a 'bfd_make_section' request.
- File: bfd.info, Node: coff, Next: elf, Prev: aout, Up: BFD back ends
- 3.3 coff backends
- =================
- BFD supports a number of different flavours of coff format. The major
- differences between formats are the sizes and alignments of fields in
- structures on disk, and the occasional extra field.
- Coff in all its varieties is implemented with a few common files and
- a number of implementation specific files. For example, the i386 coff
- format is implemented in the file 'coff-i386.c'. This file '#include's
- 'coff/i386.h' which defines the external structure of the coff format
- for the i386, and 'coff/internal.h' which defines the internal
- structure. 'coff-i386.c' also defines the relocations used by the i386
- coff format *Note Relocations::.
- 3.3.1 Porting to a new version of coff
- --------------------------------------
- The recommended method is to select from the existing implementations
- the version of coff which is most like the one you want to use. For
- example, we'll say that i386 coff is the one you select, and that your
- coff flavour is called foo. Copy 'i386coff.c' to 'foocoff.c', copy
- '../include/coff/i386.h' to '../include/coff/foo.h', and add the lines
- to 'targets.c' and 'Makefile.in' so that your new back end is used.
- Alter the shapes of the structures in '../include/coff/foo.h' so that
- they match what you need. You will probably also have to add '#ifdef's
- to the code in 'coff/internal.h' and 'coffcode.h' if your version of
- coff is too wild.
- You can verify that your new BFD backend works quite simply by
- building 'objdump' from the 'binutils' directory, and making sure that
- its version of what's going on and your host system's idea (assuming it
- has the pretty standard coff dump utility, usually called 'att-dump' or
- just 'dump') are the same. Then clean up your code, and send what
- you've done to Cygnus. Then your stuff will be in the next release, and
- you won't have to keep integrating it.
- 3.3.2 How the coff backend works
- --------------------------------
- 3.3.2.1 File layout
- ...................
- The Coff backend is split into generic routines that are applicable to
- any Coff target and routines that are specific to a particular target.
- The target-specific routines are further split into ones which are
- basically the same for all Coff targets except that they use the
- external symbol format or use different values for certain constants.
- The generic routines are in 'coffgen.c'. These routines work for any
- Coff target. They use some hooks into the target specific code; the
- hooks are in a 'bfd_coff_backend_data' structure, one of which exists
- for each target.
- The essentially similar target-specific routines are in 'coffcode.h'.
- This header file includes executable C code. The various Coff targets
- first include the appropriate Coff header file, make any special defines
- that are needed, and then include 'coffcode.h'.
- Some of the Coff targets then also have additional routines in the
- target source file itself.
- 3.3.2.2 Coff long section names
- ...............................
- In the standard Coff object format, section names are limited to the
- eight bytes available in the 's_name' field of the 'SCNHDR' section
- header structure. The format requires the field to be NUL-padded, but
- not necessarily NUL-terminated, so the longest section names permitted
- are a full eight characters.
- The Microsoft PE variants of the Coff object file format add an
- extension to support the use of long section names. This extension is
- defined in section 4 of the Microsoft PE/COFF specification (rev 8.1).
- If a section name is too long to fit into the section header's 's_name'
- field, it is instead placed into the string table, and the 's_name'
- field is filled with a slash ("/") followed by the ASCII decimal
- representation of the offset of the full name relative to the string
- table base.
- Note that this implies that the extension can only be used in object
- files, as executables do not contain a string table. The standard
- specifies that long section names from objects emitted into executable
- images are to be truncated.
- However, as a GNU extension, BFD can generate executable images that
- contain a string table and long section names. This would appear to be
- technically valid, as the standard only says that Coff debugging
- information is deprecated, not forbidden, and in practice it works,
- although some tools that parse PE files expecting the MS standard format
- may become confused; 'PEview' is one known example.
- The functionality is supported in BFD by code implemented under the
- control of the macro 'COFF_LONG_SECTION_NAMES'. If not defined, the
- format does not support long section names in any way. If defined, it
- is used to initialise a flag, '_bfd_coff_long_section_names', and a hook
- function pointer, '_bfd_coff_set_long_section_names', in the Coff
- backend data structure. The flag controls the generation of long
- section names in output BFDs at runtime; if it is false, as it will be
- by default when generating an executable image, long section names are
- truncated; if true, the long section names extension is employed. The
- hook points to a function that allows the value of the flag to be
- altered at runtime, on formats that support long section names at all;
- on other formats it points to a stub that returns an error indication.
- With input BFDs, the flag is set according to whether any long
- section names are detected while reading the section headers. For a
- completely new BFD, the flag is set to the default for the target
- format. This information can be used by a client of the BFD library
- when deciding what output format to generate, and means that a BFD that
- is opened for read and subsequently converted to a writeable BFD and
- modified in-place will retain whatever format it had on input.
- If 'COFF_LONG_SECTION_NAMES' is simply defined (blank), or is defined
- to the value "1", then long section names are enabled by default; if it
- is defined to the value zero, they are disabled by default (but still
- accepted in input BFDs). The header 'coffcode.h' defines a macro,
- 'COFF_DEFAULT_LONG_SECTION_NAMES', which is used in the backends to
- initialise the backend data structure fields appropriately; see the
- comments for further detail.
- 3.3.2.3 Bit twiddling
- .....................
- Each flavour of coff supported in BFD has its own header file describing
- the external layout of the structures. There is also an internal
- description of the coff layout, in 'coff/internal.h'. A major function
- of the coff backend is swapping the bytes and twiddling the bits to
- translate the external form of the structures into the normal internal
- form. This is all performed in the 'bfd_swap'_thing_direction routines.
- Some elements are different sizes between different versions of coff; it
- is the duty of the coff version specific include file to override the
- definitions of various packing routines in 'coffcode.h'. E.g., the size
- of line number entry in coff is sometimes 16 bits, and sometimes 32
- bits. '#define'ing 'PUT_LNSZ_LNNO' and 'GET_LNSZ_LNNO' will select the
- correct one. No doubt, some day someone will find a version of coff
- which has a varying field size not catered to at the moment. To port
- BFD, that person will have to add more '#defines'. Three of the bit
- twiddling routines are exported to 'gdb'; 'coff_swap_aux_in',
- 'coff_swap_sym_in' and 'coff_swap_lineno_in'. 'GDB' reads the symbol
- table on its own, but uses BFD to fix things up. More of the bit
- twiddlers are exported for 'gas'; 'coff_swap_aux_out',
- 'coff_swap_sym_out', 'coff_swap_lineno_out', 'coff_swap_reloc_out',
- 'coff_swap_filehdr_out', 'coff_swap_aouthdr_out',
- 'coff_swap_scnhdr_out'. 'Gas' currently keeps track of all the symbol
- table and reloc drudgery itself, thereby saving the internal BFD
- overhead, but uses BFD to swap things on the way out, making cross ports
- much safer. Doing so also allows BFD (and thus the linker) to use the
- same header files as 'gas', which makes one avenue to disaster
- disappear.
- 3.3.2.4 Symbol reading
- ......................
- The simple canonical form for symbols used by BFD is not rich enough to
- keep all the information available in a coff symbol table. The back end
- gets around this problem by keeping the original symbol table around,
- "behind the scenes".
- When a symbol table is requested (through a call to
- 'bfd_canonicalize_symtab'), a request gets through to
- 'coff_get_normalized_symtab'. This reads the symbol table from the coff
- file and swaps all the structures inside into the internal form. It
- also fixes up all the pointers in the table (represented in the file by
- offsets from the first symbol in the table) into physical pointers to
- elements in the new internal table. This involves some work since the
- meanings of fields change depending upon context: a field that is a
- pointer to another structure in the symbol table at one moment may be
- the size in bytes of a structure at the next. Another pass is made over
- the table. All symbols which mark file names ('C_FILE' symbols) are
- modified so that the internal string points to the value in the auxent
- (the real filename) rather than the normal text associated with the
- symbol ('".file"').
- At this time the symbol names are moved around. Coff stores all
- symbols less than nine characters long physically within the symbol
- table; longer strings are kept at the end of the file in the string
- table. This pass moves all strings into memory and replaces them with
- pointers to the strings.
- The symbol table is massaged once again, this time to create the
- canonical table used by the BFD application. Each symbol is inspected
- in turn, and a decision made (using the 'sclass' field) about the
- various flags to set in the 'asymbol'. *Note Symbols::. The generated
- canonical table shares strings with the hidden internal symbol table.
- Any linenumbers are read from the coff file too, and attached to the
- symbols which own the functions the linenumbers belong to.
- 3.3.2.5 Symbol writing
- ......................
- Writing a symbol to a coff file which didn't come from a coff file will
- lose any debugging information. The 'asymbol' structure remembers the
- BFD from which the symbol was taken, and on output the back end makes
- sure that the same destination target as source target is present.
- When the symbols have come from a coff file then all the debugging
- information is preserved.
- Symbol tables are provided for writing to the back end in a vector of
- pointers to pointers. This allows applications like the linker to
- accumulate and output large symbol tables without having to do too much
- byte copying.
- This function runs through the provided symbol table and patches each
- symbol marked as a file place holder ('C_FILE') to point to the next
- file place holder in the list. It also marks each 'offset' field in the
- list with the offset from the first symbol of the current symbol.
- Another function of this procedure is to turn the canonical value
- form of BFD into the form used by coff. Internally, BFD expects symbol
- values to be offsets from a section base; so a symbol physically at
- 0x120, but in a section starting at 0x100, would have the value 0x20.
- Coff expects symbols to contain their final value, so symbols have their
- values changed at this point to reflect their sum with their owning
- section. This transformation uses the 'output_section' field of the
- 'asymbol''s 'asection' *Note Sections::.
- * 'coff_mangle_symbols'
- This routine runs though the provided symbol table and uses the
- offsets generated by the previous pass and the pointers generated when
- the symbol table was read in to create the structured hierarchy required
- by coff. It changes each pointer to a symbol into the index into the
- symbol table of the asymbol.
- * 'coff_write_symbols'
- This routine runs through the symbol table and patches up the symbols
- from their internal form into the coff way, calls the bit twiddlers, and
- writes out the table to the file.
- 3.3.2.6 'coff_symbol_type'
- ..........................
- *Description*
- The hidden information for an 'asymbol' is described in a
- 'combined_entry_type':
- typedef struct coff_ptr_struct
- {
- /* Remembers the offset from the first symbol in the file for
- this symbol. Generated by coff_renumber_symbols. */
- unsigned int offset;
- /* Should the value of this symbol be renumbered. Used for
- XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */
- unsigned int fix_value : 1;
- /* Should the tag field of this symbol be renumbered.
- Created by coff_pointerize_aux. */
- unsigned int fix_tag : 1;
- /* Should the endidx field of this symbol be renumbered.
- Created by coff_pointerize_aux. */
- unsigned int fix_end : 1;
- /* Should the x_csect.x_scnlen field be renumbered.
- Created by coff_pointerize_aux. */
- unsigned int fix_scnlen : 1;
- /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the
- index into the line number entries. Set by coff_slurp_symbol_table. */
- unsigned int fix_line : 1;
- /* The container for the symbol structure as read and translated
- from the file. */
- union
- {
- union internal_auxent auxent;
- struct internal_syment syment;
- } u;
- /* Selector for the union above. */
- bfd_boolean is_sym;
- } combined_entry_type;
- /* Each canonical asymbol really looks like this: */
- typedef struct coff_symbol_struct
- {
- /* The actual symbol which the rest of BFD works with */
- asymbol symbol;
- /* A pointer to the hidden information for this symbol */
- combined_entry_type *native;
- /* A pointer to the linenumber information for this symbol */
- struct lineno_cache_entry *lineno;
- /* Have the line numbers been relocated yet ? */
- bfd_boolean done_lineno;
- } coff_symbol_type;
- 3.3.2.7 'bfd_coff_backend_data'
- ...............................
- /* COFF symbol classifications. */
- enum coff_symbol_classification
- {
- /* Global symbol. */
- COFF_SYMBOL_GLOBAL,
- /* Common symbol. */
- COFF_SYMBOL_COMMON,
- /* Undefined symbol. */
- COFF_SYMBOL_UNDEFINED,
- /* Local symbol. */
- COFF_SYMBOL_LOCAL,
- /* PE section symbol. */
- COFF_SYMBOL_PE_SECTION
- };
- typedef asection * (*coff_gc_mark_hook_fn)
- (asection *, struct bfd_link_info *, struct internal_reloc *,
- struct coff_link_hash_entry *, struct internal_syment *);
- Special entry points for gdb to swap in coff symbol table parts:
- typedef struct
- {
- void (*_bfd_coff_swap_aux_in)
- (bfd *, void *, int, int, int, int, void *);
- void (*_bfd_coff_swap_sym_in)
- (bfd *, void *, void *);
- void (*_bfd_coff_swap_lineno_in)
- (bfd *, void *, void *);
- unsigned int (*_bfd_coff_swap_aux_out)
- (bfd *, void *, int, int, int, int, void *);
- unsigned int (*_bfd_coff_swap_sym_out)
- (bfd *, void *, void *);
- unsigned int (*_bfd_coff_swap_lineno_out)
- (bfd *, void *, void *);
- unsigned int (*_bfd_coff_swap_reloc_out)
- (bfd *, void *, void *);
- unsigned int (*_bfd_coff_swap_filehdr_out)
- (bfd *, void *, void *);
- unsigned int (*_bfd_coff_swap_aouthdr_out)
- (bfd *, void *, void *);
- unsigned int (*_bfd_coff_swap_scnhdr_out)
- (bfd *, void *, void *);
- unsigned int _bfd_filhsz;
- unsigned int _bfd_aoutsz;
- unsigned int _bfd_scnhsz;
- unsigned int _bfd_symesz;
- unsigned int _bfd_auxesz;
- unsigned int _bfd_relsz;
- unsigned int _bfd_linesz;
- unsigned int _bfd_filnmlen;
- bfd_boolean _bfd_coff_long_filenames;
- bfd_boolean _bfd_coff_long_section_names;
- bfd_boolean (*_bfd_coff_set_long_section_names)
- (bfd *, int);
- unsigned int _bfd_coff_default_section_alignment_power;
- bfd_boolean _bfd_coff_force_symnames_in_strings;
- unsigned int _bfd_coff_debug_string_prefix_length;
- unsigned int _bfd_coff_max_nscns;
- void (*_bfd_coff_swap_filehdr_in)
- (bfd *, void *, void *);
- void (*_bfd_coff_swap_aouthdr_in)
- (bfd *, void *, void *);
- void (*_bfd_coff_swap_scnhdr_in)
- (bfd *, void *, void *);
- void (*_bfd_coff_swap_reloc_in)
- (bfd *abfd, void *, void *);
- bfd_boolean (*_bfd_coff_bad_format_hook)
- (bfd *, void *);
- bfd_boolean (*_bfd_coff_set_arch_mach_hook)
- (bfd *, void *);
- void * (*_bfd_coff_mkobject_hook)
- (bfd *, void *, void *);
- bfd_boolean (*_bfd_styp_to_sec_flags_hook)
- (bfd *, void *, const char *, asection *, flagword *);
- void (*_bfd_set_alignment_hook)
- (bfd *, asection *, void *);
- bfd_boolean (*_bfd_coff_slurp_symbol_table)
- (bfd *);
- bfd_boolean (*_bfd_coff_symname_in_debug)
- (bfd *, struct internal_syment *);
- bfd_boolean (*_bfd_coff_pointerize_aux_hook)
- (bfd *, combined_entry_type *, combined_entry_type *,
- unsigned int, combined_entry_type *);
- bfd_boolean (*_bfd_coff_print_aux)
- (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
- combined_entry_type *, unsigned int);
- void (*_bfd_coff_reloc16_extra_cases)
- (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
- bfd_byte *, unsigned int *, unsigned int *);
- int (*_bfd_coff_reloc16_estimate)
- (bfd *, asection *, arelent *, unsigned int,
- struct bfd_link_info *);
- enum coff_symbol_classification (*_bfd_coff_classify_symbol)
- (bfd *, struct internal_syment *);
- bfd_boolean (*_bfd_coff_compute_section_file_positions)
- (bfd *);
- bfd_boolean (*_bfd_coff_start_final_link)
- (bfd *, struct bfd_link_info *);
- bfd_boolean (*_bfd_coff_relocate_section)
- (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
- struct internal_reloc *, struct internal_syment *, asection **);
- reloc_howto_type *(*_bfd_coff_rtype_to_howto)
- (bfd *, asection *, struct internal_reloc *,
- struct coff_link_hash_entry *, struct internal_syment *, bfd_vma *);
- bfd_boolean (*_bfd_coff_adjust_symndx)
- (bfd *, struct bfd_link_info *, bfd *, asection *,
- struct internal_reloc *, bfd_boolean *);
- bfd_boolean (*_bfd_coff_link_add_one_symbol)
- (struct bfd_link_info *, bfd *, const char *, flagword,
- asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
- struct bfd_link_hash_entry **);
- bfd_boolean (*_bfd_coff_link_output_has_begun)
- (bfd *, struct coff_final_link_info *);
- bfd_boolean (*_bfd_coff_final_link_postscript)
- (bfd *, struct coff_final_link_info *);
- bfd_boolean (*_bfd_coff_print_pdata)
- (bfd *, void *);
- } bfd_coff_backend_data;
- #define coff_backend_info(abfd) \
- ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
- #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
- ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
- #define bfd_coff_swap_sym_in(a,e,i) \
- ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
- #define bfd_coff_swap_lineno_in(a,e,i) \
- ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
- #define bfd_coff_swap_reloc_out(abfd, i, o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
- #define bfd_coff_swap_lineno_out(abfd, i, o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
- #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
- ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
- #define bfd_coff_swap_sym_out(abfd, i,o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
- #define bfd_coff_swap_scnhdr_out(abfd, i,o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
- #define bfd_coff_swap_filehdr_out(abfd, i,o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
- #define bfd_coff_swap_aouthdr_out(abfd, i,o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
- #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
- #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
- #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
- #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
- #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
- #define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz)
- #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
- #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
- #define bfd_coff_long_filenames(abfd) \
- (coff_backend_info (abfd)->_bfd_coff_long_filenames)
- #define bfd_coff_long_section_names(abfd) \
- (coff_backend_info (abfd)->_bfd_coff_long_section_names)
- #define bfd_coff_set_long_section_names(abfd, enable) \
- ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable))
- #define bfd_coff_default_section_alignment_power(abfd) \
- (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
- #define bfd_coff_max_nscns(abfd) \
- (coff_backend_info (abfd)->_bfd_coff_max_nscns)
- #define bfd_coff_swap_filehdr_in(abfd, i,o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
- #define bfd_coff_swap_aouthdr_in(abfd, i,o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
- #define bfd_coff_swap_scnhdr_in(abfd, i,o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
- #define bfd_coff_swap_reloc_in(abfd, i, o) \
- ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
- #define bfd_coff_bad_format_hook(abfd, filehdr) \
- ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
- #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
- ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
- #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
- ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
- (abfd, filehdr, aouthdr))
- #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
- ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
- (abfd, scnhdr, name, section, flags_ptr))
- #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
- ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
- #define bfd_coff_slurp_symbol_table(abfd)\
- ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
- #define bfd_coff_symname_in_debug(abfd, sym)\
- ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
- #define bfd_coff_force_symnames_in_strings(abfd)\
- (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
- #define bfd_coff_debug_string_prefix_length(abfd)\
- (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
- #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
- ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
- (abfd, file, base, symbol, aux, indaux))
- #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
- reloc, data, src_ptr, dst_ptr)\
- ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
- (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
- #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
- ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
- (abfd, section, reloc, shrink, link_info))
- #define bfd_coff_classify_symbol(abfd, sym)\
- ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
- (abfd, sym))
- #define bfd_coff_compute_section_file_positions(abfd)\
- ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
- (abfd))
- #define bfd_coff_start_final_link(obfd, info)\
- ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
- (obfd, info))
- #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
- ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
- (obfd, info, ibfd, o, con, rel, isyms, secs))
- #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
- ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
- (abfd, sec, rel, h, sym, addendp))
- #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
- ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
- (obfd, info, ibfd, sec, rel, adjustedp))
- #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
- value, string, cp, coll, hashp)\
- ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
- (info, abfd, name, flags, section, value, string, cp, coll, hashp))
- #define bfd_coff_link_output_has_begun(a,p) \
- ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
- #define bfd_coff_final_link_postscript(a,p) \
- ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
- #define bfd_coff_have_print_pdata(a) \
- (coff_backend_info (a)->_bfd_coff_print_pdata)
- #define bfd_coff_print_pdata(a,p) \
- ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p))
- /* Macro: Returns true if the bfd is a PE executable as opposed to a
- PE object file. */
- #define bfd_pei_p(abfd) \
- (CONST_STRNEQ ((abfd)->xvec->name, "pei-"))
- 3.3.2.8 Writing relocations
- ...........................
- To write relocations, the back end steps though the canonical relocation
- table and create an 'internal_reloc'. The symbol index to use is
- removed from the 'offset' field in the symbol table supplied. The
- address comes directly from the sum of the section base address and the
- relocation offset; the type is dug directly from the howto field. Then
- the 'internal_reloc' is swapped into the shape of an 'external_reloc'
- and written out to disk.
- 3.3.2.9 Reading linenumbers
- ...........................
- Creating the linenumber table is done by reading in the entire coff
- linenumber table, and creating another table for internal use.
- A coff linenumber table is structured so that each function is marked
- as having a line number of 0. Each line within the function is an
- offset from the first line in the function. The base of the line number
- information for the table is stored in the symbol associated with the
- function.
- Note: The PE format uses line number 0 for a flag indicating a new
- source file.
- The information is copied from the external to the internal table,
- and each symbol which marks a function is marked by pointing its...
- How does this work ?
- 3.3.2.10 Reading relocations
- ............................
- Coff relocations are easily transformed into the internal BFD form
- ('arelent').
- Reading a coff relocation table is done in the following stages:
- * Read the entire coff relocation table into memory.
- * Process each relocation in turn; first swap it from the external to
- the internal form.
- * Turn the symbol referenced in the relocation's symbol index into a
- pointer into the canonical symbol table. This table is the same as
- the one returned by a call to 'bfd_canonicalize_symtab'. The back
- end will call that routine and save the result if a
- canonicalization hasn't been done.
- * The reloc index is turned into a pointer to a howto structure, in a
- back end specific way. For instance, the 386 uses the 'r_type' to
- directly produce an index into a howto table vector.
- File: bfd.info, Node: elf, Next: mmo, Prev: coff, Up: BFD back ends
- 3.4 ELF backends
- ================
- BFD support for ELF formats is being worked on. Currently, the best
- supported back ends are for sparc and i386 (running svr4 or Solaris 2).
- Documentation of the internals of the support code still needs to be
- written. The code is changing quickly enough that we haven't bothered
- yet.
- File: bfd.info, Node: mmo, Prev: elf, Up: BFD back ends
- 3.5 mmo backend
- ===============
- The mmo object format is used exclusively together with Professor Donald
- E. Knuth's educational 64-bit processor MMIX. The simulator 'mmix' which
- is available at <http://mmix.cs.hm.edu/src/index.html> understands this
- format. That package also includes a combined assembler and linker
- called 'mmixal'. The mmo format has no advantages feature-wise compared
- to e.g. ELF. It is a simple non-relocatable object format with no
- support for archives or debugging information, except for symbol value
- information and line numbers (which is not yet implemented in BFD). See
- <http://mmix.cs.hm.edu/> for more information about MMIX. The ELF format
- is used for intermediate object files in the BFD implementation.
- * Menu:
- * File layout::
- * Symbol-table::
- * mmo section mapping::
- File: bfd.info, Node: File layout, Next: Symbol-table, Prev: mmo, Up: mmo
- 3.5.1 File layout
- -----------------
- The mmo file contents is not partitioned into named sections as with
- e.g. ELF. Memory areas is formed by specifying the location of the data
- that follows. Only the memory area '0x0000...00' to '0x01ff...ff' is
- executable, so it is used for code (and constants) and the area
- '0x2000...00' to '0x20ff...ff' is used for writable data. *Note mmo
- section mapping::.
- There is provision for specifying "special data" of 65536 different
- types. We use type 80 (decimal), arbitrarily chosen the same as the ELF
- 'e_machine' number for MMIX, filling it with section information
- normally found in ELF objects. *Note mmo section mapping::.
- Contents is entered as 32-bit words, xor:ed over previous contents,
- always zero-initialized. A word that starts with the byte '0x98' forms
- a command called a 'lopcode', where the next byte distinguished between
- the thirteen lopcodes. The two remaining bytes, called the 'Y' and 'Z'
- fields, or the 'YZ' field (a 16-bit big-endian number), are used for
- various purposes different for each lopcode. As documented in
- <http://mmix.cs.hm.edu/doc/mmixal.pdf>, the lopcodes are:
- 'lop_quote'
- 0x98000001. The next word is contents, regardless of whether it
- starts with 0x98 or not.
- 'lop_loc'
- 0x9801YYZZ, where 'Z' is 1 or 2. This is a location directive,
- setting the location for the next data to the next 32-bit word (for
- Z = 1) or 64-bit word (for Z = 2), plus Y * 2^56. Normally 'Y' is
- 0 for the text segment and 2 for the data segment. Beware that the
- low bits of non- tetrabyte-aligned values are silently discarded
- when being automatically incremented and when storing contents (in
- contrast to e.g. its use as current location when followed by
- lop_fixo et al before the next possibly-quoted tetrabyte contents).
- 'lop_skip'
- 0x9802YYZZ. Increase the current location by 'YZ' bytes.
- 'lop_fixo'
- 0x9803YYZZ, where 'Z' is 1 or 2. Store the current location as 64
- bits into the location pointed to by the next 32-bit (Z = 1) or
- 64-bit (Z = 2) word, plus Y * 2^56.
- 'lop_fixr'
- 0x9804YYZZ. 'YZ' is stored into the current location plus 2 - 4 *
- YZ.
- 'lop_fixrx'
- 0x980500ZZ. 'Z' is 16 or 24. A value 'L' derived from the
- following 32-bit word are used in a manner similar to 'YZ' in
- lop_fixr: it is xor:ed into the current location minus 4 * L. The
- first byte of the word is 0 or 1. If it is 1, then L = (LOWEST 24
- BITS OF WORD) - 2^Z, if 0, then L = (LOWEST 24 BITS OF WORD).
- 'lop_file'
- 0x9806YYZZ. 'Y' is the file number, 'Z' is count of 32-bit words.
- Set the file number to 'Y' and the line counter to 0. The next Z *
- 4 bytes contain the file name, padded with zeros if the count is
- not a multiple of four. The same 'Y' may occur multiple times, but
- 'Z' must be 0 for all but the first occurrence.
- 'lop_line'
- 0x9807YYZZ. 'YZ' is the line number. Together with lop_file, it
- forms the source location for the next 32-bit word. Note that for
- each non-lopcode 32-bit word, line numbers are assumed incremented
- by one.
- 'lop_spec'
- 0x9808YYZZ. 'YZ' is the type number. Data until the next lopcode
- other than lop_quote forms special data of type 'YZ'. *Note mmo
- section mapping::.
- Other types than 80, (or type 80 with a content that does not
- parse) is stored in sections named '.MMIX.spec_data.N' where N is
- the 'YZ'-type. The flags for such a sections say not to allocate
- or load the data. The vma is 0. Contents of multiple occurrences
- of special data N is concatenated to the data of the previous
- lop_spec Ns. The location in data or code at which the lop_spec
- occurred is lost.
- 'lop_pre'
- 0x980901ZZ. The first lopcode in a file. The 'Z' field forms the
- length of header information in 32-bit words, where the first word
- tells the time in seconds since '00:00:00 GMT Jan 1 1970'.
- 'lop_post'
- 0x980a00ZZ. Z > 32. This lopcode follows after all
- content-generating lopcodes in a program. The 'Z' field denotes
- the value of 'rG' at the beginning of the program. The following
- 256 - Z big-endian 64-bit words are loaded into global registers
- '$G' ... '$255'.
- 'lop_stab'
- 0x980b0000. The next-to-last lopcode in a program. Must follow
- immediately after the lop_post lopcode and its data. After this
- lopcode follows all symbols in a compressed format (*note
- Symbol-table::).
- 'lop_end'
- 0x980cYYZZ. The last lopcode in a program. It must follow the
- lop_stab lopcode and its data. The 'YZ' field contains the number
- of 32-bit words of symbol table information after the preceding
- lop_stab lopcode.
- Note that the lopcode "fixups"; 'lop_fixr', 'lop_fixrx' and
- 'lop_fixo' are not generated by BFD, but are handled. They are
- generated by 'mmixal'.
- This trivial one-label, one-instruction file:
- :Main TRAP 1,2,3
- can be represented this way in mmo:
- 0x98090101 - lop_pre, one 32-bit word with timestamp.
- <timestamp>
- 0x98010002 - lop_loc, text segment, using a 64-bit address.
- Note that mmixal does not emit this for the file above.
- 0x00000000 - Address, high 32 bits.
- 0x00000000 - Address, low 32 bits.
- 0x98060002 - lop_file, 2 32-bit words for file-name.
- 0x74657374 - "test"
- 0x2e730000 - ".s\0\0"
- 0x98070001 - lop_line, line 1.
- 0x00010203 - TRAP 1,2,3
- 0x980a00ff - lop_post, setting $255 to 0.
- 0x00000000
- 0x00000000
- 0x980b0000 - lop_stab for ":Main" = 0, serial 1.
- 0x203a4040 *Note Symbol-table::.
- 0x10404020
- 0x4d206120
- 0x69016e00
- 0x81000000
- 0x980c0005 - lop_end; symbol table contained five 32-bit words.
- File: bfd.info, Node: Symbol-table, Next: mmo section mapping, Prev: File layout, Up: mmo
- 3.5.2 Symbol table format
- -------------------------
- From mmixal.w (or really, the generated mmixal.tex) in the MMIXware
- package which also contains the 'mmix' simulator: "Symbols are stored
- and retrieved by means of a 'ternary search trie', following ideas of
- Bentley and Sedgewick. (See ACM-SIAM Symp. on Discrete Algorithms '8'
- (1997), 360-369; R.Sedgewick, 'Algorithms in C' (Reading, Mass.
- Addison-Wesley, 1998), '15.4'.) Each trie node stores a character, and
- there are branches to subtries for the cases where a given character is
- less than, equal to, or greater than the character in the trie. There
- also is a pointer to a symbol table entry if a symbol ends at the
- current node."
- So it's a tree encoded as a stream of bytes. The stream of bytes
- acts on a single virtual global symbol, adding and removing characters
- and signalling complete symbol points. Here, we read the stream and
- create symbols at the completion points.
- First, there's a control byte 'm'. If any of the listed bits in 'm'
- is nonzero, we execute what stands at the right, in the listed order:
- (MMO3_LEFT)
- 0x40 - Traverse left trie.
- (Read a new command byte and recurse.)
- (MMO3_SYMBITS)
- 0x2f - Read the next byte as a character and store it in the
- current character position; increment character position.
- Test the bits of m:
- (MMO3_WCHAR)
- 0x80 - The character is 16-bit (so read another byte,
- merge into current character.
- (MMO3_TYPEBITS)
- 0xf - We have a complete symbol; parse the type, value
- and serial number and do what should be done
- with a symbol. The type and length information
- is in j = (m & 0xf).
- (MMO3_REGQUAL_BITS)
- j == 0xf: A register variable. The following
- byte tells which register.
- j <= 8: An absolute symbol. Read j bytes as the
- big-endian number the symbol equals.
- A j = 2 with two zero bytes denotes an
- unknown symbol.
- j > 8: As with j <= 8, but add (0x20 << 56)
- to the value in the following j - 8
- bytes.
- Then comes the serial number, as a variant of
- uleb128, but better named ubeb128:
- Read bytes and shift the previous value left 7
- (multiply by 128). Add in the new byte, repeat
- until a byte has bit 7 set. The serial number
- is the computed value minus 128.
- (MMO3_MIDDLE)
- 0x20 - Traverse middle trie. (Read a new command byte
- and recurse.) Decrement character position.
- (MMO3_RIGHT)
- 0x10 - Traverse right trie. (Read a new command byte and
- recurse.)
- Let's look again at the 'lop_stab' for the trivial file (*note File
- layout::).
- 0x980b0000 - lop_stab for ":Main" = 0, serial 1.
- 0x203a4040
- 0x10404020
- 0x4d206120
- 0x69016e00
- 0x81000000
- This forms the trivial trie (note that the path between ":" and "M"
- is redundant):
- 203a ":"
- 40 /
- 40 /
- 10 \
- 40 /
- 40 /
- 204d "M"
- 2061 "a"
- 2069 "i"
- 016e "n" is the last character in a full symbol, and
- with a value represented in one byte.
- 00 The value is 0.
- 81 The serial number is 1.
- File: bfd.info, Node: mmo section mapping, Prev: Symbol-table, Up: mmo
- 3.5.3 mmo section mapping
- -------------------------
- The implementation in BFD uses special data type 80 (decimal) to
- encapsulate and describe named sections, containing e.g. debug
- information. If needed, any datum in the encapsulation will be quoted
- using lop_quote. First comes a 32-bit word holding the number of 32-bit
- words containing the zero-terminated zero-padded segment name. After
- the name there's a 32-bit word holding flags describing the section
- type. Then comes a 64-bit big-endian word with the section length (in
- bytes), then another with the section start address. Depending on the
- type of section, the contents might follow, zero-padded to 32-bit
- boundary. For a loadable section (such as data or code), the contents
- might follow at some later point, not necessarily immediately, as a
- lop_loc with the same start address as in the section description,
- followed by the contents. This in effect forms a descriptor that must
- be emitted before the actual contents. Sections described this way must
- not overlap.
- For areas that don't have such descriptors, synthetic sections are
- formed by BFD. Consecutive contents in the two memory areas
- '0x0000...00' to '0x01ff...ff' and '0x2000...00' to '0x20ff...ff' are
- entered in sections named '.text' and '.data' respectively. If an area
- is not otherwise described, but would together with a neighboring lower
- area be less than '0x40000000' bytes long, it is joined with the lower
- area and the gap is zero-filled. For other cases, a new section is
- formed, named '.MMIX.sec.N'. Here, N is a number, a running count
- through the mmo file, starting at 0.
- A loadable section specified as:
- .section secname,"ax"
- TETRA 1,2,3,4,-1,-2009
- BYTE 80
- and linked to address '0x4', is represented by the sequence:
- 0x98080050 - lop_spec 80
- 0x00000002 - two 32-bit words for the section name
- 0x7365636e - "secn"
- 0x616d6500 - "ame\0"
- 0x00000033 - flags CODE, READONLY, LOAD, ALLOC
- 0x00000000 - high 32 bits of section length
- 0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits
- 0x00000000 - high 32 bits of section address
- 0x00000004 - section address is 4
- 0x98010002 - 64 bits with address of following data
- 0x00000000 - high 32 bits of address
- 0x00000004 - low 32 bits: data starts at address 4
- 0x00000001 - 1
- 0x00000002 - 2
- 0x00000003 - 3
- 0x00000004 - 4
- 0xffffffff - -1
- 0xfffff827 - -2009
- 0x50000000 - 80 as a byte, padded with zeros.
- Note that the lop_spec wrapping does not include the section
- contents. Compare this to a non-loaded section specified as:
- .section thirdsec
- TETRA 200001,100002
- BYTE 38,40
- This, when linked to address '0x200000000000001c', is represented by:
- 0x98080050 - lop_spec 80
- 0x00000002 - two 32-bit words for the section name
- 0x7365636e - "thir"
- 0x616d6500 - "dsec"
- 0x00000010 - flag READONLY
- 0x00000000 - high 32 bits of section length
- 0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits
- 0x20000000 - high 32 bits of address
- 0x0000001c - low 32 bits of address 0x200000000000001c
- 0x00030d41 - 200001
- 0x000186a2 - 100002
- 0x26280000 - 38, 40 as bytes, padded with zeros
- For the latter example, the section contents must not be loaded in
- memory, and is therefore specified as part of the special data. The
- address is usually unimportant but might provide information for e.g.
- the DWARF 2 debugging format.
- File: bfd.info, Node: GNU Free Documentation License, Next: BFD Index, Prev: BFD back ends, Up: Top
- 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: bfd.info, Node: BFD Index, Prev: GNU Free Documentation License, Up: Top
- BFD Index
- *********
- �[index�]
- * Menu:
- * _bfd_error_handler: Error reporting. (line 112)
- * _bfd_final_link_relocate: Relocating the section contents.
- (line 22)
- * _bfd_generic_link_add_archive_symbols: Adding symbols from an archive.
- (line 15)
- * _bfd_generic_link_add_one_symbol: Adding symbols from an object file.
- (line 19)
- * _bfd_generic_link_check_relocs: Writing the symbol table.
- (line 144)
- * _bfd_generic_link_hide_symbol: Writing the symbol table.
- (line 83)
- * _bfd_generic_make_empty_symbol: symbol handling functions.
- (line 96)
- * _bfd_generic_set_reloc: howto manager. (line 3496)
- * _bfd_generic_verify_endian_match: Writing the symbol table.
- (line 172)
- * _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table.
- (line 6)
- * _bfd_link_final_link in target vector: Performing the Final Link.
- (line 6)
- * _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table.
- (line 6)
- * _bfd_relocate_contents: Relocating the section contents.
- (line 22)
- * _bfd_unrecognized_reloc: howto manager. (line 3508)
- * aout_SIZE_machine_type: aout. (line 145)
- * aout_SIZE_mkobject: aout. (line 137)
- * aout_SIZE_new_section_hook: aout. (line 175)
- * aout_SIZE_set_arch_mach: aout. (line 162)
- * aout_SIZE_some_aout_object_p: aout. (line 123)
- * aout_SIZE_swap_exec_header_in: aout. (line 99)
- * aout_SIZE_swap_exec_header_out: aout. (line 111)
- * arelent_chain: typedef arelent. (line 315)
- * BFD: Overview. (line 6)
- * BFD canonical format: Canonical format. (line 11)
- * bfd_alloc: Opening and Closing.
- (line 239)
- * bfd_alloc2: Opening and Closing.
- (line 248)
- * bfd_alt_mach_code: Miscellaneous. (line 291)
- * bfd_arch_bits_per_address: Architectures. (line 655)
- * bfd_arch_bits_per_byte: Architectures. (line 647)
- * bfd_arch_default_fill: Architectures. (line 737)
- * bfd_arch_get_compatible: Architectures. (line 590)
- * bfd_arch_list: Architectures. (line 581)
- * bfd_arch_mach_octets_per_byte: Architectures. (line 725)
- * BFD_ARELOC_BFIN_ADD: howto manager. (line 1144)
- * BFD_ARELOC_BFIN_ADDR: howto manager. (line 1178)
- * BFD_ARELOC_BFIN_AND: howto manager. (line 1158)
- * BFD_ARELOC_BFIN_COMP: howto manager. (line 1172)
- * BFD_ARELOC_BFIN_CONST: howto manager. (line 1142)
- * BFD_ARELOC_BFIN_DIV: howto manager. (line 1150)
- * BFD_ARELOC_BFIN_HWPAGE: howto manager. (line 1176)
- * BFD_ARELOC_BFIN_LAND: howto manager. (line 1164)
- * BFD_ARELOC_BFIN_LEN: howto manager. (line 1168)
- * BFD_ARELOC_BFIN_LOR: howto manager. (line 1166)
- * BFD_ARELOC_BFIN_LSHIFT: howto manager. (line 1154)
- * BFD_ARELOC_BFIN_MOD: howto manager. (line 1152)
- * BFD_ARELOC_BFIN_MULT: howto manager. (line 1148)
- * BFD_ARELOC_BFIN_NEG: howto manager. (line 1170)
- * BFD_ARELOC_BFIN_OR: howto manager. (line 1160)
- * BFD_ARELOC_BFIN_PAGE: howto manager. (line 1174)
- * BFD_ARELOC_BFIN_PUSH: howto manager. (line 1140)
- * BFD_ARELOC_BFIN_RSHIFT: howto manager. (line 1156)
- * BFD_ARELOC_BFIN_SUB: howto manager. (line 1146)
- * BFD_ARELOC_BFIN_XOR: howto manager. (line 1162)
- * bfd_cache_close: File Caching. (line 25)
- * bfd_cache_close_all: File Caching. (line 38)
- * bfd_cache_init: File Caching. (line 17)
- * bfd_calc_gnu_debuglink_crc32: Opening and Closing.
- (line 275)
- * bfd_canonicalize_reloc: Miscellaneous. (line 18)
- * bfd_canonicalize_symtab: symbol handling functions.
- (line 52)
- * bfd_check_compression_header: Miscellaneous. (line 363)
- * bfd_check_format: Formats. (line 20)
- * bfd_check_format_matches: Formats. (line 51)
- * bfd_check_overflow: typedef arelent. (line 328)
- * bfd_close: Opening and Closing.
- (line 161)
- * bfd_close_all_done: Opening and Closing.
- (line 179)
- * bfd_coff_backend_data: coff. (line 296)
- * bfd_convert_section_contents: Miscellaneous. (line 401)
- * bfd_convert_section_size: Miscellaneous. (line 391)
- * bfd_copy_private_bfd_data: Miscellaneous. (line 159)
- * bfd_copy_private_header_data: Miscellaneous. (line 142)
- * bfd_copy_private_section_data: section prototypes. (line 279)
- * bfd_copy_private_symbol_data: symbol handling functions.
- (line 145)
- * bfd_core_file_failing_command: Core Files. (line 11)
- * bfd_core_file_failing_signal: Core Files. (line 20)
- * bfd_core_file_pid: Core Files. (line 29)
- * bfd_create: Opening and Closing.
- (line 198)
- * bfd_create_gnu_debuglink_section: Opening and Closing.
- (line 431)
- * bfd_decode_symclass: symbol handling functions.
- (line 116)
- * bfd_default_arch_struct: Architectures. (line 602)
- * bfd_default_compatible: Architectures. (line 664)
- * bfd_default_reloc_type_lookup: howto manager. (line 3420)
- * bfd_default_scan: Architectures. (line 673)
- * bfd_default_set_arch_mach: Architectures. (line 620)
- * bfd_demangle: Miscellaneous. (line 342)
- * bfd_emul_get_commonpagesize: Miscellaneous. (line 322)
- * bfd_emul_get_maxpagesize: Miscellaneous. (line 302)
- * bfd_emul_set_commonpagesize: Miscellaneous. (line 333)
- * bfd_emul_set_maxpagesize: Miscellaneous. (line 313)
- * bfd_errmsg: Error reporting. (line 79)
- * bfd_fdopenr: Opening and Closing.
- (line 56)
- * bfd_fill_in_gnu_debuglink_section: Opening and Closing.
- (line 445)
- * bfd_find_target: bfd_target. (line 567)
- * bfd_find_version_for_sym: Writing the symbol table.
- (line 111)
- * bfd_flavour_name: bfd_target. (line 630)
- * bfd_follow_build_id_debuglink: Opening and Closing.
- (line 505)
- * bfd_follow_gnu_debugaltlink: Opening and Closing.
- (line 411)
- * bfd_follow_gnu_debuglink: Opening and Closing.
- (line 390)
- * bfd_fopen: Opening and Closing.
- (line 11)
- * bfd_format_string: Formats. (line 78)
- * bfd_generic_define_common_symbol: Writing the symbol table.
- (line 69)
- * bfd_generic_define_start_stop: Writing the symbol table.
- (line 97)
- * bfd_generic_discard_group: section prototypes. (line 312)
- * bfd_generic_gc_sections: howto manager. (line 3451)
- * bfd_generic_get_relocated_section_contents: howto manager. (line 3481)
- * bfd_generic_group_name: section prototypes. (line 304)
- * bfd_generic_is_group_section: section prototypes. (line 296)
- * bfd_generic_lookup_section_flags: howto manager. (line 3461)
- * bfd_generic_merge_sections: howto manager. (line 3471)
- * bfd_generic_relax_section: howto manager. (line 3438)
- * bfd_get_alt_debug_link_info: Opening and Closing.
- (line 329)
- * bfd_get_arch: Architectures. (line 631)
- * bfd_get_arch_info: Architectures. (line 683)
- * bfd_get_arch_size: Miscellaneous. (line 63)
- * bfd_get_compression_header_size: Miscellaneous. (line 380)
- * bfd_get_debug_link_info: Opening and Closing.
- (line 311)
- * bfd_get_debug_link_info_1: Opening and Closing.
- (line 289)
- * bfd_get_error: Error reporting. (line 49)
- * bfd_get_file_size: Miscellaneous. (line 490)
- * bfd_get_gp_size: Miscellaneous. (line 106)
- * bfd_get_linker_section: section prototypes. (line 37)
- * bfd_get_mach: Architectures. (line 639)
- * bfd_get_mtime: Miscellaneous. (line 453)
- * bfd_get_next_mapent: Archives. (line 57)
- * bfd_get_next_section_by_name: section prototypes. (line 25)
- * bfd_get_reloc_code_name: howto manager. (line 3429)
- * bfd_get_reloc_size: typedef arelent. (line 306)
- * bfd_get_reloc_upper_bound: Miscellaneous. (line 8)
- * bfd_get_section_by_name: section prototypes. (line 16)
- * bfd_get_section_by_name_if: section prototypes. (line 46)
- * bfd_get_section_contents: section prototypes. (line 252)
- * bfd_get_sign_extend_vma: Miscellaneous. (line 78)
- * bfd_get_size: Miscellaneous. (line 462)
- * bfd_get_size <1>: Internal. (line 24)
- * bfd_get_symtab_upper_bound: symbol handling functions.
- (line 5)
- * bfd_get_target_info: bfd_target. (line 583)
- * bfd_get_unique_section_name: section prototypes. (line 65)
- * bfd_hash_allocate: Creating and Freeing a Hash Table.
- (line 17)
- * bfd_hash_lookup: Looking Up or Entering a String.
- (line 6)
- * bfd_hash_newfunc: Creating and Freeing a Hash Table.
- (line 12)
- * bfd_hash_set_default_size: Creating and Freeing a Hash Table.
- (line 25)
- * bfd_hash_table_free: Creating and Freeing a Hash Table.
- (line 21)
- * bfd_hash_table_init: Creating and Freeing a Hash Table.
- (line 6)
- * bfd_hash_table_init_n: Creating and Freeing a Hash Table.
- (line 6)
- * bfd_hash_traverse: Traversing a Hash Table.
- (line 6)
- * bfd_hide_sym_by_version: Writing the symbol table.
- (line 123)
- * bfd_h_put_size: Internal. (line 111)
- * bfd_init: Initialization. (line 10)
- * bfd_install_relocation: typedef arelent. (line 382)
- * bfd_is_local_label: symbol handling functions.
- (line 17)
- * bfd_is_local_label_name: symbol handling functions.
- (line 26)
- * bfd_is_target_special_symbol: symbol handling functions.
- (line 39)
- * bfd_is_undefined_symclass: symbol handling functions.
- (line 125)
- * bfd_iterate_over_targets: bfd_target. (line 618)
- * bfd_link_check_relocs: Writing the symbol table.
- (line 133)
- * bfd_link_split_section: Writing the symbol table.
- (line 43)
- * bfd_log2: Internal. (line 180)
- * bfd_lookup_arch: Architectures. (line 691)
- * bfd_make_debug_symbol: symbol handling functions.
- (line 106)
- * bfd_make_empty_symbol: symbol handling functions.
- (line 81)
- * bfd_make_readable: Opening and Closing.
- (line 225)
- * bfd_make_section: section prototypes. (line 143)
- * bfd_make_section_anyway: section prototypes. (line 115)
- * bfd_make_section_anyway_with_flags: section prototypes. (line 97)
- * bfd_make_section_old_way: section prototypes. (line 77)
- * bfd_make_section_with_flags: section prototypes. (line 131)
- * bfd_make_writable: Opening and Closing.
- (line 211)
- * bfd_malloc_and_get_section: section prototypes. (line 269)
- * bfd_map_over_sections: section prototypes. (line 176)
- * bfd_merge_private_bfd_data: Writing the symbol table.
- (line 155)
- * bfd_mmap: Miscellaneous. (line 499)
- * bfd_octets_per_byte: Architectures. (line 714)
- * bfd_openr: Opening and Closing.
- (line 37)
- * bfd_openr_iovec: Opening and Closing.
- (line 95)
- * bfd_openr_next_archived_file: Archives. (line 83)
- * bfd_openstreamr: Opening and Closing.
- (line 82)
- * bfd_openw: Opening and Closing.
- (line 146)
- * bfd_open_file: File Caching. (line 51)
- * bfd_perform_relocation: typedef arelent. (line 357)
- * bfd_perror: Error reporting. (line 88)
- * bfd_printable_arch_mach: Architectures. (line 702)
- * bfd_printable_name: Architectures. (line 562)
- * bfd_print_symbol_vandf: symbol handling functions.
- (line 73)
- * bfd_put_size: Internal. (line 21)
- * BFD_RELOC_12_PCREL: howto manager. (line 37)
- * BFD_RELOC_14: howto manager. (line 30)
- * BFD_RELOC_16: howto manager. (line 29)
- * BFD_RELOC_16_BASEREL: howto manager. (line 90)
- * BFD_RELOC_16_GOTOFF: howto manager. (line 49)
- * BFD_RELOC_16_GOT_PCREL: howto manager. (line 46)
- * BFD_RELOC_16_PCREL: howto manager. (line 36)
- * BFD_RELOC_16_PCREL_S2: howto manager. (line 100)
- * BFD_RELOC_16_PLTOFF: howto manager. (line 61)
- * BFD_RELOC_16_PLT_PCREL: howto manager. (line 57)
- * BFD_RELOC_23_PCREL_S2: howto manager. (line 101)
- * BFD_RELOC_24: howto manager. (line 28)
- * BFD_RELOC_24_PCREL: howto manager. (line 35)
- * BFD_RELOC_24_PLT_PCREL: howto manager. (line 56)
- * BFD_RELOC_26: howto manager. (line 27)
- * BFD_RELOC_32: howto manager. (line 26)
- * BFD_RELOC_32_BASEREL: howto manager. (line 89)
- * BFD_RELOC_32_GOTOFF: howto manager. (line 48)
- * BFD_RELOC_32_GOT_PCREL: howto manager. (line 45)
- * BFD_RELOC_32_PCREL: howto manager. (line 34)
- * BFD_RELOC_32_PCREL_S2: howto manager. (line 99)
- * BFD_RELOC_32_PLTOFF: howto manager. (line 60)
- * BFD_RELOC_32_PLT_PCREL: howto manager. (line 55)
- * BFD_RELOC_32_SECREL: howto manager. (line 43)
- * BFD_RELOC_386_COPY: howto manager. (line 523)
- * BFD_RELOC_386_GLOB_DAT: howto manager. (line 524)
- * BFD_RELOC_386_GOT32: howto manager. (line 521)
- * BFD_RELOC_386_GOT32X: howto manager. (line 545)
- * BFD_RELOC_386_GOTOFF: howto manager. (line 527)
- * BFD_RELOC_386_GOTPC: howto manager. (line 528)
- * BFD_RELOC_386_IRELATIVE: howto manager. (line 544)
- * BFD_RELOC_386_JUMP_SLOT: howto manager. (line 525)
- * BFD_RELOC_386_PLT32: howto manager. (line 522)
- * BFD_RELOC_386_RELATIVE: howto manager. (line 526)
- * BFD_RELOC_386_TLS_DESC: howto manager. (line 543)
- * BFD_RELOC_386_TLS_DESC_CALL: howto manager. (line 542)
- * BFD_RELOC_386_TLS_DTPMOD32: howto manager. (line 538)
- * BFD_RELOC_386_TLS_DTPOFF32: howto manager. (line 539)
- * BFD_RELOC_386_TLS_GD: howto manager. (line 533)
- * BFD_RELOC_386_TLS_GOTDESC: howto manager. (line 541)
- * BFD_RELOC_386_TLS_GOTIE: howto manager. (line 531)
- * BFD_RELOC_386_TLS_IE: howto manager. (line 530)
- * BFD_RELOC_386_TLS_IE_32: howto manager. (line 536)
- * BFD_RELOC_386_TLS_LDM: howto manager. (line 534)
- * BFD_RELOC_386_TLS_LDO_32: howto manager. (line 535)
- * BFD_RELOC_386_TLS_LE: howto manager. (line 532)
- * BFD_RELOC_386_TLS_LE_32: howto manager. (line 537)
- * BFD_RELOC_386_TLS_TPOFF: howto manager. (line 529)
- * BFD_RELOC_386_TLS_TPOFF32: howto manager. (line 540)
- * BFD_RELOC_390_12: howto manager. (line 1950)
- * BFD_RELOC_390_20: howto manager. (line 2031)
- * BFD_RELOC_390_COPY: howto manager. (line 1956)
- * BFD_RELOC_390_GLOB_DAT: howto manager. (line 1958)
- * BFD_RELOC_390_GOT12: howto manager. (line 1952)
- * BFD_RELOC_390_GOT16: howto manager. (line 1966)
- * BFD_RELOC_390_GOT20: howto manager. (line 2032)
- * BFD_RELOC_390_GOT64: howto manager. (line 1986)
- * BFD_RELOC_390_GOTENT: howto manager. (line 1990)
- * BFD_RELOC_390_GOTOFF64: howto manager. (line 1992)
- * BFD_RELOC_390_GOTPC: howto manager. (line 1964)
- * BFD_RELOC_390_GOTPCDBL: howto manager. (line 1984)
- * BFD_RELOC_390_GOTPLT12: howto manager. (line 1994)
- * BFD_RELOC_390_GOTPLT16: howto manager. (line 1996)
- * BFD_RELOC_390_GOTPLT20: howto manager. (line 2033)
- * BFD_RELOC_390_GOTPLT32: howto manager. (line 1998)
- * BFD_RELOC_390_GOTPLT64: howto manager. (line 2000)
- * BFD_RELOC_390_GOTPLTENT: howto manager. (line 2002)
- * BFD_RELOC_390_IRELATIVE: howto manager. (line 2036)
- * BFD_RELOC_390_JMP_SLOT: howto manager. (line 1960)
- * BFD_RELOC_390_PC12DBL: howto manager. (line 1968)
- * BFD_RELOC_390_PC16DBL: howto manager. (line 1972)
- * BFD_RELOC_390_PC24DBL: howto manager. (line 1976)
- * BFD_RELOC_390_PC32DBL: howto manager. (line 1980)
- * BFD_RELOC_390_PLT12DBL: howto manager. (line 1970)
- * BFD_RELOC_390_PLT16DBL: howto manager. (line 1974)
- * BFD_RELOC_390_PLT24DBL: howto manager. (line 1978)
- * BFD_RELOC_390_PLT32: howto manager. (line 1954)
- * BFD_RELOC_390_PLT32DBL: howto manager. (line 1982)
- * BFD_RELOC_390_PLT64: howto manager. (line 1988)
- * BFD_RELOC_390_PLTOFF16: howto manager. (line 2004)
- * BFD_RELOC_390_PLTOFF32: howto manager. (line 2006)
- * BFD_RELOC_390_PLTOFF64: howto manager. (line 2008)
- * BFD_RELOC_390_RELATIVE: howto manager. (line 1962)
- * BFD_RELOC_390_TLS_DTPMOD: howto manager. (line 2027)
- * BFD_RELOC_390_TLS_DTPOFF: howto manager. (line 2028)
- * BFD_RELOC_390_TLS_GD32: howto manager. (line 2013)
- * BFD_RELOC_390_TLS_GD64: howto manager. (line 2014)
- * BFD_RELOC_390_TLS_GDCALL: howto manager. (line 2011)
- * BFD_RELOC_390_TLS_GOTIE12: howto manager. (line 2015)
- * BFD_RELOC_390_TLS_GOTIE20: howto manager. (line 2034)
- * BFD_RELOC_390_TLS_GOTIE32: howto manager. (line 2016)
- * BFD_RELOC_390_TLS_GOTIE64: howto manager. (line 2017)
- * BFD_RELOC_390_TLS_IE32: howto manager. (line 2020)
- * BFD_RELOC_390_TLS_IE64: howto manager. (line 2021)
- * BFD_RELOC_390_TLS_IEENT: howto manager. (line 2022)
- * BFD_RELOC_390_TLS_LDCALL: howto manager. (line 2012)
- * BFD_RELOC_390_TLS_LDM32: howto manager. (line 2018)
- * BFD_RELOC_390_TLS_LDM64: howto manager. (line 2019)
- * BFD_RELOC_390_TLS_LDO32: howto manager. (line 2025)
- * BFD_RELOC_390_TLS_LDO64: howto manager. (line 2026)
- * BFD_RELOC_390_TLS_LE32: howto manager. (line 2023)
- * BFD_RELOC_390_TLS_LE64: howto manager. (line 2024)
- * BFD_RELOC_390_TLS_LOAD: howto manager. (line 2010)
- * BFD_RELOC_390_TLS_TPOFF: howto manager. (line 2029)
- * BFD_RELOC_64: howto manager. (line 25)
- * BFD_RELOC_64_PCREL: howto manager. (line 33)
- * BFD_RELOC_64_PLTOFF: howto manager. (line 59)
- * BFD_RELOC_64_PLT_PCREL: howto manager. (line 54)
- * BFD_RELOC_68K_GLOB_DAT: howto manager. (line 70)
- * BFD_RELOC_68K_JMP_SLOT: howto manager. (line 71)
- * BFD_RELOC_68K_RELATIVE: howto manager. (line 72)
- * BFD_RELOC_68K_TLS_GD16: howto manager. (line 74)
- * BFD_RELOC_68K_TLS_GD32: howto manager. (line 73)
- * BFD_RELOC_68K_TLS_GD8: howto manager. (line 75)
- * BFD_RELOC_68K_TLS_IE16: howto manager. (line 83)
- * BFD_RELOC_68K_TLS_IE32: howto manager. (line 82)
- * BFD_RELOC_68K_TLS_IE8: howto manager. (line 84)
- * BFD_RELOC_68K_TLS_LDM16: howto manager. (line 77)
- * BFD_RELOC_68K_TLS_LDM32: howto manager. (line 76)
- * BFD_RELOC_68K_TLS_LDM8: howto manager. (line 78)
- * BFD_RELOC_68K_TLS_LDO16: howto manager. (line 80)
- * BFD_RELOC_68K_TLS_LDO32: howto manager. (line 79)
- * BFD_RELOC_68K_TLS_LDO8: howto manager. (line 81)
- * BFD_RELOC_68K_TLS_LE16: howto manager. (line 86)
- * BFD_RELOC_68K_TLS_LE32: howto manager. (line 85)
- * BFD_RELOC_68K_TLS_LE8: howto manager. (line 87)
- * BFD_RELOC_8: howto manager. (line 31)
- * BFD_RELOC_8_BASEREL: howto manager. (line 94)
- * BFD_RELOC_8_FFnn: howto manager. (line 97)
- * BFD_RELOC_8_GOTOFF: howto manager. (line 53)
- * BFD_RELOC_8_GOT_PCREL: howto manager. (line 47)
- * BFD_RELOC_8_PCREL: howto manager. (line 38)
- * BFD_RELOC_8_PLTOFF: howto manager. (line 65)
- * BFD_RELOC_8_PLT_PCREL: howto manager. (line 58)
- * BFD_RELOC_AARCH64_16: howto manager. (line 2761)
- * BFD_RELOC_AARCH64_16_PCREL: howto manager. (line 2767)
- * BFD_RELOC_AARCH64_32: howto manager. (line 2760)
- * BFD_RELOC_AARCH64_32_PCREL: howto manager. (line 2766)
- * BFD_RELOC_AARCH64_64: howto manager. (line 2759)
- * BFD_RELOC_AARCH64_64_PCREL: howto manager. (line 2765)
- * BFD_RELOC_AARCH64_ADD_LO12: howto manager. (line 2840)
- * BFD_RELOC_AARCH64_ADR_GOT_PAGE: howto manager. (line 2886)
- * BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL: howto manager. (line 2836)
- * BFD_RELOC_AARCH64_ADR_HI21_PCREL: howto manager. (line 2833)
- * BFD_RELOC_AARCH64_ADR_LO21_PCREL: howto manager. (line 2830)
- * BFD_RELOC_AARCH64_BRANCH19: howto manager. (line 2852)
- * BFD_RELOC_AARCH64_CALL26: howto manager. (line 2860)
- * BFD_RELOC_AARCH64_COPY: howto manager. (line 3053)
- * BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP: howto manager. (line 3077)
- * BFD_RELOC_AARCH64_GLOB_DAT: howto manager. (line 3055)
- * BFD_RELOC_AARCH64_GOT_LD_PREL19: howto manager. (line 2880)
- * BFD_RELOC_AARCH64_IRELATIVE: howto manager. (line 3069)
- * BFD_RELOC_AARCH64_JUMP26: howto manager. (line 2856)
- * BFD_RELOC_AARCH64_JUMP_SLOT: howto manager. (line 3057)
- * BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14: howto manager. (line 2907)
- * BFD_RELOC_AARCH64_LD32_GOT_LO12_NC: howto manager. (line 2894)
- * BFD_RELOC_AARCH64_LD64_GOTOFF_LO15: howto manager. (line 2904)
- * BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15: howto manager. (line 2910)
- * BFD_RELOC_AARCH64_LD64_GOT_LO12_NC: howto manager. (line 2890)
- * BFD_RELOC_AARCH64_LDST128_LO12: howto manager. (line 2876)
- * BFD_RELOC_AARCH64_LDST16_LO12: howto manager. (line 2864)
- * BFD_RELOC_AARCH64_LDST32_LO12: howto manager. (line 2868)
- * BFD_RELOC_AARCH64_LDST64_LO12: howto manager. (line 2872)
- * BFD_RELOC_AARCH64_LDST8_LO12: howto manager. (line 2844)
- * BFD_RELOC_AARCH64_LDST_LO12: howto manager. (line 3080)
- * BFD_RELOC_AARCH64_LD_GOT_LO12_NC: howto manager. (line 3098)
- * BFD_RELOC_AARCH64_LD_LO19_PCREL: howto manager. (line 2826)
- * BFD_RELOC_AARCH64_MOVW_G0: howto manager. (line 2770)
- * BFD_RELOC_AARCH64_MOVW_G0_NC: howto manager. (line 2773)
- * BFD_RELOC_AARCH64_MOVW_G0_S: howto manager. (line 2791)
- * BFD_RELOC_AARCH64_MOVW_G1: howto manager. (line 2776)
- * BFD_RELOC_AARCH64_MOVW_G1_NC: howto manager. (line 2779)
- * BFD_RELOC_AARCH64_MOVW_G1_S: howto manager. (line 2795)
- * BFD_RELOC_AARCH64_MOVW_G2: howto manager. (line 2782)
- * BFD_RELOC_AARCH64_MOVW_G2_NC: howto manager. (line 2785)
- * BFD_RELOC_AARCH64_MOVW_G2_S: howto manager. (line 2799)
- * BFD_RELOC_AARCH64_MOVW_G3: howto manager. (line 2788)
- * BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC: howto manager. (line 2898)
- * BFD_RELOC_AARCH64_MOVW_GOTOFF_G1: howto manager. (line 2901)
- * BFD_RELOC_AARCH64_MOVW_PREL_G0: howto manager. (line 2803)
- * BFD_RELOC_AARCH64_MOVW_PREL_G0_NC: howto manager. (line 2807)
- * BFD_RELOC_AARCH64_MOVW_PREL_G1: howto manager. (line 2811)
- * BFD_RELOC_AARCH64_MOVW_PREL_G1_NC: howto manager. (line 2814)
- * BFD_RELOC_AARCH64_MOVW_PREL_G2: howto manager. (line 2817)
- * BFD_RELOC_AARCH64_MOVW_PREL_G2_NC: howto manager. (line 2820)
- * BFD_RELOC_AARCH64_MOVW_PREL_G3: howto manager. (line 2823)
- * BFD_RELOC_AARCH64_NONE: howto manager. (line 2757)
- * BFD_RELOC_AARCH64_NULL: howto manager. (line 2755)
- * BFD_RELOC_AARCH64_RELATIVE: howto manager. (line 3059)
- * BFD_RELOC_AARCH64_RELOC_END: howto manager. (line 3071)
- * BFD_RELOC_AARCH64_RELOC_START: howto manager. (line 2750)
- * BFD_RELOC_AARCH64_TLSDESC: howto manager. (line 3067)
- * BFD_RELOC_AARCH64_TLSDESC_ADD: howto manager. (line 3049)
- * BFD_RELOC_AARCH64_TLSDESC_ADD_LO12: howto manager. (line 3041)
- * BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21: howto manager. (line 3035)
- * BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21: howto manager. (line 3033)
- * BFD_RELOC_AARCH64_TLSDESC_CALL: howto manager. (line 3051)
- * BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC: howto manager. (line 3039)
- * BFD_RELOC_AARCH64_TLSDESC_LD64_LO12: howto manager. (line 3037)
- * BFD_RELOC_AARCH64_TLSDESC_LDR: howto manager. (line 3047)
- * BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC: howto manager. (line 3104)
- * BFD_RELOC_AARCH64_TLSDESC_LD_PREL19: howto manager. (line 3031)
- * BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC: howto manager. (line 3045)
- * BFD_RELOC_AARCH64_TLSDESC_OFF_G1: howto manager. (line 3043)
- * BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC: howto manager. (line 2920)
- * BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21: howto manager. (line 2913)
- * BFD_RELOC_AARCH64_TLSGD_ADR_PREL21: howto manager. (line 2918)
- * BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC: howto manager. (line 2924)
- * BFD_RELOC_AARCH64_TLSGD_MOVW_G1: howto manager. (line 2926)
- * BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: howto manager.
- (line 2928)
- * BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC: howto manager.
- (line 2932)
- * BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: howto manager.
- (line 2930)
- * BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC: howto manager.
- (line 3101)
- * BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 2934)
- * BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC: howto manager.
- (line 2936)
- * BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager. (line 2938)
- * BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12: howto manager. (line 2940)
- * BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12: howto manager. (line 2942)
- * BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC: howto manager. (line 2944)
- * BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC: howto manager. (line 2947)
- * BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21: howto manager. (line 2951)
- * BFD_RELOC_AARCH64_TLSLD_ADR_PREL21: howto manager. (line 2954)
- * BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12: howto manager. (line 2957)
- * BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC: howto manager.
- (line 2960)
- * BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12: howto manager. (line 2963)
- * BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC: howto manager.
- (line 2966)
- * BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12: howto manager. (line 2969)
- * BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC: howto manager.
- (line 2972)
- * BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12: howto manager. (line 2975)
- * BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC: howto manager.
- (line 2978)
- * BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12: howto manager. (line 3084)
- * BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC: howto manager.
- (line 3088)
- * BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0: howto manager. (line 2981)
- * BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC: howto manager. (line 2983)
- * BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1: howto manager. (line 2985)
- * BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC: howto manager. (line 2987)
- * BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2: howto manager. (line 2989)
- * BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager. (line 3001)
- * BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager. (line 3003)
- * BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager. (line 3005)
- * BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12: howto manager. (line 3007)
- * BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC: howto manager.
- (line 3010)
- * BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12: howto manager. (line 3013)
- * BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC: howto manager.
- (line 3016)
- * BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12: howto manager. (line 3019)
- * BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC: howto manager.
- (line 3022)
- * BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12: howto manager. (line 3025)
- * BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC: howto manager.
- (line 3028)
- * BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12: howto manager. (line 3091)
- * BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC: howto manager. (line 3095)
- * BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager. (line 2997)
- * BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager. (line 2999)
- * BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager. (line 2993)
- * BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager. (line 2995)
- * BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager. (line 2991)
- * BFD_RELOC_AARCH64_TLS_DTPMOD: howto manager. (line 3061)
- * BFD_RELOC_AARCH64_TLS_DTPREL: howto manager. (line 3063)
- * BFD_RELOC_AARCH64_TLS_TPREL: howto manager. (line 3065)
- * BFD_RELOC_AARCH64_TSTBR14: howto manager. (line 2848)
- * BFD_RELOC_AC_SECTOFF_S9: howto manager. (line 1062)
- * BFD_RELOC_AC_SECTOFF_S9_1: howto manager. (line 1063)
- * BFD_RELOC_AC_SECTOFF_S9_2: howto manager. (line 1064)
- * BFD_RELOC_AC_SECTOFF_U8: howto manager. (line 1059)
- * BFD_RELOC_AC_SECTOFF_U8_1: howto manager. (line 1060)
- * BFD_RELOC_AC_SECTOFF_U8_2: howto manager. (line 1061)
- * BFD_RELOC_ALPHA_BOH: howto manager. (line 288)
- * BFD_RELOC_ALPHA_BRSGP: howto manager. (line 275)
- * BFD_RELOC_ALPHA_BSR: howto manager. (line 282)
- * BFD_RELOC_ALPHA_CODEADDR: howto manager. (line 268)
- * BFD_RELOC_ALPHA_DTPMOD64: howto manager. (line 293)
- * BFD_RELOC_ALPHA_DTPREL16: howto manager. (line 298)
- * BFD_RELOC_ALPHA_DTPREL64: howto manager. (line 295)
- * BFD_RELOC_ALPHA_DTPREL_HI16: howto manager. (line 296)
- * BFD_RELOC_ALPHA_DTPREL_LO16: howto manager. (line 297)
- * BFD_RELOC_ALPHA_ELF_LITERAL: howto manager. (line 236)
- * BFD_RELOC_ALPHA_GOTDTPREL16: howto manager. (line 294)
- * BFD_RELOC_ALPHA_GOTTPREL16: howto manager. (line 299)
- * BFD_RELOC_ALPHA_GPDISP: howto manager. (line 231)
- * BFD_RELOC_ALPHA_GPDISP_HI16: howto manager. (line 219)
- * BFD_RELOC_ALPHA_GPDISP_LO16: howto manager. (line 226)
- * BFD_RELOC_ALPHA_GPREL_HI16: howto manager. (line 271)
- * BFD_RELOC_ALPHA_GPREL_LO16: howto manager. (line 272)
- * BFD_RELOC_ALPHA_HINT: howto manager. (line 261)
- * BFD_RELOC_ALPHA_LDA: howto manager. (line 285)
- * BFD_RELOC_ALPHA_LINKAGE: howto manager. (line 265)
- * BFD_RELOC_ALPHA_LITERAL: howto manager. (line 235)
- * BFD_RELOC_ALPHA_LITUSE: howto manager. (line 237)
- * BFD_RELOC_ALPHA_NOP: howto manager. (line 279)
- * BFD_RELOC_ALPHA_TLSGD: howto manager. (line 291)
- * BFD_RELOC_ALPHA_TLSLDM: howto manager. (line 292)
- * BFD_RELOC_ALPHA_TPREL16: howto manager. (line 303)
- * BFD_RELOC_ALPHA_TPREL64: howto manager. (line 300)
- * BFD_RELOC_ALPHA_TPREL_HI16: howto manager. (line 301)
- * BFD_RELOC_ALPHA_TPREL_LO16: howto manager. (line 302)
- * BFD_RELOC_ARC_16: howto manager. (line 1031)
- * BFD_RELOC_ARC_24: howto manager. (line 1032)
- * BFD_RELOC_ARC_32: howto manager. (line 1033)
- * BFD_RELOC_ARC_32_ME: howto manager. (line 1053)
- * BFD_RELOC_ARC_32_ME_S: howto manager. (line 1054)
- * BFD_RELOC_ARC_32_PCREL: howto manager. (line 1071)
- * BFD_RELOC_ARC_8: howto manager. (line 1030)
- * BFD_RELOC_ARC_COPY: howto manager. (line 1076)
- * BFD_RELOC_ARC_GLOB_DAT: howto manager. (line 1077)
- * BFD_RELOC_ARC_GOT32: howto manager. (line 1073)
- * BFD_RELOC_ARC_GOTOFF: howto manager. (line 1080)
- * BFD_RELOC_ARC_GOTPC: howto manager. (line 1081)
- * BFD_RELOC_ARC_GOTPC32: howto manager. (line 1074)
- * BFD_RELOC_ARC_JLI_SECTOFF: howto manager. (line 1097)
- * BFD_RELOC_ARC_JMP_SLOT: howto manager. (line 1078)
- * BFD_RELOC_ARC_N16: howto manager. (line 1035)
- * BFD_RELOC_ARC_N24: howto manager. (line 1036)
- * BFD_RELOC_ARC_N32: howto manager. (line 1037)
- * BFD_RELOC_ARC_N32_ME: howto manager. (line 1055)
- * BFD_RELOC_ARC_N8: howto manager. (line 1034)
- * BFD_RELOC_ARC_NONE: howto manager. (line 1029)
- * BFD_RELOC_ARC_NPS_CMEM16: howto manager. (line 1096)
- * BFD_RELOC_ARC_PC32: howto manager. (line 1072)
- * BFD_RELOC_ARC_PLT32: howto manager. (line 1075)
- * BFD_RELOC_ARC_RELATIVE: howto manager. (line 1079)
- * BFD_RELOC_ARC_S13_PCREL: howto manager. (line 1051)
- * BFD_RELOC_ARC_S21H_PCREL: howto manager. (line 1040)
- * BFD_RELOC_ARC_S21H_PCREL_PLT: howto manager. (line 1095)
- * BFD_RELOC_ARC_S21W_PCREL: howto manager. (line 1041)
- * BFD_RELOC_ARC_S21W_PCREL_PLT: howto manager. (line 1082)
- * BFD_RELOC_ARC_S25H_PCREL: howto manager. (line 1042)
- * BFD_RELOC_ARC_S25H_PCREL_PLT: howto manager. (line 1083)
- * BFD_RELOC_ARC_S25W_PCREL: howto manager. (line 1043)
- * BFD_RELOC_ARC_S25W_PCREL_PLT: howto manager. (line 1094)
- * BFD_RELOC_ARC_SDA: howto manager. (line 1038)
- * BFD_RELOC_ARC_SDA16_LD: howto manager. (line 1048)
- * BFD_RELOC_ARC_SDA16_LD1: howto manager. (line 1049)
- * BFD_RELOC_ARC_SDA16_LD2: howto manager. (line 1050)
- * BFD_RELOC_ARC_SDA16_ST2: howto manager. (line 1070)
- * BFD_RELOC_ARC_SDA32: howto manager. (line 1044)
- * BFD_RELOC_ARC_SDA32_ME: howto manager. (line 1057)
- * BFD_RELOC_ARC_SDA_12: howto manager. (line 1069)
- * BFD_RELOC_ARC_SDA_LDST: howto manager. (line 1045)
- * BFD_RELOC_ARC_SDA_LDST1: howto manager. (line 1046)
- * BFD_RELOC_ARC_SDA_LDST2: howto manager. (line 1047)
- * BFD_RELOC_ARC_SECTOFF: howto manager. (line 1039)
- * BFD_RELOC_ARC_SECTOFF_1: howto manager. (line 1067)
- * BFD_RELOC_ARC_SECTOFF_2: howto manager. (line 1068)
- * BFD_RELOC_ARC_SECTOFF_ME: howto manager. (line 1056)
- * BFD_RELOC_ARC_SECTOFF_ME_1: howto manager. (line 1065)
- * BFD_RELOC_ARC_SECTOFF_ME_2: howto manager. (line 1066)
- * BFD_RELOC_ARC_TLS_DTPMOD: howto manager. (line 1084)
- * BFD_RELOC_ARC_TLS_DTPOFF: howto manager. (line 1090)
- * BFD_RELOC_ARC_TLS_DTPOFF_S9: howto manager. (line 1091)
- * BFD_RELOC_ARC_TLS_GD_CALL: howto manager. (line 1088)
- * BFD_RELOC_ARC_TLS_GD_GOT: howto manager. (line 1086)
- * BFD_RELOC_ARC_TLS_GD_LD: howto manager. (line 1087)
- * BFD_RELOC_ARC_TLS_IE_GOT: howto manager. (line 1089)
- * BFD_RELOC_ARC_TLS_LE_32: howto manager. (line 1093)
- * BFD_RELOC_ARC_TLS_LE_S9: howto manager. (line 1092)
- * BFD_RELOC_ARC_TLS_TPOFF: howto manager. (line 1085)
- * BFD_RELOC_ARC_W: howto manager. (line 1052)
- * BFD_RELOC_ARC_W_ME: howto manager. (line 1058)
- * BFD_RELOC_ARM_ADRL_IMMEDIATE: howto manager. (line 902)
- * BFD_RELOC_ARM_ADR_IMM: howto manager. (line 917)
- * BFD_RELOC_ARM_ALU_PC_G0: howto manager. (line 864)
- * BFD_RELOC_ARM_ALU_PC_G0_NC: howto manager. (line 863)
- * BFD_RELOC_ARM_ALU_PC_G1: howto manager. (line 866)
- * BFD_RELOC_ARM_ALU_PC_G1_NC: howto manager. (line 865)
- * BFD_RELOC_ARM_ALU_PC_G2: howto manager. (line 867)
- * BFD_RELOC_ARM_ALU_SB_G0: howto manager. (line 878)
- * BFD_RELOC_ARM_ALU_SB_G0_NC: howto manager. (line 877)
- * BFD_RELOC_ARM_ALU_SB_G1: howto manager. (line 880)
- * BFD_RELOC_ARM_ALU_SB_G1_NC: howto manager. (line 879)
- * BFD_RELOC_ARM_ALU_SB_G2: howto manager. (line 881)
- * BFD_RELOC_ARM_CP_OFF_IMM: howto manager. (line 912)
- * BFD_RELOC_ARM_CP_OFF_IMM_S2: howto manager. (line 913)
- * BFD_RELOC_ARM_FUNCDESC: howto manager. (line 833)
- * BFD_RELOC_ARM_FUNCDESC_VALUE: howto manager. (line 834)
- * BFD_RELOC_ARM_GLOB_DAT: howto manager. (line 840)
- * BFD_RELOC_ARM_GOT32: howto manager. (line 841)
- * BFD_RELOC_ARM_GOTFUNCDESC: howto manager. (line 831)
- * BFD_RELOC_ARM_GOTOFF: howto manager. (line 844)
- * BFD_RELOC_ARM_GOTOFFFUNCDESC: howto manager. (line 832)
- * BFD_RELOC_ARM_GOTPC: howto manager. (line 845)
- * BFD_RELOC_ARM_GOT_PREL: howto manager. (line 846)
- * BFD_RELOC_ARM_HVC: howto manager. (line 909)
- * BFD_RELOC_ARM_HWLITERAL: howto manager. (line 924)
- * BFD_RELOC_ARM_IMMEDIATE: howto manager. (line 901)
- * BFD_RELOC_ARM_IN_POOL: howto manager. (line 920)
- * BFD_RELOC_ARM_IRELATIVE: howto manager. (line 894)
- * BFD_RELOC_ARM_JUMP_SLOT: howto manager. (line 839)
- * BFD_RELOC_ARM_LDC_PC_G0: howto manager. (line 874)
- * BFD_RELOC_ARM_LDC_PC_G1: howto manager. (line 875)
- * BFD_RELOC_ARM_LDC_PC_G2: howto manager. (line 876)
- * BFD_RELOC_ARM_LDC_SB_G0: howto manager. (line 888)
- * BFD_RELOC_ARM_LDC_SB_G1: howto manager. (line 889)
- * BFD_RELOC_ARM_LDC_SB_G2: howto manager. (line 890)
- * BFD_RELOC_ARM_LDRS_PC_G0: howto manager. (line 871)
- * BFD_RELOC_ARM_LDRS_PC_G1: howto manager. (line 872)
- * BFD_RELOC_ARM_LDRS_PC_G2: howto manager. (line 873)
- * BFD_RELOC_ARM_LDRS_SB_G0: howto manager. (line 885)
- * BFD_RELOC_ARM_LDRS_SB_G1: howto manager. (line 886)
- * BFD_RELOC_ARM_LDRS_SB_G2: howto manager. (line 887)
- * BFD_RELOC_ARM_LDR_IMM: howto manager. (line 918)
- * BFD_RELOC_ARM_LDR_PC_G0: howto manager. (line 868)
- * BFD_RELOC_ARM_LDR_PC_G1: howto manager. (line 869)
- * BFD_RELOC_ARM_LDR_PC_G2: howto manager. (line 870)
- * BFD_RELOC_ARM_LDR_SB_G0: howto manager. (line 882)
- * BFD_RELOC_ARM_LDR_SB_G1: howto manager. (line 883)
- * BFD_RELOC_ARM_LDR_SB_G2: howto manager. (line 884)
- * BFD_RELOC_ARM_LITERAL: howto manager. (line 919)
- * BFD_RELOC_ARM_MOVT: howto manager. (line 823)
- * BFD_RELOC_ARM_MOVT_PCREL: howto manager. (line 825)
- * BFD_RELOC_ARM_MOVW: howto manager. (line 822)
- * BFD_RELOC_ARM_MOVW_PCREL: howto manager. (line 824)
- * BFD_RELOC_ARM_MULTI: howto manager. (line 911)
- * BFD_RELOC_ARM_OFFSET_IMM: howto manager. (line 803)
- * BFD_RELOC_ARM_OFFSET_IMM8: howto manager. (line 921)
- * BFD_RELOC_ARM_PCREL_BLX: howto manager. (line 767)
- * BFD_RELOC_ARM_PCREL_BRANCH: howto manager. (line 764)
- * BFD_RELOC_ARM_PCREL_CALL: howto manager. (line 775)
- * BFD_RELOC_ARM_PCREL_JUMP: howto manager. (line 778)
- * BFD_RELOC_ARM_PLT32: howto manager. (line 842)
- * BFD_RELOC_ARM_PREL31: howto manager. (line 820)
- * BFD_RELOC_ARM_RELATIVE: howto manager. (line 843)
- * BFD_RELOC_ARM_ROSEGREL32: howto manager. (line 812)
- * BFD_RELOC_ARM_SBREL32: howto manager. (line 814)
- * BFD_RELOC_ARM_SHIFT_IMM: howto manager. (line 907)
- * BFD_RELOC_ARM_SMC: howto manager. (line 908)
- * BFD_RELOC_ARM_SWI: howto manager. (line 910)
- * BFD_RELOC_ARM_T32_ADD_IMM: howto manager. (line 904)
- * BFD_RELOC_ARM_T32_ADD_PC12: howto manager. (line 906)
- * BFD_RELOC_ARM_T32_CP_OFF_IMM: howto manager. (line 914)
- * BFD_RELOC_ARM_T32_CP_OFF_IMM_S2: howto manager. (line 915)
- * BFD_RELOC_ARM_T32_IMM12: howto manager. (line 905)
- * BFD_RELOC_ARM_T32_IMMEDIATE: howto manager. (line 903)
- * BFD_RELOC_ARM_T32_OFFSET_IMM: howto manager. (line 923)
- * BFD_RELOC_ARM_T32_OFFSET_U8: howto manager. (line 922)
- * BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM: howto manager. (line 916)
- * BFD_RELOC_ARM_TARGET1: howto manager. (line 809)
- * BFD_RELOC_ARM_TARGET2: howto manager. (line 816)
- * BFD_RELOC_ARM_THM_TLS_CALL: howto manager. (line 858)
- * BFD_RELOC_ARM_THM_TLS_DESCSEQ: howto manager. (line 860)
- * BFD_RELOC_ARM_THUMB_ADD: howto manager. (line 925)
- * BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC: howto manager. (line 896)
- * BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC: howto manager. (line 897)
- * BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC: howto manager. (line 898)
- * BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC: howto manager. (line 899)
- * BFD_RELOC_ARM_THUMB_BF13: howto manager. (line 786)
- * BFD_RELOC_ARM_THUMB_BF17: howto manager. (line 784)
- * BFD_RELOC_ARM_THUMB_BF19: howto manager. (line 788)
- * BFD_RELOC_ARM_THUMB_IMM: howto manager. (line 926)
- * BFD_RELOC_ARM_THUMB_LOOP12: howto manager. (line 790)
- * BFD_RELOC_ARM_THUMB_MOVT: howto manager. (line 827)
- * BFD_RELOC_ARM_THUMB_MOVT_PCREL: howto manager. (line 829)
- * BFD_RELOC_ARM_THUMB_MOVW: howto manager. (line 826)
- * BFD_RELOC_ARM_THUMB_MOVW_PCREL: howto manager. (line 828)
- * BFD_RELOC_ARM_THUMB_OFFSET: howto manager. (line 806)
- * BFD_RELOC_ARM_THUMB_SHIFT: howto manager. (line 927)
- * BFD_RELOC_ARM_TLS_CALL: howto manager. (line 857)
- * BFD_RELOC_ARM_TLS_DESC: howto manager. (line 861)
- * BFD_RELOC_ARM_TLS_DESCSEQ: howto manager. (line 859)
- * BFD_RELOC_ARM_TLS_DTPMOD32: howto manager. (line 852)
- * BFD_RELOC_ARM_TLS_DTPOFF32: howto manager. (line 851)
- * BFD_RELOC_ARM_TLS_GD32: howto manager. (line 848)
- * BFD_RELOC_ARM_TLS_GD32_FDPIC: howto manager. (line 835)
- * BFD_RELOC_ARM_TLS_GOTDESC: howto manager. (line 856)
- * BFD_RELOC_ARM_TLS_IE32: howto manager. (line 854)
- * BFD_RELOC_ARM_TLS_IE32_FDPIC: howto manager. (line 837)
- * BFD_RELOC_ARM_TLS_LDM32: howto manager. (line 850)
- * BFD_RELOC_ARM_TLS_LDM32_FDPIC: howto manager. (line 836)
- * BFD_RELOC_ARM_TLS_LDO32: howto manager. (line 849)
- * BFD_RELOC_ARM_TLS_LE32: howto manager. (line 855)
- * BFD_RELOC_ARM_TLS_TPOFF32: howto manager. (line 853)
- * BFD_RELOC_ARM_V4BX: howto manager. (line 892)
- * BFD_RELOC_AVR_13_PCREL: howto manager. (line 1734)
- * BFD_RELOC_AVR_16_PM: howto manager. (line 1737)
- * BFD_RELOC_AVR_6: howto manager. (line 1805)
- * BFD_RELOC_AVR_6_ADIW: howto manager. (line 1808)
- * BFD_RELOC_AVR_7_PCREL: howto manager. (line 1731)
- * BFD_RELOC_AVR_8_HI: howto manager. (line 1814)
- * BFD_RELOC_AVR_8_HLO: howto manager. (line 1817)
- * BFD_RELOC_AVR_8_LO: howto manager. (line 1811)
- * BFD_RELOC_AVR_CALL: howto manager. (line 1799)
- * BFD_RELOC_AVR_DIFF16: howto manager. (line 1821)
- * BFD_RELOC_AVR_DIFF32: howto manager. (line 1822)
- * BFD_RELOC_AVR_DIFF8: howto manager. (line 1820)
- * BFD_RELOC_AVR_HH8_LDI: howto manager. (line 1746)
- * BFD_RELOC_AVR_HH8_LDI_NEG: howto manager. (line 1761)
- * BFD_RELOC_AVR_HH8_LDI_PM: howto manager. (line 1784)
- * BFD_RELOC_AVR_HH8_LDI_PM_NEG: howto manager. (line 1795)
- * BFD_RELOC_AVR_HI8_LDI: howto manager. (line 1743)
- * BFD_RELOC_AVR_HI8_LDI_GS: howto manager. (line 1779)
- * BFD_RELOC_AVR_HI8_LDI_NEG: howto manager. (line 1757)
- * BFD_RELOC_AVR_HI8_LDI_PM: howto manager. (line 1776)
- * BFD_RELOC_AVR_HI8_LDI_PM_NEG: howto manager. (line 1791)
- * BFD_RELOC_AVR_LDI: howto manager. (line 1802)
- * BFD_RELOC_AVR_LDS_STS_16: howto manager. (line 1829)
- * BFD_RELOC_AVR_LO8_LDI: howto manager. (line 1740)
- * BFD_RELOC_AVR_LO8_LDI_GS: howto manager. (line 1771)
- * BFD_RELOC_AVR_LO8_LDI_NEG: howto manager. (line 1753)
- * BFD_RELOC_AVR_LO8_LDI_PM: howto manager. (line 1768)
- * BFD_RELOC_AVR_LO8_LDI_PM_NEG: howto manager. (line 1788)
- * BFD_RELOC_AVR_MS8_LDI: howto manager. (line 1750)
- * BFD_RELOC_AVR_MS8_LDI_NEG: howto manager. (line 1765)
- * BFD_RELOC_AVR_PORT5: howto manager. (line 1835)
- * BFD_RELOC_AVR_PORT6: howto manager. (line 1832)
- * BFD_RELOC_BFIN_10_PCREL: howto manager. (line 1109)
- * BFD_RELOC_BFIN_11_PCREL: howto manager. (line 1111)
- * BFD_RELOC_BFIN_12_PCREL_JUMP: howto manager. (line 1113)
- * BFD_RELOC_BFIN_12_PCREL_JUMP_S: howto manager. (line 1115)
- * BFD_RELOC_BFIN_16_HIGH: howto manager. (line 1101)
- * BFD_RELOC_BFIN_16_IMM: howto manager. (line 1099)
- * BFD_RELOC_BFIN_16_LOW: howto manager. (line 1107)
- * BFD_RELOC_BFIN_24_PCREL_CALL_X: howto manager. (line 1117)
- * BFD_RELOC_BFIN_24_PCREL_JUMP_L: howto manager. (line 1119)
- * BFD_RELOC_BFIN_4_PCREL: howto manager. (line 1103)
- * BFD_RELOC_BFIN_5_PCREL: howto manager. (line 1105)
- * BFD_RELOC_BFIN_FUNCDESC: howto manager. (line 1124)
- * BFD_RELOC_BFIN_FUNCDESC_GOT17M4: howto manager. (line 1125)
- * BFD_RELOC_BFIN_FUNCDESC_GOTHI: howto manager. (line 1126)
- * BFD_RELOC_BFIN_FUNCDESC_GOTLO: howto manager. (line 1127)
- * BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4: howto manager. (line 1129)
- * BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI: howto manager. (line 1130)
- * BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO: howto manager. (line 1131)
- * BFD_RELOC_BFIN_FUNCDESC_VALUE: howto manager. (line 1128)
- * BFD_RELOC_BFIN_GOT: howto manager. (line 1136)
- * BFD_RELOC_BFIN_GOT17M4: howto manager. (line 1121)
- * BFD_RELOC_BFIN_GOTHI: howto manager. (line 1122)
- * BFD_RELOC_BFIN_GOTLO: howto manager. (line 1123)
- * BFD_RELOC_BFIN_GOTOFF17M4: howto manager. (line 1132)
- * BFD_RELOC_BFIN_GOTOFFHI: howto manager. (line 1133)
- * BFD_RELOC_BFIN_GOTOFFLO: howto manager. (line 1134)
- * BFD_RELOC_BFIN_PLTPC: howto manager. (line 1138)
- * BFD_RELOC_BPF_16: howto manager. (line 3299)
- * BFD_RELOC_BPF_32: howto manager. (line 3298)
- * BFD_RELOC_BPF_64: howto manager. (line 3297)
- * BFD_RELOC_BPF_DISP16: howto manager. (line 3300)
- * BFD_RELOC_BPF_DISP32: howto manager. (line 3301)
- * BFD_RELOC_C6000_ABS_H16: howto manager. (line 1576)
- * BFD_RELOC_C6000_ABS_L16: howto manager. (line 1575)
- * BFD_RELOC_C6000_ABS_S16: howto manager. (line 1574)
- * BFD_RELOC_C6000_ALIGN: howto manager. (line 1597)
- * BFD_RELOC_C6000_COPY: howto manager. (line 1592)
- * BFD_RELOC_C6000_DSBT_INDEX: howto manager. (line 1590)
- * BFD_RELOC_C6000_EHTYPE: howto manager. (line 1594)
- * BFD_RELOC_C6000_FPHEAD: howto manager. (line 1598)
- * BFD_RELOC_C6000_JUMP_SLOT: howto manager. (line 1593)
- * BFD_RELOC_C6000_NOCMP: howto manager. (line 1599)
- * BFD_RELOC_C6000_PCR_H16: howto manager. (line 1595)
- * BFD_RELOC_C6000_PCR_L16: howto manager. (line 1596)
- * BFD_RELOC_C6000_PCR_S10: howto manager. (line 1572)
- * BFD_RELOC_C6000_PCR_S12: howto manager. (line 1571)
- * BFD_RELOC_C6000_PCR_S21: howto manager. (line 1570)
- * BFD_RELOC_C6000_PCR_S7: howto manager. (line 1573)
- * BFD_RELOC_C6000_PREL31: howto manager. (line 1591)
- * BFD_RELOC_C6000_SBR_GOT_H16_W: howto manager. (line 1589)
- * BFD_RELOC_C6000_SBR_GOT_L16_W: howto manager. (line 1588)
- * BFD_RELOC_C6000_SBR_GOT_U15_W: howto manager. (line 1587)
- * BFD_RELOC_C6000_SBR_H16_B: howto manager. (line 1584)
- * BFD_RELOC_C6000_SBR_H16_H: howto manager. (line 1585)
- * BFD_RELOC_C6000_SBR_H16_W: howto manager. (line 1586)
- * BFD_RELOC_C6000_SBR_L16_B: howto manager. (line 1581)
- * BFD_RELOC_C6000_SBR_L16_H: howto manager. (line 1582)
- * BFD_RELOC_C6000_SBR_L16_W: howto manager. (line 1583)
- * BFD_RELOC_C6000_SBR_S16: howto manager. (line 1580)
- * BFD_RELOC_C6000_SBR_U15_B: howto manager. (line 1577)
- * BFD_RELOC_C6000_SBR_U15_H: howto manager. (line 1578)
- * BFD_RELOC_C6000_SBR_U15_W: howto manager. (line 1579)
- * BFD_RELOC_CKCORE_ADDR32: howto manager. (line 3338)
- * BFD_RELOC_CKCORE_ADDRGOT: howto manager. (line 3354)
- * BFD_RELOC_CKCORE_ADDRGOT_HI16: howto manager. (line 3373)
- * BFD_RELOC_CKCORE_ADDRGOT_LO16: howto manager. (line 3374)
- * BFD_RELOC_CKCORE_ADDRPLT: howto manager. (line 3355)
- * BFD_RELOC_CKCORE_ADDRPLT_HI16: howto manager. (line 3375)
- * BFD_RELOC_CKCORE_ADDRPLT_LO16: howto manager. (line 3376)
- * BFD_RELOC_CKCORE_ADDR_HI16: howto manager. (line 3361)
- * BFD_RELOC_CKCORE_ADDR_LO16: howto manager. (line 3362)
- * BFD_RELOC_CKCORE_CALLGRAPH: howto manager. (line 3398)
- * BFD_RELOC_CKCORE_COPY: howto manager. (line 3347)
- * BFD_RELOC_CKCORE_DOFFSET_IMM18: howto manager. (line 3381)
- * BFD_RELOC_CKCORE_DOFFSET_IMM18BY2: howto manager. (line 3382)
- * BFD_RELOC_CKCORE_DOFFSET_IMM18BY4: howto manager. (line 3383)
- * BFD_RELOC_CKCORE_DOFFSET_LO16: howto manager. (line 3379)
- * BFD_RELOC_CKCORE_GLOB_DAT: howto manager. (line 3348)
- * BFD_RELOC_CKCORE_GNU_VTENTRY: howto manager. (line 3345)
- * BFD_RELOC_CKCORE_GNU_VTINHERIT: howto manager. (line 3344)
- * BFD_RELOC_CKCORE_GOT12: howto manager. (line 3367)
- * BFD_RELOC_CKCORE_GOT32: howto manager. (line 3352)
- * BFD_RELOC_CKCORE_GOTOFF: howto manager. (line 3350)
- * BFD_RELOC_CKCORE_GOTOFF_HI16: howto manager. (line 3365)
- * BFD_RELOC_CKCORE_GOTOFF_IMM18: howto manager. (line 3384)
- * BFD_RELOC_CKCORE_GOTOFF_LO16: howto manager. (line 3366)
- * BFD_RELOC_CKCORE_GOTPC: howto manager. (line 3351)
- * BFD_RELOC_CKCORE_GOTPC_HI16: howto manager. (line 3363)
- * BFD_RELOC_CKCORE_GOTPC_LO16: howto manager. (line 3364)
- * BFD_RELOC_CKCORE_GOT_HI16: howto manager. (line 3368)
- * BFD_RELOC_CKCORE_GOT_IMM18BY4: howto manager. (line 3385)
- * BFD_RELOC_CKCORE_GOT_LO16: howto manager. (line 3369)
- * BFD_RELOC_CKCORE_IRELATIVE: howto manager. (line 3399)
- * BFD_RELOC_CKCORE_JUMP_SLOT: howto manager. (line 3349)
- * BFD_RELOC_CKCORE_NOJSRI: howto manager. (line 3397)
- * BFD_RELOC_CKCORE_NONE: howto manager. (line 3337)
- * BFD_RELOC_CKCORE_PCREL32: howto manager. (line 3342)
- * BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4: howto manager. (line 3401)
- * BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4: howto manager. (line 3400)
- * BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4: howto manager. (line 3396)
- * BFD_RELOC_CKCORE_PCREL_IMM10BY2: howto manager. (line 3359)
- * BFD_RELOC_CKCORE_PCREL_IMM10BY4: howto manager. (line 3360)
- * BFD_RELOC_CKCORE_PCREL_IMM11BY2: howto manager. (line 3340)
- * BFD_RELOC_CKCORE_PCREL_IMM16BY2: howto manager. (line 3357)
- * BFD_RELOC_CKCORE_PCREL_IMM16BY4: howto manager. (line 3358)
- * BFD_RELOC_CKCORE_PCREL_IMM18BY2: howto manager. (line 3380)
- * BFD_RELOC_CKCORE_PCREL_IMM26BY2: howto manager. (line 3356)
- * BFD_RELOC_CKCORE_PCREL_IMM4BY2: howto manager. (line 3341)
- * BFD_RELOC_CKCORE_PCREL_IMM7BY4: howto manager. (line 3387)
- * BFD_RELOC_CKCORE_PCREL_IMM8BY4: howto manager. (line 3339)
- * BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2: howto manager. (line 3343)
- * BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2: howto manager. (line 3377)
- * BFD_RELOC_CKCORE_PLT12: howto manager. (line 3370)
- * BFD_RELOC_CKCORE_PLT32: howto manager. (line 3353)
- * BFD_RELOC_CKCORE_PLT_HI16: howto manager. (line 3371)
- * BFD_RELOC_CKCORE_PLT_IMM18BY4: howto manager. (line 3386)
- * BFD_RELOC_CKCORE_PLT_LO16: howto manager. (line 3372)
- * BFD_RELOC_CKCORE_RELATIVE: howto manager. (line 3346)
- * BFD_RELOC_CKCORE_TLS_DTPMOD32: howto manager. (line 3393)
- * BFD_RELOC_CKCORE_TLS_DTPOFF32: howto manager. (line 3394)
- * BFD_RELOC_CKCORE_TLS_GD32: howto manager. (line 3390)
- * BFD_RELOC_CKCORE_TLS_IE32: howto manager. (line 3389)
- * BFD_RELOC_CKCORE_TLS_LDM32: howto manager. (line 3391)
- * BFD_RELOC_CKCORE_TLS_LDO32: howto manager. (line 3392)
- * BFD_RELOC_CKCORE_TLS_LE32: howto manager. (line 3388)
- * BFD_RELOC_CKCORE_TLS_TPOFF32: howto manager. (line 3395)
- * BFD_RELOC_CKCORE_TOFFSET_LO16: howto manager. (line 3378)
- * bfd_reloc_code_type: howto manager. (line 9)
- * BFD_RELOC_CR16_ABS20: howto manager. (line 2276)
- * BFD_RELOC_CR16_ABS24: howto manager. (line 2277)
- * BFD_RELOC_CR16_DISP16: howto manager. (line 2287)
- * BFD_RELOC_CR16_DISP20: howto manager. (line 2288)
- * BFD_RELOC_CR16_DISP24: howto manager. (line 2289)
- * BFD_RELOC_CR16_DISP24a: howto manager. (line 2290)
- * BFD_RELOC_CR16_DISP4: howto manager. (line 2285)
- * BFD_RELOC_CR16_DISP8: howto manager. (line 2286)
- * BFD_RELOC_CR16_GLOB_DAT: howto manager. (line 2296)
- * BFD_RELOC_CR16_GOTC_REGREL20: howto manager. (line 2295)
- * BFD_RELOC_CR16_GOT_REGREL20: howto manager. (line 2294)
- * BFD_RELOC_CR16_IMM16: howto manager. (line 2280)
- * BFD_RELOC_CR16_IMM20: howto manager. (line 2281)
- * BFD_RELOC_CR16_IMM24: howto manager. (line 2282)
- * BFD_RELOC_CR16_IMM32: howto manager. (line 2283)
- * BFD_RELOC_CR16_IMM32a: howto manager. (line 2284)
- * BFD_RELOC_CR16_IMM4: howto manager. (line 2278)
- * BFD_RELOC_CR16_IMM8: howto manager. (line 2279)
- * BFD_RELOC_CR16_NUM16: howto manager. (line 2265)
- * BFD_RELOC_CR16_NUM32: howto manager. (line 2266)
- * BFD_RELOC_CR16_NUM32a: howto manager. (line 2267)
- * BFD_RELOC_CR16_NUM8: howto manager. (line 2264)
- * BFD_RELOC_CR16_REGREL0: howto manager. (line 2268)
- * BFD_RELOC_CR16_REGREL14: howto manager. (line 2271)
- * BFD_RELOC_CR16_REGREL14a: howto manager. (line 2272)
- * BFD_RELOC_CR16_REGREL16: howto manager. (line 2273)
- * BFD_RELOC_CR16_REGREL20: howto manager. (line 2274)
- * BFD_RELOC_CR16_REGREL20a: howto manager. (line 2275)
- * BFD_RELOC_CR16_REGREL4: howto manager. (line 2269)
- * BFD_RELOC_CR16_REGREL4a: howto manager. (line 2270)
- * BFD_RELOC_CR16_SWITCH16: howto manager. (line 2292)
- * BFD_RELOC_CR16_SWITCH32: howto manager. (line 2293)
- * BFD_RELOC_CR16_SWITCH8: howto manager. (line 2291)
- * BFD_RELOC_CRIS_16_DTPREL: howto manager. (line 2356)
- * BFD_RELOC_CRIS_16_GOT: howto manager. (line 2338)
- * BFD_RELOC_CRIS_16_GOTPLT: howto manager. (line 2342)
- * BFD_RELOC_CRIS_16_GOT_GD: howto manager. (line 2352)
- * BFD_RELOC_CRIS_16_GOT_TPREL: howto manager. (line 2358)
- * BFD_RELOC_CRIS_16_TPREL: howto manager. (line 2360)
- * BFD_RELOC_CRIS_32_DTPREL: howto manager. (line 2355)
- * BFD_RELOC_CRIS_32_GD: howto manager. (line 2353)
- * BFD_RELOC_CRIS_32_GOT: howto manager. (line 2336)
- * BFD_RELOC_CRIS_32_GOTPLT: howto manager. (line 2340)
- * BFD_RELOC_CRIS_32_GOTREL: howto manager. (line 2344)
- * BFD_RELOC_CRIS_32_GOT_GD: howto manager. (line 2351)
- * BFD_RELOC_CRIS_32_GOT_TPREL: howto manager. (line 2357)
- * BFD_RELOC_CRIS_32_IE: howto manager. (line 2362)
- * BFD_RELOC_CRIS_32_PLT_GOTREL: howto manager. (line 2346)
- * BFD_RELOC_CRIS_32_PLT_PCREL: howto manager. (line 2348)
- * BFD_RELOC_CRIS_32_TPREL: howto manager. (line 2359)
- * BFD_RELOC_CRIS_BDISP8: howto manager. (line 2319)
- * BFD_RELOC_CRIS_COPY: howto manager. (line 2331)
- * BFD_RELOC_CRIS_DTP: howto manager. (line 2354)
- * BFD_RELOC_CRIS_DTPMOD: howto manager. (line 2361)
- * BFD_RELOC_CRIS_GLOB_DAT: howto manager. (line 2332)
- * BFD_RELOC_CRIS_JUMP_SLOT: howto manager. (line 2333)
- * BFD_RELOC_CRIS_LAPCQ_OFFSET: howto manager. (line 2327)
- * BFD_RELOC_CRIS_RELATIVE: howto manager. (line 2334)
- * BFD_RELOC_CRIS_SIGNED_16: howto manager. (line 2325)
- * BFD_RELOC_CRIS_SIGNED_6: howto manager. (line 2321)
- * BFD_RELOC_CRIS_SIGNED_8: howto manager. (line 2323)
- * BFD_RELOC_CRIS_UNSIGNED_16: howto manager. (line 2326)
- * BFD_RELOC_CRIS_UNSIGNED_4: howto manager. (line 2328)
- * BFD_RELOC_CRIS_UNSIGNED_5: howto manager. (line 2320)
- * BFD_RELOC_CRIS_UNSIGNED_6: howto manager. (line 2322)
- * BFD_RELOC_CRIS_UNSIGNED_8: howto manager. (line 2324)
- * BFD_RELOC_CRX_ABS16: howto manager. (line 2308)
- * BFD_RELOC_CRX_ABS32: howto manager. (line 2309)
- * BFD_RELOC_CRX_IMM16: howto manager. (line 2313)
- * BFD_RELOC_CRX_IMM32: howto manager. (line 2314)
- * BFD_RELOC_CRX_NUM16: howto manager. (line 2311)
- * BFD_RELOC_CRX_NUM32: howto manager. (line 2312)
- * BFD_RELOC_CRX_NUM8: howto manager. (line 2310)
- * BFD_RELOC_CRX_REGREL12: howto manager. (line 2304)
- * BFD_RELOC_CRX_REGREL22: howto manager. (line 2305)
- * BFD_RELOC_CRX_REGREL28: howto manager. (line 2306)
- * BFD_RELOC_CRX_REGREL32: howto manager. (line 2307)
- * BFD_RELOC_CRX_REL16: howto manager. (line 2301)
- * BFD_RELOC_CRX_REL24: howto manager. (line 2302)
- * BFD_RELOC_CRX_REL32: howto manager. (line 2303)
- * BFD_RELOC_CRX_REL4: howto manager. (line 2298)
- * BFD_RELOC_CRX_REL8: howto manager. (line 2299)
- * BFD_RELOC_CRX_REL8_CMP: howto manager. (line 2300)
- * BFD_RELOC_CRX_SWITCH16: howto manager. (line 2316)
- * BFD_RELOC_CRX_SWITCH32: howto manager. (line 2317)
- * BFD_RELOC_CRX_SWITCH8: howto manager. (line 2315)
- * BFD_RELOC_CTOR: howto manager. (line 759)
- * BFD_RELOC_D10V_10_PCREL_L: howto manager. (line 1183)
- * BFD_RELOC_D10V_10_PCREL_R: howto manager. (line 1180)
- * BFD_RELOC_D10V_18: howto manager. (line 1187)
- * BFD_RELOC_D10V_18_PCREL: howto manager. (line 1189)
- * BFD_RELOC_D30V_15: howto manager. (line 1200)
- * BFD_RELOC_D30V_15_PCREL: howto manager. (line 1203)
- * BFD_RELOC_D30V_15_PCREL_R: howto manager. (line 1206)
- * BFD_RELOC_D30V_21: howto manager. (line 1210)
- * BFD_RELOC_D30V_21_PCREL: howto manager. (line 1213)
- * BFD_RELOC_D30V_21_PCREL_R: howto manager. (line 1216)
- * BFD_RELOC_D30V_32: howto manager. (line 1220)
- * BFD_RELOC_D30V_32_PCREL: howto manager. (line 1222)
- * BFD_RELOC_D30V_6: howto manager. (line 1191)
- * BFD_RELOC_D30V_9_PCREL: howto manager. (line 1193)
- * BFD_RELOC_D30V_9_PCREL_R: howto manager. (line 1196)
- * BFD_RELOC_DLX_HI16_S: howto manager. (line 1224)
- * BFD_RELOC_DLX_JMP26: howto manager. (line 1228)
- * BFD_RELOC_DLX_LO16: howto manager. (line 1226)
- * BFD_RELOC_EPIPHANY_HIGH: howto manager. (line 3307)
- * BFD_RELOC_EPIPHANY_IMM11: howto manager. (line 3313)
- * BFD_RELOC_EPIPHANY_IMM8: howto manager. (line 3316)
- * BFD_RELOC_EPIPHANY_LOW: howto manager. (line 3309)
- * BFD_RELOC_EPIPHANY_SIMM11: howto manager. (line 3311)
- * BFD_RELOC_EPIPHANY_SIMM24: howto manager. (line 3305)
- * BFD_RELOC_EPIPHANY_SIMM8: howto manager. (line 3303)
- * BFD_RELOC_FR30_10_IN_8: howto manager. (line 1615)
- * BFD_RELOC_FR30_12_PCREL: howto manager. (line 1621)
- * BFD_RELOC_FR30_20: howto manager. (line 1603)
- * BFD_RELOC_FR30_48: howto manager. (line 1601)
- * BFD_RELOC_FR30_6_IN_4: howto manager. (line 1606)
- * BFD_RELOC_FR30_8_IN_8: howto manager. (line 1609)
- * BFD_RELOC_FR30_9_IN_8: howto manager. (line 1612)
- * BFD_RELOC_FR30_9_PCREL: howto manager. (line 1618)
- * BFD_RELOC_FRV_FUNCDESC: howto manager. (line 451)
- * BFD_RELOC_FRV_FUNCDESC_GOT12: howto manager. (line 452)
- * BFD_RELOC_FRV_FUNCDESC_GOTHI: howto manager. (line 453)
- * BFD_RELOC_FRV_FUNCDESC_GOTLO: howto manager. (line 454)
- * BFD_RELOC_FRV_FUNCDESC_GOTOFF12: howto manager. (line 456)
- * BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: howto manager. (line 457)
- * BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: howto manager. (line 458)
- * BFD_RELOC_FRV_FUNCDESC_VALUE: howto manager. (line 455)
- * BFD_RELOC_FRV_GETTLSOFF: howto manager. (line 462)
- * BFD_RELOC_FRV_GETTLSOFF_RELAX: howto manager. (line 475)
- * BFD_RELOC_FRV_GOT12: howto manager. (line 448)
- * BFD_RELOC_FRV_GOTHI: howto manager. (line 449)
- * BFD_RELOC_FRV_GOTLO: howto manager. (line 450)
- * BFD_RELOC_FRV_GOTOFF12: howto manager. (line 459)
- * BFD_RELOC_FRV_GOTOFFHI: howto manager. (line 460)
- * BFD_RELOC_FRV_GOTOFFLO: howto manager. (line 461)
- * BFD_RELOC_FRV_GOTTLSDESC12: howto manager. (line 464)
- * BFD_RELOC_FRV_GOTTLSDESCHI: howto manager. (line 465)
- * BFD_RELOC_FRV_GOTTLSDESCLO: howto manager. (line 466)
- * BFD_RELOC_FRV_GOTTLSOFF12: howto manager. (line 470)
- * BFD_RELOC_FRV_GOTTLSOFFHI: howto manager. (line 471)
- * BFD_RELOC_FRV_GOTTLSOFFLO: howto manager. (line 472)
- * BFD_RELOC_FRV_GPREL12: howto manager. (line 443)
- * BFD_RELOC_FRV_GPREL32: howto manager. (line 445)
- * BFD_RELOC_FRV_GPRELHI: howto manager. (line 446)
- * BFD_RELOC_FRV_GPRELLO: howto manager. (line 447)
- * BFD_RELOC_FRV_GPRELU12: howto manager. (line 444)
- * BFD_RELOC_FRV_HI16: howto manager. (line 442)
- * BFD_RELOC_FRV_LABEL16: howto manager. (line 439)
- * BFD_RELOC_FRV_LABEL24: howto manager. (line 440)
- * BFD_RELOC_FRV_LO16: howto manager. (line 441)
- * BFD_RELOC_FRV_TLSDESC_RELAX: howto manager. (line 474)
- * BFD_RELOC_FRV_TLSDESC_VALUE: howto manager. (line 463)
- * BFD_RELOC_FRV_TLSMOFF: howto manager. (line 477)
- * BFD_RELOC_FRV_TLSMOFF12: howto manager. (line 467)
- * BFD_RELOC_FRV_TLSMOFFHI: howto manager. (line 468)
- * BFD_RELOC_FRV_TLSMOFFLO: howto manager. (line 469)
- * BFD_RELOC_FRV_TLSOFF: howto manager. (line 473)
- * BFD_RELOC_FRV_TLSOFF_RELAX: howto manager. (line 476)
- * BFD_RELOC_FT32_10: howto manager. (line 429)
- * BFD_RELOC_FT32_15: howto manager. (line 436)
- * BFD_RELOC_FT32_17: howto manager. (line 431)
- * BFD_RELOC_FT32_18: howto manager. (line 432)
- * BFD_RELOC_FT32_20: howto manager. (line 430)
- * BFD_RELOC_FT32_DIFF32: howto manager. (line 437)
- * BFD_RELOC_FT32_RELAX: howto manager. (line 433)
- * BFD_RELOC_FT32_SC0: howto manager. (line 434)
- * BFD_RELOC_FT32_SC1: howto manager. (line 435)
- * BFD_RELOC_GPREL16: howto manager. (line 112)
- * BFD_RELOC_GPREL32: howto manager. (line 113)
- * BFD_RELOC_H8_DIR16A8: howto manager. (line 2404)
- * BFD_RELOC_H8_DIR16R8: howto manager. (line 2405)
- * BFD_RELOC_H8_DIR24A8: howto manager. (line 2406)
- * BFD_RELOC_H8_DIR24R8: howto manager. (line 2407)
- * BFD_RELOC_H8_DIR32A16: howto manager. (line 2408)
- * BFD_RELOC_H8_DISP32A16: howto manager. (line 2409)
- * BFD_RELOC_HI16: howto manager. (line 312)
- * BFD_RELOC_HI16_BASEREL: howto manager. (line 92)
- * BFD_RELOC_HI16_GOTOFF: howto manager. (line 51)
- * BFD_RELOC_HI16_PCREL: howto manager. (line 321)
- * BFD_RELOC_HI16_PLTOFF: howto manager. (line 63)
- * BFD_RELOC_HI16_S: howto manager. (line 314)
- * BFD_RELOC_HI16_S_BASEREL: howto manager. (line 93)
- * BFD_RELOC_HI16_S_GOTOFF: howto manager. (line 52)
- * BFD_RELOC_HI16_S_PCREL: howto manager. (line 323)
- * BFD_RELOC_HI16_S_PLTOFF: howto manager. (line 64)
- * BFD_RELOC_HI22: howto manager. (line 108)
- * BFD_RELOC_I370_D12: howto manager. (line 757)
- * BFD_RELOC_IA64_COPY: howto manager. (line 2162)
- * BFD_RELOC_IA64_DIR32LSB: howto manager. (line 2107)
- * BFD_RELOC_IA64_DIR32MSB: howto manager. (line 2106)
- * BFD_RELOC_IA64_DIR64LSB: howto manager. (line 2109)
- * BFD_RELOC_IA64_DIR64MSB: howto manager. (line 2108)
- * BFD_RELOC_IA64_DTPMOD64LSB: howto manager. (line 2172)
- * BFD_RELOC_IA64_DTPMOD64MSB: howto manager. (line 2171)
- * BFD_RELOC_IA64_DTPREL14: howto manager. (line 2174)
- * BFD_RELOC_IA64_DTPREL22: howto manager. (line 2175)
- * BFD_RELOC_IA64_DTPREL32LSB: howto manager. (line 2178)
- * BFD_RELOC_IA64_DTPREL32MSB: howto manager. (line 2177)
- * BFD_RELOC_IA64_DTPREL64I: howto manager. (line 2176)
- * BFD_RELOC_IA64_DTPREL64LSB: howto manager. (line 2180)
- * BFD_RELOC_IA64_DTPREL64MSB: howto manager. (line 2179)
- * BFD_RELOC_IA64_FPTR32LSB: howto manager. (line 2124)
- * BFD_RELOC_IA64_FPTR32MSB: howto manager. (line 2123)
- * BFD_RELOC_IA64_FPTR64I: howto manager. (line 2122)
- * BFD_RELOC_IA64_FPTR64LSB: howto manager. (line 2126)
- * BFD_RELOC_IA64_FPTR64MSB: howto manager. (line 2125)
- * BFD_RELOC_IA64_GPREL22: howto manager. (line 2110)
- * BFD_RELOC_IA64_GPREL32LSB: howto manager. (line 2113)
- * BFD_RELOC_IA64_GPREL32MSB: howto manager. (line 2112)
- * BFD_RELOC_IA64_GPREL64I: howto manager. (line 2111)
- * BFD_RELOC_IA64_GPREL64LSB: howto manager. (line 2115)
- * BFD_RELOC_IA64_GPREL64MSB: howto manager. (line 2114)
- * BFD_RELOC_IA64_IMM14: howto manager. (line 2103)
- * BFD_RELOC_IA64_IMM22: howto manager. (line 2104)
- * BFD_RELOC_IA64_IMM64: howto manager. (line 2105)
- * BFD_RELOC_IA64_IPLTLSB: howto manager. (line 2161)
- * BFD_RELOC_IA64_IPLTMSB: howto manager. (line 2160)
- * BFD_RELOC_IA64_LDXMOV: howto manager. (line 2164)
- * BFD_RELOC_IA64_LTOFF22: howto manager. (line 2116)
- * BFD_RELOC_IA64_LTOFF22X: howto manager. (line 2163)
- * BFD_RELOC_IA64_LTOFF64I: howto manager. (line 2117)
- * BFD_RELOC_IA64_LTOFF_DTPMOD22: howto manager. (line 2173)
- * BFD_RELOC_IA64_LTOFF_DTPREL22: howto manager. (line 2181)
- * BFD_RELOC_IA64_LTOFF_FPTR22: howto manager. (line 2138)
- * BFD_RELOC_IA64_LTOFF_FPTR32LSB: howto manager. (line 2141)
- * BFD_RELOC_IA64_LTOFF_FPTR32MSB: howto manager. (line 2140)
- * BFD_RELOC_IA64_LTOFF_FPTR64I: howto manager. (line 2139)
- * BFD_RELOC_IA64_LTOFF_FPTR64LSB: howto manager. (line 2143)
- * BFD_RELOC_IA64_LTOFF_FPTR64MSB: howto manager. (line 2142)
- * BFD_RELOC_IA64_LTOFF_TPREL22: howto manager. (line 2170)
- * BFD_RELOC_IA64_LTV32LSB: howto manager. (line 2157)
- * BFD_RELOC_IA64_LTV32MSB: howto manager. (line 2156)
- * BFD_RELOC_IA64_LTV64LSB: howto manager. (line 2159)
- * BFD_RELOC_IA64_LTV64MSB: howto manager. (line 2158)
- * BFD_RELOC_IA64_PCREL21B: howto manager. (line 2127)
- * BFD_RELOC_IA64_PCREL21BI: howto manager. (line 2128)
- * BFD_RELOC_IA64_PCREL21F: howto manager. (line 2130)
- * BFD_RELOC_IA64_PCREL21M: howto manager. (line 2129)
- * BFD_RELOC_IA64_PCREL22: howto manager. (line 2131)
- * BFD_RELOC_IA64_PCREL32LSB: howto manager. (line 2135)
- * BFD_RELOC_IA64_PCREL32MSB: howto manager. (line 2134)
- * BFD_RELOC_IA64_PCREL60B: howto manager. (line 2132)
- * BFD_RELOC_IA64_PCREL64I: howto manager. (line 2133)
- * BFD_RELOC_IA64_PCREL64LSB: howto manager. (line 2137)
- * BFD_RELOC_IA64_PCREL64MSB: howto manager. (line 2136)
- * BFD_RELOC_IA64_PLTOFF22: howto manager. (line 2118)
- * BFD_RELOC_IA64_PLTOFF64I: howto manager. (line 2119)
- * BFD_RELOC_IA64_PLTOFF64LSB: howto manager. (line 2121)
- * BFD_RELOC_IA64_PLTOFF64MSB: howto manager. (line 2120)
- * BFD_RELOC_IA64_REL32LSB: howto manager. (line 2153)
- * BFD_RELOC_IA64_REL32MSB: howto manager. (line 2152)
- * BFD_RELOC_IA64_REL64LSB: howto manager. (line 2155)
- * BFD_RELOC_IA64_REL64MSB: howto manager. (line 2154)
- * BFD_RELOC_IA64_SECREL32LSB: howto manager. (line 2149)
- * BFD_RELOC_IA64_SECREL32MSB: howto manager. (line 2148)
- * BFD_RELOC_IA64_SECREL64LSB: howto manager. (line 2151)
- * BFD_RELOC_IA64_SECREL64MSB: howto manager. (line 2150)
- * BFD_RELOC_IA64_SEGREL32LSB: howto manager. (line 2145)
- * BFD_RELOC_IA64_SEGREL32MSB: howto manager. (line 2144)
- * BFD_RELOC_IA64_SEGREL64LSB: howto manager. (line 2147)
- * BFD_RELOC_IA64_SEGREL64MSB: howto manager. (line 2146)
- * BFD_RELOC_IA64_TPREL14: howto manager. (line 2165)
- * BFD_RELOC_IA64_TPREL22: howto manager. (line 2166)
- * BFD_RELOC_IA64_TPREL64I: howto manager. (line 2167)
- * BFD_RELOC_IA64_TPREL64LSB: howto manager. (line 2169)
- * BFD_RELOC_IA64_TPREL64MSB: howto manager. (line 2168)
- * BFD_RELOC_IP2K_ADDR16CJP: howto manager. (line 2064)
- * BFD_RELOC_IP2K_BANK: howto manager. (line 2062)
- * BFD_RELOC_IP2K_EX8DATA: howto manager. (line 2070)
- * BFD_RELOC_IP2K_FR9: howto manager. (line 2060)
- * BFD_RELOC_IP2K_FR_OFFSET: howto manager. (line 2079)
- * BFD_RELOC_IP2K_HI8DATA: howto manager. (line 2069)
- * BFD_RELOC_IP2K_HI8INSN: howto manager. (line 2073)
- * BFD_RELOC_IP2K_LO8DATA: howto manager. (line 2068)
- * BFD_RELOC_IP2K_LO8INSN: howto manager. (line 2072)
- * BFD_RELOC_IP2K_PAGE3: howto manager. (line 2066)
- * BFD_RELOC_IP2K_PC_SKIP: howto manager. (line 2075)
- * BFD_RELOC_IP2K_TEXT: howto manager. (line 2077)
- * BFD_RELOC_IQ2000_OFFSET_16: howto manager. (line 2543)
- * BFD_RELOC_IQ2000_OFFSET_21: howto manager. (line 2544)
- * BFD_RELOC_IQ2000_UHI16: howto manager. (line 2545)
- * BFD_RELOC_LM32_16_GOT: howto manager. (line 2635)
- * BFD_RELOC_LM32_BRANCH: howto manager. (line 2634)
- * BFD_RELOC_LM32_CALL: howto manager. (line 2633)
- * BFD_RELOC_LM32_COPY: howto manager. (line 2638)
- * BFD_RELOC_LM32_GLOB_DAT: howto manager. (line 2639)
- * BFD_RELOC_LM32_GOTOFF_HI16: howto manager. (line 2636)
- * BFD_RELOC_LM32_GOTOFF_LO16: howto manager. (line 2637)
- * BFD_RELOC_LM32_JMP_SLOT: howto manager. (line 2640)
- * BFD_RELOC_LM32_RELATIVE: howto manager. (line 2641)
- * BFD_RELOC_LO10: howto manager. (line 109)
- * BFD_RELOC_LO16: howto manager. (line 319)
- * BFD_RELOC_LO16_BASEREL: howto manager. (line 91)
- * BFD_RELOC_LO16_GOTOFF: howto manager. (line 50)
- * BFD_RELOC_LO16_PCREL: howto manager. (line 325)
- * BFD_RELOC_LO16_PLTOFF: howto manager. (line 62)
- * BFD_RELOC_M32C_HI8: howto manager. (line 1230)
- * BFD_RELOC_M32C_RL_1ADDR: howto manager. (line 1232)
- * BFD_RELOC_M32C_RL_2ADDR: howto manager. (line 1233)
- * BFD_RELOC_M32C_RL_JUMP: howto manager. (line 1231)
- * BFD_RELOC_M32R_10_PCREL: howto manager. (line 1238)
- * BFD_RELOC_M32R_18_PCREL: howto manager. (line 1241)
- * BFD_RELOC_M32R_24: howto manager. (line 1235)
- * BFD_RELOC_M32R_26_PCREL: howto manager. (line 1243)
- * BFD_RELOC_M32R_26_PLTREL: howto manager. (line 1257)
- * BFD_RELOC_M32R_COPY: howto manager. (line 1258)
- * BFD_RELOC_M32R_GLOB_DAT: howto manager. (line 1259)
- * BFD_RELOC_M32R_GOT16_HI_SLO: howto manager. (line 1268)
- * BFD_RELOC_M32R_GOT16_HI_ULO: howto manager. (line 1267)
- * BFD_RELOC_M32R_GOT16_LO: howto manager. (line 1269)
- * BFD_RELOC_M32R_GOT24: howto manager. (line 1256)
- * BFD_RELOC_M32R_GOTOFF: howto manager. (line 1262)
- * BFD_RELOC_M32R_GOTOFF_HI_SLO: howto manager. (line 1264)
- * BFD_RELOC_M32R_GOTOFF_HI_ULO: howto manager. (line 1263)
- * BFD_RELOC_M32R_GOTOFF_LO: howto manager. (line 1265)
- * BFD_RELOC_M32R_GOTPC24: howto manager. (line 1266)
- * BFD_RELOC_M32R_GOTPC_HI_SLO: howto manager. (line 1271)
- * BFD_RELOC_M32R_GOTPC_HI_ULO: howto manager. (line 1270)
- * BFD_RELOC_M32R_GOTPC_LO: howto manager. (line 1272)
- * BFD_RELOC_M32R_HI16_SLO: howto manager. (line 1248)
- * BFD_RELOC_M32R_HI16_ULO: howto manager. (line 1245)
- * BFD_RELOC_M32R_JMP_SLOT: howto manager. (line 1260)
- * BFD_RELOC_M32R_LO16: howto manager. (line 1251)
- * BFD_RELOC_M32R_RELATIVE: howto manager. (line 1261)
- * BFD_RELOC_M32R_SDA16: howto manager. (line 1253)
- * BFD_RELOC_M68HC11_24: howto manager. (line 2209)
- * BFD_RELOC_M68HC11_3B: howto manager. (line 2189)
- * BFD_RELOC_M68HC11_HI8: howto manager. (line 2183)
- * BFD_RELOC_M68HC11_LO16: howto manager. (line 2200)
- * BFD_RELOC_M68HC11_LO8: howto manager. (line 2186)
- * BFD_RELOC_M68HC11_PAGE: howto manager. (line 2205)
- * BFD_RELOC_M68HC11_RL_GROUP: howto manager. (line 2196)
- * BFD_RELOC_M68HC11_RL_JUMP: howto manager. (line 2191)
- * BFD_RELOC_M68HC12_10_PCREL: howto manager. (line 2252)
- * BFD_RELOC_M68HC12_16B: howto manager. (line 2248)
- * BFD_RELOC_M68HC12_5B: howto manager. (line 2214)
- * BFD_RELOC_M68HC12_9B: howto manager. (line 2246)
- * BFD_RELOC_M68HC12_9_PCREL: howto manager. (line 2250)
- * BFD_RELOC_M68HC12_HI8XG: howto manager. (line 2257)
- * BFD_RELOC_M68HC12_LO8XG: howto manager. (line 2254)
- * BFD_RELOC_MACH_O_ARM64_ADDEND: howto manager. (line 2671)
- * BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21: howto manager. (line 2673)
- * BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12: howto manager. (line 2675)
- * BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT: howto manager. (line 2677)
- * BFD_RELOC_MACH_O_LOCAL_SECTDIFF: howto manager. (line 2646)
- * BFD_RELOC_MACH_O_PAIR: howto manager. (line 2648)
- * BFD_RELOC_MACH_O_SECTDIFF: howto manager. (line 2643)
- * BFD_RELOC_MACH_O_SUBTRACTOR32: howto manager. (line 2650)
- * BFD_RELOC_MACH_O_SUBTRACTOR64: howto manager. (line 2652)
- * BFD_RELOC_MACH_O_X86_64_BRANCH32: howto manager. (line 2654)
- * BFD_RELOC_MACH_O_X86_64_BRANCH8: howto manager. (line 2655)
- * BFD_RELOC_MACH_O_X86_64_GOT: howto manager. (line 2658)
- * BFD_RELOC_MACH_O_X86_64_GOT_LOAD: howto manager. (line 2660)
- * BFD_RELOC_MACH_O_X86_64_PCREL32_1: howto manager. (line 2663)
- * BFD_RELOC_MACH_O_X86_64_PCREL32_2: howto manager. (line 2665)
- * BFD_RELOC_MACH_O_X86_64_PCREL32_4: howto manager. (line 2667)
- * BFD_RELOC_MACH_O_X86_64_TLV: howto manager. (line 2669)
- * BFD_RELOC_MCORE_PCREL_32: howto manager. (line 1627)
- * BFD_RELOC_MCORE_PCREL_IMM11BY2: howto manager. (line 1625)
- * BFD_RELOC_MCORE_PCREL_IMM4BY2: howto manager. (line 1626)
- * BFD_RELOC_MCORE_PCREL_IMM8BY4: howto manager. (line 1624)
- * BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: howto manager. (line 1628)
- * BFD_RELOC_MCORE_RVA: howto manager. (line 1629)
- * BFD_RELOC_MEP_16: howto manager. (line 1632)
- * BFD_RELOC_MEP_32: howto manager. (line 1633)
- * BFD_RELOC_MEP_8: howto manager. (line 1631)
- * BFD_RELOC_MEP_ADDR24A4: howto manager. (line 1648)
- * BFD_RELOC_MEP_GNU_VTENTRY: howto manager. (line 1650)
- * BFD_RELOC_MEP_GNU_VTINHERIT: howto manager. (line 1649)
- * BFD_RELOC_MEP_GPREL: howto manager. (line 1642)
- * BFD_RELOC_MEP_HI16S: howto manager. (line 1641)
- * BFD_RELOC_MEP_HI16U: howto manager. (line 1640)
- * BFD_RELOC_MEP_LOW16: howto manager. (line 1639)
- * BFD_RELOC_MEP_PCABS24A2: howto manager. (line 1638)
- * BFD_RELOC_MEP_PCREL12A2: howto manager. (line 1635)
- * BFD_RELOC_MEP_PCREL17A2: howto manager. (line 1636)
- * BFD_RELOC_MEP_PCREL24A2: howto manager. (line 1637)
- * BFD_RELOC_MEP_PCREL8A2: howto manager. (line 1634)
- * BFD_RELOC_MEP_TPREL: howto manager. (line 1643)
- * BFD_RELOC_MEP_TPREL7: howto manager. (line 1644)
- * BFD_RELOC_MEP_TPREL7A2: howto manager. (line 1645)
- * BFD_RELOC_MEP_TPREL7A4: howto manager. (line 1646)
- * BFD_RELOC_MEP_UIMM24: howto manager. (line 1647)
- * BFD_RELOC_METAG_COPY: howto manager. (line 1671)
- * BFD_RELOC_METAG_GETSETOFF: howto manager. (line 1655)
- * BFD_RELOC_METAG_GETSET_GOT: howto manager. (line 1663)
- * BFD_RELOC_METAG_GETSET_GOTOFF: howto manager. (line 1662)
- * BFD_RELOC_METAG_GLOB_DAT: howto manager. (line 1674)
- * BFD_RELOC_METAG_GOTOFF: howto manager. (line 1669)
- * BFD_RELOC_METAG_HI16_GOTOFF: howto manager. (line 1660)
- * BFD_RELOC_METAG_HI16_GOTPC: howto manager. (line 1664)
- * BFD_RELOC_METAG_HI16_PLT: howto manager. (line 1666)
- * BFD_RELOC_METAG_HIADDR16: howto manager. (line 1652)
- * BFD_RELOC_METAG_HIOG: howto manager. (line 1656)
- * BFD_RELOC_METAG_JMP_SLOT: howto manager. (line 1672)
- * BFD_RELOC_METAG_LO16_GOTOFF: howto manager. (line 1661)
- * BFD_RELOC_METAG_LO16_GOTPC: howto manager. (line 1665)
- * BFD_RELOC_METAG_LO16_PLT: howto manager. (line 1667)
- * BFD_RELOC_METAG_LOADDR16: howto manager. (line 1653)
- * BFD_RELOC_METAG_LOOG: howto manager. (line 1657)
- * BFD_RELOC_METAG_PLT: howto manager. (line 1670)
- * BFD_RELOC_METAG_REL16: howto manager. (line 1659)
- * BFD_RELOC_METAG_REL8: howto manager. (line 1658)
- * BFD_RELOC_METAG_RELATIVE: howto manager. (line 1673)
- * BFD_RELOC_METAG_RELBRANCH: howto manager. (line 1654)
- * BFD_RELOC_METAG_RELBRANCH_PLT: howto manager. (line 1668)
- * BFD_RELOC_METAG_TLS_DTPMOD: howto manager. (line 1685)
- * BFD_RELOC_METAG_TLS_DTPOFF: howto manager. (line 1686)
- * BFD_RELOC_METAG_TLS_GD: howto manager. (line 1675)
- * BFD_RELOC_METAG_TLS_IE: howto manager. (line 1680)
- * BFD_RELOC_METAG_TLS_IENONPIC: howto manager. (line 1681)
- * BFD_RELOC_METAG_TLS_IENONPIC_HI16: howto manager. (line 1682)
- * BFD_RELOC_METAG_TLS_IENONPIC_LO16: howto manager. (line 1683)
- * BFD_RELOC_METAG_TLS_LDM: howto manager. (line 1676)
- * BFD_RELOC_METAG_TLS_LDO: howto manager. (line 1679)
- * BFD_RELOC_METAG_TLS_LDO_HI16: howto manager. (line 1677)
- * BFD_RELOC_METAG_TLS_LDO_LO16: howto manager. (line 1678)
- * BFD_RELOC_METAG_TLS_LE: howto manager. (line 1687)
- * BFD_RELOC_METAG_TLS_LE_HI16: howto manager. (line 1688)
- * BFD_RELOC_METAG_TLS_LE_LO16: howto manager. (line 1689)
- * BFD_RELOC_METAG_TLS_TPOFF: howto manager. (line 1684)
- * BFD_RELOC_MICROBLAZE_32_GOTOFF: howto manager. (line 2713)
- * BFD_RELOC_MICROBLAZE_32_LO: howto manager. (line 2679)
- * BFD_RELOC_MICROBLAZE_32_LO_PCREL: howto manager. (line 2682)
- * BFD_RELOC_MICROBLAZE_32_ROSDA: howto manager. (line 2685)
- * BFD_RELOC_MICROBLAZE_32_RWSDA: howto manager. (line 2688)
- * BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM: howto manager. (line 2691)
- * BFD_RELOC_MICROBLAZE_32_TLSDTPMOD: howto manager. (line 2729)
- * BFD_RELOC_MICROBLAZE_32_TLSDTPREL: howto manager. (line 2731)
- * BFD_RELOC_MICROBLAZE_64_GOT: howto manager. (line 2702)
- * BFD_RELOC_MICROBLAZE_64_GOTOFF: howto manager. (line 2709)
- * BFD_RELOC_MICROBLAZE_64_GOTPC: howto manager. (line 2698)
- * BFD_RELOC_MICROBLAZE_64_NONE: howto manager. (line 2694)
- * BFD_RELOC_MICROBLAZE_64_PLT: howto manager. (line 2705)
- * BFD_RELOC_MICROBLAZE_64_TEXTPCREL: howto manager. (line 2742)
- * BFD_RELOC_MICROBLAZE_64_TEXTREL: howto manager. (line 2746)
- * BFD_RELOC_MICROBLAZE_64_TLS: howto manager. (line 2719)
- * BFD_RELOC_MICROBLAZE_64_TLSDTPREL: howto manager. (line 2733)
- * BFD_RELOC_MICROBLAZE_64_TLSGD: howto manager. (line 2721)
- * BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL: howto manager. (line 2736)
- * BFD_RELOC_MICROBLAZE_64_TLSLD: howto manager. (line 2725)
- * BFD_RELOC_MICROBLAZE_64_TLSTPREL: howto manager. (line 2739)
- * BFD_RELOC_MICROBLAZE_COPY: howto manager. (line 2716)
- * BFD_RELOC_MICROMIPS_10_PCREL_S1: howto manager. (line 352)
- * BFD_RELOC_MICROMIPS_16_PCREL_S1: howto manager. (line 353)
- * BFD_RELOC_MICROMIPS_7_PCREL_S1: howto manager. (line 351)
- * BFD_RELOC_MICROMIPS_CALL16: howto manager. (line 370)
- * BFD_RELOC_MICROMIPS_CALL_HI16: howto manager. (line 376)
- * BFD_RELOC_MICROMIPS_CALL_LO16: howto manager. (line 378)
- * BFD_RELOC_MICROMIPS_GOT16: howto manager. (line 368)
- * BFD_RELOC_MICROMIPS_GOT_DISP: howto manager. (line 386)
- * BFD_RELOC_MICROMIPS_GOT_HI16: howto manager. (line 372)
- * BFD_RELOC_MICROMIPS_GOT_LO16: howto manager. (line 374)
- * BFD_RELOC_MICROMIPS_GOT_OFST: howto manager. (line 384)
- * BFD_RELOC_MICROMIPS_GOT_PAGE: howto manager. (line 382)
- * BFD_RELOC_MICROMIPS_GPREL16: howto manager. (line 362)
- * BFD_RELOC_MICROMIPS_HI16: howto manager. (line 363)
- * BFD_RELOC_MICROMIPS_HI16_S: howto manager. (line 364)
- * BFD_RELOC_MICROMIPS_HIGHER: howto manager. (line 395)
- * BFD_RELOC_MICROMIPS_HIGHEST: howto manager. (line 393)
- * BFD_RELOC_MICROMIPS_JALR: howto manager. (line 401)
- * BFD_RELOC_MICROMIPS_JMP: howto manager. (line 306)
- * BFD_RELOC_MICROMIPS_LITERAL: howto manager. (line 349)
- * BFD_RELOC_MICROMIPS_LO16: howto manager. (line 365)
- * BFD_RELOC_MICROMIPS_SCN_DISP: howto manager. (line 397)
- * BFD_RELOC_MICROMIPS_SUB: howto manager. (line 380)
- * BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16: howto manager. (line 411)
- * BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16: howto manager. (line 413)
- * BFD_RELOC_MICROMIPS_TLS_GD: howto manager. (line 407)
- * BFD_RELOC_MICROMIPS_TLS_GOTTPREL: howto manager. (line 415)
- * BFD_RELOC_MICROMIPS_TLS_LDM: howto manager. (line 409)
- * BFD_RELOC_MICROMIPS_TLS_TPREL_HI16: howto manager. (line 419)
- * BFD_RELOC_MICROMIPS_TLS_TPREL_LO16: howto manager. (line 421)
- * BFD_RELOC_MIPS16_16_PCREL_S1: howto manager. (line 355)
- * BFD_RELOC_MIPS16_CALL16: howto manager. (line 328)
- * BFD_RELOC_MIPS16_GOT16: howto manager. (line 327)
- * BFD_RELOC_MIPS16_GPREL: howto manager. (line 310)
- * BFD_RELOC_MIPS16_HI16: howto manager. (line 331)
- * BFD_RELOC_MIPS16_HI16_S: howto manager. (line 333)
- * BFD_RELOC_MIPS16_JMP: howto manager. (line 308)
- * BFD_RELOC_MIPS16_LO16: howto manager. (line 338)
- * BFD_RELOC_MIPS16_TLS_DTPREL_HI16: howto manager. (line 342)
- * BFD_RELOC_MIPS16_TLS_DTPREL_LO16: howto manager. (line 343)
- * BFD_RELOC_MIPS16_TLS_GD: howto manager. (line 340)
- * BFD_RELOC_MIPS16_TLS_GOTTPREL: howto manager. (line 344)
- * BFD_RELOC_MIPS16_TLS_LDM: howto manager. (line 341)
- * BFD_RELOC_MIPS16_TLS_TPREL_HI16: howto manager. (line 345)
- * BFD_RELOC_MIPS16_TLS_TPREL_LO16: howto manager. (line 346)
- * BFD_RELOC_MIPS_18_PCREL_S3: howto manager. (line 359)
- * BFD_RELOC_MIPS_19_PCREL_S2: howto manager. (line 360)
- * BFD_RELOC_MIPS_21_PCREL_S2: howto manager. (line 357)
- * BFD_RELOC_MIPS_26_PCREL_S2: howto manager. (line 358)
- * BFD_RELOC_MIPS_CALL16: howto manager. (line 369)
- * BFD_RELOC_MIPS_CALL_HI16: howto manager. (line 375)
- * BFD_RELOC_MIPS_CALL_LO16: howto manager. (line 377)
- * BFD_RELOC_MIPS_COPY: howto manager. (line 424)
- * BFD_RELOC_MIPS_DELETE: howto manager. (line 391)
- * BFD_RELOC_MIPS_EH: howto manager. (line 422)
- * BFD_RELOC_MIPS_GOT16: howto manager. (line 367)
- * BFD_RELOC_MIPS_GOT_DISP: howto manager. (line 385)
- * BFD_RELOC_MIPS_GOT_HI16: howto manager. (line 371)
- * BFD_RELOC_MIPS_GOT_LO16: howto manager. (line 373)
- * BFD_RELOC_MIPS_GOT_OFST: howto manager. (line 383)
- * BFD_RELOC_MIPS_GOT_PAGE: howto manager. (line 381)
- * BFD_RELOC_MIPS_HIGHER: howto manager. (line 394)
- * BFD_RELOC_MIPS_HIGHEST: howto manager. (line 392)
- * BFD_RELOC_MIPS_INSERT_A: howto manager. (line 389)
- * BFD_RELOC_MIPS_INSERT_B: howto manager. (line 390)
- * BFD_RELOC_MIPS_JALR: howto manager. (line 400)
- * BFD_RELOC_MIPS_JMP: howto manager. (line 305)
- * BFD_RELOC_MIPS_JUMP_SLOT: howto manager. (line 425)
- * BFD_RELOC_MIPS_LITERAL: howto manager. (line 348)
- * BFD_RELOC_MIPS_REL16: howto manager. (line 398)
- * BFD_RELOC_MIPS_RELGOT: howto manager. (line 399)
- * BFD_RELOC_MIPS_SCN_DISP: howto manager. (line 396)
- * BFD_RELOC_MIPS_SHIFT5: howto manager. (line 387)
- * BFD_RELOC_MIPS_SHIFT6: howto manager. (line 388)
- * BFD_RELOC_MIPS_SUB: howto manager. (line 379)
- * BFD_RELOC_MIPS_TLS_DTPMOD32: howto manager. (line 402)
- * BFD_RELOC_MIPS_TLS_DTPMOD64: howto manager. (line 404)
- * BFD_RELOC_MIPS_TLS_DTPREL32: howto manager. (line 403)
- * BFD_RELOC_MIPS_TLS_DTPREL64: howto manager. (line 405)
- * BFD_RELOC_MIPS_TLS_DTPREL_HI16: howto manager. (line 410)
- * BFD_RELOC_MIPS_TLS_DTPREL_LO16: howto manager. (line 412)
- * BFD_RELOC_MIPS_TLS_GD: howto manager. (line 406)
- * BFD_RELOC_MIPS_TLS_GOTTPREL: howto manager. (line 414)
- * BFD_RELOC_MIPS_TLS_LDM: howto manager. (line 408)
- * BFD_RELOC_MIPS_TLS_TPREL32: howto manager. (line 416)
- * BFD_RELOC_MIPS_TLS_TPREL64: howto manager. (line 417)
- * BFD_RELOC_MIPS_TLS_TPREL_HI16: howto manager. (line 418)
- * BFD_RELOC_MIPS_TLS_TPREL_LO16: howto manager. (line 420)
- * BFD_RELOC_MMIX_ADDR19: howto manager. (line 1713)
- * BFD_RELOC_MMIX_ADDR27: howto manager. (line 1716)
- * BFD_RELOC_MMIX_BASE_PLUS_OFFSET: howto manager. (line 1725)
- * BFD_RELOC_MMIX_CBRANCH: howto manager. (line 1696)
- * BFD_RELOC_MMIX_CBRANCH_1: howto manager. (line 1698)
- * BFD_RELOC_MMIX_CBRANCH_2: howto manager. (line 1699)
- * BFD_RELOC_MMIX_CBRANCH_3: howto manager. (line 1700)
- * BFD_RELOC_MMIX_CBRANCH_J: howto manager. (line 1697)
- * BFD_RELOC_MMIX_GETA: howto manager. (line 1691)
- * BFD_RELOC_MMIX_GETA_1: howto manager. (line 1692)
- * BFD_RELOC_MMIX_GETA_2: howto manager. (line 1693)
- * BFD_RELOC_MMIX_GETA_3: howto manager. (line 1694)
- * BFD_RELOC_MMIX_JMP: howto manager. (line 1708)
- * BFD_RELOC_MMIX_JMP_1: howto manager. (line 1709)
- * BFD_RELOC_MMIX_JMP_2: howto manager. (line 1710)
- * BFD_RELOC_MMIX_JMP_3: howto manager. (line 1711)
- * BFD_RELOC_MMIX_LOCAL: howto manager. (line 1728)
- * BFD_RELOC_MMIX_PUSHJ: howto manager. (line 1702)
- * BFD_RELOC_MMIX_PUSHJ_1: howto manager. (line 1703)
- * BFD_RELOC_MMIX_PUSHJ_2: howto manager. (line 1704)
- * BFD_RELOC_MMIX_PUSHJ_3: howto manager. (line 1705)
- * BFD_RELOC_MMIX_PUSHJ_STUBBABLE: howto manager. (line 1706)
- * BFD_RELOC_MMIX_REG: howto manager. (line 1722)
- * BFD_RELOC_MMIX_REG_OR_BYTE: howto manager. (line 1719)
- * BFD_RELOC_MN10300_16_PCREL: howto manager. (line 518)
- * BFD_RELOC_MN10300_32_PCREL: howto manager. (line 515)
- * BFD_RELOC_MN10300_ALIGN: howto manager. (line 502)
- * BFD_RELOC_MN10300_COPY: howto manager. (line 490)
- * BFD_RELOC_MN10300_GLOB_DAT: howto manager. (line 492)
- * BFD_RELOC_MN10300_GOT16: howto manager. (line 487)
- * BFD_RELOC_MN10300_GOT24: howto manager. (line 484)
- * BFD_RELOC_MN10300_GOT32: howto manager. (line 481)
- * BFD_RELOC_MN10300_GOTOFF24: howto manager. (line 479)
- * BFD_RELOC_MN10300_JMP_SLOT: howto manager. (line 494)
- * BFD_RELOC_MN10300_RELATIVE: howto manager. (line 496)
- * BFD_RELOC_MN10300_SYM_DIFF: howto manager. (line 498)
- * BFD_RELOC_MN10300_TLS_DTPMOD: howto manager. (line 511)
- * BFD_RELOC_MN10300_TLS_DTPOFF: howto manager. (line 512)
- * BFD_RELOC_MN10300_TLS_GD: howto manager. (line 505)
- * BFD_RELOC_MN10300_TLS_GOTIE: howto manager. (line 508)
- * BFD_RELOC_MN10300_TLS_IE: howto manager. (line 509)
- * BFD_RELOC_MN10300_TLS_LD: howto manager. (line 506)
- * BFD_RELOC_MN10300_TLS_LDO: howto manager. (line 507)
- * BFD_RELOC_MN10300_TLS_LE: howto manager. (line 510)
- * BFD_RELOC_MN10300_TLS_TPOFF: howto manager. (line 513)
- * BFD_RELOC_MOXIE_10_PCREL: howto manager. (line 427)
- * BFD_RELOC_MSP430X_ABS16: howto manager. (line 2457)
- * BFD_RELOC_MSP430X_ABS20_ADR_DST: howto manager. (line 2454)
- * BFD_RELOC_MSP430X_ABS20_ADR_SRC: howto manager. (line 2453)
- * BFD_RELOC_MSP430X_ABS20_EXT_DST: howto manager. (line 2451)
- * BFD_RELOC_MSP430X_ABS20_EXT_ODST: howto manager. (line 2452)
- * BFD_RELOC_MSP430X_ABS20_EXT_SRC: howto manager. (line 2450)
- * BFD_RELOC_MSP430X_PCR16: howto manager. (line 2455)
- * BFD_RELOC_MSP430X_PCR20_CALL: howto manager. (line 2456)
- * BFD_RELOC_MSP430X_PCR20_EXT_DST: howto manager. (line 2448)
- * BFD_RELOC_MSP430X_PCR20_EXT_ODST: howto manager. (line 2449)
- * BFD_RELOC_MSP430X_PCR20_EXT_SRC: howto manager. (line 2447)
- * BFD_RELOC_MSP430_10_PCREL: howto manager. (line 2439)
- * BFD_RELOC_MSP430_16: howto manager. (line 2441)
- * BFD_RELOC_MSP430_16_BYTE: howto manager. (line 2443)
- * BFD_RELOC_MSP430_16_PCREL: howto manager. (line 2440)
- * BFD_RELOC_MSP430_16_PCREL_BYTE: howto manager. (line 2442)
- * BFD_RELOC_MSP430_2X_PCREL: howto manager. (line 2444)
- * BFD_RELOC_MSP430_ABS8: howto manager. (line 2446)
- * BFD_RELOC_MSP430_ABS_HI16: howto manager. (line 2458)
- * BFD_RELOC_MSP430_PREL31: howto manager. (line 2459)
- * BFD_RELOC_MSP430_RL_PCREL: howto manager. (line 2445)
- * BFD_RELOC_MSP430_SYM_DIFF: howto manager. (line 2460)
- * BFD_RELOC_MT_GNU_VTENTRY: howto manager. (line 2435)
- * BFD_RELOC_MT_GNU_VTINHERIT: howto manager. (line 2433)
- * BFD_RELOC_MT_HI16: howto manager. (line 2429)
- * BFD_RELOC_MT_LO16: howto manager. (line 2431)
- * BFD_RELOC_MT_PC16: howto manager. (line 2427)
- * BFD_RELOC_MT_PCINSN8: howto manager. (line 2437)
- * BFD_RELOC_NDS32_10IFCU_PCREL: howto manager. (line 1424)
- * BFD_RELOC_NDS32_10_UPCREL: howto manager. (line 1395)
- * BFD_RELOC_NDS32_15_FIXED: howto manager. (line 1356)
- * BFD_RELOC_NDS32_15_PCREL: howto manager. (line 1282)
- * BFD_RELOC_NDS32_17IFC_PCREL: howto manager. (line 1423)
- * BFD_RELOC_NDS32_17_FIXED: howto manager. (line 1357)
- * BFD_RELOC_NDS32_17_PCREL: howto manager. (line 1284)
- * BFD_RELOC_NDS32_20: howto manager. (line 1274)
- * BFD_RELOC_NDS32_25_ABS: howto manager. (line 1419)
- * BFD_RELOC_NDS32_25_FIXED: howto manager. (line 1358)
- * BFD_RELOC_NDS32_25_PCREL: howto manager. (line 1286)
- * BFD_RELOC_NDS32_25_PLTREL: howto manager. (line 1332)
- * BFD_RELOC_NDS32_5: howto manager. (line 1393)
- * BFD_RELOC_NDS32_9_FIXED: howto manager. (line 1355)
- * BFD_RELOC_NDS32_9_PCREL: howto manager. (line 1276)
- * BFD_RELOC_NDS32_9_PLTREL: howto manager. (line 1331)
- * BFD_RELOC_NDS32_COPY: howto manager. (line 1333)
- * BFD_RELOC_NDS32_DATA: howto manager. (line 1421)
- * BFD_RELOC_NDS32_DIFF16: howto manager. (line 1414)
- * BFD_RELOC_NDS32_DIFF32: howto manager. (line 1415)
- * BFD_RELOC_NDS32_DIFF8: howto manager. (line 1413)
- * BFD_RELOC_NDS32_DIFF_ULEB128: howto manager. (line 1416)
- * BFD_RELOC_NDS32_DWARF2_LEB: howto manager. (line 1379)
- * BFD_RELOC_NDS32_DWARF2_OP1: howto manager. (line 1377)
- * BFD_RELOC_NDS32_DWARF2_OP2: howto manager. (line 1378)
- * BFD_RELOC_NDS32_EMPTY: howto manager. (line 1417)
- * BFD_RELOC_NDS32_GLOB_DAT: howto manager. (line 1334)
- * BFD_RELOC_NDS32_GOT15S2: howto manager. (line 1390)
- * BFD_RELOC_NDS32_GOT17S2: howto manager. (line 1391)
- * BFD_RELOC_NDS32_GOT20: howto manager. (line 1330)
- * BFD_RELOC_NDS32_GOTOFF: howto manager. (line 1337)
- * BFD_RELOC_NDS32_GOTOFF_HI20: howto manager. (line 1338)
- * BFD_RELOC_NDS32_GOTOFF_LO12: howto manager. (line 1339)
- * BFD_RELOC_NDS32_GOTOFF_LO15: howto manager. (line 1388)
- * BFD_RELOC_NDS32_GOTOFF_LO19: howto manager. (line 1389)
- * BFD_RELOC_NDS32_GOTOFF_SUFF: howto manager. (line 1402)
- * BFD_RELOC_NDS32_GOTPC20: howto manager. (line 1340)
- * BFD_RELOC_NDS32_GOTPC_HI20: howto manager. (line 1343)
- * BFD_RELOC_NDS32_GOTPC_LO12: howto manager. (line 1344)
- * BFD_RELOC_NDS32_GOTTPOFF: howto manager. (line 1427)
- * BFD_RELOC_NDS32_GOT_HI20: howto manager. (line 1341)
- * BFD_RELOC_NDS32_GOT_LO12: howto manager. (line 1342)
- * BFD_RELOC_NDS32_GOT_LO15: howto manager. (line 1386)
- * BFD_RELOC_NDS32_GOT_LO19: howto manager. (line 1387)
- * BFD_RELOC_NDS32_GOT_SUFF: howto manager. (line 1401)
- * BFD_RELOC_NDS32_GROUP: howto manager. (line 1453)
- * BFD_RELOC_NDS32_HI20: howto manager. (line 1288)
- * BFD_RELOC_NDS32_INSN16: howto manager. (line 1346)
- * BFD_RELOC_NDS32_JMP_SLOT: howto manager. (line 1335)
- * BFD_RELOC_NDS32_LABEL: howto manager. (line 1347)
- * BFD_RELOC_NDS32_LO12S0: howto manager. (line 1300)
- * BFD_RELOC_NDS32_LO12S0_ORI: howto manager. (line 1303)
- * BFD_RELOC_NDS32_LO12S1: howto manager. (line 1297)
- * BFD_RELOC_NDS32_LO12S2: howto manager. (line 1294)
- * BFD_RELOC_NDS32_LO12S2_DP: howto manager. (line 1374)
- * BFD_RELOC_NDS32_LO12S2_SP: howto manager. (line 1375)
- * BFD_RELOC_NDS32_LO12S3: howto manager. (line 1291)
- * BFD_RELOC_NDS32_LOADSTORE: howto manager. (line 1354)
- * BFD_RELOC_NDS32_LONGCALL1: howto manager. (line 1348)
- * BFD_RELOC_NDS32_LONGCALL2: howto manager. (line 1349)
- * BFD_RELOC_NDS32_LONGCALL3: howto manager. (line 1350)
- * BFD_RELOC_NDS32_LONGCALL4: howto manager. (line 1359)
- * BFD_RELOC_NDS32_LONGCALL5: howto manager. (line 1360)
- * BFD_RELOC_NDS32_LONGCALL6: howto manager. (line 1361)
- * BFD_RELOC_NDS32_LONGJUMP1: howto manager. (line 1351)
- * BFD_RELOC_NDS32_LONGJUMP2: howto manager. (line 1352)
- * BFD_RELOC_NDS32_LONGJUMP3: howto manager. (line 1353)
- * BFD_RELOC_NDS32_LONGJUMP4: howto manager. (line 1362)
- * BFD_RELOC_NDS32_LONGJUMP5: howto manager. (line 1363)
- * BFD_RELOC_NDS32_LONGJUMP6: howto manager. (line 1364)
- * BFD_RELOC_NDS32_LONGJUMP7: howto manager. (line 1365)
- * BFD_RELOC_NDS32_LSI: howto manager. (line 1455)
- * BFD_RELOC_NDS32_MINUEND: howto manager. (line 1411)
- * BFD_RELOC_NDS32_MULCALL_SUFF: howto manager. (line 1404)
- * BFD_RELOC_NDS32_PLTBLOCK: howto manager. (line 1408)
- * BFD_RELOC_NDS32_PLTREL_HI20: howto manager. (line 1367)
- * BFD_RELOC_NDS32_PLTREL_LO12: howto manager. (line 1368)
- * BFD_RELOC_NDS32_PLT_GOTREL_HI20: howto manager. (line 1369)
- * BFD_RELOC_NDS32_PLT_GOTREL_LO12: howto manager. (line 1370)
- * BFD_RELOC_NDS32_PLT_GOTREL_LO15: howto manager. (line 1384)
- * BFD_RELOC_NDS32_PLT_GOTREL_LO19: howto manager. (line 1385)
- * BFD_RELOC_NDS32_PLT_GOTREL_LO20: howto manager. (line 1383)
- * BFD_RELOC_NDS32_PLT_GOT_SUFF: howto manager. (line 1403)
- * BFD_RELOC_NDS32_PTR: howto manager. (line 1405)
- * BFD_RELOC_NDS32_PTR_COUNT: howto manager. (line 1406)
- * BFD_RELOC_NDS32_PTR_RESOLVED: howto manager. (line 1407)
- * BFD_RELOC_NDS32_RELATIVE: howto manager. (line 1336)
- * BFD_RELOC_NDS32_RELAX_ENTRY: howto manager. (line 1400)
- * BFD_RELOC_NDS32_RELAX_REGION_BEGIN: howto manager. (line 1409)
- * BFD_RELOC_NDS32_RELAX_REGION_END: howto manager. (line 1410)
- * BFD_RELOC_NDS32_REMOVE: howto manager. (line 1452)
- * BFD_RELOC_NDS32_SDA12S2_DP: howto manager. (line 1372)
- * BFD_RELOC_NDS32_SDA12S2_SP: howto manager. (line 1373)
- * BFD_RELOC_NDS32_SDA15S0: howto manager. (line 1315)
- * BFD_RELOC_NDS32_SDA15S1: howto manager. (line 1312)
- * BFD_RELOC_NDS32_SDA15S2: howto manager. (line 1309)
- * BFD_RELOC_NDS32_SDA15S3: howto manager. (line 1306)
- * BFD_RELOC_NDS32_SDA16S3: howto manager. (line 1318)
- * BFD_RELOC_NDS32_SDA17S2: howto manager. (line 1321)
- * BFD_RELOC_NDS32_SDA18S1: howto manager. (line 1324)
- * BFD_RELOC_NDS32_SDA19S0: howto manager. (line 1327)
- * BFD_RELOC_NDS32_SDA_FP7U2_RELA: howto manager. (line 1398)
- * BFD_RELOC_NDS32_SUBTRAHEND: howto manager. (line 1412)
- * BFD_RELOC_NDS32_TLS_DESC: howto manager. (line 1443)
- * BFD_RELOC_NDS32_TLS_DESC_20: howto manager. (line 1446)
- * BFD_RELOC_NDS32_TLS_DESC_ADD: howto manager. (line 1448)
- * BFD_RELOC_NDS32_TLS_DESC_CALL: howto manager. (line 1450)
- * BFD_RELOC_NDS32_TLS_DESC_FUNC: howto manager. (line 1449)
- * BFD_RELOC_NDS32_TLS_DESC_HI20: howto manager. (line 1444)
- * BFD_RELOC_NDS32_TLS_DESC_LO12: howto manager. (line 1445)
- * BFD_RELOC_NDS32_TLS_DESC_MEM: howto manager. (line 1451)
- * BFD_RELOC_NDS32_TLS_DESC_SDA17S2: howto manager. (line 1447)
- * BFD_RELOC_NDS32_TLS_IEGP_HI20: howto manager. (line 1439)
- * BFD_RELOC_NDS32_TLS_IEGP_LO12: howto manager. (line 1440)
- * BFD_RELOC_NDS32_TLS_IEGP_LO12S2: howto manager. (line 1441)
- * BFD_RELOC_NDS32_TLS_IEGP_LW: howto manager. (line 1442)
- * BFD_RELOC_NDS32_TLS_IE_HI20: howto manager. (line 1436)
- * BFD_RELOC_NDS32_TLS_IE_LO12: howto manager. (line 1437)
- * BFD_RELOC_NDS32_TLS_IE_LO12S2: howto manager. (line 1438)
- * BFD_RELOC_NDS32_TLS_LE_15S0: howto manager. (line 1431)
- * BFD_RELOC_NDS32_TLS_LE_15S1: howto manager. (line 1432)
- * BFD_RELOC_NDS32_TLS_LE_15S2: howto manager. (line 1433)
- * BFD_RELOC_NDS32_TLS_LE_20: howto manager. (line 1430)
- * BFD_RELOC_NDS32_TLS_LE_ADD: howto manager. (line 1434)
- * BFD_RELOC_NDS32_TLS_LE_HI20: howto manager. (line 1428)
- * BFD_RELOC_NDS32_TLS_LE_LO12: howto manager. (line 1429)
- * BFD_RELOC_NDS32_TLS_LE_LS: howto manager. (line 1435)
- * BFD_RELOC_NDS32_TPOFF: howto manager. (line 1426)
- * BFD_RELOC_NDS32_TRAN: howto manager. (line 1422)
- * BFD_RELOC_NDS32_UPDATE_TA: howto manager. (line 1381)
- * BFD_RELOC_NDS32_WORD_9_PCREL: howto manager. (line 1279)
- * BFD_RELOC_NIOS2_ALIGN: howto manager. (line 2476)
- * BFD_RELOC_NIOS2_CACHE_OPX: howto manager. (line 2466)
- * BFD_RELOC_NIOS2_CALL16: howto manager. (line 2478)
- * BFD_RELOC_NIOS2_CALL26: howto manager. (line 2464)
- * BFD_RELOC_NIOS2_CALL26_NOAT: howto manager. (line 2496)
- * BFD_RELOC_NIOS2_CALLR: howto manager. (line 2475)
- * BFD_RELOC_NIOS2_CALL_HA: howto manager. (line 2500)
- * BFD_RELOC_NIOS2_CALL_LO: howto manager. (line 2499)
- * BFD_RELOC_NIOS2_CJMP: howto manager. (line 2474)
- * BFD_RELOC_NIOS2_COPY: howto manager. (line 2491)
- * BFD_RELOC_NIOS2_GLOB_DAT: howto manager. (line 2492)
- * BFD_RELOC_NIOS2_GOT16: howto manager. (line 2477)
- * BFD_RELOC_NIOS2_GOTOFF: howto manager. (line 2495)
- * BFD_RELOC_NIOS2_GOTOFF_HA: howto manager. (line 2480)
- * BFD_RELOC_NIOS2_GOTOFF_LO: howto manager. (line 2479)
- * BFD_RELOC_NIOS2_GOT_HA: howto manager. (line 2498)
- * BFD_RELOC_NIOS2_GOT_LO: howto manager. (line 2497)
- * BFD_RELOC_NIOS2_GPREL: howto manager. (line 2472)
- * BFD_RELOC_NIOS2_HI16: howto manager. (line 2469)
- * BFD_RELOC_NIOS2_HIADJ16: howto manager. (line 2471)
- * BFD_RELOC_NIOS2_IMM5: howto manager. (line 2465)
- * BFD_RELOC_NIOS2_IMM6: howto manager. (line 2467)
- * BFD_RELOC_NIOS2_IMM8: howto manager. (line 2468)
- * BFD_RELOC_NIOS2_JUMP_SLOT: howto manager. (line 2493)
- * BFD_RELOC_NIOS2_LO16: howto manager. (line 2470)
- * BFD_RELOC_NIOS2_PCREL_HA: howto manager. (line 2482)
- * BFD_RELOC_NIOS2_PCREL_LO: howto manager. (line 2481)
- * BFD_RELOC_NIOS2_R2_F1I5_2: howto manager. (line 2510)
- * BFD_RELOC_NIOS2_R2_I10_1_PCREL: howto manager. (line 2502)
- * BFD_RELOC_NIOS2_R2_L5I4X1: howto manager. (line 2511)
- * BFD_RELOC_NIOS2_R2_S12: howto manager. (line 2501)
- * BFD_RELOC_NIOS2_R2_T1I7_1_PCREL: howto manager. (line 2503)
- * BFD_RELOC_NIOS2_R2_T1I7_2: howto manager. (line 2504)
- * BFD_RELOC_NIOS2_R2_T1X1I6: howto manager. (line 2512)
- * BFD_RELOC_NIOS2_R2_T1X1I6_2: howto manager. (line 2513)
- * BFD_RELOC_NIOS2_R2_T2I4: howto manager. (line 2505)
- * BFD_RELOC_NIOS2_R2_T2I4_1: howto manager. (line 2506)
- * BFD_RELOC_NIOS2_R2_T2I4_2: howto manager. (line 2507)
- * BFD_RELOC_NIOS2_R2_X1I7_2: howto manager. (line 2508)
- * BFD_RELOC_NIOS2_R2_X2L5: howto manager. (line 2509)
- * BFD_RELOC_NIOS2_RELATIVE: howto manager. (line 2494)
- * BFD_RELOC_NIOS2_S16: howto manager. (line 2462)
- * BFD_RELOC_NIOS2_TLS_DTPMOD: howto manager. (line 2488)
- * BFD_RELOC_NIOS2_TLS_DTPREL: howto manager. (line 2489)
- * BFD_RELOC_NIOS2_TLS_GD16: howto manager. (line 2483)
- * BFD_RELOC_NIOS2_TLS_IE16: howto manager. (line 2486)
- * BFD_RELOC_NIOS2_TLS_LDM16: howto manager. (line 2484)
- * BFD_RELOC_NIOS2_TLS_LDO16: howto manager. (line 2485)
- * BFD_RELOC_NIOS2_TLS_LE16: howto manager. (line 2487)
- * BFD_RELOC_NIOS2_TLS_TPREL: howto manager. (line 2490)
- * BFD_RELOC_NIOS2_U16: howto manager. (line 2463)
- * BFD_RELOC_NIOS2_UJMP: howto manager. (line 2473)
- * BFD_RELOC_NONE: howto manager. (line 118)
- * BFD_RELOC_NS32K_DISP_16: howto manager. (line 586)
- * BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. (line 589)
- * BFD_RELOC_NS32K_DISP_32: howto manager. (line 587)
- * BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. (line 590)
- * BFD_RELOC_NS32K_DISP_8: howto manager. (line 585)
- * BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. (line 588)
- * BFD_RELOC_NS32K_IMM_16: howto manager. (line 580)
- * BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. (line 583)
- * BFD_RELOC_NS32K_IMM_32: howto manager. (line 581)
- * BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. (line 584)
- * BFD_RELOC_NS32K_IMM_8: howto manager. (line 579)
- * BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. (line 582)
- * bfd_reloc_offset_in_range: typedef arelent. (line 344)
- * BFD_RELOC_OR1K_COPY: howto manager. (line 2377)
- * BFD_RELOC_OR1K_GLOB_DAT: howto manager. (line 2378)
- * BFD_RELOC_OR1K_GOT16: howto manager. (line 2371)
- * BFD_RELOC_OR1K_GOTOFF_SLO16: howto manager. (line 2376)
- * BFD_RELOC_OR1K_GOTPC_HI16: howto manager. (line 2369)
- * BFD_RELOC_OR1K_GOTPC_LO16: howto manager. (line 2370)
- * BFD_RELOC_OR1K_GOT_LO13: howto manager. (line 2373)
- * BFD_RELOC_OR1K_GOT_PG21: howto manager. (line 2372)
- * BFD_RELOC_OR1K_JMP_SLOT: howto manager. (line 2379)
- * BFD_RELOC_OR1K_LO13: howto manager. (line 2367)
- * BFD_RELOC_OR1K_PCREL_PG21: howto manager. (line 2366)
- * BFD_RELOC_OR1K_PLT26: howto manager. (line 2374)
- * BFD_RELOC_OR1K_PLTA26: howto manager. (line 2375)
- * BFD_RELOC_OR1K_RELATIVE: howto manager. (line 2380)
- * BFD_RELOC_OR1K_REL_26: howto manager. (line 2364)
- * BFD_RELOC_OR1K_SLO13: howto manager. (line 2368)
- * BFD_RELOC_OR1K_SLO16: howto manager. (line 2365)
- * BFD_RELOC_OR1K_TLS_DTPMOD: howto manager. (line 2402)
- * BFD_RELOC_OR1K_TLS_DTPOFF: howto manager. (line 2401)
- * BFD_RELOC_OR1K_TLS_GD_HI16: howto manager. (line 2381)
- * BFD_RELOC_OR1K_TLS_GD_LO13: howto manager. (line 2384)
- * BFD_RELOC_OR1K_TLS_GD_LO16: howto manager. (line 2382)
- * BFD_RELOC_OR1K_TLS_GD_PG21: howto manager. (line 2383)
- * BFD_RELOC_OR1K_TLS_IE_AHI16: howto manager. (line 2392)
- * BFD_RELOC_OR1K_TLS_IE_HI16: howto manager. (line 2391)
- * BFD_RELOC_OR1K_TLS_IE_LO13: howto manager. (line 2395)
- * BFD_RELOC_OR1K_TLS_IE_LO16: howto manager. (line 2393)
- * BFD_RELOC_OR1K_TLS_IE_PG21: howto manager. (line 2394)
- * BFD_RELOC_OR1K_TLS_LDM_HI16: howto manager. (line 2385)
- * BFD_RELOC_OR1K_TLS_LDM_LO13: howto manager. (line 2388)
- * BFD_RELOC_OR1K_TLS_LDM_LO16: howto manager. (line 2386)
- * BFD_RELOC_OR1K_TLS_LDM_PG21: howto manager. (line 2387)
- * BFD_RELOC_OR1K_TLS_LDO_HI16: howto manager. (line 2389)
- * BFD_RELOC_OR1K_TLS_LDO_LO16: howto manager. (line 2390)
- * BFD_RELOC_OR1K_TLS_LE_AHI16: howto manager. (line 2397)
- * BFD_RELOC_OR1K_TLS_LE_HI16: howto manager. (line 2396)
- * BFD_RELOC_OR1K_TLS_LE_LO16: howto manager. (line 2398)
- * BFD_RELOC_OR1K_TLS_LE_SLO16: howto manager. (line 2399)
- * BFD_RELOC_OR1K_TLS_TPOFF: howto manager. (line 2400)
- * BFD_RELOC_PDP11_DISP_6_PCREL: howto manager. (line 593)
- * BFD_RELOC_PDP11_DISP_8_PCREL: howto manager. (line 592)
- * BFD_RELOC_PJ_CODE_DIR16: howto manager. (line 597)
- * BFD_RELOC_PJ_CODE_DIR32: howto manager. (line 598)
- * BFD_RELOC_PJ_CODE_HI16: howto manager. (line 595)
- * BFD_RELOC_PJ_CODE_LO16: howto manager. (line 596)
- * BFD_RELOC_PJ_CODE_REL16: howto manager. (line 599)
- * BFD_RELOC_PJ_CODE_REL32: howto manager. (line 600)
- * BFD_RELOC_PPC64_ADDR16_DS: howto manager. (line 663)
- * BFD_RELOC_PPC64_ADDR16_HIGH: howto manager. (line 674)
- * BFD_RELOC_PPC64_ADDR16_HIGHA: howto manager. (line 675)
- * BFD_RELOC_PPC64_ADDR16_HIGHER34: howto manager. (line 692)
- * BFD_RELOC_PPC64_ADDR16_HIGHERA34: howto manager. (line 693)
- * BFD_RELOC_PPC64_ADDR16_HIGHEST34: howto manager. (line 694)
- * BFD_RELOC_PPC64_ADDR16_HIGHESTA34: howto manager. (line 695)
- * BFD_RELOC_PPC64_ADDR16_LO_DS: howto manager. (line 664)
- * BFD_RELOC_PPC64_ADDR64_LOCAL: howto manager. (line 682)
- * BFD_RELOC_PPC64_D28: howto manager. (line 700)
- * BFD_RELOC_PPC64_D34: howto manager. (line 685)
- * BFD_RELOC_PPC64_D34_HA30: howto manager. (line 688)
- * BFD_RELOC_PPC64_D34_HI30: howto manager. (line 687)
- * BFD_RELOC_PPC64_D34_LO: howto manager. (line 686)
- * BFD_RELOC_PPC64_DTPREL16_DS: howto manager. (line 741)
- * BFD_RELOC_PPC64_DTPREL16_HIGH: howto manager. (line 743)
- * BFD_RELOC_PPC64_DTPREL16_HIGHA: howto manager. (line 744)
- * BFD_RELOC_PPC64_DTPREL16_HIGHER: howto manager. (line 745)
- * BFD_RELOC_PPC64_DTPREL16_HIGHERA: howto manager. (line 746)
- * BFD_RELOC_PPC64_DTPREL16_HIGHEST: howto manager. (line 747)
- * BFD_RELOC_PPC64_DTPREL16_HIGHESTA: howto manager. (line 748)
- * BFD_RELOC_PPC64_DTPREL16_LO_DS: howto manager. (line 742)
- * BFD_RELOC_PPC64_DTPREL34: howto manager. (line 750)
- * BFD_RELOC_PPC64_ENTRY: howto manager. (line 683)
- * BFD_RELOC_PPC64_GOT16_DS: howto manager. (line 665)
- * BFD_RELOC_PPC64_GOT16_LO_DS: howto manager. (line 666)
- * BFD_RELOC_PPC64_GOT_DTPREL34: howto manager. (line 754)
- * BFD_RELOC_PPC64_GOT_PCREL34: howto manager. (line 690)
- * BFD_RELOC_PPC64_GOT_TLSGD34: howto manager. (line 751)
- * BFD_RELOC_PPC64_GOT_TLSLD34: howto manager. (line 752)
- * BFD_RELOC_PPC64_GOT_TPREL34: howto manager. (line 753)
- * BFD_RELOC_PPC64_HIGHER: howto manager. (line 651)
- * BFD_RELOC_PPC64_HIGHER_S: howto manager. (line 652)
- * BFD_RELOC_PPC64_HIGHEST: howto manager. (line 653)
- * BFD_RELOC_PPC64_HIGHEST_S: howto manager. (line 654)
- * BFD_RELOC_PPC64_PCREL28: howto manager. (line 701)
- * BFD_RELOC_PPC64_PCREL34: howto manager. (line 689)
- * BFD_RELOC_PPC64_PLT16_LO_DS: howto manager. (line 667)
- * BFD_RELOC_PPC64_PLTGOT16: howto manager. (line 659)
- * BFD_RELOC_PPC64_PLTGOT16_DS: howto manager. (line 672)
- * BFD_RELOC_PPC64_PLTGOT16_HA: howto manager. (line 662)
- * BFD_RELOC_PPC64_PLTGOT16_HI: howto manager. (line 661)
- * BFD_RELOC_PPC64_PLTGOT16_LO: howto manager. (line 660)
- * BFD_RELOC_PPC64_PLTGOT16_LO_DS: howto manager. (line 673)
- * BFD_RELOC_PPC64_PLT_PCREL34: howto manager. (line 691)
- * BFD_RELOC_PPC64_REL16_HIGH: howto manager. (line 676)
- * BFD_RELOC_PPC64_REL16_HIGHA: howto manager. (line 677)
- * BFD_RELOC_PPC64_REL16_HIGHER: howto manager. (line 678)
- * BFD_RELOC_PPC64_REL16_HIGHER34: howto manager. (line 696)
- * BFD_RELOC_PPC64_REL16_HIGHERA: howto manager. (line 679)
- * BFD_RELOC_PPC64_REL16_HIGHERA34: howto manager. (line 697)
- * BFD_RELOC_PPC64_REL16_HIGHEST: howto manager. (line 680)
- * BFD_RELOC_PPC64_REL16_HIGHEST34: howto manager. (line 698)
- * BFD_RELOC_PPC64_REL16_HIGHESTA: howto manager. (line 681)
- * BFD_RELOC_PPC64_REL16_HIGHESTA34: howto manager. (line 699)
- * BFD_RELOC_PPC64_REL24_NOTOC: howto manager. (line 684)
- * BFD_RELOC_PPC64_SECTOFF_DS: howto manager. (line 668)
- * BFD_RELOC_PPC64_SECTOFF_LO_DS: howto manager. (line 669)
- * BFD_RELOC_PPC64_TLS_PCREL: howto manager. (line 755)
- * BFD_RELOC_PPC64_TOC: howto manager. (line 658)
- * BFD_RELOC_PPC64_TOC16_DS: howto manager. (line 670)
- * BFD_RELOC_PPC64_TOC16_HA: howto manager. (line 657)
- * BFD_RELOC_PPC64_TOC16_HI: howto manager. (line 656)
- * BFD_RELOC_PPC64_TOC16_LO: howto manager. (line 655)
- * BFD_RELOC_PPC64_TOC16_LO_DS: howto manager. (line 671)
- * BFD_RELOC_PPC64_TPREL16_DS: howto manager. (line 733)
- * BFD_RELOC_PPC64_TPREL16_HIGH: howto manager. (line 735)
- * BFD_RELOC_PPC64_TPREL16_HIGHA: howto manager. (line 736)
- * BFD_RELOC_PPC64_TPREL16_HIGHER: howto manager. (line 737)
- * BFD_RELOC_PPC64_TPREL16_HIGHERA: howto manager. (line 738)
- * BFD_RELOC_PPC64_TPREL16_HIGHEST: howto manager. (line 739)
- * BFD_RELOC_PPC64_TPREL16_HIGHESTA: howto manager. (line 740)
- * BFD_RELOC_PPC64_TPREL16_LO_DS: howto manager. (line 734)
- * BFD_RELOC_PPC64_TPREL34: howto manager. (line 749)
- * BFD_RELOC_PPC_16DX_HA: howto manager. (line 649)
- * BFD_RELOC_PPC_B16: howto manager. (line 605)
- * BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. (line 607)
- * BFD_RELOC_PPC_B16_BRTAKEN: howto manager. (line 606)
- * BFD_RELOC_PPC_B26: howto manager. (line 602)
- * BFD_RELOC_PPC_BA16: howto manager. (line 608)
- * BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. (line 610)
- * BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. (line 609)
- * BFD_RELOC_PPC_BA26: howto manager. (line 603)
- * BFD_RELOC_PPC_COPY: howto manager. (line 611)
- * BFD_RELOC_PPC_DTPMOD: howto manager. (line 706)
- * BFD_RELOC_PPC_DTPREL: howto manager. (line 716)
- * BFD_RELOC_PPC_DTPREL16: howto manager. (line 712)
- * BFD_RELOC_PPC_DTPREL16_HA: howto manager. (line 715)
- * BFD_RELOC_PPC_DTPREL16_HI: howto manager. (line 714)
- * BFD_RELOC_PPC_DTPREL16_LO: howto manager. (line 713)
- * BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. (line 630)
- * BFD_RELOC_PPC_EMB_MRKREF: howto manager. (line 625)
- * BFD_RELOC_PPC_EMB_NADDR16: howto manager. (line 617)
- * BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. (line 620)
- * BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. (line 619)
- * BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. (line 618)
- * BFD_RELOC_PPC_EMB_NADDR32: howto manager. (line 616)
- * BFD_RELOC_PPC_EMB_RELSDA: howto manager. (line 631)
- * BFD_RELOC_PPC_EMB_RELSEC16: howto manager. (line 626)
- * BFD_RELOC_PPC_EMB_RELST_HA: howto manager. (line 629)
- * BFD_RELOC_PPC_EMB_RELST_HI: howto manager. (line 628)
- * BFD_RELOC_PPC_EMB_RELST_LO: howto manager. (line 627)
- * BFD_RELOC_PPC_EMB_SDA21: howto manager. (line 624)
- * BFD_RELOC_PPC_EMB_SDA2I16: howto manager. (line 622)
- * BFD_RELOC_PPC_EMB_SDA2REL: howto manager. (line 623)
- * BFD_RELOC_PPC_EMB_SDAI16: howto manager. (line 621)
- * BFD_RELOC_PPC_GLOB_DAT: howto manager. (line 612)
- * BFD_RELOC_PPC_GOT_DTPREL16: howto manager. (line 729)
- * BFD_RELOC_PPC_GOT_DTPREL16_HA: howto manager. (line 732)
- * BFD_RELOC_PPC_GOT_DTPREL16_HI: howto manager. (line 731)
- * BFD_RELOC_PPC_GOT_DTPREL16_LO: howto manager. (line 730)
- * BFD_RELOC_PPC_GOT_TLSGD16: howto manager. (line 717)
- * BFD_RELOC_PPC_GOT_TLSGD16_HA: howto manager. (line 720)
- * BFD_RELOC_PPC_GOT_TLSGD16_HI: howto manager. (line 719)
- * BFD_RELOC_PPC_GOT_TLSGD16_LO: howto manager. (line 718)
- * BFD_RELOC_PPC_GOT_TLSLD16: howto manager. (line 721)
- * BFD_RELOC_PPC_GOT_TLSLD16_HA: howto manager. (line 724)
- * BFD_RELOC_PPC_GOT_TLSLD16_HI: howto manager. (line 723)
- * BFD_RELOC_PPC_GOT_TLSLD16_LO: howto manager. (line 722)
- * BFD_RELOC_PPC_GOT_TPREL16: howto manager. (line 725)
- * BFD_RELOC_PPC_GOT_TPREL16_HA: howto manager. (line 728)
- * BFD_RELOC_PPC_GOT_TPREL16_HI: howto manager. (line 727)
- * BFD_RELOC_PPC_GOT_TPREL16_LO: howto manager. (line 726)
- * BFD_RELOC_PPC_JMP_SLOT: howto manager. (line 613)
- * BFD_RELOC_PPC_LOCAL24PC: howto manager. (line 615)
- * BFD_RELOC_PPC_REL16DX_HA: howto manager. (line 650)
- * BFD_RELOC_PPC_RELATIVE: howto manager. (line 614)
- * BFD_RELOC_PPC_TLS: howto manager. (line 703)
- * BFD_RELOC_PPC_TLSGD: howto manager. (line 704)
- * BFD_RELOC_PPC_TLSLD: howto manager. (line 705)
- * BFD_RELOC_PPC_TOC16: howto manager. (line 604)
- * BFD_RELOC_PPC_TPREL: howto manager. (line 711)
- * BFD_RELOC_PPC_TPREL16: howto manager. (line 707)
- * BFD_RELOC_PPC_TPREL16_HA: howto manager. (line 710)
- * BFD_RELOC_PPC_TPREL16_HI: howto manager. (line 709)
- * BFD_RELOC_PPC_TPREL16_LO: howto manager. (line 708)
- * BFD_RELOC_PPC_VLE_HA16A: howto manager. (line 639)
- * BFD_RELOC_PPC_VLE_HA16D: howto manager. (line 640)
- * BFD_RELOC_PPC_VLE_HI16A: howto manager. (line 637)
- * BFD_RELOC_PPC_VLE_HI16D: howto manager. (line 638)
- * BFD_RELOC_PPC_VLE_LO16A: howto manager. (line 635)
- * BFD_RELOC_PPC_VLE_LO16D: howto manager. (line 636)
- * BFD_RELOC_PPC_VLE_REL15: howto manager. (line 633)
- * BFD_RELOC_PPC_VLE_REL24: howto manager. (line 634)
- * BFD_RELOC_PPC_VLE_REL8: howto manager. (line 632)
- * BFD_RELOC_PPC_VLE_SDA21: howto manager. (line 641)
- * BFD_RELOC_PPC_VLE_SDA21_LO: howto manager. (line 642)
- * BFD_RELOC_PPC_VLE_SDAREL_HA16A: howto manager. (line 647)
- * BFD_RELOC_PPC_VLE_SDAREL_HA16D: howto manager. (line 648)
- * BFD_RELOC_PPC_VLE_SDAREL_HI16A: howto manager. (line 645)
- * BFD_RELOC_PPC_VLE_SDAREL_HI16D: howto manager. (line 646)
- * BFD_RELOC_PPC_VLE_SDAREL_LO16A: howto manager. (line 643)
- * BFD_RELOC_PPC_VLE_SDAREL_LO16D: howto manager. (line 644)
- * BFD_RELOC_PRU_16_PMEM: howto manager. (line 2528)
- * BFD_RELOC_PRU_32_PMEM: howto manager. (line 2527)
- * BFD_RELOC_PRU_GNU_DIFF16: howto manager. (line 2532)
- * BFD_RELOC_PRU_GNU_DIFF16_PMEM: howto manager. (line 2534)
- * BFD_RELOC_PRU_GNU_DIFF32: howto manager. (line 2533)
- * BFD_RELOC_PRU_GNU_DIFF32_PMEM: howto manager. (line 2535)
- * BFD_RELOC_PRU_GNU_DIFF8: howto manager. (line 2531)
- * BFD_RELOC_PRU_LDI32: howto manager. (line 2519)
- * BFD_RELOC_PRU_S10_PCREL: howto manager. (line 2523)
- * BFD_RELOC_PRU_U16: howto manager. (line 2515)
- * BFD_RELOC_PRU_U16_PMEMIMM: howto manager. (line 2517)
- * BFD_RELOC_PRU_U8_PCREL: howto manager. (line 2525)
- * BFD_RELOC_RELC: howto manager. (line 2416)
- * BFD_RELOC_RISCV_32_PCREL: howto manager. (line 1885)
- * BFD_RELOC_RISCV_ADD16: howto manager. (line 1853)
- * BFD_RELOC_RISCV_ADD32: howto manager. (line 1854)
- * BFD_RELOC_RISCV_ADD64: howto manager. (line 1855)
- * BFD_RELOC_RISCV_ADD8: howto manager. (line 1852)
- * BFD_RELOC_RISCV_ALIGN: howto manager. (line 1870)
- * BFD_RELOC_RISCV_CALL: howto manager. (line 1850)
- * BFD_RELOC_RISCV_CALL_PLT: howto manager. (line 1851)
- * BFD_RELOC_RISCV_CFA: howto manager. (line 1879)
- * BFD_RELOC_RISCV_GOT_HI20: howto manager. (line 1860)
- * BFD_RELOC_RISCV_GPREL12_I: howto manager. (line 1844)
- * BFD_RELOC_RISCV_GPREL12_S: howto manager. (line 1845)
- * BFD_RELOC_RISCV_GPREL_I: howto manager. (line 1874)
- * BFD_RELOC_RISCV_GPREL_S: howto manager. (line 1875)
- * BFD_RELOC_RISCV_HI20: howto manager. (line 1838)
- * BFD_RELOC_RISCV_JMP: howto manager. (line 1863)
- * BFD_RELOC_RISCV_LO12_I: howto manager. (line 1842)
- * BFD_RELOC_RISCV_LO12_S: howto manager. (line 1843)
- * BFD_RELOC_RISCV_PCREL_HI20: howto manager. (line 1839)
- * BFD_RELOC_RISCV_PCREL_LO12_I: howto manager. (line 1840)
- * BFD_RELOC_RISCV_PCREL_LO12_S: howto manager. (line 1841)
- * BFD_RELOC_RISCV_RELAX: howto manager. (line 1878)
- * BFD_RELOC_RISCV_RVC_BRANCH: howto manager. (line 1871)
- * BFD_RELOC_RISCV_RVC_JUMP: howto manager. (line 1872)
- * BFD_RELOC_RISCV_RVC_LUI: howto manager. (line 1873)
- * BFD_RELOC_RISCV_SET16: howto manager. (line 1883)
- * BFD_RELOC_RISCV_SET32: howto manager. (line 1884)
- * BFD_RELOC_RISCV_SET6: howto manager. (line 1881)
- * BFD_RELOC_RISCV_SET8: howto manager. (line 1882)
- * BFD_RELOC_RISCV_SUB16: howto manager. (line 1857)
- * BFD_RELOC_RISCV_SUB32: howto manager. (line 1858)
- * BFD_RELOC_RISCV_SUB6: howto manager. (line 1880)
- * BFD_RELOC_RISCV_SUB64: howto manager. (line 1859)
- * BFD_RELOC_RISCV_SUB8: howto manager. (line 1856)
- * BFD_RELOC_RISCV_TLS_DTPMOD32: howto manager. (line 1864)
- * BFD_RELOC_RISCV_TLS_DTPMOD64: howto manager. (line 1866)
- * BFD_RELOC_RISCV_TLS_DTPREL32: howto manager. (line 1865)
- * BFD_RELOC_RISCV_TLS_DTPREL64: howto manager. (line 1867)
- * BFD_RELOC_RISCV_TLS_GD_HI20: howto manager. (line 1862)
- * BFD_RELOC_RISCV_TLS_GOT_HI20: howto manager. (line 1861)
- * BFD_RELOC_RISCV_TLS_TPREL32: howto manager. (line 1868)
- * BFD_RELOC_RISCV_TLS_TPREL64: howto manager. (line 1869)
- * BFD_RELOC_RISCV_TPREL_ADD: howto manager. (line 1849)
- * BFD_RELOC_RISCV_TPREL_HI20: howto manager. (line 1846)
- * BFD_RELOC_RISCV_TPREL_I: howto manager. (line 1876)
- * BFD_RELOC_RISCV_TPREL_LO12_I: howto manager. (line 1847)
- * BFD_RELOC_RISCV_TPREL_LO12_S: howto manager. (line 1848)
- * BFD_RELOC_RISCV_TPREL_S: howto manager. (line 1877)
- * BFD_RELOC_RL78_16U: howto manager. (line 1895)
- * BFD_RELOC_RL78_16_OP: howto manager. (line 1891)
- * BFD_RELOC_RL78_24U: howto manager. (line 1896)
- * BFD_RELOC_RL78_24_OP: howto manager. (line 1892)
- * BFD_RELOC_RL78_32_OP: howto manager. (line 1893)
- * BFD_RELOC_RL78_8U: howto manager. (line 1894)
- * BFD_RELOC_RL78_ABS16: howto manager. (line 1908)
- * BFD_RELOC_RL78_ABS16U: howto manager. (line 1912)
- * BFD_RELOC_RL78_ABS16UL: howto manager. (line 1914)
- * BFD_RELOC_RL78_ABS16UW: howto manager. (line 1913)
- * BFD_RELOC_RL78_ABS16_REV: howto manager. (line 1909)
- * BFD_RELOC_RL78_ABS32: howto manager. (line 1910)
- * BFD_RELOC_RL78_ABS32_REV: howto manager. (line 1911)
- * BFD_RELOC_RL78_ABS8: howto manager. (line 1907)
- * BFD_RELOC_RL78_CODE: howto manager. (line 1919)
- * BFD_RELOC_RL78_DIFF: howto manager. (line 1898)
- * BFD_RELOC_RL78_DIR3U_PCREL: howto manager. (line 1897)
- * BFD_RELOC_RL78_GPRELB: howto manager. (line 1899)
- * BFD_RELOC_RL78_GPRELL: howto manager. (line 1901)
- * BFD_RELOC_RL78_GPRELW: howto manager. (line 1900)
- * BFD_RELOC_RL78_HI16: howto manager. (line 1916)
- * BFD_RELOC_RL78_HI8: howto manager. (line 1917)
- * BFD_RELOC_RL78_LO16: howto manager. (line 1918)
- * BFD_RELOC_RL78_NEG16: howto manager. (line 1888)
- * BFD_RELOC_RL78_NEG24: howto manager. (line 1889)
- * BFD_RELOC_RL78_NEG32: howto manager. (line 1890)
- * BFD_RELOC_RL78_NEG8: howto manager. (line 1887)
- * BFD_RELOC_RL78_OP_AND: howto manager. (line 1905)
- * BFD_RELOC_RL78_OP_NEG: howto manager. (line 1904)
- * BFD_RELOC_RL78_OP_SHRA: howto manager. (line 1906)
- * BFD_RELOC_RL78_OP_SUBTRACT: howto manager. (line 1903)
- * BFD_RELOC_RL78_RELAX: howto manager. (line 1915)
- * BFD_RELOC_RL78_SADDR: howto manager. (line 1920)
- * BFD_RELOC_RL78_SYM: howto manager. (line 1902)
- * BFD_RELOC_RVA: howto manager. (line 95)
- * BFD_RELOC_RX_16U: howto manager. (line 1930)
- * BFD_RELOC_RX_16_OP: howto manager. (line 1926)
- * BFD_RELOC_RX_24U: howto manager. (line 1931)
- * BFD_RELOC_RX_24_OP: howto manager. (line 1927)
- * BFD_RELOC_RX_32_OP: howto manager. (line 1928)
- * BFD_RELOC_RX_8U: howto manager. (line 1929)
- * BFD_RELOC_RX_ABS16: howto manager. (line 1941)
- * BFD_RELOC_RX_ABS16U: howto manager. (line 1945)
- * BFD_RELOC_RX_ABS16UL: howto manager. (line 1947)
- * BFD_RELOC_RX_ABS16UW: howto manager. (line 1946)
- * BFD_RELOC_RX_ABS16_REV: howto manager. (line 1942)
- * BFD_RELOC_RX_ABS32: howto manager. (line 1943)
- * BFD_RELOC_RX_ABS32_REV: howto manager. (line 1944)
- * BFD_RELOC_RX_ABS8: howto manager. (line 1940)
- * BFD_RELOC_RX_DIFF: howto manager. (line 1933)
- * BFD_RELOC_RX_DIR3U_PCREL: howto manager. (line 1932)
- * BFD_RELOC_RX_GPRELB: howto manager. (line 1934)
- * BFD_RELOC_RX_GPRELL: howto manager. (line 1936)
- * BFD_RELOC_RX_GPRELW: howto manager. (line 1935)
- * BFD_RELOC_RX_NEG16: howto manager. (line 1923)
- * BFD_RELOC_RX_NEG24: howto manager. (line 1924)
- * BFD_RELOC_RX_NEG32: howto manager. (line 1925)
- * BFD_RELOC_RX_NEG8: howto manager. (line 1922)
- * BFD_RELOC_RX_OP_NEG: howto manager. (line 1939)
- * BFD_RELOC_RX_OP_SUBTRACT: howto manager. (line 1938)
- * BFD_RELOC_RX_RELAX: howto manager. (line 1948)
- * BFD_RELOC_RX_SYM: howto manager. (line 1937)
- * BFD_RELOC_S12Z_15_PCREL: howto manager. (line 2260)
- * BFD_RELOC_S12Z_OPR: howto manager. (line 3403)
- * BFD_RELOC_SCORE16_BRANCH: howto manager. (line 2051)
- * BFD_RELOC_SCORE16_JMP: howto manager. (line 2049)
- * BFD_RELOC_SCORE_BCMP: howto manager. (line 2053)
- * BFD_RELOC_SCORE_BRANCH: howto manager. (line 2043)
- * BFD_RELOC_SCORE_CALL15: howto manager. (line 2057)
- * BFD_RELOC_SCORE_DUMMY2: howto manager. (line 2040)
- * BFD_RELOC_SCORE_DUMMY_HI16: howto manager. (line 2058)
- * BFD_RELOC_SCORE_GOT15: howto manager. (line 2055)
- * BFD_RELOC_SCORE_GOT_LO16: howto manager. (line 2056)
- * BFD_RELOC_SCORE_GPREL15: howto manager. (line 2038)
- * BFD_RELOC_SCORE_IMM30: howto manager. (line 2045)
- * BFD_RELOC_SCORE_IMM32: howto manager. (line 2047)
- * BFD_RELOC_SCORE_JMP: howto manager. (line 2041)
- * BFD_RELOC_SH_ALIGN: howto manager. (line 952)
- * BFD_RELOC_SH_CODE: howto manager. (line 953)
- * BFD_RELOC_SH_COPY: howto manager. (line 958)
- * BFD_RELOC_SH_COPY64: howto manager. (line 983)
- * BFD_RELOC_SH_COUNT: howto manager. (line 951)
- * BFD_RELOC_SH_DATA: howto manager. (line 954)
- * BFD_RELOC_SH_DISP12: howto manager. (line 934)
- * BFD_RELOC_SH_DISP12BY2: howto manager. (line 935)
- * BFD_RELOC_SH_DISP12BY4: howto manager. (line 936)
- * BFD_RELOC_SH_DISP12BY8: howto manager. (line 937)
- * BFD_RELOC_SH_DISP20: howto manager. (line 938)
- * BFD_RELOC_SH_DISP20BY8: howto manager. (line 939)
- * BFD_RELOC_SH_FUNCDESC: howto manager. (line 1026)
- * BFD_RELOC_SH_GLOB_DAT: howto manager. (line 959)
- * BFD_RELOC_SH_GLOB_DAT64: howto manager. (line 984)
- * BFD_RELOC_SH_GOT10BY4: howto manager. (line 987)
- * BFD_RELOC_SH_GOT10BY8: howto manager. (line 988)
- * BFD_RELOC_SH_GOT20: howto manager. (line 1020)
- * BFD_RELOC_SH_GOTFUNCDESC: howto manager. (line 1022)
- * BFD_RELOC_SH_GOTFUNCDESC20: howto manager. (line 1023)
- * BFD_RELOC_SH_GOTOFF20: howto manager. (line 1021)
- * BFD_RELOC_SH_GOTOFFFUNCDESC: howto manager. (line 1024)
- * BFD_RELOC_SH_GOTOFFFUNCDESC20: howto manager. (line 1025)
- * BFD_RELOC_SH_GOTOFF_HI16: howto manager. (line 978)
- * BFD_RELOC_SH_GOTOFF_LOW16: howto manager. (line 975)
- * BFD_RELOC_SH_GOTOFF_MEDHI16: howto manager. (line 977)
- * BFD_RELOC_SH_GOTOFF_MEDLOW16: howto manager. (line 976)
- * BFD_RELOC_SH_GOTPC: howto manager. (line 962)
- * BFD_RELOC_SH_GOTPC_HI16: howto manager. (line 982)
- * BFD_RELOC_SH_GOTPC_LOW16: howto manager. (line 979)
- * BFD_RELOC_SH_GOTPC_MEDHI16: howto manager. (line 981)
- * BFD_RELOC_SH_GOTPC_MEDLOW16: howto manager. (line 980)
- * BFD_RELOC_SH_GOTPLT10BY4: howto manager. (line 989)
- * BFD_RELOC_SH_GOTPLT10BY8: howto manager. (line 990)
- * BFD_RELOC_SH_GOTPLT32: howto manager. (line 991)
- * BFD_RELOC_SH_GOTPLT_HI16: howto manager. (line 970)
- * BFD_RELOC_SH_GOTPLT_LOW16: howto manager. (line 967)
- * BFD_RELOC_SH_GOTPLT_MEDHI16: howto manager. (line 969)
- * BFD_RELOC_SH_GOTPLT_MEDLOW16: howto manager. (line 968)
- * BFD_RELOC_SH_GOT_HI16: howto manager. (line 966)
- * BFD_RELOC_SH_GOT_LOW16: howto manager. (line 963)
- * BFD_RELOC_SH_GOT_MEDHI16: howto manager. (line 965)
- * BFD_RELOC_SH_GOT_MEDLOW16: howto manager. (line 964)
- * BFD_RELOC_SH_IMM3: howto manager. (line 932)
- * BFD_RELOC_SH_IMM3U: howto manager. (line 933)
- * BFD_RELOC_SH_IMM4: howto manager. (line 940)
- * BFD_RELOC_SH_IMM4BY2: howto manager. (line 941)
- * BFD_RELOC_SH_IMM4BY4: howto manager. (line 942)
- * BFD_RELOC_SH_IMM8: howto manager. (line 943)
- * BFD_RELOC_SH_IMM8BY2: howto manager. (line 944)
- * BFD_RELOC_SH_IMM8BY4: howto manager. (line 945)
- * BFD_RELOC_SH_IMMS10: howto manager. (line 997)
- * BFD_RELOC_SH_IMMS10BY2: howto manager. (line 998)
- * BFD_RELOC_SH_IMMS10BY4: howto manager. (line 999)
- * BFD_RELOC_SH_IMMS10BY8: howto manager. (line 1000)
- * BFD_RELOC_SH_IMMS16: howto manager. (line 1001)
- * BFD_RELOC_SH_IMMS6: howto manager. (line 994)
- * BFD_RELOC_SH_IMMS6BY32: howto manager. (line 995)
- * BFD_RELOC_SH_IMMU16: howto manager. (line 1002)
- * BFD_RELOC_SH_IMMU5: howto manager. (line 993)
- * BFD_RELOC_SH_IMMU6: howto manager. (line 996)
- * BFD_RELOC_SH_IMM_HI16: howto manager. (line 1009)
- * BFD_RELOC_SH_IMM_HI16_PCREL: howto manager. (line 1010)
- * BFD_RELOC_SH_IMM_LOW16: howto manager. (line 1003)
- * BFD_RELOC_SH_IMM_LOW16_PCREL: howto manager. (line 1004)
- * BFD_RELOC_SH_IMM_MEDHI16: howto manager. (line 1007)
- * BFD_RELOC_SH_IMM_MEDHI16_PCREL: howto manager. (line 1008)
- * BFD_RELOC_SH_IMM_MEDLOW16: howto manager. (line 1005)
- * BFD_RELOC_SH_IMM_MEDLOW16_PCREL: howto manager. (line 1006)
- * BFD_RELOC_SH_JMP_SLOT: howto manager. (line 960)
- * BFD_RELOC_SH_JMP_SLOT64: howto manager. (line 985)
- * BFD_RELOC_SH_LABEL: howto manager. (line 955)
- * BFD_RELOC_SH_LOOP_END: howto manager. (line 957)
- * BFD_RELOC_SH_LOOP_START: howto manager. (line 956)
- * BFD_RELOC_SH_PCDISP12BY2: howto manager. (line 931)
- * BFD_RELOC_SH_PCDISP8BY2: howto manager. (line 930)
- * BFD_RELOC_SH_PCRELIMM8BY2: howto manager. (line 946)
- * BFD_RELOC_SH_PCRELIMM8BY4: howto manager. (line 947)
- * BFD_RELOC_SH_PLT_HI16: howto manager. (line 974)
- * BFD_RELOC_SH_PLT_LOW16: howto manager. (line 971)
- * BFD_RELOC_SH_PLT_MEDHI16: howto manager. (line 973)
- * BFD_RELOC_SH_PLT_MEDLOW16: howto manager. (line 972)
- * BFD_RELOC_SH_PT_16: howto manager. (line 1011)
- * BFD_RELOC_SH_RELATIVE: howto manager. (line 961)
- * BFD_RELOC_SH_RELATIVE64: howto manager. (line 986)
- * BFD_RELOC_SH_SHMEDIA_CODE: howto manager. (line 992)
- * BFD_RELOC_SH_SWITCH16: howto manager. (line 948)
- * BFD_RELOC_SH_SWITCH32: howto manager. (line 949)
- * BFD_RELOC_SH_TLS_DTPMOD32: howto manager. (line 1017)
- * BFD_RELOC_SH_TLS_DTPOFF32: howto manager. (line 1018)
- * BFD_RELOC_SH_TLS_GD_32: howto manager. (line 1012)
- * BFD_RELOC_SH_TLS_IE_32: howto manager. (line 1015)
- * BFD_RELOC_SH_TLS_LDO_32: howto manager. (line 1014)
- * BFD_RELOC_SH_TLS_LD_32: howto manager. (line 1013)
- * BFD_RELOC_SH_TLS_LE_32: howto manager. (line 1016)
- * BFD_RELOC_SH_TLS_TPOFF32: howto manager. (line 1019)
- * BFD_RELOC_SH_USES: howto manager. (line 950)
- * BFD_RELOC_SIZE32: howto manager. (line 67)
- * BFD_RELOC_SIZE64: howto manager. (line 68)
- * BFD_RELOC_SPARC13: howto manager. (line 121)
- * BFD_RELOC_SPARC22: howto manager. (line 120)
- * BFD_RELOC_SPARC_10: howto manager. (line 148)
- * BFD_RELOC_SPARC_11: howto manager. (line 149)
- * BFD_RELOC_SPARC_5: howto manager. (line 161)
- * BFD_RELOC_SPARC_6: howto manager. (line 160)
- * BFD_RELOC_SPARC_64: howto manager. (line 147)
- * BFD_RELOC_SPARC_7: howto manager. (line 159)
- * BFD_RELOC_SPARC_BASE13: howto manager. (line 144)
- * BFD_RELOC_SPARC_BASE22: howto manager. (line 145)
- * BFD_RELOC_SPARC_COPY: howto manager. (line 128)
- * BFD_RELOC_SPARC_DISP64: howto manager. (line 162)
- * BFD_RELOC_SPARC_GLOB_DAT: howto manager. (line 129)
- * BFD_RELOC_SPARC_GOT10: howto manager. (line 122)
- * BFD_RELOC_SPARC_GOT13: howto manager. (line 123)
- * BFD_RELOC_SPARC_GOT22: howto manager. (line 124)
- * BFD_RELOC_SPARC_GOTDATA_HIX22: howto manager. (line 135)
- * BFD_RELOC_SPARC_GOTDATA_LOX10: howto manager. (line 136)
- * BFD_RELOC_SPARC_GOTDATA_OP: howto manager. (line 139)
- * BFD_RELOC_SPARC_GOTDATA_OP_HIX22: howto manager. (line 137)
- * BFD_RELOC_SPARC_GOTDATA_OP_LOX10: howto manager. (line 138)
- * BFD_RELOC_SPARC_H34: howto manager. (line 171)
- * BFD_RELOC_SPARC_H44: howto manager. (line 167)
- * BFD_RELOC_SPARC_HH22: howto manager. (line 151)
- * BFD_RELOC_SPARC_HIX22: howto manager. (line 165)
- * BFD_RELOC_SPARC_HM10: howto manager. (line 152)
- * BFD_RELOC_SPARC_IRELATIVE: howto manager. (line 141)
- * BFD_RELOC_SPARC_JMP_IREL: howto manager. (line 140)
- * BFD_RELOC_SPARC_JMP_SLOT: howto manager. (line 130)
- * BFD_RELOC_SPARC_L44: howto manager. (line 169)
- * BFD_RELOC_SPARC_LM22: howto manager. (line 153)
- * BFD_RELOC_SPARC_LOX10: howto manager. (line 166)
- * BFD_RELOC_SPARC_M44: howto manager. (line 168)
- * BFD_RELOC_SPARC_OLO10: howto manager. (line 150)
- * BFD_RELOC_SPARC_PC10: howto manager. (line 125)
- * BFD_RELOC_SPARC_PC22: howto manager. (line 126)
- * BFD_RELOC_SPARC_PC_HH22: howto manager. (line 154)
- * BFD_RELOC_SPARC_PC_HM10: howto manager. (line 155)
- * BFD_RELOC_SPARC_PC_LM22: howto manager. (line 156)
- * BFD_RELOC_SPARC_PLT32: howto manager. (line 163)
- * BFD_RELOC_SPARC_PLT64: howto manager. (line 164)
- * BFD_RELOC_SPARC_REGISTER: howto manager. (line 170)
- * BFD_RELOC_SPARC_RELATIVE: howto manager. (line 131)
- * BFD_RELOC_SPARC_REV32: howto manager. (line 176)
- * BFD_RELOC_SPARC_SIZE32: howto manager. (line 172)
- * BFD_RELOC_SPARC_SIZE64: howto manager. (line 173)
- * BFD_RELOC_SPARC_TLS_DTPMOD32: howto manager. (line 196)
- * BFD_RELOC_SPARC_TLS_DTPMOD64: howto manager. (line 197)
- * BFD_RELOC_SPARC_TLS_DTPOFF32: howto manager. (line 198)
- * BFD_RELOC_SPARC_TLS_DTPOFF64: howto manager. (line 199)
- * BFD_RELOC_SPARC_TLS_GD_ADD: howto manager. (line 180)
- * BFD_RELOC_SPARC_TLS_GD_CALL: howto manager. (line 181)
- * BFD_RELOC_SPARC_TLS_GD_HI22: howto manager. (line 178)
- * BFD_RELOC_SPARC_TLS_GD_LO10: howto manager. (line 179)
- * BFD_RELOC_SPARC_TLS_IE_ADD: howto manager. (line 193)
- * BFD_RELOC_SPARC_TLS_IE_HI22: howto manager. (line 189)
- * BFD_RELOC_SPARC_TLS_IE_LD: howto manager. (line 191)
- * BFD_RELOC_SPARC_TLS_IE_LDX: howto manager. (line 192)
- * BFD_RELOC_SPARC_TLS_IE_LO10: howto manager. (line 190)
- * BFD_RELOC_SPARC_TLS_LDM_ADD: howto manager. (line 184)
- * BFD_RELOC_SPARC_TLS_LDM_CALL: howto manager. (line 185)
- * BFD_RELOC_SPARC_TLS_LDM_HI22: howto manager. (line 182)
- * BFD_RELOC_SPARC_TLS_LDM_LO10: howto manager. (line 183)
- * BFD_RELOC_SPARC_TLS_LDO_ADD: howto manager. (line 188)
- * BFD_RELOC_SPARC_TLS_LDO_HIX22: howto manager. (line 186)
- * BFD_RELOC_SPARC_TLS_LDO_LOX10: howto manager. (line 187)
- * BFD_RELOC_SPARC_TLS_LE_HIX22: howto manager. (line 194)
- * BFD_RELOC_SPARC_TLS_LE_LOX10: howto manager. (line 195)
- * BFD_RELOC_SPARC_TLS_TPOFF32: howto manager. (line 200)
- * BFD_RELOC_SPARC_TLS_TPOFF64: howto manager. (line 201)
- * BFD_RELOC_SPARC_UA16: howto manager. (line 132)
- * BFD_RELOC_SPARC_UA32: howto manager. (line 133)
- * BFD_RELOC_SPARC_UA64: howto manager. (line 134)
- * BFD_RELOC_SPARC_WDISP10: howto manager. (line 174)
- * BFD_RELOC_SPARC_WDISP16: howto manager. (line 157)
- * BFD_RELOC_SPARC_WDISP19: howto manager. (line 158)
- * BFD_RELOC_SPARC_WDISP22: howto manager. (line 119)
- * BFD_RELOC_SPARC_WPLT30: howto manager. (line 127)
- * BFD_RELOC_SPU_ADD_PIC: howto manager. (line 217)
- * BFD_RELOC_SPU_HI16: howto manager. (line 214)
- * BFD_RELOC_SPU_IMM10: howto manager. (line 205)
- * BFD_RELOC_SPU_IMM10W: howto manager. (line 206)
- * BFD_RELOC_SPU_IMM16: howto manager. (line 207)
- * BFD_RELOC_SPU_IMM16W: howto manager. (line 208)
- * BFD_RELOC_SPU_IMM18: howto manager. (line 209)
- * BFD_RELOC_SPU_IMM7: howto manager. (line 203)
- * BFD_RELOC_SPU_IMM8: howto manager. (line 204)
- * BFD_RELOC_SPU_LO16: howto manager. (line 213)
- * BFD_RELOC_SPU_PCREL16: howto manager. (line 212)
- * BFD_RELOC_SPU_PCREL9a: howto manager. (line 210)
- * BFD_RELOC_SPU_PCREL9b: howto manager. (line 211)
- * BFD_RELOC_SPU_PPU32: howto manager. (line 215)
- * BFD_RELOC_SPU_PPU64: howto manager. (line 216)
- * BFD_RELOC_THUMB_PCREL_BFCSEL: howto manager. (line 782)
- * BFD_RELOC_THUMB_PCREL_BLX: howto manager. (line 771)
- * BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. (line 794)
- * BFD_RELOC_THUMB_PCREL_BRANCH20: howto manager. (line 795)
- * BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. (line 796)
- * BFD_RELOC_THUMB_PCREL_BRANCH25: howto manager. (line 797)
- * BFD_RELOC_THUMB_PCREL_BRANCH5: howto manager. (line 780)
- * BFD_RELOC_THUMB_PCREL_BRANCH7: howto manager. (line 792)
- * BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. (line 793)
- * BFD_RELOC_TIC30_LDP: howto manager. (line 1549)
- * BFD_RELOC_TIC54X_16_OF_23: howto manager. (line 1563)
- * BFD_RELOC_TIC54X_23: howto manager. (line 1561)
- * BFD_RELOC_TIC54X_MS7_OF_23: howto manager. (line 1567)
- * BFD_RELOC_TIC54X_PARTLS7: howto manager. (line 1553)
- * BFD_RELOC_TIC54X_PARTMS9: howto manager. (line 1557)
- * BFD_RELOC_TILEGX_BROFF_X1: howto manager. (line 3198)
- * BFD_RELOC_TILEGX_COPY: howto manager. (line 3194)
- * BFD_RELOC_TILEGX_DEST_IMM8_X1: howto manager. (line 3205)
- * BFD_RELOC_TILEGX_GLOB_DAT: howto manager. (line 3195)
- * BFD_RELOC_TILEGX_HW0: howto manager. (line 3187)
- * BFD_RELOC_TILEGX_HW0_LAST: howto manager. (line 3191)
- * BFD_RELOC_TILEGX_HW1: howto manager. (line 3188)
- * BFD_RELOC_TILEGX_HW1_LAST: howto manager. (line 3192)
- * BFD_RELOC_TILEGX_HW2: howto manager. (line 3189)
- * BFD_RELOC_TILEGX_HW2_LAST: howto manager. (line 3193)
- * BFD_RELOC_TILEGX_HW3: howto manager. (line 3190)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0: howto manager. (line 3214)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT: howto manager. (line 3242)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST: howto manager. (line 3222)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager. (line 3250)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager. (line 3236)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL: howto manager.
- (line 3270)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager. (line 3264)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager. (line 3276)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager. (line 3260)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL: howto manager. (line 3228)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager. (line 3244)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD: howto manager. (line 3256)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE: howto manager. (line 3268)
- * BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE: howto manager. (line 3258)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1: howto manager. (line 3216)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST: howto manager. (line 3224)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager. (line 3252)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager. (line 3238)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL: howto manager.
- (line 3272)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager. (line 3266)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager. (line 3278)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager. (line 3262)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL: howto manager. (line 3230)
- * BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager. (line 3246)
- * BFD_RELOC_TILEGX_IMM16_X0_HW2: howto manager. (line 3218)
- * BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST: howto manager. (line 3226)
- * BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager. (line 3240)
- * BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL: howto manager.
- (line 3274)
- * BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL: howto manager. (line 3232)
- * BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager. (line 3248)
- * BFD_RELOC_TILEGX_IMM16_X0_HW3: howto manager. (line 3220)
- * BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL: howto manager. (line 3234)
- * BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager. (line 3254)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0: howto manager. (line 3215)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT: howto manager. (line 3243)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST: howto manager. (line 3223)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager. (line 3251)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager. (line 3237)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL: howto manager.
- (line 3271)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager. (line 3265)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager. (line 3277)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager. (line 3261)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL: howto manager. (line 3229)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager. (line 3245)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD: howto manager. (line 3257)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE: howto manager. (line 3269)
- * BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE: howto manager. (line 3259)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1: howto manager. (line 3217)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST: howto manager. (line 3225)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager. (line 3253)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager. (line 3239)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL: howto manager.
- (line 3273)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager. (line 3267)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager. (line 3279)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager. (line 3263)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL: howto manager. (line 3231)
- * BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager. (line 3247)
- * BFD_RELOC_TILEGX_IMM16_X1_HW2: howto manager. (line 3219)
- * BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST: howto manager. (line 3227)
- * BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager. (line 3241)
- * BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL: howto manager.
- (line 3275)
- * BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL: howto manager. (line 3233)
- * BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager. (line 3249)
- * BFD_RELOC_TILEGX_IMM16_X1_HW3: howto manager. (line 3221)
- * BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL: howto manager. (line 3235)
- * BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager. (line 3255)
- * BFD_RELOC_TILEGX_IMM8_X0: howto manager. (line 3201)
- * BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD: howto manager. (line 3292)
- * BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD: howto manager. (line 3287)
- * BFD_RELOC_TILEGX_IMM8_X1: howto manager. (line 3203)
- * BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD: howto manager. (line 3293)
- * BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD: howto manager. (line 3288)
- * BFD_RELOC_TILEGX_IMM8_Y0: howto manager. (line 3202)
- * BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD: howto manager. (line 3294)
- * BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD: howto manager. (line 3289)
- * BFD_RELOC_TILEGX_IMM8_Y1: howto manager. (line 3204)
- * BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD: howto manager. (line 3295)
- * BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD: howto manager. (line 3290)
- * BFD_RELOC_TILEGX_JMP_SLOT: howto manager. (line 3196)
- * BFD_RELOC_TILEGX_JUMPOFF_X1: howto manager. (line 3199)
- * BFD_RELOC_TILEGX_JUMPOFF_X1_PLT: howto manager. (line 3200)
- * BFD_RELOC_TILEGX_MF_IMM14_X1: howto manager. (line 3207)
- * BFD_RELOC_TILEGX_MMEND_X0: howto manager. (line 3209)
- * BFD_RELOC_TILEGX_MMSTART_X0: howto manager. (line 3208)
- * BFD_RELOC_TILEGX_MT_IMM14_X1: howto manager. (line 3206)
- * BFD_RELOC_TILEGX_RELATIVE: howto manager. (line 3197)
- * BFD_RELOC_TILEGX_SHAMT_X0: howto manager. (line 3210)
- * BFD_RELOC_TILEGX_SHAMT_X1: howto manager. (line 3211)
- * BFD_RELOC_TILEGX_SHAMT_Y0: howto manager. (line 3212)
- * BFD_RELOC_TILEGX_SHAMT_Y1: howto manager. (line 3213)
- * BFD_RELOC_TILEGX_TLS_DTPMOD32: howto manager. (line 3283)
- * BFD_RELOC_TILEGX_TLS_DTPMOD64: howto manager. (line 3280)
- * BFD_RELOC_TILEGX_TLS_DTPOFF32: howto manager. (line 3284)
- * BFD_RELOC_TILEGX_TLS_DTPOFF64: howto manager. (line 3281)
- * BFD_RELOC_TILEGX_TLS_GD_CALL: howto manager. (line 3286)
- * BFD_RELOC_TILEGX_TLS_IE_LOAD: howto manager. (line 3291)
- * BFD_RELOC_TILEGX_TLS_TPOFF32: howto manager. (line 3285)
- * BFD_RELOC_TILEGX_TLS_TPOFF64: howto manager. (line 3282)
- * BFD_RELOC_TILEPRO_BROFF_X1: howto manager. (line 3111)
- * BFD_RELOC_TILEPRO_COPY: howto manager. (line 3107)
- * BFD_RELOC_TILEPRO_DEST_IMM8_X1: howto manager. (line 3118)
- * BFD_RELOC_TILEPRO_GLOB_DAT: howto manager. (line 3108)
- * BFD_RELOC_TILEPRO_IMM16_X0: howto manager. (line 3121)
- * BFD_RELOC_TILEPRO_IMM16_X0_GOT: howto manager. (line 3137)
- * BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA: howto manager. (line 3143)
- * BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI: howto manager. (line 3141)
- * BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO: howto manager. (line 3139)
- * BFD_RELOC_TILEPRO_IMM16_X0_HA: howto manager. (line 3127)
- * BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL: howto manager. (line 3135)
- * BFD_RELOC_TILEPRO_IMM16_X0_HI: howto manager. (line 3125)
- * BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL: howto manager. (line 3133)
- * BFD_RELOC_TILEPRO_IMM16_X0_LO: howto manager. (line 3123)
- * BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL: howto manager. (line 3131)
- * BFD_RELOC_TILEPRO_IMM16_X0_PCREL: howto manager. (line 3129)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD: howto manager. (line 3159)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA: howto manager. (line 3165)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI: howto manager. (line 3163)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO: howto manager. (line 3161)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE: howto manager. (line 3167)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA: howto manager. (line 3173)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI: howto manager. (line 3171)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO: howto manager. (line 3169)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE: howto manager. (line 3178)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA: howto manager. (line 3184)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI: howto manager. (line 3182)
- * BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO: howto manager. (line 3180)
- * BFD_RELOC_TILEPRO_IMM16_X1: howto manager. (line 3122)
- * BFD_RELOC_TILEPRO_IMM16_X1_GOT: howto manager. (line 3138)
- * BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA: howto manager. (line 3144)
- * BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI: howto manager. (line 3142)
- * BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO: howto manager. (line 3140)
- * BFD_RELOC_TILEPRO_IMM16_X1_HA: howto manager. (line 3128)
- * BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL: howto manager. (line 3136)
- * BFD_RELOC_TILEPRO_IMM16_X1_HI: howto manager. (line 3126)
- * BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL: howto manager. (line 3134)
- * BFD_RELOC_TILEPRO_IMM16_X1_LO: howto manager. (line 3124)
- * BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL: howto manager. (line 3132)
- * BFD_RELOC_TILEPRO_IMM16_X1_PCREL: howto manager. (line 3130)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD: howto manager. (line 3160)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA: howto manager. (line 3166)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI: howto manager. (line 3164)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO: howto manager. (line 3162)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE: howto manager. (line 3168)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA: howto manager. (line 3174)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI: howto manager. (line 3172)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO: howto manager. (line 3170)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE: howto manager. (line 3179)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA: howto manager. (line 3185)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI: howto manager. (line 3183)
- * BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO: howto manager. (line 3181)
- * BFD_RELOC_TILEPRO_IMM8_X0: howto manager. (line 3114)
- * BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD: howto manager. (line 3154)
- * BFD_RELOC_TILEPRO_IMM8_X1: howto manager. (line 3116)
- * BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD: howto manager. (line 3155)
- * BFD_RELOC_TILEPRO_IMM8_Y0: howto manager. (line 3115)
- * BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD: howto manager. (line 3156)
- * BFD_RELOC_TILEPRO_IMM8_Y1: howto manager. (line 3117)
- * BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD: howto manager. (line 3157)
- * BFD_RELOC_TILEPRO_JMP_SLOT: howto manager. (line 3109)
- * BFD_RELOC_TILEPRO_JOFFLONG_X1: howto manager. (line 3112)
- * BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT: howto manager. (line 3113)
- * BFD_RELOC_TILEPRO_MF_IMM15_X1: howto manager. (line 3120)
- * BFD_RELOC_TILEPRO_MMEND_X0: howto manager. (line 3146)
- * BFD_RELOC_TILEPRO_MMEND_X1: howto manager. (line 3148)
- * BFD_RELOC_TILEPRO_MMSTART_X0: howto manager. (line 3145)
- * BFD_RELOC_TILEPRO_MMSTART_X1: howto manager. (line 3147)
- * BFD_RELOC_TILEPRO_MT_IMM15_X1: howto manager. (line 3119)
- * BFD_RELOC_TILEPRO_RELATIVE: howto manager. (line 3110)
- * BFD_RELOC_TILEPRO_SHAMT_X0: howto manager. (line 3149)
- * BFD_RELOC_TILEPRO_SHAMT_X1: howto manager. (line 3150)
- * BFD_RELOC_TILEPRO_SHAMT_Y0: howto manager. (line 3151)
- * BFD_RELOC_TILEPRO_SHAMT_Y1: howto manager. (line 3152)
- * BFD_RELOC_TILEPRO_TLS_DTPMOD32: howto manager. (line 3175)
- * BFD_RELOC_TILEPRO_TLS_DTPOFF32: howto manager. (line 3176)
- * BFD_RELOC_TILEPRO_TLS_GD_CALL: howto manager. (line 3153)
- * BFD_RELOC_TILEPRO_TLS_IE_LOAD: howto manager. (line 3158)
- * BFD_RELOC_TILEPRO_TLS_TPOFF32: howto manager. (line 3177)
- * bfd_reloc_type_lookup: howto manager. (line 3407)
- * BFD_RELOC_V850_16_GOT: howto manager. (line 1525)
- * BFD_RELOC_V850_16_GOTOFF: howto manager. (line 1541)
- * BFD_RELOC_V850_16_PCREL: howto manager. (line 1505)
- * BFD_RELOC_V850_16_S1: howto manager. (line 1517)
- * BFD_RELOC_V850_16_SPLIT_OFFSET: howto manager. (line 1515)
- * BFD_RELOC_V850_17_PCREL: howto manager. (line 1507)
- * BFD_RELOC_V850_22_PCREL: howto manager. (line 1459)
- * BFD_RELOC_V850_22_PLT_PCREL: howto manager. (line 1529)
- * BFD_RELOC_V850_23: howto manager. (line 1509)
- * BFD_RELOC_V850_32_ABS: howto manager. (line 1513)
- * BFD_RELOC_V850_32_GOT: howto manager. (line 1527)
- * BFD_RELOC_V850_32_GOTOFF: howto manager. (line 1543)
- * BFD_RELOC_V850_32_GOTPCREL: howto manager. (line 1523)
- * BFD_RELOC_V850_32_PCREL: howto manager. (line 1511)
- * BFD_RELOC_V850_32_PLT_PCREL: howto manager. (line 1531)
- * BFD_RELOC_V850_9_PCREL: howto manager. (line 1457)
- * BFD_RELOC_V850_ALIGN: howto manager. (line 1500)
- * BFD_RELOC_V850_CALLT_15_16_OFFSET: howto manager. (line 1521)
- * BFD_RELOC_V850_CALLT_16_16_OFFSET: howto manager. (line 1494)
- * BFD_RELOC_V850_CALLT_6_7_OFFSET: howto manager. (line 1492)
- * BFD_RELOC_V850_CODE: howto manager. (line 1545)
- * BFD_RELOC_V850_COPY: howto manager. (line 1533)
- * BFD_RELOC_V850_DATA: howto manager. (line 1547)
- * BFD_RELOC_V850_GLOB_DAT: howto manager. (line 1535)
- * BFD_RELOC_V850_JMP_SLOT: howto manager. (line 1537)
- * BFD_RELOC_V850_LO16_S1: howto manager. (line 1519)
- * BFD_RELOC_V850_LO16_SPLIT_OFFSET: howto manager. (line 1502)
- * BFD_RELOC_V850_LONGCALL: howto manager. (line 1496)
- * BFD_RELOC_V850_LONGJUMP: howto manager. (line 1498)
- * BFD_RELOC_V850_RELATIVE: howto manager. (line 1539)
- * BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. (line 1463)
- * BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. (line 1461)
- * BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager. (line 1486)
- * BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. (line 1479)
- * BFD_RELOC_V850_TDA_4_4_OFFSET: howto manager. (line 1484)
- * BFD_RELOC_V850_TDA_4_5_OFFSET: howto manager. (line 1481)
- * BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. (line 1471)
- * BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. (line 1477)
- * BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. (line 1474)
- * BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. (line 1468)
- * BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. (line 1466)
- * BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager. (line 1489)
- * BFD_RELOC_VAX_GLOB_DAT: howto manager. (line 2423)
- * BFD_RELOC_VAX_JMP_SLOT: howto manager. (line 2424)
- * BFD_RELOC_VAX_RELATIVE: howto manager. (line 2425)
- * BFD_RELOC_VISIUM_HI16: howto manager. (line 3318)
- * BFD_RELOC_VISIUM_HI16_PCREL: howto manager. (line 3322)
- * BFD_RELOC_VISIUM_IM16: howto manager. (line 3320)
- * BFD_RELOC_VISIUM_IM16_PCREL: howto manager. (line 3324)
- * BFD_RELOC_VISIUM_LO16: howto manager. (line 3319)
- * BFD_RELOC_VISIUM_LO16_PCREL: howto manager. (line 3323)
- * BFD_RELOC_VISIUM_REL16: howto manager. (line 3321)
- * BFD_RELOC_VPE4KMATH_DATA: howto manager. (line 2081)
- * BFD_RELOC_VPE4KMATH_INSN: howto manager. (line 2082)
- * BFD_RELOC_VTABLE_ENTRY: howto manager. (line 2085)
- * BFD_RELOC_VTABLE_INHERIT: howto manager. (line 2084)
- * BFD_RELOC_WASM32_ABS32_CODE: howto manager. (line 3331)
- * BFD_RELOC_WASM32_CODE_POINTER: howto manager. (line 3333)
- * BFD_RELOC_WASM32_COPY: howto manager. (line 3332)
- * BFD_RELOC_WASM32_INDEX: howto manager. (line 3334)
- * BFD_RELOC_WASM32_LEB128: howto manager. (line 3326)
- * BFD_RELOC_WASM32_LEB128_GOT: howto manager. (line 3327)
- * BFD_RELOC_WASM32_LEB128_GOT_CODE: howto manager. (line 3328)
- * BFD_RELOC_WASM32_LEB128_PLT: howto manager. (line 3329)
- * BFD_RELOC_WASM32_PLT_INDEX: howto manager. (line 3330)
- * BFD_RELOC_WASM32_PLT_SIG: howto manager. (line 3335)
- * BFD_RELOC_X86_64_32S: howto manager. (line 554)
- * BFD_RELOC_X86_64_COPY: howto manager. (line 549)
- * BFD_RELOC_X86_64_DTPMOD64: howto manager. (line 555)
- * BFD_RELOC_X86_64_DTPOFF32: howto manager. (line 560)
- * BFD_RELOC_X86_64_DTPOFF64: howto manager. (line 556)
- * BFD_RELOC_X86_64_GLOB_DAT: howto manager. (line 550)
- * BFD_RELOC_X86_64_GOT32: howto manager. (line 547)
- * BFD_RELOC_X86_64_GOT64: howto manager. (line 565)
- * BFD_RELOC_X86_64_GOTOFF64: howto manager. (line 563)
- * BFD_RELOC_X86_64_GOTPC32: howto manager. (line 564)
- * BFD_RELOC_X86_64_GOTPC32_TLSDESC: howto manager. (line 570)
- * BFD_RELOC_X86_64_GOTPC64: howto manager. (line 567)
- * BFD_RELOC_X86_64_GOTPCREL: howto manager. (line 553)
- * BFD_RELOC_X86_64_GOTPCREL64: howto manager. (line 566)
- * BFD_RELOC_X86_64_GOTPCRELX: howto manager. (line 576)
- * BFD_RELOC_X86_64_GOTPLT64: howto manager. (line 568)
- * BFD_RELOC_X86_64_GOTTPOFF: howto manager. (line 561)
- * BFD_RELOC_X86_64_IRELATIVE: howto manager. (line 573)
- * BFD_RELOC_X86_64_JUMP_SLOT: howto manager. (line 551)
- * BFD_RELOC_X86_64_PC32_BND: howto manager. (line 574)
- * BFD_RELOC_X86_64_PLT32: howto manager. (line 548)
- * BFD_RELOC_X86_64_PLT32_BND: howto manager. (line 575)
- * BFD_RELOC_X86_64_PLTOFF64: howto manager. (line 569)
- * BFD_RELOC_X86_64_RELATIVE: howto manager. (line 552)
- * BFD_RELOC_X86_64_REX_GOTPCRELX: howto manager. (line 577)
- * BFD_RELOC_X86_64_TLSDESC: howto manager. (line 572)
- * BFD_RELOC_X86_64_TLSDESC_CALL: howto manager. (line 571)
- * BFD_RELOC_X86_64_TLSGD: howto manager. (line 558)
- * BFD_RELOC_X86_64_TLSLD: howto manager. (line 559)
- * BFD_RELOC_X86_64_TPOFF32: howto manager. (line 562)
- * BFD_RELOC_X86_64_TPOFF64: howto manager. (line 557)
- * BFD_RELOC_XC16X_PAG: howto manager. (line 2418)
- * BFD_RELOC_XC16X_POF: howto manager. (line 2419)
- * BFD_RELOC_XC16X_SEG: howto manager. (line 2420)
- * BFD_RELOC_XC16X_SOF: howto manager. (line 2421)
- * BFD_RELOC_XGATE_24: howto manager. (line 2228)
- * BFD_RELOC_XGATE_GPAGE: howto manager. (line 2226)
- * BFD_RELOC_XGATE_IMM3: howto manager. (line 2240)
- * BFD_RELOC_XGATE_IMM4: howto manager. (line 2242)
- * BFD_RELOC_XGATE_IMM5: howto manager. (line 2244)
- * BFD_RELOC_XGATE_IMM8_HI: howto manager. (line 2237)
- * BFD_RELOC_XGATE_IMM8_LO: howto manager. (line 2234)
- * BFD_RELOC_XGATE_LO16: howto manager. (line 2223)
- * BFD_RELOC_XGATE_PCREL_10: howto manager. (line 2232)
- * BFD_RELOC_XGATE_PCREL_9: howto manager. (line 2230)
- * BFD_RELOC_XGATE_RL_GROUP: howto manager. (line 2219)
- * BFD_RELOC_XGATE_RL_JUMP: howto manager. (line 2216)
- * BFD_RELOC_XSTORMY16_12: howto manager. (line 2412)
- * BFD_RELOC_XSTORMY16_24: howto manager. (line 2413)
- * BFD_RELOC_XSTORMY16_FPTR16: howto manager. (line 2414)
- * BFD_RELOC_XSTORMY16_REL_12: howto manager. (line 2411)
- * BFD_RELOC_XTENSA_ASM_EXPAND: howto manager. (line 2609)
- * BFD_RELOC_XTENSA_ASM_SIMPLIFY: howto manager. (line 2613)
- * BFD_RELOC_XTENSA_DIFF16: howto manager. (line 2560)
- * BFD_RELOC_XTENSA_DIFF32: howto manager. (line 2561)
- * BFD_RELOC_XTENSA_DIFF8: howto manager. (line 2559)
- * BFD_RELOC_XTENSA_GLOB_DAT: howto manager. (line 2551)
- * BFD_RELOC_XTENSA_JMP_SLOT: howto manager. (line 2552)
- * BFD_RELOC_XTENSA_OP0: howto manager. (line 2604)
- * BFD_RELOC_XTENSA_OP1: howto manager. (line 2605)
- * BFD_RELOC_XTENSA_OP2: howto manager. (line 2606)
- * BFD_RELOC_XTENSA_PLT: howto manager. (line 2555)
- * BFD_RELOC_XTENSA_RELATIVE: howto manager. (line 2553)
- * BFD_RELOC_XTENSA_RTLD: howto manager. (line 2547)
- * BFD_RELOC_XTENSA_SLOT0_ALT: howto manager. (line 2587)
- * BFD_RELOC_XTENSA_SLOT0_OP: howto manager. (line 2568)
- * BFD_RELOC_XTENSA_SLOT10_ALT: howto manager. (line 2597)
- * BFD_RELOC_XTENSA_SLOT10_OP: howto manager. (line 2578)
- * BFD_RELOC_XTENSA_SLOT11_ALT: howto manager. (line 2598)
- * BFD_RELOC_XTENSA_SLOT11_OP: howto manager. (line 2579)
- * BFD_RELOC_XTENSA_SLOT12_ALT: howto manager. (line 2599)
- * BFD_RELOC_XTENSA_SLOT12_OP: howto manager. (line 2580)
- * BFD_RELOC_XTENSA_SLOT13_ALT: howto manager. (line 2600)
- * BFD_RELOC_XTENSA_SLOT13_OP: howto manager. (line 2581)
- * BFD_RELOC_XTENSA_SLOT14_ALT: howto manager. (line 2601)
- * BFD_RELOC_XTENSA_SLOT14_OP: howto manager. (line 2582)
- * BFD_RELOC_XTENSA_SLOT1_ALT: howto manager. (line 2588)
- * BFD_RELOC_XTENSA_SLOT1_OP: howto manager. (line 2569)
- * BFD_RELOC_XTENSA_SLOT2_ALT: howto manager. (line 2589)
- * BFD_RELOC_XTENSA_SLOT2_OP: howto manager. (line 2570)
- * BFD_RELOC_XTENSA_SLOT3_ALT: howto manager. (line 2590)
- * BFD_RELOC_XTENSA_SLOT3_OP: howto manager. (line 2571)
- * BFD_RELOC_XTENSA_SLOT4_ALT: howto manager. (line 2591)
- * BFD_RELOC_XTENSA_SLOT4_OP: howto manager. (line 2572)
- * BFD_RELOC_XTENSA_SLOT5_ALT: howto manager. (line 2592)
- * BFD_RELOC_XTENSA_SLOT5_OP: howto manager. (line 2573)
- * BFD_RELOC_XTENSA_SLOT6_ALT: howto manager. (line 2593)
- * BFD_RELOC_XTENSA_SLOT6_OP: howto manager. (line 2574)
- * BFD_RELOC_XTENSA_SLOT7_ALT: howto manager. (line 2594)
- * BFD_RELOC_XTENSA_SLOT7_OP: howto manager. (line 2575)
- * BFD_RELOC_XTENSA_SLOT8_ALT: howto manager. (line 2595)
- * BFD_RELOC_XTENSA_SLOT8_OP: howto manager. (line 2576)
- * BFD_RELOC_XTENSA_SLOT9_ALT: howto manager. (line 2596)
- * BFD_RELOC_XTENSA_SLOT9_OP: howto manager. (line 2577)
- * BFD_RELOC_XTENSA_TLSDESC_ARG: howto manager. (line 2618)
- * BFD_RELOC_XTENSA_TLSDESC_FN: howto manager. (line 2617)
- * BFD_RELOC_XTENSA_TLS_ARG: howto manager. (line 2622)
- * BFD_RELOC_XTENSA_TLS_CALL: howto manager. (line 2623)
- * BFD_RELOC_XTENSA_TLS_DTPOFF: howto manager. (line 2619)
- * BFD_RELOC_XTENSA_TLS_FUNC: howto manager. (line 2621)
- * BFD_RELOC_XTENSA_TLS_TPOFF: howto manager. (line 2620)
- * BFD_RELOC_Z80_DISP8: howto manager. (line 2625)
- * BFD_RELOC_Z8K_CALLR: howto manager. (line 2629)
- * BFD_RELOC_Z8K_DISP7: howto manager. (line 2627)
- * BFD_RELOC_Z8K_IMM4L: howto manager. (line 2631)
- * bfd_rename_section: section prototypes. (line 167)
- * bfd_scan_arch: Architectures. (line 571)
- * bfd_scan_vma: Miscellaneous. (line 126)
- * bfd_sections_find_if: section prototypes. (line 197)
- * bfd_section_already_linked: Writing the symbol table.
- (line 55)
- * bfd_section_list_clear: section prototypes. (line 7)
- * bfd_set_archive_head: Archives. (line 74)
- * bfd_set_arch_info: Architectures. (line 612)
- * bfd_set_assert_handler: Error reporting. (line 162)
- * bfd_set_default_target: bfd_target. (line 557)
- * bfd_set_error: Error reporting. (line 58)
- * bfd_set_error_handler: Error reporting. (line 128)
- * bfd_set_error_program_name: Error reporting. (line 136)
- * bfd_set_filename: Opening and Closing.
- (line 529)
- * bfd_set_file_flags: Miscellaneous. (line 45)
- * bfd_set_format: Formats. (line 67)
- * bfd_set_gp_size: Miscellaneous. (line 116)
- * bfd_set_input_error: Error reporting. (line 69)
- * bfd_set_private_flags: Miscellaneous. (line 174)
- * bfd_set_reloc: Miscellaneous. (line 33)
- * bfd_set_section_contents: section prototypes. (line 228)
- * bfd_set_section_flags: section prototypes. (line 154)
- * bfd_set_section_size: section prototypes. (line 214)
- * bfd_set_start_address: Miscellaneous. (line 95)
- * bfd_set_symtab: symbol handling functions.
- (line 63)
- * bfd_symbol_info: symbol handling functions.
- (line 135)
- * bfd_target_list: bfd_target. (line 609)
- * bfd_update_compression_header: Miscellaneous. (line 353)
- * bfd_write_bigendian_4byte_int: Internal. (line 12)
- * bfd_zalloc: Opening and Closing.
- (line 257)
- * bfd_zalloc2: Opening and Closing.
- (line 266)
- * check_build_id_file: Opening and Closing.
- (line 491)
- * coff_symbol_type: coff. (line 233)
- * core_file_matches_executable_p: Core Files. (line 38)
- * find_separate_debug_file: Opening and Closing.
- (line 365)
- * generic_core_file_matches_executable_p: Core Files. (line 48)
- * get_build_id: Opening and Closing.
- (line 460)
- * get_build_id_name: Opening and Closing.
- (line 474)
- * Hash tables: Hash Tables. (line 6)
- * internal object-file format: Canonical format. (line 11)
- * Linker: Linker Functions. (line 6)
- * Other functions: Miscellaneous. (line 188)
- * separate_alt_debug_file_exists: Opening and Closing.
- (line 356)
- * separate_debug_file_exists: Opening and Closing.
- (line 343)
- * struct bfd_iovec: Miscellaneous. (line 414)
- * target vector (_bfd_final_link): Performing the Final Link.
- (line 6)
- * target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table.
- (line 6)
- * target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table.
- (line 6)
- * The HOWTO Macro: typedef arelent. (line 287)
- * what is it?: Overview. (line 6)
- Tag Table:
- Node: Top1051
- Node: Overview1387
- Node: History2445
- Node: How It Works3390
- Node: What BFD Version 2 Can Do4927
- Node: BFD information loss6244
- Node: Canonical format8785
- Node: BFD front end13128
- Node: typedef bfd13552
- Node: Error reporting31009
- Node: Miscellaneous36260
- Node: Memory Usage55374
- Node: Initialization56605
- Node: Sections57281
- Node: Section Input57764
- Node: Section Output58958
- Node: typedef asection61445
- Node: section prototypes85488
- Node: Symbols96232
- Node: Reading Symbols97835
- Node: Writing Symbols98943
- Node: Mini Symbols100687
- Node: typedef asymbol101661
- Node: symbol handling functions107746
- Node: Archives113121
- Node: Formats117258
- Node: Relocations120209
- Node: typedef arelent120936
- Node: howto manager135854
- Node: Core Files267925
- Node: Targets269963
- Node: bfd_target271938
- Node: Architectures299273
- Node: Opening and Closing330730
- Node: Internal349193
- Node: File Caching356025
- Node: Linker Functions357943
- Node: Creating a Linker Hash Table359617
- Node: Adding Symbols to the Hash Table361356
- Node: Differing file formats362256
- Node: Adding symbols from an object file363981
- Node: Adding symbols from an archive366131
- Node: Performing the Final Link368477
- Node: Information provided by the linker369718
- Node: Relocating the section contents370872
- Node: Writing the symbol table372624
- Node: Hash Tables379778
- Node: Creating and Freeing a Hash Table380976
- Node: Looking Up or Entering a String382226
- Node: Traversing a Hash Table383479
- Node: Deriving a New Hash Table Type384268
- Node: Define the Derived Structures385334
- Node: Write the Derived Creation Routine386415
- Node: Write Other Derived Routines389040
- Node: BFD back ends390355
- Node: What to Put Where390625
- Node: aout390805
- Node: coff397087
- Node: elf425238
- Node: mmo425639
- Node: File layout426509
- Node: Symbol-table432422
- Node: mmo section mapping436185
- Node: GNU Free Documentation License439839
- Node: BFD Index464903
- End Tag Table
|