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