11.35Sriastrad# $NetBSD: Makefile,v 1.35 2025/12/21 19:08:09 riastradh Exp $
21.1Spooka#
31.1Spooka
41.3SskrllNOMAN=		# defined
51.3Sskrll
61.1Spooka.include <bsd.own.mk>
71.1Spooka
81.6Smrg.if ${MKPIC} != "no"
91.6Smrg
101.26SriastradSUBDIR+=	helper_dso1
111.26SriastradSUBDIR+=	helper_dso3
121.26SriastradSUBDIR+=	.WAIT
131.26SriastradSUBDIR+=	helper_dso2
141.26SriastradSUBDIR+=	.WAIT
151.26SriastradSUBDIR+=	helper_ifunc_dso
161.26SriastradSUBDIR+=	helper_symver_dso0
171.26SriastradSUBDIR+=	.WAIT
181.26SriastradSUBDIR+=	helper_symver_dso1
191.26SriastradSUBDIR+=	.WAIT
201.26SriastradSUBDIR+=	helper_symver_dso2
211.26SriastradSUBDIR+=	.WAIT
221.26SriastradSUBDIR+=	data
231.4Sjoerg
241.16SriastradSUBDIR+=	helper_def_dynamic
251.13SriastradSUBDIR+=	helper_def_static
261.18SriastradSUBDIR+=	helper_onlydef
271.14SriastradSUBDIR+=	.WAIT
281.17SriastradSUBDIR+=	helper_abuse_dynamic
291.17SriastradSUBDIR+=	helper_abuse_static
301.19SriastradSUBDIR+=	helper_onlyctor_dynamic
311.18SriastradSUBDIR+=	helper_onlyuse_dynamic
321.18SriastradSUBDIR+=	helper_onlyuse_static
331.16SriastradSUBDIR+=	helper_use_dynamic
341.13SriastradSUBDIR+=	helper_use_static
351.13Sriastrad
361.1SpookaTESTSDIR=	${TESTSBASE}/libexec/ld.elf_so
371.1Spooka
381.31SriastradTESTS_C+=	t_dladdr
391.29SriastradTESTS_C+=	t_dlclose_thread
401.26SriastradTESTS_C+=	t_dlerror-cleared
411.26SriastradTESTS_C+=	t_dlerror-false
421.26SriastradTESTS_C+=	t_dlinfo
431.26SriastradTESTS_C+=	t_dlvsym
441.26SriastradTESTS_C+=	t_hash
451.26SriastradTESTS_C+=	t_ifunc
461.22SriastradTESTS_C+=	t_ifunc_norelro
471.22SriastradTESTS_C+=	t_ifunc_norelro_now
481.26SriastradTESTS_C+=	t_ifunc_now
491.11SkamilTESTS_C+=	t_rtld_r_debug
501.25SriastradTESTS_C+=	t_rtld_r_debug_nopie
511.13SriastradTESTS_C+=	t_tls_extern
521.30SskrllTESTS_C+=	t_tls_alignment
531.21Sriastrad
541.31SriastradLDFLAGS.t_dladdr+=		-Wl,-export-dynamic
551.31Sriastrad
561.22SriastradSRCS.t_ifunc_now=		t_ifunc.c
571.22SriastradSRCS.t_ifunc_norelro=		t_ifunc.c
581.22SriastradSRCS.t_ifunc_norelro_now=	t_ifunc.c
591.22Sriastrad
601.29SriastradLDADD.t_dlclose_thread+=	-lpthread
611.29SriastradLDADD.t_dlclose_thread+=	-Wl,-rpath,${TESTSDIR}
621.29SriastradLDADD.t_dlclose_thread+=	-Wl,--export-dynamic
631.29Sriastrad
641.23SriastradLDADD.t_ifunc+=			${${MKRELRO} != "no":?-Wl,-z,relro:}
651.23SriastradLDADD.t_ifunc_now+=		${${MKRELRO} != "no":?-Wl,-z,relro:} -Wl,-z,now
661.24SriastradLDADD.t_ifunc_norelro+=		${${MKRELRO} != "no":?-Wl,-z,norelro:}
671.24SriastradLDADD.t_ifunc_norelro_now+=	${${MKRELRO} != "no":?-Wl,-z,norelro:} -Wl,-z,now
681.22Sriastrad
691.25SriastradSRCS.t_rtld_r_debug_nopie=	t_rtld_r_debug.c
701.25Sriastrad
711.25Sriastrad# If the port doesn't support PIE anyway, well, no big deal, we have
721.25Sriastrad# two copies of the same tiny test.
731.25SriastradLDADD.t_rtld_r_debug_nopie+=	-Wl,-no-pie
741.25Sriastrad
751.21Sriastrad.PATH:	${NETBSDSRCDIR}/libexec/ld.elf_so
761.21SriastradSRCS.t_hash+=	t_hash.c
771.21SriastradSRCS.t_hash+=	hash.c
781.21SriastradCPPFLAGS.t_hash.c+=	-I${NETBSDSRCDIR}/libexec/ld.elf_so
791.11Skamil
801.20SlukemCOPTS.t_rtld_r_debug.c += ${CC_WNO_MAYBE_UNINITIALIZED}
811.2Sskrll
821.2SskrllLDADD.t_dlerror-false=	-Wl,-rpath,/var/nonexistent/lib
831.5SnonakaLDADD.t_dlvsym=		-Wl,-rpath,${TESTSDIR}/h_helper_symver_dso2
841.22Sriastrad.for t in t_ifunc t_ifunc_now t_ifunc_norelro t_ifunc_norelro_now
851.34SriastradLDADD.${t}+=		-Wl,-rpath,${TESTSDIR} -lutil
861.22SriastradDPADD.${t}+=		${LIBUTIL}
871.22Sriastrad.endfor
881.13SriastradLDADD.t_tls_extern+=	-Wl,-rpath,${TESTSDIR}
891.1Spooka
901.26SriastradTESTS_SH+=		t_df_1_noopen
911.26SriastradTESTS_SH+=		t_dl_symver
921.27SriastradTESTS_SH+=		t_r_rel
931.26SriastradTESTS_SH+=		t_thread_local_dtor
941.3Sskrll
951.3SskrllBINDIR=			${TESTSDIR}
961.3SskrllPROGS+=			h_df_1_noopen1
971.3SskrllSRCS.h_df_1_noopen1=	h_df_1_noopen.c
981.3Sskrll
991.3SskrllPROGS+=			h_df_1_noopen2
1001.3SskrllSRCS.h_df_1_noopen2=	h_df_1_noopen.c
1011.3SskrllLDADD.h_df_1_noopen2=	-lpthread
1021.3Sskrll
1031.9SjoergPROGS+=			h_thread_local_dtor
1041.9SjoergLDADD.h_thread_local_dtor=	-Wl,-rpath,${TESTSDIR}  -lpthread
1051.9Sjoerg
1061.8SjoergPROGS+=			h_ifunc
1071.8SjoergSRCS.h_ifunc=		h_ifunc.c
1081.8SjoergIFUNCDIR!=		cd ${.CURDIR}/helper_ifunc_dso && ${PRINTOBJDIR}
1091.8SjoergLDADD.h_ifunc=		-Wl,-rpath,${TESTSDIR} -L${IFUNCDIR} -lh_helper_ifunc_dso
1101.8Sjoerg
1111.4SjoergPROGS+=			h_locking
1121.4SjoergSRCS.h_locking=		h_locking.c
1131.4SjoergLDADD.h_locking=	-lpthread -Wl,--export-dynamic -Wl,-rpath,${TESTSDIR}
1141.4Sjoerg
1151.5SnonakaPROGS+=			h_dl_symver_v0
1161.5SnonakaSRCS.h_dl_symver_v0=	h_dl_symver.c
1171.5SnonakaV0ODIR!=		cd ${.CURDIR}/helper_symver_dso0 && ${PRINTOBJDIR}
1181.5SnonakaLDADD.h_dl_symver_v0=	-L${V0ODIR} -lh_helper_symver_dso
1191.5Snonaka
1201.5SnonakaPROGS+=			h_dl_symver_v1
1211.5SnonakaSRCS.h_dl_symver_v1=	h_dl_symver.c
1221.5SnonakaV1ODIR!=		cd ${.CURDIR}/helper_symver_dso1 && ${PRINTOBJDIR}
1231.5SnonakaLDADD.h_dl_symver_v1=	-L${V1ODIR} -lh_helper_symver_dso
1241.5Snonaka
1251.5SnonakaPROGS+=			h_dl_symver_v2
1261.5SnonakaSRCS.h_dl_symver_v2=	h_dl_symver.c
1271.5SnonakaV2ODIR!=		cd ${.CURDIR}/helper_symver_dso2 && ${PRINTOBJDIR}
1281.5SnonakaLDADD.h_dl_symver_v2=	-L${V2ODIR} -lh_helper_symver_dso
1291.5Snonaka
1301.27SriastradPROGS+=			h_r_rel_pack
1311.27SriastradPROGS+=			h_r_rel_nopack
1321.27Sriastrad
1331.27SriastradSRCS.h_r_rel_pack=	h_r_rel.c
1341.27SriastradSRCS.h_r_rel_nopack=	h_r_rel.c
1351.27Sriastrad
1361.27Sriastradh_r_rel_pack: CTFMERGE=:	# PR toolchain/59364: ctf tools needs update
1371.33Sriastradh_r_rel_pack.link: CTFMERGE=:	# PR toolchain/59364: ctf tools needs update
1381.35SriastradCOPTS.h_r_rel.c+=	-fpie
1391.35SriastradLDFLAGS.h_r_rel_pack=	-pie ${LD_PACK_RELATIVE_RELOCS}
1401.35SriastradLDFLAGS.h_r_rel_nopack=	-pie ${LD_NOPACK_RELATIVE_RELOCS}
1411.27Sriastrad
1421.7Smrg.include <bsd.test.mk>
1431.7Smrg
1441.7Smrg.else
1451.7Smrg
1461.7SmrgNOPROG=	# defined
1471.7Smrg.include <bsd.prog.mk>
1481.7Smrg
1491.6Smrg.endif
150