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