1# $NetBSD: Makefile,v 1.35 2025/12/21 19:08:09 riastradh Exp $
2#
3
4NOMAN=		# defined
5
6.include <bsd.own.mk>
7
8.if ${MKPIC} != "no"
9
10SUBDIR+=	helper_dso1
11SUBDIR+=	helper_dso3
12SUBDIR+=	.WAIT
13SUBDIR+=	helper_dso2
14SUBDIR+=	.WAIT
15SUBDIR+=	helper_ifunc_dso
16SUBDIR+=	helper_symver_dso0
17SUBDIR+=	.WAIT
18SUBDIR+=	helper_symver_dso1
19SUBDIR+=	.WAIT
20SUBDIR+=	helper_symver_dso2
21SUBDIR+=	.WAIT
22SUBDIR+=	data
23
24SUBDIR+=	helper_def_dynamic
25SUBDIR+=	helper_def_static
26SUBDIR+=	helper_onlydef
27SUBDIR+=	.WAIT
28SUBDIR+=	helper_abuse_dynamic
29SUBDIR+=	helper_abuse_static
30SUBDIR+=	helper_onlyctor_dynamic
31SUBDIR+=	helper_onlyuse_dynamic
32SUBDIR+=	helper_onlyuse_static
33SUBDIR+=	helper_use_dynamic
34SUBDIR+=	helper_use_static
35
36TESTSDIR=	${TESTSBASE}/libexec/ld.elf_so
37
38TESTS_C+=	t_dladdr
39TESTS_C+=	t_dlclose_thread
40TESTS_C+=	t_dlerror-cleared
41TESTS_C+=	t_dlerror-false
42TESTS_C+=	t_dlinfo
43TESTS_C+=	t_dlvsym
44TESTS_C+=	t_hash
45TESTS_C+=	t_ifunc
46TESTS_C+=	t_ifunc_norelro
47TESTS_C+=	t_ifunc_norelro_now
48TESTS_C+=	t_ifunc_now
49TESTS_C+=	t_rtld_r_debug
50TESTS_C+=	t_rtld_r_debug_nopie
51TESTS_C+=	t_tls_extern
52TESTS_C+=	t_tls_alignment
53
54LDFLAGS.t_dladdr+=		-Wl,-export-dynamic
55
56SRCS.t_ifunc_now=		t_ifunc.c
57SRCS.t_ifunc_norelro=		t_ifunc.c
58SRCS.t_ifunc_norelro_now=	t_ifunc.c
59
60LDADD.t_dlclose_thread+=	-lpthread
61LDADD.t_dlclose_thread+=	-Wl,-rpath,${TESTSDIR}
62LDADD.t_dlclose_thread+=	-Wl,--export-dynamic
63
64LDADD.t_ifunc+=			${${MKRELRO} != "no":?-Wl,-z,relro:}
65LDADD.t_ifunc_now+=		${${MKRELRO} != "no":?-Wl,-z,relro:} -Wl,-z,now
66LDADD.t_ifunc_norelro+=		${${MKRELRO} != "no":?-Wl,-z,norelro:}
67LDADD.t_ifunc_norelro_now+=	${${MKRELRO} != "no":?-Wl,-z,norelro:} -Wl,-z,now
68
69SRCS.t_rtld_r_debug_nopie=	t_rtld_r_debug.c
70
71# If the port doesn't support PIE anyway, well, no big deal, we have
72# two copies of the same tiny test.
73LDADD.t_rtld_r_debug_nopie+=	-Wl,-no-pie
74
75.PATH:	${NETBSDSRCDIR}/libexec/ld.elf_so
76SRCS.t_hash+=	t_hash.c
77SRCS.t_hash+=	hash.c
78CPPFLAGS.t_hash.c+=	-I${NETBSDSRCDIR}/libexec/ld.elf_so
79
80COPTS.t_rtld_r_debug.c += ${CC_WNO_MAYBE_UNINITIALIZED}
81
82LDADD.t_dlerror-false=	-Wl,-rpath,/var/nonexistent/lib
83LDADD.t_dlvsym=		-Wl,-rpath,${TESTSDIR}/h_helper_symver_dso2
84.for t in t_ifunc t_ifunc_now t_ifunc_norelro t_ifunc_norelro_now
85LDADD.${t}+=		-Wl,-rpath,${TESTSDIR} -lutil
86DPADD.${t}+=		${LIBUTIL}
87.endfor
88LDADD.t_tls_extern+=	-Wl,-rpath,${TESTSDIR}
89
90TESTS_SH+=		t_df_1_noopen
91TESTS_SH+=		t_dl_symver
92TESTS_SH+=		t_r_rel
93TESTS_SH+=		t_thread_local_dtor
94
95BINDIR=			${TESTSDIR}
96PROGS+=			h_df_1_noopen1
97SRCS.h_df_1_noopen1=	h_df_1_noopen.c
98
99PROGS+=			h_df_1_noopen2
100SRCS.h_df_1_noopen2=	h_df_1_noopen.c
101LDADD.h_df_1_noopen2=	-lpthread
102
103PROGS+=			h_thread_local_dtor
104LDADD.h_thread_local_dtor=	-Wl,-rpath,${TESTSDIR}  -lpthread
105
106PROGS+=			h_ifunc
107SRCS.h_ifunc=		h_ifunc.c
108IFUNCDIR!=		cd ${.CURDIR}/helper_ifunc_dso && ${PRINTOBJDIR}
109LDADD.h_ifunc=		-Wl,-rpath,${TESTSDIR} -L${IFUNCDIR} -lh_helper_ifunc_dso
110
111PROGS+=			h_locking
112SRCS.h_locking=		h_locking.c
113LDADD.h_locking=	-lpthread -Wl,--export-dynamic -Wl,-rpath,${TESTSDIR}
114
115PROGS+=			h_dl_symver_v0
116SRCS.h_dl_symver_v0=	h_dl_symver.c
117V0ODIR!=		cd ${.CURDIR}/helper_symver_dso0 && ${PRINTOBJDIR}
118LDADD.h_dl_symver_v0=	-L${V0ODIR} -lh_helper_symver_dso
119
120PROGS+=			h_dl_symver_v1
121SRCS.h_dl_symver_v1=	h_dl_symver.c
122V1ODIR!=		cd ${.CURDIR}/helper_symver_dso1 && ${PRINTOBJDIR}
123LDADD.h_dl_symver_v1=	-L${V1ODIR} -lh_helper_symver_dso
124
125PROGS+=			h_dl_symver_v2
126SRCS.h_dl_symver_v2=	h_dl_symver.c
127V2ODIR!=		cd ${.CURDIR}/helper_symver_dso2 && ${PRINTOBJDIR}
128LDADD.h_dl_symver_v2=	-L${V2ODIR} -lh_helper_symver_dso
129
130PROGS+=			h_r_rel_pack
131PROGS+=			h_r_rel_nopack
132
133SRCS.h_r_rel_pack=	h_r_rel.c
134SRCS.h_r_rel_nopack=	h_r_rel.c
135
136h_r_rel_pack: CTFMERGE=:	# PR toolchain/59364: ctf tools needs update
137h_r_rel_pack.link: CTFMERGE=:	# PR toolchain/59364: ctf tools needs update
138COPTS.h_r_rel.c+=	-fpie
139LDFLAGS.h_r_rel_pack=	-pie ${LD_PACK_RELATIVE_RELOCS}
140LDFLAGS.h_r_rel_nopack=	-pie ${LD_NOPACK_RELATIVE_RELOCS}
141
142.include <bsd.test.mk>
143
144.else
145
146NOPROG=	# defined
147.include <bsd.prog.mk>
148
149.endif
150