8.2. fromelf 명령 구문

이 단원에서는 fromelf 명령의 구문과 옵션에 대해 설명합니다.

fromelf [--base n] [[--diag_style  arm|ide|gnu]] [[--diag_suppress taglist]] [--expandarrays] [ --fieldoffsets [[--select select_options ]]] [--help] [--no_linkview] [memory_config] [--no_comment_section] [--no_debug] [--debugonly] [--no_symbolversions] [[--text ] |  code_output_format] [--vsn] [--output output_file] {input_file}

다음은 각 요소에 대한 설명입니다.

--base n

Motorola S-record 및 Intel Hex 파일 형식의 기본 출력 주소를 지정합니다. 이 옵션은 --m32, --m32combined, --i32 또는 --i32combined가 출력 형식으로 지정되어 있을 경우에만 사용 가능합니다.

다음 중 하나로 기본 주소를 지정할 수 있습니다.

  • --base 0과 같은 10진수 값

  • --base 0x8000과 같은 16진수 값

출력 파일에 인코딩된 모든 주소는 기본 주소 n에서 시작합니다. --base 옵션을 지정하지 않을 경우, 로드 영역 주소에서 기본 주소를 가져옵니다.

Note

여러 개의 로드 영역이 있을 경우, 각 출력 파일에 --base 값이 사용됩니다. 즉, 이 값은 모든 로드 영역 주소에 우선합니다.

--diag_style arm|ide|gnu

경고 및 오류 메시지 형식을 변경합니다. --diag_style arm이 기본값이고 --diag_style gnugcc에서 보고된 형식과 일치하며 --diag_style ide는 Microsoft Visual Studio에서 보고된 형식과 일치합니다.

--diag_suppress taglist

지정된 태그가 있는 모든 진단 메시지를 표시하지 않습니다.

이 옵션에는 표시하지 않을 메시지의 번호를 쉼표로 구분하여 나열한 목록이 필요합니다(태그는 2개 이상 지정 가능). 예를 들어, 번호가 1293187인 경고 메시지를 표시하지 않으려면 다음 명령을 사용하십시오.

fromelf --diag_suppress 1293,187 ...

fromelf 접두사 Q는 메시지를 표시하지 않을 때 사용됩니다. 예를 들면 다음과 같습니다.

fromelf --diag_suppress Q1293,Q187 ...

접두사를 사용하는 것은 선택 사항입니다. 그러나 접두사 문자가 포함될 경우 fromelf 식별 문자와 일치해야 합니다. 다른 접두사가 있으면 메시지 번호는 무시됩니다.

--fieldoffsets

어셈블리 언어 EQU 지시문 목록을 stdout에 생성합니다. 이 지시문은 C++ 클래스 또는 C 구조체 필드 이름을 해당 클래스 또는 구조체 기준의 오프셋과 같게 합니다. 입력 ELF 파일은 재배치 가능 오브젝트 또는 이미지일 수 있습니다.

-o를 사용하여 출력 내용을 파일로 리디렉션할 수 있습니다. armasm에서 INCLUDE 명령을 사용하면 생성된 파일을 로드하고 어셈블리 언어에서 C++ 클래스 및 C 구조체 구성원에 이름별로 액세스할 수 있습니다. armasm에 대한 자세한 내용은 RealView Compilation Tools 버전 3.0 핵심 설명서를 참조하십시오.

Note

이 옵션의 특징은 다음과 같습니다.

  • 소스 파일에 디버그 정보가 없을 경우 사용할 수 없습니다.

  • code_output_format과 함께 사용할 수 없습니다.

이 옵션은 모든 구조체 정보를 출력합니다. 구조체의 하위 세트를 출력하려면, --select select_options를 사용하십시오.

armasm에 입력할 수 있는 파일이 필요하지 않을 경우, --text -a 옵션을 사용하여 표시 주소를 좀 더 읽기 쉬운 형식으로 지정하십시오. 재배치 가능 오브젝트에서는 이 주소를 알 수 없으므로 -a 옵션은 이미지의 구조체 및 정적 데이터에 대한 주소 정보만 출력합니다.

Note

fromelf --fieldoffsets 단계가 필요할 경우, --no_debug를 사용하지 마십시오. 이미지가 디버그 정보 없이 생성되면 fromelf는 다음 작업을 수행할 수 없습니다.

  • 이미지를 다른 파일 형식으로 변환

  • 의미 있는 디스어셈블리 목록 생성

