Is the clang 5.0.1 use of .rela.plt and R_PPC64_JMP_SLOT for kernel modules a llvm issue? Just a FreeBSD one?

Mark Millard markmi at dsl-only.net
Sat Dec 30 00:19:03 UTC 2017


I've not been able to figure out if I should submit something
into llvm's bugzilla for the powerpc64 switching to .rela.plt
and R_PPC64_JMP_SLOT for kernel modules from the earlier
.rela.dyn and R/PPC64_RELATIVE and R_PPC64_ADDR64 for kernel
modules. (I do not know if powerpc would also have the issue
since other things have been stopping that build for a long
time.)

Do one or more of you have a clue?

Reminder:


I have submitted FreeBSD bugzilla 224561 for the issue.

The difference in the likes of filemon.ko
produced by system clang 5.0.1 vs.
devel/powerpc64-xtoolchain-gcc is. . .

clang 5.0.1:

Relocation section with addend (.rela.plt):
r_offset     r_info       r_type              st_value         st_name + r_addend
000000014480 000300000015 R_PPC64_JMP_SLOT    0000000000000000 copyinstr + 0
000000014488 000400000015 R_PPC64_JMP_SLOT    0000000000000000 devfs_set_cdevpriv + 0
. . .

vs.

devel/powerpc64-xtoolchain-gcc:

Relocation section with addend (.rela.dyn):
r_offset     r_info       r_type              st_value         st_name + r_addend
0000000145c0 000000000016 R_PPC64_RELATIVE    0000000000000000  + 40d0
0000000145e0 000000000016 R_PPC64_RELATIVE    0000000000000000  + 145b0
. . .
000000014408 000600000026 R_PPC64_ADDR64      0000000000000000 sysent + 0
000000014410 001100000026 R_PPC64_ADDR64      0000000000000000 freebsd32_sysent + 0

Apparently R_PPC64_JMP_SLOT is mishandled
and does not explicitly lead to rejection
of the attempted dynamic load.

It might be an issue if .rela.plt and
R_PPC64_JMP_SLOT should even be generated
instead of .rela.dyn and R_PPC64_RELATIVE
and R_PPC64_ADDR64.

===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-ppc mailing list