Glibc 2.31 Sistem Kitabxanası Buraxılışı

Altı aylıq inkişafdan sonra nəşr olundu sistem kitabxanasının buraxılışı GNU C Kitabxanası (glibc) 2.31, ISO C11 və POSIX.1-2008 tələblərinə tam uyğundur. Yeni buraxılışa 58 tərtibatçı tərəfindən düzəlişlər daxildir.

Glibc 2.30-da həyata keçirilir təkmilləşdirmələr qeyd edə bilərsiniz:

  • Gələcək ISO standartı layihəsində müəyyən edilmiş imkanları aktivləşdirmək üçün _ISOC2X_SOURCE makro əlavə edildi C2X. Bu funksiyalar həmçinin _GNU_SOURCE makrosundan istifadə edərkən və ya gcc-də “-std=gnu2x” bayrağı ilə qurarkən aktivləşdirilir;
  • Nəticələrini daha kiçik bir növə yuvarlaqlaşdıran "math.h" başlıq faylında müəyyən edilmiş funksiyalar üçün TS 18661-1:2014 və TS spesifikasiyalarının tələb etdiyi kimi, "tgmath.h" faylında müvafiq ümumi tipli makrolar təklif olunur. 18661-3: 2015;
  • Əlavə edilmiş pthread_clockjoin_np() funksiyası, fasiləni nəzərə alaraq mövzunun tamamlanmasını gözləyən (əgər zaman aşımı başa çatmazdan əvvəl baş verərsə, funksiya xəta qaytaracaq). Fərqli pthread_timedjoin_np(), pthread_clockjoin_np()-də fasilənin hesablanması üçün taymerin növünü müəyyən etmək mümkündür - CLOCK_MONOTONIC (sistemin yuxu rejimində sərf etdiyi vaxtı nəzərə alır) və ya CLOCK_REALTIME;
  • DNS həlledicisi indi /etc/resolv.conf-da etibar reklamı seçimini və _res.options-da RES_TRUSTAD bayrağını dəstəkləyir, quraşdırıldıqda DNSSEC bayrağı DNS sorğularında ötürülür. AD (təsdiqlənmiş məlumatlar). Bu rejimdə server tərəfindən təyin edilmiş AD bayrağı res_search() kimi funksiyaları çağıran proqramlar üçün əlçatan olur. Defolt olaraq, təklif olunan seçimlər təyin olunmayıbsa, glibc sorğularda AD bayrağını göstərmir və DNSSEC yoxlamalarının əskik olduğunu göstərən cavablarda onu avtomatik olaraq təmizləyir;
  • Glibc üçün işləyən sistem çağırış bağlamalarının qurulması artıq Linux nüvəsinin başlıq fayllarının quraşdırılmasını tələb etmir. İstisna 64 bitlik RISC-V arxitekturasıdır;
  • aradan qaldırıldı zəiflik CVE-2019-19126, bu, mühafizədən yan keçməyə imkan verir
    Setuid bayrağı ilə proqramlarda ASLR və LD_PREFER_MAP_32BIT_EXEC mühit dəyişəni ilə manipulyasiya yolu ilə yüklənmiş kitabxanalarda ünvan düzənini təyin edin.

Uyğunluğu pozan dəyişikliklər:

  • totalorder(), totalordermag() və digər üzən nöqtə növləri üçün oxşar funksiyalar indi göstəriciləri dövlətdə dəyərlərin çevrilməsi ilə bağlı xəbərdarlıqları aradan qaldırmaq üçün arqumentlər kimi qəbul edir NaN, gələcək C18661X standartı üçün təklif olunan TS 1-2 tövsiyələrinə uyğun olaraq.
    Üzən nöqtəli arqumentləri birbaşa ötürən mövcud icra sənədləri dəyişdirilmədən işləməyə davam edəcək;

  • Uzun müddət köhnəlmiş stime funksiyası artıq glibc ilə əlaqəli ikili fayllar üçün mövcud deyil və onun tərifi time.h saytından silindi. Sistem vaxtını təyin etmək üçün clock_settime funksiyasından istifadə edin. Gələcəkdə biz köhnəlmiş ftime funksiyasını, həmçinin sys/timeb.h başlıq faylını (ftime əvəzinə gettimeofday və ya clock_gettime istifadə edilməlidir) silməyi planlaşdırırıq;
  • gettimeofday funksiyası artıq sistem miqyasında vaxt qurşağı haqqında məlumat ötürmür (bu xüsusiyyət 4.2-BSD günlərində aktual idi və uzun illərdir köhnəlmişdir). 'Tzp' arqumenti indi null göstərici ilə ötürülməlidir və cari vaxta əsaslanan saat qurşağı məlumatını əldə etmək üçün localtime() funksiyasından istifadə edilməlidir. Gettimeofday-a sıfırdan fərqli 'tzp' arqumenti ilə zəng etmək saat qurşağının strukturunda boş tz_minuteswest və tz_dsttime sahələrini qaytaracaq. gettimeofday funksiyasının özü POSIX altında köhnəlmişdir (gettimeofday əvəzinə saat_gettime tövsiyə olunur), lakin onu glibc-dən silmək planları yoxdur;
  • settimeofday artıq vaxtı və vaxtın düzəldilməsi ofsetini təyin etmək üçün parametrlərin eyni vaxtda ötürülməsini dəstəkləmir. settimeofday çağırarkən, arqumentlərdən biri (vaxt və ya ofset) indi null olaraq təyin edilməlidir, əks halda funksiya çağırışı EINVAL xətası ilə uğursuz olacaq. gettimeofday kimi, settimeofday funksiyası POSIX-də köhnəlib və clock_settime funksiyası və ya adjtime funksiyalar ailəsi ilə əvəz edilməsi tövsiyə olunur;
  • SPARC ISA v7 arxitekturasına dəstək dayandırılıb (v8 dəstəyi hələlik saxlanılır, ancaq SuperSPARC prosessorları deyil, LEON prosessorları kimi CAS təlimatlarını dəstəkləyən prosessorlar üçün).
  • Cütləşmə uğursuz olarsa "tənbəl", burada əlaqələndirici funksiyanın simvollarını həmin funksiyaya ilk çağırışa qədər axtarmır, dlopen funksiyası indi prosesi dayandırmağa məcbur edir (əvvəllər uğursuzluqda NULL dəyərini qaytarırdı);
  • Quraşdırma Linux nüvəsinin 4.8+ istifadəsini “-enable-kernel=4.8.0” parametri (4.8-ə qədər nüvələrlə, qəzalar) vasitəsilə açıq şəkildə məhdudlaşdırmadığı halda, MIPS sərt ABI üçün icra edilə bilən yığın indi istifadə olunur. bəzi MIPS konfiqurasiyaları üçün müşahidə olunur);
  • Zaman manipulyasiyası ilə bağlı sistem çağırışları ətrafındakı bağlamalar, əgər varsa, time64 sistem çağırışından istifadə etmək üçün köçürülüb (32-bit sistemlərdə, glibc əvvəlcə 64-bit vaxt növünü manipulyasiya edən yeni sistem çağırışlarını sınayır və heç biri yoxdursa, düşür. köhnə 32 bit zənglərə qayıdın).

Mənbə: opennet.ru

Добавить комментарий