모든 기능을 자체 섹션으로 이동하려면 gcc 플래그 -ffunction-sections을 사용하여 C 파일을 컴파일합니다. 어셈블러는 오류를 던지고있다 : 라인 2395에서디버그 기호로 컴파일 플래그 -ffunction-sections 사용
job_queue.s:2395: Error: operation combines symbols in different segments
컴파일러의 어셈블리 출력이 여기에 주어집니다 :
.section .debug_ranges,info
.Ldebug_ranges0:
.4byte .LBB7-.Ltext0
심볼 LBB7가 "는 .text라는 기능 (및 섹션)에 있습니다. add_event_handler " 기호 Ltext0이라는 이름의 (그렇지 않으면 빈) 섹션에"는 .text는 "
GCC의 --version을 제공합니다
pic30-elf-gcc.exe (GCC) 4.0.3 (dsPIC30, Microchip v3_30) (B) Build date: Jun 29 2011
컴파일러 플래그 -g0 (디버그 정보를 끄기 위해)을 사용하면 모든 것이 완벽하게 컴파일되고 실행됩니다.
내 질문 : 이 GCC 출력이 분명히 잘못 되었습니까? GCC는 .text 섹션 대신 .add_even_handler 섹션의 시작 부분에서 LBB7의 오프셋을 계산 했어야합니다.
Google에서 동일한 어려움을 겪고있는 사람을 찾을 수 없어서 내가 오해하고 있다고 생각합니다.
새로운 gcc로 시도 했습니까? 여기서는 괜찮은 것처럼 보이지만, x86 및 gcc 4.4.5 ... 어떤 것이 더 중요한지는 알 수 없습니다.) – Jester