Glibc 2.31 Sistem Kitaplığı Sürümü

Altı aylık geliştirmeden sonra yayınlanan sistem kitaplığı sürümü GNU C Kütüphanesi (glibc) 2.31, ISO C11 ve POSIX.1-2008 gerekliliklerine tamamen uygundur. Yeni sürüm, 58 geliştiriciden düzeltmeler içeriyor.

Glibc 2.31'da uygulandı iyileştirmeler şunları not edebilirsiniz:

  • Gelecekteki taslak ISO standardında tanımlanan yetenekleri etkinleştirmek için _ISOC2X_SOURCE makrosu eklendi C2X. Bu özellikler aynı zamanda _GNU_SOURCE makrosu kullanılırken veya gcc'de “-std=gnu2x” bayrağıyla oluşturulurken de etkinleştirilir;
  • Sonuçlarını daha küçük bir türe yuvarlayan "math.h" başlık dosyasında tanımlanan işlevler için, TS 18661-1:2014 ve TS spesifikasyonlarının gerektirdiği şekilde ilgili genel tür makroları "tgmath.h" dosyasında önerilmektedir. 18661-3: 2015;
  • Zaman aşımını dikkate alarak iş parçacığının tamamlanmasını bekleyen pthread_clockjoin_np() işlevi eklendi (tamamlanmadan önce zaman aşımı meydana gelirse işlev bir hata döndürecektir). Farklı pthread_timedjoin_np()pthread_clockjoin_np()'de zaman aşımını hesaplamak için zamanlayıcı türünü tanımlamak mümkündür - CLOCK_MONOTONIC (sistemin uyku modunda harcadığı süreyi hesaba katar) veya CLOCK_REALTIME;
  • DNS çözümleyici artık /etc/resolv.conf dosyasındaki Trust-ad seçeneğini ve _res.options dosyasındaki RES_TRUSTAD bayrağını desteklemektedir; ayarlandığında, DNSSEC bayrağı DNS isteklerinde iletilir AD (doğrulanmış veriler). Bu modda, sunucu tarafından belirlenen AD bayrağı, res_search() gibi işlevleri çağıran uygulamalar için kullanılabilir hale gelir. Varsayılan olarak, önerilen seçenekler ayarlanmadıysa glibc, isteklerde AD bayrağını belirtmez ve yanıtlarda otomatik olarak temizleyerek DNSSEC kontrollerinin eksik olduğunu belirtir;
  • Glibc için çalışma sistemi çağrı bağlamaları oluşturmak artık Linux çekirdek başlık dosyalarının yüklenmesini gerektirmiyor. Bunun istisnası 64 bit RISC-V mimarisidir;
  • elendi Güvenlik açığı CVE-2019-19126korumayı atlamanıza olanak tanır
    ASLR'yi setuid bayrağına sahip programlarda kullanın ve LD_PREFER_MAP_32BIT_EXEC ortam değişkeninin manipülasyonu yoluyla yüklü kitaplıklardaki adres düzenini belirleyin.

Uyumluluğu bozan değişiklikler:

  • totalorder(), totalordermag() ve diğer kayan nokta türleri için benzer işlevler artık durumdaki değerlerin dönüştürülmesiyle ilgili uyarıları ortadan kaldırmak için işaretçileri argüman olarak kabul ediyor NaNGelecekteki C18661X standardı için önerilen TS 1-2'in tavsiyeleri doğrultusunda.
    Kayan nokta bağımsız değişkenlerini doğrudan ileten mevcut yürütülebilir dosyalar, değişiklik yapılmadan çalışmaya devam edecektir;

  • Uzun süredir kullanımdan kaldırılan stime işlevi artık glibc bağlantılı ikili dosyalar için mevcut değildir ve tanımı time.h'den kaldırılmıştır. Sistem saatini ayarlamak için Clock_settime fonksiyonunu kullanın. Gelecekte, kullanımdan kaldırılan ftime işlevinin yanı sıra sys/timeb.h başlık dosyasını da kaldırmayı planlıyoruz (ftime yerine gettimeofday veya saat_gettime kullanılmalıdır);
  • gettimeofday işlevi artık sistem genelindeki saat dilimiyle ilgili bilgileri iletmiyor (bu özellik 4.2-BSD günlerinde geçerliydi ve uzun yıllardır kullanımdan kaldırılmıştı). 'Tzp' argümanına artık bir boş işaretçi iletilmeli ve geçerli saate dayalı olarak saat dilimi bilgilerini elde etmek için localtime() işlevi kullanılmalıdır. gettimeofday'in sıfır olmayan bir 'tzp' argümanıyla çağrılması, saat dilimi yapısındaki boş tz_minuteswest ve tz_dsttime alanlarını döndürecektir. gettimeofday işlevinin kendisi POSIX kapsamında kullanımdan kaldırılmıştır (gettimeofday yerine Clock_gettime önerilir), ancak onu glibc'den kaldırmaya yönelik bir plan yoktur;
  • settimeofday artık saati ve zaman düzeltme ofsetini ayarlamak için parametrelerin eş zamanlı geçişini desteklemiyor. settimeofday çağrılırken, argümanlardan birinin (zaman veya ofset) artık null değerine ayarlanması gerekir, aksi takdirde işlev çağrısı bir EINVAL hatasıyla başarısız olur. gettimeofday gibi, settimeofday işlevi de POSIX tarafından kullanımdan kaldırılmıştır ve bunun saat_settime işlevi veya adjtime işlev ailesiyle değiştirilmesi önerilir;
  • SPARC ISA v7 mimarisi desteği durduruldu (v8 desteği şimdilik korunuyor, ancak yalnızca SuperSPARC işlemcileri değil, LEON işlemcileri gibi CAS talimatlarını destekleyen işlemciler için).
  • Eşleştirme başarısız olursa "tembel", burada bağlayıcı, bir işleve yapılan ilk çağrıya kadar bir işlevin sembollerini aramaz, dlopen işlevi artık işlemi sonlandırmaya zorlar (daha önce başarısızlık durumunda NULL değerini döndürüyordu);
  • MIPS hard-float ABI için, yapı "-enable-kernel=4.8" parametresi aracılığıyla Linux çekirdeği 4.8.0+ kullanımını açıkça kısıtlamadığı sürece çalıştırılabilir yığın artık kullanılmaktadır (4.8'e kadar çekirdeklerde çökmeler meydana gelir) bazı MIPS yapılandırmaları için gözlemlenmiştir);
  • Zaman manipülasyonuyla ilgili sistem çağrıları etrafındaki bağlantılar, eğer mevcutsa time64 sistem çağrısını kullanacak şekilde taşındı (32 bitlik sistemlerde, glibc önce 64 bitlik zaman türünü değiştiren yeni sistem çağrılarını dener ve eğer yoksa, düşer) eski 32-bit çağrılara geri dönelim).

Kaynak: opennet.ru

Yorum ekle