2014-10-17 6 views
1

일부 바이너리, 프로그램, 동적 및 정적 라이브러리를 생성하는 데 사용되는 ABI를 식별해야합니다.ELF 또는 바이너리 파일의 특정 ABI에 대한 서명이 있습니까?

속성이나 태그 또는 문자열이 있는지 알고 싶습니다. 외부 도구를 사용하여 어떤 ABI가 이진 개체를 만드는 데 사용되었는지 확인할 수 있습니다. 내 객체는 대부분 ELF for x86 and ARM이고, DWARF 객체와 마찬가지로 디버깅 목적으로 ABI를 포함합니다.

EDIT : 일반적으로 파일의 파일 형식을 감지하는 데 사용되는 파일 시작 부분의 마술 바이트와 비슷합니다.

답변

3

ELF 파일에는 몇 가지 지표가있을 수 있습니다.

  1. 표시하는 데 사용 ELF header ident
  2. .note.ABI-tagEI_OSABI 필드 예컨대 Linux vs. FreeBSD binaries.
  3. FreeBSDe_indent 필드의 예약 된 부분 (8 번째 바이트부터 시작)에서 "브랜딩"서명을 사용합니다. ARM 파일의 경우
  4. , 당신은 추가 EABI 버전 /를 e_flags field에서 변형 정보를 가지고 있고, 오브젝트 파일도 .ARM.attributes 섹션을 가질 수
  5. 컴파일러 이름/버전이 포함되어 있지만,이 정보 제공의 수 .comment 섹션 - 그것을 사용하지 않는 OS에 의해 ABI를 식별 할 수 있으며 일반적으로 특정 ABI 정보는 언급하지 않습니다.
  6. .note 섹션에는 사용중인 ABI를 가리킬 수있는 추가 정보가 포함될 수 있습니다. 당신이 (예를 들어, -A.ARM.attributes 섹션을 표시) 일부 스위치를 추가해야 할 수도 있지만
  7. 대부분의 경우

, readelf는 필요한 정보를 표시합니다. .note.ABI-tag 섹션을 구문 분석 할 것이 없다고 생각하므로 수동으로해야 할 수도 있습니다.

자세한 내용은 SysV ABI 및 ARM EABI 문서를 참조하십시오.

관련 문제