2013-04-02 1 views
0

동료는 내가 LD의 다음 버전을 사용하여 오늘이 이상한 오류로 실행 :GNU ld 링커 오류 "unknown relocation type 30"은 무엇을 의미합니까?

$ mb-ld --version 
GNU ld (GNU Binutils) 2.21.53.20110813 
Copyright 2011 Free Software Foundation, Inc. 

이 자일링스 ISE 14.4 임베디드 개발 키트의 일부로 배포 마이크로 블레이즈 아키텍처를 지원하는 GNU 툴체인의 일부입니다 (EDK) 도구. 제 빌드 플랫폼은 x86_64 용 Red Hat Enterprise Linux 서버 릴리스 5.9입니다.

더 일반적으로, 다른 질문이 마음에 와서 :

  1. 모든 GNU ld에 재배치 유형의 마스터 목록이 있습니까?
  2. 그렇지 않은 경우 특정 버전의 LD를 검사하여 재배치 유형의 의미를 파악할 수 있습니까?

답변

2
1. Is there a master list of all GNU ld relocation types? 

가 아니,이

2. If not, then is there a way to interrogate my specific version of LD to determine what a relocation type means? 

일종의 하드웨어 아키텍처를 기반으로, 당신은 노트북의 하드웨어에 대한 유형을 찾을 수 있습니다. Microblaze는 부드러운 CPU이지만 PowerPC의 아키텍처를 모방합니다. "파워 재배치 유형"빠른 구글 후 나는 우리가

Table 4-8 Relocation Types 
Name      Value Field  Calculation 
R_PPC_NONE     0  none  none 
R_PPC_ADDR32    1  word32  S + A 
R_PPC_ADDR24    2  low24*  (S + A) >> 2 
R_PPC_ADDR16    3  half16* S + A 
R_PPC_ADDR16_LO   4  half16  #lo(S + A) 
R_PPC_ADDR16_HI   5  half16  #hi(S + A) 
R_PPC_ADDR16_HA   6  half16  #ha(S + A) 
R_PPC_ADDR14    7  low14*  (S + A) >> 2 
R_PPC_ADDR14_BRTAKEN  8  low14*  (S + A) >> 2 
R_PPC_ADDR14_BRNTAKEN  9  low14*  (S + A) >> 2 
R_PPC_REL24    10 low24*  (S + A - P) >> 2 
R_PPC_REL14    11 low14*  (S + A - P) >> 2 
R_PPC_REL14_BRTAKEN  12 low14*  (S + A - P) >> 2 
R_PPC_REL14_BRNTAKEN  13 low14*  (S + A - P) >> 2 
R_PPC_GOT16    14 half16* G + A 
R_PPC_GOT16_LO    15 half16  #lo(G + A) 
R_PPC_GOT16_HI    16 half16  #hi(G + A) 
R_PPC_GOT16_HA    17 half16  #ha(G + A) 
R_PPC_PLTREL24    18 low24*  (L + A - P) >> 2 
R_PPC_COPY     19 none  none 
R_PPC_GLOB_DAT    20 word32  S + A 
R_PPC_JMP_SLOT    21 none  see below 
R_PPC_RELATIVE    22 word32  B + A 
R_PPC_LOCAL24PC   23 low24*  see below 
R_PPC_UADDR32    24 word32  S + A 
R_PPC_UADDR16    25 half16* S + A 
R_PPC_REL32    26 word32  S + A - P 
R_PPC_PLT32    27 word32  L + A 

내 생각이 어쩌면 R_MB와 마이크로 블레이즈 (대신 R_PPC에 동일하게 나타날 것이라고는 다음과 같은 이전의 유형입니다했다 http://math-atlas.sourceforge.net/devel/assembly/elfspec_ppc.pdf (표 4-8) 발견 이름으로). 물론 어딘가에 정확히 무엇이 진행되고 있는지 알 수있는 공식 문서가 있어야합니다. 나는 그 문서를 찾지 못했습니다.

+1

자일링스 툴, 자일링스 웹 사이트 또는 일부 일반 인터넷 검색에서 MicroBlaze 또는 PowerPC와 관련된 재배치 유형 30 정의를 찾을 수 없었습니다. 그러나이 답변은이 정보가 일반적으로 (아키텍처 특정 보충 자료 또는 일반 헤더 파일에) 보관되는 위치를 제안하고이 위치 유형에 대한 몇 가지 추가 오류 보고서로 안내합니다. – deaks

-1

-r 옵션과 함께 objdump.exe를 사용하여 출력의 각 심볼에 대한 재배치 유형을 찾습니다. 유형이 문서화 된 곳을 모르겠습니다.

+0

서식을 개선하고 답변을 백업 할 수있는 링크를 제공 할 수 있습니다. – mathielo