Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Sep 2024 06:54:12 -0400
From:      Dennis Clarke <dclarke@blastwave.org>
To:        riscv@FreeBSD.org
Subject:   kldxref: /boot/kernel/kernel: no ELF relocation table found
Message-ID:  <8a58b38a-b7fb-494e-a730-e4c341aaa9ee@blastwave.org>

next in thread | raw e-mail | index | archive | help

All:

     Ye ol "make installkernel" starts nicely but ends a little odd :


e# make installkernel
--------------------------------------------------------------
 >>> Install check kernel
--------------------------------------------------------------
--------------------------------------------------------------
 >>> Installing kernel GENERIC on Mon Sep  2 10:10:05 UTC 2024
--------------------------------------------------------------
cd /usr/obj/usr/src/riscv.riscv64/sys/GENERIC;  MACHINE_ARCH=riscv64 
MACHINE=riscv  CPUTYPE= CC="cc -target riscv64-unknown-freebsd15.0 
--sysroot=/usr/obj/usr/src/riscv.riscv64/tmp 
-B/usr/obj/usr/src/riscv.riscv64/tmp/usr/bin" CXX="c++  -target 
riscv64-unknown-freebsd15.0 --sysroot=/usr/obj/usr/src/riscv.riscv64/tmp 
-B/usr/obj/usr/src/riscv.riscv64/tmp/usr/bin"  CPP="cpp -target 
riscv64-unknown-freebsd15.0 --sysroot=/usr/obj/usr/src/riscv.riscv64/tmp 
-B/usr/obj/usr/src/riscv.riscv64/tmp/usr/bin"  AS="as" AR="ar" 
ELFCTL="elfctl" LD="ld"  LLVM_LINK="" NM=nm OBJCOPY="objcopy" 
RANLIB=ranlib STRINGS=  SIZE="size" STRIPBIN="strip" 
PATH=/usr/obj/usr/src/riscv.riscv64/tmp/bin:/usr/obj/usr/src/riscv.riscv64/tmp/usr/sbin:/usr/obj/usr/src/riscv.riscv64/tmp/usr/bin:/usr/obj/usr/src/riscv.riscv64/tmp/legacy/usr/sbin:/usr/obj/usr/src/riscv.riscv64/tmp/legacy/usr/bin:/usr/obj/usr/src/riscv.riscv64/tmp/legacy/bin:/usr/obj/usr/src/riscv.riscv64/tmp/legacy/usr/libexec::/sbin:/bin:/usr/sbin:/usr/bin 
  make  KERNEL=kernel METALOG=  install
