GNU C 라이브러리는 GNU / Linux 배포판을위한 무료 오픈 소스의 강력한 라이브러리 소프트웨어입니다. Glibc라고도 알려져 있으며 유닉스 계열의 컴퓨터 운영 체제에서 필요합니다. GNU C 라이브러리는 malloc, open, exit, printf 등과 같은 다양한 다른 기본 기능뿐 아니라 시스템 호출을 정의하는 역할을 담당합니다.
모든 Linux 커널 기반 운영 체제에서 기본적으로 사용됩니다.
GNU C 라이브러리는 기본적으로 모든 리눅스 커널 기반 운영체제에 설치되고 사용되며, 처음부터 리눅스 커널에 의해 운영되는 GNU 시스템과 다른 운영체제의 메인 C 라이브러리로 작동하도록 설계되었습니다. p>
휴대용으로 설계된
Glibc는 전적으로 C 프로그래밍 언어로 작성된 고성능 C 라이브러리입니다. POSIX.1-2008 및 ISO C11을 포함하여 모든 관련 표준을 지원하도록 이식 가능하고 국제화되고 엔지니어링되도록 설계되었습니다.
잘 알려진 UNIX 변형의 기능 지원
GNU C 라이브러리는 완전히 국제화 된 인터페이스를 가지고 있지만, 내장 된 호환성 모드 덕분에 BSD와 System V와 같은 잘 알려진 유닉스 변종의 기능을 지원하려고합니다.
GNU C 라이브러리 시작하기
GNU C 라이브러리는 기본적으로 거의 모든 GNU / Linux 운영 체제에 설치되지만, 웹 사이트 나 Softoware에서 무료로 제공되는 소스 패키지를 사용하여 직접 다시 설치할 수도 있습니다. 시작하려면 홈 디렉토리에 아카이브를 다운로드하고 저장하십시오.
아카이브 관리자 유틸리티로 압축 파일의 압축을 풀고, 터미널 창을 열고, 압축 파일이 압축 해제 된 위치로 이동 한 다음 & lsquo; ./ configure & rsquo; 명령을 사용하여 프로그램을 구성하십시오 (다양한 최적화 옵션에 대해서는 & lsquo; ./ configure --help & rsquo; 명령 참조).
그런 다음 & lsquo; make & rsquo;를 실행하십시오. 명령을 사용하여 라이브러리를 컴파일합니다.이 라이브러리는 & lsquo; make install & rsquo; 또는 & lsquo; sudo make install & rsquo; 명령을 사용하십시오.
이번 출시의 새로운 기능 :
https://sourceware.org/ml/libc-announce/2018/msg00000.html
버전 2.27의 새로운 기능 :
https://sourceware.org/ml/libc-announce/2018/msg00000.html
버전의 새로운 기능 :
이 버전의 GNU C 라이브러리를 사용할 수있는 최소 Linux 커널 버전은 Linux 커널 버전 2.6.32 이상이 필요한 i [4567] 86 및 x86_64를 제외하고는 3.2입니다 (커널 버전이 더 최근에 필요했던 아키텍처 3.2 이상이면 요구 사항은 변경되지 않습니다. 모든 아키텍처에서 Linux 3.2 이상의 커널 헤더가 필요합니다.pap_AN 로켈이 삭제되었습니다. 이것은 오랫동안 사용되지 않았습니다. pap_AW & amp; amp;로 대체되었습니다. pap_CW, 둘 다 이전 릴리스에 오래 포함되어 있습니다.
readdir_r 및 readdir64_r 함수는 더 이상 사용되지 않습니다. readdir 및 readdir64를 대신 사용하는 것이 좋습니다.
"공용체 대기"유형이 제거되었습니다. 그것은 1990 년대 초반에 비추천되었고 POSIX의 일부가 아니 었습니다. 응용 프로그램 코드는 "union wait"대신 int 유형을 사용해야합니다.대규모의 분산 시스템 관리를 용이하게하기 위해 새로운 NSS 작업이 추가되었습니다. MERGE 작업을 통해 LDAP와 같은 원격 사용자 저장소를 / etc / groups와 같은 로컬 사용자 저장소에 병합하여 사용하기 쉽고 업데이트되고 관리되는 통합 자격 증명 집합을 제공 할 수 있습니다. 새 작업은 /etc/nsswitch.conf에서 구성하여 사용할 수 있습니다. group : files [SUCCESS = merge] nis Stephen Gallagher (Red Hat)에 의해 구현되었습니다.
사용되지 않는 __malloc_initialize_hook 변수가 API에서 제거되었습니다.
사용하지 않은 longedef --old-style 옵션은 삭제되었습니다. 16 년이 넘는 기간 동안 아무 것도하지 않았습니다. 이 옵션을 사용하는 스크립트는 안전하게 제거 할 수 있습니다.
nextupl, nextup, nextupf, nextdownl, nextdown 및 nextdownf가 libm에 추가됩니다. 이들은 TS 18661 및 IEEE754-2008에 의해 정의됩니다. nextup 함수는 양의 무한대 방향으로 다음 표현할 수있는 값을 반환하고 nextdown 함수는 음의 무한대 방향으로 다음 표현할 수있는 값을 반환합니다. 이들은 현재 GNU 확장으로 사용 가능합니다.
보안 관련 변경 사항 :
_nss_dns_getnetbyname_r의 불필요한 스택 복사본이 제거되었습니다. 지나치게 긴 이름으로 getnetbyname을 호출하면 스택 오버플로가 발생할 수 있습니다. (CVE-2016-3075)이전에는 CVE-2013-4458에 대한 수정이 적용된 후에도 getaddrinfo가 많은 양의 주소 데이터를 스택에 복사하여 잠재적으로 스택 오버플로를 초래했습니다. 이제 getaddrinfo는 힙 할당을 대신 사용합니다. Michael Petlan에 의해보고 됨. (CVE-2016-3706)
glob 함수는 GLOB_ALTDIRFUNC 플래그로 호출되고 긴 파일 이름을 발견했을 때 스택 기반 버퍼 오버플로가 발생했습니다. Alexander Cherepanov에 의해보고 됨. (CVE-2016-1234)
Sun RPC UDP 클라이언트는 조작 된 ICMP 및 UDP 메시지로 넘쳐 흐르면 사용 가능한 모든 스택 공간을 소모 할 수 있습니다. GCC 용 Aldy Hernandez의 alloca 플러그인에 의해보고되었습니다. (CVE-2016-4429)
libresolv의 IPv6 이름 서버 관리 코드는 작성된 각 스레드에 대해 메모리 누출을 초래할 수 있으며 실패한 이름 조회를 수행하고 종료 할 수 있습니다. 시간이 지남에 따라 메모리 고갈로 인해 서비스 거부가 발생할 수 있습니다. Matthias Schiffer에 의해보고 됨. (CVE-2016-5417)
이 릴리스에서 해결 된 버그는 다음과 같습니다.[1170] localedata : ne_NP : 네팔어 로켈 정의 파일 업데이트 [3629] manual : stpcpy string.texi의 설명은 MS-DOS 대신 MS-DOG를 참조합니다. [6527] malloc : [powerpc] PowerPC에 대한 Malloc 정렬이 부족합니다. [6796] 수학 : fdim ()이 오버플로에서 errno를 설정하지 않습니다. libc : posix_spawn은 현재보다 많은 경우 vfork ()를 사용해야합니다. localedata : localedata : 로켈 파일에 저작권 면책 조항 추가 [12143] localedata : chr_US : 새 체로키 로캘 [12450] localedata : sgs_LT : 새 로캘 [12676] localedata : ln_CD : 새 로캘 [13237] localedata : LC_ADDRESS.country_name : 최신 CLDR이있는 모든 로캘 업데이트 데이터 : [13304] 수학 : fma, fmaf, fmal 잘못된 결과 생성 [14259] 빌드 : --localedir 구성 할 인수가 무시됩니다. [14499] nptl : posix_spawn이 atfork 처리기를 호출합니까 / vfork를 사용합니까? [14750] libc : posix_spawn의 경쟁 조건 vfork 사용법 vs 신호 처리기 [14934] localedata : es_CL : 주중 칠레 로캘이 잘못되었습니다. [15262] localedata : LC_MESSAGES.yesexpr / noexpr : 로마자 변환이 일관성이 없음 [15263] localedata : LC_MESSAGES.yesexpr / noexpr : 1/0 및 +/- [15264] 로컬 데이터의 일관성없는 사용 : LC_MESSAGES.yes / noostr : 많은 로케일에서 부족함 [15368] nptl : raise ()가 비동기 시그널 안전하지 않음 [15479] 수학 : ceil, floor, round 및 trunc 정확하지 않은 예외 발생 [15578] localedata : kk_KZ : 다양한 업데이트 [16003] localedata : pap_AN : 오래된 로케트를 흉내냅니다. [16137] localedata : iw_IL : 오래된 로케트를 쫓아냅니다. [16190] localedata : eo : 새로운 에스페란토 로켈 [16374] localedata : lv_LV : LC_MONETARY의 통화 기호를 유로로 변경합니다. [16742] malloc : 경쟁 조건 : pthread_atfork LC_MESSAGES.yesexpr / noexpr : 모든 로케일의 대소 문자 재사용 [16983] localedata : postal_fmt가 % l 및 % n 한정자를 허용하지 않음 [17565] localedata : pt_PT : 잘못된 (일) 주 시작 [17899] 수학 : [powerpc] floorl이 FE_DOWNWARD로 음수 0을 반환합니다. [17950] 빌드 : -msse로 빌드가 실패합니다 [18205] localedata : be_BY * : first_weekday 및 first_workday가 잘못됨 [18433] libc : 실행 실패시 posix_spawn이 올바르게 반환되지 않습니다 [18453] localedata : charmaps / IBM875 : 잘못된 코드 [18712] 문자열 : 비트 / 문자열 2.h - 호환되지 않는 -O2 -Werror = packed -Wsystem-headers [18896] localedata : he_IL : 통화 향상 [18911] localedata : ro_RO : 루마니아어 로케일 데이터의 "화요일"에 대한 요일 날짜 수정 [18960] 로켈 : _310 : _nl_locale_subfreeres 잘못 정렬 된 기호에 larl opcode를 사용합니다. [19056] libc : Deprecate readdir_r [19133] localedata : pt_ * : days & amp; 포르투갈어로 된 소문자 수 : nl_NL : 네덜란드어 로케일의 작은 개선 [19257] 네트워크 : IPv6 네임 서버 (CVE-2016-5417)로 __res_vinit에서 스레드 당 메모리 누출 [19269] build : tst-audit4 및 [19400] 로켈 : 설명에 사소한 수정이있는 "iso-639.def"에 누락 된 언어 [19431] malloc : fflush, getdelim 및 fork 사이의 교착 상태 [19505] libc : posix_spawn_file_actions_add {open, close, dup2}의 잘못된 파일 기술자 유효성 검사 [19509] 동적 링크 : dlsym, dlvsym은 RTLD_NEXT를 사용할 때 dlerror를 통해 오류를보고하지 않습니다 [19512] locale :`intif / {gettextP , loadinfo}.hes [19534] libc : execle, execlp가 malloc을 사용할 수 있음 [19568] localedata : * _CH : 스위스 로케일의 시작이 일치하지 않음 [19573] 네트워크 : res_nclose 및 __res_maybe_init가 Hesiod [19575] [19581] localedata : sr_ * date_fmt 문자열에 추가 줄 바꿈이 있습니다. [19583] 문자열 : AMD 굴삭기 코어의 SSSE3_Fast_Copy_Backward 플래그를 활성화해야합니다. [19592] 수학 : [ldbl-128ibm] 기본값이 아닌 반올림 모드에서 올바르지 않음 [19593 ] math : [ldbl-128ibm] truncl이 기본이 아닌 반올림 모드에서 잘못됨 [19594] math : [ldbl-128ibm] roundl이 기본값이 아닌 반올림 모드에서 잘못됨 [19595] math : [ldbl-128ibm] fmodl이 비정상 [19603] 수학 : [ldbl-128ibm] 수학 : [ldbl-128ibm] fmodl 낮은 부분이 0 인 동등한 인수의 처리 [19603] 수학 : [ldbl-128ibm] remainderl, remquol 동등성 검사에서 잘못된 부호 처리 [19610] dynamic-link : ldconfig - X는 부실 심볼릭 링크를 제거합니다 [19613] libc : s390x (64 비트) 매크로 확장 WCOREDUMP 및 기타 [19633] 로캘 : strfmon_l은 전역 로캘을 숫자 서식에 적용합니다. [19642] 네트워크 : getnameinfo [19648]에서 메모리 누수 [19648] libc : test-skeleton.glibc-2.22에서 널 포인터 참조 해제 (CWE-476) 가능성 [19654] 수학 : [x86_64] BZ # 19590 수정을위한 테스트 케이스 필요 [19671] localedata : malloc에 대한 유효성 검사 누락 () 안의 'tst-fmon.c'& amp; 'tst-numeric.c'[19674] 수학 : [ldbl-128ibm] powl 부정확 한 오버플로 처리 [19677] 수학 : [ldbl-128ibm] remainderl 동등성 검정이 낮은 제로 부분에 맞지 않음 [19678] 수학 : [ldbl-128ibm] nextafterl , nexttowardl 제로 결과의 잘못된 기호 [19679] dynamic-link : gcc-4.9.3 정렬되지 않은 스택으로 인해 C ++ 예외 처리가 중단됨 [19726] 로캘 : iconv ()로 UCS4LE를 내부로 변환해도 오류 및 포인터의 길이가 업데이트되지 않습니다 . [19727] locale : iconv ()를 사용하여 UTF-xx에서 /로 변환하면 UTF-16 대리 변수 값의 오류가 항상보고되는 것은 아닙니다.[19755] libc : mempcpy는 인라인되어서는 안됩니다 [19762] dynamic-link : HAS_CPU_FEATURE / HAS_ARCH_FEATURE는 오용하기 쉽습니다 [ 19765] libc : s390에 최적화 된 mempcpy 필요 [19779] glob : glob : 잘못된 NAME_MAX 제한 가정 (CVE-2016-1234)으로 인해 GLOB_ALTDIRFUNC가 버퍼 오버 플로우 됨 [19783] build : benchtests가 --enable-hardcoded-path를 지원하지 않습니다. -in-tests [19787] 네트워크 : getnameinfo [19790] math : [ldbl-128ibm]이 기본값이 아닌 반올림 모드에서 잘못 되었음 [19791] 네트워크에서 누락 및 잘못된 절단 검사 : [19791] 네트워크 : un_connectable name을 사용하는 res_query.c에서 어설 션 오류 서버 주소 [19792] libc : MIPS : 백 트레이스는 makecontext [19822] math : libm을 사용하여 무한한 백 트레이스를 산출합니다.그래서 설치 이전 버전 [19825] 네트워크 : resolv : send_vc getaddrinfo [19830] 네트워크에 대한 두 번째 응답에서 초기화되지 않은 데이터를 반환 할 수 있습니다. nss_dns : 버퍼 길이에 대한 RDATA 길이를 확인해야 함 [19831] 네트워크 : nss_dns : getaddrinfo는 초기화되지 않은 데이터를 반환합니다. 잘못된 크기의 A / AAAA 레코드 [19837] nss : nss_db : 더 큰 버퍼를 가진 긴 줄에 대한 재시도 없음 [19848] math : n = -4, -5, -6, -7에 대한 powl (10, n) xml_64 : tst-audit10 및 tst-auditmod10b에 대한 컴파일 오류 nptl : libpthread 포크에 대한 IFUNC 해석기 (1985) 네트워크 : resolv, nss_dns : 예기치 않은 레코드 유형의 남은 로깅 제거 [19865] 네트워크 : _nss_dns_getcanonname_r [19868] 네트워크에서 어설 션 오류 또는 메모리 누출 nss_dns : Netent 코드가 PTR 레코드가 아닌 곳을 건너 뛰지 않음 [ 19879] 네트워크 : nss_dns : 스택 오버플로 getnetbyname implementa (CVE-2016-3075) [19881] string : x86-64 memset 개선 [19907] string : 잘못된 memcpy 테스트 [19916] dynamic-link : S390 : 심볼을 확인하는 동안 fprs / vrs가 저장 / 복원되지 않음 [19925] libc : termios.h XCASE 네임 스페이스 [19928] 문자열 : memmove-vec-unaligned-erms.libc : limits.h NL_NMAX 네임 스페이스 [19931] stdio : vfprintf의 메모리 누출 [19957] libc : clone (CLONE_VM) 잘못된 부모 메모리에 액세스 [19963] localedata : en_IL : 새 로캘 [19989 ] stdio : stdio.h cuserid 네임 스페이스 [19994] 네트워크 : getaddrinfo가 gethosts의 RES_USE_INET6 플래그를 복원하지 못함 [19996] 로켈 : langinfo.h nl_langinfo_l 네임 스페이스 [20005] stdio : fmemopen으로 열린 파일의 fflush가 0으로 재설정됩니다. [20010] 네트워크 : getaddrinfo : 호스트 변환에서 스택 오버 플로우 (CVE-2016-3706) [20012] stdio : libio : fmemopen 추가 모드 실패 [20014] stdio : stdio.h pre-threads 용 네임 스페이스 POSIX [20017] 네트워크 : resolv : gmtime_r 사용 nss_hesiod : get_txt_records [20041] 시간 : sys / time.h timespec에서 힙 오버플로 [pn_sysos] [p_secstodate]에서 gmtime 대신 libc : fcntl.h timespec namespace [20024] math : [x86_64] 벡터화 된 sincos가 스택을 파기합니다. 네임 스페이스 [20043] libc : unistd.h는 UNIX98과 [20044] 이전에 cuserid가 누락되었습니다. libc : unistd .h UNIX98 용 pthread_atfork가 없습니다. [20051] libc : 잘못된 조건의 잘못된 헤더에있는 ttyslot [20054] libc : XPG4 [gedostname]이 [20055] libc : termios에 선언되지 않았습니다.동적 할당 : x86 init_cpu_features는 정적 실행 파일 [20073]에서 두 번 호출됩니다. libc : sys / stat.h fchmod 네임 스페이스 [20074] libc : stdlib.h rand_r 네임 스페이스 [20076] libc : sys / stat .h XG4 [20094]에 대한 S_ISSOCK이 누락되었습니다. libc : stdlib.h는 grantpt, ptsname, unlockpt를 XPG3 용으로 선언해서는 안됩니다. [20111] libc : struct sockaddr_storage는 집계 복사 할 수 없습니다. [20112] network : sunrpc : stack (frame) [20119] 문자열 : memset-vec-unaligned-erms.S의 추가 정렬 libc : CPUID의 프로세서 수준 유형에 대한 잘못된 마스크 dynamic connection : 상위 부분 [ydl-128 / ldbl-128ibm] j0l, j1l, y0l, y1l sNaN 인수에 대해 sNaN을 반환합니다. [20153] math : [ldbl-128ibm] sqrtl (sNaN)은 sNaN [20156] 수학을 반환합니다 : [ldbl-128ibm] ceill, rintl 등 sNaN 인수에 대한 sNaN 반환 [20157] 수학 : [powerpc] fabsl (sNaN) 잘못 "invalid"를 발생시킵니다 [20160] 수학 : [p owerpc] ceil, rint 등libc : posix_spawn {p} exit를 호출하면 안됨 [20191] stdio : libio : vtables hardening [20195] 문자열 : FMA4 감지를 위해 레지스터 eax = 0x80000001로 CPUID를 실행해야 함 [20198] libc : quick_exit이 잘못 파괴 함 C ++ 11 개의 스레드 객체. [20205] 수학 : [i386 / x86_64] nextafterl 부정확 한 하위 정규 증가 다음 수학은 : sNaN (sNaN)은 sNaN을 반환합니다. h 및 ipv6.h를 다시 시작하십시오.수학 함수 포인터 : 수학 함수 포인터 (mangle function pointer) 수학 함수 (mangle function pointer) 수학 함수 (math function pointer) [수학 식 38] sNaN 입력에 대해 sNaN을 반환합니다. [20226] 수학 : [i386 / x86_64] expl, exp10l, expm1l sNaN 입력에 대해 sNaN을 반환합니다. [i386 / x86_64] logl (sNaN )는 sNaN [20228]을 반환합니다. [i386 / x86_64] log10l (sNaN)은 sNaN을 반환합니다. [i386 / x86_64] log1pl (sNaN)은 sNaN을 반환합니다. [ldbl-128] expm1l (sNaN) (sNaN)은 sNaN을 반환한다. log2l (sNaN)은 sNaN을 반환한다 .SNaN (sNaN)은 sNaN을 반환한다. 20237] nss : nss_db : 선행 집합없이 segfaults를 얻는다. * ent [20240] math : modf (sNaN)는 sNaN을 반환한다. libc : debug / tst-longjump_chk2는 시그널 핸들러에서 printf를 호출한다. 수학 : frexp (sNaN ) sNaN [20252] math : atan2 (sNaN, qNaN)가 "invalid"를 발생시키지 못한다. [20255] ma th : [i386] fdim, 초과 범위와 정밀도 / 이중 라운딩을 가진 fdimf 반환 [20256] 수학 : [i386 / x86_64] fdiml은 sNaN 입력 [20260] 문자열에 대해 sNaN을 반환합니다. ../sysdeps/x86/bits/string.[20262] nis : _nss_nis_initgroups_dyn은 항상 NSS_STATUS_NOTFOUND를 반환합니다. [20263] nptl : 다른 스레드 요청이 timedlock 인 경우 강력한 뮤텍스 교착 상태 (arm 만) / 리눅스) [20277] libc : $ dp가 sysdeps / hppa / start.S에서 올바르게 초기화되지 않았습니다. [20284] malloc : malloc : 손상된 경기장 회피로 인해 불필요한 mmap 대체가 발생합니다 [수학] : [i386 / x86_64] scalbl은 sNaN을 반환합니다. 오류 : [20316] nptl : make [4] : *** [/usr/include/stdlib.h] 오류 1 [20316] 로컬 데이터 : id_ID : Pebruari 대신 [Februari] 문자열 : POWER8 libc : FAIL : misc / tst-preadvwritev64 [20349] libc : 64 비트 값이 p {readv, writev}에서 다르게 전달됩니다. [20347] 수학 오류 : 테스트 : j0_downward (0xap + 0) [20348] {64} [20350] libc : p {read, write}에 대한 테스트가 없습니다. 64 [20357] 수학 : 1.5174239687223976에 대한 잘못된 결과 cos [20384] 빌드 : libmvec-sincos-avx *를 실행하지 마십시오. 애인들
버전 2.23의 새로운 기능 :
CVE-2015-7547 : glibc getaddrinfo () 스택 기반 버퍼 오버 플로우 - glibc 2.23 릴리스의 개발 분기에서 수정되었습니다.
버전 2.21의 새로운 기능 :
이 릴리즈에서는 다음 버그가 해결되었습니다 : 6652, 10672, 12674, 12847, 12926, 13862, 14132, 14138, 14171, 14498, 15215, 15378, 15884, 16009, 16418, 16191, 16469, 16576, 16617, 16618, 16619 16657, 16740, 16857, 17192, 17266, 17273, 17344, 17363, 17370, 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555, 17570, 17571, 17572, 17573, 17574, 17582 , 17583, 17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647, 17653, 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719, 17722 , 17723, 17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747, 17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797, 17801, 17803, 17806, 17834, 17844, 17848 , 17868, 17869, 17870, 17885, 17892.CVE-2015-1472 특정 조건에서 wscanf는 스캔 할 인수에 대해 너무 적은 메모리를 할당하고 할당 된 버퍼를 오버플로 할 수 있습니다. 구현은 이제 malloc을 사용할 때 필요한 버퍼 크기를 올바르게 계산합니다.새로운 머신을위한 일반적인 C 코드로 새로운 세마포어 알고리즘이 구현되었습니다. 세마포어에 대한 이전의 커스텀 어셈블리 구현은 그것이 안전하다는 것을 추론하거나 보장하기가 어려웠습니다. 세마포어의 새 버전은 64 비트 또는 32 비트 원자 연산이 가능한 시스템을 지원합니다. 새로운 세마포어 알고리즘은 sem_init, sem_open, sem_post, sem_wait, sem_timedwait, sem_trywait 및 sem_getvalue에 의해 사용됩니다.
알테라의 포트 Nios II는 멘토 그래픽스가 기고했다.
strcpy, stpcpy, strncpy, stpncpy, strcmp 및 strncmp 구현을 powerpc64 / powerpc64le 용으로 최적화했습니다. Adhemerval Zanella (IBM)가 구현했습니다.
powerpc32, powerpc64 및 powerpc64le에서 pthread 뮤텍스의 TSX 잠금 elisation에 대한 지원이 추가되었습니다. 이것은 HTM 가능 시스템에서 기존 프로그램의 잠금 크기 조정을 향상시킬 수 있습니다. 잠금 실행 코드는 --enable-lock-elision = yes로만 활성화됩니다. 또한 powerpc에 대한 TSX 잠금 elisation 구현은 부작용이 트랜잭션 외부에서 표시되지 않도록 모든 시스템 콜에서 트랜잭션 중단을 발생시킵니다.
AArch64에 최적화 된 strcpy, stpcpy, strchrnul 및 strrchr 구현 ARM Ltd. 제공
SSE2 unaligned load / store로 최적화 된 i386 memcpy 함수.CVE-2104-7817 wordexp 함수는 특정 입력 조건에서 WRDE_NOCMD 플래그를 무시하여 응용 프로그램이 명령을 요청하지 않았을 때 명령 대체를위한 쉘을 실행하게 할 수 있습니다. 구현은 이제 셸을 실행하기 직전에 WRDE_NOCMD를 확인하고 예상대로 WRDE_CMDSUB 오류를 반환합니다.
CVE-2012-3406 많은 형식 지정자로 형식 문자열을 처리 할 때 printf 스타일 함수가 스택 오버플로로 실행될 수 있습니다.
CVE-2014-9402 DNS 응답에 예기치 않은 형식의 PTR 레코드가 포함되어 있으면 getnetbyname의 nss_dns 구현이 무한 루프로 실행될 수 있습니다.
이 버전의 GNU C 라이브러리를 빌드하는 데 사용할 수있는 최소 GCC 버전은 GCC 4.6입니다. 오래된 GCC 버전과 GNU가 아닌 컴파일러는 여전히 GNU C 라이브러리를 사용하여 프로그램을 컴파일하는 데 사용할 수 있습니다.
이제 GNU C 라이브러리는 기본적으로 -Werror로 빌드됩니다. --disable-werror를 사용하여 구성하면이 기능을 비활성화 할 수 있습니다.
새로운 로케일 : tu_IN, bh_IN, raj_IN, ce_RU.폐기 된 sigvec 기능이 제거되었습니다. 이것은 프로그램이 약 25 년 동안 대신 사용해온 POSIX.1 sigaction 인터페이스에 영감을 준 원래 4.2BSD 인터페이스였습니다. 물론 sigvec를 사용하는 이전 바이너리와의 ABI 호환성은 그대로 유지됩니다.
gettext 0.19.3을 intl 서브 디렉토리에 병합합니다. 이것은 새로운 버전의 bison으로 건물을 수정합니다.MIPS o32 FPXX, FP64A 및 FP64 ABI 확장 지원. 원래의 MIPS o32 하드 플로트 ABI는 FPU가 필요합니다. 배정 밀도 레지스터는 2 개의 연속 단 정밀도 레지스터를 오버레이합니다. MIPS32R2는 배정도 레지스터가 o32 하드 플로트 ABI와 호환되지 않는 해당 단 정밀도 레지스터를 확장하는 새로운 FPU 모드 (FR = 1)를 도입했습니다. MIPS SIMD ASE 및 MIPSR6 아키텍처는 FR = 1을 사용해야 전환이 필요합니다. 새로운 o32 ABI 확장을 사용하면 원래 o32 ABI에서 업데이트 된 o32 FP64 ABI로 시간이 지남에 따라 마이그레이션 할 수 있습니다. 이를 달성하기 위해 동적 링커는 이제로드 된 객체의 ABI를 추적하고 새 객체가 호환되는지 확인합니다. 필요에 따라 모드 전환이 요청되며 지원할 수없는 개체는 거부됩니다. ABI 수표에는 o32, n32 및 n64에 대한 소프트 및 하드 플로트 ABI가 모두 포함됩니다.
댓글을 찾을 수 없습니다