Glibc 2.31 సిస్టమ్ లైబ్రరీ విడుదల

ఆరు నెలల అభివృద్ధి తర్వాత ప్రచురించిన సిస్టమ్ లైబ్రరీ విడుదల GNU C లైబ్రరీ (glibc) 2.31, ఇది పూర్తిగా ISO C11 మరియు POSIX.1-2008 అవసరాలకు అనుగుణంగా ఉంటుంది. కొత్త విడుదలలో 58 డెవలపర్‌ల నుండి పరిష్కారాలు ఉన్నాయి.

Glibc 2.30లో అమలు చేయబడింది మెరుగుదలలు మీరు గమనించవచ్చు:

  • డ్రాఫ్ట్ ఫ్యూచర్ ISO స్టాండర్డ్‌లో నిర్వచించబడిన సామర్థ్యాలను ప్రారంభించడానికి _ISOC2X_SOURCE మాక్రో జోడించబడింది C2X. _GNU_SOURCE స్థూలాన్ని ఉపయోగిస్తున్నప్పుడు లేదా “-std=gnu2x” ఫ్లాగ్‌తో gccలో నిర్మిస్తున్నప్పుడు కూడా ఈ లక్షణాలు ప్రారంభించబడతాయి;
  • హెడర్ ఫైల్ "math.h"లో నిర్వచించబడిన ఫంక్షన్‌ల కోసం, వాటి ఫలితాలను చిన్న రకానికి చుట్టుముడుతుంది, TS 18661-1:2014 మరియు TS స్పెసిఫికేషన్‌ల ద్వారా అవసరమైన విధంగా సంబంధిత సాధారణ రకం మాక్రోలు "tgmath.h" ఫైల్‌లో ప్రతిపాదించబడ్డాయి. 18661-3: 2015;
  • pthread_clockjoin_np() ఫంక్షన్ జోడించబడింది, ఇది థ్రెడ్ పూర్తయ్యే వరకు వేచి ఉంటుంది, గడువును పరిగణనలోకి తీసుకుంటుంది (పూర్తి కావడానికి ముందే గడువు ముగిసినట్లయితే, ఫంక్షన్ లోపాన్ని అందిస్తుంది). కాకుండా pthread_timedjoin_np(), pthread_clockjoin_np()లో గడువును గణించడానికి టైమర్ రకాన్ని నిర్వచించడం సాధ్యమవుతుంది - CLOCK_MONOTONIC (స్లీప్ మోడ్‌లో సిస్టమ్ గడిపిన సమయాన్ని పరిగణనలోకి తీసుకుంటుంది) లేదా CLOCK_REALTIME;
  • DNS పరిష్కర్త ఇప్పుడు /etc/resolv.confలో ట్రస్ట్-యాడ్ ఎంపికకు మరియు _res.optionలలో RES_TRUSTAD ఫ్లాగ్‌కు మద్దతు ఇస్తుంది, సెట్ చేసినప్పుడు, DNS అభ్యర్థనలలో DNSSEC ఫ్లాగ్ ప్రసారం చేయబడుతుంది AD (ప్రామాణీకరించబడిన డేటా). ఈ మోడ్‌లో, సర్వర్ సెట్ చేసిన AD ఫ్లాగ్ res_search() వంటి ఫంక్షన్‌లను కాల్ చేసే అప్లికేషన్‌లకు అందుబాటులోకి వస్తుంది. డిఫాల్ట్‌గా, సూచించబడిన ఎంపికలు సెట్ చేయబడకపోతే, glibc అభ్యర్థనలలో AD ఫ్లాగ్‌ను పేర్కొనదు మరియు ప్రతిస్పందనలలో స్వయంచాలకంగా క్లియర్ చేస్తుంది, DNSSEC తనిఖీలు లేవు అని సూచిస్తుంది;
  • Glibc కోసం వర్కింగ్ సిస్టమ్ కాల్ బైండింగ్‌లను రూపొందించడానికి Linux కెర్నల్ హెడర్ ఫైల్‌లను ఇన్‌స్టాల్ చేయాల్సిన అవసరం లేదు. మినహాయింపు 64-బిట్ RISC-V ఆర్కిటెక్చర్;
  • ఎలిమినేట్ చేయబడింది దుర్బలత్వం CVE-2019-19126, ఇది రక్షణను దాటవేయడానికి మిమ్మల్ని అనుమతిస్తుంది
    సెట్యూయిడ్ ఫ్లాగ్‌తో ప్రోగ్రామ్‌లలో ASLR మరియు LD_PREFER_MAP_32BIT_EXEC ఎన్విరాన్‌మెంట్ వేరియబుల్ యొక్క మానిప్యులేషన్ ద్వారా లోడ్ చేయబడిన లైబ్రరీలలో చిరునామా లేఅవుట్‌ని నిర్ణయిస్తుంది.