thiskernel=`sysctl -n kern.bootfile || echo /boot/kernel/kernel` ;  if [ 
! "`dirname "$thiskernel"`" -ef /boot/kernel ] ; then  chflags -R noschg 
/boot/kernel ;  rm -rf /boot/kernel ;  rm -rf /usr/lib/debug/boot/kernel 
;  else  if [ -d /boot/kernel.old ] ; then  chflags -R noschg 
/boot/kernel.old ;  rm -rf /boot/kernel.old ;  fi ;  mv /boot/kernel 
/boot/kernel.old ;  if [ -n "/usr/lib/debug" -a  -d 
/usr/lib/debug/boot/kernel ]; then  rm -rf 
/usr/lib/debug/boot/kernel.old ;  mv /usr/lib/debug/boot/kernel 
/usr/lib/debug/boot/kernel.old ;  fi ;  sysctl 
kern.bootfile=/boot/kernel.old/"`basename "$thiskernel"`" ;  fi
kern.bootfile: /boot/kernel/kernel -> /boot/kernel.old/kernel
mkdir -p /boot/kernel
install -p -m 444 -o root -g wheel kernel /boot/kernel/
mkdir -p /usr/lib/debug/boot/kernel
install -p -m 444 -o root -g wheel kernel.debug /usr/lib/debug/boot/kernel/
cd /usr/src/sys/modules; 
MAKEOBJDIRPREFIX=/usr/obj/usr/src/riscv.riscv64/sys/GENERIC/modules 
KMODDIR=/boot/kernel MACHINE_CPUARCH=riscv MACHINE=riscv 
MACHINE_ARCH=riscv64 MODULES_EXTRA="dtb/sifive" WITHOUT_MODULES="" 
ARCH_FLAGS="" DEBUG_FLAGS="-g" __MPATH="" 
KERNBUILDDIR="/usr/obj/usr/src/riscv.riscv64/sys/GENERIC" 
SYSDIR="/usr/src/sys" MODULE_TIED=yes WITH_CTF="1" make  install
===> accf_data (install)
install -T release -o root -g wheel -m 444   accf_data.ko /boot/kernel/
install -T dbg -o root -g wheel -m 444   accf_data.ko.debug 
/usr/lib/debug/boot/kernel/
===> accf_dns (install)
install -T release -o root -g wheel -m 444   accf_dns.ko /boot/kernel/
install -T dbg -o root -g wheel -m 444   accf_dns.ko.debug 
/usr/lib/debug/boot/kernel/
.
.
.  etc etc etc
.
.
===> xz (install)
install -T release -o root -g wheel -m 444   xz.ko /boot/kernel/
install -T dbg -o root -g wheel -m 444   xz.ko.debug 
/usr/lib/debug/boot/kernel/
===> zfs (install)
install -T release -o root -g wheel -m 444   zfs.ko /boot/kernel/
install -T dbg -o root -g wheel -m 444   zfs.ko.debug 
/usr/lib/debug/boot/kernel/
===> zlib (install)
install -T release -o root -g wheel -m 444   zlib.ko /boot/kernel/
install -T dbg -o root -g wheel -m 444   zlib.ko.debug 
/usr/lib/debug/boot/kernel/
kldxref /boot/kernel
kldxref: /boot/kernel/kernel: no ELF relocation table found

--------------------------------------------------------------
 >>> Installing kernel GENERIC completed on Mon Sep  2 10:13:55 UTC 2024
--------------------------------------------------------------




So then ... "no ELF relocation table found"?

Looking at https://cgit.freebsd.org/src/tree/usr.sbin/kldxref/ef.c#n220
and then downwards to line 367 :

     if (rel_off == 0 && rela_off == 0) {
         warnx("%s: no ELF relocation table found\n", ef->ef_name);
         error = EFTYPE;
         goto out;
     }

Which makes me wonder about the ( I hope ) harmless output from this :


# kldxref -dv /boot/kernel
/boot/kernel/accf_data.ko
   module accf_data
   depends on kernel.1500023 (1500023,1500023)
   interface accf_data.1
/boot/kernel/accf_dns.ko
   module accf_dns
   depends on kernel.1500023 (1500023,1500023)
   interface accf_dns.1
.
.
.
/boot/kernel/kern_testfrwk.ko
   module kern_testframework
   interface kern_testframework.1
   depends on kernel.1500023 (1500023,1500023)
/boot/kernel/kernel
kldxref: /boot/kernel/kernel: no ELF relocation table found

kldxref: /boot/kernel/kernel: not a valid DSO or object file: 
Inappropriate file type or format
/boot/kernel/kgssapi.ko
   module kgssapi
   depends on kernel.1500023 (1500023,1500023)
   depends on xdr.1 (1,1)
   depends on krpc.1 (1,1)
   interface kgssapi.1
.
.
.

etc etc

.
.
.





Also I do see this was created :

e# ls -lapb /boot/kernel/linker.hints
-rw-r--r--  1 root wheel 212416 Sep  2 10:13 /boot/kernel/linker.hints
e#

Looking over the output from "readelf -delV /boot/kernel.old/kernel" as
well as this new kernel they both look very similar. Addresses and some
other bits changed of course.

So therefore the situation :

     ( 1 )  well understood and just a normal red herring[1]

     ( 2 )  ignore it

     ( 3 )  huh? that's weird. never saw that before.

Curious what is going on there.

-- 
--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken


[1] see Requesting program interpreter: /red/herring :)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8a58b38a-b7fb-494e-a730-e4c341aaa9ee>