CLFS-for-LoongArch icon indicating copy to clipboard operation
CLFS-for-LoongArch copied to clipboard

ELF relocation 问题

Open sunshine-cdl opened this issue 2 years ago • 3 comments

孙老师您好,我在使用您2021/6的工具链编译其他软件时遇到了如下问题:

Dump relocate record:
stack top		relocation name		symbol
at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf4b8):
...
0x000000000000482c R_LARCH_SOP_POP_32_S_5_20	`<nameless>'

at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf4bc):
0x000000000006b528 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 4(0x4)
0x00000000047c0fd0 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482c4f8 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 2052(0x804)
0x00000000047c17d0 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482ccf8 R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SR	`<nameless>'
0x000000000000482c R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SL	`<nameless>'
0x000000000482c000 R_LARCH_SOP_SUB	`<nameless>'
0x00000000000004f8 R_LARCH_SOP_POP_32_S_10_12	`<nameless>'

at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf530):
0x000000000004b490 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 2048(0x800)
0x00000000047c1758 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482cc80 R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SR	`<nameless>'
0x000000000000482c R_LARCH_SOP_POP_32_S_5_20	`<nameless>'

at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf534):
0x000000000004b490 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 4(0x4)
0x00000000047c0f58 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482c480 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 2052(0x804)
0x00000000047c1758 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482cc80 R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SR	`<nameless>'
0x000000000000482c R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SL	`<nameless>'
0x000000000482c000 R_LARCH_SOP_SUB	`<nameless>'
0x0000000000000480 R_LARCH_SOP_POP_32_S_10_12	`<nameless>'

at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf544):
0x0000000000072ee8 R_LARCH_SOP_PUSH_PCREL	`.L12063'
0x0000000000000014 R_LARCH_SOP_POP_32_S_10_16_S2	`<nameless>'

at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf548):
0x000000000006b528 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 2048(0x800)
0x00000000047c1740 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482cc68 R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SR	`<nameless>'
0x000000000000482c R_LARCH_SOP_POP_32_S_5_20	`<nameless>'

at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf54c):
0x000000000006b528 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 4(0x4)
0x00000000047c0f40 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482c468 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 2052(0x804)
0x00000000047c1740 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482cc68 R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SR	`<nameless>'
0x000000000000482c R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SL	`<nameless>'
0x000000000482c000 R_LARCH_SOP_SUB	`<nameless>'
0x0000000000000468 R_LARCH_SOP_POP_32_S_10_12	`<nameless>'

at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf564):
0x000000000006b528 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 2048(0x800)
0x00000000047c1724 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482cc4c R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SR	`<nameless>'
0x000000000000482c R_LARCH_SOP_POP_32_S_5_20	`<nameless>'

at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf568):
0x000000000006b528 R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 4(0x4)
0x00000000047c0f24 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482c44c R_LARCH_SOP_PUSH_PCREL	`_GLOBAL_OFFSET_TABLE_' + 2052(0x804)
0x00000000047c1724 R_LARCH_SOP_PUSH_GPREL	`MainCapability'
0x000000000006b528 R_LARCH_SOP_ADD	`<nameless>'
0x000000000482cc4c R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SR	`<nameless>'
0x000000000000482c R_LARCH_SOP_PUSH_ABSOLUTE	`<nameless>' + 12(0xc)
0x000000000000000c R_LARCH_SOP_SL	`<nameless>'
0x000000000482c000 R_LARCH_SOP_SUB	`<nameless>'
0x000000000000044c R_LARCH_SOP_POP_32_S_10_12	`<nameless>'

at compiler/stage2/build/GHC/Rename/Expr.dyn_o(.text+0xcf578):
0x000000000006b528 R_LARCH_SOP_PUSH_PLT_PCREL	`newCAF'
0xfffffffff7f357d8 R_LARCH_SOP_POP_32_S_0_10_10_16_S2	`<nameless>'

/home/hiropoi/Desktop/GHCtime/CrossCPS/cross-tools/bin/../lib/gcc/loongarch64-linux-gnu/8.3.0/../../../../loongarch64-linux-gnu/bin/ld: compiler/stage2/build/GHC/Rename/Expr.dyn_o: in function `.L12063':
(.text+0xcf578): relocation truncated to fit: R_LARCH_SOP_POP_32_S_0_10_10_16_S2 against `<nameless>'
/home/hiropoi/Desktop/GHCtime/CrossCPS/cross-tools/bin/../lib/gcc/loongarch64-linux-gnu/8.3.0/../../../../loongarch64-linux-gnu/bin/ld: final link failed: symbol needs debug section which does not exist
collect2: error: ld returned 1 exit status
-- Record dump end --

`loongarch64-linux-gnu-gcc' failed in phase `Linker'. (Exit code: 1)

我完全无法解决这个问题。它似乎有点过于底层,而且是由目标软件编译过程中一个非常非常庞大的命令引发的,因此它变得十分不可控……希望您能以专业人士的视点给出一些建议,不胜感激。

sunshine-cdl avatar May 15 '22 01:05 sunshine-cdl

我也不是很清楚你碰到的问题,不过你是在编译GHC时侯碰到的吧? 为此我去编译了一下GHC,没有遇到你出现的问题。

sunhaiyong1978 avatar May 25 '22 02:05 sunhaiyong1978

老师您好,我就是提问者,现在是用另外一个账号 我们使用的工具链是gcc8.3/glibc2.28/binutils2.31那一版,编译的是ghc9.5 这个问题发生在最后的链接阶段,构建交叉编译器是没问题的 另外,我们在使用gcc12/glibc2.35那一版工具链时不会出现这个问题,烦请您再帮我们看看

HeroPoi avatar May 27 '22 00:05 HeroPoi

也可能是gcc8.3这组工具链不匹配导致的。

sunhaiyong1978 avatar Jun 03 '22 05:06 sunhaiyong1978