【问题标题】:How to make arbitrary output section loadable by GDB?如何使 GDB 可以加载任意输出部分?
【发布时间】:2015-09-11 06:51:15
【问题描述】:

我正在尝试使用 GDB 在具有 ARM7TDMI 内核的 LH75401 设备上调试程序。当我调用“load”命令时,GDB 只加载“.text”输出部分。如何使它不仅加载“.text”部分,还加载其他部分?我尝试在链接器脚本中使用 PHDRS 命令使某些部分可加载,但没有帮助。这是我的链接器脚本:

USR_STACK_SIZE = 0x100;
IRQ_STACK_SIZE = 0x100;


MEMORY
{
   EXTROM(wx) : ORIGIN = 0x44000000, LENGTH = 0x100000
   EXTRAM(wx) : ORIGIN = 0x48000000, LENGTH = 0x100000
   INTRAM(wx) : ORIGIN = 0x60000000, LENGTH = 0x4000
   TCMRAM(wx) : ORIGIN = 0x80000000, LENGTH = 0x4000
}


PHDRS
{
    EXTROM PT_LOAD;
    EXTRAM PT_LOAD;
    INTRAM PT_LOAD;
    TCMRAM PT_LOAD;
}


ENTRY(rst_handler)


SECTIONS
{
    .vect :
    {
        *(.vect)
    }
    > TCMRAM AT
    > TCMRAM
    : TCMRAM


    .text :
    {
        *(.text)
        *(.rodata)
    }
    > EXTROM AT
    > EXTROM
    : EXTROM


    .data :
    {
        *(.data)
    }
    > EXTRAM AT
    > EXTRAM
    : EXTRAM


    .bss :
    {
        *(.bss)
    }
    > EXTRAM AT
    > EXTRAM
    : EXTRAM


    .usr_stack :
    {
        . += USR_STACK_SIZE;
        .  = ALIGN(8);
    }
    > EXTRAM AT
    > EXTRAM
    : EXTRAM


    .irq_stack :
    {
        . += IRQ_STACK_SIZE;
        .  = ALIGN(8);
    }
    > EXTRAM AT
    > EXTRAM
    : EXTRAM
}

【问题讨论】:

  • 能否为您尝试加载的二进制文件添加readelf -WlS 的输出。
  • @Andrew 幸运的是我解决了这个问题。在我的情况下,有必要为源文件中的部分添加一个特殊属性。

标签: gdb embedded ld


【解决方案1】:

幸运的是我解决了这个问题。有必要在源文件中添加一个特殊的节属性。该属性是“a”,表示该部分是可分配的。就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多