การเปิดตัวไลบรารีระบบ Glibc 2.42 และชุดยูทิลิตี้ GNU Binutils 2.45

หลังจากการพัฒนาหกเดือน ไลบรารีระบบ GNU C Library 2.42 (glibc) ก็ได้รับการเผยแพร่ โดยเป็นไปตามมาตรฐาน ISO C23 และ POSIX.1-2024 อย่างสมบูรณ์ นักพัฒนา 70 คนร่วมสนับสนุนการเผยแพร่ครั้งใหม่นี้

การปรับปรุงที่ใช้ใน Glibc 2.42 ได้แก่:

  • ฟังก์ชัน pthread_create ในเวอร์ชันนี้รองรับหน้าป้องกันสแต็กแบบเบา (lightweight stack guard pages) ซึ่งการเข้าถึงหน้าเหล่านี้จะทำให้เกิดข้อยกเว้นและกระบวนการหยุดทำงาน (SIGSEGV) การใช้งานนั้นอิงตามแฟล็ก MADV_GUARD_INSTALL ที่เพิ่มเข้ามาในระบบเรียกใช้ madvise ซึ่งได้รับการสนับสนุนมาตั้งแต่ระดับเคอร์เนลแล้ว Linux 6.13. เมื่อเปรียบเทียบกับการแมปในโหมด PROT_NONE หน้าป้องกัน (guard pages) ช่วยให้การบล็อกการทำงานของโค้ดนอกพื้นที่หน่วยความจำที่จัดสรรไว้มีประสิทธิภาพมากขึ้น เนื่องจากไม่จำเป็นต้องจัดสรรพื้นที่หน่วยความจำเสมือนใหม่ในการสร้างหน้าป้องกันเหล่านั้น
  • มีการเพิ่มฟังก์ชันใหม่สำหรับการยกกำลังและการคำนวณรากของ compoundn, pown และ powr, rootn และ rsqrt ที่กำหนดไว้ในมาตรฐาน ISO C23 และแสดงไว้ในไฟล์ส่วนหัว math.h มีการนำฟังก์ชันต่างๆ มาใช้กับประเภท float, double, long double, _FloatN และ _FloatNx รวมถึงประเภททั่วไปจาก tgmath.h
  • บนแท่น Linux ฟังก์ชัน pthread_gettid_np ได้รับการพัฒนาขึ้นแล้ว ซึ่งเช่นเดียวกับฟังก์ชัน gettid() จะส่งคืนตัวระบุเธรดที่ไม่ซ้ำกัน แต่แตกต่างตรงที่มีการตรวจสอบข้อผิดพลาดเพิ่มเติม (หากเกิดพฤติกรรมที่ไม่กำหนดไว้ กระบวนการจะยุติลง)
  • เพิ่มฟังก์ชันสำหรับการคำนวณค่าสัมบูรณ์ที่ทำงานกับชนิดข้อมูลที่ไม่มีเครื่องหมาย ได้แก่ uabs, ulabs, ullabs และ uimaxabs ฟังก์ชันเหล่านี้จะรวมอยู่ในมาตรฐาน C ในอนาคต
  • บนแท่น Linux API termios.h ตอนนี้รองรับอัตราการส่งข้อมูลแบบใดก็ได้แล้ว ชนิดข้อมูล speed_t ได้รับการกำหนดใหม่และตอนนี้ตรงกับชนิดข้อมูล "unsigned int" เช่นเดียวกับในเคอร์เนล Linux.
  • แคชเฉพาะเธรด (tcache) ที่ใช้ในฟังก์ชัน malloc รองรับการแคชบล็อกหน่วยความจำขนาดใหญ่แล้ว สามารถกำหนดขนาดบล็อกสูงสุดได้โดยใช้การตั้งค่า glibc.malloc.tcache_max ซึ่งรองรับค่าสูงสุดได้ถึง 4194304 แคชสำหรับบล็อกขนาดเล็กจะเร็วขึ้น
  • ขณะนี้สคริปต์ build configure มีตัวเลือก "--enable-sframe" เพื่อเปิดใช้งานการรองรับรูปแบบ SFrame ที่ใช้แสดงข้อมูลการติดตามสแต็ก และรองรับโดยฟังก์ชัน backtrace SFrame ต้องใช้ binutils เวอร์ชัน 2.45 เป็นอย่างน้อย
  • เวอร์ชันที่เพิ่มประสิทธิภาพของฟังก์ชันทางคณิตศาสตร์ acospif, asinpif, atanpif, atan2pif, cospif, sinpif และ tanpif ได้ถูกถ่ายโอนจากโครงการ CORE-MATH แล้ว
  • ชุดการทดสอบได้รับการขยายอย่างมากเพื่อครอบคลุมฟังก์ชัน printf และ scanf หลายรูปแบบ
  • เพิ่มโค้ดเพื่อตรวจจับโปรเซสเซอร์ Intel ที่ใช้สถาปัตยกรรมไมโคร Arrow Lake, Panther Lake, Clearwater Forest และ Diamond Rapids
  • เพิ่มการรองรับสำหรับแพลตฟอร์ม z17 (เมนเฟรม IBM Z/S390 รุ่นใหม่)
  • มีการเพิ่มการรองรับโหมดความเข้ากันได้ให้กับการตั้งค่า glibc.rtld.execstack เพื่อรองรับโปรแกรมที่ต้องการสแต็กที่สามารถทำงานได้ผ่านไลบรารีที่โหลดแบบไดนามิก
  • ไฟล์ส่วนหัว termio.h และคำจำกัดความของโครงสร้าง termio จาก sys/ioctl.h ได้ถูกลบออกแล้ว API ของ termio.h ถูกยกเลิกการใช้งานใน POSIX.1 (1988) และถูกแทนที่ด้วย termios.h
  • การสร้าง Glibc ต้องใช้อย่างน้อย GCC 12.1 และ GNU Binutils 2.39
  • แก้ไขช่องโหว่:
    • CVE-2025-0395 — บัฟเฟอร์โอเวอร์โฟลว์ระหว่างการทำงานของฟังก์ชัน assert() ปัญหานี้เกิดขึ้นเมื่อระบุชื่อโปรแกรมที่ใหญ่เกินไป (argv[0]) ปัญหานี้ถือว่าไม่เป็นอันตราย เนื่องจากมีการเขียนข้อมูลเกินบัฟเฟอร์ไป 4 ไบต์ ซึ่งผู้โจมตีไม่สามารถควบคุมเนื้อหาได้ ในขณะเดียวกัน ข้อเท็จจริงที่ว่าช่องโหว่นี้ปรากฏในฟังก์ชันการดีบัก ซึ่งเกิดจากข้อผิดพลาดในการแสดงชื่อของแอปพลิเคชันปัจจุบัน ถือเป็นเรื่องที่น่าสนใจ
    • CVE-2025-5702, CVE-2025-5745 - ช่องโหว่ในฟังก์ชัน strcmp และ strncmp สำหรับโปรเซสเซอร์ Power10 ทำให้เกิดความล้มเหลวเมื่อบันทึกและกู้คืนรีจิสเตอร์เวกเตอร์เวอร์ชัน 20-v31 ที่ควรจะถูกเก็บรักษาไว้ระหว่างการเรียกใช้ฟังก์ชัน ช่องโหว่นี้สามารถใช้เพื่อเขียนทับหรือกำหนดเนื้อหาของข้อมูลรีจิสเตอร์ที่ฟังก์ชันอื่นใช้
    • CVE-2025-8058 - มีช่องโหว่ double-free ในฟังก์ชัน regcomp

