linker-scripts

    0熱度

    1回答

    我試圖在內核的程序集文件中使用linux中的ld命令。要使用grub啓動它,它需要在1Mb地址之後。所以我的鏈接腳本將文本發送到地址0x00100000。 下面是我使用的鏈接腳本: SECTIONS { .text 0x00100000 :{ *(.text) } textEnd = .; .data :{ *(.data

    4熱度

    1回答

    我想在x86_64上使用鏈接描述文件來更改堆棧的起始位置。 我能夠用這個將我的可執行文件的起始地址: PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x200000)); . = SEGMENT_START("text-segment", 0x200000) + SIZEOF_HEADERS; 我改變了我的全局是這樣的:

    2熱度

    1回答

    這是我的問題。 我有這個鏈接腳本鏈接標準arm7nommu-uClinux內核: OUTPUT_ARCH(arm) ENTRY(stext) SECTIONS { . = 0x0; .vectors : { *(.resetvector) } . = 0x8000; .init : { /* Init code and data */ _stext =

    1熱度

    1回答

    我正在寫一個512字節的可引導程序,我必須將0xAA55粘貼到512字節程序映像的最後2個字節中。所以我已經做到了。現在我的鏈接器腳本應該非常簡單。我只是好奇這個語法是什麼意思 .foo : { *(.*) } 我給了它作爲一個例子。沒有.foo段,而在這之前,我改變了程序計數器 . = 0x1000 //To account for the elf header which I will s

    1熱度

    2回答

    我想知道在鏈接腳本中定義符號有什麼用處。使用鏈接腳本來安排不同的部分是可以理解的,但在腳本中定義新的符號對我來說並不清楚。我正在閱讀一篇使用鏈接器腳本的文章,該腳本定義了兩個新的符號,但這些符號在鏈接器腳本或文章中的其他地方未被引用。一個例子是使用在bss部分SBSS和EBSS符號,如下所示: ENTRY (loader) SECTIONS { . = 0x00100000; .te

    1熱度

    1回答

    鏈接庫時,-rpath用於將動態庫的地址傳遞給ld。我的問題是如果我在LD_LIBRARY_PATH中設置地址,我的鏈接 進程中是否還需要-rpath標誌?

    2熱度

    1回答

    我在想我知道在鏈接描述文件中工作的位置計數器,但我想不是這樣。我只是做了一個簡單的測試來確認我的理解。我寫了一個簡單的c程序,沒有任何庫調用,並用gcc編譯它。然後,我使用鏈接器腳本將鏈接器腳本與位置計數器在開始時設置爲值。 這裏是程序 int a = 6; int main(){ return 0; } 以下是鏈接腳本 ENTRY(main) addr = 0x8048000;

    1熱度

    1回答

    我有以下線在我的鏈接腳本 JumpTable ABSOLUTE(0x2000000C): AT(eROData) { JumpTableStart = .; *(.JumpSection); . = ALIGN(4); JumpTableEnd = .; } > SRAM eROData是從閃存中的地址,假定值0x1000xxxx 鏈接之後,我請注意

    -1熱度

    1回答

    我想鏈接GDB參考手冊中的Overlay示例。該示例針對的是d10v處理器(不熟悉它),但我想通過編譯x86_64或i386體系結構的示例來演示調試器與覆蓋層一起工作。 我嘗試將以下部分導入鏈接器腳本。我首先使用從StackOverflow獲悉的技術提取鏈接器腳本。 $> gcc a.c -Wl,-verbose 我修改此鏈接器腳本作爲這樣,加入.ovly0 {0-3} & .data0 {0-3

    0熱度

    2回答

    OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_ram_entry) SECTIONS { . = 0xA0008000; . = ALIGN(4); .text : { *(.text) } . = AL