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