커널에 vdso = 0을 전달하면이 기능이 꺼지고 glibc의 동적 링커가 커널에서 vdso 기능을 자동으로 감지하여 사용할 수 있다는 것을 알고 있습니다.glibc에서 vdso를 해제 할 수 있습니까?
여기에서 나는이 문제를 만났다. RHEL 5.6 상자 (커널 2.6.18-238.el5)는 필자의 기관에서 보통 사용자 만 액세스 할 수 있으며 아마도 RHEL bug 673616을 앓고있을 것입니다. 내가 리눅스 헤더 - 3.9 툴체인을 컴파일으로
는/GCC-4.7.2/glibc에-2.17 /의 binutils-2.23 그 위에는 GCC 부트 스트랩은
Program received signal SIGSEGV, Segmentation fault.
0x00002aaaaaaca6eb in ??()
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x00002aaaaaaabba0 0x00002aaaaaac3249 Yes (*) /home/benda/gnto/lib64/ld-linux-x86-64.so.2
0x00002aaaaacd29b0 0x00002aaaaace2480 Yes (*) /home/benda/gnto/usr/lib/libmpc.so.3
0x00002aaaaaef2cd0 0x00002aaaaaf36c08 Yes (*) /home/benda/gnto/usr/lib/libmpfr.so.4
0x00002aaaab14f280 0x00002aaaab19b658 Yes (*) /home/benda/gnto/usr/lib/libgmp.so.10
0x00002aaaab3b3060 0x00002aaaab3b3b50 Yes (*) /home/benda/gnto/lib/libdl.so.2
0x00002aaaab5b87b0 0x00002aaaab5c4bb0 Yes (*) /home/benda/gnto/usr/lib/libz.so.1
0x00002aaaab7d0e70 0x00002aaaab80f62c Yes (*) /home/benda/gnto/lib/libm.so.6
0x00002aaaaba70d40 0x00002aaaabb81aec Yes (*) /home/benda/gnto/lib/libc.so.6
(*): Shared library is missing debugging information.
를 실행할 수 cannnot 스테이지 2에서 CC1 실패
및 간단한 프로그램 같은 방법으로
#include <sys/time.h>
#include <stdio.h>
int main() {
struct timeval tim;
gettimeofday(&tim, NULL);
return 0;
}
GET 세그먼트 결함 스테이지 1에서의 glibc-2.17와 xgcc에 대해 컴파일합니다.
일반 사용자로 gcc-4.7.2/glibc-2.17/binutils-2.23을 사용하여 다른 실행중인 RHEL 5.5 (커널 2.6.18-194.26.1.el5)에서 cc1과 테스트 프로그램을 실행할 수 있습니다.
단순히 상자를 최신 RHEL 버전으로 업그레이드 할 수 없으며 sysctl 또는 proc를 통해 VDSO를 해제 할 수도 없습니다. 질문은 glibc를 컴파일하여 무조건 VDSO를 끌 수있는 방법이 있습니까?
패치 파일을 사용하는 방법을 묻습니다. – ProWi
물론, glibc를 컴파일하기 전에 "patch"로 패치를 적용하십시오. http://jungels.net/articles/diff-patch-ten-minutes.html – heroxbd