Home | History | Annotate | Line # | Download | only in ld.elf_so
      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