Keluaran Pustaka Sistem Glibc 2.31

Selepas enam bulan pembangunan diterbitkan keluaran perpustakaan sistem Perpustakaan GNU C (glibc) 2.31, yang mematuhi sepenuhnya keperluan piawaian ISO C11 dan POSIX.1-2008. Keluaran baharu ini termasuk pembaikan daripada 58 pembangun.

Daripada yang dilaksanakan dalam Glibc 2.31 penambahbaikan anda boleh perhatikan:

  • Menambahkan makro _ISOC2X_SOURCE untuk mendayakan keupayaan yang ditakrifkan dalam draf standard ISO masa hadapan C2X. Ciri ini juga didayakan apabila menggunakan makro _GNU_SOURCE atau semasa membina dalam gcc dengan bendera "-std=gnu2x";
  • Untuk fungsi yang ditakrifkan dalam fail pengepala "math.h" yang membulatkan keputusannya kepada jenis yang lebih kecil, makro jenis generik yang sepadan dicadangkan dalam fail "tgmath.h", seperti yang dikehendaki oleh spesifikasi TS 18661-1:2014 dan TS 18661-3: 2015;
  • Menambah fungsi pthread_clockjoin_np() , yang menunggu urutan selesai, dengan mengambil kira tamat masa (jika tamat masa berlaku sebelum selesai, fungsi akan mengembalikan ralat). Tidak seperti pthread_timedjoin_np(), dalam pthread_clockjoin_np() adalah mungkin untuk menentukan jenis pemasa untuk mengira tamat masa - CLOCK_MONOTONIC (mengambil kira masa yang dibelanjakan oleh sistem dalam mod tidur) atau CLOCK_REALTIME;
  • Penyelesai DNS kini menyokong pilihan iklan amanah dalam /etc/resolv.conf dan bendera RES_TRUSTAD dalam _res.options, apabila ditetapkan, bendera DNSSEC dihantar dalam permintaan DNS AD (data yang disahkan). Dalam mod ini, bendera AD yang ditetapkan oleh pelayan tersedia untuk aplikasi yang memanggil fungsi seperti res_search(). Secara lalai, jika pilihan yang dicadangkan tidak ditetapkan, glibc tidak menyatakan bendera AD dalam permintaan dan mengosongkannya secara automatik dalam respons, menunjukkan bahawa semakan DNSSEC tiada;
  • Membina pengikatan panggilan sistem kerja untuk Glibc tidak lagi memerlukan pemasangan fail pengepala kernel Linux. Pengecualian ialah seni bina RISC-V 64-bit;
  • Dihapuskan kelemahan CVE-2019 19126-, yang membolehkan anda memintas perlindungan
    ASLR dalam program dengan bendera setuid dan tentukan susun atur alamat dalam perpustakaan yang dimuatkan melalui manipulasi pembolehubah persekitaran LD_PREFER_MAP_32BIT_EXEC.

Perubahan yang memecahkan keserasian:

  • totalorder(), totalordermag(), dan fungsi serupa untuk jenis titik terapung lain kini menerima penunjuk sebagai hujah untuk menghapuskan amaran tentang menukar nilai dalam keadaan NaN, selaras dengan cadangan TS 18661-1 yang dicadangkan untuk standard C2X masa hadapan.
    Boleh laku sedia ada yang meneruskan hujah titik terapung secara langsung akan terus berjalan tanpa pengubahsuaian;

  • Fungsi stime yang telah lama tidak digunakan tidak lagi tersedia untuk perduaan terpaut glibc dan takrifannya telah dialih keluar dari masa.h. Untuk menetapkan masa sistem, gunakan fungsi clock_settime. Pada masa hadapan, kami bercadang untuk mengalih keluar fungsi ftime yang ditamatkan, serta fail pengepala sys/timeb.h (gettimeofday atau clock_gettime harus digunakan dan bukannya ftime);
  • Fungsi gettimeofday tidak lagi menghantar maklumat tentang zon waktu seluruh sistem (ciri ini relevan pada zaman 4.2-BSD dan telah ditamatkan selama bertahun-tahun). Argumen 'tzp' kini harus dihantar penuding nol, dan fungsi localtime() harus digunakan untuk mendapatkan maklumat zon waktu berdasarkan masa semasa. Memanggil gettimeofday dengan argumen 'tzp' bukan sifar akan mengembalikan medan tz_minuteswest dan tz_dsttime kosong dalam struktur zon waktu. Fungsi gettimeofday itu sendiri ditamatkan di bawah POSIX (clock_gettime disyorkan dan bukannya gettimeofday), tetapi tiada rancangan untuk mengalih keluarnya daripada glibc;
  • settimeofday tidak lagi menyokong penyerahan parameter serentak untuk menetapkan masa dan mengimbangi pembetulan masa. Apabila memanggil settimeofday, salah satu argumen (masa atau offset) kini mesti ditetapkan kepada null, jika tidak, panggilan fungsi akan gagal dengan ralat EINVAL. Seperti gettimeofday, fungsi settimeofday ditamatkan dalam POSIX dan disyorkan untuk digantikan dengan fungsi clock_settime atau keluarga adjtime fungsi;
  • Sokongan untuk seni bina SPARC ISA v7 telah dihentikan (sokongan v8 dikekalkan buat masa ini, tetapi hanya untuk pemproses yang menyokong arahan CAS, seperti pemproses LEON, bukan pemproses SuperSPARC).
  • Jika gandingan gagal dalam "malas", di mana pemaut tidak mencari simbol fungsi sehingga panggilan pertama ke fungsi itu, fungsi dlopen kini memaksa proses untuk ditamatkan (sebelum ini mengembalikan NULL pada kegagalan);
  • Untuk ABI terapung keras MIPS, tindanan boleh laku kini digunakan, melainkan binaan secara eksplisit menyekat penggunaan kernel Linux 4.8+ melalui parameter "-enable-kernel=4.8.0" (dengan kernel sehingga 4.8, ranap sistem diperhatikan untuk beberapa konfigurasi MIPS);
  • Pengikatan di sekeliling panggilan sistem yang berkaitan dengan manipulasi masa telah dialihkan untuk menggunakan panggilan sistem time64, jika ada (pada sistem 32-bit, glibc mula-mula mencuba panggilan sistem baharu yang memanipulasi jenis masa 64-bit, dan jika tiada, akan jatuh kembali kepada panggilan 32-bit yang lama).

Sumber: opennet.ru

Tambah komen