실행중인 프로그램의 섹션 (특히 Linux 커널 2.6.34.8)에서 .eh_frame
섹션의 내용에 액세스하려고합니다. .eh_frame
에는 예외 처리에 사용되는 유용한 데이터가 들어 있으며 커널 코드에서 내부적으로 사용하고 싶습니다. 이 섹션은 이미 gcc
(readelf -a vmlinux.o
에 .eh_frame
이 포함되어 있음)으로 작성 중이므로 문제는 코드에서 읽는 것입니다. 엘프 형식의 워드 프로세서가 코드 실행 중에 .eh_frame
에 액세스 할 수 있다고 확신합니다.실행 중 .eh_frame 데이터 액세스
은 내가 .eh_frame
데이터를로드 실제 코드를 .eh_frame
사용의 검색에 glibc
의 소스로 보면서 sysdeps/generic/sysdep.h
에서 가장 CFA 지침 매크로를 찾았지만 적이 없다.
파일에서 데이터를로드하기 위해 커널을로드하는 프로세스를 수정해야하거나 매크로/어셈블러 이름으로 어딘가에 저장되는 .eh_frame
info/.eh_frame_hdr
섹션 포인터 (C 변수로 추출 될 수 있도록))?
감사합니다. 그러나 예외 처리 정보로 컴파일 된 커널이 런타임에 액세스 할 수 있습니까 ('.eh_frame' 데이터)? 그렇다면 어떻게? –
내가 말했듯이, 그 정보는'vmlinux.o'에있을 수 있지만 실제 커널 이미지에는 없습니다. –
그래서 필요한 효과를 얻으려면 일반 커널 빌드 프로세스에 주입해야하고, 나중에 생성 된 코드에서 정의 된 심볼과 함께 모든 .eh_frame 데이터를 수집해야합니다. 커널 이미지에 주입된다. 그러면 심볼은 런타임 중에 수집 된 데이터에 액세스하는 데 사용됩니다. –