Glibc 2.31 Izdanje knjižnice sustava

Nakon šest mjeseci razvoja objavljen izdanje knjižnice sustava GNU C biblioteka (glibc) 2.31, koji u potpunosti zadovoljava zahtjeve standarda ISO C11 i POSIX.1-2008. Novo izdanje uključuje popravke od 58 programera.

Od onih implementiranih u Glibc 2.31 poboljšanij možete primijetiti:

  • Dodana makronaredba _ISOC2X_SOURCE za omogućavanje mogućnosti definiranih u nacrtu budućeg ISO standarda C2X. Ove značajke su također omogućene kada se koristi makronaredba _GNU_SOURCE ili kada se gradi u gcc sa zastavom “-std=gnu2x”;
  • Za funkcije definirane u datoteci zaglavlja "math.h" koje zaokružuju svoje rezultate na manji tip, odgovarajuće makronaredbe generičkog tipa predlažu se u datoteci "tgmath.h", kako zahtijevaju specifikacije TS 18661-1:2014 i TS 18661-3: 2015;
  • Dodana funkcija pthread_clockjoin_np() koja čeka da se nit dovrši, uzimajući u obzir timeout (ako se timeout dogodi prije završetka, funkcija će vratiti pogrešku). Za razliku od pthread_timedjoin_np(), u pthread_clockjoin_np() moguće je definirati tip mjerača vremena za izračun timeouta - CLOCK_MONOTONIC (uzima u obzir vrijeme koje je sustav proveo u stanju mirovanja) ili CLOCK_REALTIME;
  • DNS rezolver sada podržava opciju trust-ad u /etc/resolv.conf i oznaku RES_TRUSTAD u _res.options, kada je postavljena, zastavica DNSSEC prenosi se u DNS zahtjevima AD (ovjereni podaci). U ovom načinu rada, AD oznaka koju je postavio poslužitelj postaje dostupna aplikacijama koje pozivaju funkcije poput res_search(). Prema zadanim postavkama, ako predložene opcije nisu postavljene, glibc ne specificira AD oznaku u zahtjevima i automatski je briše u odgovorima, pokazujući da nedostaju DNSSEC provjere;
  • Izgradnja radnih veza sistemskih poziva za Glibc više ne zahtijeva instaliranje datoteka zaglavlja Linux kernela. Iznimka je 64-bitna RISC-V arhitektura;
  • Eliminiran ranjivost CVE-2019-19126, što vam omogućuje zaobilaženje zaštite
    ASLR u programima sa zastavom setuid i određuju raspored adresa u učitanim bibliotekama kroz manipulaciju varijable okoline LD_PREFER_MAP_32BIT_EXEC.

Promjene koje narušavaju kompatibilnost:

  • totalorder(), totalordermag() i slične funkcije za druge tipove s pomičnim zarezom sada prihvaćaju pokazivače kao argumente za uklanjanje upozorenja o pretvaranju vrijednosti u stanju NaN, u skladu s preporukama TS 18661-1 predloženim za budući standard C2X.
    Postojeće izvršne datoteke koje izravno prosljeđuju argumente s pomičnim zarezom nastavit će se izvoditi bez izmjena;

  • Davno zastarjela funkcija stime više nije dostupna za binarne datoteke povezane s glibc-om, a njezina je definicija uklonjena iz time.h. Za postavljanje sistemskog vremena koristite funkciju clock_settime. U budućnosti planiramo ukloniti zastarjelu funkciju ftime, kao i datoteku zaglavlja sys/timeb.h (gettimeofday ili clock_gettime treba koristiti umjesto ftime);
  • Funkcija gettimeofday više ne prosljeđuje informacije o vremenskoj zoni cijelog sustava (ova je značajka bila relevantna u danima 4.2-BSD-a i zastarjela je mnogo godina). Argumentu 'tzp' sada treba proslijediti null pointer, a funkciju localtime() treba koristiti za dobivanje informacija o vremenskoj zoni na temelju trenutnog vremena. Pozivanje gettimeofday s argumentom 'tzp' koji nije nula vratit će prazna polja tz_minuteswest i tz_dsttime u strukturi vremenske zone. Sama funkcija gettimeofday je zastarjela pod POSIX-om (clock_gettime se preporučuje umjesto gettimeofday), ali nema planova za njeno uklanjanje iz glibc-a;
  • settimeofday više ne podržava istovremeno prosljeđivanje parametara za postavljanje vremena i pomaka za korekciju vremena. Prilikom pozivanja settimeofday, jedan od argumenata (vrijeme ili pomak) sada mora biti postavljen na null, inače poziv funkcije neće uspjeti s EINVAL pogreškom. Kao i gettimeofday, funkcija settimeofday je zastarjela u POSIX-u i preporučuje se da se zamijeni funkcijom clock_settime ili familijom funkcija adjtime;
  • Podrška za arhitekturu SPARC ISA v7 je prekinuta (podrška za v8 je za sada zadržana, ali samo za procesore koji podržavaju CAS upute, kao što su LEON procesori, ne i SuperSPARC procesori).
  • Ako uparivanje ne uspije u "lijen", u kojem povezivač ne traži simbole funkcije do prvog poziva te funkcije, funkcija dlopen sada prisiljava proces na prekid (prije vraćajući NULL u slučaju neuspjeha);
  • Za MIPS hard-float ABI sada se koristi izvršni stog, osim ako međuverzija izričito ne ograničava upotrebu Linux kernela 4.8+ putem parametra "-enable-kernel=4.8.0" (s kernelima do 4.8, rušenja su promatrano za neke MIPS konfiguracije);
  • Vezivanje oko sistemskih poziva povezanih s vremenskom manipulacijom premješteno je na korištenje sistemskog poziva time64, ako postoji (na 32-bitnim sustavima, glibc prvo pokušava s novim sistemskim pozivima koji manipuliraju 64-bitnom vrstom vremena, a ako ih nema, pada povratak na stare 32-bitne pozive).

Izvor: opennet.ru

Dodajte komentar