2014-02-24 3 views
1

나는 linaro gcc로 컴파일 된 독립 실행 형 elf 이미지를 가지고 있습니다. 그 이미지에서 마지막 주소를 찾아야합니다. objcopy -O ihex으로이 작업을 시도하고 ihex 출력을 구문 분석하기위한 작은 스크립트를 작성했지만 주소가 2G 주소 공간을 초과하면 실패합니다. 그럼 - 이미지의 마지막 주소가 무엇인지 어떻게 알 수 있습니까?ARM 이미지의 마지막 주소를 얻는 방법은 무엇입니까?

이것은 ARM V8 64 비트 아키텍처 칩용입니다.

objcopy를 사용할 수 있습니까? 아니면 linaro 툴체인에서 다른 것을 사용해야합니까? 아마 objdump?

도움이 될 것입니다!

+0

@artlessnoise - ok, readelf 출력을 구문 분석하여 처리했습니다. 감사. – WeaselFox

+0

@artlessnoise - 대답을 게시하십시오, 그것을 받아들입니다. – WeaselFox

답변

1

objdumpreadelf 모두 섹션 요약을 표시 할 수 있습니다. objdump -hreadelf -S이 적절한 옵션 인 것 같습니다. 예를 들어

,

$ objdump -h boot_flag 

boot_flag:  file format elf32-littlearm 

Sections: 
Idx Name   Size  VMA  LMA  File off Algn 
    0 .note.gnu.build-id 00000024 000080b4 000080b4 000000b4 2**2 
        CONTENTS, ALLOC, LOAD, READONLY, DATA 
    1 .text   00000310 000080d8 000080d8 000000d8 2**2 
        CONTENTS, ALLOC, LOAD, READONLY, CODE 
    2 .rodata  00000030 000083e8 000083e8 000003e8 2**2 
        CONTENTS, ALLOC, LOAD, READONLY, DATA 
    3 .data   00000004 00010418 00010418 00000418 2**2 
        CONTENTS, ALLOC, LOAD, DATA 
    4 .comment  0000003a 00000000 00000000 0000041c 2**0 
        CONTENTS, READONLY 
    5 .ARM.attributes 0000002d 00000000 00000000 00000456 2**0 
        CONTENTS, READONLY 

그리고 ...

$ readelf -S boot_flag 
There are 8 section headers, starting at offset 0x4d0: 

Section Headers: 
    [Nr] Name    Type   Addr  Off Size ES Flg Lk Inf Al 
    [ 0]     NULL   00000000 000000 000000 00  0 0 0 
    [ 1] .note.gnu.build-i NOTE   000080b4 0000b4 000024 00 A 0 0 4 
    [ 2] .text    PROGBITS  000080d8 0000d8 000310 00 AX 0 0 4 
    [ 3] .rodata   PROGBITS  000083e8 0003e8 000030 01 AMS 0 0 4 
    [ 4] .data    PROGBITS  00010418 000418 000004 00 WA 0 0 4 
    [ 5] .comment   PROGBITS  00000000 00041c 00003a 01 MS 0 0 1 
    [ 6] .ARM.attributes ARM_ATTRIBUTES 00000000 000456 00002d 00  0 0 1 
    [ 7] .shstrtab   STRTAB   00000000 000483 00004b 00  0 0 1 
Key to Flags: 
    W (write), A (alloc), X (execute), M (merge), S (strings) 
    I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) 
    O (extra OS processing required) o (OS specific), p (processor specific) 

들보기 ARM926 정적 바이너리에 대한 몇 가지 섹션 정보를 제공합니다. 관심 분야는 VMA, LMA, SizeAddr 필드입니다. 그들을 추출하고 정렬 한 다음 Size을 최종 값에 추가하십시오.

관련 문제