32-bit powerpc and powerpc64 kernel relocation types when built via system-clang-8 and devel/powerpc64-binutils: a few R_PPC*_ADDR32 mixed in with the R_PPC*_RELATIVE

Mark Millard via freebsd-ppc <[email protected]>
Newsgroups gmane.os.freebsd.devel.ppc
Message-ID <[email protected]>
I'm not sure if getting a few R_PPC_ADDR32/R_PPC64_ADDR64
in the kernel is expected or not.

This was a amd64 -> powerpc cross build from/for:

# uname -apKU
FreeBSD FBSDFSSD 13.0-CURRENT FreeBSD 13.0-CURRENT #20 r347549M: Fri May 31 17:00:45 PDT 2019     markmi@FBSDFSSD:/usr/obj/amd64_clang/amd64.amd64/usr/src/amd64.amd64/sys/GENERIC-NODBG  amd64 amd64 1300025 1300025

system clang was used for the build but devel/powerpc64-binutils was used.

# readelf -asW /usr/obj/DESTDIRs/clang-powerpc-installkernel_altbinutils/boot/kernel/kernel | grep -v R_PPC_RELATIVE | less
. . .
Relocation section with addend (.rela.dyn):
r_offset r_info   r_type              st_value st_name + r_addend
00da1744 00275101 R_PPC_ADDR32        00000000 uart_quicc_class + 0

Relocation section with addend (.rela.text):
r_offset r_info   r_type              st_value st_name + r_addend

Relocation section with addend (.rela.data):
r_offset r_info   r_type              st_value st_name + r_addend

Relocation section with addend (.rela.got):
r_offset r_info   r_type              st_value st_name + r_addend

Relocation section with addend (.rela.got2):
r_offset r_info   r_type              st_value st_name + r_addend
00e646d0 00117401 R_PPC_ADDR32        00000000 mfs_root_end + 0
00e646d4 002d7c01 R_PPC_ADDR32        00000000 mfs_root + 0
00e67c94 002b3a01 R_PPC_ADDR32        00000000 __stop_set_uart_fdt_class_set + 0
00e67c98 00210301 R_PPC_ADDR32        00000000 __start_set_uart_fdt_class_set + 0

. . .


# readelf -asW /usr/obj/DESTDIRs/clang-powerpc64-installkernel_altbinutils/boot/kernel/kernel | grep -v R_PPC64_RELATIVE | less
. . .
Relocation section with addend (.rela.dyn):
r_offset         r_info           r_type                   st_value         st_name + r_addend
000000000130c360 00002d2800000026 R_PPC64_ADDR64           0000000000000000 uart_quicc_class + 0
0000000001362008 0000143600000026 R_PPC64_ADDR64           0000000000000000 mfs_root_end + 0
0000000001362010 0000343300000026 R_PPC64_ADDR64           0000000000000000 mfs_root + 0
0000000001362018 000031a000000026 R_PPC64_ADDR64           0000000000000000 __stop_set_uart_fdt_class_set + 0
0000000001362020 000025fd00000026 R_PPC64_ADDR64           0000000000000000 __start_set_uart_fdt_class_set + 0

Relocation section with addend (.rela.text):
r_offset         r_info           r_type                   st_value         st_name + r_addend

Relocation section with addend (.rela.data):
r_offset         r_info           r_type                   st_value         st_name + r_addend

. . .

So it is always:

uart_quicc_class
mfs_root_end
mfs_root
__stop_set_uart_fdt_class_set
__start_set_uart_fdt_class_set

but the .rela.got2 vs. .rela.dyn status varies for all
but uart_quicc_class in my context.


===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ppc
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.