Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Feb 2018 19:12:11 -0800
From:      Mark Millard <marklmi26-fbsd@yahoo.com>
To:        Ed Maste <emaste@freebsd.org>, Dimitry Andric <dim@freebsd.org>
Cc:        Justin Hibbits <chmeeedalf@gmail.com>, Nathan Whitehorn <nwhitehorn@freebsd.org>, FreeBSD Hackers <freebsd-hackers@freebsd.org>, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   Re: 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? (Still true of clang 6.)
Message-ID:  <6F547F69-2821-40D3-AD89-6481F576C6EF@yahoo.com>
In-Reply-To: <2BD5FD21-95E7-4661-B8B9-2FDCDB986149@dsl-only.net>
References:  <39C042C5-9800-464C-84AC-677DB45DA1C1@dsl-only.net> <A9FD92FD-7877-4457-9A2B-A21FF0A4F0DD@dsl-only.net> <244D5C85-E1E7-4349-A46A-1D275D54833F@dsl-only.net> <55A9388E-2C04-4388-A4E9-F25574FAF129@dsl-only.net> <68EA105F-3ADF-4CBB-BD59-7A9F18E52DB3@dsl-only.net> <313C2310-ABEF-4BEE-A853-A9965680C3AC@dsl-only.net> <A6240F3A-19F0-4BE9-A53D-7BA7BA703B9B@dsl-only.net> <2BD5FD21-95E7-4661-B8B9-2FDCDB986149@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
[Notes on clang 6 properties for this. Also note: newer Email
address than the original.]

On 2017-Dec-29, at 4:18 PM, Mark Millard <markmi at dsl-only.net> wrote:

> 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.)
>=20
> Do one or more of you have a clue?
>=20
> Reminder:
>=20
>=20
> I have submitted FreeBSD bugzilla 224561 for the issue.
>=20
> The difference in the likes of filemon.ko
> produced by system clang 5.0.1 vs.
> devel/powerpc64-xtoolchain-gcc is. . .
>=20
> clang 5.0.1:
>=20
> 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
> . . .

I finally did some updating of part of my
FreeBSD environment, jumping something like
2000 revision numbers . . .

Under head -r329542 and its clang 6 there is still a
"Relocation section with addend (.rela.plt)" that
uses R_PPC64_JMP_SLOT r_types.

(This is using devel/powerpc64-binutils .)

(There was and is some .rela.dyn and
R_PPC64_RELATIVE/R_PPC64_ADDR64 use
as well.)

So: 6 is like 5.0.1 for this issue.

> vs.
>=20
> devel/powerpc64-xtoolchain-gcc:
>=20
> 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

Under head -r329542 devel/powerpc64-gcc there is
no use of .rela.plt or R_PPC64_JMP_SLOT: Just
.rela.dyn and R_PPC64_RELATIVE/R_PPC64_ADDR64
use.

(This is using devel/powerpc64-binutils .)

> Apparently R_PPC64_JMP_SLOT is mishandled
> and does not explicitly lead to rejection
> of the attempted dynamic load.
>=20
> 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.

I have not actually tried the modern builds
on a old PowerMac G5 yet: other things took
up time. Also the USB devmatch issues are a
worry since I have no alternatives to
directly connected USB keyboards, mice (and
possibly more) if I end up unable to connect
over the local network for some reason.

But I've not noticed anything go by that
indicated adding support for R_PPC64_JMP_SLOT
or .rela.plt in filemon.ko or other such .ko's.
So I only expect dynamic module loading to work
for the devel/powerpc64-gcc based kernel.

(I still build-in two(?) extra .ko's to avoid the
loading issue for them if I play with the clang
based kernel. One of them is filemon.ko .)

=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( markmi at dsl-only.net is
going away in 2018-Feb, late)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6F547F69-2821-40D3-AD89-6481F576C6EF>