Madivelopa ochokera ku Google apereka malingaliro opanga ma libc awo a LLVM

Mmodzi mwa opanga kuchokera ku Google adakwezedwa pamndandanda wamakalata wa LLVM wokhudza kukhazikitsidwa kwa laibulale yamitundu yambiri ya C (Libc) monga gawo la projekiti ya LLVM. Pazifukwa zingapo, Google sikhutira ndi libc yamakono (glibc, musl) ndipo kampaniyo ili m'njira yokonzekera kukhazikitsa kwatsopano, komwe kukuyenera kupangidwa ngati gawo la LLVM.

Zosintha za LLVM zakhala zikugwiritsidwa ntchito posachedwa ngati maziko opangira zida za Google. Lingaliro lalikulu ndilakuti ngati Google yayamba kale kupanga libc yake, bwanji osapanga dongosolo lake ngati gawo la LLVM, lomwe limapereka kale laibulale yake ya C ++ (Libc ++), koma ilibe laibulale yofananira ya C. (libc).

Chitukuko chakonzedwa kuti chichitike mu magawo, pang'onopang'ono kuwonjezera magwiridwe antchito. Zosankha zoyamba zakonzedwa kuti zipangidwe ngati zosanjikiza pakati pa pulogalamuyo ndi dongosolo Libc, pomwe zida zomwe sizinachitike zidzabwerekedwa. Mukafika pamlingo wina wogwira ntchito, Libc yatsopano itha kugwiritsidwa ntchito ngati choloweza m'malo mwa dongosolo Libc. Tikukonzekera kuyamba ndi chithandizo cha zomangamanga za x86-64, Linux, ndi static linking (kutsegula kwamphamvu, kugwirizanitsa, ndi zomangamanga zina zidzakhazikitsidwa kachiwiri).

Ntchitoyi idakali pachitukuko choyambirira, koma zolinga zoyambirira zafotokozedwa kale:

  • Modularity ndi chitukuko molingana ndi filosofi yopereka laibulale ya granular osati seti ya monolithic;
  • Thandizo lolumikizira ma static modes chitumbuwa (Zomwe zimadziyimira pawokha) komanso zopanda PIE. Kupereka CRT (C Runtime) ndi PIE Loader kwa statically yolumikizidwa executable;
  • Kuthandizira ntchito zambiri zama library a C, zokhala ndi zowonjezera za POSIX ndi zowonjezera zina zamakina zomwe zimafunidwa ndi mapulogalamu omwe alipo;
  • Samalani ndi zowonjezera zapadera za ogulitsa ndikuwonjezera pokhapokha pakufunika. Ponena za chithandizo chowonjezera chipani chachitatu, akufunsidwa kugwiritsa ntchito njira ya mapulojekiti a Clang ndi libc ++;
  • Kugwiritsa ntchito njira zabwino zopangira zida za LLVM, monga kugwiritsa ntchito sanitizer ndi kuyesa kwa fuzz kuyambira pachiyambi.

Mmodzi mwa opanga LLVM omwe akugwira ntchito adanenansoZikuwonekeratu kuti ndizomveka kutumiza libc monga gawo la zida za LLVM, koma kawirikawiri, pakafunika kufunikira kotere, amagwiritsa ntchito laibulale ya musl, yomwe imalembedwa bwino, imathandizira zomangamanga zosiyanasiyana, ndipo imapereka ntchito zofunikira, kuphatikizapo kuthandizira kwamphamvu. kulumikiza. Zingakhale zomveka kuyika musl mu LLVM ndikuyipanga ngati foloko yolumikizidwa ndi polojekiti yayikulu.

Maganizo anunso anasonyeza Wolemba pulojekiti ya Musl, yemwe anayesa kutsutsa chifukwa chake lingaliro la Google ndi kuphatikizidwa kwa Libc pakugawa kwa LLVM ndi malingaliro oyipa kwambiri:

  • Kupanga ndi kusunga Libc yolondola, yogwirizana, komanso yapamwamba ndi ntchito yovuta kwambiri. Vuto siliri mu kuchuluka kwa ma code, koma pakuwonetsetsa machitidwe olondola ndi zovuta pakukhazikitsa zolumikizira, poganizira kuchuluka kwa mapulogalamu omwe adalembedwa mu C/C ++, komanso kugwiritsa ntchito zilankhulo zina, nthawi yomwe imagwiritsidwa ntchito. ndi Libc. Njira yopita patsogolo popanda kuganizira za nuances idzangowonjezera kuti mapulogalamu ambiri omwe alipo sangathe kugwira ntchito ndi Libc, koma polojekiti yotereyi sidzakhala yosangalatsa kwa ogula.
  • Kukula kwamakampani kumatha kuwononga Libc, koma kukankhira kuti igwiritsidwe ntchito ponseponse, zomwe zimapangitsa kuti pakhale kufunikira kowonjezera ma hacks kuti muwonetsetse kuti zikugwirizana ndi mapulogalamu. Chitukuko mothandizidwa ndi pulojekiti yotseguka yamakampani idzakokera bulangeti ku zosowa ndi mayankho a kampani, kuwononga zofuna za anthu ammudzi. Mwachitsanzo, ngati muwona vuto lomwe limadza chifukwa cha cholakwika mu pulogalamu ina, pakuwongolera koyendetsedwa ndikosavuta kuwonetsetsa kuti Libc ikugwirizana ndi cholakwikacho kuposa kukonza cholakwikacho. Apple imagwiritsa ntchito foloko ya BSD libc pazifukwa izi, ndipo Google imagwiritsa ntchito foloko ya musl ku Fuchsia. Zomwe zinachitikira wopanga ma musl ndikuti adalumikizidwa makamaka ndi maloya kuti afotokozere za ziphaso, koma sanalankhulepo kuti afotokoze zambiri zaukadaulo asanapange zosintha zopanda pake komanso zosokoneza kunthambi zake.
  • Kusakhalapo kwa chikhalidwe chimodzi pakukula kwa libc komanso kuyang'ana kwambiri pamiyezo yoyendetsedwa ndi mgwirizano m'malo mowongolera munthu payekha, zomwe zimalimbikitsa opanga mapulogalamu kuti agwiritse ntchito miyezo m'malo momangika kuzinthu zinazake. Ichi ndichifukwa chake wolemba musl amatsutsana ndi kuphatikizidwa kwa laibulale yake ku LLVM, komanso kutsutsana ndi chitukuko cha libc mkati mwa LLVM, popeza pamenepa chikhalidwe chodziyimira pawokha cha libc chatayika ndipo kukhazikitsidwa kwina kumakhala njira yothetsera vutoli. LLVM, ndi ena onse amakhala yankho lachiwiri.

Source: opennet.ru

Kuwonjezera ndemanga