Date: Mon, 09 Apr 2018 12:41:07 -0700 From: John Baldwin <jhb@freebsd.org> To: freebsd-current@freebsd.org, sgk@troutmask.apl.washington.edu Cc: Ed Maste <emaste@freebsd.org> Subject: Re: Can't load linux64.ko module Message-ID: <1705675.KsztJEaACH@ralph.baldwin.cx> In-Reply-To: <20180404213453.GA35165@troutmask.apl.washington.edu> References: <20180403162600.GA23894@troutmask.apl.washington.edu> <20180404211315.GA35006@troutmask.apl.washington.edu> <20180404213453.GA35165@troutmask.apl.washington.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, April 04, 2018 02:34:53 PM Steve Kargl wrote: > On Wed, Apr 04, 2018 at 02:13:15PM -0700, Steve Kargl wrote: > > > > OK, so where is elf64_linux_vdso_fixup suppose to come from? > > > > The answer is compat/linux/linux_vdso.c where we find > > #if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) > #define __ELF_WORD_SIZE 32 > #else > #define __ELF_WORD_SIZE 64 > #endif > > having COMPAT_LINUX32 in my kernel config file gives me > elf32_linux_vdso_fixup. It seems that one cannot have > a kernel that supports both 32 and 64-bit linux software. > > linux(4) states > > for an amd64 kernel use: > > options COMPAT_LINUX32 > > Alternatively, to load the ABI as a module at boot time, place the > following line in loader.conf(5): > > linux_load="YES" > > It turns out that I have 'linux_load=YES" in /etc/loader.conf. > When I boot the kernel built with COMPAT_LINUX32 prevents > the kldload of linux64.ko. > > Oh well, learn something new everyday. The Right Way to fix this is probably to have linux_vdso32.c and linux_vdso64.c that #include linux_vdso.c after setting ELF_WORD_SIZE similar to how sys/kern/imgact_elf.c works. Then the COMPAT_LINUX and linux64.ko modules would include linux_vdso64.c and COMPAT_LINUX32 and linux32.ko modules (and linux.ko on i386) would include linux_vdso32.c. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1705675.KsztJEaACH>