นอกจากนี้ เราสามารถสังเกตการเปิดตัวชุดยูทิลิตี้ระบบ GNU Binutils 2.45 ซึ่งรวมถึงโปรแกรมต่างๆ เช่น GNU linker, GNU assembler, nm, objdump, strings, strip

ใน Binutils เวอร์ชันใหม่:

  • ใน GNU assembler:
    • เพิ่มการรองรับส่วนขยายล่าสุดสำหรับสถาปัตยกรรม RISC-V, LoongArch และ AArch64 สำหรับ x86 เพิ่มการรองรับคำสั่ง XMODX ที่ใช้งานในโปรเซสเซอร์ Zhaoxin PadLock สำหรับ RISC-V เพิ่มการรองรับสำหรับคำสั่งต่อไปนี้: ssqosid v1.0, ssnpm v1.0, smnpm v1.0, smmpm v1.0, sspm v1.0, supm v1.0, sha v1.0, zce v1.0, smcdeleg v1.0, ssccfg v1.0, svvptc v1.0, zilsd v1.0, zclsd v1.0, smrnmi v1.0, xtheadvdot v1.0, xmipscbop v1.0, xmipscmov v1.0, xmipsexectl v1.0 และ xmipslsp v1.0
    • รับประกันความเข้ากันได้ของการสร้างข้อมูล SFrame กับข้อกำหนด SFrame V2 เพิ่มการรองรับการสร้างข้อมูลการติดตามสแต็ก (.sframe) จากคำสั่ง CFI บนระบบ s64 (s390x) แบบ 390 บิต
    • เพิ่มการสนับสนุนสำหรับคำสั่ง .errif และ .warnif เพื่อส่งออกข้อความการวินิจฉัยเมื่อมีการตรงตามเงื่อนไขบางประการ
  • ขณะนี้ตัวเลือก "--stats" ของลิงก์เกอร์รองรับอาร์กิวเมนต์เสริมที่ให้คุณระบุชื่อไฟล์เพื่อเก็บข้อมูลการใช้ทรัพยากรในแต่ละขั้นตอนของลิงก์ได้ ชื่อไฟล์ยังสามารถระบุได้ผ่านตัวแปรสภาพแวดล้อม LD_STATS สำหรับระบบ RISC-V ลิงก์เกอร์รองรับรูปแบบ PLT (Procedure Linkage Table) ใหม่แล้ว
  • มีการปรับปรุงหลายอย่างที่เกี่ยวข้องกับการรองรับรูปแบบ SFrame ฟังก์ชันสำหรับการทำงานกับ SFrame ได้ถูกย้ายไปยังไลบรารี libsframe.so.2 เวอร์ชันใหม่แล้ว
  • ยูทิลิตี้ถอดรหัสและอ่านเองได้ขยายการรองรับสถาปัตยกรรม RISC-V

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster