I kii nga Kaihanga mai i a Google ki te hanga i a raatau ake libc mo LLVM

Ko tetahi o nga kaihanga mai i a Google whakaarahia i runga i te rarangi mēra LLVM mo te whakawhanaketanga o te whare pukapuka C paerewa-maha (Libc) hei waahanga o te kaupapa LLVM. Mo te maha o nga take, kaore a Google i makona ki te libc o naianei (glibc, musl) me te kamupene kei te huarahi ki te whakawhanake i tetahi whakatinanatanga hou, e whakaarohia ana kia whakawhanakehia hei waahanga o te LLVM.

Ko nga whanaketanga LLVM kua whakamahia hei turanga mo te hanga taputapu huihuinga a Google. Ko te whakaaro nui mena kua timata kee a Google ki te whakawhanake i tana libc, na te aha e kore ai e whakawhanake tonu i tana punaha hei waahanga o te LLVM, kua tukuna e ia tana ake whare pukapuka paerewa mo C++ (Libc++), engari kaore he whare pukapuka paerewa rite mo C. (libc).

Ko te whakawhanaketanga kua whakamaheretia kia mahia i roto i nga waahanga, ka piki haere te mahi. Ko nga whiringa tuatahi ka whakaarohia kia hangaia hei paparanga i waenga i te tono me te punaha Libc, ka namahia mai nga ahuatanga kaore ano kia whakatinanahia. Whai muri i te ekenga ki tetahi taumata mahi, ka taea te whakamahi i te Libc hou hei whakakapi katoa mo te punaha Libc. Ka whakamahere matou ki te timata me te tautoko mo te hoahoanga x86-64, Linux, me te hono pateko (ka utaina hihiri, hono, me etahi atu hoahoanga ka whakatinana tuarua).

Ko te kaupapa kei te timatanga o te whakawhanaketanga, engari kua tautuhia nga whaainga matua:

  • Ko te whakarereketanga me te whakawhanaketanga i runga i te whakaaro o te tuku i te whare pukapuka maramara, kaua ki te huinga monolithic;
  • Tautoko mo te hono pateko i roto i nga aratau Porohita (Kaiwhakahaere motuhake-tuunga) me te kore PIE. Te whakarato i te CRT (Waimahi C) me te kaitautai PIE mo nga kaikawe hono hono;
  • Tautoko mo te nuinga o nga mahinga whare pukapuka C paerewa, me nga taapiri POSIX me etahi taapiri-a-raupapa e hiahiatia ana e nga tono o naianei;
  • Kia tupato ki nga toronga motuhake-kaihoko ka taapiri noa ina tika. Mo te tautoko mo nga toronga tuatoru, e whakaarohia ana kia whakamahia te huarahi o nga kaupapa Clang me libc++;
  • Ma te whakamahi i nga mahi pai mo te whakawhanaketanga ma te whakamahi i te kete taputapu LLVM, penei i te whakamahi i te horoi horoi me te whakamatautau fuzz mai i te timatanga.

Ko tetahi o nga kaihanga LLVM kaha tohu tonuE marama ana he mea tika ki te tuku libc hei waahanga o te kete taputapu LLVM, engari i te nuinga o te wa, ka puta he hiahia pera, ka whakamahia e ratou te whare pukapuka musl, he pai te tuhi, e tautoko ana i nga momo hoahoanga, me te whakarato i nga mahi e tika ana, tae atu ki te tautoko mo te hihiri. hono. Ka tika pea ki te whakauru i te musl ki roto i te LLVM ka whakawhanake hei marau i tukutahia ki te kaupapa matua.

To whakaaro hoki whakapuakina Ko te kaituhi o te kaupapa Musl, nana i ngana ki te tautohetohe he aha te whakaaro kino rawa atu te tono a Google me te whakaurunga o Libc ki te tohatoha LLVM:

  • Ko te whakawhanake me te pupuri i te Libc tika, hototahi me te kounga teitei he mahi tino uaua. Ko te raruraru ehara i te nui o te waehere, engari ko te whakarite i te whanonga tika me nga uauatanga ki te whakatinana i nga hononga, me te whakaaro ki te paparanga nui o nga tono kua tuhia ki C/C++, me nga tono ki etahi atu reo, ko te waa whakahaere e whakamahia ana. na Libc. Ko te huarahi ki runga i te upoko me te kore e whai whakaaro ki nga ahuatanga ka arahi noa ki te maha o nga kaupapa o naianei kaore e kaha ki te mahi tahi me Libc, engari ko taua kaupapa kaore e pai ki nga kaihoko.
  • Ka taea e te whakawhanaketanga rangatōpū te whakakino i te Libc, engari ka panaia kia whakamahia whanuitia, na te hiahia ki te taapiri hacks kia pai ai te hototahi ki nga tono. Ko te whakawhanaketanga i raro i te maru o te kaupapa rangatōpū tuwhera puna ka toia te paraikete ki nga hiahia me nga otinga o te kamupene, ki te kino o nga hiahia o te hapori. Hei tauira, ki te tautuhi koe i tetahi raru i puta mai i tetahi pepeha i tetahi atu papatono, i roto i te whanaketanga whakahaere he ngawari ake te whakarite kia hototahi a Libc ki tenei pepeha i te whakatika i te pepeha ake. Ka whakamahia e Apple te marau BSD libc mo enei kaupapa, ka whakamahia e Google te marau musl i Fuchsia. Ko te wheako o te kaiwhakawhanake musl ko te nuinga o nga roia i whakapa atu ki a ia ki te whakamarama i nga take raihana, engari kaore i whakapa atu ki te whakamaarama i nga korero hangarau i mua i te whakarereketanga koretake me te whakararu i ona peka.
  • Ko te kore o te tipu kotahi i roto i te whakawhanaketanga libc me te arotahi ki nga paerewa e akiakihia ana e te whakaaetanga, kaua ki te mana kotahi, e akiaki ana i nga kaihanga tono ki te whakamahi i nga paerewa, kaua ki te herea ki nga whakatinanatanga motuhake. Ko te take i whakahe ai te kaituhi o te musl ki te whakaurunga o tana whare pukapuka ki LLVM, tae atu ki te whanaketanga o te libc i roto i te LLVM, na te mea i roto i tenei keehi ka ngaro te ahua motuhake o te libc ka waiho tetahi whakatinanatanga hei otinga akomanga tuatahi mo LLVM, me era atu katoa ka noho hei otinga akomanga tuarua.

Source: opennet.ru

Tāpiri i te kōrero