--select select_options

--select select_options--fieldoffsets 또는 --text -a 옵션과 함께 사용하여 출력하거나 표시할 옵션 목록의 패턴과 일치하는 해당 필드만 선택합니다.

특수 문자를 사용하여 여러 개의 필드를 선택하십시오.

  • a*,b*,c*에서와 같이 쉼표와 함께 목록의 옵션을 결합하십시오.

  • 어떤 이름을 일치시킬 때에도 와일드카드 문자 *를 사용할 수 있습니다.

  • 와일드카드 문자 ?는 단일 문자와 일치시키는데 사용될 수 있습니다.

  • select_options 문자열에 + 접두사를 지정하여 포함할 필드를 지정하십시오. 이 옵션이 기본 옵션입니다.

  • select_options 문자열에 ~ 접두사를 지정하여 제외할 필드를 지정하십시오.

선 솔라리스 또는 레드 햇 리눅스에서 특수 문자를 사용할 경우 옵션을 따옴표로 묶으면 셀에서 선택이 확장되지 않도록 할 수 있습니다.

--help

도움말 및 사용 정보를 표시합니다. 이 옵션이 지정되어 있을 경우 다른 명령 행 옵션은 무시됩니다. 매개변수 없이 fromelf를 호출하면 동일한 도움말 정보가 생성됩니다.

memory_config

여러 개의 메모리 뱅크에 대해 여러 개의 파일을 출력합니다.

memory_config의 형식은 --widthxbanks입니다. 다음은 각 요소에 대한 설명입니다.

width

타겟 메모리 시스템의 메모리 폭입니다(8비트, 16비트, 32비트, 또는 64비트).

banks

타겟 메모리 시스템의 메모리 뱅크 수를 지정합니다.

유효한 구성은 다음과 같습니다.

--8x1
--8x2
--8x4
--16x1
--16x2
--32x1
--32x2
--64x1

fromelf는 2개 이상의 구성이 지정되어 있을 경우, 마지막으로 지정된 구성을 사용합니다.

이미지에 하나의 로드 영역이 있을 경우, fromelf는 다음과 같은 명명 규칙을 사용하여 banks 파일을 생성합니다.

  • 메모리 뱅크가 한 개 있을 경우(banks =1), 출력 파일의 이름은 -o output_file 인수에 따라 명명됩니다.

  • 여러 개의 메모리 뱅크가 있을 경우(banks >1), fromelfoutput_file0으로 시작해서 output_file banks-1로 끝나는 banks 개의 파일을 생성합니다. 예를 들면 다음과 같습니다.

    fromelf --vhx --8x2 test.axf -o test
    

    test0test1이라는 두 개의 파일을 생성합니다.

이미지에 여러 개의 로드 영역이 있을 경우, fromelfoutput_file이라는 디렉토리를 생성하고 load region0으로 명명된 각 로드 영역에 대해 뱅크 파일을 load region banks-1로 생성합니다.

width에 따라 지정된 메모리 폭은 이미지로부터 읽고 파일에 기록한 정보 청크의 크기를 제어합니다. 읽은 첫 번째 청크는 첫 번째 파일(output_file0)로 할당되고, 다음 청크는 다음 파일로 할당됩니다. 청크가 마지막 파일에 할당된 후에는 할당이 첫 번째 파일에서 다시 시작됩니다.(즉, 할당은 파일의 수를 기준으로 합니다.) 예를 들면 다음과 같습니다.

--8x4memory_config의 경우

byte0 -> file0
byte1 -> file1
byte2 -> file2 
byte3 -> file3 
byte4 -> file0 
...

--16x2memory_config의 경우

halfword0 -> file0 
halfword1 -> file1 
halfword3 -> file0 
...
--no_comment_section

--elf와 함께 사용하여 ELF 출력 파일에서 .comment 섹션을 제거함으로써 크기를 줄일 수 있습니다. 이 옵션은 ELF를 제외한 출력 형식에는 효과가 없습니다. 타겟에 동적으로 로드되고 디버깅이 필요 없는 ELF 이미지의 경우, --no_debug를 추가로 사용하면 ELF 이미지의 크기를 줄일 수 있습니다.

--no_debug

