Horumarinta LLVM waxay soo jeedinayaan in si badbaado leh loo maareeyo C++

LLVM Logo

LLVM waa qaab-dhismeed loogu talagalay horumarinta kombuyuutarrada iyo sidoo kale caawinta dhisidda luqadaha barnaamijka cusub iyo horumarinta luqadaha jira.

ka horumarinta mashruuca LLVM waxay soo jeediyeen dhowr isbedel oo loogu talagalay xoojinta amniga oo ka mid ah shaqaalaha C ++ hadafka muhiimka ah iyo bixinta hab lagu baabi'iyo khaladaadka ay sababaan xad dhaafka baabuurka.

Sidan oo kale, soo jeedinta ay soo bandhigeen waxay diiradda saaraysaa shaqada laba qaybood gaar ahaan: bixinta qaab horumarineed oo u oggolaanaya in si badbaado leh loogu shaqeeyo kaydiyeyaasha iyo ka shaqaynta xoojinta amniga maktabadda shaqada caadiga ah ee libc++.

Waxaa la sheegay in la soo jeediyay qaabka barnaamijka badbaadada leh ee C++ «waa in la isticmaalo fasalada ay bixiso maktabadda caadiga ah marka aad la shaqaynayso kaydiyeyaasha halkii aad ka isticmaali lahayd tilmaamayaasha cayriin». Tusaale ahaan, waxaa la soo jeediyay in la isticmaalo std :: array, std :: vector, iyo std :: fasallada span, kuwaas oo lagu dari doono hubinta runtime ee xusuusta ka baxsan xadka loo qoondeeyay.

Hadafkayagu waa inaanu hagaajino amniga saldhigyada koodka C++ ee muhiimka ah. Tan waxaan qorsheyneynaa inaan ka shaqeyno laba fikradood.

Laybareeriga caadiga ah ee C ++ adag
Qaabka Barnaamijka C++ Safe Buffer Model iyo Qalabka Korsiga
libc adag

Qaabka barnaamijka kaydinta badbaadada ee C++ oo ay weheliso libc adag++ waxay bixisaa yaraynta wakhtiga run ee gelitaanka xusuusta ka baxsan xuduudka. Aaladaha korsashada ayaa si toos ah u guuri doona koodka qaabka barnaamijkan cusub.

Intaa waxaa dheer, waxay sidoo kale xusaysaa taas si loola dagaallamo dhaqamada barnaamijyada "khatarta ah". qabiil, haddii waxay soo jeedinaysaa in la soo saaro digniinaha iskudubaridyada dhammaan hawlgallada xisaabinta tilmaamayaasha, oo la mid ah digniinaha qabiilka ee habaysan marka la isticmaalayo calanka "cppcoreguidelines-pro-bounds-pointer-arithmetic", taageero taas oo ka soo bixi doonta LLVM 16. Si loo suurtogeliyo digniinaha noocaas ah, calan gooni ah ayaa lagu dari doonaa qabiilka, oo aan shaqaynayn si caadi ah. .

Waxaa la qorsheeyay in lagu fuliyo habka ilaalinta ikhtiyaarka ah ee libc++, Kaaso, marka la awoodo, ogaan doona xaaladaha qaarkood ee u horseedaya dabeecad aan la qeexin wakhtiga runtime. Tusaale ahaan, fasallada std :: taako iyo std :: vector, gelitaanka ka baxsan xuduudka ayaa la kormeeri doonaa, markaasoo barnaamijku fashilmi doono.

Hubinta Runtime-ga dheeraadka ah waxa loo qaybin doonaa dhawr qaybood oo si gaar ah loo xakamayn karo. Ujeedadu waa in iibiye libc++ ah oo ku yaala goobtooda uu go'aansan karo jeegaga lagu suurtagelinayo maktabadda dhoofinta (haddii ay jirto), taas oo ku xidhan heerka amniga la doonayo.

Horumariyayaashu waxay aaminsan yihiin in ku darista isbeddelada noocan oo kale ah ay ilaalin doonto libc++ u hoggaansanaanta heerarka C++, maadaama doorashada sida loo maareeyo kiisaska habdhaqanka aan la qeexin ay iska leedahay horumarinta maktabadda, kuwaas oo, iyo waxyaabo kale, ula dhaqmi kara dabeecadda aan la qeexin sida quful u baahan barnaamijka bixid.

ka jeegaga runtime ee libc++ waxa la qorsheeyay in loo qaybiyo qaybo taas oo si gaar ah loogu dari karo. Qaar ka mid ah jeegaga la soo jeediyay ee aan keenin hawlgallo kakan ama isbeddelada ABI ayaa mar horeba lagu hirgeliyay qaabka badbaadada leh ee libc++ (qaab nabdoon).

Si loo soo celiyo, yoolka ugu dambeeya waa in maktabadda la raray ay awood u siiso jeegaga wax soo saarka; kani maaha "debug only" sifada, in kastoo ay aakhirka bedeli doonto "qaabka khaladka" jabay ee dheer.

Sidoo kale, waxaa la qorsheeyay in la diyaariyo qalab sixid code ah taas oo u ogolaan doonta doorsoomayaasha in lagu bedelo tilmaame cayriin oo weelasha ku jira iyo in lagu dabaqo maamulayaal kale marka ay jiraan xaalado aanu weelku si toos ah u bedeli karin tilmaame (tusaale, "if(array_pointer)" dhismihiisa waxaa loo rogi karaa"if(span.data) Dejinta laguma dabaqi karo oo keliya doorsoomayaasha maxalliga ah, laakiin sidoo kale in lagu qoro cabbirrada tilmaamayaasha.

Waxaa kaloo lagu xusay in waxay ka fiirsanayaan "Checker Static analyzer" jid xasaasi ah oo ka digaya haddii std :: waqti waxaa laga dhisay weel ka yar cabbirka lagu sheegay dhisaha taako. Hubiyaha la sheegay waa mid iskiis u kooban oo faa'iido u leh kaligiis, haddii wax waliba si fiican u socdaan waxaa awood u yeelan doona si toos ah dhammaan isticmaalayaasha

Finalmente hadaad xiisaynayso inaad waxbadan ka ogaato, waxaad ka eegi kartaa faahfaahinta xiriirka soo socda.


Ka tag faalladaada

cinwaanka email aan la daabacin doonaa. Beeraha loo baahan yahay waxaa lagu calaamadeeyay la *

*

*

  1. Ka mas'uul ah xogta: AB Internet Networks 2008 SL
  2. Ujeedada xogta: Xakamaynta SPAM, maaraynta faallooyinka.
  3. Sharci: Oggolaanshahaaga
  4. Isgaarsiinta xogta: Xogta looma gudbin doono dhinacyada saddexaad marka laga reebo waajibaadka sharciga ah.
  5. Kaydinta xogta: Macluumaadka ay martigelisay Shabakadaha Occentus (EU)
  6. Xuquuqda: Waqti kasta oo aad xadidi karto, soo ceshan karto oo tirtiri karto macluumaadkaaga.