Na fautuaina e le au atiaʻe mai Google le atinaʻeina o latou lava libc mo LLVM

O se tasi o atinaʻe mai Google siitia i luga o le lisi o meli LLVM e uiga i le atinaʻeina o le tele-platform standard C library (Libc) o se vaega o le LLVM poloketi. Mo le tele o mafuaʻaga, e le o faamalieina Google i le libc (glibc, musl) o loʻo i ai nei ma o loʻo agai atu le kamupani i le atinaʻeina o se faʻatinoga fou, lea e faʻamoemoe e atiaʻe o se vaega o le LLVM.

O atina'e LLVM talu ai nei na fa'aaogaina e fai ma fa'avae mo le fausiaina o meafaigaluega fa'apotopotoga a Google. O le manatu autu e faapea afai ua amata ona atiaʻe e Google lona libc, aisea la e le vave ai ona atiaʻe lana polokalama o se vaega o le LLVM, lea ua uma ona ofoina atu lana lava faletusi masani mo C ++ (Libc ++), ae leai se faletusi masani tutusa mo C. ( libc).

O le atina'e o lo'o fuafua e fa'atino i fa'asologa, fa'asolosolo fa'ateleina galuega. O filifiliga muamua o loʻo tuʻuina atu e faʻatulagaina e avea o se laulau i le va o le talosaga ma le polokalama Libc, lea e leʻi faʻatinoina o le a nono mai. A maeʻa ona oʻo i se tulaga faʻapitoa, e mafai ona faʻaaogaina le Libc fou e fai ma sui atoatoa mo le polokalama Libc. Matou te fuafua e amata i le lagolago mo le x86-64 tusiata, Linux, ma fesoʻotaʻiga faʻamau (o le uta malosi, fesoʻotaʻiga, ma isi fausaga faʻaopoopo o le a faʻatinoina lona lua).

O le poloketi o loʻo i ai pea i le amataga o le atinaʻe, ae o sini autu ua uma ona faʻamalamalamaina:

  • Modularity ma atinaʻe e tusa ai ma le filosofia o le tuʻuina atu o se faletusi faʻapitoa nai lo se seti monolithic;
  • Lagolago mo feso'ota'iga tu'usa'o i faiga pai (Tuto'atasi tuto'atasi executables) ma leai se PIE. Tuuina atu le CRT (C runtime) ma le PIE loader mo mea e mafai ona fa'aogaina;
  • Lagolago mo le tele o galuega masani a le faletusi C, faʻatasi ai ma faʻaopoopoga POSIX ma nisi faʻaopoopoga faʻapitoa e manaʻomia e talosaga o loʻo iai;
  • Fa'aeteete i fa'aopoopoga fa'apitoa fa'atau ma na'o fa'aopoopo pe a mana'omia. E tusa ai ma le lagolago mo faʻaopoopoga lona tolu, ua fautuaina e faʻaoga le auala o le Clang ma le libc ++ poloketi;
  • Fa'aaogā fa'ata'ita'iga sili ile atina'e e fa'aaoga ai le LLVM toolkit, pei ole fa'aogaina ole sanitizer ma fuzz su'ega mai le amataga.

O se tasi o le au atinaʻe LLVM faasino atuE manino lava e talafeagai le vaʻaia o le libc o se vaega o le LLVM toolkit, ae masani lava, pe a tulaʻi mai se manaʻoga faʻapea, latou te faʻaogaina le faletusi musl, lea e lelei ona tusia, lagolagoina fausaga eseese, ma tuʻuina atu galuega talafeagai, e aofia ai le lagolago mo le malosi. feso'ota'iga. Atonu e talafeagai le fa'aofiina o le musl i le LLVM ma fa'atupuina e pei o se tui fa'atasi ma le galuega autu.

O lou manatu foi fa'aalia O le tusitala o le poloketi Musl, o le na taumafai e finau pe aisea e matua leaga ai le talosaga a Google ma le faʻaofiina o le Libc i le tufatufaina o le LLVM:

  • O le atina'eina ma le tausia o se Libc sa'o, fetaui, ma le maualuga o se galuega faigata tele. O le faʻafitauli e leʻo i le aofaʻi o le numera, ae i le faʻamautinoaina o amioga saʻo ma faigata i le faʻatinoina o fesoʻotaʻiga, ma le amanaia o le tele o tusi talosaga na tusia i le C / C ++, faʻapea foʻi ma talosaga i isi gagana, o le taimi e faʻaaogaina ai. e Libc. O se faʻauluuluga e aunoa ma le amanaʻiaina o nuances o le a naʻo le mea moni o le tele o polokalame o loʻo i ai nei o le a le mafai ona galulue faʻatasi ma Libc, ae o sea galuega o le a le fiafia i tagata faʻatau.
  • O atinaʻe faʻapisinisi e mafai ona faʻaleagaina le Libc, ae tuleia i le faʻaaogaina lautele, e mafua ai le manaʻoga e faʻaopoopo hacks e faʻamautinoa ai le fetaui i talosaga. O le atina'e i lalo o le fa'auluuluga o se fa'alapotopotoga fa'apitoa e fa'asoa fa'atasi ai ma le a toso le palanikeke aga'i atu i mana'oga ma fofo a le kamupani, e fa'aleagaina ai le manuia o tagata lautele. Mo se faʻataʻitaʻiga, afai e te iloa se faʻafitauli e mafua mai i se pusa i se isi polokalame, i le faʻatonutonuina o le atinaʻe e sili atu ona faigofie le faʻamautinoa o le Libc e fetaui ma lenei pusa nai lo le faʻaleleia o le pusa lava ia. E fa'aaoga e Apple le tui BSD libc mo nei fa'amoemoe, ae fa'aaoga e Google le tui musl i Fuchsia. O le poto masani o le musl developer e tele lava ina faafesootaia o ia e loia mo le faamaninoina o mataupu tau laisene, ae e lei faafesootaia lava e faamanino faamatalaga faapitoa a o lei faia ni suiga le aoga ma faalavelave i ana lala.
  • O le leai o se monoculture i le atinaʻeina o le libc ma le taulaʻi atu i tulaga faʻavae faʻatasi nai lo le puleaina o tagata taʻitoʻatasi, lea e faʻamalosia ai tagata faʻapipiʻi talosaga e faʻaogaina tulaga faʻapitoa nai lo le noatia i faʻatinoga faʻapitoa. O le mafuaaga lena e tetee ai le tusitala o le musl i le aofia ai o lana faletusi i le LLVM, faʻapea foʻi ma le faʻaleleia o le libc i totonu o le LLVM, talu ai i lenei tulaga ua leiloa le natura tutoʻatasi o le libc ma o se faʻatinoga faʻapitoa e avea ma fofo muamua mo LLVM, ma isi uma e avea ma fofo lona lua.

puna: opennet.ru

Faaopoopo i ai se faamatalaga