출력 파일에 디버그 정보를 배치하지 마십시오. 이 옵션은 이진 이미지의 경우 기본값입니다. --no_debug가 지정되어 있을 경우, 모든 출력 형식에 영향을 줍니다. --text -g 옵션을 무시합니다.

Note

--elf가 명령 행에 지정되어 있지 않을 경우, 이 옵션은 예상하지 못한 결과를 가져올 수 있습니다. 지정된 출력 형식이 없으므로 다음 명령은 텍스트 파일을 생성합니다.

fromelf --no_debug image -o image_nodb.axf

ELF 형식 출력을 보려면 다음 옵션을 사용하십시오.

fromelf --no_debug --elf image.axf -o image_ndb.axf
--debugonly

--elf와 함께 사용하면 코드 또는 데이터 섹션의 내용을 제거합니다. 이 옵션을 사용하면 출력 파일에 디버그에 필요한 정보, 예를 들어 디버그 섹션, 심볼 테이블 및 문자열 테이블만 포함됩니다.

섹션 헤더는 심볼에 대한 타겟 역할을 하는 데 필요하므로 유지됩니다.

이 옵션은 ELF 출력 파일에만 영향을 줍니다.

--no_symbolversions

심볼 버전 테이블의 디코딩을 해제합니다. 자세한 내용은 심볼 버전 관리Base Platform ABI for the ARM Architecture[BPABI]를 참조하십시오.

--no_linkview

ELF 이미지에서 섹션 수준 뷰(링크 타임 뷰)를 폐기하고 세그먼트 수준 뷰(로드 타임 뷰)만 유지합니다. 링크 뷰 섹션 수준을 폐기하면 다음 항목이 제거됩니다.

  • 섹션 헤더 테이블

  • 섹션 헤더 문자열 테이블

  • 문자열 테이블

  • 심볼 테이블

  • 모든 디버그 섹션

출력 파일에 남아있는 것은 프로그램 헤더 테이블과 프로그램 세그먼트 뿐입니다. ELF 사양에 따르면 이 항목들만이 프로그램 로더에서 ELF 파일 안에 있을 것으로 기대할 수 있는 항목입니다.

Note

--elf가 명령 행에 지정되지 않은 경우 이 옵션은 예상하지 못한 결과가 발생할 수 있습니다. ELF 형식으로 출력하려면 다음 옵션을 사용하십시오.

fromelf --no_linkview --elf image.axf -o image_nlk.axf
--expandarrays

구조체 내부 및 외부로 확장되는 배열을 포함하여 데이터 주소를 출력합니다.

이 옵션은 오직 --text -a와만 함께 사용할 수 있습니다.

--text

이미지 정보를 텍스트 형식으로 출력합니다. 이 옵션을 사용하여 ELF 이미지나 ELF 오브젝트 파일을 디코딩할 수 있습니다. 이것이 기본값입니다. 즉 코드 출력 형식이 지정되지 않은 경우에는 --text가 사용됩니다.

output_file-o 옵션과 함께 지정되지 않으면 정보는 stdout에 표시됩니다.

표시될 사항을 지정하려면 다음 옵션 중 한 가지 이상을 사용하십시오.

-a

전역 및 정적 데이터 주소를 출력합니다(구조체 및 공용체 내용에 대한 주소 포함). 이 옵션은 디버그 정보가 있는 파일에서만 사용할 수 있습니다. 데이터 주소의 하위 세트를 출력하려면 --select 옵션을 사용하십시오.

구조체 내부 및 외부로 확장된 배열의 데이터 주소를 보려면 이 텍스트 범주와 함께 --expandarrays 옵션을 사용하십시오.

-c

코드를 디스어셈블합니다.

-d

데이터 섹션의 내용을 인쇄합니다.

-e

오브젝트에 대한 예외 테이블 정보를 디코딩합니다. 이미지를 디스어셈블할 경우 -c와 함께 사용하십시오.

-g

디버그 정보를 인쇄합니다.

-r

재배치 정보를 인쇄합니다.

-s

심볼 및 버전 관리 테이블을 인쇄합니다.

-t

문자열 테이블을 인쇄합니다.

-v

이미지의 세그먼트 및 섹션 헤더 각각에 대한 자세한 정보를 인쇄합니다.

-y

동적 세그먼트의 내용을 인쇄합니다.

-z

