Linux에서 GCC와 GNU Binutils를 사용하여 i386 Linux 용 코드를 컴파일하고 링크합니다. 나는 .custom
라는 이름의 섹션을 허용하고 싶습니다, 그래서 컴파일 오류 또는 링크 오류와 함께 실패 할 다음 싶습니다특정 섹션에서 링커 오류를 강제하는 방법
__attribute__((section(".custom"))) int foo() { return 42; }
int main(void) { return 0; }
하지만,이 사람은 평소와 같이 성공한다 :
__attribute__((section(".other"))) int foo() { return 42; }
int main(void) { return 0; }
__attribute__((section(".custom")))
코드는 내 제어 할 수 없으므로 (.c
파일의 #error
으로 바꿀 수는 없지만) gcc
및 ld
명령 줄 플래그 (및 빌드 프로세스)는 내 제어하에 있습니다.
gcc
또는 ld
에 대한 명령 줄 플래그 또는 오류를 유발할 수있는 다른 트릭이 있습니까? 맨 페이지와 관련된 내용을 찾을 수 없습니다.
내 대체 솔루션은 생성 된 실행 파일 (예 : objdump -x
사용)을 구문 분석하고 .custom
섹션에서 최종 실행 파일로 만들면 오류 메시지와 함께 실패합니다.
통찰력에 감사드립니다. 사용자가 그가 요구하는 기능이이 빌드에 존재하지 않는다는 사실을 알게되도록 오류가 실제로 필요합니다. – pts