Abaphuhlisi be-LLVM bacebisa ukuphatha ngokukhuselekileyo isithinteli kwi-C++

Ilogo yeLLVM

I-LLVM sisikhokelo sokuphuhlisa abaqulunqi kunye nokunceda ukwakha iilwimi ezintsha zeprogram kunye nokuphucula iilwimi ezikhoyo.

Los abaphuhlisi beprojekthi ye-LLVM bandulule inani lotshintsho olujolise ekomelezeni ukhuseleko yeproyects C ++ nenjongo ebalulekileyo kunye nokubonelela ngeendlela zokuphelisa iimpazamo ezibangelwa kukugqithisa kwe-buffer.

Ngaloo ndlela, isindululo abasikhuphe sigxile kumsebenzi kwiindawo ezimbini ngokukodwa: ukubonelela ngemodeli yophuhliso evumela ukusebenza ngokukhuselekileyo kunye ne-buffers kunye nokusebenza ukuqinisa ukhuseleko lwelayibrari yomsebenzi osemgangathweni we-libc ++.

Kukhankanyiwe ukuba imodeli ecetywayo yenkqubo ekhuselekileyo yeC++ «kukusebenzisa iiklasi ezibonelelwe lilayibrari esemgangathweni xa usebenza ngee-buffers endaweni yokukhohlisa izikhombisi eziluhlaza». Umzekelo, kucetywa ukuba kusetyenziswe std::array, std::vector, kunye ne std::span class, eziya kudityaniswa ngokujonga ixesha lokubaleka kwimemori engaphandle kwemida eyabelweyo.

Injongo yethu kukuphucula ukhuseleko lweziseko zekhowudi zeC ++ ezibalulekileyo. Kule nto siceba ukusebenza kwiingcamango ezimbini.

IThala leeNcwadi eliQinisiweyo le-C++
I-C ++ i-Safe Buffer Programming Model kunye neZixhobo zokuQala
I-libc++ eqinisiweyo yenzelwe ukwenza ujongano lwethala leencwadi olusemgangathweni lwe-C++ lukhuseleke ngakumbi ngokubanzi.

Imodeli yenkqubo ye-buffer ekhuselekileyo ye-C++ kunye ne-libc++ eqinile zibonelela ngonciphiso lwexesha lokubaleka lokufikelela kwimemori engaphandle kwemida. Izixhobo zokwamkelwa komntwana ziza ngokuzenzekelayo ukufuduka kwekhowudi kule modeli yeprogram entsha.

Ukongeza koku, ikwakhankanya nokuba ukulwa iinkqubo "eziyingozi" iinkqubo kwi clang, ukuba iceba ukukhupha izilumkiso zomqokeleli kuyo yonke imisebenzi ye-arithmetic yesalathisi, ngokufanayo nezilumkiso ze-clang-tidy linter xa usebenzisa iflegi ye "cppcoreguidelines-pro-bounds-pointer-arithmetic", inkxaso eya kuvela kwi-LLVM 16. Ukwenza ezo zilumkiso, iflegi eyahlukileyo iya kongezwa kwi-clang, ingasebenzi ngokungagqibekanga. .

Kucwangciswe ukuphumeza imowudi yokukhusela kwi-libc ++, eyakuthi, xa yenziwe, ibone iimeko ezithile ezikhokelela kukuziphatha okungachazwanga ngexesha lokusebenza. Umzekelo, kwiiklasi std::span kunye ne-std::vector, ukufikelela ngaphandle kwemida kuya kubekwa esweni, apho inkqubo iya kusilela.

Olu vavanyo longezelelweyo lwexesha lokusebenza luya kufakwa kwiindidi ezininzi ezinokulawulwa ngokwahlukeneyo. Injongo kukuba umthengisi wokuthumela i-libc ++ kwiqonga labo unokugqiba ukuba yeyiphi iitshekhi ukuze isebenze kwilayibrari yokuthumela (ukuba ikhona), kuxhomekeke kwinqanaba lokhuseleko olufunwayo.

Abaphuhlisi bakholelwa ukuba ukongeza olo tshintsho luya kugcina i-libc ++ ihambelana nemigangatho yeC ++, kuba ukhetho lwendlela yokusingatha iimeko zokuziphatha okungachazwanga kuxhomekeke kubaphuhlisi bethala leencwadi, abanokuthi, phakathi kwezinye izinto, baphathe ukuziphatha okungachazwanga njengesitshixo esifuna inkqubo Phuma.

Las Ukuhlolwa kwexesha lokubaleka kwi-libc++ kucwangciswe ukuba kwahlulwe ngokweendidi enokuqukwa ngabanye. Ezinye zeetshekhi ezicetyiswayo ezingaphumeleli kwimisebenzi entsonkothileyo okanye utshintsho lwe-ABI sele luphunyeziwe kwimowudi ekhuselekileyo ye-libc++ (imo ekhuselekileyo).

Ukuphinda-phinda, eyona njongo iphambili yeyokuba ithala leencwadi elithunyelweyo likwazi ukwenza ezi tshekhi kwimveliso; oku ayisiyonto ethi "debug kuphela", nangona ekugqibeleni iya kuthatha indawo eyaphukileyo "debug mode".

Kwakhona, kucwangciswe ukulungiselela isethi yezixhobo zokulungisa ikhowudi eya kuvumela izinto eziguquguqukayo ukuba zitshintshwe ngezikhombisi eziluhlaza kwizikhongozeli kunye nokusebenzisa ezinye izibambi kwiimeko apho isikhongozeli singenako ngokuthe ngqo ukuthatha indawo yesalathisi (umzekelo, ulwakhiwo "ukuba(array_pointer)" lungaguqulelwa ku-"if(span.data) )»).Izicwangciso zingasetyenziswa kuphela kwizinto eziguquguqukayo zendawo, kodwa kunye nokuchwetheza iiparitha ezinezikhombisi.

Kukwakhankanywa ukuba bacinga "i-clang static analyzer checker" indlela enobuntununtunu elumkisa ukuba std::ixesha yakhiwe kwisikhongozeli esincinci kunobukhulu obuchazwe kumakhi we-span. Umkhangeli oxeliweyo uzimele kwaye uluncedo ngokwawo, ukuba konke kuhamba kakuhle kuyakwenziwa ngokungagqibekanga kubo bonke abasebenzisi.

Gqibela ukuba unomdla wokwazi okungakumbi ngayo, ungazijonga iinkcukacha kwi ukulandela ikhonkco.


Shiya uluvo lwakho

Idilesi yakho ye email aziyi kupapashwa. ezidingekayo ziphawulwe *

*

*

  1. Inoxanduva lwedatha: I-AB Internet Networks 2008 SL
  2. Injongo yedatha: Ulawulo lwe-SPAM, ulawulo lwezimvo.
  3. Umthetho: Imvume yakho
  4. Unxibelelwano lwedatha: Idatha ayizukuhanjiswa kubantu besithathu ngaphandle koxanduva lomthetho.
  5. Ukugcinwa kweenkcukacha
  6. Amalungelo: Ngalo naliphi na ixesha unganciphisa, uphinde uphinde ucime ulwazi lwakho.