코드 및 데이터 크기를 인쇄합니다.

이들 옵션은 --text 출력 형식을 선택한 경우에만 인식됩니다.

code_output_format

이진 또는 ELF 출력 파일 옵션을 선택합니다. code_output_format은 다음 중 하나일 수 있습니다.

--bin

일반 이진 파일입니다. 이 옵션을 사용하여 얻은 출력을 memory_config 옵션을 사용하여 여러 개의 파일로 나눌 수 있습니다.

--m32

Motorola 32비트 형식(32비트 S-record)입니다. 이 옵션은 이미지의 각 로드 영역에 대해 한 개의 출력 파일을 생성합니다. --base 옵션을 사용하여 출력의 기본 주소를 지정할 수 있습니다.

--m32combined

Motorola 32비트 형식(32비트 S-record)입니다. 이 옵션은 여러 로드 영역을 포함하는 이미지에 대해 한 개의 출력 파일을 생성합니다. --base 옵션을 사용하여 출력의 기본 주소를 지정할 수 있습니다.

--i32

Intel Hex-32 형식입니다. 이 옵션은 이미지의 각 로드 영역에 대해 한 개의 출력 파일을 생성합니다. --base 옵션을 사용하여 출력의 기본 주소를 지정할 수 있습니다.

--i32combined

Intel Hex-32 형식입니다. 이 옵션은 여러 로드 영역을 포함하는 이미지에 대해 한 개의 출력 파일을 생성합니다. --base 옵션을 사용하여 출력의 기본 주소를 지정할 수 있습니다.

--vhx

바이트 중심(Verilog 메모리 모델) 16진수 형식입니다. 이 형식은 HDL(Hardware Description Language) 시뮬레이터의 메모리 모델에 로드하는 데 적합합니다. 이 옵션을 사용하여 얻은 출력을 memory_config 옵션을 사용하여 여러 개의 파일로 나눌 수 있습니다.

--elf

ELF 형식입니다(ELF로 재저장). 디버그 ELF 이미지를 디버그가 없는 ELF 이미지로 변환하는데 사용할 수 있습니다.

fromelf를 사용하여 여러 로드 영역이 포함된 ELF 이미지를 --bin, --m32, --i32, 또는 --vhx 옵션 중 하나를 사용하는 이진 형식으로 변환할 경우, fromelfoutput_file이라는 이름의 출력 디렉토리를 만들고 입력 이미지 내 각 로드 영역에 대해 한 개의 이진 출력 파일을 생성합니다. fromelfoutput_file 디렉토리에 출력 파일을 배치합니다.

여러 로드 영역을 포함하는 ELF 이미지를 --m32combined 또는 --i32combined 옵션을 사용하여 변환할 경우, fromelfoutput_file이라는 이름의 출력 디렉토리를 만들고 입력 이미지 내 모든 로드 영역에 대해 한 개의 이진 출력 파일을 생성한 다음, 출력 파일을 output_file 디렉토리에 배치합니다.

ELF 이미지에는 여러 로드 영역이 있습니다(예를 들어, ELF 이미지가 두 개 이상의 로드 영역을 정의하는 스캐터 로딩 설명 파일을 사용하여 빌드된 경우).

--vsn

fromelf 버전 정보를 표시합니다.

--output output_file

여러 개의 출력 파일이 생성될 경우 출력 파일의 이름 또는 출력 디렉토리의 이름을 지정합니다(자세한 내용은 text_output_formatcode_output_format 참조). --text 출력 옵션에서 출력 파일을 지정하는 것은 선택 사항이지만 다른 출력에서는 모두 필수입니다.

input_file

ELF 파일의 변환을 지정합니다.

fromelf는 ARM 실행 ELF 파일 및 ARM 오브젝트 ELF 파일(.o)만 허용합니다. input_file이 두 개 이상의 로드 영역을 가진 스캐터 로딩 이미지이고 출력 형식이 --bin, --m32, --i32, 또는 --vhx 중 하나일 경우, fromelf는 각 로드 영역에 대해 별도의 파일을 생성합니다.

input_file이 두 개 이상의 로드 영역을 가진 스캐터 로딩 이미지이고 출력 파일이 --m32combined 또는 --i32combined일 경우, fromelf는 모든 로드 영역을 포함하는 단일 파일을 생성합니다.

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0206GK
Non-Confidential