【问题标题】:when make elf, link is fail. post R_AARCH64_ADR_PREL_PG_HI21 error制作精灵时,链接失败。发布 R_AARCH64_ADR_PREL_PG_HI21 错误
【发布时间】:2022-06-14 15:53:58
【问题描述】:

在我的 asm 代码中,我使用 _bss_begin

adr x0, _bss_begin
adr x1, _bss_end

在link.ld中定义

SECTIONS
{
    . = 0xffff000000000000;
    .text.boot : { *(.text.boot) }
    . = ALIGN(0x00001000);
    user_begin = .;
    .text.user : { build/user* (.text) }
    .rodata.user : { build/user* (.rodata) }
    .data.user : { build/user* (.data) }
    .bss.user : { build/user* (.bss) }
    user_end = .;
    .text :  { *(.text) }
    .rodata : { *(.rodata) }
    .data : { *(.data) }
    . = ALIGN(0x8);
    _bss_begin = .;
    .bss : { *(.bss*) } 
    _bss_end = .;
    . = ALIGN(0x00001000);
    pg_dir = .;
    .data.pgd : { . += (3 * (1 << 12)); }
}

但是在构建时,它会发布错误消息

relocation truncated to fit: R_AARCH64_ADR_PREL_LO21 against symbol `_bss_end' defined in .bss section

任何机构都可以获得有关此错误消息的建议?

【问题讨论】:

    标签: gcc linker llvm ld elf


    【解决方案1】:

    我已经解决了这个问题,我使用 cmd 文件检查 .bss 部分大小,最终发现问题

    mm.c 中哪个数组太大了。 修改后链接通过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2016-01-19
      相关资源
      最近更新 更多