Pêşdebirên Google pêşniyar kirin ku ji bo LLVM libc-a xwe pêşve bibin

Yek ji pêşdebirên Google rakir li ser navnîşa posta LLVM-ê di derbarê pêşkeftina pirtûkxaneyek standard C ya pir-platform de (Libc) wekî beşek ji projeya LLVM. Ji ber çend sedeman, Google ji libc-ya heyî (glibc, musl) ne razî ye û pargîdanî di rê de ye ku pêkanînek nû pêşve bibe, ku tê pêşniyar kirin ku wekî beşek ji LLVM were pêşve xistin.

Pêşveçûnên LLVM di demên dawî de wekî bingehek ji bo avakirina amûrên meclîsa Google-ê hatine bikar anîn. Fikra sereke ev e ku heke Google jixwe dest bi pêşvebirina libc-ya xwe kiriye, wê hingê çima tavilê pergala xwe wekî beşek ji LLVM pêş nade, ku jixwe pirtûkxaneya xweya standard ji bo C++ (Libc++) pêşkêşî dike, lê ji bo C-yê pirtûkxaneyek standardek wekhev nîne. (libc).

Pêşveçûn tête plan kirin ku di qonaxan de were kirin, hêdî hêdî fonksiyonê zêde bike. Vebijarkên yekem têne pêşniyar kirin ku wekî qatek di navbera serîlêdan û pergala Libc de bêne sêwirandin, ku dê taybetmendiyên ku hîna nehatine bicîh kirin jê werin deyn kirin. Piştî ku gihîştina astek diyarkirî ya fonksiyonê, Libc-a nû dikare wekî cîhgirek bêkêmasî ya pergala Libc were bikar anîn. Em plan dikin ku bi piştgirîya mîmariya x86-64, Linux, û girêdana statîk dest pê bikin (barkirina dînamîk, girêdan, û mîmarên din dê di duyemîn de bêne bicîh kirin).

Proje hîn di qonaxa destpêkê ya pêşveçûnê de ye, lê armancên bingehîn berê hatine diyarkirin:

  • Modularbûn û pêşkeftina li gorî felsefeya radestkirina pirtûkxaneyek granular li şûna komek yekparêz;
  • Piştgiriya ji bo girêdana statîk di modan de PASTE (Pêşkêşkerên serbixwe yên pozîsyonê) û bêyî PIE. Pêşkêşkirina CRT (dema xebitandinê C) û barkerê PIE ji bo pêkanînên bi statîkî ve girêdayî;
  • Piştgiriya piraniya fonksiyonên pirtûkxaneya standard C, bi lêzêdekirina POSIX û hin pêvekên pergalê-taybet ên ku ji hêla serîlêdanên heyî ve têne xwestin;
  • Hişyar bin ji pêvekên firoşker-taybet re û tenê gava ku hewce be wan lê zêde bikin. Di derbarê piştgirîkirina dirêjkirina sêyemîn de, tê pêşniyar kirin ku nêzîkbûna projeyên Clang û libc++ bikar bînin;
  • Bikaranîna pratîkên çêtirîn ên di pêşkeftinê de bi karanîna amûra LLVM-ê, wek mînak karanîna paqijker û ceribandina fuzz ji destpêkê ve.

Yek ji pêşdebirên çalak LLVM destnîşan kirEşkere ye ku şandina libc wekî beşek amûrek LLVM maqûl e, lê bi gelemperî, gava ku hewcedariyek wusa çêbibe, ew pirtûkxaneya musl bikar tînin, ku baş hatî nivîsandin, mîmariyên cihêreng piştgirî dike, û fonksiyonên pêwîst peyda dike, tevî piştgirîya dînamîk. girêdan. Dibe ku rastdar be ku musl di LLVM-ê de bicîh bikin û wê wekî forkek ku bi projeya sereke re hevdemkirî ye pêşve bibin.

Raya we jî îfade kirin Nivîskarê projeya Musl, ku hewl da ku nîqaş bike ka çima pêşniyara Google û tevlêbûna Libc di belavkirina LLVM de ramanên pir xirab in:

  • Pêşveçûn û domandina Libcek rast, lihevhatî û bi kalîte karekî pir dijwar e. Pirsgirêk ne di mîqdara kodê de ye, lê di bicîhkirina reftar û zehmetiyên rast de di pêkanîna navbeynkaran de ye, li ber çavê qatek mezin a serîlêdanên ku heya niha bi C/C++ hatî nivîsandin, û her weha serîlêdanên bi zimanên din, dema xebitandinê ya ku tê bikar anîn. ji hêla Libc. Nêzîkatiyek bi serê xwe bêyî girtina nuwazeyan dê tenê bibe sedema vê yekê ku gelek bernameyên heyî dê nikaribin bi Libc re bixebitin, lê wê hingê projeyek weha dê ji xerîdaran re ne eleqedar be.
  • Pêşveçûna pargîdanî dikare Libc hilweşîne, lê wê ji bo karanîna berbelav bikişîne, di encamê de pêdivî ye ku hacks lê zêde bike da ku lihevhatina di serîlêdanan de misoger bike. Pêşkeftina di bin banê projeyek çavkaniya vekirî ya pargîdanî de dê berbi hewcehî û çareseriyên pargîdaniyê ve bikişîne, ku zirarê bide berjewendîyên civakê. Mînakî, heke hûn pirsgirêkek ku ji ber xeletiyek di bernameyek din de çêdibe nas bikin, di pêşkeftina kontrolkirî de hêsantir e ku meriv pê ewle bibe ku Libc bi vê xeletiyê re hevaheng e ji sererastkirina xeletiyê bixwe. Apple ji bo van armancan libc fork BSD bikar tîne, û Google di Fuchsia de musl fork bikar tîne. Tecrûbeya pêşdebirê musl ev e ku bi taybetî ji hêla parêzeran ve ji bo zelalkirina mijarên lîsansê bi wî re têkilî danîbûn, lê ji bo zelalkirina hûrguliyên teknîkî berî ku guhertinên bêkêr û têkder di şaxên xwe de çêbike qet têkilî bi wî re nehat.
  • Di pêşkeftina libc de nebûna yekçandî û balkişandina li ser standardên lihevhatî-rêveberî ne ji kontrola yekane, ku pêşdebirên serîlêdanê motîve dike ku standardan bikar bînin ne ku bi pêkanînên taybetî ve werin girêdan. Ji ber vê yekê nivîskarê musl li dijî tevlêkirina pirtûkxaneya xwe di LLVM de ye, û hem jî li dijî pêşkeftina libc di nav LLVM de ye, ji ber ku di vê rewşê de cewhera serbixwe ya libc winda dibe û pêkanînek diyarkirî dibe çareseriyek pola yekem ji bo LLVM, û hemî yên din dibin çareseriyek pola duyemîn.

Source: opennet.ru

Add a comment