అనుకూలతను విచ్ఛిన్నం చేసే మార్పులు:

  • totalorder(), totalordermag(), మరియు ఇతర ఫ్లోటింగ్-పాయింట్ రకాల కోసం సారూప్య విధులు ఇప్పుడు రాష్ట్రంలో విలువలను మార్చడం గురించి హెచ్చరికలను తొలగించడానికి పాయింటర్‌లను ఆర్గ్యుమెంట్‌లుగా అంగీకరిస్తాయి. NaN, భవిష్యత్ C18661X ప్రమాణం కోసం ప్రతిపాదించబడిన TS 1-2 యొక్క సిఫార్సులకు అనుగుణంగా.
    ఫ్లోటింగ్ పాయింట్ ఆర్గ్యుమెంట్‌లను నేరుగా పాస్ చేసే ప్రస్తుత ఎక్జిక్యూటబుల్‌లు మార్పు లేకుండా అమలు చేయడం కొనసాగుతుంది;

  • glibc-లింక్డ్ బైనరీల కోసం దీర్ఘకాలంగా నిలిపివేయబడిన స్టైమ్ ఫంక్షన్ అందుబాటులో లేదు మరియు దాని నిర్వచనం time.h నుండి తీసివేయబడింది. సిస్టమ్ సమయాన్ని సెట్ చేయడానికి, clock_settime ఫంక్షన్‌ని ఉపయోగించండి. భవిష్యత్తులో, మేము నిలిపివేయబడిన ftime ఫంక్షన్‌ని అలాగే sys/timeb.h హెడర్ ఫైల్‌ను తీసివేయాలని ప్లాన్ చేస్తాము (ftimeకి బదులుగా gettimeofday లేదా clock_gettimeని ఉపయోగించాలి);
  • gettimeofday ఫంక్షన్ ఇకపై సిస్టమ్-వైడ్ టైమ్ జోన్ గురించి సమాచారాన్ని అందించదు (ఈ ఫీచర్ 4.2-BSD రోజులలో సంబంధితంగా ఉంది మరియు చాలా సంవత్సరాలుగా నిలిపివేయబడింది). 'tzp' ఆర్గ్యుమెంట్ ఇప్పుడు శూన్య పాయింటర్‌గా పాస్ చేయాలి మరియు ప్రస్తుత సమయం ఆధారంగా టైమ్ జోన్ సమాచారాన్ని పొందేందుకు లోకల్‌టైమ్() ఫంక్షన్‌ని ఉపయోగించాలి. సున్నా కాని ఆర్గ్యుమెంట్ 'tzp'తో gettimeofdayకి కాల్ చేయడం వలన టైమ్‌జోన్ నిర్మాణంలో tz_minuteswest మరియు tz_dsttime ఖాళీ ఫీల్డ్‌లు అందించబడతాయి. gettimeofday ఫంక్షన్ కూడా POSIX కింద నిలిపివేయబడింది (Gettimeofdayకి బదులుగా clock_gettime సిఫార్సు చేయబడింది), కానీ glibc నుండి దాన్ని తీసివేయడానికి ప్రణాళికలు లేవు;
  • settimeofday ఇకపై సమయాన్ని మరియు సమయాన్ని సరిచేసే ఆఫ్‌సెట్‌ని సెట్ చేయడానికి పారామితులను ఏకకాలంలో ఆమోదించడానికి మద్దతు ఇవ్వదు. settimeofdayకి కాల్ చేస్తున్నప్పుడు, ఆర్గ్యుమెంట్‌లలో ఒకదాన్ని (సమయం లేదా ఆఫ్‌సెట్) ఇప్పుడు తప్పనిసరిగా శూన్యానికి సెట్ చేయాలి, లేకుంటే EINVAL లోపంతో ఫంక్షన్ కాల్ విఫలమవుతుంది. gettimeofday వలె, settimeofday ఫంక్షన్ POSIXలో నిలిపివేయబడింది మరియు clock_settime ఫంక్షన్ లేదా అడ్జ్‌టైమ్ ఫ్యామిలీ ఫంక్షన్‌ల ద్వారా భర్తీ చేయాలని సిఫార్సు చేయబడింది;
  • SPARC ISA v7 ఆర్కిటెక్చర్‌కు మద్దతు నిలిపివేయబడింది (ప్రస్తుతానికి v8 మద్దతు అలాగే ఉంచబడింది, కానీ LEON ప్రాసెసర్‌ల వంటి CAS సూచనలకు మద్దతు ఇచ్చే ప్రాసెసర్‌లకు మాత్రమే, SuperSPARC ప్రాసెసర్‌లు కాదు).
  • "లో జత చేయడం విఫలమైతేసోమరి", దీనిలో లింకర్ ఆ ఫంక్షన్‌కు మొదటి కాల్ వచ్చే వరకు ఫంక్షన్ యొక్క చిహ్నాల కోసం శోధించదు, dlopen ఫంక్షన్ ఇప్పుడు ప్రక్రియను ముగించేలా బలవంతం చేస్తుంది (గతంలో వైఫల్యంపై NULL తిరిగి వస్తుంది);
  • MIPS హార్డ్-ఫ్లోట్ ABI కోసం, ఎక్జిక్యూటబుల్ స్టాక్ ఇప్పుడు ఉపయోగించబడుతుంది, బిల్డ్ “-enable-kernel=4.8” పరామితి ద్వారా Linux కెర్నల్ 4.8.0+ వినియోగాన్ని స్పష్టంగా నియంత్రిస్తే తప్ప (4.8 వరకు కెర్నల్‌లతో, క్రాష్‌లు ఉంటాయి. కొన్ని MIPS కాన్ఫిగరేషన్ల కోసం గమనించబడింది);
  • టైమ్ మానిప్యులేషన్‌కు సంబంధించిన సిస్టమ్ కాల్‌ల చుట్టూ ఉన్న బైండింగ్‌లు టైమ్64 సిస్టమ్ కాల్‌ని ఉపయోగించేందుకు తరలించబడ్డాయి (32-బిట్ సిస్టమ్‌లలో, glibc మొదట 64-బిట్ టైమ్ రకాన్ని మార్చే కొత్త సిస్టమ్ కాల్‌లను ప్రయత్నిస్తుంది మరియు ఏదీ లేకపోతే, వస్తుంది తిరిగి పాత వాటికి 32-బిట్ కాల్స్).

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి