uppc kmod installation problem on amd64

Please see a discussion thread starting with the following message:
	http://lists.freebsd.org/pipermail/freebsd-ports/2007-August/042999.html

	It seems that installation action of uppc-kmod port (do-install target)
	uses incorrect tool to put uppc.ko in its destination. It seems that the
	tool (${INSTALL_PROGRAM}) corrupts the .ko, so that it is not a valid
	kernel module anymore. If I put uppc.ko into /boot/kernel and do kldxref
	then kldxref complains about missing symbol table in uppc.ko and dumps
	core. If the module is loaded then it crashes my system.

	On the other hand, if I simply copy uppc.ko from work directory then it
	works ok.

	Essentially this is the same issue as described in the following PR only
	with another port:
	http://www.freebsd.org/cgi/query-pr.cgi?pr=100703

	Kostik Belousov confirms the issue with stripping kernel modules on amd64:
	You cannot strip kernel modules on amd64, because modules are elf object
	files, as opposed to shared objects on all other archs. Strip strips the
	object file symbol table, that is used by the static linker and in-kernel
	linker on amd64. On the other hand, shared object contains also a dynamic
	symbol table, that is not stripped and used by in-kernel linker on !amd64.

PR:		ports/115517
Submitted by:	Andriy Gapon <avg@icyb.net.ua>
This commit is contained in:
Edwin Groothuis 2007-09-08 12:31:14 +00:00
parent d88e80efec
commit e141b3c45d
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=199105

View File

@ -24,6 +24,11 @@ IGNORE= Requires kernel source (/usr/src/sys) to build
.include <bsd.port.pre.mk>
# Don't strip module on amd64 systems
.if ${ARCH} == "amd64"
STRIP=
.endif
post-build:
@${REINPLACE_CMD} -e 's|%%INITIAL_INSTALLDIR%%|${PREFIX}/lib|g' ${BUILD_WRKSRC}/uppcsetup
@${REINPLACE_CMD} -e 's|%%INITIAL_MODDIR%%|${KMODDIR}|g' ${WRKSRC}/uppcsetup