0
我在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
或其他一些可以強制錯誤的技巧?我無法在手冊頁中找到任何相關內容。
我的備用解決方案是解析生成的可執行文件(例如使用objdump -x
),並且如果.custom
部分將其轉換爲最終可執行文件,則會失敗並顯示錯誤消息。
感謝您的見解。我確實需要一個錯誤,以便用戶知道他所要求的功能在此版本中不存在。 – pts