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