reloc.c 181 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005
  1. /* BFD support for handling relocation entries.
  2. Copyright (C) 1990-2015 Free Software Foundation, Inc.
  3. Written by Cygnus Support.
  4. This file is part of BFD, the Binary File Descriptor library.
  5. This program is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 3 of the License, or
  8. (at your option) any later version.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with this program; if not, write to the Free Software
  15. Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
  16. MA 02110-1301, USA. */
  17. /*
  18. SECTION
  19. Relocations
  20. BFD maintains relocations in much the same way it maintains
  21. symbols: they are left alone until required, then read in
  22. en-masse and translated into an internal form. A common
  23. routine <<bfd_perform_relocation>> acts upon the
  24. canonical form to do the fixup.
  25. Relocations are maintained on a per section basis,
  26. while symbols are maintained on a per BFD basis.
  27. All that a back end has to do to fit the BFD interface is to create
  28. a <<struct reloc_cache_entry>> for each relocation
  29. in a particular section, and fill in the right bits of the structures.
  30. @menu
  31. @* typedef arelent::
  32. @* howto manager::
  33. @end menu
  34. */
  35. /* DO compile in the reloc_code name table from libbfd.h. */
  36. #define _BFD_MAKE_TABLE_bfd_reloc_code_real
  37. #include "sysdep.h"
  38. #include "bfd.h"
  39. #include "bfdlink.h"
  40. #include "libbfd.h"
  41. /*
  42. DOCDD
  43. INODE
  44. typedef arelent, howto manager, Relocations, Relocations
  45. SUBSECTION
  46. typedef arelent
  47. This is the structure of a relocation entry:
  48. CODE_FRAGMENT
  49. .
  50. .typedef enum bfd_reloc_status
  51. .{
  52. . {* No errors detected. *}
  53. . bfd_reloc_ok,
  54. .
  55. . {* The relocation was performed, but there was an overflow. *}
  56. . bfd_reloc_overflow,
  57. .
  58. . {* The address to relocate was not within the section supplied. *}
  59. . bfd_reloc_outofrange,
  60. .
  61. . {* Used by special functions. *}
  62. . bfd_reloc_continue,
  63. .
  64. . {* Unsupported relocation size requested. *}
  65. . bfd_reloc_notsupported,
  66. .
  67. . {* Unused. *}
  68. . bfd_reloc_other,
  69. .
  70. . {* The symbol to relocate against was undefined. *}
  71. . bfd_reloc_undefined,
  72. .
  73. . {* The relocation was performed, but may not be ok - presently
  74. . generated only when linking i960 coff files with i960 b.out
  75. . symbols. If this type is returned, the error_message argument
  76. . to bfd_perform_relocation will be set. *}
  77. . bfd_reloc_dangerous
  78. . }
  79. . bfd_reloc_status_type;
  80. .
  81. .
  82. .typedef struct reloc_cache_entry
  83. .{
  84. . {* A pointer into the canonical table of pointers. *}
  85. . struct bfd_symbol **sym_ptr_ptr;
  86. .
  87. . {* offset in section. *}
  88. . bfd_size_type address;
  89. .
  90. . {* addend for relocation value. *}
  91. . bfd_vma addend;
  92. .
  93. . {* Pointer to how to perform the required relocation. *}
  94. . reloc_howto_type *howto;
  95. .
  96. .}
  97. .arelent;
  98. .
  99. */
  100. /*
  101. DESCRIPTION
  102. Here is a description of each of the fields within an <<arelent>>:
  103. o <<sym_ptr_ptr>>
  104. The symbol table pointer points to a pointer to the symbol
  105. associated with the relocation request. It is the pointer
  106. into the table returned by the back end's
  107. <<canonicalize_symtab>> action. @xref{Symbols}. The symbol is
  108. referenced through a pointer to a pointer so that tools like
  109. the linker can fix up all the symbols of the same name by
  110. modifying only one pointer. The relocation routine looks in
  111. the symbol and uses the base of the section the symbol is
  112. attached to and the value of the symbol as the initial
  113. relocation offset. If the symbol pointer is zero, then the
  114. section provided is looked up.
  115. o <<address>>
  116. The <<address>> field gives the offset in bytes from the base of
  117. the section data which owns the relocation record to the first
  118. byte of relocatable information. The actual data relocated
  119. will be relative to this point; for example, a relocation
  120. type which modifies the bottom two bytes of a four byte word
  121. would not touch the first byte pointed to in a big endian
  122. world.
  123. o <<addend>>
  124. The <<addend>> is a value provided by the back end to be added (!)
  125. to the relocation offset. Its interpretation is dependent upon
  126. the howto. For example, on the 68k the code:
  127. | char foo[];
  128. | main()
  129. | {
  130. | return foo[0x12345678];
  131. | }
  132. Could be compiled into:
  133. | linkw fp,#-4
  134. | moveb @@#12345678,d0
  135. | extbl d0
  136. | unlk fp
  137. | rts
  138. This could create a reloc pointing to <<foo>>, but leave the
  139. offset in the data, something like:
  140. |RELOCATION RECORDS FOR [.text]:
  141. |offset type value
  142. |00000006 32 _foo
  143. |
  144. |00000000 4e56 fffc ; linkw fp,#-4
  145. |00000004 1039 1234 5678 ; moveb @@#12345678,d0
  146. |0000000a 49c0 ; extbl d0
  147. |0000000c 4e5e ; unlk fp
  148. |0000000e 4e75 ; rts
  149. Using coff and an 88k, some instructions don't have enough
  150. space in them to represent the full address range, and
  151. pointers have to be loaded in two parts. So you'd get something like:
  152. | or.u r13,r0,hi16(_foo+0x12345678)
  153. | ld.b r2,r13,lo16(_foo+0x12345678)
  154. | jmp r1
  155. This should create two relocs, both pointing to <<_foo>>, and with
  156. 0x12340000 in their addend field. The data would consist of:
  157. |RELOCATION RECORDS FOR [.text]:
  158. |offset type value
  159. |00000002 HVRT16 _foo+0x12340000
  160. |00000006 LVRT16 _foo+0x12340000
  161. |
  162. |00000000 5da05678 ; or.u r13,r0,0x5678
  163. |00000004 1c4d5678 ; ld.b r2,r13,0x5678
  164. |00000008 f400c001 ; jmp r1
  165. The relocation routine digs out the value from the data, adds
  166. it to the addend to get the original offset, and then adds the
  167. value of <<_foo>>. Note that all 32 bits have to be kept around
  168. somewhere, to cope with carry from bit 15 to bit 16.
  169. One further example is the sparc and the a.out format. The
  170. sparc has a similar problem to the 88k, in that some
  171. instructions don't have room for an entire offset, but on the
  172. sparc the parts are created in odd sized lumps. The designers of
  173. the a.out format chose to not use the data within the section
  174. for storing part of the offset; all the offset is kept within
  175. the reloc. Anything in the data should be ignored.
  176. | save %sp,-112,%sp
  177. | sethi %hi(_foo+0x12345678),%g2
  178. | ldsb [%g2+%lo(_foo+0x12345678)],%i0
  179. | ret
  180. | restore
  181. Both relocs contain a pointer to <<foo>>, and the offsets
  182. contain junk.
  183. |RELOCATION RECORDS FOR [.text]:
  184. |offset type value
  185. |00000004 HI22 _foo+0x12345678
  186. |00000008 LO10 _foo+0x12345678
  187. |
  188. |00000000 9de3bf90 ; save %sp,-112,%sp
  189. |00000004 05000000 ; sethi %hi(_foo+0),%g2
  190. |00000008 f048a000 ; ldsb [%g2+%lo(_foo+0)],%i0
  191. |0000000c 81c7e008 ; ret
  192. |00000010 81e80000 ; restore
  193. o <<howto>>
  194. The <<howto>> field can be imagined as a
  195. relocation instruction. It is a pointer to a structure which
  196. contains information on what to do with all of the other
  197. information in the reloc record and data section. A back end
  198. would normally have a relocation instruction set and turn
  199. relocations into pointers to the correct structure on input -
  200. but it would be possible to create each howto field on demand.
  201. */
  202. /*
  203. SUBSUBSECTION
  204. <<enum complain_overflow>>
  205. Indicates what sort of overflow checking should be done when
  206. performing a relocation.
  207. CODE_FRAGMENT
  208. .
  209. .enum complain_overflow
  210. .{
  211. . {* Do not complain on overflow. *}
  212. . complain_overflow_dont,
  213. .
  214. . {* Complain if the value overflows when considered as a signed
  215. . number one bit larger than the field. ie. A bitfield of N bits
  216. . is allowed to represent -2**n to 2**n-1. *}
  217. . complain_overflow_bitfield,
  218. .
  219. . {* Complain if the value overflows when considered as a signed
  220. . number. *}
  221. . complain_overflow_signed,
  222. .
  223. . {* Complain if the value overflows when considered as an
  224. . unsigned number. *}
  225. . complain_overflow_unsigned
  226. .};
  227. */
  228. /*
  229. SUBSUBSECTION
  230. <<reloc_howto_type>>
  231. The <<reloc_howto_type>> is a structure which contains all the
  232. information that libbfd needs to know to tie up a back end's data.
  233. CODE_FRAGMENT
  234. .struct bfd_symbol; {* Forward declaration. *}
  235. .
  236. .struct reloc_howto_struct
  237. .{
  238. . {* The type field has mainly a documentary use - the back end can
  239. . do what it wants with it, though normally the back end's
  240. . external idea of what a reloc number is stored
  241. . in this field. For example, a PC relative word relocation
  242. . in a coff environment has the type 023 - because that's
  243. . what the outside world calls a R_PCRWORD reloc. *}
  244. . unsigned int type;
  245. .
  246. . {* The value the final relocation is shifted right by. This drops
  247. . unwanted data from the relocation. *}
  248. . unsigned int rightshift;
  249. .
  250. . {* The size of the item to be relocated. This is *not* a
  251. . power-of-two measure. To get the number of bytes operated
  252. . on by a type of relocation, use bfd_get_reloc_size. *}
  253. . int size;
  254. .
  255. . {* The number of bits in the item to be relocated. This is used
  256. . when doing overflow checking. *}
  257. . unsigned int bitsize;
  258. .
  259. . {* The relocation is relative to the field being relocated. *}
  260. . bfd_boolean pc_relative;
  261. .
  262. . {* The bit position of the reloc value in the destination.
  263. . The relocated value is left shifted by this amount. *}
  264. . unsigned int bitpos;
  265. .
  266. . {* What type of overflow error should be checked for when
  267. . relocating. *}
  268. . enum complain_overflow complain_on_overflow;
  269. .
  270. . {* If this field is non null, then the supplied function is
  271. . called rather than the normal function. This allows really
  272. . strange relocation methods to be accommodated (e.g., i960 callj
  273. . instructions). *}
  274. . bfd_reloc_status_type (*special_function)
  275. . (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
  276. . bfd *, char **);
  277. .
  278. . {* The textual name of the relocation type. *}
  279. . char *name;
  280. .
  281. . {* Some formats record a relocation addend in the section contents
  282. . rather than with the relocation. For ELF formats this is the
  283. . distinction between USE_REL and USE_RELA (though the code checks
  284. . for USE_REL == 1/0). The value of this field is TRUE if the
  285. . addend is recorded with the section contents; when performing a
  286. . partial link (ld -r) the section contents (the data) will be
  287. . modified. The value of this field is FALSE if addends are
  288. . recorded with the relocation (in arelent.addend); when performing
  289. . a partial link the relocation will be modified.
  290. . All relocations for all ELF USE_RELA targets should set this field
  291. . to FALSE (values of TRUE should be looked on with suspicion).
  292. . However, the converse is not true: not all relocations of all ELF
  293. . USE_REL targets set this field to TRUE. Why this is so is peculiar
  294. . to each particular target. For relocs that aren't used in partial
  295. . links (e.g. GOT stuff) it doesn't matter what this is set to. *}
  296. . bfd_boolean partial_inplace;
  297. .
  298. . {* src_mask selects the part of the instruction (or data) to be used
  299. . in the relocation sum. If the target relocations don't have an
  300. . addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
  301. . dst_mask to extract the addend from the section contents. If
  302. . relocations do have an addend in the reloc, eg. ELF USE_RELA, this
  303. . field should be zero. Non-zero values for ELF USE_RELA targets are
  304. . bogus as in those cases the value in the dst_mask part of the
  305. . section contents should be treated as garbage. *}
  306. . bfd_vma src_mask;
  307. .
  308. . {* dst_mask selects which parts of the instruction (or data) are
  309. . replaced with a relocated value. *}
  310. . bfd_vma dst_mask;
  311. .
  312. . {* When some formats create PC relative instructions, they leave
  313. . the value of the pc of the place being relocated in the offset
  314. . slot of the instruction, so that a PC relative relocation can
  315. . be made just by adding in an ordinary offset (e.g., sun3 a.out).
  316. . Some formats leave the displacement part of an instruction
  317. . empty (e.g., m88k bcs); this flag signals the fact. *}
  318. . bfd_boolean pcrel_offset;
  319. .};
  320. .
  321. */
  322. /*
  323. FUNCTION
  324. The HOWTO Macro
  325. DESCRIPTION
  326. The HOWTO define is horrible and will go away.
  327. .#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
  328. . { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
  329. DESCRIPTION
  330. And will be replaced with the totally magic way. But for the
  331. moment, we are compatible, so do it this way.
  332. .#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
  333. . HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
  334. . NAME, FALSE, 0, 0, IN)
  335. .
  336. DESCRIPTION
  337. This is used to fill in an empty howto entry in an array.
  338. .#define EMPTY_HOWTO(C) \
  339. . HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
  340. . NULL, FALSE, 0, 0, FALSE)
  341. .
  342. DESCRIPTION
  343. Helper routine to turn a symbol into a relocation value.
  344. .#define HOWTO_PREPARE(relocation, symbol) \
  345. . { \
  346. . if (symbol != NULL) \
  347. . { \
  348. . if (bfd_is_com_section (symbol->section)) \
  349. . { \
  350. . relocation = 0; \
  351. . } \
  352. . else \
  353. . { \
  354. . relocation = symbol->value; \
  355. . } \
  356. . } \
  357. . }
  358. .
  359. */
  360. /*
  361. FUNCTION
  362. bfd_get_reloc_size
  363. SYNOPSIS
  364. unsigned int bfd_get_reloc_size (reloc_howto_type *);
  365. DESCRIPTION
  366. For a reloc_howto_type that operates on a fixed number of bytes,
  367. this returns the number of bytes operated on.
  368. */
  369. unsigned int
  370. bfd_get_reloc_size (reloc_howto_type *howto)
  371. {
  372. switch (howto->size)
  373. {
  374. case 0: return 1;
  375. case 1: return 2;
  376. case 2: return 4;
  377. case 3: return 0;
  378. case 4: return 8;
  379. case 8: return 16;
  380. case -1: return 2;
  381. case -2: return 4;
  382. default: abort ();
  383. }
  384. }
  385. /*
  386. TYPEDEF
  387. arelent_chain
  388. DESCRIPTION
  389. How relocs are tied together in an <<asection>>:
  390. .typedef struct relent_chain
  391. .{
  392. . arelent relent;
  393. . struct relent_chain *next;
  394. .}
  395. .arelent_chain;
  396. .
  397. */
  398. /* N_ONES produces N one bits, without overflowing machine arithmetic. */
  399. #define N_ONES(n) (((((bfd_vma) 1 << ((n) - 1)) - 1) << 1) | 1)
  400. /*
  401. FUNCTION
  402. bfd_check_overflow
  403. SYNOPSIS
  404. bfd_reloc_status_type bfd_check_overflow
  405. (enum complain_overflow how,
  406. unsigned int bitsize,
  407. unsigned int rightshift,
  408. unsigned int addrsize,
  409. bfd_vma relocation);
  410. DESCRIPTION
  411. Perform overflow checking on @var{relocation} which has
  412. @var{bitsize} significant bits and will be shifted right by
  413. @var{rightshift} bits, on a machine with addresses containing
  414. @var{addrsize} significant bits. The result is either of
  415. @code{bfd_reloc_ok} or @code{bfd_reloc_overflow}.
  416. */
  417. bfd_reloc_status_type
  418. bfd_check_overflow (enum complain_overflow how,
  419. unsigned int bitsize,
  420. unsigned int rightshift,
  421. unsigned int addrsize,
  422. bfd_vma relocation)
  423. {
  424. bfd_vma fieldmask, addrmask, signmask, ss, a;
  425. bfd_reloc_status_type flag = bfd_reloc_ok;
  426. /* Note: BITSIZE should always be <= ADDRSIZE, but in case it's not,
  427. we'll be permissive: extra bits in the field mask will
  428. automatically extend the address mask for purposes of the
  429. overflow check. */
  430. fieldmask = N_ONES (bitsize);
  431. signmask = ~fieldmask;
  432. addrmask = N_ONES (addrsize) | (fieldmask << rightshift);
  433. a = (relocation & addrmask) >> rightshift;
  434. switch (how)
  435. {
  436. case complain_overflow_dont:
  437. break;
  438. case complain_overflow_signed:
  439. /* If any sign bits are set, all sign bits must be set. That
  440. is, A must be a valid negative address after shifting. */
  441. signmask = ~ (fieldmask >> 1);
  442. /* Fall thru */
  443. case complain_overflow_bitfield:
  444. /* Bitfields are sometimes signed, sometimes unsigned. We
  445. explicitly allow an address wrap too, which means a bitfield
  446. of n bits is allowed to store -2**n to 2**n-1. Thus overflow
  447. if the value has some, but not all, bits set outside the
  448. field. */
  449. ss = a & signmask;
  450. if (ss != 0 && ss != ((addrmask >> rightshift) & signmask))
  451. flag = bfd_reloc_overflow;
  452. break;
  453. case complain_overflow_unsigned:
  454. /* We have an overflow if the address does not fit in the field. */
  455. if ((a & signmask) != 0)
  456. flag = bfd_reloc_overflow;
  457. break;
  458. default:
  459. abort ();
  460. }
  461. return flag;
  462. }
  463. /*
  464. FUNCTION
  465. bfd_perform_relocation
  466. SYNOPSIS
  467. bfd_reloc_status_type bfd_perform_relocation
  468. (bfd *abfd,
  469. arelent *reloc_entry,
  470. void *data,
  471. asection *input_section,
  472. bfd *output_bfd,
  473. char **error_message);
  474. DESCRIPTION
  475. If @var{output_bfd} is supplied to this function, the
  476. generated image will be relocatable; the relocations are
  477. copied to the output file after they have been changed to
  478. reflect the new state of the world. There are two ways of
  479. reflecting the results of partial linkage in an output file:
  480. by modifying the output data in place, and by modifying the
  481. relocation record. Some native formats (e.g., basic a.out and
  482. basic coff) have no way of specifying an addend in the
  483. relocation type, so the addend has to go in the output data.
  484. This is no big deal since in these formats the output data
  485. slot will always be big enough for the addend. Complex reloc
  486. types with addends were invented to solve just this problem.
  487. The @var{error_message} argument is set to an error message if
  488. this return @code{bfd_reloc_dangerous}.
  489. */
  490. bfd_reloc_status_type
  491. bfd_perform_relocation (bfd *abfd,
  492. arelent *reloc_entry,
  493. void *data,
  494. asection *input_section,
  495. bfd *output_bfd,
  496. char **error_message)
  497. {
  498. bfd_vma relocation;
  499. bfd_reloc_status_type flag = bfd_reloc_ok;
  500. bfd_size_type octets;
  501. bfd_vma output_base = 0;
  502. reloc_howto_type *howto = reloc_entry->howto;
  503. asection *reloc_target_output_section;
  504. asymbol *symbol;
  505. symbol = *(reloc_entry->sym_ptr_ptr);
  506. if (bfd_is_abs_section (symbol->section)
  507. && output_bfd != NULL)
  508. {
  509. reloc_entry->address += input_section->output_offset;
  510. return bfd_reloc_ok;
  511. }
  512. /* PR 17512: file: 0f67f69d. */
  513. if (howto == NULL)
  514. return bfd_reloc_undefined;
  515. /* If we are not producing relocatable output, return an error if
  516. the symbol is not defined. An undefined weak symbol is
  517. considered to have a value of zero (SVR4 ABI, p. 4-27). */
  518. if (bfd_is_und_section (symbol->section)
  519. && (symbol->flags & BSF_WEAK) == 0
  520. && output_bfd == NULL)
  521. flag = bfd_reloc_undefined;
  522. /* If there is a function supplied to handle this relocation type,
  523. call it. It'll return `bfd_reloc_continue' if further processing
  524. can be done. */
  525. if (howto->special_function)
  526. {
  527. bfd_reloc_status_type cont;
  528. cont = howto->special_function (abfd, reloc_entry, symbol, data,
  529. input_section, output_bfd,
  530. error_message);
  531. if (cont != bfd_reloc_continue)
  532. return cont;
  533. }
  534. /* Is the address of the relocation really within the section?
  535. Include the size of the reloc in the test for out of range addresses.
  536. PR 17512: file: c146ab8b, 46dff27f, 38e53ebf. */
  537. octets = reloc_entry->address * bfd_octets_per_byte (abfd);
  538. if (octets + bfd_get_reloc_size (howto)
  539. > bfd_get_section_limit_octets (abfd, input_section))
  540. return bfd_reloc_outofrange;
  541. /* Work out which section the relocation is targeted at and the
  542. initial relocation command value. */
  543. /* Get symbol value. (Common symbols are special.) */
  544. if (bfd_is_com_section (symbol->section))
  545. relocation = 0;
  546. else
  547. relocation = symbol->value;
  548. reloc_target_output_section = symbol->section->output_section;
  549. /* Convert input-section-relative symbol value to absolute. */
  550. if ((output_bfd && ! howto->partial_inplace)
  551. || reloc_target_output_section == NULL)
  552. output_base = 0;
  553. else
  554. output_base = reloc_target_output_section->vma;
  555. relocation += output_base + symbol->section->output_offset;
  556. /* Add in supplied addend. */
  557. relocation += reloc_entry->addend;
  558. /* Here the variable relocation holds the final address of the
  559. symbol we are relocating against, plus any addend. */
  560. if (howto->pc_relative)
  561. {
  562. /* This is a PC relative relocation. We want to set RELOCATION
  563. to the distance between the address of the symbol and the
  564. location. RELOCATION is already the address of the symbol.
  565. We start by subtracting the address of the section containing
  566. the location.
  567. If pcrel_offset is set, we must further subtract the position
  568. of the location within the section. Some targets arrange for
  569. the addend to be the negative of the position of the location
  570. within the section; for example, i386-aout does this. For
  571. i386-aout, pcrel_offset is FALSE. Some other targets do not
  572. include the position of the location; for example, m88kbcs,
  573. or ELF. For those targets, pcrel_offset is TRUE.
  574. If we are producing relocatable output, then we must ensure
  575. that this reloc will be correctly computed when the final
  576. relocation is done. If pcrel_offset is FALSE we want to wind
  577. up with the negative of the location within the section,
  578. which means we must adjust the existing addend by the change
  579. in the location within the section. If pcrel_offset is TRUE
  580. we do not want to adjust the existing addend at all.
  581. FIXME: This seems logical to me, but for the case of
  582. producing relocatable output it is not what the code
  583. actually does. I don't want to change it, because it seems
  584. far too likely that something will break. */
  585. relocation -=
  586. input_section->output_section->vma + input_section->output_offset;
  587. if (howto->pcrel_offset)
  588. relocation -= reloc_entry->address;
  589. }
  590. if (output_bfd != NULL)
  591. {
  592. if (! howto->partial_inplace)
  593. {
  594. /* This is a partial relocation, and we want to apply the relocation
  595. to the reloc entry rather than the raw data. Modify the reloc
  596. inplace to reflect what we now know. */
  597. reloc_entry->addend = relocation;
  598. reloc_entry->address += input_section->output_offset;
  599. return flag;
  600. }
  601. else
  602. {
  603. /* This is a partial relocation, but inplace, so modify the
  604. reloc record a bit.
  605. If we've relocated with a symbol with a section, change
  606. into a ref to the section belonging to the symbol. */
  607. reloc_entry->address += input_section->output_offset;
  608. /* WTF?? */
  609. if (abfd->xvec->flavour == bfd_target_coff_flavour
  610. && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
  611. && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
  612. {
  613. /* For m68k-coff, the addend was being subtracted twice during
  614. relocation with -r. Removing the line below this comment
  615. fixes that problem; see PR 2953.
  616. However, Ian wrote the following, regarding removing the line below,
  617. which explains why it is still enabled: --djm
  618. If you put a patch like that into BFD you need to check all the COFF
  619. linkers. I am fairly certain that patch will break coff-i386 (e.g.,
  620. SCO); see coff_i386_reloc in coff-i386.c where I worked around the
  621. problem in a different way. There may very well be a reason that the
  622. code works as it does.
  623. Hmmm. The first obvious point is that bfd_perform_relocation should
  624. not have any tests that depend upon the flavour. It's seem like
  625. entirely the wrong place for such a thing. The second obvious point
  626. is that the current code ignores the reloc addend when producing
  627. relocatable output for COFF. That's peculiar. In fact, I really
  628. have no idea what the point of the line you want to remove is.
  629. A typical COFF reloc subtracts the old value of the symbol and adds in
  630. the new value to the location in the object file (if it's a pc
  631. relative reloc it adds the difference between the symbol value and the
  632. location). When relocating we need to preserve that property.
  633. BFD handles this by setting the addend to the negative of the old
  634. value of the symbol. Unfortunately it handles common symbols in a
  635. non-standard way (it doesn't subtract the old value) but that's a
  636. different story (we can't change it without losing backward
  637. compatibility with old object files) (coff-i386 does subtract the old
  638. value, to be compatible with existing coff-i386 targets, like SCO).
  639. So everything works fine when not producing relocatable output. When
  640. we are producing relocatable output, logically we should do exactly
  641. what we do when not producing relocatable output. Therefore, your
  642. patch is correct. In fact, it should probably always just set
  643. reloc_entry->addend to 0 for all cases, since it is, in fact, going to
  644. add the value into the object file. This won't hurt the COFF code,
  645. which doesn't use the addend; I'm not sure what it will do to other
  646. formats (the thing to check for would be whether any formats both use
  647. the addend and set partial_inplace).
  648. When I wanted to make coff-i386 produce relocatable output, I ran
  649. into the problem that you are running into: I wanted to remove that
  650. line. Rather than risk it, I made the coff-i386 relocs use a special
  651. function; it's coff_i386_reloc in coff-i386.c. The function
  652. specifically adds the addend field into the object file, knowing that
  653. bfd_perform_relocation is not going to. If you remove that line, then
  654. coff-i386.c will wind up adding the addend field in twice. It's
  655. trivial to fix; it just needs to be done.
  656. The problem with removing the line is just that it may break some
  657. working code. With BFD it's hard to be sure of anything. The right
  658. way to deal with this is simply to build and test at least all the
  659. supported COFF targets. It should be straightforward if time and disk
  660. space consuming. For each target:
  661. 1) build the linker
  662. 2) generate some executable, and link it using -r (I would
  663. probably use paranoia.o and link against newlib/libc.a, which
  664. for all the supported targets would be available in
  665. /usr/cygnus/progressive/H-host/target/lib/libc.a).
  666. 3) make the change to reloc.c
  667. 4) rebuild the linker
  668. 5) repeat step 2
  669. 6) if the resulting object files are the same, you have at least
  670. made it no worse
  671. 7) if they are different you have to figure out which version is
  672. right
  673. */
  674. relocation -= reloc_entry->addend;
  675. reloc_entry->addend = 0;
  676. }
  677. else
  678. {
  679. reloc_entry->addend = relocation;
  680. }
  681. }
  682. }
  683. /* FIXME: This overflow checking is incomplete, because the value
  684. might have overflowed before we get here. For a correct check we
  685. need to compute the value in a size larger than bitsize, but we
  686. can't reasonably do that for a reloc the same size as a host
  687. machine word.
  688. FIXME: We should also do overflow checking on the result after
  689. adding in the value contained in the object file. */
  690. if (howto->complain_on_overflow != complain_overflow_dont
  691. && flag == bfd_reloc_ok)
  692. flag = bfd_check_overflow (howto->complain_on_overflow,
  693. howto->bitsize,
  694. howto->rightshift,
  695. bfd_arch_bits_per_address (abfd),
  696. relocation);
  697. /* Either we are relocating all the way, or we don't want to apply
  698. the relocation to the reloc entry (probably because there isn't
  699. any room in the output format to describe addends to relocs). */
  700. /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler
  701. (OSF version 1.3, compiler version 3.11). It miscompiles the
  702. following program:
  703. struct str
  704. {
  705. unsigned int i0;
  706. } s = { 0 };
  707. int
  708. main ()
  709. {
  710. unsigned long x;
  711. x = 0x100000000;
  712. x <<= (unsigned long) s.i0;
  713. if (x == 0)
  714. printf ("failed\n");
  715. else
  716. printf ("succeeded (%lx)\n", x);
  717. }
  718. */
  719. relocation >>= (bfd_vma) howto->rightshift;
  720. /* Shift everything up to where it's going to be used. */
  721. relocation <<= (bfd_vma) howto->bitpos;
  722. /* Wait for the day when all have the mask in them. */
  723. /* What we do:
  724. i instruction to be left alone
  725. o offset within instruction
  726. r relocation offset to apply
  727. S src mask
  728. D dst mask
  729. N ~dst mask
  730. A part 1
  731. B part 2
  732. R result
  733. Do this:
  734. (( i i i i i o o o o o from bfd_get<size>
  735. and S S S S S) to get the size offset we want
  736. + r r r r r r r r r r) to get the final value to place
  737. and D D D D D to chop to right size
  738. -----------------------
  739. = A A A A A
  740. And this:
  741. ( i i i i i o o o o o from bfd_get<size>
  742. and N N N N N ) get instruction
  743. -----------------------
  744. = B B B B B
  745. And then:
  746. ( B B B B B
  747. or A A A A A)
  748. -----------------------
  749. = R R R R R R R R R R put into bfd_put<size>
  750. */
  751. #define DOIT(x) \
  752. x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) + relocation) & howto->dst_mask))
  753. switch (howto->size)
  754. {
  755. case 0:
  756. {
  757. char x = bfd_get_8 (abfd, (char *) data + octets);
  758. DOIT (x);
  759. bfd_put_8 (abfd, x, (unsigned char *) data + octets);
  760. }
  761. break;
  762. case 1:
  763. {
  764. short x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
  765. DOIT (x);
  766. bfd_put_16 (abfd, (bfd_vma) x, (unsigned char *) data + octets);
  767. }
  768. break;
  769. case 2:
  770. {
  771. long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
  772. DOIT (x);
  773. bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
  774. }
  775. break;
  776. case -2:
  777. {
  778. long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
  779. relocation = -relocation;
  780. DOIT (x);
  781. bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
  782. }
  783. break;
  784. case -1:
  785. {
  786. long x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
  787. relocation = -relocation;
  788. DOIT (x);
  789. bfd_put_16 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
  790. }
  791. break;
  792. case 3:
  793. /* Do nothing */
  794. break;
  795. case 4:
  796. #ifdef BFD64
  797. {
  798. bfd_vma x = bfd_get_64 (abfd, (bfd_byte *) data + octets);
  799. DOIT (x);
  800. bfd_put_64 (abfd, x, (bfd_byte *) data + octets);
  801. }
  802. #else
  803. abort ();
  804. #endif
  805. break;
  806. default:
  807. return bfd_reloc_other;
  808. }
  809. return flag;
  810. }
  811. /*
  812. FUNCTION
  813. bfd_install_relocation
  814. SYNOPSIS
  815. bfd_reloc_status_type bfd_install_relocation
  816. (bfd *abfd,
  817. arelent *reloc_entry,
  818. void *data, bfd_vma data_start,
  819. asection *input_section,
  820. char **error_message);
  821. DESCRIPTION
  822. This looks remarkably like <<bfd_perform_relocation>>, except it
  823. does not expect that the section contents have been filled in.
  824. I.e., it's suitable for use when creating, rather than applying
  825. a relocation.
  826. For now, this function should be considered reserved for the
  827. assembler.
  828. */
  829. bfd_reloc_status_type
  830. bfd_install_relocation (bfd *abfd,
  831. arelent *reloc_entry,
  832. void *data_start,
  833. bfd_vma data_start_offset,
  834. asection *input_section,
  835. char **error_message)
  836. {
  837. bfd_vma relocation;
  838. bfd_reloc_status_type flag = bfd_reloc_ok;
  839. bfd_size_type octets;
  840. bfd_vma output_base = 0;
  841. reloc_howto_type *howto = reloc_entry->howto;
  842. asection *reloc_target_output_section;
  843. asymbol *symbol;
  844. bfd_byte *data;
  845. symbol = *(reloc_entry->sym_ptr_ptr);
  846. if (bfd_is_abs_section (symbol->section))
  847. {
  848. reloc_entry->address += input_section->output_offset;
  849. return bfd_reloc_ok;
  850. }
  851. /* If there is a function supplied to handle this relocation type,
  852. call it. It'll return `bfd_reloc_continue' if further processing
  853. can be done. */
  854. if (howto->special_function)
  855. {
  856. bfd_reloc_status_type cont;
  857. /* XXX - The special_function calls haven't been fixed up to deal
  858. with creating new relocations and section contents. */
  859. cont = howto->special_function (abfd, reloc_entry, symbol,
  860. /* XXX - Non-portable! */
  861. ((bfd_byte *) data_start
  862. - data_start_offset),
  863. input_section, abfd, error_message);
  864. if (cont != bfd_reloc_continue)
  865. return cont;
  866. }
  867. /* Is the address of the relocation really within the section? */
  868. octets = reloc_entry->address * bfd_octets_per_byte (abfd);
  869. if (octets + bfd_get_reloc_size (howto)
  870. > bfd_get_section_limit_octets (abfd, input_section))
  871. return bfd_reloc_outofrange;
  872. /* Work out which section the relocation is targeted at and the
  873. initial relocation command value. */
  874. /* Get symbol value. (Common symbols are special.) */
  875. if (bfd_is_com_section (symbol->section))
  876. relocation = 0;
  877. else
  878. relocation = symbol->value;
  879. reloc_target_output_section = symbol->section->output_section;
  880. /* Convert input-section-relative symbol value to absolute. */
  881. if (! howto->partial_inplace)
  882. output_base = 0;
  883. else
  884. output_base = reloc_target_output_section->vma;
  885. relocation += output_base + symbol->section->output_offset;
  886. /* Add in supplied addend. */
  887. relocation += reloc_entry->addend;
  888. /* Here the variable relocation holds the final address of the
  889. symbol we are relocating against, plus any addend. */
  890. if (howto->pc_relative)
  891. {
  892. /* This is a PC relative relocation. We want to set RELOCATION
  893. to the distance between the address of the symbol and the
  894. location. RELOCATION is already the address of the symbol.
  895. We start by subtracting the address of the section containing
  896. the location.
  897. If pcrel_offset is set, we must further subtract the position
  898. of the location within the section. Some targets arrange for
  899. the addend to be the negative of the position of the location
  900. within the section; for example, i386-aout does this. For
  901. i386-aout, pcrel_offset is FALSE. Some other targets do not
  902. include the position of the location; for example, m88kbcs,
  903. or ELF. For those targets, pcrel_offset is TRUE.
  904. If we are producing relocatable output, then we must ensure
  905. that this reloc will be correctly computed when the final
  906. relocation is done. If pcrel_offset is FALSE we want to wind
  907. up with the negative of the location within the section,
  908. which means we must adjust the existing addend by the change
  909. in the location within the section. If pcrel_offset is TRUE
  910. we do not want to adjust the existing addend at all.
  911. FIXME: This seems logical to me, but for the case of
  912. producing relocatable output it is not what the code
  913. actually does. I don't want to change it, because it seems
  914. far too likely that something will break. */
  915. relocation -=
  916. input_section->output_section->vma + input_section->output_offset;
  917. if (howto->pcrel_offset && howto->partial_inplace)
  918. relocation -= reloc_entry->address;
  919. }
  920. if (! howto->partial_inplace)
  921. {
  922. /* This is a partial relocation, and we want to apply the relocation
  923. to the reloc entry rather than the raw data. Modify the reloc
  924. inplace to reflect what we now know. */
  925. reloc_entry->addend = relocation;
  926. reloc_entry->address += input_section->output_offset;
  927. return flag;
  928. }
  929. else
  930. {
  931. /* This is a partial relocation, but inplace, so modify the
  932. reloc record a bit.
  933. If we've relocated with a symbol with a section, change
  934. into a ref to the section belonging to the symbol. */
  935. reloc_entry->address += input_section->output_offset;
  936. /* WTF?? */
  937. if (abfd->xvec->flavour == bfd_target_coff_flavour
  938. && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
  939. && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
  940. {
  941. /* For m68k-coff, the addend was being subtracted twice during
  942. relocation with -r. Removing the line below this comment
  943. fixes that problem; see PR 2953.
  944. However, Ian wrote the following, regarding removing the line below,
  945. which explains why it is still enabled: --djm
  946. If you put a patch like that into BFD you need to check all the COFF
  947. linkers. I am fairly certain that patch will break coff-i386 (e.g.,
  948. SCO); see coff_i386_reloc in coff-i386.c where I worked around the
  949. problem in a different way. There may very well be a reason that the
  950. code works as it does.
  951. Hmmm. The first obvious point is that bfd_install_relocation should
  952. not have any tests that depend upon the flavour. It's seem like
  953. entirely the wrong place for such a thing. The second obvious point
  954. is that the current code ignores the reloc addend when producing
  955. relocatable output for COFF. That's peculiar. In fact, I really
  956. have no idea what the point of the line you want to remove is.
  957. A typical COFF reloc subtracts the old value of the symbol and adds in
  958. the new value to the location in the object file (if it's a pc
  959. relative reloc it adds the difference between the symbol value and the
  960. location). When relocating we need to preserve that property.
  961. BFD handles this by setting the addend to the negative of the old
  962. value of the symbol. Unfortunately it handles common symbols in a
  963. non-standard way (it doesn't subtract the old value) but that's a
  964. different story (we can't change it without losing backward
  965. compatibility with old object files) (coff-i386 does subtract the old
  966. value, to be compatible with existing coff-i386 targets, like SCO).
  967. So everything works fine when not producing relocatable output. When
  968. we are producing relocatable output, logically we should do exactly
  969. what we do when not producing relocatable output. Therefore, your
  970. patch is correct. In fact, it should probably always just set
  971. reloc_entry->addend to 0 for all cases, since it is, in fact, going to
  972. add the value into the object file. This won't hurt the COFF code,
  973. which doesn't use the addend; I'm not sure what it will do to other
  974. formats (the thing to check for would be whether any formats both use
  975. the addend and set partial_inplace).
  976. When I wanted to make coff-i386 produce relocatable output, I ran
  977. into the problem that you are running into: I wanted to remove that
  978. line. Rather than risk it, I made the coff-i386 relocs use a special
  979. function; it's coff_i386_reloc in coff-i386.c. The function
  980. specifically adds the addend field into the object file, knowing that
  981. bfd_install_relocation is not going to. If you remove that line, then
  982. coff-i386.c will wind up adding the addend field in twice. It's
  983. trivial to fix; it just needs to be done.
  984. The problem with removing the line is just that it may break some
  985. working code. With BFD it's hard to be sure of anything. The right
  986. way to deal with this is simply to build and test at least all the
  987. supported COFF targets. It should be straightforward if time and disk
  988. space consuming. For each target:
  989. 1) build the linker
  990. 2) generate some executable, and link it using -r (I would
  991. probably use paranoia.o and link against newlib/libc.a, which
  992. for all the supported targets would be available in
  993. /usr/cygnus/progressive/H-host/target/lib/libc.a).
  994. 3) make the change to reloc.c
  995. 4) rebuild the linker
  996. 5) repeat step 2
  997. 6) if the resulting object files are the same, you have at least
  998. made it no worse
  999. 7) if they are different you have to figure out which version is
  1000. right. */
  1001. relocation -= reloc_entry->addend;
  1002. /* FIXME: There should be no target specific code here... */
  1003. if (strcmp (abfd->xvec->name, "coff-z8k") != 0)
  1004. reloc_entry->addend = 0;
  1005. }
  1006. else
  1007. {
  1008. reloc_entry->addend = relocation;
  1009. }
  1010. }
  1011. /* FIXME: This overflow checking is incomplete, because the value
  1012. might have overflowed before we get here. For a correct check we
  1013. need to compute the value in a size larger than bitsize, but we
  1014. can't reasonably do that for a reloc the same size as a host
  1015. machine word.
  1016. FIXME: We should also do overflow checking on the result after
  1017. adding in the value contained in the object file. */
  1018. if (howto->complain_on_overflow != complain_overflow_dont)
  1019. flag = bfd_check_overflow (howto->complain_on_overflow,
  1020. howto->bitsize,
  1021. howto->rightshift,
  1022. bfd_arch_bits_per_address (abfd),
  1023. relocation);
  1024. /* Either we are relocating all the way, or we don't want to apply
  1025. the relocation to the reloc entry (probably because there isn't
  1026. any room in the output format to describe addends to relocs). */
  1027. /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler
  1028. (OSF version 1.3, compiler version 3.11). It miscompiles the
  1029. following program:
  1030. struct str
  1031. {
  1032. unsigned int i0;
  1033. } s = { 0 };
  1034. int
  1035. main ()
  1036. {
  1037. unsigned long x;
  1038. x = 0x100000000;
  1039. x <<= (unsigned long) s.i0;
  1040. if (x == 0)
  1041. printf ("failed\n");
  1042. else
  1043. printf ("succeeded (%lx)\n", x);
  1044. }
  1045. */
  1046. relocation >>= (bfd_vma) howto->rightshift;
  1047. /* Shift everything up to where it's going to be used. */
  1048. relocation <<= (bfd_vma) howto->bitpos;
  1049. /* Wait for the day when all have the mask in them. */
  1050. /* What we do:
  1051. i instruction to be left alone
  1052. o offset within instruction
  1053. r relocation offset to apply
  1054. S src mask
  1055. D dst mask
  1056. N ~dst mask
  1057. A part 1
  1058. B part 2
  1059. R result
  1060. Do this:
  1061. (( i i i i i o o o o o from bfd_get<size>
  1062. and S S S S S) to get the size offset we want
  1063. + r r r r r r r r r r) to get the final value to place
  1064. and D D D D D to chop to right size
  1065. -----------------------
  1066. = A A A A A
  1067. And this:
  1068. ( i i i i i o o o o o from bfd_get<size>
  1069. and N N N N N ) get instruction
  1070. -----------------------
  1071. = B B B B B
  1072. And then:
  1073. ( B B B B B
  1074. or A A A A A)
  1075. -----------------------
  1076. = R R R R R R R R R R put into bfd_put<size>
  1077. */
  1078. #define DOIT(x) \
  1079. x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) + relocation) & howto->dst_mask))
  1080. data = (bfd_byte *) data_start + (octets - data_start_offset);
  1081. switch (howto->size)
  1082. {
  1083. case 0:
  1084. {
  1085. char x = bfd_get_8 (abfd, data);
  1086. DOIT (x);
  1087. bfd_put_8 (abfd, x, data);
  1088. }
  1089. break;
  1090. case 1:
  1091. {
  1092. short x = bfd_get_16 (abfd, data);
  1093. DOIT (x);
  1094. bfd_put_16 (abfd, (bfd_vma) x, data);
  1095. }
  1096. break;
  1097. case 2:
  1098. {
  1099. long x = bfd_get_32 (abfd, data);
  1100. DOIT (x);
  1101. bfd_put_32 (abfd, (bfd_vma) x, data);
  1102. }
  1103. break;
  1104. case -2:
  1105. {
  1106. long x = bfd_get_32 (abfd, data);
  1107. relocation = -relocation;
  1108. DOIT (x);
  1109. bfd_put_32 (abfd, (bfd_vma) x, data);
  1110. }
  1111. break;
  1112. case 3:
  1113. /* Do nothing */
  1114. break;
  1115. case 4:
  1116. {
  1117. bfd_vma x = bfd_get_64 (abfd, data);
  1118. DOIT (x);
  1119. bfd_put_64 (abfd, x, data);
  1120. }
  1121. break;
  1122. default:
  1123. return bfd_reloc_other;
  1124. }
  1125. return flag;
  1126. }
  1127. /* This relocation routine is used by some of the backend linkers.
  1128. They do not construct asymbol or arelent structures, so there is no
  1129. reason for them to use bfd_perform_relocation. Also,
  1130. bfd_perform_relocation is so hacked up it is easier to write a new
  1131. function than to try to deal with it.
  1132. This routine does a final relocation. Whether it is useful for a
  1133. relocatable link depends upon how the object format defines
  1134. relocations.
  1135. FIXME: This routine ignores any special_function in the HOWTO,
  1136. since the existing special_function values have been written for
  1137. bfd_perform_relocation.
  1138. HOWTO is the reloc howto information.
  1139. INPUT_BFD is the BFD which the reloc applies to.
  1140. INPUT_SECTION is the section which the reloc applies to.
  1141. CONTENTS is the contents of the section.
  1142. ADDRESS is the address of the reloc within INPUT_SECTION.
  1143. VALUE is the value of the symbol the reloc refers to.
  1144. ADDEND is the addend of the reloc. */
  1145. bfd_reloc_status_type
  1146. _bfd_final_link_relocate (reloc_howto_type *howto,
  1147. bfd *input_bfd,
  1148. asection *input_section,
  1149. bfd_byte *contents,
  1150. bfd_vma address,
  1151. bfd_vma value,
  1152. bfd_vma addend)
  1153. {
  1154. bfd_vma relocation;
  1155. bfd_size_type octets = address * bfd_octets_per_byte (input_bfd);
  1156. /* Sanity check the address. */
  1157. if (octets + bfd_get_reloc_size (howto)
  1158. > bfd_get_section_limit_octets (input_bfd, input_section))
  1159. return bfd_reloc_outofrange;
  1160. /* This function assumes that we are dealing with a basic relocation
  1161. against a symbol. We want to compute the value of the symbol to
  1162. relocate to. This is just VALUE, the value of the symbol, plus
  1163. ADDEND, any addend associated with the reloc. */
  1164. relocation = value + addend;
  1165. /* If the relocation is PC relative, we want to set RELOCATION to
  1166. the distance between the symbol (currently in RELOCATION) and the
  1167. location we are relocating. Some targets (e.g., i386-aout)
  1168. arrange for the contents of the section to be the negative of the
  1169. offset of the location within the section; for such targets
  1170. pcrel_offset is FALSE. Other targets (e.g., m88kbcs or ELF)
  1171. simply leave the contents of the section as zero; for such
  1172. targets pcrel_offset is TRUE. If pcrel_offset is FALSE we do not
  1173. need to subtract out the offset of the location within the
  1174. section (which is just ADDRESS). */
  1175. if (howto->pc_relative)
  1176. {
  1177. relocation -= (input_section->output_section->vma
  1178. + input_section->output_offset);
  1179. if (howto->pcrel_offset)
  1180. relocation -= address;
  1181. }
  1182. return _bfd_relocate_contents (howto, input_bfd, relocation,
  1183. contents + address);
  1184. }
  1185. /* Relocate a given location using a given value and howto. */
  1186. bfd_reloc_status_type
  1187. _bfd_relocate_contents (reloc_howto_type *howto,
  1188. bfd *input_bfd,
  1189. bfd_vma relocation,
  1190. bfd_byte *location)
  1191. {
  1192. int size;
  1193. bfd_vma x = 0;
  1194. bfd_reloc_status_type flag;
  1195. unsigned int rightshift = howto->rightshift;
  1196. unsigned int bitpos = howto->bitpos;
  1197. /* If the size is negative, negate RELOCATION. This isn't very
  1198. general. */
  1199. if (howto->size < 0)
  1200. relocation = -relocation;
  1201. /* Get the value we are going to relocate. */
  1202. size = bfd_get_reloc_size (howto);
  1203. switch (size)
  1204. {
  1205. default:
  1206. abort ();
  1207. case 0:
  1208. return bfd_reloc_ok;
  1209. case 1:
  1210. x = bfd_get_8 (input_bfd, location);
  1211. break;
  1212. case 2:
  1213. x = bfd_get_16 (input_bfd, location);
  1214. break;
  1215. case 4:
  1216. x = bfd_get_32 (input_bfd, location);
  1217. break;
  1218. case 8:
  1219. #ifdef BFD64
  1220. x = bfd_get_64 (input_bfd, location);
  1221. #else
  1222. abort ();
  1223. #endif
  1224. break;
  1225. }
  1226. /* Check for overflow. FIXME: We may drop bits during the addition
  1227. which we don't check for. We must either check at every single
  1228. operation, which would be tedious, or we must do the computations
  1229. in a type larger than bfd_vma, which would be inefficient. */
  1230. flag = bfd_reloc_ok;
  1231. if (howto->complain_on_overflow != complain_overflow_dont)
  1232. {
  1233. bfd_vma addrmask, fieldmask, signmask, ss;
  1234. bfd_vma a, b, sum;
  1235. /* Get the values to be added together. For signed and unsigned
  1236. relocations, we assume that all values should be truncated to
  1237. the size of an address. For bitfields, all the bits matter.
  1238. See also bfd_check_overflow. */
  1239. fieldmask = N_ONES (howto->bitsize);
  1240. signmask = ~fieldmask;
  1241. addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd))
  1242. | (fieldmask << rightshift));
  1243. a = (relocation & addrmask) >> rightshift;
  1244. b = (x & howto->src_mask & addrmask) >> bitpos;
  1245. addrmask >>= rightshift;
  1246. switch (howto->complain_on_overflow)
  1247. {
  1248. case complain_overflow_signed:
  1249. /* If any sign bits are set, all sign bits must be set.
  1250. That is, A must be a valid negative address after
  1251. shifting. */
  1252. signmask = ~(fieldmask >> 1);
  1253. /* Fall thru */
  1254. case complain_overflow_bitfield:
  1255. /* Much like the signed check, but for a field one bit
  1256. wider. We allow a bitfield to represent numbers in the
  1257. range -2**n to 2**n-1, where n is the number of bits in the
  1258. field. Note that when bfd_vma is 32 bits, a 32-bit reloc
  1259. can't overflow, which is exactly what we want. */
  1260. ss = a & signmask;
  1261. if (ss != 0 && ss != (addrmask & signmask))
  1262. flag = bfd_reloc_overflow;
  1263. /* We only need this next bit of code if the sign bit of B
  1264. is below the sign bit of A. This would only happen if
  1265. SRC_MASK had fewer bits than BITSIZE. Note that if
  1266. SRC_MASK has more bits than BITSIZE, we can get into
  1267. trouble; we would need to verify that B is in range, as
  1268. we do for A above. */
  1269. ss = ((~howto->src_mask) >> 1) & howto->src_mask;
  1270. ss >>= bitpos;
  1271. /* Set all the bits above the sign bit. */
  1272. b = (b ^ ss) - ss;
  1273. /* Now we can do the addition. */
  1274. sum = a + b;
  1275. /* See if the result has the correct sign. Bits above the
  1276. sign bit are junk now; ignore them. If the sum is
  1277. positive, make sure we did not have all negative inputs;
  1278. if the sum is negative, make sure we did not have all
  1279. positive inputs. The test below looks only at the sign
  1280. bits, and it really just
  1281. SIGN (A) == SIGN (B) && SIGN (A) != SIGN (SUM)
  1282. We mask with addrmask here to explicitly allow an address
  1283. wrap-around. The Linux kernel relies on it, and it is
  1284. the only way to write assembler code which can run when
  1285. loaded at a location 0x80000000 away from the location at
  1286. which it is linked. */
  1287. if (((~(a ^ b)) & (a ^ sum)) & signmask & addrmask)
  1288. flag = bfd_reloc_overflow;
  1289. break;
  1290. case complain_overflow_unsigned:
  1291. /* Checking for an unsigned overflow is relatively easy:
  1292. trim the addresses and add, and trim the result as well.
  1293. Overflow is normally indicated when the result does not
  1294. fit in the field. However, we also need to consider the
  1295. case when, e.g., fieldmask is 0x7fffffff or smaller, an
  1296. input is 0x80000000, and bfd_vma is only 32 bits; then we
  1297. will get sum == 0, but there is an overflow, since the
  1298. inputs did not fit in the field. Instead of doing a
  1299. separate test, we can check for this by or-ing in the
  1300. operands when testing for the sum overflowing its final
  1301. field. */
  1302. sum = (a + b) & addrmask;
  1303. if ((a | b | sum) & signmask)
  1304. flag = bfd_reloc_overflow;
  1305. break;
  1306. default:
  1307. abort ();
  1308. }
  1309. }
  1310. /* Put RELOCATION in the right bits. */
  1311. relocation >>= (bfd_vma) rightshift;
  1312. relocation <<= (bfd_vma) bitpos;
  1313. /* Add RELOCATION to the right bits of X. */
  1314. x = ((x & ~howto->dst_mask)
  1315. | (((x & howto->src_mask) + relocation) & howto->dst_mask));
  1316. /* Put the relocated value back in the object file. */
  1317. switch (size)
  1318. {
  1319. default:
  1320. abort ();
  1321. case 1:
  1322. bfd_put_8 (input_bfd, x, location);
  1323. break;
  1324. case 2:
  1325. bfd_put_16 (input_bfd, x, location);
  1326. break;
  1327. case 4:
  1328. bfd_put_32 (input_bfd, x, location);
  1329. break;
  1330. case 8:
  1331. #ifdef BFD64
  1332. bfd_put_64 (input_bfd, x, location);
  1333. #else
  1334. abort ();
  1335. #endif
  1336. break;
  1337. }
  1338. return flag;
  1339. }
  1340. /* Clear a given location using a given howto, by applying a fixed relocation
  1341. value and discarding any in-place addend. This is used for fixed-up
  1342. relocations against discarded symbols, to make ignorable debug or unwind
  1343. information more obvious. */
  1344. void
  1345. _bfd_clear_contents (reloc_howto_type *howto,
  1346. bfd *input_bfd,
  1347. asection *input_section,
  1348. bfd_byte *location)
  1349. {
  1350. int size;
  1351. bfd_vma x = 0;
  1352. /* Get the value we are going to relocate. */
  1353. size = bfd_get_reloc_size (howto);
  1354. switch (size)
  1355. {
  1356. default:
  1357. abort ();
  1358. case 0:
  1359. return;
  1360. case 1:
  1361. x = bfd_get_8 (input_bfd, location);
  1362. break;
  1363. case 2:
  1364. x = bfd_get_16 (input_bfd, location);
  1365. break;
  1366. case 4:
  1367. x = bfd_get_32 (input_bfd, location);
  1368. break;
  1369. case 8:
  1370. #ifdef BFD64
  1371. x = bfd_get_64 (input_bfd, location);
  1372. #else
  1373. abort ();
  1374. #endif
  1375. break;
  1376. }
  1377. /* Zero out the unwanted bits of X. */
  1378. x &= ~howto->dst_mask;
  1379. /* For a range list, use 1 instead of 0 as placeholder. 0
  1380. would terminate the list, hiding any later entries. */
  1381. if (strcmp (bfd_get_section_name (input_bfd, input_section),
  1382. ".debug_ranges") == 0
  1383. && (howto->dst_mask & 1) != 0)
  1384. x |= 1;
  1385. /* Put the relocated value back in the object file. */
  1386. switch (size)
  1387. {
  1388. default:
  1389. case 0:
  1390. abort ();
  1391. case 1:
  1392. bfd_put_8 (input_bfd, x, location);
  1393. break;
  1394. case 2:
  1395. bfd_put_16 (input_bfd, x, location);
  1396. break;
  1397. case 4:
  1398. bfd_put_32 (input_bfd, x, location);
  1399. break;
  1400. case 8:
  1401. #ifdef BFD64
  1402. bfd_put_64 (input_bfd, x, location);
  1403. #else
  1404. abort ();
  1405. #endif
  1406. break;
  1407. }
  1408. }
  1409. /*
  1410. DOCDD
  1411. INODE
  1412. howto manager, , typedef arelent, Relocations
  1413. SUBSECTION
  1414. The howto manager
  1415. When an application wants to create a relocation, but doesn't
  1416. know what the target machine might call it, it can find out by
  1417. using this bit of code.
  1418. */
  1419. /*
  1420. TYPEDEF
  1421. bfd_reloc_code_type
  1422. DESCRIPTION
  1423. The insides of a reloc code. The idea is that, eventually, there
  1424. will be one enumerator for every type of relocation we ever do.
  1425. Pass one of these values to <<bfd_reloc_type_lookup>>, and it'll
  1426. return a howto pointer.
  1427. This does mean that the application must determine the correct
  1428. enumerator value; you can't get a howto pointer from a random set
  1429. of attributes.
  1430. SENUM
  1431. bfd_reloc_code_real
  1432. ENUM
  1433. BFD_RELOC_64
  1434. ENUMX
  1435. BFD_RELOC_32
  1436. ENUMX
  1437. BFD_RELOC_26
  1438. ENUMX
  1439. BFD_RELOC_24
  1440. ENUMX
  1441. BFD_RELOC_16
  1442. ENUMX
  1443. BFD_RELOC_14
  1444. ENUMX
  1445. BFD_RELOC_8
  1446. ENUMDOC
  1447. Basic absolute relocations of N bits.
  1448. ENUM
  1449. BFD_RELOC_64_PCREL
  1450. ENUMX
  1451. BFD_RELOC_32_PCREL
  1452. ENUMX
  1453. BFD_RELOC_24_PCREL
  1454. ENUMX
  1455. BFD_RELOC_16_PCREL
  1456. ENUMX
  1457. BFD_RELOC_12_PCREL
  1458. ENUMX
  1459. BFD_RELOC_8_PCREL
  1460. ENUMDOC
  1461. PC-relative relocations. Sometimes these are relative to the address
  1462. of the relocation itself; sometimes they are relative to the start of
  1463. the section containing the relocation. It depends on the specific target.
  1464. The 24-bit relocation is used in some Intel 960 configurations.
  1465. ENUM
  1466. BFD_RELOC_32_SECREL
  1467. ENUMDOC
  1468. Section relative relocations. Some targets need this for DWARF2.
  1469. ENUM
  1470. BFD_RELOC_32_GOT_PCREL
  1471. ENUMX
  1472. BFD_RELOC_16_GOT_PCREL
  1473. ENUMX
  1474. BFD_RELOC_8_GOT_PCREL
  1475. ENUMX
  1476. BFD_RELOC_32_GOTOFF
  1477. ENUMX
  1478. BFD_RELOC_16_GOTOFF
  1479. ENUMX
  1480. BFD_RELOC_LO16_GOTOFF
  1481. ENUMX
  1482. BFD_RELOC_HI16_GOTOFF
  1483. ENUMX
  1484. BFD_RELOC_HI16_S_GOTOFF
  1485. ENUMX
  1486. BFD_RELOC_8_GOTOFF
  1487. ENUMX
  1488. BFD_RELOC_64_PLT_PCREL
  1489. ENUMX
  1490. BFD_RELOC_32_PLT_PCREL
  1491. ENUMX
  1492. BFD_RELOC_24_PLT_PCREL
  1493. ENUMX
  1494. BFD_RELOC_16_PLT_PCREL
  1495. ENUMX
  1496. BFD_RELOC_8_PLT_PCREL
  1497. ENUMX
  1498. BFD_RELOC_64_PLTOFF
  1499. ENUMX
  1500. BFD_RELOC_32_PLTOFF
  1501. ENUMX
  1502. BFD_RELOC_16_PLTOFF
  1503. ENUMX
  1504. BFD_RELOC_LO16_PLTOFF
  1505. ENUMX
  1506. BFD_RELOC_HI16_PLTOFF
  1507. ENUMX
  1508. BFD_RELOC_HI16_S_PLTOFF
  1509. ENUMX
  1510. BFD_RELOC_8_PLTOFF
  1511. ENUMDOC
  1512. For ELF.
  1513. ENUM
  1514. BFD_RELOC_SIZE32
  1515. ENUMX
  1516. BFD_RELOC_SIZE64
  1517. ENUMDOC
  1518. Size relocations.
  1519. ENUM
  1520. BFD_RELOC_68K_GLOB_DAT
  1521. ENUMX
  1522. BFD_RELOC_68K_JMP_SLOT
  1523. ENUMX
  1524. BFD_RELOC_68K_RELATIVE
  1525. ENUMX
  1526. BFD_RELOC_68K_TLS_GD32
  1527. ENUMX
  1528. BFD_RELOC_68K_TLS_GD16
  1529. ENUMX
  1530. BFD_RELOC_68K_TLS_GD8
  1531. ENUMX
  1532. BFD_RELOC_68K_TLS_LDM32
  1533. ENUMX
  1534. BFD_RELOC_68K_TLS_LDM16
  1535. ENUMX
  1536. BFD_RELOC_68K_TLS_LDM8
  1537. ENUMX
  1538. BFD_RELOC_68K_TLS_LDO32
  1539. ENUMX
  1540. BFD_RELOC_68K_TLS_LDO16
  1541. ENUMX
  1542. BFD_RELOC_68K_TLS_LDO8
  1543. ENUMX
  1544. BFD_RELOC_68K_TLS_IE32
  1545. ENUMX
  1546. BFD_RELOC_68K_TLS_IE16
  1547. ENUMX
  1548. BFD_RELOC_68K_TLS_IE8
  1549. ENUMX
  1550. BFD_RELOC_68K_TLS_LE32
  1551. ENUMX
  1552. BFD_RELOC_68K_TLS_LE16
  1553. ENUMX
  1554. BFD_RELOC_68K_TLS_LE8
  1555. ENUMDOC
  1556. Relocations used by 68K ELF.
  1557. ENUM
  1558. BFD_RELOC_32_BASEREL
  1559. ENUMX
  1560. BFD_RELOC_16_BASEREL
  1561. ENUMX
  1562. BFD_RELOC_LO16_BASEREL
  1563. ENUMX
  1564. BFD_RELOC_HI16_BASEREL
  1565. ENUMX
  1566. BFD_RELOC_HI16_S_BASEREL
  1567. ENUMX
  1568. BFD_RELOC_8_BASEREL
  1569. ENUMX
  1570. BFD_RELOC_RVA
  1571. ENUMDOC
  1572. Linkage-table relative.
  1573. ENUM
  1574. BFD_RELOC_8_FFnn
  1575. ENUMDOC
  1576. Absolute 8-bit relocation, but used to form an address like 0xFFnn.
  1577. ENUM
  1578. BFD_RELOC_32_PCREL_S2
  1579. ENUMX
  1580. BFD_RELOC_16_PCREL_S2
  1581. ENUMX
  1582. BFD_RELOC_23_PCREL_S2
  1583. ENUMDOC
  1584. These PC-relative relocations are stored as word displacements --
  1585. i.e., byte displacements shifted right two bits. The 30-bit word
  1586. displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
  1587. SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
  1588. signed 16-bit displacement is used on the MIPS, and the 23-bit
  1589. displacement is used on the Alpha.
  1590. ENUM
  1591. BFD_RELOC_HI22
  1592. ENUMX
  1593. BFD_RELOC_LO10
  1594. ENUMDOC
  1595. High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
  1596. the target word. These are used on the SPARC.
  1597. ENUM
  1598. BFD_RELOC_GPREL16
  1599. ENUMX
  1600. BFD_RELOC_GPREL32
  1601. ENUMDOC
  1602. For systems that allocate a Global Pointer register, these are
  1603. displacements off that register. These relocation types are
  1604. handled specially, because the value the register will have is
  1605. decided relatively late.
  1606. ENUM
  1607. BFD_RELOC_I960_CALLJ
  1608. ENUMDOC
  1609. Reloc types used for i960/b.out.
  1610. ENUM
  1611. BFD_RELOC_NONE
  1612. ENUMX
  1613. BFD_RELOC_SPARC_WDISP22
  1614. ENUMX
  1615. BFD_RELOC_SPARC22
  1616. ENUMX
  1617. BFD_RELOC_SPARC13
  1618. ENUMX
  1619. BFD_RELOC_SPARC_GOT10
  1620. ENUMX
  1621. BFD_RELOC_SPARC_GOT13
  1622. ENUMX
  1623. BFD_RELOC_SPARC_GOT22
  1624. ENUMX
  1625. BFD_RELOC_SPARC_PC10
  1626. ENUMX
  1627. BFD_RELOC_SPARC_PC22
  1628. ENUMX
  1629. BFD_RELOC_SPARC_WPLT30
  1630. ENUMX
  1631. BFD_RELOC_SPARC_COPY
  1632. ENUMX
  1633. BFD_RELOC_SPARC_GLOB_DAT
  1634. ENUMX
  1635. BFD_RELOC_SPARC_JMP_SLOT
  1636. ENUMX
  1637. BFD_RELOC_SPARC_RELATIVE
  1638. ENUMX
  1639. BFD_RELOC_SPARC_UA16
  1640. ENUMX
  1641. BFD_RELOC_SPARC_UA32
  1642. ENUMX
  1643. BFD_RELOC_SPARC_UA64
  1644. ENUMX
  1645. BFD_RELOC_SPARC_GOTDATA_HIX22
  1646. ENUMX
  1647. BFD_RELOC_SPARC_GOTDATA_LOX10
  1648. ENUMX
  1649. BFD_RELOC_SPARC_GOTDATA_OP_HIX22
  1650. ENUMX
  1651. BFD_RELOC_SPARC_GOTDATA_OP_LOX10
  1652. ENUMX
  1653. BFD_RELOC_SPARC_GOTDATA_OP
  1654. ENUMX
  1655. BFD_RELOC_SPARC_JMP_IREL
  1656. ENUMX
  1657. BFD_RELOC_SPARC_IRELATIVE
  1658. ENUMDOC
  1659. SPARC ELF relocations. There is probably some overlap with other
  1660. relocation types already defined.
  1661. ENUM
  1662. BFD_RELOC_SPARC_BASE13
  1663. ENUMX
  1664. BFD_RELOC_SPARC_BASE22
  1665. ENUMDOC
  1666. I think these are specific to SPARC a.out (e.g., Sun 4).
  1667. ENUMEQ
  1668. BFD_RELOC_SPARC_64
  1669. BFD_RELOC_64
  1670. ENUMX
  1671. BFD_RELOC_SPARC_10
  1672. ENUMX
  1673. BFD_RELOC_SPARC_11
  1674. ENUMX
  1675. BFD_RELOC_SPARC_OLO10
  1676. ENUMX
  1677. BFD_RELOC_SPARC_HH22
  1678. ENUMX
  1679. BFD_RELOC_SPARC_HM10
  1680. ENUMX
  1681. BFD_RELOC_SPARC_LM22
  1682. ENUMX
  1683. BFD_RELOC_SPARC_PC_HH22
  1684. ENUMX
  1685. BFD_RELOC_SPARC_PC_HM10
  1686. ENUMX
  1687. BFD_RELOC_SPARC_PC_LM22
  1688. ENUMX
  1689. BFD_RELOC_SPARC_WDISP16
  1690. ENUMX
  1691. BFD_RELOC_SPARC_WDISP19
  1692. ENUMX
  1693. BFD_RELOC_SPARC_7
  1694. ENUMX
  1695. BFD_RELOC_SPARC_6
  1696. ENUMX
  1697. BFD_RELOC_SPARC_5
  1698. ENUMEQX
  1699. BFD_RELOC_SPARC_DISP64
  1700. BFD_RELOC_64_PCREL
  1701. ENUMX
  1702. BFD_RELOC_SPARC_PLT32
  1703. ENUMX
  1704. BFD_RELOC_SPARC_PLT64
  1705. ENUMX
  1706. BFD_RELOC_SPARC_HIX22
  1707. ENUMX
  1708. BFD_RELOC_SPARC_LOX10
  1709. ENUMX
  1710. BFD_RELOC_SPARC_H44
  1711. ENUMX
  1712. BFD_RELOC_SPARC_M44
  1713. ENUMX
  1714. BFD_RELOC_SPARC_L44
  1715. ENUMX
  1716. BFD_RELOC_SPARC_REGISTER
  1717. ENUMX
  1718. BFD_RELOC_SPARC_H34
  1719. ENUMX
  1720. BFD_RELOC_SPARC_SIZE32
  1721. ENUMX
  1722. BFD_RELOC_SPARC_SIZE64
  1723. ENUMX
  1724. BFD_RELOC_SPARC_WDISP10
  1725. ENUMDOC
  1726. SPARC64 relocations
  1727. ENUM
  1728. BFD_RELOC_SPARC_REV32
  1729. ENUMDOC
  1730. SPARC little endian relocation
  1731. ENUM
  1732. BFD_RELOC_SPARC_TLS_GD_HI22
  1733. ENUMX
  1734. BFD_RELOC_SPARC_TLS_GD_LO10
  1735. ENUMX
  1736. BFD_RELOC_SPARC_TLS_GD_ADD
  1737. ENUMX
  1738. BFD_RELOC_SPARC_TLS_GD_CALL
  1739. ENUMX
  1740. BFD_RELOC_SPARC_TLS_LDM_HI22
  1741. ENUMX
  1742. BFD_RELOC_SPARC_TLS_LDM_LO10
  1743. ENUMX
  1744. BFD_RELOC_SPARC_TLS_LDM_ADD
  1745. ENUMX
  1746. BFD_RELOC_SPARC_TLS_LDM_CALL
  1747. ENUMX
  1748. BFD_RELOC_SPARC_TLS_LDO_HIX22
  1749. ENUMX
  1750. BFD_RELOC_SPARC_TLS_LDO_LOX10
  1751. ENUMX
  1752. BFD_RELOC_SPARC_TLS_LDO_ADD
  1753. ENUMX
  1754. BFD_RELOC_SPARC_TLS_IE_HI22
  1755. ENUMX
  1756. BFD_RELOC_SPARC_TLS_IE_LO10
  1757. ENUMX
  1758. BFD_RELOC_SPARC_TLS_IE_LD
  1759. ENUMX
  1760. BFD_RELOC_SPARC_TLS_IE_LDX
  1761. ENUMX
  1762. BFD_RELOC_SPARC_TLS_IE_ADD
  1763. ENUMX
  1764. BFD_RELOC_SPARC_TLS_LE_HIX22
  1765. ENUMX
  1766. BFD_RELOC_SPARC_TLS_LE_LOX10
  1767. ENUMX
  1768. BFD_RELOC_SPARC_TLS_DTPMOD32
  1769. ENUMX
  1770. BFD_RELOC_SPARC_TLS_DTPMOD64
  1771. ENUMX
  1772. BFD_RELOC_SPARC_TLS_DTPOFF32
  1773. ENUMX
  1774. BFD_RELOC_SPARC_TLS_DTPOFF64
  1775. ENUMX
  1776. BFD_RELOC_SPARC_TLS_TPOFF32
  1777. ENUMX
  1778. BFD_RELOC_SPARC_TLS_TPOFF64
  1779. ENUMDOC
  1780. SPARC TLS relocations
  1781. ENUM
  1782. BFD_RELOC_SPU_IMM7
  1783. ENUMX
  1784. BFD_RELOC_SPU_IMM8
  1785. ENUMX
  1786. BFD_RELOC_SPU_IMM10
  1787. ENUMX
  1788. BFD_RELOC_SPU_IMM10W
  1789. ENUMX
  1790. BFD_RELOC_SPU_IMM16
  1791. ENUMX
  1792. BFD_RELOC_SPU_IMM16W
  1793. ENUMX
  1794. BFD_RELOC_SPU_IMM18
  1795. ENUMX
  1796. BFD_RELOC_SPU_PCREL9a
  1797. ENUMX
  1798. BFD_RELOC_SPU_PCREL9b
  1799. ENUMX
  1800. BFD_RELOC_SPU_PCREL16
  1801. ENUMX
  1802. BFD_RELOC_SPU_LO16
  1803. ENUMX
  1804. BFD_RELOC_SPU_HI16
  1805. ENUMX
  1806. BFD_RELOC_SPU_PPU32
  1807. ENUMX
  1808. BFD_RELOC_SPU_PPU64
  1809. ENUMX
  1810. BFD_RELOC_SPU_ADD_PIC
  1811. ENUMDOC
  1812. SPU Relocations.
  1813. ENUM
  1814. BFD_RELOC_ALPHA_GPDISP_HI16
  1815. ENUMDOC
  1816. Alpha ECOFF and ELF relocations. Some of these treat the symbol or
  1817. "addend" in some special way.
  1818. For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
  1819. writing; when reading, it will be the absolute section symbol. The
  1820. addend is the displacement in bytes of the "lda" instruction from
  1821. the "ldah" instruction (which is at the address of this reloc).
  1822. ENUM
  1823. BFD_RELOC_ALPHA_GPDISP_LO16
  1824. ENUMDOC
  1825. For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
  1826. with GPDISP_HI16 relocs. The addend is ignored when writing the
  1827. relocations out, and is filled in with the file's GP value on
  1828. reading, for convenience.
  1829. ENUM
  1830. BFD_RELOC_ALPHA_GPDISP
  1831. ENUMDOC
  1832. The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
  1833. relocation except that there is no accompanying GPDISP_LO16
  1834. relocation.
  1835. ENUM
  1836. BFD_RELOC_ALPHA_LITERAL
  1837. ENUMX
  1838. BFD_RELOC_ALPHA_ELF_LITERAL
  1839. ENUMX
  1840. BFD_RELOC_ALPHA_LITUSE
  1841. ENUMDOC
  1842. The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
  1843. the assembler turns it into a LDQ instruction to load the address of
  1844. the symbol, and then fills in a register in the real instruction.
  1845. The LITERAL reloc, at the LDQ instruction, refers to the .lita
  1846. section symbol. The addend is ignored when writing, but is filled
  1847. in with the file's GP value on reading, for convenience, as with the
  1848. GPDISP_LO16 reloc.
  1849. The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
  1850. It should refer to the symbol to be referenced, as with 16_GOTOFF,
  1851. but it generates output not based on the position within the .got
  1852. section, but relative to the GP value chosen for the file during the
  1853. final link stage.
  1854. The LITUSE reloc, on the instruction using the loaded address, gives
  1855. information to the linker that it might be able to use to optimize
  1856. away some literal section references. The symbol is ignored (read
  1857. as the absolute section symbol), and the "addend" indicates the type
  1858. of instruction using the register:
  1859. 1 - "memory" fmt insn
  1860. 2 - byte-manipulation (byte offset reg)
  1861. 3 - jsr (target of branch)
  1862. ENUM
  1863. BFD_RELOC_ALPHA_HINT
  1864. ENUMDOC
  1865. The HINT relocation indicates a value that should be filled into the
  1866. "hint" field of a jmp/jsr/ret instruction, for possible branch-
  1867. prediction logic which may be provided on some processors.
  1868. ENUM
  1869. BFD_RELOC_ALPHA_LINKAGE
  1870. ENUMDOC
  1871. The LINKAGE relocation outputs a linkage pair in the object file,
  1872. which is filled by the linker.
  1873. ENUM
  1874. BFD_RELOC_ALPHA_CODEADDR
  1875. ENUMDOC
  1876. The CODEADDR relocation outputs a STO_CA in the object file,
  1877. which is filled by the linker.
  1878. ENUM
  1879. BFD_RELOC_ALPHA_GPREL_HI16
  1880. ENUMX
  1881. BFD_RELOC_ALPHA_GPREL_LO16
  1882. ENUMDOC
  1883. The GPREL_HI/LO relocations together form a 32-bit offset from the
  1884. GP register.
  1885. ENUM
  1886. BFD_RELOC_ALPHA_BRSGP
  1887. ENUMDOC
  1888. Like BFD_RELOC_23_PCREL_S2, except that the source and target must
  1889. share a common GP, and the target address is adjusted for
  1890. STO_ALPHA_STD_GPLOAD.
  1891. ENUM
  1892. BFD_RELOC_ALPHA_NOP
  1893. ENUMDOC
  1894. The NOP relocation outputs a NOP if the longword displacement
  1895. between two procedure entry points is < 2^21.
  1896. ENUM
  1897. BFD_RELOC_ALPHA_BSR
  1898. ENUMDOC
  1899. The BSR relocation outputs a BSR if the longword displacement
  1900. between two procedure entry points is < 2^21.
  1901. ENUM
  1902. BFD_RELOC_ALPHA_LDA
  1903. ENUMDOC
  1904. The LDA relocation outputs a LDA if the longword displacement
  1905. between two procedure entry points is < 2^16.
  1906. ENUM
  1907. BFD_RELOC_ALPHA_BOH
  1908. ENUMDOC
  1909. The BOH relocation outputs a BSR if the longword displacement
  1910. between two procedure entry points is < 2^21, or else a hint.
  1911. ENUM
  1912. BFD_RELOC_ALPHA_TLSGD
  1913. ENUMX
  1914. BFD_RELOC_ALPHA_TLSLDM
  1915. ENUMX
  1916. BFD_RELOC_ALPHA_DTPMOD64
  1917. ENUMX
  1918. BFD_RELOC_ALPHA_GOTDTPREL16
  1919. ENUMX
  1920. BFD_RELOC_ALPHA_DTPREL64
  1921. ENUMX
  1922. BFD_RELOC_ALPHA_DTPREL_HI16
  1923. ENUMX
  1924. BFD_RELOC_ALPHA_DTPREL_LO16
  1925. ENUMX
  1926. BFD_RELOC_ALPHA_DTPREL16
  1927. ENUMX
  1928. BFD_RELOC_ALPHA_GOTTPREL16
  1929. ENUMX
  1930. BFD_RELOC_ALPHA_TPREL64
  1931. ENUMX
  1932. BFD_RELOC_ALPHA_TPREL_HI16
  1933. ENUMX
  1934. BFD_RELOC_ALPHA_TPREL_LO16
  1935. ENUMX
  1936. BFD_RELOC_ALPHA_TPREL16
  1937. ENUMDOC
  1938. Alpha thread-local storage relocations.
  1939. ENUM
  1940. BFD_RELOC_MIPS_JMP
  1941. ENUMX
  1942. BFD_RELOC_MICROMIPS_JMP
  1943. ENUMDOC
  1944. The MIPS jump instruction.
  1945. ENUM
  1946. BFD_RELOC_MIPS16_JMP
  1947. ENUMDOC
  1948. The MIPS16 jump instruction.
  1949. ENUM
  1950. BFD_RELOC_MIPS16_GPREL
  1951. ENUMDOC
  1952. MIPS16 GP relative reloc.
  1953. ENUM
  1954. BFD_RELOC_HI16
  1955. ENUMDOC
  1956. High 16 bits of 32-bit value; simple reloc.
  1957. ENUM
  1958. BFD_RELOC_HI16_S
  1959. ENUMDOC
  1960. High 16 bits of 32-bit value but the low 16 bits will be sign
  1961. extended and added to form the final result. If the low 16
  1962. bits form a negative number, we need to add one to the high value
  1963. to compensate for the borrow when the low bits are added.
  1964. ENUM
  1965. BFD_RELOC_LO16
  1966. ENUMDOC
  1967. Low 16 bits.
  1968. ENUM
  1969. BFD_RELOC_HI16_PCREL
  1970. ENUMDOC
  1971. High 16 bits of 32-bit pc-relative value
  1972. ENUM
  1973. BFD_RELOC_HI16_S_PCREL
  1974. ENUMDOC
  1975. High 16 bits of 32-bit pc-relative value, adjusted
  1976. ENUM
  1977. BFD_RELOC_LO16_PCREL
  1978. ENUMDOC
  1979. Low 16 bits of pc-relative value
  1980. ENUM
  1981. BFD_RELOC_MIPS16_GOT16
  1982. ENUMX
  1983. BFD_RELOC_MIPS16_CALL16
  1984. ENUMDOC
  1985. Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
  1986. 16-bit immediate fields
  1987. ENUM
  1988. BFD_RELOC_MIPS16_HI16
  1989. ENUMDOC
  1990. MIPS16 high 16 bits of 32-bit value.
  1991. ENUM
  1992. BFD_RELOC_MIPS16_HI16_S
  1993. ENUMDOC
  1994. MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
  1995. extended and added to form the final result. If the low 16
  1996. bits form a negative number, we need to add one to the high value
  1997. to compensate for the borrow when the low bits are added.
  1998. ENUM
  1999. BFD_RELOC_MIPS16_LO16
  2000. ENUMDOC
  2001. MIPS16 low 16 bits.
  2002. ENUM
  2003. BFD_RELOC_MIPS16_TLS_GD
  2004. ENUMX
  2005. BFD_RELOC_MIPS16_TLS_LDM
  2006. ENUMX
  2007. BFD_RELOC_MIPS16_TLS_DTPREL_HI16
  2008. ENUMX
  2009. BFD_RELOC_MIPS16_TLS_DTPREL_LO16
  2010. ENUMX
  2011. BFD_RELOC_MIPS16_TLS_GOTTPREL
  2012. ENUMX
  2013. BFD_RELOC_MIPS16_TLS_TPREL_HI16
  2014. ENUMX
  2015. BFD_RELOC_MIPS16_TLS_TPREL_LO16
  2016. ENUMDOC
  2017. MIPS16 TLS relocations
  2018. ENUM
  2019. BFD_RELOC_MIPS_LITERAL
  2020. ENUMX
  2021. BFD_RELOC_MICROMIPS_LITERAL
  2022. ENUMDOC
  2023. Relocation against a MIPS literal section.
  2024. ENUM
  2025. BFD_RELOC_MICROMIPS_7_PCREL_S1
  2026. ENUMX
  2027. BFD_RELOC_MICROMIPS_10_PCREL_S1
  2028. ENUMX
  2029. BFD_RELOC_MICROMIPS_16_PCREL_S1
  2030. ENUMDOC
  2031. microMIPS PC-relative relocations.
  2032. ENUM
  2033. BFD_RELOC_MIPS_21_PCREL_S2
  2034. ENUMX
  2035. BFD_RELOC_MIPS_26_PCREL_S2
  2036. ENUMX
  2037. BFD_RELOC_MIPS_18_PCREL_S3
  2038. ENUMX
  2039. BFD_RELOC_MIPS_19_PCREL_S2
  2040. ENUMDOC
  2041. MIPS PC-relative relocations.
  2042. ENUM
  2043. BFD_RELOC_MICROMIPS_GPREL16
  2044. ENUMX
  2045. BFD_RELOC_MICROMIPS_HI16
  2046. ENUMX
  2047. BFD_RELOC_MICROMIPS_HI16_S
  2048. ENUMX
  2049. BFD_RELOC_MICROMIPS_LO16
  2050. ENUMDOC
  2051. microMIPS versions of generic BFD relocs.
  2052. ENUM
  2053. BFD_RELOC_MIPS_GOT16
  2054. ENUMX
  2055. BFD_RELOC_MICROMIPS_GOT16
  2056. ENUMX
  2057. BFD_RELOC_MIPS_CALL16
  2058. ENUMX
  2059. BFD_RELOC_MICROMIPS_CALL16
  2060. ENUMX
  2061. BFD_RELOC_MIPS_GOT_HI16
  2062. ENUMX
  2063. BFD_RELOC_MICROMIPS_GOT_HI16
  2064. ENUMX
  2065. BFD_RELOC_MIPS_GOT_LO16
  2066. ENUMX
  2067. BFD_RELOC_MICROMIPS_GOT_LO16
  2068. ENUMX
  2069. BFD_RELOC_MIPS_CALL_HI16
  2070. ENUMX
  2071. BFD_RELOC_MICROMIPS_CALL_HI16
  2072. ENUMX
  2073. BFD_RELOC_MIPS_CALL_LO16
  2074. ENUMX
  2075. BFD_RELOC_MICROMIPS_CALL_LO16
  2076. ENUMX
  2077. BFD_RELOC_MIPS_SUB
  2078. ENUMX
  2079. BFD_RELOC_MICROMIPS_SUB
  2080. ENUMX
  2081. BFD_RELOC_MIPS_GOT_PAGE
  2082. ENUMX
  2083. BFD_RELOC_MICROMIPS_GOT_PAGE
  2084. ENUMX
  2085. BFD_RELOC_MIPS_GOT_OFST
  2086. ENUMX
  2087. BFD_RELOC_MICROMIPS_GOT_OFST
  2088. ENUMX
  2089. BFD_RELOC_MIPS_GOT_DISP
  2090. ENUMX
  2091. BFD_RELOC_MICROMIPS_GOT_DISP
  2092. ENUMX
  2093. BFD_RELOC_MIPS_SHIFT5
  2094. ENUMX
  2095. BFD_RELOC_MIPS_SHIFT6
  2096. ENUMX
  2097. BFD_RELOC_MIPS_INSERT_A
  2098. ENUMX
  2099. BFD_RELOC_MIPS_INSERT_B
  2100. ENUMX
  2101. BFD_RELOC_MIPS_DELETE
  2102. ENUMX
  2103. BFD_RELOC_MIPS_HIGHEST
  2104. ENUMX
  2105. BFD_RELOC_MICROMIPS_HIGHEST
  2106. ENUMX
  2107. BFD_RELOC_MIPS_HIGHER
  2108. ENUMX
  2109. BFD_RELOC_MICROMIPS_HIGHER
  2110. ENUMX
  2111. BFD_RELOC_MIPS_SCN_DISP
  2112. ENUMX
  2113. BFD_RELOC_MICROMIPS_SCN_DISP
  2114. ENUMX
  2115. BFD_RELOC_MIPS_REL16
  2116. ENUMX
  2117. BFD_RELOC_MIPS_RELGOT
  2118. ENUMX
  2119. BFD_RELOC_MIPS_JALR
  2120. ENUMX
  2121. BFD_RELOC_MICROMIPS_JALR
  2122. ENUMX
  2123. BFD_RELOC_MIPS_TLS_DTPMOD32
  2124. ENUMX
  2125. BFD_RELOC_MIPS_TLS_DTPREL32
  2126. ENUMX
  2127. BFD_RELOC_MIPS_TLS_DTPMOD64
  2128. ENUMX
  2129. BFD_RELOC_MIPS_TLS_DTPREL64
  2130. ENUMX
  2131. BFD_RELOC_MIPS_TLS_GD
  2132. ENUMX
  2133. BFD_RELOC_MICROMIPS_TLS_GD
  2134. ENUMX
  2135. BFD_RELOC_MIPS_TLS_LDM
  2136. ENUMX
  2137. BFD_RELOC_MICROMIPS_TLS_LDM
  2138. ENUMX
  2139. BFD_RELOC_MIPS_TLS_DTPREL_HI16
  2140. ENUMX
  2141. BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16
  2142. ENUMX
  2143. BFD_RELOC_MIPS_TLS_DTPREL_LO16
  2144. ENUMX
  2145. BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16
  2146. ENUMX
  2147. BFD_RELOC_MIPS_TLS_GOTTPREL
  2148. ENUMX
  2149. BFD_RELOC_MICROMIPS_TLS_GOTTPREL
  2150. ENUMX
  2151. BFD_RELOC_MIPS_TLS_TPREL32
  2152. ENUMX
  2153. BFD_RELOC_MIPS_TLS_TPREL64
  2154. ENUMX
  2155. BFD_RELOC_MIPS_TLS_TPREL_HI16
  2156. ENUMX
  2157. BFD_RELOC_MICROMIPS_TLS_TPREL_HI16
  2158. ENUMX
  2159. BFD_RELOC_MIPS_TLS_TPREL_LO16
  2160. ENUMX
  2161. BFD_RELOC_MICROMIPS_TLS_TPREL_LO16
  2162. ENUMX
  2163. BFD_RELOC_MIPS_EH
  2164. ENUMDOC
  2165. MIPS ELF relocations.
  2166. COMMENT
  2167. ENUM
  2168. BFD_RELOC_MIPS_COPY
  2169. ENUMX
  2170. BFD_RELOC_MIPS_JUMP_SLOT
  2171. ENUMDOC
  2172. MIPS ELF relocations (VxWorks and PLT extensions).
  2173. COMMENT
  2174. ENUM
  2175. BFD_RELOC_MOXIE_10_PCREL
  2176. ENUMDOC
  2177. Moxie ELF relocations.
  2178. COMMENT
  2179. ENUM
  2180. BFD_RELOC_FT32_10
  2181. ENUMX
  2182. BFD_RELOC_FT32_20
  2183. ENUMX
  2184. BFD_RELOC_FT32_17
  2185. ENUMX
  2186. BFD_RELOC_FT32_18
  2187. ENUMDOC
  2188. FT32 ELF relocations.
  2189. COMMENT
  2190. ENUM
  2191. BFD_RELOC_FRV_LABEL16
  2192. ENUMX
  2193. BFD_RELOC_FRV_LABEL24
  2194. ENUMX
  2195. BFD_RELOC_FRV_LO16
  2196. ENUMX
  2197. BFD_RELOC_FRV_HI16
  2198. ENUMX
  2199. BFD_RELOC_FRV_GPREL12
  2200. ENUMX
  2201. BFD_RELOC_FRV_GPRELU12
  2202. ENUMX
  2203. BFD_RELOC_FRV_GPREL32
  2204. ENUMX
  2205. BFD_RELOC_FRV_GPRELHI
  2206. ENUMX
  2207. BFD_RELOC_FRV_GPRELLO
  2208. ENUMX
  2209. BFD_RELOC_FRV_GOT12
  2210. ENUMX
  2211. BFD_RELOC_FRV_GOTHI
  2212. ENUMX
  2213. BFD_RELOC_FRV_GOTLO
  2214. ENUMX
  2215. BFD_RELOC_FRV_FUNCDESC
  2216. ENUMX
  2217. BFD_RELOC_FRV_FUNCDESC_GOT12
  2218. ENUMX
  2219. BFD_RELOC_FRV_FUNCDESC_GOTHI
  2220. ENUMX
  2221. BFD_RELOC_FRV_FUNCDESC_GOTLO
  2222. ENUMX
  2223. BFD_RELOC_FRV_FUNCDESC_VALUE
  2224. ENUMX
  2225. BFD_RELOC_FRV_FUNCDESC_GOTOFF12
  2226. ENUMX
  2227. BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
  2228. ENUMX
  2229. BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
  2230. ENUMX
  2231. BFD_RELOC_FRV_GOTOFF12
  2232. ENUMX
  2233. BFD_RELOC_FRV_GOTOFFHI
  2234. ENUMX
  2235. BFD_RELOC_FRV_GOTOFFLO
  2236. ENUMX
  2237. BFD_RELOC_FRV_GETTLSOFF
  2238. ENUMX
  2239. BFD_RELOC_FRV_TLSDESC_VALUE
  2240. ENUMX
  2241. BFD_RELOC_FRV_GOTTLSDESC12
  2242. ENUMX
  2243. BFD_RELOC_FRV_GOTTLSDESCHI
  2244. ENUMX
  2245. BFD_RELOC_FRV_GOTTLSDESCLO
  2246. ENUMX
  2247. BFD_RELOC_FRV_TLSMOFF12
  2248. ENUMX
  2249. BFD_RELOC_FRV_TLSMOFFHI
  2250. ENUMX
  2251. BFD_RELOC_FRV_TLSMOFFLO
  2252. ENUMX
  2253. BFD_RELOC_FRV_GOTTLSOFF12
  2254. ENUMX
  2255. BFD_RELOC_FRV_GOTTLSOFFHI
  2256. ENUMX
  2257. BFD_RELOC_FRV_GOTTLSOFFLO
  2258. ENUMX
  2259. BFD_RELOC_FRV_TLSOFF
  2260. ENUMX
  2261. BFD_RELOC_FRV_TLSDESC_RELAX
  2262. ENUMX
  2263. BFD_RELOC_FRV_GETTLSOFF_RELAX
  2264. ENUMX
  2265. BFD_RELOC_FRV_TLSOFF_RELAX
  2266. ENUMX
  2267. BFD_RELOC_FRV_TLSMOFF
  2268. ENUMDOC
  2269. Fujitsu Frv Relocations.
  2270. COMMENT
  2271. ENUM
  2272. BFD_RELOC_MN10300_GOTOFF24
  2273. ENUMDOC
  2274. This is a 24bit GOT-relative reloc for the mn10300.
  2275. ENUM
  2276. BFD_RELOC_MN10300_GOT32
  2277. ENUMDOC
  2278. This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
  2279. in the instruction.
  2280. ENUM
  2281. BFD_RELOC_MN10300_GOT24
  2282. ENUMDOC
  2283. This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
  2284. in the instruction.
  2285. ENUM
  2286. BFD_RELOC_MN10300_GOT16
  2287. ENUMDOC
  2288. This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
  2289. in the instruction.
  2290. ENUM
  2291. BFD_RELOC_MN10300_COPY
  2292. ENUMDOC
  2293. Copy symbol at runtime.
  2294. ENUM
  2295. BFD_RELOC_MN10300_GLOB_DAT
  2296. ENUMDOC
  2297. Create GOT entry.
  2298. ENUM
  2299. BFD_RELOC_MN10300_JMP_SLOT
  2300. ENUMDOC
  2301. Create PLT entry.
  2302. ENUM
  2303. BFD_RELOC_MN10300_RELATIVE
  2304. ENUMDOC
  2305. Adjust by program base.
  2306. ENUM
  2307. BFD_RELOC_MN10300_SYM_DIFF
  2308. ENUMDOC
  2309. Together with another reloc targeted at the same location,
  2310. allows for a value that is the difference of two symbols
  2311. in the same section.
  2312. ENUM
  2313. BFD_RELOC_MN10300_ALIGN
  2314. ENUMDOC
  2315. The addend of this reloc is an alignment power that must
  2316. be honoured at the offset's location, regardless of linker
  2317. relaxation.
  2318. ENUM
  2319. BFD_RELOC_MN10300_TLS_GD
  2320. ENUMX
  2321. BFD_RELOC_MN10300_TLS_LD
  2322. ENUMX
  2323. BFD_RELOC_MN10300_TLS_LDO
  2324. ENUMX
  2325. BFD_RELOC_MN10300_TLS_GOTIE
  2326. ENUMX
  2327. BFD_RELOC_MN10300_TLS_IE
  2328. ENUMX
  2329. BFD_RELOC_MN10300_TLS_LE
  2330. ENUMX
  2331. BFD_RELOC_MN10300_TLS_DTPMOD
  2332. ENUMX
  2333. BFD_RELOC_MN10300_TLS_DTPOFF
  2334. ENUMX
  2335. BFD_RELOC_MN10300_TLS_TPOFF
  2336. ENUMDOC
  2337. Various TLS-related relocations.
  2338. ENUM
  2339. BFD_RELOC_MN10300_32_PCREL
  2340. ENUMDOC
  2341. This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
  2342. instruction.
  2343. ENUM
  2344. BFD_RELOC_MN10300_16_PCREL
  2345. ENUMDOC
  2346. This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
  2347. instruction.
  2348. COMMENT
  2349. ENUM
  2350. BFD_RELOC_386_GOT32
  2351. ENUMX
  2352. BFD_RELOC_386_PLT32
  2353. ENUMX
  2354. BFD_RELOC_386_COPY
  2355. ENUMX
  2356. BFD_RELOC_386_GLOB_DAT
  2357. ENUMX
  2358. BFD_RELOC_386_JUMP_SLOT
  2359. ENUMX
  2360. BFD_RELOC_386_RELATIVE
  2361. ENUMX
  2362. BFD_RELOC_386_GOTOFF
  2363. ENUMX
  2364. BFD_RELOC_386_GOTPC
  2365. ENUMX
  2366. BFD_RELOC_386_TLS_TPOFF
  2367. ENUMX
  2368. BFD_RELOC_386_TLS_IE
  2369. ENUMX
  2370. BFD_RELOC_386_TLS_GOTIE
  2371. ENUMX
  2372. BFD_RELOC_386_TLS_LE
  2373. ENUMX
  2374. BFD_RELOC_386_TLS_GD
  2375. ENUMX
  2376. BFD_RELOC_386_TLS_LDM
  2377. ENUMX
  2378. BFD_RELOC_386_TLS_LDO_32
  2379. ENUMX
  2380. BFD_RELOC_386_TLS_IE_32
  2381. ENUMX
  2382. BFD_RELOC_386_TLS_LE_32
  2383. ENUMX
  2384. BFD_RELOC_386_TLS_DTPMOD32
  2385. ENUMX
  2386. BFD_RELOC_386_TLS_DTPOFF32
  2387. ENUMX
  2388. BFD_RELOC_386_TLS_TPOFF32
  2389. ENUMX
  2390. BFD_RELOC_386_TLS_GOTDESC
  2391. ENUMX
  2392. BFD_RELOC_386_TLS_DESC_CALL
  2393. ENUMX
  2394. BFD_RELOC_386_TLS_DESC
  2395. ENUMX
  2396. BFD_RELOC_386_IRELATIVE
  2397. ENUMDOC
  2398. i386/elf relocations
  2399. ENUM
  2400. BFD_RELOC_X86_64_GOT32
  2401. ENUMX
  2402. BFD_RELOC_X86_64_PLT32
  2403. ENUMX
  2404. BFD_RELOC_X86_64_COPY
  2405. ENUMX
  2406. BFD_RELOC_X86_64_GLOB_DAT
  2407. ENUMX
  2408. BFD_RELOC_X86_64_JUMP_SLOT
  2409. ENUMX
  2410. BFD_RELOC_X86_64_RELATIVE
  2411. ENUMX
  2412. BFD_RELOC_X86_64_GOTPCREL
  2413. ENUMX
  2414. BFD_RELOC_X86_64_32S
  2415. ENUMX
  2416. BFD_RELOC_X86_64_DTPMOD64
  2417. ENUMX
  2418. BFD_RELOC_X86_64_DTPOFF64
  2419. ENUMX
  2420. BFD_RELOC_X86_64_TPOFF64
  2421. ENUMX
  2422. BFD_RELOC_X86_64_TLSGD
  2423. ENUMX
  2424. BFD_RELOC_X86_64_TLSLD
  2425. ENUMX
  2426. BFD_RELOC_X86_64_DTPOFF32
  2427. ENUMX
  2428. BFD_RELOC_X86_64_GOTTPOFF
  2429. ENUMX
  2430. BFD_RELOC_X86_64_TPOFF32
  2431. ENUMX
  2432. BFD_RELOC_X86_64_GOTOFF64
  2433. ENUMX
  2434. BFD_RELOC_X86_64_GOTPC32
  2435. ENUMX
  2436. BFD_RELOC_X86_64_GOT64
  2437. ENUMX
  2438. BFD_RELOC_X86_64_GOTPCREL64
  2439. ENUMX
  2440. BFD_RELOC_X86_64_GOTPC64
  2441. ENUMX
  2442. BFD_RELOC_X86_64_GOTPLT64
  2443. ENUMX
  2444. BFD_RELOC_X86_64_PLTOFF64
  2445. ENUMX
  2446. BFD_RELOC_X86_64_GOTPC32_TLSDESC
  2447. ENUMX
  2448. BFD_RELOC_X86_64_TLSDESC_CALL
  2449. ENUMX
  2450. BFD_RELOC_X86_64_TLSDESC
  2451. ENUMX
  2452. BFD_RELOC_X86_64_IRELATIVE
  2453. ENUMX
  2454. BFD_RELOC_X86_64_PC32_BND
  2455. ENUMX
  2456. BFD_RELOC_X86_64_PLT32_BND
  2457. ENUMDOC
  2458. x86-64/elf relocations
  2459. ENUM
  2460. BFD_RELOC_NS32K_IMM_8
  2461. ENUMX
  2462. BFD_RELOC_NS32K_IMM_16
  2463. ENUMX
  2464. BFD_RELOC_NS32K_IMM_32
  2465. ENUMX
  2466. BFD_RELOC_NS32K_IMM_8_PCREL
  2467. ENUMX
  2468. BFD_RELOC_NS32K_IMM_16_PCREL
  2469. ENUMX
  2470. BFD_RELOC_NS32K_IMM_32_PCREL
  2471. ENUMX
  2472. BFD_RELOC_NS32K_DISP_8
  2473. ENUMX
  2474. BFD_RELOC_NS32K_DISP_16
  2475. ENUMX
  2476. BFD_RELOC_NS32K_DISP_32
  2477. ENUMX
  2478. BFD_RELOC_NS32K_DISP_8_PCREL
  2479. ENUMX
  2480. BFD_RELOC_NS32K_DISP_16_PCREL
  2481. ENUMX
  2482. BFD_RELOC_NS32K_DISP_32_PCREL
  2483. ENUMDOC
  2484. ns32k relocations
  2485. ENUM
  2486. BFD_RELOC_PDP11_DISP_8_PCREL
  2487. ENUMX
  2488. BFD_RELOC_PDP11_DISP_6_PCREL
  2489. ENUMDOC
  2490. PDP11 relocations
  2491. ENUM
  2492. BFD_RELOC_PJ_CODE_HI16
  2493. ENUMX
  2494. BFD_RELOC_PJ_CODE_LO16
  2495. ENUMX
  2496. BFD_RELOC_PJ_CODE_DIR16
  2497. ENUMX
  2498. BFD_RELOC_PJ_CODE_DIR32
  2499. ENUMX
  2500. BFD_RELOC_PJ_CODE_REL16
  2501. ENUMX
  2502. BFD_RELOC_PJ_CODE_REL32
  2503. ENUMDOC
  2504. Picojava relocs. Not all of these appear in object files.
  2505. ENUM
  2506. BFD_RELOC_PPC_B26
  2507. ENUMX
  2508. BFD_RELOC_PPC_BA26
  2509. ENUMX
  2510. BFD_RELOC_PPC_TOC16
  2511. ENUMX
  2512. BFD_RELOC_PPC_B16
  2513. ENUMX
  2514. BFD_RELOC_PPC_B16_BRTAKEN
  2515. ENUMX
  2516. BFD_RELOC_PPC_B16_BRNTAKEN
  2517. ENUMX
  2518. BFD_RELOC_PPC_BA16
  2519. ENUMX
  2520. BFD_RELOC_PPC_BA16_BRTAKEN
  2521. ENUMX
  2522. BFD_RELOC_PPC_BA16_BRNTAKEN
  2523. ENUMX
  2524. BFD_RELOC_PPC_COPY
  2525. ENUMX
  2526. BFD_RELOC_PPC_GLOB_DAT
  2527. ENUMX
  2528. BFD_RELOC_PPC_JMP_SLOT
  2529. ENUMX
  2530. BFD_RELOC_PPC_RELATIVE
  2531. ENUMX
  2532. BFD_RELOC_PPC_LOCAL24PC
  2533. ENUMX
  2534. BFD_RELOC_PPC_EMB_NADDR32
  2535. ENUMX
  2536. BFD_RELOC_PPC_EMB_NADDR16
  2537. ENUMX
  2538. BFD_RELOC_PPC_EMB_NADDR16_LO
  2539. ENUMX
  2540. BFD_RELOC_PPC_EMB_NADDR16_HI
  2541. ENUMX
  2542. BFD_RELOC_PPC_EMB_NADDR16_HA
  2543. ENUMX
  2544. BFD_RELOC_PPC_EMB_SDAI16
  2545. ENUMX
  2546. BFD_RELOC_PPC_EMB_SDA2I16
  2547. ENUMX
  2548. BFD_RELOC_PPC_EMB_SDA2REL
  2549. ENUMX
  2550. BFD_RELOC_PPC_EMB_SDA21
  2551. ENUMX
  2552. BFD_RELOC_PPC_EMB_MRKREF
  2553. ENUMX
  2554. BFD_RELOC_PPC_EMB_RELSEC16
  2555. ENUMX
  2556. BFD_RELOC_PPC_EMB_RELST_LO
  2557. ENUMX
  2558. BFD_RELOC_PPC_EMB_RELST_HI
  2559. ENUMX
  2560. BFD_RELOC_PPC_EMB_RELST_HA
  2561. ENUMX
  2562. BFD_RELOC_PPC_EMB_BIT_FLD
  2563. ENUMX
  2564. BFD_RELOC_PPC_EMB_RELSDA
  2565. ENUMX
  2566. BFD_RELOC_PPC_VLE_REL8
  2567. ENUMX
  2568. BFD_RELOC_PPC_VLE_REL15
  2569. ENUMX
  2570. BFD_RELOC_PPC_VLE_REL24
  2571. ENUMX
  2572. BFD_RELOC_PPC_VLE_LO16A
  2573. ENUMX
  2574. BFD_RELOC_PPC_VLE_LO16D
  2575. ENUMX
  2576. BFD_RELOC_PPC_VLE_HI16A
  2577. ENUMX
  2578. BFD_RELOC_PPC_VLE_HI16D
  2579. ENUMX
  2580. BFD_RELOC_PPC_VLE_HA16A
  2581. ENUMX
  2582. BFD_RELOC_PPC_VLE_HA16D
  2583. ENUMX
  2584. BFD_RELOC_PPC_VLE_SDA21
  2585. ENUMX
  2586. BFD_RELOC_PPC_VLE_SDA21_LO
  2587. ENUMX
  2588. BFD_RELOC_PPC_VLE_SDAREL_LO16A
  2589. ENUMX
  2590. BFD_RELOC_PPC_VLE_SDAREL_LO16D
  2591. ENUMX
  2592. BFD_RELOC_PPC_VLE_SDAREL_HI16A
  2593. ENUMX
  2594. BFD_RELOC_PPC_VLE_SDAREL_HI16D
  2595. ENUMX
  2596. BFD_RELOC_PPC_VLE_SDAREL_HA16A
  2597. ENUMX
  2598. BFD_RELOC_PPC_VLE_SDAREL_HA16D
  2599. ENUMX
  2600. BFD_RELOC_PPC64_HIGHER
  2601. ENUMX
  2602. BFD_RELOC_PPC64_HIGHER_S
  2603. ENUMX
  2604. BFD_RELOC_PPC64_HIGHEST
  2605. ENUMX
  2606. BFD_RELOC_PPC64_HIGHEST_S
  2607. ENUMX
  2608. BFD_RELOC_PPC64_TOC16_LO
  2609. ENUMX
  2610. BFD_RELOC_PPC64_TOC16_HI
  2611. ENUMX
  2612. BFD_RELOC_PPC64_TOC16_HA
  2613. ENUMX
  2614. BFD_RELOC_PPC64_TOC
  2615. ENUMX
  2616. BFD_RELOC_PPC64_PLTGOT16
  2617. ENUMX
  2618. BFD_RELOC_PPC64_PLTGOT16_LO
  2619. ENUMX
  2620. BFD_RELOC_PPC64_PLTGOT16_HI
  2621. ENUMX
  2622. BFD_RELOC_PPC64_PLTGOT16_HA
  2623. ENUMX
  2624. BFD_RELOC_PPC64_ADDR16_DS
  2625. ENUMX
  2626. BFD_RELOC_PPC64_ADDR16_LO_DS
  2627. ENUMX
  2628. BFD_RELOC_PPC64_GOT16_DS
  2629. ENUMX
  2630. BFD_RELOC_PPC64_GOT16_LO_DS
  2631. ENUMX
  2632. BFD_RELOC_PPC64_PLT16_LO_DS
  2633. ENUMX
  2634. BFD_RELOC_PPC64_SECTOFF_DS
  2635. ENUMX
  2636. BFD_RELOC_PPC64_SECTOFF_LO_DS
  2637. ENUMX
  2638. BFD_RELOC_PPC64_TOC16_DS
  2639. ENUMX
  2640. BFD_RELOC_PPC64_TOC16_LO_DS
  2641. ENUMX
  2642. BFD_RELOC_PPC64_PLTGOT16_DS
  2643. ENUMX
  2644. BFD_RELOC_PPC64_PLTGOT16_LO_DS
  2645. ENUMX
  2646. BFD_RELOC_PPC64_ADDR16_HIGH
  2647. ENUMX
  2648. BFD_RELOC_PPC64_ADDR16_HIGHA
  2649. ENUMX
  2650. BFD_RELOC_PPC64_ADDR64_LOCAL
  2651. ENUMDOC
  2652. Power(rs6000) and PowerPC relocations.
  2653. ENUM
  2654. BFD_RELOC_PPC_TLS
  2655. ENUMX
  2656. BFD_RELOC_PPC_TLSGD
  2657. ENUMX
  2658. BFD_RELOC_PPC_TLSLD
  2659. ENUMX
  2660. BFD_RELOC_PPC_DTPMOD
  2661. ENUMX
  2662. BFD_RELOC_PPC_TPREL16
  2663. ENUMX
  2664. BFD_RELOC_PPC_TPREL16_LO
  2665. ENUMX
  2666. BFD_RELOC_PPC_TPREL16_HI
  2667. ENUMX
  2668. BFD_RELOC_PPC_TPREL16_HA
  2669. ENUMX
  2670. BFD_RELOC_PPC_TPREL
  2671. ENUMX
  2672. BFD_RELOC_PPC_DTPREL16
  2673. ENUMX
  2674. BFD_RELOC_PPC_DTPREL16_LO
  2675. ENUMX
  2676. BFD_RELOC_PPC_DTPREL16_HI
  2677. ENUMX
  2678. BFD_RELOC_PPC_DTPREL16_HA
  2679. ENUMX
  2680. BFD_RELOC_PPC_DTPREL
  2681. ENUMX
  2682. BFD_RELOC_PPC_GOT_TLSGD16
  2683. ENUMX
  2684. BFD_RELOC_PPC_GOT_TLSGD16_LO
  2685. ENUMX
  2686. BFD_RELOC_PPC_GOT_TLSGD16_HI
  2687. ENUMX
  2688. BFD_RELOC_PPC_GOT_TLSGD16_HA
  2689. ENUMX
  2690. BFD_RELOC_PPC_GOT_TLSLD16
  2691. ENUMX
  2692. BFD_RELOC_PPC_GOT_TLSLD16_LO
  2693. ENUMX
  2694. BFD_RELOC_PPC_GOT_TLSLD16_HI
  2695. ENUMX
  2696. BFD_RELOC_PPC_GOT_TLSLD16_HA
  2697. ENUMX
  2698. BFD_RELOC_PPC_GOT_TPREL16
  2699. ENUMX
  2700. BFD_RELOC_PPC_GOT_TPREL16_LO
  2701. ENUMX
  2702. BFD_RELOC_PPC_GOT_TPREL16_HI
  2703. ENUMX
  2704. BFD_RELOC_PPC_GOT_TPREL16_HA
  2705. ENUMX
  2706. BFD_RELOC_PPC_GOT_DTPREL16
  2707. ENUMX
  2708. BFD_RELOC_PPC_GOT_DTPREL16_LO
  2709. ENUMX
  2710. BFD_RELOC_PPC_GOT_DTPREL16_HI
  2711. ENUMX
  2712. BFD_RELOC_PPC_GOT_DTPREL16_HA
  2713. ENUMX
  2714. BFD_RELOC_PPC64_TPREL16_DS
  2715. ENUMX
  2716. BFD_RELOC_PPC64_TPREL16_LO_DS
  2717. ENUMX
  2718. BFD_RELOC_PPC64_TPREL16_HIGHER
  2719. ENUMX
  2720. BFD_RELOC_PPC64_TPREL16_HIGHERA
  2721. ENUMX
  2722. BFD_RELOC_PPC64_TPREL16_HIGHEST
  2723. ENUMX
  2724. BFD_RELOC_PPC64_TPREL16_HIGHESTA
  2725. ENUMX
  2726. BFD_RELOC_PPC64_DTPREL16_DS
  2727. ENUMX
  2728. BFD_RELOC_PPC64_DTPREL16_LO_DS
  2729. ENUMX
  2730. BFD_RELOC_PPC64_DTPREL16_HIGHER
  2731. ENUMX
  2732. BFD_RELOC_PPC64_DTPREL16_HIGHERA
  2733. ENUMX
  2734. BFD_RELOC_PPC64_DTPREL16_HIGHEST
  2735. ENUMX
  2736. BFD_RELOC_PPC64_DTPREL16_HIGHESTA
  2737. ENUMX
  2738. BFD_RELOC_PPC64_TPREL16_HIGH
  2739. ENUMX
  2740. BFD_RELOC_PPC64_TPREL16_HIGHA
  2741. ENUMX
  2742. BFD_RELOC_PPC64_DTPREL16_HIGH
  2743. ENUMX
  2744. BFD_RELOC_PPC64_DTPREL16_HIGHA
  2745. ENUMDOC
  2746. PowerPC and PowerPC64 thread-local storage relocations.
  2747. ENUM
  2748. BFD_RELOC_I370_D12
  2749. ENUMDOC
  2750. IBM 370/390 relocations
  2751. ENUM
  2752. BFD_RELOC_CTOR
  2753. ENUMDOC
  2754. The type of reloc used to build a constructor table - at the moment
  2755. probably a 32 bit wide absolute relocation, but the target can choose.
  2756. It generally does map to one of the other relocation types.
  2757. ENUM
  2758. BFD_RELOC_ARM_PCREL_BRANCH
  2759. ENUMDOC
  2760. ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
  2761. not stored in the instruction.
  2762. ENUM
  2763. BFD_RELOC_ARM_PCREL_BLX
  2764. ENUMDOC
  2765. ARM 26 bit pc-relative branch. The lowest bit must be zero and is
  2766. not stored in the instruction. The 2nd lowest bit comes from a 1 bit
  2767. field in the instruction.
  2768. ENUM
  2769. BFD_RELOC_THUMB_PCREL_BLX
  2770. ENUMDOC
  2771. Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
  2772. not stored in the instruction. The 2nd lowest bit comes from a 1 bit
  2773. field in the instruction.
  2774. ENUM
  2775. BFD_RELOC_ARM_PCREL_CALL
  2776. ENUMDOC
  2777. ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.
  2778. ENUM
  2779. BFD_RELOC_ARM_PCREL_JUMP
  2780. ENUMDOC
  2781. ARM 26-bit pc-relative branch for B or conditional BL instruction.
  2782. ENUM
  2783. BFD_RELOC_THUMB_PCREL_BRANCH7
  2784. ENUMX
  2785. BFD_RELOC_THUMB_PCREL_BRANCH9
  2786. ENUMX
  2787. BFD_RELOC_THUMB_PCREL_BRANCH12
  2788. ENUMX
  2789. BFD_RELOC_THUMB_PCREL_BRANCH20
  2790. ENUMX
  2791. BFD_RELOC_THUMB_PCREL_BRANCH23
  2792. ENUMX
  2793. BFD_RELOC_THUMB_PCREL_BRANCH25
  2794. ENUMDOC
  2795. Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
  2796. The lowest bit must be zero and is not stored in the instruction.
  2797. Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
  2798. "nn" one smaller in all cases. Note further that BRANCH23
  2799. corresponds to R_ARM_THM_CALL.
  2800. ENUM
  2801. BFD_RELOC_ARM_OFFSET_IMM
  2802. ENUMDOC
  2803. 12-bit immediate offset, used in ARM-format ldr and str instructions.
  2804. ENUM
  2805. BFD_RELOC_ARM_THUMB_OFFSET
  2806. ENUMDOC
  2807. 5-bit immediate offset, used in Thumb-format ldr and str instructions.
  2808. ENUM
  2809. BFD_RELOC_ARM_TARGET1
  2810. ENUMDOC
  2811. Pc-relative or absolute relocation depending on target. Used for
  2812. entries in .init_array sections.
  2813. ENUM
  2814. BFD_RELOC_ARM_ROSEGREL32
  2815. ENUMDOC
  2816. Read-only segment base relative address.
  2817. ENUM
  2818. BFD_RELOC_ARM_SBREL32
  2819. ENUMDOC
  2820. Data segment base relative address.
  2821. ENUM
  2822. BFD_RELOC_ARM_TARGET2
  2823. ENUMDOC
  2824. This reloc is used for references to RTTI data from exception handling
  2825. tables. The actual definition depends on the target. It may be a
  2826. pc-relative or some form of GOT-indirect relocation.
  2827. ENUM
  2828. BFD_RELOC_ARM_PREL31
  2829. ENUMDOC
  2830. 31-bit PC relative address.
  2831. ENUM
  2832. BFD_RELOC_ARM_MOVW
  2833. ENUMX
  2834. BFD_RELOC_ARM_MOVT
  2835. ENUMX
  2836. BFD_RELOC_ARM_MOVW_PCREL
  2837. ENUMX
  2838. BFD_RELOC_ARM_MOVT_PCREL
  2839. ENUMX
  2840. BFD_RELOC_ARM_THUMB_MOVW
  2841. ENUMX
  2842. BFD_RELOC_ARM_THUMB_MOVT
  2843. ENUMX
  2844. BFD_RELOC_ARM_THUMB_MOVW_PCREL
  2845. ENUMX
  2846. BFD_RELOC_ARM_THUMB_MOVT_PCREL
  2847. ENUMDOC
  2848. Low and High halfword relocations for MOVW and MOVT instructions.
  2849. ENUM
  2850. BFD_RELOC_ARM_JUMP_SLOT
  2851. ENUMX
  2852. BFD_RELOC_ARM_GLOB_DAT
  2853. ENUMX
  2854. BFD_RELOC_ARM_GOT32
  2855. ENUMX
  2856. BFD_RELOC_ARM_PLT32
  2857. ENUMX
  2858. BFD_RELOC_ARM_RELATIVE
  2859. ENUMX
  2860. BFD_RELOC_ARM_GOTOFF
  2861. ENUMX
  2862. BFD_RELOC_ARM_GOTPC
  2863. ENUMX
  2864. BFD_RELOC_ARM_GOT_PREL
  2865. ENUMDOC
  2866. Relocations for setting up GOTs and PLTs for shared libraries.
  2867. ENUM
  2868. BFD_RELOC_ARM_TLS_GD32
  2869. ENUMX
  2870. BFD_RELOC_ARM_TLS_LDO32
  2871. ENUMX
  2872. BFD_RELOC_ARM_TLS_LDM32
  2873. ENUMX
  2874. BFD_RELOC_ARM_TLS_DTPOFF32
  2875. ENUMX
  2876. BFD_RELOC_ARM_TLS_DTPMOD32
  2877. ENUMX
  2878. BFD_RELOC_ARM_TLS_TPOFF32
  2879. ENUMX
  2880. BFD_RELOC_ARM_TLS_IE32
  2881. ENUMX
  2882. BFD_RELOC_ARM_TLS_LE32
  2883. ENUMX
  2884. BFD_RELOC_ARM_TLS_GOTDESC
  2885. ENUMX
  2886. BFD_RELOC_ARM_TLS_CALL
  2887. ENUMX
  2888. BFD_RELOC_ARM_THM_TLS_CALL
  2889. ENUMX
  2890. BFD_RELOC_ARM_TLS_DESCSEQ
  2891. ENUMX
  2892. BFD_RELOC_ARM_THM_TLS_DESCSEQ
  2893. ENUMX
  2894. BFD_RELOC_ARM_TLS_DESC
  2895. ENUMDOC
  2896. ARM thread-local storage relocations.
  2897. ENUM
  2898. BFD_RELOC_ARM_ALU_PC_G0_NC
  2899. ENUMX
  2900. BFD_RELOC_ARM_ALU_PC_G0
  2901. ENUMX
  2902. BFD_RELOC_ARM_ALU_PC_G1_NC
  2903. ENUMX
  2904. BFD_RELOC_ARM_ALU_PC_G1
  2905. ENUMX
  2906. BFD_RELOC_ARM_ALU_PC_G2
  2907. ENUMX
  2908. BFD_RELOC_ARM_LDR_PC_G0
  2909. ENUMX
  2910. BFD_RELOC_ARM_LDR_PC_G1
  2911. ENUMX
  2912. BFD_RELOC_ARM_LDR_PC_G2
  2913. ENUMX
  2914. BFD_RELOC_ARM_LDRS_PC_G0
  2915. ENUMX
  2916. BFD_RELOC_ARM_LDRS_PC_G1
  2917. ENUMX
  2918. BFD_RELOC_ARM_LDRS_PC_G2
  2919. ENUMX
  2920. BFD_RELOC_ARM_LDC_PC_G0
  2921. ENUMX
  2922. BFD_RELOC_ARM_LDC_PC_G1
  2923. ENUMX
  2924. BFD_RELOC_ARM_LDC_PC_G2
  2925. ENUMX
  2926. BFD_RELOC_ARM_ALU_SB_G0_NC
  2927. ENUMX
  2928. BFD_RELOC_ARM_ALU_SB_G0
  2929. ENUMX
  2930. BFD_RELOC_ARM_ALU_SB_G1_NC
  2931. ENUMX
  2932. BFD_RELOC_ARM_ALU_SB_G1
  2933. ENUMX
  2934. BFD_RELOC_ARM_ALU_SB_G2
  2935. ENUMX
  2936. BFD_RELOC_ARM_LDR_SB_G0
  2937. ENUMX
  2938. BFD_RELOC_ARM_LDR_SB_G1
  2939. ENUMX
  2940. BFD_RELOC_ARM_LDR_SB_G2
  2941. ENUMX
  2942. BFD_RELOC_ARM_LDRS_SB_G0
  2943. ENUMX
  2944. BFD_RELOC_ARM_LDRS_SB_G1
  2945. ENUMX
  2946. BFD_RELOC_ARM_LDRS_SB_G2
  2947. ENUMX
  2948. BFD_RELOC_ARM_LDC_SB_G0
  2949. ENUMX
  2950. BFD_RELOC_ARM_LDC_SB_G1
  2951. ENUMX
  2952. BFD_RELOC_ARM_LDC_SB_G2
  2953. ENUMDOC
  2954. ARM group relocations.
  2955. ENUM
  2956. BFD_RELOC_ARM_V4BX
  2957. ENUMDOC
  2958. Annotation of BX instructions.
  2959. ENUM
  2960. BFD_RELOC_ARM_IRELATIVE
  2961. ENUMDOC
  2962. ARM support for STT_GNU_IFUNC.
  2963. ENUM
  2964. BFD_RELOC_ARM_IMMEDIATE
  2965. ENUMX
  2966. BFD_RELOC_ARM_ADRL_IMMEDIATE
  2967. ENUMX
  2968. BFD_RELOC_ARM_T32_IMMEDIATE
  2969. ENUMX
  2970. BFD_RELOC_ARM_T32_ADD_IMM
  2971. ENUMX
  2972. BFD_RELOC_ARM_T32_IMM12
  2973. ENUMX
  2974. BFD_RELOC_ARM_T32_ADD_PC12
  2975. ENUMX
  2976. BFD_RELOC_ARM_SHIFT_IMM
  2977. ENUMX
  2978. BFD_RELOC_ARM_SMC
  2979. ENUMX
  2980. BFD_RELOC_ARM_HVC
  2981. ENUMX
  2982. BFD_RELOC_ARM_SWI
  2983. ENUMX
  2984. BFD_RELOC_ARM_MULTI
  2985. ENUMX
  2986. BFD_RELOC_ARM_CP_OFF_IMM
  2987. ENUMX
  2988. BFD_RELOC_ARM_CP_OFF_IMM_S2
  2989. ENUMX
  2990. BFD_RELOC_ARM_T32_CP_OFF_IMM
  2991. ENUMX
  2992. BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
  2993. ENUMX
  2994. BFD_RELOC_ARM_ADR_IMM
  2995. ENUMX
  2996. BFD_RELOC_ARM_LDR_IMM
  2997. ENUMX
  2998. BFD_RELOC_ARM_LITERAL
  2999. ENUMX
  3000. BFD_RELOC_ARM_IN_POOL
  3001. ENUMX
  3002. BFD_RELOC_ARM_OFFSET_IMM8
  3003. ENUMX
  3004. BFD_RELOC_ARM_T32_OFFSET_U8
  3005. ENUMX
  3006. BFD_RELOC_ARM_T32_OFFSET_IMM
  3007. ENUMX
  3008. BFD_RELOC_ARM_HWLITERAL
  3009. ENUMX
  3010. BFD_RELOC_ARM_THUMB_ADD
  3011. ENUMX
  3012. BFD_RELOC_ARM_THUMB_IMM
  3013. ENUMX
  3014. BFD_RELOC_ARM_THUMB_SHIFT
  3015. ENUMDOC
  3016. These relocs are only used within the ARM assembler. They are not
  3017. (at present) written to any object files.
  3018. ENUM
  3019. BFD_RELOC_SH_PCDISP8BY2
  3020. ENUMX
  3021. BFD_RELOC_SH_PCDISP12BY2
  3022. ENUMX
  3023. BFD_RELOC_SH_IMM3
  3024. ENUMX
  3025. BFD_RELOC_SH_IMM3U
  3026. ENUMX
  3027. BFD_RELOC_SH_DISP12
  3028. ENUMX
  3029. BFD_RELOC_SH_DISP12BY2
  3030. ENUMX
  3031. BFD_RELOC_SH_DISP12BY4
  3032. ENUMX
  3033. BFD_RELOC_SH_DISP12BY8
  3034. ENUMX
  3035. BFD_RELOC_SH_DISP20
  3036. ENUMX
  3037. BFD_RELOC_SH_DISP20BY8
  3038. ENUMX
  3039. BFD_RELOC_SH_IMM4
  3040. ENUMX
  3041. BFD_RELOC_SH_IMM4BY2
  3042. ENUMX
  3043. BFD_RELOC_SH_IMM4BY4
  3044. ENUMX
  3045. BFD_RELOC_SH_IMM8
  3046. ENUMX
  3047. BFD_RELOC_SH_IMM8BY2
  3048. ENUMX
  3049. BFD_RELOC_SH_IMM8BY4
  3050. ENUMX
  3051. BFD_RELOC_SH_PCRELIMM8BY2
  3052. ENUMX
  3053. BFD_RELOC_SH_PCRELIMM8BY4
  3054. ENUMX
  3055. BFD_RELOC_SH_SWITCH16
  3056. ENUMX
  3057. BFD_RELOC_SH_SWITCH32
  3058. ENUMX
  3059. BFD_RELOC_SH_USES
  3060. ENUMX
  3061. BFD_RELOC_SH_COUNT
  3062. ENUMX
  3063. BFD_RELOC_SH_ALIGN
  3064. ENUMX
  3065. BFD_RELOC_SH_CODE
  3066. ENUMX
  3067. BFD_RELOC_SH_DATA
  3068. ENUMX
  3069. BFD_RELOC_SH_LABEL
  3070. ENUMX
  3071. BFD_RELOC_SH_LOOP_START
  3072. ENUMX
  3073. BFD_RELOC_SH_LOOP_END
  3074. ENUMX
  3075. BFD_RELOC_SH_COPY
  3076. ENUMX
  3077. BFD_RELOC_SH_GLOB_DAT
  3078. ENUMX
  3079. BFD_RELOC_SH_JMP_SLOT
  3080. ENUMX
  3081. BFD_RELOC_SH_RELATIVE
  3082. ENUMX
  3083. BFD_RELOC_SH_GOTPC
  3084. ENUMX
  3085. BFD_RELOC_SH_GOT_LOW16
  3086. ENUMX
  3087. BFD_RELOC_SH_GOT_MEDLOW16
  3088. ENUMX
  3089. BFD_RELOC_SH_GOT_MEDHI16
  3090. ENUMX
  3091. BFD_RELOC_SH_GOT_HI16
  3092. ENUMX
  3093. BFD_RELOC_SH_GOTPLT_LOW16
  3094. ENUMX
  3095. BFD_RELOC_SH_GOTPLT_MEDLOW16
  3096. ENUMX
  3097. BFD_RELOC_SH_GOTPLT_MEDHI16
  3098. ENUMX
  3099. BFD_RELOC_SH_GOTPLT_HI16
  3100. ENUMX
  3101. BFD_RELOC_SH_PLT_LOW16
  3102. ENUMX
  3103. BFD_RELOC_SH_PLT_MEDLOW16
  3104. ENUMX
  3105. BFD_RELOC_SH_PLT_MEDHI16
  3106. ENUMX
  3107. BFD_RELOC_SH_PLT_HI16
  3108. ENUMX
  3109. BFD_RELOC_SH_GOTOFF_LOW16
  3110. ENUMX
  3111. BFD_RELOC_SH_GOTOFF_MEDLOW16
  3112. ENUMX
  3113. BFD_RELOC_SH_GOTOFF_MEDHI16
  3114. ENUMX
  3115. BFD_RELOC_SH_GOTOFF_HI16
  3116. ENUMX
  3117. BFD_RELOC_SH_GOTPC_LOW16
  3118. ENUMX
  3119. BFD_RELOC_SH_GOTPC_MEDLOW16
  3120. ENUMX
  3121. BFD_RELOC_SH_GOTPC_MEDHI16
  3122. ENUMX
  3123. BFD_RELOC_SH_GOTPC_HI16
  3124. ENUMX
  3125. BFD_RELOC_SH_COPY64
  3126. ENUMX
  3127. BFD_RELOC_SH_GLOB_DAT64
  3128. ENUMX
  3129. BFD_RELOC_SH_JMP_SLOT64
  3130. ENUMX
  3131. BFD_RELOC_SH_RELATIVE64
  3132. ENUMX
  3133. BFD_RELOC_SH_GOT10BY4
  3134. ENUMX
  3135. BFD_RELOC_SH_GOT10BY8
  3136. ENUMX
  3137. BFD_RELOC_SH_GOTPLT10BY4
  3138. ENUMX
  3139. BFD_RELOC_SH_GOTPLT10BY8
  3140. ENUMX
  3141. BFD_RELOC_SH_GOTPLT32
  3142. ENUMX
  3143. BFD_RELOC_SH_SHMEDIA_CODE
  3144. ENUMX
  3145. BFD_RELOC_SH_IMMU5
  3146. ENUMX
  3147. BFD_RELOC_SH_IMMS6
  3148. ENUMX
  3149. BFD_RELOC_SH_IMMS6BY32
  3150. ENUMX
  3151. BFD_RELOC_SH_IMMU6
  3152. ENUMX
  3153. BFD_RELOC_SH_IMMS10
  3154. ENUMX
  3155. BFD_RELOC_SH_IMMS10BY2
  3156. ENUMX
  3157. BFD_RELOC_SH_IMMS10BY4
  3158. ENUMX
  3159. BFD_RELOC_SH_IMMS10BY8
  3160. ENUMX
  3161. BFD_RELOC_SH_IMMS16
  3162. ENUMX
  3163. BFD_RELOC_SH_IMMU16
  3164. ENUMX
  3165. BFD_RELOC_SH_IMM_LOW16
  3166. ENUMX
  3167. BFD_RELOC_SH_IMM_LOW16_PCREL
  3168. ENUMX
  3169. BFD_RELOC_SH_IMM_MEDLOW16
  3170. ENUMX
  3171. BFD_RELOC_SH_IMM_MEDLOW16_PCREL
  3172. ENUMX
  3173. BFD_RELOC_SH_IMM_MEDHI16
  3174. ENUMX
  3175. BFD_RELOC_SH_IMM_MEDHI16_PCREL
  3176. ENUMX
  3177. BFD_RELOC_SH_IMM_HI16
  3178. ENUMX
  3179. BFD_RELOC_SH_IMM_HI16_PCREL
  3180. ENUMX
  3181. BFD_RELOC_SH_PT_16
  3182. ENUMX
  3183. BFD_RELOC_SH_TLS_GD_32
  3184. ENUMX
  3185. BFD_RELOC_SH_TLS_LD_32
  3186. ENUMX
  3187. BFD_RELOC_SH_TLS_LDO_32
  3188. ENUMX
  3189. BFD_RELOC_SH_TLS_IE_32
  3190. ENUMX
  3191. BFD_RELOC_SH_TLS_LE_32
  3192. ENUMX
  3193. BFD_RELOC_SH_TLS_DTPMOD32
  3194. ENUMX
  3195. BFD_RELOC_SH_TLS_DTPOFF32
  3196. ENUMX
  3197. BFD_RELOC_SH_TLS_TPOFF32
  3198. ENUMX
  3199. BFD_RELOC_SH_GOT20
  3200. ENUMX
  3201. BFD_RELOC_SH_GOTOFF20
  3202. ENUMX
  3203. BFD_RELOC_SH_GOTFUNCDESC
  3204. ENUMX
  3205. BFD_RELOC_SH_GOTFUNCDESC20
  3206. ENUMX
  3207. BFD_RELOC_SH_GOTOFFFUNCDESC
  3208. ENUMX
  3209. BFD_RELOC_SH_GOTOFFFUNCDESC20
  3210. ENUMX
  3211. BFD_RELOC_SH_FUNCDESC
  3212. ENUMDOC
  3213. Renesas / SuperH SH relocs. Not all of these appear in object files.
  3214. ENUM
  3215. BFD_RELOC_ARC_NONE
  3216. ENUMX
  3217. BFD_RELOC_ARC_8
  3218. ENUMX
  3219. BFD_RELOC_ARC_16
  3220. ENUMX
  3221. BFD_RELOC_ARC_24
  3222. ENUMX
  3223. BFD_RELOC_ARC_32
  3224. ENUMX
  3225. BFD_RELOC_ARC_N8
  3226. ENUMX
  3227. BFD_RELOC_ARC_N16
  3228. ENUMX
  3229. BFD_RELOC_ARC_N24
  3230. ENUMX
  3231. BFD_RELOC_ARC_N32
  3232. ENUMX
  3233. BFD_RELOC_ARC_SDA
  3234. ENUMX
  3235. BFD_RELOC_ARC_SECTOFF
  3236. ENUMX
  3237. BFD_RELOC_ARC_S21H_PCREL
  3238. ENUMX
  3239. BFD_RELOC_ARC_S21W_PCREL
  3240. ENUMX
  3241. BFD_RELOC_ARC_S25H_PCREL
  3242. ENUMX
  3243. BFD_RELOC_ARC_S25W_PCREL
  3244. ENUMX
  3245. BFD_RELOC_ARC_SDA32
  3246. ENUMX
  3247. BFD_RELOC_ARC_SDA_LDST
  3248. ENUMX
  3249. BFD_RELOC_ARC_SDA_LDST1
  3250. ENUMX
  3251. BFD_RELOC_ARC_SDA_LDST2
  3252. ENUMX
  3253. BFD_RELOC_ARC_SDA16_LD
  3254. ENUMX
  3255. BFD_RELOC_ARC_SDA16_LD1
  3256. ENUMX
  3257. BFD_RELOC_ARC_SDA16_LD2
  3258. ENUMX
  3259. BFD_RELOC_ARC_S13_PCREL
  3260. ENUMX
  3261. BFD_RELOC_ARC_W
  3262. ENUMX
  3263. BFD_RELOC_ARC_32_ME
  3264. ENUMX
  3265. BFD_RELOC_ARC_32_ME_S
  3266. ENUMX
  3267. BFD_RELOC_ARC_N32_ME
  3268. ENUMX
  3269. BFD_RELOC_ARC_SECTOFF_ME
  3270. ENUMX
  3271. BFD_RELOC_ARC_SDA32_ME
  3272. ENUMX
  3273. BFD_RELOC_ARC_W_ME
  3274. ENUMX
  3275. BFD_RELOC_AC_SECTOFF_U8
  3276. ENUMX
  3277. BFD_RELOC_AC_SECTOFF_U8_1
  3278. ENUMX
  3279. BFD_RELOC_AC_SECTOFF_U8_2
  3280. ENUMX
  3281. BFD_RELOC_AC_SECTFOFF_S9
  3282. ENUMX
  3283. BFD_RELOC_AC_SECTFOFF_S9_1
  3284. ENUMX
  3285. BFD_RELOC_AC_SECTFOFF_S9_2
  3286. ENUMX
  3287. BFD_RELOC_ARC_SECTOFF_ME_1
  3288. ENUMX
  3289. BFD_RELOC_ARC_SECTOFF_ME_2
  3290. ENUMX
  3291. BFD_RELOC_ARC_SECTOFF_1
  3292. ENUMX
  3293. BFD_RELOC_ARC_SECTOFF_2
  3294. ENUMX
  3295. BFD_RELOC_ARC_SDA16_ST2
  3296. ENUMX
  3297. BFD_RELOC_ARC_PC32
  3298. ENUMX
  3299. BFD_RELOC_ARC_GOT32
  3300. ENUMX
  3301. BFD_RELOC_ARC_GOTPC32
  3302. ENUMX
  3303. BFD_RELOC_ARC_PLT32
  3304. ENUMX
  3305. BFD_RELOC_ARC_COPY
  3306. ENUMX
  3307. BFD_RELOC_ARC_GLOB_DAT
  3308. ENUMX
  3309. BFD_RELOC_ARC_JMP_SLOT
  3310. ENUMX
  3311. BFD_RELOC_ARC_RELATIVE
  3312. ENUMX
  3313. BFD_RELOC_ARC_GOTOFF
  3314. ENUMX
  3315. BFD_RELOC_ARC_GOTPC
  3316. ENUMX
  3317. BFD_RELOC_ARC_S21W_PCREL_PLT
  3318. ENUMX
  3319. BFD_RELOC_ARC_S25H_PCREL_PLT
  3320. ENUMX
  3321. BFD_RELOC_ARC_TLS_DTPMOD
  3322. ENUMX
  3323. BFD_RELOC_ARC_TLS_TPOFF
  3324. ENUMX
  3325. BFD_RELOC_ARC_TLS_GD_GOT
  3326. ENUMX
  3327. BFD_RELOC_ARC_TLS_GD_LD
  3328. ENUMX
  3329. BFD_RELOC_ARC_TLS_GD_CALL
  3330. ENUMX
  3331. BFD_RELOC_ARC_TLS_IE_GOT
  3332. ENUMX
  3333. BFD_RELOC_ARC_TLS_DTPOFF
  3334. ENUMX
  3335. BFD_RELOC_ARC_TLS_DTPOFF_S9
  3336. ENUMX
  3337. BFD_RELOC_ARC_TLS_LE_S9
  3338. ENUMX
  3339. BFD_RELOC_ARC_TLS_LE_32
  3340. ENUMX
  3341. BFD_RELOC_ARC_S25W_PCREL_PLT
  3342. ENUMX
  3343. BFD_RELOC_ARC_S21H_PCREL_PLT
  3344. ENUMDOC
  3345. ARC relocs.
  3346. ENUM
  3347. BFD_RELOC_BFIN_16_IMM
  3348. ENUMDOC
  3349. ADI Blackfin 16 bit immediate absolute reloc.
  3350. ENUM
  3351. BFD_RELOC_BFIN_16_HIGH
  3352. ENUMDOC
  3353. ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
  3354. ENUM
  3355. BFD_RELOC_BFIN_4_PCREL
  3356. ENUMDOC
  3357. ADI Blackfin 'a' part of LSETUP.
  3358. ENUM
  3359. BFD_RELOC_BFIN_5_PCREL
  3360. ENUMDOC
  3361. ADI Blackfin.
  3362. ENUM
  3363. BFD_RELOC_BFIN_16_LOW
  3364. ENUMDOC
  3365. ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
  3366. ENUM
  3367. BFD_RELOC_BFIN_10_PCREL
  3368. ENUMDOC
  3369. ADI Blackfin.
  3370. ENUM
  3371. BFD_RELOC_BFIN_11_PCREL
  3372. ENUMDOC
  3373. ADI Blackfin 'b' part of LSETUP.
  3374. ENUM
  3375. BFD_RELOC_BFIN_12_PCREL_JUMP
  3376. ENUMDOC
  3377. ADI Blackfin.
  3378. ENUM
  3379. BFD_RELOC_BFIN_12_PCREL_JUMP_S
  3380. ENUMDOC
  3381. ADI Blackfin Short jump, pcrel.
  3382. ENUM
  3383. BFD_RELOC_BFIN_24_PCREL_CALL_X
  3384. ENUMDOC
  3385. ADI Blackfin Call.x not implemented.
  3386. ENUM
  3387. BFD_RELOC_BFIN_24_PCREL_JUMP_L
  3388. ENUMDOC
  3389. ADI Blackfin Long Jump pcrel.
  3390. ENUM
  3391. BFD_RELOC_BFIN_GOT17M4
  3392. ENUMX
  3393. BFD_RELOC_BFIN_GOTHI
  3394. ENUMX
  3395. BFD_RELOC_BFIN_GOTLO
  3396. ENUMX
  3397. BFD_RELOC_BFIN_FUNCDESC
  3398. ENUMX
  3399. BFD_RELOC_BFIN_FUNCDESC_GOT17M4
  3400. ENUMX
  3401. BFD_RELOC_BFIN_FUNCDESC_GOTHI
  3402. ENUMX
  3403. BFD_RELOC_BFIN_FUNCDESC_GOTLO
  3404. ENUMX
  3405. BFD_RELOC_BFIN_FUNCDESC_VALUE
  3406. ENUMX
  3407. BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
  3408. ENUMX
  3409. BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
  3410. ENUMX
  3411. BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
  3412. ENUMX
  3413. BFD_RELOC_BFIN_GOTOFF17M4
  3414. ENUMX
  3415. BFD_RELOC_BFIN_GOTOFFHI
  3416. ENUMX
  3417. BFD_RELOC_BFIN_GOTOFFLO
  3418. ENUMDOC
  3419. ADI Blackfin FD-PIC relocations.
  3420. ENUM
  3421. BFD_RELOC_BFIN_GOT
  3422. ENUMDOC
  3423. ADI Blackfin GOT relocation.
  3424. ENUM
  3425. BFD_RELOC_BFIN_PLTPC
  3426. ENUMDOC
  3427. ADI Blackfin PLTPC relocation.
  3428. ENUM
  3429. BFD_ARELOC_BFIN_PUSH
  3430. ENUMDOC
  3431. ADI Blackfin arithmetic relocation.
  3432. ENUM
  3433. BFD_ARELOC_BFIN_CONST
  3434. ENUMDOC
  3435. ADI Blackfin arithmetic relocation.
  3436. ENUM
  3437. BFD_ARELOC_BFIN_ADD
  3438. ENUMDOC
  3439. ADI Blackfin arithmetic relocation.
  3440. ENUM
  3441. BFD_ARELOC_BFIN_SUB
  3442. ENUMDOC
  3443. ADI Blackfin arithmetic relocation.
  3444. ENUM
  3445. BFD_ARELOC_BFIN_MULT
  3446. ENUMDOC
  3447. ADI Blackfin arithmetic relocation.
  3448. ENUM
  3449. BFD_ARELOC_BFIN_DIV
  3450. ENUMDOC
  3451. ADI Blackfin arithmetic relocation.
  3452. ENUM
  3453. BFD_ARELOC_BFIN_MOD
  3454. ENUMDOC
  3455. ADI Blackfin arithmetic relocation.
  3456. ENUM
  3457. BFD_ARELOC_BFIN_LSHIFT
  3458. ENUMDOC
  3459. ADI Blackfin arithmetic relocation.
  3460. ENUM
  3461. BFD_ARELOC_BFIN_RSHIFT
  3462. ENUMDOC
  3463. ADI Blackfin arithmetic relocation.
  3464. ENUM
  3465. BFD_ARELOC_BFIN_AND
  3466. ENUMDOC
  3467. ADI Blackfin arithmetic relocation.
  3468. ENUM
  3469. BFD_ARELOC_BFIN_OR
  3470. ENUMDOC
  3471. ADI Blackfin arithmetic relocation.
  3472. ENUM
  3473. BFD_ARELOC_BFIN_XOR
  3474. ENUMDOC
  3475. ADI Blackfin arithmetic relocation.
  3476. ENUM
  3477. BFD_ARELOC_BFIN_LAND
  3478. ENUMDOC
  3479. ADI Blackfin arithmetic relocation.
  3480. ENUM
  3481. BFD_ARELOC_BFIN_LOR
  3482. ENUMDOC
  3483. ADI Blackfin arithmetic relocation.
  3484. ENUM
  3485. BFD_ARELOC_BFIN_LEN
  3486. ENUMDOC
  3487. ADI Blackfin arithmetic relocation.
  3488. ENUM
  3489. BFD_ARELOC_BFIN_NEG
  3490. ENUMDOC
  3491. ADI Blackfin arithmetic relocation.
  3492. ENUM
  3493. BFD_ARELOC_BFIN_COMP
  3494. ENUMDOC
  3495. ADI Blackfin arithmetic relocation.
  3496. ENUM
  3497. BFD_ARELOC_BFIN_PAGE
  3498. ENUMDOC
  3499. ADI Blackfin arithmetic relocation.
  3500. ENUM
  3501. BFD_ARELOC_BFIN_HWPAGE
  3502. ENUMDOC
  3503. ADI Blackfin arithmetic relocation.
  3504. ENUM
  3505. BFD_ARELOC_BFIN_ADDR
  3506. ENUMDOC
  3507. ADI Blackfin arithmetic relocation.
  3508. ENUM
  3509. BFD_RELOC_D10V_10_PCREL_R
  3510. ENUMDOC
  3511. Mitsubishi D10V relocs.
  3512. This is a 10-bit reloc with the right 2 bits
  3513. assumed to be 0.
  3514. ENUM
  3515. BFD_RELOC_D10V_10_PCREL_L
  3516. ENUMDOC
  3517. Mitsubishi D10V relocs.
  3518. This is a 10-bit reloc with the right 2 bits
  3519. assumed to be 0. This is the same as the previous reloc
  3520. except it is in the left container, i.e.,
  3521. shifted left 15 bits.
  3522. ENUM
  3523. BFD_RELOC_D10V_18
  3524. ENUMDOC
  3525. This is an 18-bit reloc with the right 2 bits
  3526. assumed to be 0.
  3527. ENUM
  3528. BFD_RELOC_D10V_18_PCREL
  3529. ENUMDOC
  3530. This is an 18-bit reloc with the right 2 bits
  3531. assumed to be 0.
  3532. ENUM
  3533. BFD_RELOC_D30V_6
  3534. ENUMDOC
  3535. Mitsubishi D30V relocs.
  3536. This is a 6-bit absolute reloc.
  3537. ENUM
  3538. BFD_RELOC_D30V_9_PCREL
  3539. ENUMDOC
  3540. This is a 6-bit pc-relative reloc with
  3541. the right 3 bits assumed to be 0.
  3542. ENUM
  3543. BFD_RELOC_D30V_9_PCREL_R
  3544. ENUMDOC
  3545. This is a 6-bit pc-relative reloc with
  3546. the right 3 bits assumed to be 0. Same
  3547. as the previous reloc but on the right side
  3548. of the container.
  3549. ENUM
  3550. BFD_RELOC_D30V_15
  3551. ENUMDOC
  3552. This is a 12-bit absolute reloc with the
  3553. right 3 bitsassumed to be 0.
  3554. ENUM
  3555. BFD_RELOC_D30V_15_PCREL
  3556. ENUMDOC
  3557. This is a 12-bit pc-relative reloc with
  3558. the right 3 bits assumed to be 0.
  3559. ENUM
  3560. BFD_RELOC_D30V_15_PCREL_R
  3561. ENUMDOC
  3562. This is a 12-bit pc-relative reloc with
  3563. the right 3 bits assumed to be 0. Same
  3564. as the previous reloc but on the right side
  3565. of the container.
  3566. ENUM
  3567. BFD_RELOC_D30V_21
  3568. ENUMDOC
  3569. This is an 18-bit absolute reloc with
  3570. the right 3 bits assumed to be 0.
  3571. ENUM
  3572. BFD_RELOC_D30V_21_PCREL
  3573. ENUMDOC
  3574. This is an 18-bit pc-relative reloc with
  3575. the right 3 bits assumed to be 0.
  3576. ENUM
  3577. BFD_RELOC_D30V_21_PCREL_R
  3578. ENUMDOC
  3579. This is an 18-bit pc-relative reloc with
  3580. the right 3 bits assumed to be 0. Same
  3581. as the previous reloc but on the right side
  3582. of the container.
  3583. ENUM
  3584. BFD_RELOC_D30V_32
  3585. ENUMDOC
  3586. This is a 32-bit absolute reloc.
  3587. ENUM
  3588. BFD_RELOC_D30V_32_PCREL
  3589. ENUMDOC
  3590. This is a 32-bit pc-relative reloc.
  3591. ENUM
  3592. BFD_RELOC_DLX_HI16_S
  3593. ENUMDOC
  3594. DLX relocs
  3595. ENUM
  3596. BFD_RELOC_DLX_LO16
  3597. ENUMDOC
  3598. DLX relocs
  3599. ENUM
  3600. BFD_RELOC_DLX_JMP26
  3601. ENUMDOC
  3602. DLX relocs
  3603. ENUM
  3604. BFD_RELOC_M32C_HI8
  3605. ENUMX
  3606. BFD_RELOC_M32C_RL_JUMP
  3607. ENUMX
  3608. BFD_RELOC_M32C_RL_1ADDR
  3609. ENUMX
  3610. BFD_RELOC_M32C_RL_2ADDR
  3611. ENUMDOC
  3612. Renesas M16C/M32C Relocations.
  3613. ENUM
  3614. BFD_RELOC_M32R_24
  3615. ENUMDOC
  3616. Renesas M32R (formerly Mitsubishi M32R) relocs.
  3617. This is a 24 bit absolute address.
  3618. ENUM
  3619. BFD_RELOC_M32R_10_PCREL
  3620. ENUMDOC
  3621. This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.
  3622. ENUM
  3623. BFD_RELOC_M32R_18_PCREL
  3624. ENUMDOC
  3625. This is an 18-bit reloc with the right 2 bits assumed to be 0.
  3626. ENUM
  3627. BFD_RELOC_M32R_26_PCREL
  3628. ENUMDOC
  3629. This is a 26-bit reloc with the right 2 bits assumed to be 0.
  3630. ENUM
  3631. BFD_RELOC_M32R_HI16_ULO
  3632. ENUMDOC
  3633. This is a 16-bit reloc containing the high 16 bits of an address
  3634. used when the lower 16 bits are treated as unsigned.
  3635. ENUM
  3636. BFD_RELOC_M32R_HI16_SLO
  3637. ENUMDOC
  3638. This is a 16-bit reloc containing the high 16 bits of an address
  3639. used when the lower 16 bits are treated as signed.
  3640. ENUM
  3641. BFD_RELOC_M32R_LO16
  3642. ENUMDOC
  3643. This is a 16-bit reloc containing the lower 16 bits of an address.
  3644. ENUM
  3645. BFD_RELOC_M32R_SDA16
  3646. ENUMDOC
  3647. This is a 16-bit reloc containing the small data area offset for use in
  3648. add3, load, and store instructions.
  3649. ENUM
  3650. BFD_RELOC_M32R_GOT24
  3651. ENUMX
  3652. BFD_RELOC_M32R_26_PLTREL
  3653. ENUMX
  3654. BFD_RELOC_M32R_COPY
  3655. ENUMX
  3656. BFD_RELOC_M32R_GLOB_DAT
  3657. ENUMX
  3658. BFD_RELOC_M32R_JMP_SLOT
  3659. ENUMX
  3660. BFD_RELOC_M32R_RELATIVE
  3661. ENUMX
  3662. BFD_RELOC_M32R_GOTOFF
  3663. ENUMX
  3664. BFD_RELOC_M32R_GOTOFF_HI_ULO
  3665. ENUMX
  3666. BFD_RELOC_M32R_GOTOFF_HI_SLO
  3667. ENUMX
  3668. BFD_RELOC_M32R_GOTOFF_LO
  3669. ENUMX
  3670. BFD_RELOC_M32R_GOTPC24
  3671. ENUMX
  3672. BFD_RELOC_M32R_GOT16_HI_ULO
  3673. ENUMX
  3674. BFD_RELOC_M32R_GOT16_HI_SLO
  3675. ENUMX
  3676. BFD_RELOC_M32R_GOT16_LO
  3677. ENUMX
  3678. BFD_RELOC_M32R_GOTPC_HI_ULO
  3679. ENUMX
  3680. BFD_RELOC_M32R_GOTPC_HI_SLO
  3681. ENUMX
  3682. BFD_RELOC_M32R_GOTPC_LO
  3683. ENUMDOC
  3684. For PIC.
  3685. ENUM
  3686. BFD_RELOC_NDS32_20
  3687. ENUMDOC
  3688. NDS32 relocs.
  3689. This is a 20 bit absolute address.
  3690. ENUM
  3691. BFD_RELOC_NDS32_9_PCREL
  3692. ENUMDOC
  3693. This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
  3694. ENUM
  3695. BFD_RELOC_NDS32_WORD_9_PCREL
  3696. ENUMDOC
  3697. This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
  3698. ENUM
  3699. BFD_RELOC_NDS32_15_PCREL
  3700. ENUMDOC
  3701. This is an 15-bit reloc with the right 1 bit assumed to be 0.
  3702. ENUM
  3703. BFD_RELOC_NDS32_17_PCREL
  3704. ENUMDOC
  3705. This is an 17-bit reloc with the right 1 bit assumed to be 0.
  3706. ENUM
  3707. BFD_RELOC_NDS32_25_PCREL
  3708. ENUMDOC
  3709. This is a 25-bit reloc with the right 1 bit assumed to be 0.
  3710. ENUM
  3711. BFD_RELOC_NDS32_HI20
  3712. ENUMDOC
  3713. This is a 20-bit reloc containing the high 20 bits of an address
  3714. used with the lower 12 bits
  3715. ENUM
  3716. BFD_RELOC_NDS32_LO12S3
  3717. ENUMDOC
  3718. This is a 12-bit reloc containing the lower 12 bits of an address
  3719. then shift right by 3. This is used with ldi,sdi...
  3720. ENUM
  3721. BFD_RELOC_NDS32_LO12S2
  3722. ENUMDOC
  3723. This is a 12-bit reloc containing the lower 12 bits of an address
  3724. then shift left by 2. This is used with lwi,swi...
  3725. ENUM
  3726. BFD_RELOC_NDS32_LO12S1
  3727. ENUMDOC
  3728. This is a 12-bit reloc containing the lower 12 bits of an address
  3729. then shift left by 1. This is used with lhi,shi...
  3730. ENUM
  3731. BFD_RELOC_NDS32_LO12S0
  3732. ENUMDOC
  3733. This is a 12-bit reloc containing the lower 12 bits of an address
  3734. then shift left by 0. This is used with lbisbi...
  3735. ENUM
  3736. BFD_RELOC_NDS32_LO12S0_ORI
  3737. ENUMDOC
  3738. This is a 12-bit reloc containing the lower 12 bits of an address
  3739. then shift left by 0. This is only used with branch relaxations
  3740. ENUM
  3741. BFD_RELOC_NDS32_SDA15S3
  3742. ENUMDOC
  3743. This is a 15-bit reloc containing the small data area 18-bit signed offset
  3744. and shift left by 3 for use in ldi, sdi...
  3745. ENUM
  3746. BFD_RELOC_NDS32_SDA15S2
  3747. ENUMDOC
  3748. This is a 15-bit reloc containing the small data area 17-bit signed offset
  3749. and shift left by 2 for use in lwi, swi...
  3750. ENUM
  3751. BFD_RELOC_NDS32_SDA15S1
  3752. ENUMDOC
  3753. This is a 15-bit reloc containing the small data area 16-bit signed offset
  3754. and shift left by 1 for use in lhi, shi...
  3755. ENUM
  3756. BFD_RELOC_NDS32_SDA15S0
  3757. ENUMDOC
  3758. This is a 15-bit reloc containing the small data area 15-bit signed offset
  3759. and shift left by 0 for use in lbi, sbi...
  3760. ENUM
  3761. BFD_RELOC_NDS32_SDA16S3
  3762. ENUMDOC
  3763. This is a 16-bit reloc containing the small data area 16-bit signed offset
  3764. and shift left by 3
  3765. ENUM
  3766. BFD_RELOC_NDS32_SDA17S2
  3767. ENUMDOC
  3768. This is a 17-bit reloc containing the small data area 17-bit signed offset
  3769. and shift left by 2 for use in lwi.gp, swi.gp...
  3770. ENUM
  3771. BFD_RELOC_NDS32_SDA18S1
  3772. ENUMDOC
  3773. This is a 18-bit reloc containing the small data area 18-bit signed offset
  3774. and shift left by 1 for use in lhi.gp, shi.gp...
  3775. ENUM
  3776. BFD_RELOC_NDS32_SDA19S0
  3777. ENUMDOC
  3778. This is a 19-bit reloc containing the small data area 19-bit signed offset
  3779. and shift left by 0 for use in lbi.gp, sbi.gp...
  3780. ENUM
  3781. BFD_RELOC_NDS32_GOT20
  3782. ENUMX
  3783. BFD_RELOC_NDS32_9_PLTREL
  3784. ENUMX
  3785. BFD_RELOC_NDS32_25_PLTREL
  3786. ENUMX
  3787. BFD_RELOC_NDS32_COPY
  3788. ENUMX
  3789. BFD_RELOC_NDS32_GLOB_DAT
  3790. ENUMX
  3791. BFD_RELOC_NDS32_JMP_SLOT
  3792. ENUMX
  3793. BFD_RELOC_NDS32_RELATIVE
  3794. ENUMX
  3795. BFD_RELOC_NDS32_GOTOFF
  3796. ENUMX
  3797. BFD_RELOC_NDS32_GOTOFF_HI20
  3798. ENUMX
  3799. BFD_RELOC_NDS32_GOTOFF_LO12
  3800. ENUMX
  3801. BFD_RELOC_NDS32_GOTPC20
  3802. ENUMX
  3803. BFD_RELOC_NDS32_GOT_HI20
  3804. ENUMX
  3805. BFD_RELOC_NDS32_GOT_LO12
  3806. ENUMX
  3807. BFD_RELOC_NDS32_GOTPC_HI20
  3808. ENUMX
  3809. BFD_RELOC_NDS32_GOTPC_LO12
  3810. ENUMDOC
  3811. for PIC
  3812. ENUM
  3813. BFD_RELOC_NDS32_INSN16
  3814. ENUMX
  3815. BFD_RELOC_NDS32_LABEL
  3816. ENUMX
  3817. BFD_RELOC_NDS32_LONGCALL1
  3818. ENUMX
  3819. BFD_RELOC_NDS32_LONGCALL2
  3820. ENUMX
  3821. BFD_RELOC_NDS32_LONGCALL3
  3822. ENUMX
  3823. BFD_RELOC_NDS32_LONGJUMP1
  3824. ENUMX
  3825. BFD_RELOC_NDS32_LONGJUMP2
  3826. ENUMX
  3827. BFD_RELOC_NDS32_LONGJUMP3
  3828. ENUMX
  3829. BFD_RELOC_NDS32_LOADSTORE
  3830. ENUMX
  3831. BFD_RELOC_NDS32_9_FIXED
  3832. ENUMX
  3833. BFD_RELOC_NDS32_15_FIXED
  3834. ENUMX
  3835. BFD_RELOC_NDS32_17_FIXED
  3836. ENUMX
  3837. BFD_RELOC_NDS32_25_FIXED
  3838. ENUMX
  3839. BFD_RELOC_NDS32_LONGCALL4
  3840. ENUMX
  3841. BFD_RELOC_NDS32_LONGCALL5
  3842. ENUMX
  3843. BFD_RELOC_NDS32_LONGCALL6
  3844. ENUMX
  3845. BFD_RELOC_NDS32_LONGJUMP4
  3846. ENUMX
  3847. BFD_RELOC_NDS32_LONGJUMP5
  3848. ENUMX
  3849. BFD_RELOC_NDS32_LONGJUMP6
  3850. ENUMX
  3851. BFD_RELOC_NDS32_LONGJUMP7
  3852. ENUMDOC
  3853. for relax
  3854. ENUM
  3855. BFD_RELOC_NDS32_PLTREL_HI20
  3856. ENUMX
  3857. BFD_RELOC_NDS32_PLTREL_LO12
  3858. ENUMX
  3859. BFD_RELOC_NDS32_PLT_GOTREL_HI20
  3860. ENUMX
  3861. BFD_RELOC_NDS32_PLT_GOTREL_LO12
  3862. ENUMDOC
  3863. for PIC
  3864. ENUM
  3865. BFD_RELOC_NDS32_SDA12S2_DP
  3866. ENUMX
  3867. BFD_RELOC_NDS32_SDA12S2_SP
  3868. ENUMX
  3869. BFD_RELOC_NDS32_LO12S2_DP
  3870. ENUMX
  3871. BFD_RELOC_NDS32_LO12S2_SP
  3872. ENUMDOC
  3873. for floating point
  3874. ENUM
  3875. BFD_RELOC_NDS32_DWARF2_OP1
  3876. ENUMX
  3877. BFD_RELOC_NDS32_DWARF2_OP2
  3878. ENUMX
  3879. BFD_RELOC_NDS32_DWARF2_LEB
  3880. ENUMDOC
  3881. for dwarf2 debug_line.
  3882. ENUM
  3883. BFD_RELOC_NDS32_UPDATE_TA
  3884. ENUMDOC
  3885. for eliminate 16-bit instructions
  3886. ENUM
  3887. BFD_RELOC_NDS32_PLT_GOTREL_LO20
  3888. ENUMX
  3889. BFD_RELOC_NDS32_PLT_GOTREL_LO15
  3890. ENUMX
  3891. BFD_RELOC_NDS32_PLT_GOTREL_LO19
  3892. ENUMX
  3893. BFD_RELOC_NDS32_GOT_LO15
  3894. ENUMX
  3895. BFD_RELOC_NDS32_GOT_LO19
  3896. ENUMX
  3897. BFD_RELOC_NDS32_GOTOFF_LO15
  3898. ENUMX
  3899. BFD_RELOC_NDS32_GOTOFF_LO19
  3900. ENUMX
  3901. BFD_RELOC_NDS32_GOT15S2
  3902. ENUMX
  3903. BFD_RELOC_NDS32_GOT17S2
  3904. ENUMDOC
  3905. for PIC object relaxation
  3906. ENUM
  3907. BFD_RELOC_NDS32_5
  3908. ENUMDOC
  3909. NDS32 relocs.
  3910. This is a 5 bit absolute address.
  3911. ENUM
  3912. BFD_RELOC_NDS32_10_UPCREL
  3913. ENUMDOC
  3914. This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0.
  3915. ENUM
  3916. BFD_RELOC_NDS32_SDA_FP7U2_RELA
  3917. ENUMDOC
  3918. If fp were omitted, fp can used as another gp.
  3919. ENUM
  3920. BFD_RELOC_NDS32_RELAX_ENTRY
  3921. ENUMX
  3922. BFD_RELOC_NDS32_GOT_SUFF
  3923. ENUMX
  3924. BFD_RELOC_NDS32_GOTOFF_SUFF
  3925. ENUMX
  3926. BFD_RELOC_NDS32_PLT_GOT_SUFF
  3927. ENUMX
  3928. BFD_RELOC_NDS32_MULCALL_SUFF
  3929. ENUMX
  3930. BFD_RELOC_NDS32_PTR
  3931. ENUMX
  3932. BFD_RELOC_NDS32_PTR_COUNT
  3933. ENUMX
  3934. BFD_RELOC_NDS32_PTR_RESOLVED
  3935. ENUMX
  3936. BFD_RELOC_NDS32_PLTBLOCK
  3937. ENUMX
  3938. BFD_RELOC_NDS32_RELAX_REGION_BEGIN
  3939. ENUMX
  3940. BFD_RELOC_NDS32_RELAX_REGION_END
  3941. ENUMX
  3942. BFD_RELOC_NDS32_MINUEND
  3943. ENUMX
  3944. BFD_RELOC_NDS32_SUBTRAHEND
  3945. ENUMX
  3946. BFD_RELOC_NDS32_DIFF8
  3947. ENUMX
  3948. BFD_RELOC_NDS32_DIFF16
  3949. ENUMX
  3950. BFD_RELOC_NDS32_DIFF32
  3951. ENUMX
  3952. BFD_RELOC_NDS32_DIFF_ULEB128
  3953. ENUMX
  3954. BFD_RELOC_NDS32_EMPTY
  3955. ENUMDOC
  3956. relaxation relative relocation types
  3957. ENUM
  3958. BFD_RELOC_NDS32_25_ABS
  3959. ENUMDOC
  3960. This is a 25 bit absolute address.
  3961. ENUM
  3962. BFD_RELOC_NDS32_DATA
  3963. ENUMX
  3964. BFD_RELOC_NDS32_TRAN
  3965. ENUMX
  3966. BFD_RELOC_NDS32_17IFC_PCREL
  3967. ENUMX
  3968. BFD_RELOC_NDS32_10IFCU_PCREL
  3969. ENUMDOC
  3970. For ex9 and ifc using.
  3971. ENUM
  3972. BFD_RELOC_NDS32_TPOFF
  3973. ENUMX
  3974. BFD_RELOC_NDS32_TLS_LE_HI20
  3975. ENUMX
  3976. BFD_RELOC_NDS32_TLS_LE_LO12
  3977. ENUMX
  3978. BFD_RELOC_NDS32_TLS_LE_ADD
  3979. ENUMX
  3980. BFD_RELOC_NDS32_TLS_LE_LS
  3981. ENUMX
  3982. BFD_RELOC_NDS32_GOTTPOFF
  3983. ENUMX
  3984. BFD_RELOC_NDS32_TLS_IE_HI20
  3985. ENUMX
  3986. BFD_RELOC_NDS32_TLS_IE_LO12S2
  3987. ENUMX
  3988. BFD_RELOC_NDS32_TLS_TPOFF
  3989. ENUMX
  3990. BFD_RELOC_NDS32_TLS_LE_20
  3991. ENUMX
  3992. BFD_RELOC_NDS32_TLS_LE_15S0
  3993. ENUMX
  3994. BFD_RELOC_NDS32_TLS_LE_15S1
  3995. ENUMX
  3996. BFD_RELOC_NDS32_TLS_LE_15S2
  3997. ENUMDOC
  3998. For TLS.
  3999. ENUM
  4000. BFD_RELOC_V850_9_PCREL
  4001. ENUMDOC
  4002. This is a 9-bit reloc
  4003. ENUM
  4004. BFD_RELOC_V850_22_PCREL
  4005. ENUMDOC
  4006. This is a 22-bit reloc
  4007. ENUM
  4008. BFD_RELOC_V850_SDA_16_16_OFFSET
  4009. ENUMDOC
  4010. This is a 16 bit offset from the short data area pointer.
  4011. ENUM
  4012. BFD_RELOC_V850_SDA_15_16_OFFSET
  4013. ENUMDOC
  4014. This is a 16 bit offset (of which only 15 bits are used) from the
  4015. short data area pointer.
  4016. ENUM
  4017. BFD_RELOC_V850_ZDA_16_16_OFFSET
  4018. ENUMDOC
  4019. This is a 16 bit offset from the zero data area pointer.
  4020. ENUM
  4021. BFD_RELOC_V850_ZDA_15_16_OFFSET
  4022. ENUMDOC
  4023. This is a 16 bit offset (of which only 15 bits are used) from the
  4024. zero data area pointer.
  4025. ENUM
  4026. BFD_RELOC_V850_TDA_6_8_OFFSET
  4027. ENUMDOC
  4028. This is an 8 bit offset (of which only 6 bits are used) from the
  4029. tiny data area pointer.
  4030. ENUM
  4031. BFD_RELOC_V850_TDA_7_8_OFFSET
  4032. ENUMDOC
  4033. This is an 8bit offset (of which only 7 bits are used) from the tiny
  4034. data area pointer.
  4035. ENUM
  4036. BFD_RELOC_V850_TDA_7_7_OFFSET
  4037. ENUMDOC
  4038. This is a 7 bit offset from the tiny data area pointer.
  4039. ENUM
  4040. BFD_RELOC_V850_TDA_16_16_OFFSET
  4041. ENUMDOC
  4042. This is a 16 bit offset from the tiny data area pointer.
  4043. COMMENT
  4044. ENUM
  4045. BFD_RELOC_V850_TDA_4_5_OFFSET
  4046. ENUMDOC
  4047. This is a 5 bit offset (of which only 4 bits are used) from the tiny
  4048. data area pointer.
  4049. ENUM
  4050. BFD_RELOC_V850_TDA_4_4_OFFSET
  4051. ENUMDOC
  4052. This is a 4 bit offset from the tiny data area pointer.
  4053. ENUM
  4054. BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
  4055. ENUMDOC
  4056. This is a 16 bit offset from the short data area pointer, with the
  4057. bits placed non-contiguously in the instruction.
  4058. ENUM
  4059. BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
  4060. ENUMDOC
  4061. This is a 16 bit offset from the zero data area pointer, with the
  4062. bits placed non-contiguously in the instruction.
  4063. ENUM
  4064. BFD_RELOC_V850_CALLT_6_7_OFFSET
  4065. ENUMDOC
  4066. This is a 6 bit offset from the call table base pointer.
  4067. ENUM
  4068. BFD_RELOC_V850_CALLT_16_16_OFFSET
  4069. ENUMDOC
  4070. This is a 16 bit offset from the call table base pointer.
  4071. ENUM
  4072. BFD_RELOC_V850_LONGCALL
  4073. ENUMDOC
  4074. Used for relaxing indirect function calls.
  4075. ENUM
  4076. BFD_RELOC_V850_LONGJUMP
  4077. ENUMDOC
  4078. Used for relaxing indirect jumps.
  4079. ENUM
  4080. BFD_RELOC_V850_ALIGN
  4081. ENUMDOC
  4082. Used to maintain alignment whilst relaxing.
  4083. ENUM
  4084. BFD_RELOC_V850_LO16_SPLIT_OFFSET
  4085. ENUMDOC
  4086. This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
  4087. instructions.
  4088. ENUM
  4089. BFD_RELOC_V850_16_PCREL
  4090. ENUMDOC
  4091. This is a 16-bit reloc.
  4092. ENUM
  4093. BFD_RELOC_V850_17_PCREL
  4094. ENUMDOC
  4095. This is a 17-bit reloc.
  4096. ENUM
  4097. BFD_RELOC_V850_23
  4098. ENUMDOC
  4099. This is a 23-bit reloc.
  4100. ENUM
  4101. BFD_RELOC_V850_32_PCREL
  4102. ENUMDOC
  4103. This is a 32-bit reloc.
  4104. ENUM
  4105. BFD_RELOC_V850_32_ABS
  4106. ENUMDOC
  4107. This is a 32-bit reloc.
  4108. ENUM
  4109. BFD_RELOC_V850_16_SPLIT_OFFSET
  4110. ENUMDOC
  4111. This is a 16-bit reloc.
  4112. ENUM
  4113. BFD_RELOC_V850_16_S1
  4114. ENUMDOC
  4115. This is a 16-bit reloc.
  4116. ENUM
  4117. BFD_RELOC_V850_LO16_S1
  4118. ENUMDOC
  4119. Low 16 bits. 16 bit shifted by 1.
  4120. ENUM
  4121. BFD_RELOC_V850_CALLT_15_16_OFFSET
  4122. ENUMDOC
  4123. This is a 16 bit offset from the call table base pointer.
  4124. ENUM
  4125. BFD_RELOC_V850_32_GOTPCREL
  4126. ENUMDOC
  4127. DSO relocations.
  4128. ENUM
  4129. BFD_RELOC_V850_16_GOT
  4130. ENUMDOC
  4131. DSO relocations.
  4132. ENUM
  4133. BFD_RELOC_V850_32_GOT
  4134. ENUMDOC
  4135. DSO relocations.
  4136. ENUM
  4137. BFD_RELOC_V850_22_PLT_PCREL
  4138. ENUMDOC
  4139. DSO relocations.
  4140. ENUM
  4141. BFD_RELOC_V850_32_PLT_PCREL
  4142. ENUMDOC
  4143. DSO relocations.
  4144. ENUM
  4145. BFD_RELOC_V850_COPY
  4146. ENUMDOC
  4147. DSO relocations.
  4148. ENUM
  4149. BFD_RELOC_V850_GLOB_DAT
  4150. ENUMDOC
  4151. DSO relocations.
  4152. ENUM
  4153. BFD_RELOC_V850_JMP_SLOT
  4154. ENUMDOC
  4155. DSO relocations.
  4156. ENUM
  4157. BFD_RELOC_V850_RELATIVE
  4158. ENUMDOC
  4159. DSO relocations.
  4160. ENUM
  4161. BFD_RELOC_V850_16_GOTOFF
  4162. ENUMDOC
  4163. DSO relocations.
  4164. ENUM
  4165. BFD_RELOC_V850_32_GOTOFF
  4166. ENUMDOC
  4167. DSO relocations.
  4168. ENUM
  4169. BFD_RELOC_V850_CODE
  4170. ENUMDOC
  4171. start code.
  4172. ENUM
  4173. BFD_RELOC_V850_DATA
  4174. ENUMDOC
  4175. start data in text.
  4176. ENUM
  4177. BFD_RELOC_TIC30_LDP
  4178. ENUMDOC
  4179. This is a 8bit DP reloc for the tms320c30, where the most
  4180. significant 8 bits of a 24 bit word are placed into the least
  4181. significant 8 bits of the opcode.
  4182. ENUM
  4183. BFD_RELOC_TIC54X_PARTLS7
  4184. ENUMDOC
  4185. This is a 7bit reloc for the tms320c54x, where the least
  4186. significant 7 bits of a 16 bit word are placed into the least
  4187. significant 7 bits of the opcode.
  4188. ENUM
  4189. BFD_RELOC_TIC54X_PARTMS9
  4190. ENUMDOC
  4191. This is a 9bit DP reloc for the tms320c54x, where the most
  4192. significant 9 bits of a 16 bit word are placed into the least
  4193. significant 9 bits of the opcode.
  4194. ENUM
  4195. BFD_RELOC_TIC54X_23
  4196. ENUMDOC
  4197. This is an extended address 23-bit reloc for the tms320c54x.
  4198. ENUM
  4199. BFD_RELOC_TIC54X_16_OF_23
  4200. ENUMDOC
  4201. This is a 16-bit reloc for the tms320c54x, where the least
  4202. significant 16 bits of a 23-bit extended address are placed into
  4203. the opcode.
  4204. ENUM
  4205. BFD_RELOC_TIC54X_MS7_OF_23
  4206. ENUMDOC
  4207. This is a reloc for the tms320c54x, where the most
  4208. significant 7 bits of a 23-bit extended address are placed into
  4209. the opcode.
  4210. ENUM
  4211. BFD_RELOC_C6000_PCR_S21
  4212. ENUMX
  4213. BFD_RELOC_C6000_PCR_S12
  4214. ENUMX
  4215. BFD_RELOC_C6000_PCR_S10
  4216. ENUMX
  4217. BFD_RELOC_C6000_PCR_S7
  4218. ENUMX
  4219. BFD_RELOC_C6000_ABS_S16
  4220. ENUMX
  4221. BFD_RELOC_C6000_ABS_L16
  4222. ENUMX
  4223. BFD_RELOC_C6000_ABS_H16
  4224. ENUMX
  4225. BFD_RELOC_C6000_SBR_U15_B
  4226. ENUMX
  4227. BFD_RELOC_C6000_SBR_U15_H
  4228. ENUMX
  4229. BFD_RELOC_C6000_SBR_U15_W
  4230. ENUMX
  4231. BFD_RELOC_C6000_SBR_S16
  4232. ENUMX
  4233. BFD_RELOC_C6000_SBR_L16_B
  4234. ENUMX
  4235. BFD_RELOC_C6000_SBR_L16_H
  4236. ENUMX
  4237. BFD_RELOC_C6000_SBR_L16_W
  4238. ENUMX
  4239. BFD_RELOC_C6000_SBR_H16_B
  4240. ENUMX
  4241. BFD_RELOC_C6000_SBR_H16_H
  4242. ENUMX
  4243. BFD_RELOC_C6000_SBR_H16_W
  4244. ENUMX
  4245. BFD_RELOC_C6000_SBR_GOT_U15_W
  4246. ENUMX
  4247. BFD_RELOC_C6000_SBR_GOT_L16_W
  4248. ENUMX
  4249. BFD_RELOC_C6000_SBR_GOT_H16_W
  4250. ENUMX
  4251. BFD_RELOC_C6000_DSBT_INDEX
  4252. ENUMX
  4253. BFD_RELOC_C6000_PREL31
  4254. ENUMX
  4255. BFD_RELOC_C6000_COPY
  4256. ENUMX
  4257. BFD_RELOC_C6000_JUMP_SLOT
  4258. ENUMX
  4259. BFD_RELOC_C6000_EHTYPE
  4260. ENUMX
  4261. BFD_RELOC_C6000_PCR_H16
  4262. ENUMX
  4263. BFD_RELOC_C6000_PCR_L16
  4264. ENUMX
  4265. BFD_RELOC_C6000_ALIGN
  4266. ENUMX
  4267. BFD_RELOC_C6000_FPHEAD
  4268. ENUMX
  4269. BFD_RELOC_C6000_NOCMP
  4270. ENUMDOC
  4271. TMS320C6000 relocations.
  4272. ENUM
  4273. BFD_RELOC_FR30_48
  4274. ENUMDOC
  4275. This is a 48 bit reloc for the FR30 that stores 32 bits.
  4276. ENUM
  4277. BFD_RELOC_FR30_20
  4278. ENUMDOC
  4279. This is a 32 bit reloc for the FR30 that stores 20 bits split up into
  4280. two sections.
  4281. ENUM
  4282. BFD_RELOC_FR30_6_IN_4
  4283. ENUMDOC
  4284. This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
  4285. 4 bits.
  4286. ENUM
  4287. BFD_RELOC_FR30_8_IN_8
  4288. ENUMDOC
  4289. This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
  4290. into 8 bits.
  4291. ENUM
  4292. BFD_RELOC_FR30_9_IN_8
  4293. ENUMDOC
  4294. This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
  4295. into 8 bits.
  4296. ENUM
  4297. BFD_RELOC_FR30_10_IN_8
  4298. ENUMDOC
  4299. This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
  4300. into 8 bits.
  4301. ENUM
  4302. BFD_RELOC_FR30_9_PCREL
  4303. ENUMDOC
  4304. This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
  4305. short offset into 8 bits.
  4306. ENUM
  4307. BFD_RELOC_FR30_12_PCREL
  4308. ENUMDOC
  4309. This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
  4310. short offset into 11 bits.
  4311. ENUM
  4312. BFD_RELOC_MCORE_PCREL_IMM8BY4
  4313. ENUMX
  4314. BFD_RELOC_MCORE_PCREL_IMM11BY2
  4315. ENUMX
  4316. BFD_RELOC_MCORE_PCREL_IMM4BY2
  4317. ENUMX
  4318. BFD_RELOC_MCORE_PCREL_32
  4319. ENUMX
  4320. BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
  4321. ENUMX
  4322. BFD_RELOC_MCORE_RVA
  4323. ENUMDOC
  4324. Motorola Mcore relocations.
  4325. ENUM
  4326. BFD_RELOC_MEP_8
  4327. ENUMX
  4328. BFD_RELOC_MEP_16
  4329. ENUMX
  4330. BFD_RELOC_MEP_32
  4331. ENUMX
  4332. BFD_RELOC_MEP_PCREL8A2
  4333. ENUMX
  4334. BFD_RELOC_MEP_PCREL12A2
  4335. ENUMX
  4336. BFD_RELOC_MEP_PCREL17A2
  4337. ENUMX
  4338. BFD_RELOC_MEP_PCREL24A2
  4339. ENUMX
  4340. BFD_RELOC_MEP_PCABS24A2
  4341. ENUMX
  4342. BFD_RELOC_MEP_LOW16
  4343. ENUMX
  4344. BFD_RELOC_MEP_HI16U
  4345. ENUMX
  4346. BFD_RELOC_MEP_HI16S
  4347. ENUMX
  4348. BFD_RELOC_MEP_GPREL
  4349. ENUMX
  4350. BFD_RELOC_MEP_TPREL
  4351. ENUMX
  4352. BFD_RELOC_MEP_TPREL7
  4353. ENUMX
  4354. BFD_RELOC_MEP_TPREL7A2
  4355. ENUMX
  4356. BFD_RELOC_MEP_TPREL7A4
  4357. ENUMX
  4358. BFD_RELOC_MEP_UIMM24
  4359. ENUMX
  4360. BFD_RELOC_MEP_ADDR24A4
  4361. ENUMX
  4362. BFD_RELOC_MEP_GNU_VTINHERIT
  4363. ENUMX
  4364. BFD_RELOC_MEP_GNU_VTENTRY
  4365. ENUMDOC
  4366. Toshiba Media Processor Relocations.
  4367. COMMENT
  4368. ENUM
  4369. BFD_RELOC_METAG_HIADDR16
  4370. ENUMX
  4371. BFD_RELOC_METAG_LOADDR16
  4372. ENUMX
  4373. BFD_RELOC_METAG_RELBRANCH
  4374. ENUMX
  4375. BFD_RELOC_METAG_GETSETOFF
  4376. ENUMX
  4377. BFD_RELOC_METAG_HIOG
  4378. ENUMX
  4379. BFD_RELOC_METAG_LOOG
  4380. ENUMX
  4381. BFD_RELOC_METAG_REL8
  4382. ENUMX
  4383. BFD_RELOC_METAG_REL16
  4384. ENUMX
  4385. BFD_RELOC_METAG_HI16_GOTOFF
  4386. ENUMX
  4387. BFD_RELOC_METAG_LO16_GOTOFF
  4388. ENUMX
  4389. BFD_RELOC_METAG_GETSET_GOTOFF
  4390. ENUMX
  4391. BFD_RELOC_METAG_GETSET_GOT
  4392. ENUMX
  4393. BFD_RELOC_METAG_HI16_GOTPC
  4394. ENUMX
  4395. BFD_RELOC_METAG_LO16_GOTPC
  4396. ENUMX
  4397. BFD_RELOC_METAG_HI16_PLT
  4398. ENUMX
  4399. BFD_RELOC_METAG_LO16_PLT
  4400. ENUMX
  4401. BFD_RELOC_METAG_RELBRANCH_PLT
  4402. ENUMX
  4403. BFD_RELOC_METAG_GOTOFF
  4404. ENUMX
  4405. BFD_RELOC_METAG_PLT
  4406. ENUMX
  4407. BFD_RELOC_METAG_COPY
  4408. ENUMX
  4409. BFD_RELOC_METAG_JMP_SLOT
  4410. ENUMX
  4411. BFD_RELOC_METAG_RELATIVE
  4412. ENUMX
  4413. BFD_RELOC_METAG_GLOB_DAT
  4414. ENUMX
  4415. BFD_RELOC_METAG_TLS_GD
  4416. ENUMX
  4417. BFD_RELOC_METAG_TLS_LDM
  4418. ENUMX
  4419. BFD_RELOC_METAG_TLS_LDO_HI16
  4420. ENUMX
  4421. BFD_RELOC_METAG_TLS_LDO_LO16
  4422. ENUMX
  4423. BFD_RELOC_METAG_TLS_LDO
  4424. ENUMX
  4425. BFD_RELOC_METAG_TLS_IE
  4426. ENUMX
  4427. BFD_RELOC_METAG_TLS_IENONPIC
  4428. ENUMX
  4429. BFD_RELOC_METAG_TLS_IENONPIC_HI16
  4430. ENUMX
  4431. BFD_RELOC_METAG_TLS_IENONPIC_LO16
  4432. ENUMX
  4433. BFD_RELOC_METAG_TLS_TPOFF
  4434. ENUMX
  4435. BFD_RELOC_METAG_TLS_DTPMOD
  4436. ENUMX
  4437. BFD_RELOC_METAG_TLS_DTPOFF
  4438. ENUMX
  4439. BFD_RELOC_METAG_TLS_LE
  4440. ENUMX
  4441. BFD_RELOC_METAG_TLS_LE_HI16
  4442. ENUMX
  4443. BFD_RELOC_METAG_TLS_LE_LO16
  4444. ENUMDOC
  4445. Imagination Technologies Meta relocations.
  4446. ENUM
  4447. BFD_RELOC_MMIX_GETA
  4448. ENUMX
  4449. BFD_RELOC_MMIX_GETA_1
  4450. ENUMX
  4451. BFD_RELOC_MMIX_GETA_2
  4452. ENUMX
  4453. BFD_RELOC_MMIX_GETA_3
  4454. ENUMDOC
  4455. These are relocations for the GETA instruction.
  4456. ENUM
  4457. BFD_RELOC_MMIX_CBRANCH
  4458. ENUMX
  4459. BFD_RELOC_MMIX_CBRANCH_J
  4460. ENUMX
  4461. BFD_RELOC_MMIX_CBRANCH_1
  4462. ENUMX
  4463. BFD_RELOC_MMIX_CBRANCH_2
  4464. ENUMX
  4465. BFD_RELOC_MMIX_CBRANCH_3
  4466. ENUMDOC
  4467. These are relocations for a conditional branch instruction.
  4468. ENUM
  4469. BFD_RELOC_MMIX_PUSHJ
  4470. ENUMX
  4471. BFD_RELOC_MMIX_PUSHJ_1
  4472. ENUMX
  4473. BFD_RELOC_MMIX_PUSHJ_2
  4474. ENUMX
  4475. BFD_RELOC_MMIX_PUSHJ_3
  4476. ENUMX
  4477. BFD_RELOC_MMIX_PUSHJ_STUBBABLE
  4478. ENUMDOC
  4479. These are relocations for the PUSHJ instruction.
  4480. ENUM
  4481. BFD_RELOC_MMIX_JMP
  4482. ENUMX
  4483. BFD_RELOC_MMIX_JMP_1
  4484. ENUMX
  4485. BFD_RELOC_MMIX_JMP_2
  4486. ENUMX
  4487. BFD_RELOC_MMIX_JMP_3
  4488. ENUMDOC
  4489. These are relocations for the JMP instruction.
  4490. ENUM
  4491. BFD_RELOC_MMIX_ADDR19
  4492. ENUMDOC
  4493. This is a relocation for a relative address as in a GETA instruction or
  4494. a branch.
  4495. ENUM
  4496. BFD_RELOC_MMIX_ADDR27
  4497. ENUMDOC
  4498. This is a relocation for a relative address as in a JMP instruction.
  4499. ENUM
  4500. BFD_RELOC_MMIX_REG_OR_BYTE
  4501. ENUMDOC
  4502. This is a relocation for an instruction field that may be a general
  4503. register or a value 0..255.
  4504. ENUM
  4505. BFD_RELOC_MMIX_REG
  4506. ENUMDOC
  4507. This is a relocation for an instruction field that may be a general
  4508. register.
  4509. ENUM
  4510. BFD_RELOC_MMIX_BASE_PLUS_OFFSET
  4511. ENUMDOC
  4512. This is a relocation for two instruction fields holding a register and
  4513. an offset, the equivalent of the relocation.
  4514. ENUM
  4515. BFD_RELOC_MMIX_LOCAL
  4516. ENUMDOC
  4517. This relocation is an assertion that the expression is not allocated as
  4518. a global register. It does not modify contents.
  4519. ENUM
  4520. BFD_RELOC_AVR_7_PCREL
  4521. ENUMDOC
  4522. This is a 16 bit reloc for the AVR that stores 8 bit pc relative
  4523. short offset into 7 bits.
  4524. ENUM
  4525. BFD_RELOC_AVR_13_PCREL
  4526. ENUMDOC
  4527. This is a 16 bit reloc for the AVR that stores 13 bit pc relative
  4528. short offset into 12 bits.
  4529. ENUM
  4530. BFD_RELOC_AVR_16_PM
  4531. ENUMDOC
  4532. This is a 16 bit reloc for the AVR that stores 17 bit value (usually
  4533. program memory address) into 16 bits.
  4534. ENUM
  4535. BFD_RELOC_AVR_LO8_LDI
  4536. ENUMDOC
  4537. This is a 16 bit reloc for the AVR that stores 8 bit value (usually
  4538. data memory address) into 8 bit immediate value of LDI insn.
  4539. ENUM
  4540. BFD_RELOC_AVR_HI8_LDI
  4541. ENUMDOC
  4542. This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
  4543. of data memory address) into 8 bit immediate value of LDI insn.
  4544. ENUM
  4545. BFD_RELOC_AVR_HH8_LDI
  4546. ENUMDOC
  4547. This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
  4548. of program memory address) into 8 bit immediate value of LDI insn.
  4549. ENUM
  4550. BFD_RELOC_AVR_MS8_LDI
  4551. ENUMDOC
  4552. This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
  4553. of 32 bit value) into 8 bit immediate value of LDI insn.
  4554. ENUM
  4555. BFD_RELOC_AVR_LO8_LDI_NEG
  4556. ENUMDOC
  4557. This is a 16 bit reloc for the AVR that stores negated 8 bit value
  4558. (usually data memory address) into 8 bit immediate value of SUBI insn.
  4559. ENUM
  4560. BFD_RELOC_AVR_HI8_LDI_NEG
  4561. ENUMDOC
  4562. This is a 16 bit reloc for the AVR that stores negated 8 bit value
  4563. (high 8 bit of data memory address) into 8 bit immediate value of
  4564. SUBI insn.
  4565. ENUM
  4566. BFD_RELOC_AVR_HH8_LDI_NEG
  4567. ENUMDOC
  4568. This is a 16 bit reloc for the AVR that stores negated 8 bit value
  4569. (most high 8 bit of program memory address) into 8 bit immediate value
  4570. of LDI or SUBI insn.
  4571. ENUM
  4572. BFD_RELOC_AVR_MS8_LDI_NEG
  4573. ENUMDOC
  4574. This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
  4575. of 32 bit value) into 8 bit immediate value of LDI insn.
  4576. ENUM
  4577. BFD_RELOC_AVR_LO8_LDI_PM
  4578. ENUMDOC
  4579. This is a 16 bit reloc for the AVR that stores 8 bit value (usually
  4580. command address) into 8 bit immediate value of LDI insn.
  4581. ENUM
  4582. BFD_RELOC_AVR_LO8_LDI_GS
  4583. ENUMDOC
  4584. This is a 16 bit reloc for the AVR that stores 8 bit value
  4585. (command address) into 8 bit immediate value of LDI insn. If the address
  4586. is beyond the 128k boundary, the linker inserts a jump stub for this reloc
  4587. in the lower 128k.
  4588. ENUM
  4589. BFD_RELOC_AVR_HI8_LDI_PM
  4590. ENUMDOC
  4591. This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
  4592. of command address) into 8 bit immediate value of LDI insn.
  4593. ENUM
  4594. BFD_RELOC_AVR_HI8_LDI_GS
  4595. ENUMDOC
  4596. This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
  4597. of command address) into 8 bit immediate value of LDI insn. If the address
  4598. is beyond the 128k boundary, the linker inserts a jump stub for this reloc
  4599. below 128k.
  4600. ENUM
  4601. BFD_RELOC_AVR_HH8_LDI_PM
  4602. ENUMDOC
  4603. This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
  4604. of command address) into 8 bit immediate value of LDI insn.
  4605. ENUM
  4606. BFD_RELOC_AVR_LO8_LDI_PM_NEG
  4607. ENUMDOC
  4608. This is a 16 bit reloc for the AVR that stores negated 8 bit value
  4609. (usually command address) into 8 bit immediate value of SUBI insn.
  4610. ENUM
  4611. BFD_RELOC_AVR_HI8_LDI_PM_NEG
  4612. ENUMDOC
  4613. This is a 16 bit reloc for the AVR that stores negated 8 bit value
  4614. (high 8 bit of 16 bit command address) into 8 bit immediate value
  4615. of SUBI insn.
  4616. ENUM
  4617. BFD_RELOC_AVR_HH8_LDI_PM_NEG
  4618. ENUMDOC
  4619. This is a 16 bit reloc for the AVR that stores negated 8 bit value
  4620. (high 6 bit of 22 bit command address) into 8 bit immediate
  4621. value of SUBI insn.
  4622. ENUM
  4623. BFD_RELOC_AVR_CALL
  4624. ENUMDOC
  4625. This is a 32 bit reloc for the AVR that stores 23 bit value
  4626. into 22 bits.
  4627. ENUM
  4628. BFD_RELOC_AVR_LDI
  4629. ENUMDOC
  4630. This is a 16 bit reloc for the AVR that stores all needed bits
  4631. for absolute addressing with ldi with overflow check to linktime
  4632. ENUM
  4633. BFD_RELOC_AVR_6
  4634. ENUMDOC
  4635. This is a 6 bit reloc for the AVR that stores offset for ldd/std
  4636. instructions
  4637. ENUM
  4638. BFD_RELOC_AVR_6_ADIW
  4639. ENUMDOC
  4640. This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
  4641. instructions
  4642. ENUM
  4643. BFD_RELOC_AVR_8_LO
  4644. ENUMDOC
  4645. This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
  4646. in .byte lo8(symbol)
  4647. ENUM
  4648. BFD_RELOC_AVR_8_HI
  4649. ENUMDOC
  4650. This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
  4651. in .byte hi8(symbol)
  4652. ENUM
  4653. BFD_RELOC_AVR_8_HLO
  4654. ENUMDOC
  4655. This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
  4656. in .byte hlo8(symbol)
  4657. ENUM
  4658. BFD_RELOC_AVR_DIFF8
  4659. ENUMX
  4660. BFD_RELOC_AVR_DIFF16
  4661. ENUMX
  4662. BFD_RELOC_AVR_DIFF32
  4663. ENUMDOC
  4664. AVR relocations to mark the difference of two local symbols.
  4665. These are only needed to support linker relaxation and can be ignored
  4666. when not relaxing. The field is set to the value of the difference
  4667. assuming no relaxation. The relocation encodes the position of the
  4668. second symbol so the linker can determine whether to adjust the field
  4669. value.
  4670. ENUM
  4671. BFD_RELOC_AVR_LDS_STS_16
  4672. ENUMDOC
  4673. This is a 7 bit reloc for the AVR that stores SRAM address for 16bit
  4674. lds and sts instructions supported only tiny core.
  4675. ENUM
  4676. BFD_RELOC_AVR_PORT6
  4677. ENUMDOC
  4678. This is a 6 bit reloc for the AVR that stores an I/O register
  4679. number for the IN and OUT instructions
  4680. ENUM
  4681. BFD_RELOC_AVR_PORT5
  4682. ENUMDOC
  4683. This is a 5 bit reloc for the AVR that stores an I/O register
  4684. number for the SBIC, SBIS, SBI and CBI instructions
  4685. ENUM
  4686. BFD_RELOC_RL78_NEG8
  4687. ENUMX
  4688. BFD_RELOC_RL78_NEG16
  4689. ENUMX
  4690. BFD_RELOC_RL78_NEG24
  4691. ENUMX
  4692. BFD_RELOC_RL78_NEG32
  4693. ENUMX
  4694. BFD_RELOC_RL78_16_OP
  4695. ENUMX
  4696. BFD_RELOC_RL78_24_OP
  4697. ENUMX
  4698. BFD_RELOC_RL78_32_OP
  4699. ENUMX
  4700. BFD_RELOC_RL78_8U
  4701. ENUMX
  4702. BFD_RELOC_RL78_16U
  4703. ENUMX
  4704. BFD_RELOC_RL78_24U
  4705. ENUMX
  4706. BFD_RELOC_RL78_DIR3U_PCREL
  4707. ENUMX
  4708. BFD_RELOC_RL78_DIFF
  4709. ENUMX
  4710. BFD_RELOC_RL78_GPRELB
  4711. ENUMX
  4712. BFD_RELOC_RL78_GPRELW
  4713. ENUMX
  4714. BFD_RELOC_RL78_GPRELL
  4715. ENUMX
  4716. BFD_RELOC_RL78_SYM
  4717. ENUMX
  4718. BFD_RELOC_RL78_OP_SUBTRACT
  4719. ENUMX
  4720. BFD_RELOC_RL78_OP_NEG
  4721. ENUMX
  4722. BFD_RELOC_RL78_OP_AND
  4723. ENUMX
  4724. BFD_RELOC_RL78_OP_SHRA
  4725. ENUMX
  4726. BFD_RELOC_RL78_ABS8
  4727. ENUMX
  4728. BFD_RELOC_RL78_ABS16
  4729. ENUMX
  4730. BFD_RELOC_RL78_ABS16_REV
  4731. ENUMX
  4732. BFD_RELOC_RL78_ABS32
  4733. ENUMX
  4734. BFD_RELOC_RL78_ABS32_REV
  4735. ENUMX
  4736. BFD_RELOC_RL78_ABS16U
  4737. ENUMX
  4738. BFD_RELOC_RL78_ABS16UW
  4739. ENUMX
  4740. BFD_RELOC_RL78_ABS16UL
  4741. ENUMX
  4742. BFD_RELOC_RL78_RELAX
  4743. ENUMX
  4744. BFD_RELOC_RL78_HI16
  4745. ENUMX
  4746. BFD_RELOC_RL78_HI8
  4747. ENUMX
  4748. BFD_RELOC_RL78_LO16
  4749. ENUMX
  4750. BFD_RELOC_RL78_CODE
  4751. ENUMX
  4752. BFD_RELOC_RL78_SADDR
  4753. ENUMDOC
  4754. Renesas RL78 Relocations.
  4755. ENUM
  4756. BFD_RELOC_RX_NEG8
  4757. ENUMX
  4758. BFD_RELOC_RX_NEG16
  4759. ENUMX
  4760. BFD_RELOC_RX_NEG24
  4761. ENUMX
  4762. BFD_RELOC_RX_NEG32
  4763. ENUMX
  4764. BFD_RELOC_RX_16_OP
  4765. ENUMX
  4766. BFD_RELOC_RX_24_OP
  4767. ENUMX
  4768. BFD_RELOC_RX_32_OP
  4769. ENUMX
  4770. BFD_RELOC_RX_8U
  4771. ENUMX
  4772. BFD_RELOC_RX_16U
  4773. ENUMX
  4774. BFD_RELOC_RX_24U
  4775. ENUMX
  4776. BFD_RELOC_RX_DIR3U_PCREL
  4777. ENUMX
  4778. BFD_RELOC_RX_DIFF
  4779. ENUMX
  4780. BFD_RELOC_RX_GPRELB
  4781. ENUMX
  4782. BFD_RELOC_RX_GPRELW
  4783. ENUMX
  4784. BFD_RELOC_RX_GPRELL
  4785. ENUMX
  4786. BFD_RELOC_RX_SYM
  4787. ENUMX
  4788. BFD_RELOC_RX_OP_SUBTRACT
  4789. ENUMX
  4790. BFD_RELOC_RX_OP_NEG
  4791. ENUMX
  4792. BFD_RELOC_RX_ABS8
  4793. ENUMX
  4794. BFD_RELOC_RX_ABS16
  4795. ENUMX
  4796. BFD_RELOC_RX_ABS16_REV
  4797. ENUMX
  4798. BFD_RELOC_RX_ABS32
  4799. ENUMX
  4800. BFD_RELOC_RX_ABS32_REV
  4801. ENUMX
  4802. BFD_RELOC_RX_ABS16U
  4803. ENUMX
  4804. BFD_RELOC_RX_ABS16UW
  4805. ENUMX
  4806. BFD_RELOC_RX_ABS16UL
  4807. ENUMX
  4808. BFD_RELOC_RX_RELAX
  4809. ENUMDOC
  4810. Renesas RX Relocations.
  4811. ENUM
  4812. BFD_RELOC_390_12
  4813. ENUMDOC
  4814. Direct 12 bit.
  4815. ENUM
  4816. BFD_RELOC_390_GOT12
  4817. ENUMDOC
  4818. 12 bit GOT offset.
  4819. ENUM
  4820. BFD_RELOC_390_PLT32
  4821. ENUMDOC
  4822. 32 bit PC relative PLT address.
  4823. ENUM
  4824. BFD_RELOC_390_COPY
  4825. ENUMDOC
  4826. Copy symbol at runtime.
  4827. ENUM
  4828. BFD_RELOC_390_GLOB_DAT
  4829. ENUMDOC
  4830. Create GOT entry.
  4831. ENUM
  4832. BFD_RELOC_390_JMP_SLOT
  4833. ENUMDOC
  4834. Create PLT entry.
  4835. ENUM
  4836. BFD_RELOC_390_RELATIVE
  4837. ENUMDOC
  4838. Adjust by program base.
  4839. ENUM
  4840. BFD_RELOC_390_GOTPC
  4841. ENUMDOC
  4842. 32 bit PC relative offset to GOT.
  4843. ENUM
  4844. BFD_RELOC_390_GOT16
  4845. ENUMDOC
  4846. 16 bit GOT offset.
  4847. ENUM
  4848. BFD_RELOC_390_PC12DBL
  4849. ENUMDOC
  4850. PC relative 12 bit shifted by 1.
  4851. ENUM
  4852. BFD_RELOC_390_PLT12DBL
  4853. ENUMDOC
  4854. 12 bit PC rel. PLT shifted by 1.
  4855. ENUM
  4856. BFD_RELOC_390_PC16DBL
  4857. ENUMDOC
  4858. PC relative 16 bit shifted by 1.
  4859. ENUM
  4860. BFD_RELOC_390_PLT16DBL
  4861. ENUMDOC
  4862. 16 bit PC rel. PLT shifted by 1.
  4863. ENUM
  4864. BFD_RELOC_390_PC24DBL
  4865. ENUMDOC
  4866. PC relative 24 bit shifted by 1.
  4867. ENUM
  4868. BFD_RELOC_390_PLT24DBL
  4869. ENUMDOC
  4870. 24 bit PC rel. PLT shifted by 1.
  4871. ENUM
  4872. BFD_RELOC_390_PC32DBL
  4873. ENUMDOC
  4874. PC relative 32 bit shifted by 1.
  4875. ENUM
  4876. BFD_RELOC_390_PLT32DBL
  4877. ENUMDOC
  4878. 32 bit PC rel. PLT shifted by 1.
  4879. ENUM
  4880. BFD_RELOC_390_GOTPCDBL
  4881. ENUMDOC
  4882. 32 bit PC rel. GOT shifted by 1.
  4883. ENUM
  4884. BFD_RELOC_390_GOT64
  4885. ENUMDOC
  4886. 64 bit GOT offset.
  4887. ENUM
  4888. BFD_RELOC_390_PLT64
  4889. ENUMDOC
  4890. 64 bit PC relative PLT address.
  4891. ENUM
  4892. BFD_RELOC_390_GOTENT
  4893. ENUMDOC
  4894. 32 bit rel. offset to GOT entry.
  4895. ENUM
  4896. BFD_RELOC_390_GOTOFF64
  4897. ENUMDOC
  4898. 64 bit offset to GOT.
  4899. ENUM
  4900. BFD_RELOC_390_GOTPLT12
  4901. ENUMDOC
  4902. 12-bit offset to symbol-entry within GOT, with PLT handling.
  4903. ENUM
  4904. BFD_RELOC_390_GOTPLT16
  4905. ENUMDOC
  4906. 16-bit offset to symbol-entry within GOT, with PLT handling.
  4907. ENUM
  4908. BFD_RELOC_390_GOTPLT32
  4909. ENUMDOC
  4910. 32-bit offset to symbol-entry within GOT, with PLT handling.
  4911. ENUM
  4912. BFD_RELOC_390_GOTPLT64
  4913. ENUMDOC
  4914. 64-bit offset to symbol-entry within GOT, with PLT handling.
  4915. ENUM
  4916. BFD_RELOC_390_GOTPLTENT
  4917. ENUMDOC
  4918. 32-bit rel. offset to symbol-entry within GOT, with PLT handling.
  4919. ENUM
  4920. BFD_RELOC_390_PLTOFF16
  4921. ENUMDOC
  4922. 16-bit rel. offset from the GOT to a PLT entry.
  4923. ENUM
  4924. BFD_RELOC_390_PLTOFF32
  4925. ENUMDOC
  4926. 32-bit rel. offset from the GOT to a PLT entry.
  4927. ENUM
  4928. BFD_RELOC_390_PLTOFF64
  4929. ENUMDOC
  4930. 64-bit rel. offset from the GOT to a PLT entry.
  4931. ENUM
  4932. BFD_RELOC_390_TLS_LOAD
  4933. ENUMX
  4934. BFD_RELOC_390_TLS_GDCALL
  4935. ENUMX
  4936. BFD_RELOC_390_TLS_LDCALL
  4937. ENUMX
  4938. BFD_RELOC_390_TLS_GD32
  4939. ENUMX
  4940. BFD_RELOC_390_TLS_GD64
  4941. ENUMX
  4942. BFD_RELOC_390_TLS_GOTIE12
  4943. ENUMX
  4944. BFD_RELOC_390_TLS_GOTIE32
  4945. ENUMX
  4946. BFD_RELOC_390_TLS_GOTIE64
  4947. ENUMX
  4948. BFD_RELOC_390_TLS_LDM32
  4949. ENUMX
  4950. BFD_RELOC_390_TLS_LDM64
  4951. ENUMX
  4952. BFD_RELOC_390_TLS_IE32
  4953. ENUMX
  4954. BFD_RELOC_390_TLS_IE64
  4955. ENUMX
  4956. BFD_RELOC_390_TLS_IEENT
  4957. ENUMX
  4958. BFD_RELOC_390_TLS_LE32
  4959. ENUMX
  4960. BFD_RELOC_390_TLS_LE64
  4961. ENUMX
  4962. BFD_RELOC_390_TLS_LDO32
  4963. ENUMX
  4964. BFD_RELOC_390_TLS_LDO64
  4965. ENUMX
  4966. BFD_RELOC_390_TLS_DTPMOD
  4967. ENUMX
  4968. BFD_RELOC_390_TLS_DTPOFF
  4969. ENUMX
  4970. BFD_RELOC_390_TLS_TPOFF
  4971. ENUMDOC
  4972. s390 tls relocations.
  4973. ENUM
  4974. BFD_RELOC_390_20
  4975. ENUMX
  4976. BFD_RELOC_390_GOT20
  4977. ENUMX
  4978. BFD_RELOC_390_GOTPLT20
  4979. ENUMX
  4980. BFD_RELOC_390_TLS_GOTIE20
  4981. ENUMDOC
  4982. Long displacement extension.
  4983. ENUM
  4984. BFD_RELOC_390_IRELATIVE
  4985. ENUMDOC
  4986. STT_GNU_IFUNC relocation.
  4987. ENUM
  4988. BFD_RELOC_SCORE_GPREL15
  4989. ENUMDOC
  4990. Score relocations
  4991. Low 16 bit for load/store
  4992. ENUM
  4993. BFD_RELOC_SCORE_DUMMY2
  4994. ENUMX
  4995. BFD_RELOC_SCORE_JMP
  4996. ENUMDOC
  4997. This is a 24-bit reloc with the right 1 bit assumed to be 0
  4998. ENUM
  4999. BFD_RELOC_SCORE_BRANCH
  5000. ENUMDOC
  5001. This is a 19-bit reloc with the right 1 bit assumed to be 0
  5002. ENUM
  5003. BFD_RELOC_SCORE_IMM30
  5004. ENUMDOC
  5005. This is a 32-bit reloc for 48-bit instructions.
  5006. ENUM
  5007. BFD_RELOC_SCORE_IMM32
  5008. ENUMDOC
  5009. This is a 32-bit reloc for 48-bit instructions.
  5010. ENUM
  5011. BFD_RELOC_SCORE16_JMP
  5012. ENUMDOC
  5013. This is a 11-bit reloc with the right 1 bit assumed to be 0
  5014. ENUM
  5015. BFD_RELOC_SCORE16_BRANCH
  5016. ENUMDOC
  5017. This is a 8-bit reloc with the right 1 bit assumed to be 0
  5018. ENUM
  5019. BFD_RELOC_SCORE_BCMP
  5020. ENUMDOC
  5021. This is a 9-bit reloc with the right 1 bit assumed to be 0
  5022. ENUM
  5023. BFD_RELOC_SCORE_GOT15
  5024. ENUMX
  5025. BFD_RELOC_SCORE_GOT_LO16
  5026. ENUMX
  5027. BFD_RELOC_SCORE_CALL15
  5028. ENUMX
  5029. BFD_RELOC_SCORE_DUMMY_HI16
  5030. ENUMDOC
  5031. Undocumented Score relocs
  5032. ENUM
  5033. BFD_RELOC_IP2K_FR9
  5034. ENUMDOC
  5035. Scenix IP2K - 9-bit register number / data address
  5036. ENUM
  5037. BFD_RELOC_IP2K_BANK
  5038. ENUMDOC
  5039. Scenix IP2K - 4-bit register/data bank number
  5040. ENUM
  5041. BFD_RELOC_IP2K_ADDR16CJP
  5042. ENUMDOC
  5043. Scenix IP2K - low 13 bits of instruction word address
  5044. ENUM
  5045. BFD_RELOC_IP2K_PAGE3
  5046. ENUMDOC
  5047. Scenix IP2K - high 3 bits of instruction word address
  5048. ENUM
  5049. BFD_RELOC_IP2K_LO8DATA
  5050. ENUMX
  5051. BFD_RELOC_IP2K_HI8DATA
  5052. ENUMX
  5053. BFD_RELOC_IP2K_EX8DATA
  5054. ENUMDOC
  5055. Scenix IP2K - ext/low/high 8 bits of data address
  5056. ENUM
  5057. BFD_RELOC_IP2K_LO8INSN
  5058. ENUMX
  5059. BFD_RELOC_IP2K_HI8INSN
  5060. ENUMDOC
  5061. Scenix IP2K - low/high 8 bits of instruction word address
  5062. ENUM
  5063. BFD_RELOC_IP2K_PC_SKIP
  5064. ENUMDOC
  5065. Scenix IP2K - even/odd PC modifier to modify snb pcl.0
  5066. ENUM
  5067. BFD_RELOC_IP2K_TEXT
  5068. ENUMDOC
  5069. Scenix IP2K - 16 bit word address in text section.
  5070. ENUM
  5071. BFD_RELOC_IP2K_FR_OFFSET
  5072. ENUMDOC
  5073. Scenix IP2K - 7-bit sp or dp offset
  5074. ENUM
  5075. BFD_RELOC_VPE4KMATH_DATA
  5076. ENUMX
  5077. BFD_RELOC_VPE4KMATH_INSN
  5078. ENUMDOC
  5079. Scenix VPE4K coprocessor - data/insn-space addressing
  5080. ENUM
  5081. BFD_RELOC_VTABLE_INHERIT
  5082. ENUMX
  5083. BFD_RELOC_VTABLE_ENTRY
  5084. ENUMDOC
  5085. These two relocations are used by the linker to determine which of
  5086. the entries in a C++ virtual function table are actually used. When
  5087. the --gc-sections option is given, the linker will zero out the entries
  5088. that are not used, so that the code for those functions need not be
  5089. included in the output.
  5090. VTABLE_INHERIT is a zero-space relocation used to describe to the
  5091. linker the inheritance tree of a C++ virtual function table. The
  5092. relocation's symbol should be the parent class' vtable, and the
  5093. relocation should be located at the child vtable.
  5094. VTABLE_ENTRY is a zero-space relocation that describes the use of a
  5095. virtual function table entry. The reloc's symbol should refer to the
  5096. table of the class mentioned in the code. Off of that base, an offset
  5097. describes the entry that is being used. For Rela hosts, this offset
  5098. is stored in the reloc's addend. For Rel hosts, we are forced to put
  5099. this offset in the reloc's section offset.
  5100. ENUM
  5101. BFD_RELOC_IA64_IMM14
  5102. ENUMX
  5103. BFD_RELOC_IA64_IMM22
  5104. ENUMX
  5105. BFD_RELOC_IA64_IMM64
  5106. ENUMX
  5107. BFD_RELOC_IA64_DIR32MSB
  5108. ENUMX
  5109. BFD_RELOC_IA64_DIR32LSB
  5110. ENUMX
  5111. BFD_RELOC_IA64_DIR64MSB
  5112. ENUMX
  5113. BFD_RELOC_IA64_DIR64LSB
  5114. ENUMX
  5115. BFD_RELOC_IA64_GPREL22
  5116. ENUMX
  5117. BFD_RELOC_IA64_GPREL64I
  5118. ENUMX
  5119. BFD_RELOC_IA64_GPREL32MSB
  5120. ENUMX
  5121. BFD_RELOC_IA64_GPREL32LSB
  5122. ENUMX
  5123. BFD_RELOC_IA64_GPREL64MSB
  5124. ENUMX
  5125. BFD_RELOC_IA64_GPREL64LSB
  5126. ENUMX
  5127. BFD_RELOC_IA64_LTOFF22
  5128. ENUMX
  5129. BFD_RELOC_IA64_LTOFF64I
  5130. ENUMX
  5131. BFD_RELOC_IA64_PLTOFF22
  5132. ENUMX
  5133. BFD_RELOC_IA64_PLTOFF64I
  5134. ENUMX
  5135. BFD_RELOC_IA64_PLTOFF64MSB
  5136. ENUMX
  5137. BFD_RELOC_IA64_PLTOFF64LSB
  5138. ENUMX
  5139. BFD_RELOC_IA64_FPTR64I
  5140. ENUMX
  5141. BFD_RELOC_IA64_FPTR32MSB
  5142. ENUMX
  5143. BFD_RELOC_IA64_FPTR32LSB
  5144. ENUMX
  5145. BFD_RELOC_IA64_FPTR64MSB
  5146. ENUMX
  5147. BFD_RELOC_IA64_FPTR64LSB
  5148. ENUMX
  5149. BFD_RELOC_IA64_PCREL21B
  5150. ENUMX
  5151. BFD_RELOC_IA64_PCREL21BI
  5152. ENUMX
  5153. BFD_RELOC_IA64_PCREL21M
  5154. ENUMX
  5155. BFD_RELOC_IA64_PCREL21F
  5156. ENUMX
  5157. BFD_RELOC_IA64_PCREL22
  5158. ENUMX
  5159. BFD_RELOC_IA64_PCREL60B
  5160. ENUMX
  5161. BFD_RELOC_IA64_PCREL64I
  5162. ENUMX
  5163. BFD_RELOC_IA64_PCREL32MSB
  5164. ENUMX
  5165. BFD_RELOC_IA64_PCREL32LSB
  5166. ENUMX
  5167. BFD_RELOC_IA64_PCREL64MSB
  5168. ENUMX
  5169. BFD_RELOC_IA64_PCREL64LSB
  5170. ENUMX
  5171. BFD_RELOC_IA64_LTOFF_FPTR22
  5172. ENUMX
  5173. BFD_RELOC_IA64_LTOFF_FPTR64I
  5174. ENUMX
  5175. BFD_RELOC_IA64_LTOFF_FPTR32MSB
  5176. ENUMX
  5177. BFD_RELOC_IA64_LTOFF_FPTR32LSB
  5178. ENUMX
  5179. BFD_RELOC_IA64_LTOFF_FPTR64MSB
  5180. ENUMX
  5181. BFD_RELOC_IA64_LTOFF_FPTR64LSB
  5182. ENUMX
  5183. BFD_RELOC_IA64_SEGREL32MSB
  5184. ENUMX
  5185. BFD_RELOC_IA64_SEGREL32LSB
  5186. ENUMX
  5187. BFD_RELOC_IA64_SEGREL64MSB
  5188. ENUMX
  5189. BFD_RELOC_IA64_SEGREL64LSB
  5190. ENUMX
  5191. BFD_RELOC_IA64_SECREL32MSB
  5192. ENUMX
  5193. BFD_RELOC_IA64_SECREL32LSB
  5194. ENUMX
  5195. BFD_RELOC_IA64_SECREL64MSB
  5196. ENUMX
  5197. BFD_RELOC_IA64_SECREL64LSB
  5198. ENUMX
  5199. BFD_RELOC_IA64_REL32MSB
  5200. ENUMX
  5201. BFD_RELOC_IA64_REL32LSB
  5202. ENUMX
  5203. BFD_RELOC_IA64_REL64MSB
  5204. ENUMX
  5205. BFD_RELOC_IA64_REL64LSB
  5206. ENUMX
  5207. BFD_RELOC_IA64_LTV32MSB
  5208. ENUMX
  5209. BFD_RELOC_IA64_LTV32LSB
  5210. ENUMX
  5211. BFD_RELOC_IA64_LTV64MSB
  5212. ENUMX
  5213. BFD_RELOC_IA64_LTV64LSB
  5214. ENUMX
  5215. BFD_RELOC_IA64_IPLTMSB
  5216. ENUMX
  5217. BFD_RELOC_IA64_IPLTLSB
  5218. ENUMX
  5219. BFD_RELOC_IA64_COPY
  5220. ENUMX
  5221. BFD_RELOC_IA64_LTOFF22X
  5222. ENUMX
  5223. BFD_RELOC_IA64_LDXMOV
  5224. ENUMX
  5225. BFD_RELOC_IA64_TPREL14
  5226. ENUMX
  5227. BFD_RELOC_IA64_TPREL22
  5228. ENUMX
  5229. BFD_RELOC_IA64_TPREL64I
  5230. ENUMX
  5231. BFD_RELOC_IA64_TPREL64MSB
  5232. ENUMX
  5233. BFD_RELOC_IA64_TPREL64LSB
  5234. ENUMX
  5235. BFD_RELOC_IA64_LTOFF_TPREL22
  5236. ENUMX
  5237. BFD_RELOC_IA64_DTPMOD64MSB
  5238. ENUMX
  5239. BFD_RELOC_IA64_DTPMOD64LSB
  5240. ENUMX
  5241. BFD_RELOC_IA64_LTOFF_DTPMOD22
  5242. ENUMX
  5243. BFD_RELOC_IA64_DTPREL14
  5244. ENUMX
  5245. BFD_RELOC_IA64_DTPREL22
  5246. ENUMX
  5247. BFD_RELOC_IA64_DTPREL64I
  5248. ENUMX
  5249. BFD_RELOC_IA64_DTPREL32MSB
  5250. ENUMX
  5251. BFD_RELOC_IA64_DTPREL32LSB
  5252. ENUMX
  5253. BFD_RELOC_IA64_DTPREL64MSB
  5254. ENUMX
  5255. BFD_RELOC_IA64_DTPREL64LSB
  5256. ENUMX
  5257. BFD_RELOC_IA64_LTOFF_DTPREL22
  5258. ENUMDOC
  5259. Intel IA64 Relocations.
  5260. ENUM
  5261. BFD_RELOC_M68HC11_HI8
  5262. ENUMDOC
  5263. Motorola 68HC11 reloc.
  5264. This is the 8 bit high part of an absolute address.
  5265. ENUM
  5266. BFD_RELOC_M68HC11_LO8
  5267. ENUMDOC
  5268. Motorola 68HC11 reloc.
  5269. This is the 8 bit low part of an absolute address.
  5270. ENUM
  5271. BFD_RELOC_M68HC11_3B
  5272. ENUMDOC
  5273. Motorola 68HC11 reloc.
  5274. This is the 3 bit of a value.
  5275. ENUM
  5276. BFD_RELOC_M68HC11_RL_JUMP
  5277. ENUMDOC
  5278. Motorola 68HC11 reloc.
  5279. This reloc marks the beginning of a jump/call instruction.
  5280. It is used for linker relaxation to correctly identify beginning
  5281. of instruction and change some branches to use PC-relative
  5282. addressing mode.
  5283. ENUM
  5284. BFD_RELOC_M68HC11_RL_GROUP
  5285. ENUMDOC
  5286. Motorola 68HC11 reloc.
  5287. This reloc marks a group of several instructions that gcc generates
  5288. and for which the linker relaxation pass can modify and/or remove
  5289. some of them.
  5290. ENUM
  5291. BFD_RELOC_M68HC11_LO16
  5292. ENUMDOC
  5293. Motorola 68HC11 reloc.
  5294. This is the 16-bit lower part of an address. It is used for 'call'
  5295. instruction to specify the symbol address without any special
  5296. transformation (due to memory bank window).
  5297. ENUM
  5298. BFD_RELOC_M68HC11_PAGE
  5299. ENUMDOC
  5300. Motorola 68HC11 reloc.
  5301. This is a 8-bit reloc that specifies the page number of an address.
  5302. It is used by 'call' instruction to specify the page number of
  5303. the symbol.
  5304. ENUM
  5305. BFD_RELOC_M68HC11_24
  5306. ENUMDOC
  5307. Motorola 68HC11 reloc.
  5308. This is a 24-bit reloc that represents the address with a 16-bit
  5309. value and a 8-bit page number. The symbol address is transformed
  5310. to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
  5311. ENUM
  5312. BFD_RELOC_M68HC12_5B
  5313. ENUMDOC
  5314. Motorola 68HC12 reloc.
  5315. This is the 5 bits of a value.
  5316. ENUM
  5317. BFD_RELOC_XGATE_RL_JUMP
  5318. ENUMDOC
  5319. Freescale XGATE reloc.
  5320. This reloc marks the beginning of a bra/jal instruction.
  5321. ENUM
  5322. BFD_RELOC_XGATE_RL_GROUP
  5323. ENUMDOC
  5324. Freescale XGATE reloc.
  5325. This reloc marks a group of several instructions that gcc generates
  5326. and for which the linker relaxation pass can modify and/or remove
  5327. some of them.
  5328. ENUM
  5329. BFD_RELOC_XGATE_LO16
  5330. ENUMDOC
  5331. Freescale XGATE reloc.
  5332. This is the 16-bit lower part of an address. It is used for the '16-bit'
  5333. instructions.
  5334. ENUM
  5335. BFD_RELOC_XGATE_GPAGE
  5336. ENUMDOC
  5337. Freescale XGATE reloc.
  5338. ENUM
  5339. BFD_RELOC_XGATE_24
  5340. ENUMDOC
  5341. Freescale XGATE reloc.
  5342. ENUM
  5343. BFD_RELOC_XGATE_PCREL_9
  5344. ENUMDOC
  5345. Freescale XGATE reloc.
  5346. This is a 9-bit pc-relative reloc.
  5347. ENUM
  5348. BFD_RELOC_XGATE_PCREL_10
  5349. ENUMDOC
  5350. Freescale XGATE reloc.
  5351. This is a 10-bit pc-relative reloc.
  5352. ENUM
  5353. BFD_RELOC_XGATE_IMM8_LO
  5354. ENUMDOC
  5355. Freescale XGATE reloc.
  5356. This is the 16-bit lower part of an address. It is used for the '16-bit'
  5357. instructions.
  5358. ENUM
  5359. BFD_RELOC_XGATE_IMM8_HI
  5360. ENUMDOC
  5361. Freescale XGATE reloc.
  5362. This is the 16-bit higher part of an address. It is used for the '16-bit'
  5363. instructions.
  5364. ENUM
  5365. BFD_RELOC_XGATE_IMM3
  5366. ENUMDOC
  5367. Freescale XGATE reloc.
  5368. This is a 3-bit pc-relative reloc.
  5369. ENUM
  5370. BFD_RELOC_XGATE_IMM4
  5371. ENUMDOC
  5372. Freescale XGATE reloc.
  5373. This is a 4-bit pc-relative reloc.
  5374. ENUM
  5375. BFD_RELOC_XGATE_IMM5
  5376. ENUMDOC
  5377. Freescale XGATE reloc.
  5378. This is a 5-bit pc-relative reloc.
  5379. ENUM
  5380. BFD_RELOC_M68HC12_9B
  5381. ENUMDOC
  5382. Motorola 68HC12 reloc.
  5383. This is the 9 bits of a value.
  5384. ENUM
  5385. BFD_RELOC_M68HC12_16B
  5386. ENUMDOC
  5387. Motorola 68HC12 reloc.
  5388. This is the 16 bits of a value.
  5389. ENUM
  5390. BFD_RELOC_M68HC12_9_PCREL
  5391. ENUMDOC
  5392. Motorola 68HC12/XGATE reloc.
  5393. This is a PCREL9 branch.
  5394. ENUM
  5395. BFD_RELOC_M68HC12_10_PCREL
  5396. ENUMDOC
  5397. Motorola 68HC12/XGATE reloc.
  5398. This is a PCREL10 branch.
  5399. ENUM
  5400. BFD_RELOC_M68HC12_LO8XG
  5401. ENUMDOC
  5402. Motorola 68HC12/XGATE reloc.
  5403. This is the 8 bit low part of an absolute address and immediately precedes
  5404. a matching HI8XG part.
  5405. ENUM
  5406. BFD_RELOC_M68HC12_HI8XG
  5407. ENUMDOC
  5408. Motorola 68HC12/XGATE reloc.
  5409. This is the 8 bit high part of an absolute address and immediately follows
  5410. a matching LO8XG part.
  5411. ENUM
  5412. BFD_RELOC_16C_NUM08
  5413. ENUMX
  5414. BFD_RELOC_16C_NUM08_C
  5415. ENUMX
  5416. BFD_RELOC_16C_NUM16
  5417. ENUMX
  5418. BFD_RELOC_16C_NUM16_C
  5419. ENUMX
  5420. BFD_RELOC_16C_NUM32
  5421. ENUMX
  5422. BFD_RELOC_16C_NUM32_C
  5423. ENUMX
  5424. BFD_RELOC_16C_DISP04
  5425. ENUMX
  5426. BFD_RELOC_16C_DISP04_C
  5427. ENUMX
  5428. BFD_RELOC_16C_DISP08
  5429. ENUMX
  5430. BFD_RELOC_16C_DISP08_C
  5431. ENUMX
  5432. BFD_RELOC_16C_DISP16
  5433. ENUMX
  5434. BFD_RELOC_16C_DISP16_C
  5435. ENUMX
  5436. BFD_RELOC_16C_DISP24
  5437. ENUMX
  5438. BFD_RELOC_16C_DISP24_C
  5439. ENUMX
  5440. BFD_RELOC_16C_DISP24a
  5441. ENUMX
  5442. BFD_RELOC_16C_DISP24a_C
  5443. ENUMX
  5444. BFD_RELOC_16C_REG04
  5445. ENUMX
  5446. BFD_RELOC_16C_REG04_C
  5447. ENUMX
  5448. BFD_RELOC_16C_REG04a
  5449. ENUMX
  5450. BFD_RELOC_16C_REG04a_C
  5451. ENUMX
  5452. BFD_RELOC_16C_REG14
  5453. ENUMX
  5454. BFD_RELOC_16C_REG14_C
  5455. ENUMX
  5456. BFD_RELOC_16C_REG16
  5457. ENUMX
  5458. BFD_RELOC_16C_REG16_C
  5459. ENUMX
  5460. BFD_RELOC_16C_REG20
  5461. ENUMX
  5462. BFD_RELOC_16C_REG20_C
  5463. ENUMX
  5464. BFD_RELOC_16C_ABS20
  5465. ENUMX
  5466. BFD_RELOC_16C_ABS20_C
  5467. ENUMX
  5468. BFD_RELOC_16C_ABS24
  5469. ENUMX
  5470. BFD_RELOC_16C_ABS24_C
  5471. ENUMX
  5472. BFD_RELOC_16C_IMM04
  5473. ENUMX
  5474. BFD_RELOC_16C_IMM04_C
  5475. ENUMX
  5476. BFD_RELOC_16C_IMM16
  5477. ENUMX
  5478. BFD_RELOC_16C_IMM16_C
  5479. ENUMX
  5480. BFD_RELOC_16C_IMM20
  5481. ENUMX
  5482. BFD_RELOC_16C_IMM20_C
  5483. ENUMX
  5484. BFD_RELOC_16C_IMM24
  5485. ENUMX
  5486. BFD_RELOC_16C_IMM24_C
  5487. ENUMX
  5488. BFD_RELOC_16C_IMM32
  5489. ENUMX
  5490. BFD_RELOC_16C_IMM32_C
  5491. ENUMDOC
  5492. NS CR16C Relocations.
  5493. ENUM
  5494. BFD_RELOC_CR16_NUM8
  5495. ENUMX
  5496. BFD_RELOC_CR16_NUM16
  5497. ENUMX
  5498. BFD_RELOC_CR16_NUM32
  5499. ENUMX
  5500. BFD_RELOC_CR16_NUM32a
  5501. ENUMX
  5502. BFD_RELOC_CR16_REGREL0
  5503. ENUMX
  5504. BFD_RELOC_CR16_REGREL4
  5505. ENUMX
  5506. BFD_RELOC_CR16_REGREL4a
  5507. ENUMX
  5508. BFD_RELOC_CR16_REGREL14
  5509. ENUMX
  5510. BFD_RELOC_CR16_REGREL14a
  5511. ENUMX
  5512. BFD_RELOC_CR16_REGREL16
  5513. ENUMX
  5514. BFD_RELOC_CR16_REGREL20
  5515. ENUMX
  5516. BFD_RELOC_CR16_REGREL20a
  5517. ENUMX
  5518. BFD_RELOC_CR16_ABS20
  5519. ENUMX
  5520. BFD_RELOC_CR16_ABS24
  5521. ENUMX
  5522. BFD_RELOC_CR16_IMM4
  5523. ENUMX
  5524. BFD_RELOC_CR16_IMM8
  5525. ENUMX
  5526. BFD_RELOC_CR16_IMM16
  5527. ENUMX
  5528. BFD_RELOC_CR16_IMM20
  5529. ENUMX
  5530. BFD_RELOC_CR16_IMM24
  5531. ENUMX
  5532. BFD_RELOC_CR16_IMM32
  5533. ENUMX
  5534. BFD_RELOC_CR16_IMM32a
  5535. ENUMX
  5536. BFD_RELOC_CR16_DISP4
  5537. ENUMX
  5538. BFD_RELOC_CR16_DISP8
  5539. ENUMX
  5540. BFD_RELOC_CR16_DISP16
  5541. ENUMX
  5542. BFD_RELOC_CR16_DISP20
  5543. ENUMX
  5544. BFD_RELOC_CR16_DISP24
  5545. ENUMX
  5546. BFD_RELOC_CR16_DISP24a
  5547. ENUMX
  5548. BFD_RELOC_CR16_SWITCH8
  5549. ENUMX
  5550. BFD_RELOC_CR16_SWITCH16
  5551. ENUMX
  5552. BFD_RELOC_CR16_SWITCH32
  5553. ENUMX
  5554. BFD_RELOC_CR16_GOT_REGREL20
  5555. ENUMX
  5556. BFD_RELOC_CR16_GOTC_REGREL20
  5557. ENUMX
  5558. BFD_RELOC_CR16_GLOB_DAT
  5559. ENUMDOC
  5560. NS CR16 Relocations.
  5561. ENUM
  5562. BFD_RELOC_CRX_REL4
  5563. ENUMX
  5564. BFD_RELOC_CRX_REL8
  5565. ENUMX
  5566. BFD_RELOC_CRX_REL8_CMP
  5567. ENUMX
  5568. BFD_RELOC_CRX_REL16
  5569. ENUMX
  5570. BFD_RELOC_CRX_REL24
  5571. ENUMX
  5572. BFD_RELOC_CRX_REL32
  5573. ENUMX
  5574. BFD_RELOC_CRX_REGREL12
  5575. ENUMX
  5576. BFD_RELOC_CRX_REGREL22
  5577. ENUMX
  5578. BFD_RELOC_CRX_REGREL28
  5579. ENUMX
  5580. BFD_RELOC_CRX_REGREL32
  5581. ENUMX
  5582. BFD_RELOC_CRX_ABS16
  5583. ENUMX
  5584. BFD_RELOC_CRX_ABS32
  5585. ENUMX
  5586. BFD_RELOC_CRX_NUM8
  5587. ENUMX
  5588. BFD_RELOC_CRX_NUM16
  5589. ENUMX
  5590. BFD_RELOC_CRX_NUM32
  5591. ENUMX
  5592. BFD_RELOC_CRX_IMM16
  5593. ENUMX
  5594. BFD_RELOC_CRX_IMM32
  5595. ENUMX
  5596. BFD_RELOC_CRX_SWITCH8
  5597. ENUMX
  5598. BFD_RELOC_CRX_SWITCH16
  5599. ENUMX
  5600. BFD_RELOC_CRX_SWITCH32
  5601. ENUMDOC
  5602. NS CRX Relocations.
  5603. ENUM
  5604. BFD_RELOC_CRIS_BDISP8
  5605. ENUMX
  5606. BFD_RELOC_CRIS_UNSIGNED_5
  5607. ENUMX
  5608. BFD_RELOC_CRIS_SIGNED_6
  5609. ENUMX
  5610. BFD_RELOC_CRIS_UNSIGNED_6
  5611. ENUMX
  5612. BFD_RELOC_CRIS_SIGNED_8
  5613. ENUMX
  5614. BFD_RELOC_CRIS_UNSIGNED_8
  5615. ENUMX
  5616. BFD_RELOC_CRIS_SIGNED_16
  5617. ENUMX
  5618. BFD_RELOC_CRIS_UNSIGNED_16
  5619. ENUMX
  5620. BFD_RELOC_CRIS_LAPCQ_OFFSET
  5621. ENUMX
  5622. BFD_RELOC_CRIS_UNSIGNED_4
  5623. ENUMDOC
  5624. These relocs are only used within the CRIS assembler. They are not
  5625. (at present) written to any object files.
  5626. ENUM
  5627. BFD_RELOC_CRIS_COPY
  5628. ENUMX
  5629. BFD_RELOC_CRIS_GLOB_DAT
  5630. ENUMX
  5631. BFD_RELOC_CRIS_JUMP_SLOT
  5632. ENUMX
  5633. BFD_RELOC_CRIS_RELATIVE
  5634. ENUMDOC
  5635. Relocs used in ELF shared libraries for CRIS.
  5636. ENUM
  5637. BFD_RELOC_CRIS_32_GOT
  5638. ENUMDOC
  5639. 32-bit offset to symbol-entry within GOT.
  5640. ENUM
  5641. BFD_RELOC_CRIS_16_GOT
  5642. ENUMDOC
  5643. 16-bit offset to symbol-entry within GOT.
  5644. ENUM
  5645. BFD_RELOC_CRIS_32_GOTPLT
  5646. ENUMDOC
  5647. 32-bit offset to symbol-entry within GOT, with PLT handling.
  5648. ENUM
  5649. BFD_RELOC_CRIS_16_GOTPLT
  5650. ENUMDOC
  5651. 16-bit offset to symbol-entry within GOT, with PLT handling.
  5652. ENUM
  5653. BFD_RELOC_CRIS_32_GOTREL
  5654. ENUMDOC
  5655. 32-bit offset to symbol, relative to GOT.
  5656. ENUM
  5657. BFD_RELOC_CRIS_32_PLT_GOTREL
  5658. ENUMDOC
  5659. 32-bit offset to symbol with PLT entry, relative to GOT.
  5660. ENUM
  5661. BFD_RELOC_CRIS_32_PLT_PCREL
  5662. ENUMDOC
  5663. 32-bit offset to symbol with PLT entry, relative to this relocation.
  5664. ENUM
  5665. BFD_RELOC_CRIS_32_GOT_GD
  5666. ENUMX
  5667. BFD_RELOC_CRIS_16_GOT_GD
  5668. ENUMX
  5669. BFD_RELOC_CRIS_32_GD
  5670. ENUMX
  5671. BFD_RELOC_CRIS_DTP
  5672. ENUMX
  5673. BFD_RELOC_CRIS_32_DTPREL
  5674. ENUMX
  5675. BFD_RELOC_CRIS_16_DTPREL
  5676. ENUMX
  5677. BFD_RELOC_CRIS_32_GOT_TPREL
  5678. ENUMX
  5679. BFD_RELOC_CRIS_16_GOT_TPREL
  5680. ENUMX
  5681. BFD_RELOC_CRIS_32_TPREL
  5682. ENUMX
  5683. BFD_RELOC_CRIS_16_TPREL
  5684. ENUMX
  5685. BFD_RELOC_CRIS_DTPMOD
  5686. ENUMX
  5687. BFD_RELOC_CRIS_32_IE
  5688. ENUMDOC
  5689. Relocs used in TLS code for CRIS.
  5690. ENUM
  5691. BFD_RELOC_860_COPY
  5692. ENUMX
  5693. BFD_RELOC_860_GLOB_DAT
  5694. ENUMX
  5695. BFD_RELOC_860_JUMP_SLOT
  5696. ENUMX
  5697. BFD_RELOC_860_RELATIVE
  5698. ENUMX
  5699. BFD_RELOC_860_PC26
  5700. ENUMX
  5701. BFD_RELOC_860_PLT26
  5702. ENUMX
  5703. BFD_RELOC_860_PC16
  5704. ENUMX
  5705. BFD_RELOC_860_LOW0
  5706. ENUMX
  5707. BFD_RELOC_860_SPLIT0
  5708. ENUMX
  5709. BFD_RELOC_860_LOW1
  5710. ENUMX
  5711. BFD_RELOC_860_SPLIT1
  5712. ENUMX
  5713. BFD_RELOC_860_LOW2
  5714. ENUMX
  5715. BFD_RELOC_860_SPLIT2
  5716. ENUMX
  5717. BFD_RELOC_860_LOW3
  5718. ENUMX
  5719. BFD_RELOC_860_LOGOT0
  5720. ENUMX
  5721. BFD_RELOC_860_SPGOT0
  5722. ENUMX
  5723. BFD_RELOC_860_LOGOT1
  5724. ENUMX
  5725. BFD_RELOC_860_SPGOT1
  5726. ENUMX
  5727. BFD_RELOC_860_LOGOTOFF0
  5728. ENUMX
  5729. BFD_RELOC_860_SPGOTOFF0
  5730. ENUMX
  5731. BFD_RELOC_860_LOGOTOFF1
  5732. ENUMX
  5733. BFD_RELOC_860_SPGOTOFF1
  5734. ENUMX
  5735. BFD_RELOC_860_LOGOTOFF2
  5736. ENUMX
  5737. BFD_RELOC_860_LOGOTOFF3
  5738. ENUMX
  5739. BFD_RELOC_860_LOPC
  5740. ENUMX
  5741. BFD_RELOC_860_HIGHADJ
  5742. ENUMX
  5743. BFD_RELOC_860_HAGOT
  5744. ENUMX
  5745. BFD_RELOC_860_HAGOTOFF
  5746. ENUMX
  5747. BFD_RELOC_860_HAPC
  5748. ENUMX
  5749. BFD_RELOC_860_HIGH
  5750. ENUMX
  5751. BFD_RELOC_860_HIGOT
  5752. ENUMX
  5753. BFD_RELOC_860_HIGOTOFF
  5754. ENUMDOC
  5755. Intel i860 Relocations.
  5756. ENUM
  5757. BFD_RELOC_OR1K_REL_26
  5758. ENUMX
  5759. BFD_RELOC_OR1K_GOTPC_HI16
  5760. ENUMX
  5761. BFD_RELOC_OR1K_GOTPC_LO16
  5762. ENUMX
  5763. BFD_RELOC_OR1K_GOT16
  5764. ENUMX
  5765. BFD_RELOC_OR1K_PLT26
  5766. ENUMX
  5767. BFD_RELOC_OR1K_GOTOFF_HI16
  5768. ENUMX
  5769. BFD_RELOC_OR1K_GOTOFF_LO16
  5770. ENUMX
  5771. BFD_RELOC_OR1K_COPY
  5772. ENUMX
  5773. BFD_RELOC_OR1K_GLOB_DAT
  5774. ENUMX
  5775. BFD_RELOC_OR1K_JMP_SLOT
  5776. ENUMX
  5777. BFD_RELOC_OR1K_RELATIVE
  5778. ENUMX
  5779. BFD_RELOC_OR1K_TLS_GD_HI16
  5780. ENUMX
  5781. BFD_RELOC_OR1K_TLS_GD_LO16
  5782. ENUMX
  5783. BFD_RELOC_OR1K_TLS_LDM_HI16
  5784. ENUMX
  5785. BFD_RELOC_OR1K_TLS_LDM_LO16
  5786. ENUMX
  5787. BFD_RELOC_OR1K_TLS_LDO_HI16
  5788. ENUMX
  5789. BFD_RELOC_OR1K_TLS_LDO_LO16
  5790. ENUMX
  5791. BFD_RELOC_OR1K_TLS_IE_HI16
  5792. ENUMX
  5793. BFD_RELOC_OR1K_TLS_IE_LO16
  5794. ENUMX
  5795. BFD_RELOC_OR1K_TLS_LE_HI16
  5796. ENUMX
  5797. BFD_RELOC_OR1K_TLS_LE_LO16
  5798. ENUMX
  5799. BFD_RELOC_OR1K_TLS_TPOFF
  5800. ENUMX
  5801. BFD_RELOC_OR1K_TLS_DTPOFF
  5802. ENUMX
  5803. BFD_RELOC_OR1K_TLS_DTPMOD
  5804. ENUMDOC
  5805. OpenRISC 1000 Relocations.
  5806. ENUM
  5807. BFD_RELOC_H8_DIR16A8
  5808. ENUMX
  5809. BFD_RELOC_H8_DIR16R8
  5810. ENUMX
  5811. BFD_RELOC_H8_DIR24A8
  5812. ENUMX
  5813. BFD_RELOC_H8_DIR24R8
  5814. ENUMX
  5815. BFD_RELOC_H8_DIR32A16
  5816. ENUMX
  5817. BFD_RELOC_H8_DISP32A16
  5818. ENUMDOC
  5819. H8 elf Relocations.
  5820. ENUM
  5821. BFD_RELOC_XSTORMY16_REL_12
  5822. ENUMX
  5823. BFD_RELOC_XSTORMY16_12
  5824. ENUMX
  5825. BFD_RELOC_XSTORMY16_24
  5826. ENUMX
  5827. BFD_RELOC_XSTORMY16_FPTR16
  5828. ENUMDOC
  5829. Sony Xstormy16 Relocations.
  5830. ENUM
  5831. BFD_RELOC_RELC
  5832. ENUMDOC
  5833. Self-describing complex relocations.
  5834. COMMENT
  5835. ENUM
  5836. BFD_RELOC_XC16X_PAG
  5837. ENUMX
  5838. BFD_RELOC_XC16X_POF
  5839. ENUMX
  5840. BFD_RELOC_XC16X_SEG
  5841. ENUMX
  5842. BFD_RELOC_XC16X_SOF
  5843. ENUMDOC
  5844. Infineon Relocations.
  5845. ENUM
  5846. BFD_RELOC_VAX_GLOB_DAT
  5847. ENUMX
  5848. BFD_RELOC_VAX_JMP_SLOT
  5849. ENUMX
  5850. BFD_RELOC_VAX_RELATIVE
  5851. ENUMDOC
  5852. Relocations used by VAX ELF.
  5853. ENUM
  5854. BFD_RELOC_MT_PC16
  5855. ENUMDOC
  5856. Morpho MT - 16 bit immediate relocation.
  5857. ENUM
  5858. BFD_RELOC_MT_HI16
  5859. ENUMDOC
  5860. Morpho MT - Hi 16 bits of an address.
  5861. ENUM
  5862. BFD_RELOC_MT_LO16
  5863. ENUMDOC
  5864. Morpho MT - Low 16 bits of an address.
  5865. ENUM
  5866. BFD_RELOC_MT_GNU_VTINHERIT
  5867. ENUMDOC
  5868. Morpho MT - Used to tell the linker which vtable entries are used.
  5869. ENUM
  5870. BFD_RELOC_MT_GNU_VTENTRY
  5871. ENUMDOC
  5872. Morpho MT - Used to tell the linker which vtable entries are used.
  5873. ENUM
  5874. BFD_RELOC_MT_PCINSN8
  5875. ENUMDOC
  5876. Morpho MT - 8 bit immediate relocation.
  5877. ENUM
  5878. BFD_RELOC_MSP430_10_PCREL
  5879. ENUMX
  5880. BFD_RELOC_MSP430_16_PCREL
  5881. ENUMX
  5882. BFD_RELOC_MSP430_16
  5883. ENUMX
  5884. BFD_RELOC_MSP430_16_PCREL_BYTE
  5885. ENUMX
  5886. BFD_RELOC_MSP430_16_BYTE
  5887. ENUMX
  5888. BFD_RELOC_MSP430_2X_PCREL
  5889. ENUMX
  5890. BFD_RELOC_MSP430_RL_PCREL
  5891. ENUMX
  5892. BFD_RELOC_MSP430_ABS8
  5893. ENUMX
  5894. BFD_RELOC_MSP430X_PCR20_EXT_SRC
  5895. ENUMX
  5896. BFD_RELOC_MSP430X_PCR20_EXT_DST
  5897. ENUMX
  5898. BFD_RELOC_MSP430X_PCR20_EXT_ODST
  5899. ENUMX
  5900. BFD_RELOC_MSP430X_ABS20_EXT_SRC
  5901. ENUMX
  5902. BFD_RELOC_MSP430X_ABS20_EXT_DST
  5903. ENUMX
  5904. BFD_RELOC_MSP430X_ABS20_EXT_ODST
  5905. ENUMX
  5906. BFD_RELOC_MSP430X_ABS20_ADR_SRC
  5907. ENUMX
  5908. BFD_RELOC_MSP430X_ABS20_ADR_DST
  5909. ENUMX
  5910. BFD_RELOC_MSP430X_PCR16
  5911. ENUMX
  5912. BFD_RELOC_MSP430X_PCR20_CALL
  5913. ENUMX
  5914. BFD_RELOC_MSP430X_ABS16
  5915. ENUMX
  5916. BFD_RELOC_MSP430_ABS_HI16
  5917. ENUMX
  5918. BFD_RELOC_MSP430_PREL31
  5919. ENUMX
  5920. BFD_RELOC_MSP430_SYM_DIFF
  5921. ENUMDOC
  5922. msp430 specific relocation codes
  5923. ENUM
  5924. BFD_RELOC_NIOS2_S16
  5925. ENUMX
  5926. BFD_RELOC_NIOS2_U16
  5927. ENUMX
  5928. BFD_RELOC_NIOS2_CALL26
  5929. ENUMX
  5930. BFD_RELOC_NIOS2_IMM5
  5931. ENUMX
  5932. BFD_RELOC_NIOS2_CACHE_OPX
  5933. ENUMX
  5934. BFD_RELOC_NIOS2_IMM6
  5935. ENUMX
  5936. BFD_RELOC_NIOS2_IMM8
  5937. ENUMX
  5938. BFD_RELOC_NIOS2_HI16
  5939. ENUMX
  5940. BFD_RELOC_NIOS2_LO16
  5941. ENUMX
  5942. BFD_RELOC_NIOS2_HIADJ16
  5943. ENUMX
  5944. BFD_RELOC_NIOS2_GPREL
  5945. ENUMX
  5946. BFD_RELOC_NIOS2_UJMP
  5947. ENUMX
  5948. BFD_RELOC_NIOS2_CJMP
  5949. ENUMX
  5950. BFD_RELOC_NIOS2_CALLR
  5951. ENUMX
  5952. BFD_RELOC_NIOS2_ALIGN
  5953. ENUMX
  5954. BFD_RELOC_NIOS2_GOT16
  5955. ENUMX
  5956. BFD_RELOC_NIOS2_CALL16
  5957. ENUMX
  5958. BFD_RELOC_NIOS2_GOTOFF_LO
  5959. ENUMX
  5960. BFD_RELOC_NIOS2_GOTOFF_HA
  5961. ENUMX
  5962. BFD_RELOC_NIOS2_PCREL_LO
  5963. ENUMX
  5964. BFD_RELOC_NIOS2_PCREL_HA
  5965. ENUMX
  5966. BFD_RELOC_NIOS2_TLS_GD16
  5967. ENUMX
  5968. BFD_RELOC_NIOS2_TLS_LDM16
  5969. ENUMX
  5970. BFD_RELOC_NIOS2_TLS_LDO16
  5971. ENUMX
  5972. BFD_RELOC_NIOS2_TLS_IE16
  5973. ENUMX
  5974. BFD_RELOC_NIOS2_TLS_LE16
  5975. ENUMX
  5976. BFD_RELOC_NIOS2_TLS_DTPMOD
  5977. ENUMX
  5978. BFD_RELOC_NIOS2_TLS_DTPREL
  5979. ENUMX
  5980. BFD_RELOC_NIOS2_TLS_TPREL
  5981. ENUMX
  5982. BFD_RELOC_NIOS2_COPY
  5983. ENUMX
  5984. BFD_RELOC_NIOS2_GLOB_DAT
  5985. ENUMX
  5986. BFD_RELOC_NIOS2_JUMP_SLOT
  5987. ENUMX
  5988. BFD_RELOC_NIOS2_RELATIVE
  5989. ENUMX
  5990. BFD_RELOC_NIOS2_GOTOFF
  5991. ENUMX
  5992. BFD_RELOC_NIOS2_CALL26_NOAT
  5993. ENUMX
  5994. BFD_RELOC_NIOS2_GOT_LO
  5995. ENUMX
  5996. BFD_RELOC_NIOS2_GOT_HA
  5997. ENUMX
  5998. BFD_RELOC_NIOS2_CALL_LO
  5999. ENUMX
  6000. BFD_RELOC_NIOS2_CALL_HA
  6001. ENUMX
  6002. BFD_RELOC_NIOS2_R2_S12
  6003. ENUMX
  6004. BFD_RELOC_NIOS2_R2_I10_1_PCREL
  6005. ENUMX
  6006. BFD_RELOC_NIOS2_R2_T1I7_1_PCREL
  6007. ENUMX
  6008. BFD_RELOC_NIOS2_R2_T1I7_2
  6009. ENUMX
  6010. BFD_RELOC_NIOS2_R2_T2I4
  6011. ENUMX
  6012. BFD_RELOC_NIOS2_R2_T2I4_1
  6013. ENUMX
  6014. BFD_RELOC_NIOS2_R2_T2I4_2
  6015. ENUMX
  6016. BFD_RELOC_NIOS2_R2_X1I7_2
  6017. ENUMX
  6018. BFD_RELOC_NIOS2_R2_X2L5
  6019. ENUMX
  6020. BFD_RELOC_NIOS2_R2_F1I5_2
  6021. ENUMX
  6022. BFD_RELOC_NIOS2_R2_L5I4X1
  6023. ENUMX
  6024. BFD_RELOC_NIOS2_R2_T1X1I6
  6025. ENUMX
  6026. BFD_RELOC_NIOS2_R2_T1X1I6_2
  6027. ENUMDOC
  6028. Relocations used by the Altera Nios II core.
  6029. ENUM
  6030. BFD_RELOC_IQ2000_OFFSET_16
  6031. ENUMX
  6032. BFD_RELOC_IQ2000_OFFSET_21
  6033. ENUMX
  6034. BFD_RELOC_IQ2000_UHI16
  6035. ENUMDOC
  6036. IQ2000 Relocations.
  6037. ENUM
  6038. BFD_RELOC_XTENSA_RTLD
  6039. ENUMDOC
  6040. Special Xtensa relocation used only by PLT entries in ELF shared
  6041. objects to indicate that the runtime linker should set the value
  6042. to one of its own internal functions or data structures.
  6043. ENUM
  6044. BFD_RELOC_XTENSA_GLOB_DAT
  6045. ENUMX
  6046. BFD_RELOC_XTENSA_JMP_SLOT
  6047. ENUMX
  6048. BFD_RELOC_XTENSA_RELATIVE
  6049. ENUMDOC
  6050. Xtensa relocations for ELF shared objects.
  6051. ENUM
  6052. BFD_RELOC_XTENSA_PLT
  6053. ENUMDOC
  6054. Xtensa relocation used in ELF object files for symbols that may require
  6055. PLT entries. Otherwise, this is just a generic 32-bit relocation.
  6056. ENUM
  6057. BFD_RELOC_XTENSA_DIFF8
  6058. ENUMX
  6059. BFD_RELOC_XTENSA_DIFF16
  6060. ENUMX
  6061. BFD_RELOC_XTENSA_DIFF32
  6062. ENUMDOC
  6063. Xtensa relocations to mark the difference of two local symbols.
  6064. These are only needed to support linker relaxation and can be ignored
  6065. when not relaxing. The field is set to the value of the difference
  6066. assuming no relaxation. The relocation encodes the position of the
  6067. first symbol so the linker can determine whether to adjust the field
  6068. value.
  6069. ENUM
  6070. BFD_RELOC_XTENSA_SLOT0_OP
  6071. ENUMX
  6072. BFD_RELOC_XTENSA_SLOT1_OP
  6073. ENUMX
  6074. BFD_RELOC_XTENSA_SLOT2_OP
  6075. ENUMX
  6076. BFD_RELOC_XTENSA_SLOT3_OP
  6077. ENUMX
  6078. BFD_RELOC_XTENSA_SLOT4_OP
  6079. ENUMX
  6080. BFD_RELOC_XTENSA_SLOT5_OP
  6081. ENUMX
  6082. BFD_RELOC_XTENSA_SLOT6_OP
  6083. ENUMX
  6084. BFD_RELOC_XTENSA_SLOT7_OP
  6085. ENUMX
  6086. BFD_RELOC_XTENSA_SLOT8_OP
  6087. ENUMX
  6088. BFD_RELOC_XTENSA_SLOT9_OP
  6089. ENUMX
  6090. BFD_RELOC_XTENSA_SLOT10_OP
  6091. ENUMX
  6092. BFD_RELOC_XTENSA_SLOT11_OP
  6093. ENUMX
  6094. BFD_RELOC_XTENSA_SLOT12_OP
  6095. ENUMX
  6096. BFD_RELOC_XTENSA_SLOT13_OP
  6097. ENUMX
  6098. BFD_RELOC_XTENSA_SLOT14_OP
  6099. ENUMDOC
  6100. Generic Xtensa relocations for instruction operands. Only the slot
  6101. number is encoded in the relocation. The relocation applies to the
  6102. last PC-relative immediate operand, or if there are no PC-relative
  6103. immediates, to the last immediate operand.
  6104. ENUM
  6105. BFD_RELOC_XTENSA_SLOT0_ALT
  6106. ENUMX
  6107. BFD_RELOC_XTENSA_SLOT1_ALT
  6108. ENUMX
  6109. BFD_RELOC_XTENSA_SLOT2_ALT
  6110. ENUMX
  6111. BFD_RELOC_XTENSA_SLOT3_ALT
  6112. ENUMX
  6113. BFD_RELOC_XTENSA_SLOT4_ALT
  6114. ENUMX
  6115. BFD_RELOC_XTENSA_SLOT5_ALT
  6116. ENUMX
  6117. BFD_RELOC_XTENSA_SLOT6_ALT
  6118. ENUMX
  6119. BFD_RELOC_XTENSA_SLOT7_ALT
  6120. ENUMX
  6121. BFD_RELOC_XTENSA_SLOT8_ALT
  6122. ENUMX
  6123. BFD_RELOC_XTENSA_SLOT9_ALT
  6124. ENUMX
  6125. BFD_RELOC_XTENSA_SLOT10_ALT
  6126. ENUMX
  6127. BFD_RELOC_XTENSA_SLOT11_ALT
  6128. ENUMX
  6129. BFD_RELOC_XTENSA_SLOT12_ALT
  6130. ENUMX
  6131. BFD_RELOC_XTENSA_SLOT13_ALT
  6132. ENUMX
  6133. BFD_RELOC_XTENSA_SLOT14_ALT
  6134. ENUMDOC
  6135. Alternate Xtensa relocations. Only the slot is encoded in the
  6136. relocation. The meaning of these relocations is opcode-specific.
  6137. ENUM
  6138. BFD_RELOC_XTENSA_OP0
  6139. ENUMX
  6140. BFD_RELOC_XTENSA_OP1
  6141. ENUMX
  6142. BFD_RELOC_XTENSA_OP2
  6143. ENUMDOC
  6144. Xtensa relocations for backward compatibility. These have all been
  6145. replaced by BFD_RELOC_XTENSA_SLOT0_OP.
  6146. ENUM
  6147. BFD_RELOC_XTENSA_ASM_EXPAND
  6148. ENUMDOC
  6149. Xtensa relocation to mark that the assembler expanded the
  6150. instructions from an original target. The expansion size is
  6151. encoded in the reloc size.
  6152. ENUM
  6153. BFD_RELOC_XTENSA_ASM_SIMPLIFY
  6154. ENUMDOC
  6155. Xtensa relocation to mark that the linker should simplify
  6156. assembler-expanded instructions. This is commonly used
  6157. internally by the linker after analysis of a
  6158. BFD_RELOC_XTENSA_ASM_EXPAND.
  6159. ENUM
  6160. BFD_RELOC_XTENSA_TLSDESC_FN
  6161. ENUMX
  6162. BFD_RELOC_XTENSA_TLSDESC_ARG
  6163. ENUMX
  6164. BFD_RELOC_XTENSA_TLS_DTPOFF
  6165. ENUMX
  6166. BFD_RELOC_XTENSA_TLS_TPOFF
  6167. ENUMX
  6168. BFD_RELOC_XTENSA_TLS_FUNC
  6169. ENUMX
  6170. BFD_RELOC_XTENSA_TLS_ARG
  6171. ENUMX
  6172. BFD_RELOC_XTENSA_TLS_CALL
  6173. ENUMDOC
  6174. Xtensa TLS relocations.
  6175. ENUM
  6176. BFD_RELOC_Z80_DISP8
  6177. ENUMDOC
  6178. 8 bit signed offset in (ix+d) or (iy+d).
  6179. ENUM
  6180. BFD_RELOC_Z8K_DISP7
  6181. ENUMDOC
  6182. DJNZ offset.
  6183. ENUM
  6184. BFD_RELOC_Z8K_CALLR
  6185. ENUMDOC
  6186. CALR offset.
  6187. ENUM
  6188. BFD_RELOC_Z8K_IMM4L
  6189. ENUMDOC
  6190. 4 bit value.
  6191. ENUM
  6192. BFD_RELOC_LM32_CALL
  6193. ENUMX
  6194. BFD_RELOC_LM32_BRANCH
  6195. ENUMX
  6196. BFD_RELOC_LM32_16_GOT
  6197. ENUMX
  6198. BFD_RELOC_LM32_GOTOFF_HI16
  6199. ENUMX
  6200. BFD_RELOC_LM32_GOTOFF_LO16
  6201. ENUMX
  6202. BFD_RELOC_LM32_COPY
  6203. ENUMX
  6204. BFD_RELOC_LM32_GLOB_DAT
  6205. ENUMX
  6206. BFD_RELOC_LM32_JMP_SLOT
  6207. ENUMX
  6208. BFD_RELOC_LM32_RELATIVE
  6209. ENUMDOC
  6210. Lattice Mico32 relocations.
  6211. ENUM
  6212. BFD_RELOC_MACH_O_SECTDIFF
  6213. ENUMDOC
  6214. Difference between two section addreses. Must be followed by a
  6215. BFD_RELOC_MACH_O_PAIR.
  6216. ENUM
  6217. BFD_RELOC_MACH_O_LOCAL_SECTDIFF
  6218. ENUMDOC
  6219. Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.
  6220. ENUM
  6221. BFD_RELOC_MACH_O_PAIR
  6222. ENUMDOC
  6223. Pair of relocation. Contains the first symbol.
  6224. ENUM
  6225. BFD_RELOC_MACH_O_X86_64_BRANCH32
  6226. ENUMX
  6227. BFD_RELOC_MACH_O_X86_64_BRANCH8
  6228. ENUMDOC
  6229. PCREL relocations. They are marked as branch to create PLT entry if
  6230. required.
  6231. ENUM
  6232. BFD_RELOC_MACH_O_X86_64_GOT
  6233. ENUMDOC
  6234. Used when referencing a GOT entry.
  6235. ENUM
  6236. BFD_RELOC_MACH_O_X86_64_GOT_LOAD
  6237. ENUMDOC
  6238. Used when loading a GOT entry with movq. It is specially marked so that
  6239. the linker could optimize the movq to a leaq if possible.
  6240. ENUM
  6241. BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32
  6242. ENUMDOC
  6243. Symbol will be substracted. Must be followed by a BFD_RELOC_64.
  6244. ENUM
  6245. BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64
  6246. ENUMDOC
  6247. Symbol will be substracted. Must be followed by a BFD_RELOC_64.
  6248. ENUM
  6249. BFD_RELOC_MACH_O_X86_64_PCREL32_1
  6250. ENUMDOC
  6251. Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
  6252. ENUM
  6253. BFD_RELOC_MACH_O_X86_64_PCREL32_2
  6254. ENUMDOC
  6255. Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
  6256. ENUM
  6257. BFD_RELOC_MACH_O_X86_64_PCREL32_4
  6258. ENUMDOC
  6259. Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
  6260. ENUM
  6261. BFD_RELOC_MICROBLAZE_32_LO
  6262. ENUMDOC
  6263. This is a 32 bit reloc for the microblaze that stores the
  6264. low 16 bits of a value
  6265. ENUM
  6266. BFD_RELOC_MICROBLAZE_32_LO_PCREL
  6267. ENUMDOC
  6268. This is a 32 bit pc-relative reloc for the microblaze that
  6269. stores the low 16 bits of a value
  6270. ENUM
  6271. BFD_RELOC_MICROBLAZE_32_ROSDA
  6272. ENUMDOC
  6273. This is a 32 bit reloc for the microblaze that stores a
  6274. value relative to the read-only small data area anchor
  6275. ENUM
  6276. BFD_RELOC_MICROBLAZE_32_RWSDA
  6277. ENUMDOC
  6278. This is a 32 bit reloc for the microblaze that stores a
  6279. value relative to the read-write small data area anchor
  6280. ENUM
  6281. BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
  6282. ENUMDOC
  6283. This is a 32 bit reloc for the microblaze to handle
  6284. expressions of the form "Symbol Op Symbol"
  6285. ENUM
  6286. BFD_RELOC_MICROBLAZE_64_NONE
  6287. ENUMDOC
  6288. This is a 64 bit reloc that stores the 32 bit pc relative
  6289. value in two words (with an imm instruction). No relocation is
  6290. done here - only used for relaxing
  6291. ENUM
  6292. BFD_RELOC_MICROBLAZE_64_GOTPC
  6293. ENUMDOC
  6294. This is a 64 bit reloc that stores the 32 bit pc relative
  6295. value in two words (with an imm instruction). The relocation is
  6296. PC-relative GOT offset
  6297. ENUM
  6298. BFD_RELOC_MICROBLAZE_64_GOT
  6299. ENUMDOC
  6300. This is a 64 bit reloc that stores the 32 bit pc relative
  6301. value in two words (with an imm instruction). The relocation is
  6302. GOT offset
  6303. ENUM
  6304. BFD_RELOC_MICROBLAZE_64_PLT
  6305. ENUMDOC
  6306. This is a 64 bit reloc that stores the 32 bit pc relative
  6307. value in two words (with an imm instruction). The relocation is
  6308. PC-relative offset into PLT
  6309. ENUM
  6310. BFD_RELOC_MICROBLAZE_64_GOTOFF
  6311. ENUMDOC
  6312. This is a 64 bit reloc that stores the 32 bit GOT relative
  6313. value in two words (with an imm instruction). The relocation is
  6314. relative offset from _GLOBAL_OFFSET_TABLE_
  6315. ENUM
  6316. BFD_RELOC_MICROBLAZE_32_GOTOFF
  6317. ENUMDOC
  6318. This is a 32 bit reloc that stores the 32 bit GOT relative
  6319. value in a word. The relocation is relative offset from
  6320. _GLOBAL_OFFSET_TABLE_
  6321. ENUM
  6322. BFD_RELOC_MICROBLAZE_COPY
  6323. ENUMDOC
  6324. This is used to tell the dynamic linker to copy the value out of
  6325. the dynamic object into the runtime process image.
  6326. ENUM
  6327. BFD_RELOC_MICROBLAZE_64_TLS
  6328. ENUMDOC
  6329. Unused Reloc
  6330. ENUM
  6331. BFD_RELOC_MICROBLAZE_64_TLSGD
  6332. ENUMDOC
  6333. This is a 64 bit reloc that stores the 32 bit GOT relative value
  6334. of the GOT TLS GD info entry in two words (with an imm instruction). The
  6335. relocation is GOT offset.
  6336. ENUM
  6337. BFD_RELOC_MICROBLAZE_64_TLSLD
  6338. ENUMDOC
  6339. This is a 64 bit reloc that stores the 32 bit GOT relative value
  6340. of the GOT TLS LD info entry in two words (with an imm instruction). The
  6341. relocation is GOT offset.
  6342. ENUM
  6343. BFD_RELOC_MICROBLAZE_32_TLSDTPMOD
  6344. ENUMDOC
  6345. This is a 32 bit reloc that stores the Module ID to GOT(n).
  6346. ENUM
  6347. BFD_RELOC_MICROBLAZE_32_TLSDTPREL
  6348. ENUMDOC
  6349. This is a 32 bit reloc that stores TLS offset to GOT(n+1).
  6350. ENUM
  6351. BFD_RELOC_MICROBLAZE_64_TLSDTPREL
  6352. ENUMDOC
  6353. This is a 32 bit reloc for storing TLS offset to two words (uses imm
  6354. instruction)
  6355. ENUM
  6356. BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
  6357. ENUMDOC
  6358. This is a 64 bit reloc that stores 32-bit thread pointer relative offset
  6359. to two words (uses imm instruction).
  6360. ENUM
  6361. BFD_RELOC_MICROBLAZE_64_TLSTPREL
  6362. ENUMDOC
  6363. This is a 64 bit reloc that stores 32-bit thread pointer relative offset
  6364. to two words (uses imm instruction).
  6365. ENUM
  6366. BFD_RELOC_AARCH64_RELOC_START
  6367. ENUMDOC
  6368. AArch64 pseudo relocation code to mark the start of the AArch64
  6369. relocation enumerators. N.B. the order of the enumerators is
  6370. important as several tables in the AArch64 bfd backend are indexed
  6371. by these enumerators; make sure they are all synced.
  6372. ENUM
  6373. BFD_RELOC_AARCH64_NONE
  6374. ENUMDOC
  6375. AArch64 null relocation code.
  6376. ENUM
  6377. BFD_RELOC_AARCH64_64
  6378. ENUMX
  6379. BFD_RELOC_AARCH64_32
  6380. ENUMX
  6381. BFD_RELOC_AARCH64_16
  6382. ENUMDOC
  6383. Basic absolute relocations of N bits. These are equivalent to
  6384. BFD_RELOC_N and they were added to assist the indexing of the howto
  6385. table.
  6386. ENUM
  6387. BFD_RELOC_AARCH64_64_PCREL
  6388. ENUMX
  6389. BFD_RELOC_AARCH64_32_PCREL
  6390. ENUMX
  6391. BFD_RELOC_AARCH64_16_PCREL
  6392. ENUMDOC
  6393. PC-relative relocations. These are equivalent to BFD_RELOC_N_PCREL
  6394. and they were added to assist the indexing of the howto table.
  6395. ENUM
  6396. BFD_RELOC_AARCH64_MOVW_G0
  6397. ENUMDOC
  6398. AArch64 MOV[NZK] instruction with most significant bits 0 to 15
  6399. of an unsigned address/value.
  6400. ENUM
  6401. BFD_RELOC_AARCH64_MOVW_G0_NC
  6402. ENUMDOC
  6403. AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
  6404. an address/value. No overflow checking.
  6405. ENUM
  6406. BFD_RELOC_AARCH64_MOVW_G1
  6407. ENUMDOC
  6408. AArch64 MOV[NZK] instruction with most significant bits 16 to 31
  6409. of an unsigned address/value.
  6410. ENUM
  6411. BFD_RELOC_AARCH64_MOVW_G1_NC
  6412. ENUMDOC
  6413. AArch64 MOV[NZK] instruction with less significant bits 16 to 31
  6414. of an address/value. No overflow checking.
  6415. ENUM
  6416. BFD_RELOC_AARCH64_MOVW_G2
  6417. ENUMDOC
  6418. AArch64 MOV[NZK] instruction with most significant bits 32 to 47
  6419. of an unsigned address/value.
  6420. ENUM
  6421. BFD_RELOC_AARCH64_MOVW_G2_NC
  6422. ENUMDOC
  6423. AArch64 MOV[NZK] instruction with less significant bits 32 to 47
  6424. of an address/value. No overflow checking.
  6425. ENUM
  6426. BFD_RELOC_AARCH64_MOVW_G3
  6427. ENUMDOC
  6428. AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
  6429. of a signed or unsigned address/value.
  6430. ENUM
  6431. BFD_RELOC_AARCH64_MOVW_G0_S
  6432. ENUMDOC
  6433. AArch64 MOV[NZ] instruction with most significant bits 0 to 15
  6434. of a signed value. Changes instruction to MOVZ or MOVN depending on the
  6435. value's sign.
  6436. ENUM
  6437. BFD_RELOC_AARCH64_MOVW_G1_S
  6438. ENUMDOC
  6439. AArch64 MOV[NZ] instruction with most significant bits 16 to 31
  6440. of a signed value. Changes instruction to MOVZ or MOVN depending on the
  6441. value's sign.
  6442. ENUM
  6443. BFD_RELOC_AARCH64_MOVW_G2_S
  6444. ENUMDOC
  6445. AArch64 MOV[NZ] instruction with most significant bits 32 to 47
  6446. of a signed value. Changes instruction to MOVZ or MOVN depending on the
  6447. value's sign.
  6448. ENUM
  6449. BFD_RELOC_AARCH64_LD_LO19_PCREL
  6450. ENUMDOC
  6451. AArch64 Load Literal instruction, holding a 19 bit pc-relative word
  6452. offset. The lowest two bits must be zero and are not stored in the
  6453. instruction, giving a 21 bit signed byte offset.
  6454. ENUM
  6455. BFD_RELOC_AARCH64_ADR_LO21_PCREL
  6456. ENUMDOC
  6457. AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.
  6458. ENUM
  6459. BFD_RELOC_AARCH64_ADR_HI21_PCREL
  6460. ENUMDOC
  6461. AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
  6462. offset, giving a 4KB aligned page base address.
  6463. ENUM
  6464. BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL
  6465. ENUMDOC
  6466. AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
  6467. offset, giving a 4KB aligned page base address, but with no overflow
  6468. checking.
  6469. ENUM
  6470. BFD_RELOC_AARCH64_ADD_LO12
  6471. ENUMDOC
  6472. AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
  6473. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
  6474. ENUM
  6475. BFD_RELOC_AARCH64_LDST8_LO12
  6476. ENUMDOC
  6477. AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
  6478. address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
  6479. ENUM
  6480. BFD_RELOC_AARCH64_TSTBR14
  6481. ENUMDOC
  6482. AArch64 14 bit pc-relative test bit and branch.
  6483. The lowest two bits must be zero and are not stored in the instruction,
  6484. giving a 16 bit signed byte offset.
  6485. ENUM
  6486. BFD_RELOC_AARCH64_BRANCH19
  6487. ENUMDOC
  6488. AArch64 19 bit pc-relative conditional branch and compare & branch.
  6489. The lowest two bits must be zero and are not stored in the instruction,
  6490. giving a 21 bit signed byte offset.
  6491. ENUM
  6492. BFD_RELOC_AARCH64_JUMP26
  6493. ENUMDOC
  6494. AArch64 26 bit pc-relative unconditional branch.
  6495. The lowest two bits must be zero and are not stored in the instruction,
  6496. giving a 28 bit signed byte offset.
  6497. ENUM
  6498. BFD_RELOC_AARCH64_CALL26
  6499. ENUMDOC
  6500. AArch64 26 bit pc-relative unconditional branch and link.
  6501. The lowest two bits must be zero and are not stored in the instruction,
  6502. giving a 28 bit signed byte offset.
  6503. ENUM
  6504. BFD_RELOC_AARCH64_LDST16_LO12
  6505. ENUMDOC
  6506. AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
  6507. address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
  6508. ENUM
  6509. BFD_RELOC_AARCH64_LDST32_LO12
  6510. ENUMDOC
  6511. AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
  6512. address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
  6513. ENUM
  6514. BFD_RELOC_AARCH64_LDST64_LO12
  6515. ENUMDOC
  6516. AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
  6517. address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
  6518. ENUM
  6519. BFD_RELOC_AARCH64_LDST128_LO12
  6520. ENUMDOC
  6521. AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
  6522. address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
  6523. ENUM
  6524. BFD_RELOC_AARCH64_GOT_LD_PREL19
  6525. ENUMDOC
  6526. AArch64 Load Literal instruction, holding a 19 bit PC relative word
  6527. offset of the global offset table entry for a symbol. The lowest two
  6528. bits must be zero and are not stored in the instruction, giving a 21
  6529. bit signed byte offset. This relocation type requires signed overflow
  6530. checking.
  6531. ENUM
  6532. BFD_RELOC_AARCH64_ADR_GOT_PAGE
  6533. ENUMDOC
  6534. Get to the page base of the global offset table entry for a symbol as
  6535. part of an ADRP instruction using a 21 bit PC relative value.Used in
  6536. conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
  6537. ENUM
  6538. BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
  6539. ENUMDOC
  6540. Unsigned 12 bit byte offset for 64 bit load/store from the page of
  6541. the GOT entry for this symbol. Used in conjunction with
  6542. BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in LP64 ABI only.
  6543. ENUM
  6544. BFD_RELOC_AARCH64_LD32_GOT_LO12_NC
  6545. ENUMDOC
  6546. Unsigned 12 bit byte offset for 32 bit load/store from the page of
  6547. the GOT entry for this symbol. Used in conjunction with
  6548. BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only.
  6549. ENUM
  6550. BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC
  6551. ENUMDOC
  6552. Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
  6553. for this symbol. Valid in LP64 ABI only.
  6554. ENUM
  6555. BFD_RELOC_AARCH64_MOVW_GOTOFF_G1
  6556. ENUMDOC
  6557. Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
  6558. for this symbol. Valid in LP64 ABI only.
  6559. ENUM
  6560. BFD_RELOC_AARCH64_LD64_GOTOFF_LO15
  6561. ENUMDOC
  6562. Unsigned 15 bit byte offset for 64 bit load/store from the page of
  6563. the GOT entry for this symbol. Valid in LP64 ABI only.
  6564. ENUM
  6565. BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14
  6566. ENUMDOC
  6567. Scaled 14 bit byte offset to the page base of the global offset table.
  6568. ENUM
  6569. BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
  6570. ENUMDOC
  6571. Scaled 15 bit byte offset to the page base of the global offset table.
  6572. ENUM
  6573. BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
  6574. ENUMDOC
  6575. Get to the page base of the global offset table entry for a symbols
  6576. tls_index structure as part of an adrp instruction using a 21 bit PC
  6577. relative value. Used in conjunction with
  6578. BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
  6579. ENUM
  6580. BFD_RELOC_AARCH64_TLSGD_ADR_PREL21
  6581. ENUMDOC
  6582. AArch64 TLS General Dynamic
  6583. ENUM
  6584. BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
  6585. ENUMDOC
  6586. Unsigned 12 bit byte offset to global offset table entry for a symbols
  6587. tls_index structure. Used in conjunction with
  6588. BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
  6589. ENUM
  6590. BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC
  6591. ENUMDOC
  6592. AArch64 TLS General Dynamic relocation.
  6593. ENUM
  6594. BFD_RELOC_AARCH64_TLSGD_MOVW_G1
  6595. ENUMDOC
  6596. AArch64 TLS General Dynamic relocation.
  6597. ENUM
  6598. BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
  6599. ENUMDOC
  6600. AArch64 TLS INITIAL EXEC relocation.
  6601. ENUM
  6602. BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
  6603. ENUMDOC
  6604. AArch64 TLS INITIAL EXEC relocation.
  6605. ENUM
  6606. BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC
  6607. ENUMDOC
  6608. AArch64 TLS INITIAL EXEC relocation.
  6609. ENUM
  6610. BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19
  6611. ENUMDOC
  6612. AArch64 TLS INITIAL EXEC relocation.
  6613. ENUM
  6614. BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
  6615. ENUMDOC
  6616. AArch64 TLS INITIAL EXEC relocation.
  6617. ENUM
  6618. BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1
  6619. ENUMDOC
  6620. AArch64 TLS INITIAL EXEC relocation.
  6621. ENUM
  6622. BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12
  6623. ENUMDOC
  6624. bit[23:12] of byte offset to module TLS base address.
  6625. ENUM
  6626. BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12
  6627. ENUMDOC
  6628. Unsigned 12 bit byte offset to module TLS base address.
  6629. ENUM
  6630. BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
  6631. ENUMDOC
  6632. No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
  6633. ENUM
  6634. BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC
  6635. ENUMDOC
  6636. Unsigned 12 bit byte offset to global offset table entry for a symbols
  6637. tls_index structure. Used in conjunction with
  6638. BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.
  6639. ENUM
  6640. BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21
  6641. ENUMDOC
  6642. GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP
  6643. instruction.
  6644. ENUM
  6645. BFD_RELOC_AARCH64_TLSLD_ADR_PREL21
  6646. ENUMDOC
  6647. GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction.
  6648. ENUM
  6649. BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12
  6650. ENUMDOC
  6651. bit[11:1] of byte offset to module TLS base address, encoded in ldst
  6652. instructions.
  6653. ENUM
  6654. BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
  6655. ENUMDOC
  6656. Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check.
  6657. ENUM
  6658. BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12
  6659. ENUMDOC
  6660. bit[11:2] of byte offset to module TLS base address, encoded in ldst
  6661. instructions.
  6662. ENUM
  6663. BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
  6664. ENUMDOC
  6665. Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check.
  6666. ENUM
  6667. BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12
  6668. ENUMDOC
  6669. bit[11:3] of byte offset to module TLS base address, encoded in ldst
  6670. instructions.
  6671. ENUM
  6672. BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
  6673. ENUMDOC
  6674. Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check.
  6675. ENUM
  6676. BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12
  6677. ENUMDOC
  6678. bit[11:0] of byte offset to module TLS base address, encoded in ldst
  6679. instructions.
  6680. ENUM
  6681. BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
  6682. ENUMDOC
  6683. Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check.
  6684. ENUM
  6685. BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
  6686. ENUMDOC
  6687. bit[15:0] of byte offset to module TLS base address.
  6688. ENUM
  6689. BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
  6690. ENUMDOC
  6691. No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
  6692. ENUM
  6693. BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
  6694. ENUMDOC
  6695. bit[31:16] of byte offset to module TLS base address.
  6696. ENUM
  6697. BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
  6698. ENUMDOC
  6699. No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
  6700. ENUM
  6701. BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2
  6702. ENUMDOC
  6703. bit[47:32] of byte offset to module TLS base address.
  6704. ENUM
  6705. BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
  6706. ENUMDOC
  6707. AArch64 TLS LOCAL EXEC relocation.
  6708. ENUM
  6709. BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
  6710. ENUMDOC
  6711. AArch64 TLS LOCAL EXEC relocation.
  6712. ENUM
  6713. BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
  6714. ENUMDOC
  6715. AArch64 TLS LOCAL EXEC relocation.
  6716. ENUM
  6717. BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0
  6718. ENUMDOC
  6719. AArch64 TLS LOCAL EXEC relocation.
  6720. ENUM
  6721. BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
  6722. ENUMDOC
  6723. AArch64 TLS LOCAL EXEC relocation.
  6724. ENUM
  6725. BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
  6726. ENUMDOC
  6727. AArch64 TLS LOCAL EXEC relocation.
  6728. ENUM
  6729. BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12
  6730. ENUMDOC
  6731. AArch64 TLS LOCAL EXEC relocation.
  6732. ENUM
  6733. BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
  6734. ENUMDOC
  6735. AArch64 TLS LOCAL EXEC relocation.
  6736. ENUM
  6737. BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
  6738. ENUMDOC
  6739. AArch64 TLS DESC relocation.
  6740. ENUM
  6741. BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
  6742. ENUMDOC
  6743. AArch64 TLS DESC relocation.
  6744. ENUM
  6745. BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
  6746. ENUMDOC
  6747. AArch64 TLS DESC relocation.
  6748. ENUM
  6749. BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC
  6750. ENUMDOC
  6751. AArch64 TLS DESC relocation.
  6752. ENUM
  6753. BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
  6754. ENUMDOC
  6755. AArch64 TLS DESC relocation.
  6756. ENUM
  6757. BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC
  6758. ENUMDOC
  6759. AArch64 TLS DESC relocation.
  6760. ENUM
  6761. BFD_RELOC_AARCH64_TLSDESC_OFF_G1
  6762. ENUMDOC
  6763. AArch64 TLS DESC relocation.
  6764. ENUM
  6765. BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
  6766. ENUMDOC
  6767. AArch64 TLS DESC relocation.
  6768. ENUM
  6769. BFD_RELOC_AARCH64_TLSDESC_LDR
  6770. ENUMDOC
  6771. AArch64 TLS DESC relocation.
  6772. ENUM
  6773. BFD_RELOC_AARCH64_TLSDESC_ADD
  6774. ENUMDOC
  6775. AArch64 TLS DESC relocation.
  6776. ENUM
  6777. BFD_RELOC_AARCH64_TLSDESC_CALL
  6778. ENUMDOC
  6779. AArch64 TLS DESC relocation.
  6780. ENUM
  6781. BFD_RELOC_AARCH64_COPY
  6782. ENUMDOC
  6783. AArch64 TLS relocation.
  6784. ENUM
  6785. BFD_RELOC_AARCH64_GLOB_DAT
  6786. ENUMDOC
  6787. AArch64 TLS relocation.
  6788. ENUM
  6789. BFD_RELOC_AARCH64_JUMP_SLOT
  6790. ENUMDOC
  6791. AArch64 TLS relocation.
  6792. ENUM
  6793. BFD_RELOC_AARCH64_RELATIVE
  6794. ENUMDOC
  6795. AArch64 TLS relocation.
  6796. ENUM
  6797. BFD_RELOC_AARCH64_TLS_DTPMOD
  6798. ENUMDOC
  6799. AArch64 TLS relocation.
  6800. ENUM
  6801. BFD_RELOC_AARCH64_TLS_DTPREL
  6802. ENUMDOC
  6803. AArch64 TLS relocation.
  6804. ENUM
  6805. BFD_RELOC_AARCH64_TLS_TPREL
  6806. ENUMDOC
  6807. AArch64 TLS relocation.
  6808. ENUM
  6809. BFD_RELOC_AARCH64_TLSDESC
  6810. ENUMDOC
  6811. AArch64 TLS relocation.
  6812. ENUM
  6813. BFD_RELOC_AARCH64_IRELATIVE
  6814. ENUMDOC
  6815. AArch64 support for STT_GNU_IFUNC.
  6816. ENUM
  6817. BFD_RELOC_AARCH64_RELOC_END
  6818. ENUMDOC
  6819. AArch64 pseudo relocation code to mark the end of the AArch64
  6820. relocation enumerators that have direct mapping to ELF reloc codes.
  6821. There are a few more enumerators after this one; those are mainly
  6822. used by the AArch64 assembler for the internal fixup or to select
  6823. one of the above enumerators.
  6824. ENUM
  6825. BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP
  6826. ENUMDOC
  6827. AArch64 pseudo relocation code to be used internally by the AArch64
  6828. assembler and not (currently) written to any object files.
  6829. ENUM
  6830. BFD_RELOC_AARCH64_LDST_LO12
  6831. ENUMDOC
  6832. AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
  6833. address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
  6834. ENUM
  6835. BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12
  6836. ENUMDOC
  6837. AArch64 pseudo relocation code for TLS local dynamic mode. It's to be
  6838. used internally by the AArch64 assembler and not (currently) written to
  6839. any object files.
  6840. ENUM
  6841. BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC
  6842. ENUMDOC
  6843. Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.
  6844. ENUM
  6845. BFD_RELOC_AARCH64_LD_GOT_LO12_NC
  6846. ENUMDOC
  6847. AArch64 pseudo relocation code to be used internally by the AArch64
  6848. assembler and not (currently) written to any object files.
  6849. ENUM
  6850. BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC
  6851. ENUMDOC
  6852. AArch64 pseudo relocation code to be used internally by the AArch64
  6853. assembler and not (currently) written to any object files.
  6854. ENUM
  6855. BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC
  6856. ENUMDOC
  6857. AArch64 pseudo relocation code to be used internally by the AArch64
  6858. assembler and not (currently) written to any object files.
  6859. ENUM
  6860. BFD_RELOC_TILEPRO_COPY
  6861. ENUMX
  6862. BFD_RELOC_TILEPRO_GLOB_DAT
  6863. ENUMX
  6864. BFD_RELOC_TILEPRO_JMP_SLOT
  6865. ENUMX
  6866. BFD_RELOC_TILEPRO_RELATIVE
  6867. ENUMX
  6868. BFD_RELOC_TILEPRO_BROFF_X1
  6869. ENUMX
  6870. BFD_RELOC_TILEPRO_JOFFLONG_X1
  6871. ENUMX
  6872. BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT
  6873. ENUMX
  6874. BFD_RELOC_TILEPRO_IMM8_X0
  6875. ENUMX
  6876. BFD_RELOC_TILEPRO_IMM8_Y0
  6877. ENUMX
  6878. BFD_RELOC_TILEPRO_IMM8_X1
  6879. ENUMX
  6880. BFD_RELOC_TILEPRO_IMM8_Y1
  6881. ENUMX
  6882. BFD_RELOC_TILEPRO_DEST_IMM8_X1
  6883. ENUMX
  6884. BFD_RELOC_TILEPRO_MT_IMM15_X1
  6885. ENUMX
  6886. BFD_RELOC_TILEPRO_MF_IMM15_X1
  6887. ENUMX
  6888. BFD_RELOC_TILEPRO_IMM16_X0
  6889. ENUMX
  6890. BFD_RELOC_TILEPRO_IMM16_X1
  6891. ENUMX
  6892. BFD_RELOC_TILEPRO_IMM16_X0_LO
  6893. ENUMX
  6894. BFD_RELOC_TILEPRO_IMM16_X1_LO
  6895. ENUMX
  6896. BFD_RELOC_TILEPRO_IMM16_X0_HI
  6897. ENUMX
  6898. BFD_RELOC_TILEPRO_IMM16_X1_HI
  6899. ENUMX
  6900. BFD_RELOC_TILEPRO_IMM16_X0_HA
  6901. ENUMX
  6902. BFD_RELOC_TILEPRO_IMM16_X1_HA
  6903. ENUMX
  6904. BFD_RELOC_TILEPRO_IMM16_X0_PCREL
  6905. ENUMX
  6906. BFD_RELOC_TILEPRO_IMM16_X1_PCREL
  6907. ENUMX
  6908. BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL
  6909. ENUMX
  6910. BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL
  6911. ENUMX
  6912. BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL
  6913. ENUMX
  6914. BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL
  6915. ENUMX
  6916. BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL
  6917. ENUMX
  6918. BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL
  6919. ENUMX
  6920. BFD_RELOC_TILEPRO_IMM16_X0_GOT
  6921. ENUMX
  6922. BFD_RELOC_TILEPRO_IMM16_X1_GOT
  6923. ENUMX
  6924. BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO
  6925. ENUMX
  6926. BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO
  6927. ENUMX
  6928. BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI
  6929. ENUMX
  6930. BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI
  6931. ENUMX
  6932. BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA
  6933. ENUMX
  6934. BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA
  6935. ENUMX
  6936. BFD_RELOC_TILEPRO_MMSTART_X0
  6937. ENUMX
  6938. BFD_RELOC_TILEPRO_MMEND_X0
  6939. ENUMX
  6940. BFD_RELOC_TILEPRO_MMSTART_X1
  6941. ENUMX
  6942. BFD_RELOC_TILEPRO_MMEND_X1
  6943. ENUMX
  6944. BFD_RELOC_TILEPRO_SHAMT_X0
  6945. ENUMX
  6946. BFD_RELOC_TILEPRO_SHAMT_X1
  6947. ENUMX
  6948. BFD_RELOC_TILEPRO_SHAMT_Y0
  6949. ENUMX
  6950. BFD_RELOC_TILEPRO_SHAMT_Y1
  6951. ENUMX
  6952. BFD_RELOC_TILEPRO_TLS_GD_CALL
  6953. ENUMX
  6954. BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD
  6955. ENUMX
  6956. BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD
  6957. ENUMX
  6958. BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD
  6959. ENUMX
  6960. BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD
  6961. ENUMX
  6962. BFD_RELOC_TILEPRO_TLS_IE_LOAD
  6963. ENUMX
  6964. BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD
  6965. ENUMX
  6966. BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD
  6967. ENUMX
  6968. BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO
  6969. ENUMX
  6970. BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO
  6971. ENUMX
  6972. BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI
  6973. ENUMX
  6974. BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI
  6975. ENUMX
  6976. BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA
  6977. ENUMX
  6978. BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA
  6979. ENUMX
  6980. BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE
  6981. ENUMX
  6982. BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE
  6983. ENUMX
  6984. BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO
  6985. ENUMX
  6986. BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO
  6987. ENUMX
  6988. BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI
  6989. ENUMX
  6990. BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI
  6991. ENUMX
  6992. BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA
  6993. ENUMX
  6994. BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA
  6995. ENUMX
  6996. BFD_RELOC_TILEPRO_TLS_DTPMOD32
  6997. ENUMX
  6998. BFD_RELOC_TILEPRO_TLS_DTPOFF32
  6999. ENUMX
  7000. BFD_RELOC_TILEPRO_TLS_TPOFF32
  7001. ENUMX
  7002. BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE
  7003. ENUMX
  7004. BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE
  7005. ENUMX
  7006. BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO
  7007. ENUMX
  7008. BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO
  7009. ENUMX
  7010. BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI
  7011. ENUMX
  7012. BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI
  7013. ENUMX
  7014. BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA
  7015. ENUMX
  7016. BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
  7017. ENUMDOC
  7018. Tilera TILEPro Relocations.
  7019. ENUM
  7020. BFD_RELOC_TILEGX_HW0
  7021. ENUMX
  7022. BFD_RELOC_TILEGX_HW1
  7023. ENUMX
  7024. BFD_RELOC_TILEGX_HW2
  7025. ENUMX
  7026. BFD_RELOC_TILEGX_HW3
  7027. ENUMX
  7028. BFD_RELOC_TILEGX_HW0_LAST
  7029. ENUMX
  7030. BFD_RELOC_TILEGX_HW1_LAST
  7031. ENUMX
  7032. BFD_RELOC_TILEGX_HW2_LAST
  7033. ENUMX
  7034. BFD_RELOC_TILEGX_COPY
  7035. ENUMX
  7036. BFD_RELOC_TILEGX_GLOB_DAT
  7037. ENUMX
  7038. BFD_RELOC_TILEGX_JMP_SLOT
  7039. ENUMX
  7040. BFD_RELOC_TILEGX_RELATIVE
  7041. ENUMX
  7042. BFD_RELOC_TILEGX_BROFF_X1
  7043. ENUMX
  7044. BFD_RELOC_TILEGX_JUMPOFF_X1
  7045. ENUMX
  7046. BFD_RELOC_TILEGX_JUMPOFF_X1_PLT
  7047. ENUMX
  7048. BFD_RELOC_TILEGX_IMM8_X0
  7049. ENUMX
  7050. BFD_RELOC_TILEGX_IMM8_Y0
  7051. ENUMX
  7052. BFD_RELOC_TILEGX_IMM8_X1
  7053. ENUMX
  7054. BFD_RELOC_TILEGX_IMM8_Y1
  7055. ENUMX
  7056. BFD_RELOC_TILEGX_DEST_IMM8_X1
  7057. ENUMX
  7058. BFD_RELOC_TILEGX_MT_IMM14_X1
  7059. ENUMX
  7060. BFD_RELOC_TILEGX_MF_IMM14_X1
  7061. ENUMX
  7062. BFD_RELOC_TILEGX_MMSTART_X0
  7063. ENUMX
  7064. BFD_RELOC_TILEGX_MMEND_X0
  7065. ENUMX
  7066. BFD_RELOC_TILEGX_SHAMT_X0
  7067. ENUMX
  7068. BFD_RELOC_TILEGX_SHAMT_X1
  7069. ENUMX
  7070. BFD_RELOC_TILEGX_SHAMT_Y0
  7071. ENUMX
  7072. BFD_RELOC_TILEGX_SHAMT_Y1
  7073. ENUMX
  7074. BFD_RELOC_TILEGX_IMM16_X0_HW0
  7075. ENUMX
  7076. BFD_RELOC_TILEGX_IMM16_X1_HW0
  7077. ENUMX
  7078. BFD_RELOC_TILEGX_IMM16_X0_HW1
  7079. ENUMX
  7080. BFD_RELOC_TILEGX_IMM16_X1_HW1
  7081. ENUMX
  7082. BFD_RELOC_TILEGX_IMM16_X0_HW2
  7083. ENUMX
  7084. BFD_RELOC_TILEGX_IMM16_X1_HW2
  7085. ENUMX
  7086. BFD_RELOC_TILEGX_IMM16_X0_HW3
  7087. ENUMX
  7088. BFD_RELOC_TILEGX_IMM16_X1_HW3
  7089. ENUMX
  7090. BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST
  7091. ENUMX
  7092. BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST
  7093. ENUMX
  7094. BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST
  7095. ENUMX
  7096. BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST
  7097. ENUMX
  7098. BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST
  7099. ENUMX
  7100. BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST
  7101. ENUMX
  7102. BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL
  7103. ENUMX
  7104. BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL
  7105. ENUMX
  7106. BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL
  7107. ENUMX
  7108. BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL
  7109. ENUMX
  7110. BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL
  7111. ENUMX
  7112. BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL
  7113. ENUMX
  7114. BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL
  7115. ENUMX
  7116. BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL
  7117. ENUMX
  7118. BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL
  7119. ENUMX
  7120. BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL
  7121. ENUMX
  7122. BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL
  7123. ENUMX
  7124. BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL
  7125. ENUMX
  7126. BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL
  7127. ENUMX
  7128. BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL
  7129. ENUMX
  7130. BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT
  7131. ENUMX
  7132. BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT
  7133. ENUMX
  7134. BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL
  7135. ENUMX
  7136. BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL
  7137. ENUMX
  7138. BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL
  7139. ENUMX
  7140. BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL
  7141. ENUMX
  7142. BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL
  7143. ENUMX
  7144. BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL
  7145. ENUMX
  7146. BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT
  7147. ENUMX
  7148. BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT
  7149. ENUMX
  7150. BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT
  7151. ENUMX
  7152. BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT
  7153. ENUMX
  7154. BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL
  7155. ENUMX
  7156. BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL
  7157. ENUMX
  7158. BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD
  7159. ENUMX
  7160. BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD
  7161. ENUMX
  7162. BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE
  7163. ENUMX
  7164. BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE
  7165. ENUMX
  7166. BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE
  7167. ENUMX
  7168. BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE
  7169. ENUMX
  7170. BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE
  7171. ENUMX
  7172. BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE
  7173. ENUMX
  7174. BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD
  7175. ENUMX
  7176. BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD
  7177. ENUMX
  7178. BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD
  7179. ENUMX
  7180. BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD
  7181. ENUMX
  7182. BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE
  7183. ENUMX
  7184. BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE
  7185. ENUMX
  7186. BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL
  7187. ENUMX
  7188. BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL
  7189. ENUMX
  7190. BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL
  7191. ENUMX
  7192. BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL
  7193. ENUMX
  7194. BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL
  7195. ENUMX
  7196. BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL
  7197. ENUMX
  7198. BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE
  7199. ENUMX
  7200. BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE
  7201. ENUMX
  7202. BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE
  7203. ENUMX
  7204. BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE
  7205. ENUMX
  7206. BFD_RELOC_TILEGX_TLS_DTPMOD64
  7207. ENUMX
  7208. BFD_RELOC_TILEGX_TLS_DTPOFF64
  7209. ENUMX
  7210. BFD_RELOC_TILEGX_TLS_TPOFF64
  7211. ENUMX
  7212. BFD_RELOC_TILEGX_TLS_DTPMOD32
  7213. ENUMX
  7214. BFD_RELOC_TILEGX_TLS_DTPOFF32
  7215. ENUMX
  7216. BFD_RELOC_TILEGX_TLS_TPOFF32
  7217. ENUMX
  7218. BFD_RELOC_TILEGX_TLS_GD_CALL
  7219. ENUMX
  7220. BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD
  7221. ENUMX
  7222. BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD
  7223. ENUMX
  7224. BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD
  7225. ENUMX
  7226. BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD
  7227. ENUMX
  7228. BFD_RELOC_TILEGX_TLS_IE_LOAD
  7229. ENUMX
  7230. BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD
  7231. ENUMX
  7232. BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD
  7233. ENUMX
  7234. BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD
  7235. ENUMX
  7236. BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
  7237. ENUMDOC
  7238. Tilera TILE-Gx Relocations.
  7239. ENUM
  7240. BFD_RELOC_EPIPHANY_SIMM8
  7241. ENUMDOC
  7242. Adapteva EPIPHANY - 8 bit signed pc-relative displacement
  7243. ENUM
  7244. BFD_RELOC_EPIPHANY_SIMM24
  7245. ENUMDOC
  7246. Adapteva EPIPHANY - 24 bit signed pc-relative displacement
  7247. ENUM
  7248. BFD_RELOC_EPIPHANY_HIGH
  7249. ENUMDOC
  7250. Adapteva EPIPHANY - 16 most-significant bits of absolute address
  7251. ENUM
  7252. BFD_RELOC_EPIPHANY_LOW
  7253. ENUMDOC
  7254. Adapteva EPIPHANY - 16 least-significant bits of absolute address
  7255. ENUM
  7256. BFD_RELOC_EPIPHANY_SIMM11
  7257. ENUMDOC
  7258. Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
  7259. ENUM
  7260. BFD_RELOC_EPIPHANY_IMM11
  7261. ENUMDOC
  7262. Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)
  7263. ENUM
  7264. BFD_RELOC_EPIPHANY_IMM8
  7265. ENUMDOC
  7266. Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
  7267. ENUM
  7268. BFD_RELOC_VISIUM_HI16
  7269. ENUMX
  7270. BFD_RELOC_VISIUM_LO16
  7271. ENUMX
  7272. BFD_RELOC_VISIUM_IM16
  7273. ENUMX
  7274. BFD_RELOC_VISIUM_REL16
  7275. ENUMX
  7276. BFD_RELOC_VISIUM_HI16_PCREL
  7277. ENUMX
  7278. BFD_RELOC_VISIUM_LO16_PCREL
  7279. ENUMX
  7280. BFD_RELOC_VISIUM_IM16_PCREL
  7281. ENUMDOC
  7282. Visium Relocations.
  7283. ENDSENUM
  7284. BFD_RELOC_UNUSED
  7285. CODE_FRAGMENT
  7286. .
  7287. .typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
  7288. */
  7289. /*
  7290. FUNCTION
  7291. bfd_reloc_type_lookup
  7292. bfd_reloc_name_lookup
  7293. SYNOPSIS
  7294. reloc_howto_type *bfd_reloc_type_lookup
  7295. (bfd *abfd, bfd_reloc_code_real_type code);
  7296. reloc_howto_type *bfd_reloc_name_lookup
  7297. (bfd *abfd, const char *reloc_name);
  7298. DESCRIPTION
  7299. Return a pointer to a howto structure which, when
  7300. invoked, will perform the relocation @var{code} on data from the
  7301. architecture noted.
  7302. */
  7303. reloc_howto_type *
  7304. bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
  7305. {
  7306. return BFD_SEND (abfd, reloc_type_lookup, (abfd, code));
  7307. }
  7308. reloc_howto_type *
  7309. bfd_reloc_name_lookup (bfd *abfd, const char *reloc_name)
  7310. {
  7311. return BFD_SEND (abfd, reloc_name_lookup, (abfd, reloc_name));
  7312. }
  7313. static reloc_howto_type bfd_howto_32 =
  7314. HOWTO (0, 00, 2, 32, FALSE, 0, complain_overflow_dont, 0, "VRT32", FALSE, 0xffffffff, 0xffffffff, TRUE);
  7315. /*
  7316. INTERNAL_FUNCTION
  7317. bfd_default_reloc_type_lookup
  7318. SYNOPSIS
  7319. reloc_howto_type *bfd_default_reloc_type_lookup
  7320. (bfd *abfd, bfd_reloc_code_real_type code);
  7321. DESCRIPTION
  7322. Provides a default relocation lookup routine for any architecture.
  7323. */
  7324. reloc_howto_type *
  7325. bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
  7326. {
  7327. switch (code)
  7328. {
  7329. case BFD_RELOC_CTOR:
  7330. /* The type of reloc used in a ctor, which will be as wide as the
  7331. address - so either a 64, 32, or 16 bitter. */
  7332. switch (bfd_arch_bits_per_address (abfd))
  7333. {
  7334. case 64:
  7335. BFD_FAIL ();
  7336. case 32:
  7337. return &bfd_howto_32;
  7338. case 16:
  7339. BFD_FAIL ();
  7340. default:
  7341. BFD_FAIL ();
  7342. }
  7343. default:
  7344. BFD_FAIL ();
  7345. }
  7346. return NULL;
  7347. }
  7348. /*
  7349. FUNCTION
  7350. bfd_get_reloc_code_name
  7351. SYNOPSIS
  7352. const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
  7353. DESCRIPTION
  7354. Provides a printable name for the supplied relocation code.
  7355. Useful mainly for printing error messages.
  7356. */
  7357. const char *
  7358. bfd_get_reloc_code_name (bfd_reloc_code_real_type code)
  7359. {
  7360. if (code > BFD_RELOC_UNUSED)
  7361. return 0;
  7362. return bfd_reloc_code_real_names[code];
  7363. }
  7364. /*
  7365. INTERNAL_FUNCTION
  7366. bfd_generic_relax_section
  7367. SYNOPSIS
  7368. bfd_boolean bfd_generic_relax_section
  7369. (bfd *abfd,
  7370. asection *section,
  7371. struct bfd_link_info *,
  7372. bfd_boolean *);
  7373. DESCRIPTION
  7374. Provides default handling for relaxing for back ends which
  7375. don't do relaxing.
  7376. */
  7377. bfd_boolean
  7378. bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
  7379. asection *section ATTRIBUTE_UNUSED,
  7380. struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
  7381. bfd_boolean *again)
  7382. {
  7383. if (bfd_link_relocatable (link_info))
  7384. (*link_info->callbacks->einfo)
  7385. (_("%P%F: --relax and -r may not be used together\n"));
  7386. *again = FALSE;
  7387. return TRUE;
  7388. }
  7389. /*
  7390. INTERNAL_FUNCTION
  7391. bfd_generic_gc_sections
  7392. SYNOPSIS
  7393. bfd_boolean bfd_generic_gc_sections
  7394. (bfd *, struct bfd_link_info *);
  7395. DESCRIPTION
  7396. Provides default handling for relaxing for back ends which
  7397. don't do section gc -- i.e., does nothing.
  7398. */
  7399. bfd_boolean
  7400. bfd_generic_gc_sections (bfd *abfd ATTRIBUTE_UNUSED,
  7401. struct bfd_link_info *info ATTRIBUTE_UNUSED)
  7402. {
  7403. return TRUE;
  7404. }
  7405. /*
  7406. INTERNAL_FUNCTION
  7407. bfd_generic_lookup_section_flags
  7408. SYNOPSIS
  7409. bfd_boolean bfd_generic_lookup_section_flags
  7410. (struct bfd_link_info *, struct flag_info *, asection *);
  7411. DESCRIPTION
  7412. Provides default handling for section flags lookup
  7413. -- i.e., does nothing.
  7414. Returns FALSE if the section should be omitted, otherwise TRUE.
  7415. */
  7416. bfd_boolean
  7417. bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED,
  7418. struct flag_info *flaginfo,
  7419. asection *section ATTRIBUTE_UNUSED)
  7420. {
  7421. if (flaginfo != NULL)
  7422. {
  7423. (*_bfd_error_handler) (_("INPUT_SECTION_FLAGS are not supported.\n"));
  7424. return FALSE;
  7425. }
  7426. return TRUE;
  7427. }
  7428. /*
  7429. INTERNAL_FUNCTION
  7430. bfd_generic_merge_sections
  7431. SYNOPSIS
  7432. bfd_boolean bfd_generic_merge_sections
  7433. (bfd *, struct bfd_link_info *);
  7434. DESCRIPTION
  7435. Provides default handling for SEC_MERGE section merging for back ends
  7436. which don't have SEC_MERGE support -- i.e., does nothing.
  7437. */
  7438. bfd_boolean
  7439. bfd_generic_merge_sections (bfd *abfd ATTRIBUTE_UNUSED,
  7440. struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
  7441. {
  7442. return TRUE;
  7443. }
  7444. /*
  7445. INTERNAL_FUNCTION
  7446. bfd_generic_get_relocated_section_contents
  7447. SYNOPSIS
  7448. bfd_byte *bfd_generic_get_relocated_section_contents
  7449. (bfd *abfd,
  7450. struct bfd_link_info *link_info,
  7451. struct bfd_link_order *link_order,
  7452. bfd_byte *data,
  7453. bfd_boolean relocatable,
  7454. asymbol **symbols);
  7455. DESCRIPTION
  7456. Provides default handling of relocation effort for back ends
  7457. which can't be bothered to do it efficiently.
  7458. */
  7459. bfd_byte *
  7460. bfd_generic_get_relocated_section_contents (bfd *abfd,
  7461. struct bfd_link_info *link_info,
  7462. struct bfd_link_order *link_order,
  7463. bfd_byte *data,
  7464. bfd_boolean relocatable,
  7465. asymbol **symbols)
  7466. {
  7467. bfd *input_bfd = link_order->u.indirect.section->owner;
  7468. asection *input_section = link_order->u.indirect.section;
  7469. long reloc_size;
  7470. arelent **reloc_vector;
  7471. long reloc_count;
  7472. reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
  7473. if (reloc_size < 0)
  7474. return NULL;
  7475. /* Read in the section. */
  7476. if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
  7477. return NULL;
  7478. if (reloc_size == 0)
  7479. return data;
  7480. reloc_vector = (arelent **) bfd_malloc (reloc_size);
  7481. if (reloc_vector == NULL)
  7482. return NULL;
  7483. reloc_count = bfd_canonicalize_reloc (input_bfd,
  7484. input_section,
  7485. reloc_vector,
  7486. symbols);
  7487. if (reloc_count < 0)
  7488. goto error_return;
  7489. if (reloc_count > 0)
  7490. {
  7491. arelent **parent;
  7492. for (parent = reloc_vector; *parent != NULL; parent++)
  7493. {
  7494. char *error_message = NULL;
  7495. asymbol *symbol;
  7496. bfd_reloc_status_type r;
  7497. symbol = *(*parent)->sym_ptr_ptr;
  7498. if (symbol->section && discarded_section (symbol->section))
  7499. {
  7500. bfd_byte *p;
  7501. static reloc_howto_type none_howto
  7502. = HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL,
  7503. "unused", FALSE, 0, 0, FALSE);
  7504. p = data + (*parent)->address * bfd_octets_per_byte (input_bfd);
  7505. _bfd_clear_contents ((*parent)->howto, input_bfd, input_section,
  7506. p);
  7507. (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
  7508. (*parent)->addend = 0;
  7509. (*parent)->howto = &none_howto;
  7510. r = bfd_reloc_ok;
  7511. }
  7512. else
  7513. r = bfd_perform_relocation (input_bfd,
  7514. *parent,
  7515. data,
  7516. input_section,
  7517. relocatable ? abfd : NULL,
  7518. &error_message);
  7519. if (relocatable)
  7520. {
  7521. asection *os = input_section->output_section;
  7522. /* A partial link, so keep the relocs. */
  7523. os->orelocation[os->reloc_count] = *parent;
  7524. os->reloc_count++;
  7525. }
  7526. if (r != bfd_reloc_ok)
  7527. {
  7528. switch (r)
  7529. {
  7530. case bfd_reloc_undefined:
  7531. if (!((*link_info->callbacks->undefined_symbol)
  7532. (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
  7533. input_bfd, input_section, (*parent)->address,
  7534. TRUE)))
  7535. goto error_return;
  7536. break;
  7537. case bfd_reloc_dangerous:
  7538. BFD_ASSERT (error_message != NULL);
  7539. if (!((*link_info->callbacks->reloc_dangerous)
  7540. (link_info, error_message, input_bfd, input_section,
  7541. (*parent)->address)))
  7542. goto error_return;
  7543. break;
  7544. case bfd_reloc_overflow:
  7545. if (!((*link_info->callbacks->reloc_overflow)
  7546. (link_info, NULL,
  7547. bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
  7548. (*parent)->howto->name, (*parent)->addend,
  7549. input_bfd, input_section, (*parent)->address)))
  7550. goto error_return;
  7551. break;
  7552. case bfd_reloc_outofrange:
  7553. /* PR ld/13730:
  7554. This error can result when processing some partially
  7555. complete binaries. Do not abort, but issue an error
  7556. message instead. */
  7557. link_info->callbacks->einfo
  7558. (_("%X%P: %B(%A): relocation \"%R\" goes out of range\n"),
  7559. abfd, input_section, * parent);
  7560. goto error_return;
  7561. case bfd_reloc_notsupported:
  7562. /* PR ld/17512
  7563. This error can result when processing a corrupt binary.
  7564. Do not abort. Issue an error message instead. */
  7565. link_info->callbacks->einfo
  7566. (_("%X%P: %B(%A): relocation \"%R\" is not supported\n"),
  7567. abfd, input_section, * parent);
  7568. goto error_return;
  7569. default:
  7570. /* PR 17512; file: 90c2a92e.
  7571. Report unexpected results, without aborting. */
  7572. link_info->callbacks->einfo
  7573. (_("%X%P: %B(%A): relocation \"%R\" returns an unrecognized value %x\n"),
  7574. abfd, input_section, * parent, r);
  7575. break;
  7576. }
  7577. }
  7578. }
  7579. }
  7580. free (reloc_vector);
  7581. return data;
  7582. error_return:
  7583. free (reloc_vector);
  7584. return NULL;
  7585. }