1# $NetBSD: Makefile,v 1.27 2025/05/02 03:26:26 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_dlerror-cleared
39TESTS_C+= t_dlerror-false
40TESTS_C+= t_dlinfo
41TESTS_C+= t_dlvsym
42TESTS_C+= t_hash
43TESTS_C+= t_ifunc
44TESTS_C+= t_ifunc_norelro
45TESTS_C+= t_ifunc_norelro_now
46TESTS_C+= t_ifunc_now
47TESTS_C+= t_rtld_r_debug
48TESTS_C+= t_rtld_r_debug_nopie
49TESTS_C+= t_tls_extern
50
51SRCS.t_ifunc_now=             t_ifunc.c
52SRCS.t_ifunc_norelro=                   t_ifunc.c
53SRCS.t_ifunc_norelro_now=     t_ifunc.c
54
55LDADD.t_ifunc+=                         ${${MKRELRO} != "no":?-Wl,-z,relro:}
56LDADD.t_ifunc_now+=           ${${MKRELRO} != "no":?-Wl,-z,relro:} -Wl,-z,now
57LDADD.t_ifunc_norelro+=                 ${${MKRELRO} != "no":?-Wl,-z,norelro:}
58LDADD.t_ifunc_norelro_now+=   ${${MKRELRO} != "no":?-Wl,-z,norelro:} -Wl,-z,now
59
60SRCS.t_rtld_r_debug_nopie=    t_rtld_r_debug.c
61
62# If the port doesn't support PIE anyway, well, no big deal, we have
63# two copies of the same tiny test.
64LDADD.t_rtld_r_debug_nopie+=  -Wl,-no-pie
65
66.PATH:    ${NETBSDSRCDIR}/libexec/ld.elf_so
67SRCS.t_hash+=       t_hash.c
68SRCS.t_hash+=       hash.c
69CPPFLAGS.t_hash.c+= -I${NETBSDSRCDIR}/libexec/ld.elf_so
70
71COPTS.t_rtld_r_debug.c += ${CC_WNO_MAYBE_UNINITIALIZED}
72
73LDADD.t_dlerror-false=        -Wl,-rpath,/var/nonexistent/lib
74LDADD.t_dlvsym=               -Wl,-rpath,${TESTSDIR}/h_helper_symver_dso2
75.for t in t_ifunc t_ifunc_now t_ifunc_norelro t_ifunc_norelro_now
76LDADD.${t}+=                  -Wl,-rpath,${TESTSDIR} -lutil
77DPADD.${t}+=                  ${LIBUTIL}
78.endfor
79LDADD.t_tls_extern+=          -Wl,-rpath,${TESTSDIR}
80
81TESTS_SH+=                    t_df_1_noopen
82TESTS_SH+=                    t_dl_symver
83TESTS_SH+=                    t_r_rel
84TESTS_SH+=                    t_thread_local_dtor
85
86BINDIR=                       ${TESTSDIR}
87PROGS+=                       h_df_1_noopen1
88SRCS.h_df_1_noopen1=          h_df_1_noopen.c
89
90PROGS+=                       h_df_1_noopen2
91SRCS.h_df_1_noopen2=          h_df_1_noopen.c
92LDADD.h_df_1_noopen2=         -lpthread
93
94PROGS+=                       h_thread_local_dtor
95LDADD.h_thread_local_dtor=    -Wl,-rpath,${TESTSDIR}  -lpthread
96
97PROGS+=                       h_ifunc
98SRCS.h_ifunc=                 h_ifunc.c
99IFUNCDIR!=                    cd ${.CURDIR}/helper_ifunc_dso && ${PRINTOBJDIR}
100LDADD.h_ifunc=                -Wl,-rpath,${TESTSDIR} -L${IFUNCDIR} -lh_helper_ifunc_dso
101
102PROGS+=                       h_locking
103SRCS.h_locking=               h_locking.c
104LDADD.h_locking=    -lpthread -Wl,--export-dynamic -Wl,-rpath,${TESTSDIR}
105
106PROGS+=                       h_dl_symver_v0
107SRCS.h_dl_symver_v0=          h_dl_symver.c
108V0ODIR!=            cd ${.CURDIR}/helper_symver_dso0 && ${PRINTOBJDIR}
109LDADD.h_dl_symver_v0=         -L${V0ODIR} -lh_helper_symver_dso
110
111PROGS+=                       h_dl_symver_v1
112SRCS.h_dl_symver_v1=          h_dl_symver.c
113V1ODIR!=            cd ${.CURDIR}/helper_symver_dso1 && ${PRINTOBJDIR}
114LDADD.h_dl_symver_v1=         -L${V1ODIR} -lh_helper_symver_dso
115
116PROGS+=                       h_dl_symver_v2
117SRCS.h_dl_symver_v2=          h_dl_symver.c
118V2ODIR!=            cd ${.CURDIR}/helper_symver_dso2 && ${PRINTOBJDIR}
119LDADD.h_dl_symver_v2=         -L${V2ODIR} -lh_helper_symver_dso
120
121PROGS+=                       h_r_rel_pack
122PROGS+=                       h_r_rel_nopack
123
124SRCS.h_r_rel_pack=  h_r_rel.c
125SRCS.h_r_rel_nopack=          h_r_rel.c
126
127h_r_rel_pack: CTFMERGE=:      # PR toolchain/59364: ctf tools needs update
128LDFLAGS.h_r_rel_pack=         -Wl,-z,pack-relative-relocs
129LDFLAGS.h_r_rel_nopack=       -Wl,-z,nopack-relative-relocs
130
131.include <bsd.test.mk>
132
133.else
134
135NOPROG=   # defined
136.include <bsd.prog.mk>
137
138.endif
139