[DTrace-devel] [PATCH 15/17] drti: emit into a subdirectory
Nick Alcock
nick.alcock at oracle.com
Wed Aug 10 22:07:07 UTC 2022
The BPF library code assumes that ${libdir}/dtrace/*.o are all BPF
object files. drti*.o is not, and its presence causes the BPF code to
fail at DTrace startup time.
Move it into a subdirectory to keep it out of trouble.
Signed-off-by: Nick Alcock <nick.alcock at oracle.com>
---
libdtrace/Build | 24 +++++++++++++-----------
libdtrace/dt_link.c | 6 +++---
2 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/libdtrace/Build b/libdtrace/Build
index 66a89a8b2b3c..db8f6c8e413f 100644
--- a/libdtrace/Build
+++ b/libdtrace/Build
@@ -91,6 +91,8 @@ dt_prov_pid.c_CFLAGS := -Wno-pedantic
dt_prov_profile.c_CFLAGS := -Wno-pedantic
dt_prov_sdt.c_CFLAGS := -Wno-pedantic
dt_prov_syscall.c_CFLAGS := -Wno-pedantic
+dt_debug.c_CFLAGS := -Wno-prio-ctor-dtor
+drti.c_CFLAGS := -Wno-prio-ctor-dtor
SHORTKERNELS := $(foreach kernel,$(KERNELS),$(shell printf %s $(kernel) | sed -e 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/'))
@@ -142,9 +144,9 @@ override other-dlib-targets = $(foreach kernel,$(SHORTKERNELS), \
$(filter-out $(M4_DLIBS),$(WORKING_DLIBS))))
$(objdir)/dlibs/.dir.stamp:
- mkdir -p $(objdir)/dlibs $(foreach kernel,$(SHORTKERNELS),$(objdir)/dlibs/$(kernel))
+ mkdir -p $(objdir)/dlibs $(objdir)/dlibs/drti $(foreach kernel,$(SHORTKERNELS),$(objdir)/dlibs/$(kernel))
@touch $(objdir)/dlibs/.dir.stamp
- ln -sf ../../$(libdtrace-build_DIR)/drti-vers $(objdir)/dlibs
+ ln -srf $(libdtrace-build_DIR)/drti-vers $(objdir)/dlibs/drti
define dlib-kernel-ver-template
$(objdir)/dlibs/$(shell printf %s $(1) | sed -e 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/')/%.d: override SHORTKERNELVER := $(shell printf %s $(1) | sed -e 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/' | awk -F. '{ print $$1 * 1000 * 1000 + $$2 * 1000 + $$3 }')
@@ -205,9 +207,9 @@ dlibs: $(m4-dlib-targets) $(other-dlib-targets)
PHONIES += objs
TARGETS += objs
BUILD_DRTI_OBJ = $(objdir)/drti.o
-DRTI_OBJ = $(objdir)/dlibs/drti.o
+DRTI_OBJ = $(objdir)/dlibs/drti/drti.o
BUILD_DRTI32_OBJ = $(objdir)/drti32.o
-DRTI32_OBJ = $(if $(NATIVE_BITNESS_ONLY),,$(objdir)/dlibs/drti32.o)
+DRTI32_OBJ = $(if $(NATIVE_BITNESS_ONLY),,$(objdir)/dlibs/drti/drti32.o)
objs: $(DRTI_OBJ) $(DRTI32_OBJ)
$(BUILD_DRTI_OBJ): $(libdtrace-build_DIR)drti.c
@@ -246,7 +248,7 @@ clean::
rm -f $(addprefix $(libdtrace-build_DIR),$(BUILD_DLIBS))
install::
- mkdir -p $(INSTLIBDIR)/dtrace $(INSTINCLUDEDIR)
+ mkdir -p $(INSTLIBDIR)/dtrace $(INSTLIBDIR)/dtrace/drti $(INSTINCLUDEDIR)
$(call describe-install-target,$(INSTINCLUDEDIR),dtrace.h)
install -m 644 $(libdtrace-build_DIR)dtrace.h $(INSTINCLUDEDIR)
$(call describe-install-target,$(INSTLIBDIR),$(libdtrace_TARGET).so.$(libdtrace_VERSION))
@@ -255,12 +257,12 @@ install::
ln -sf libdtrace.so.$(libdtrace_VERSION) $(INSTLIBDIR)/$(libdtrace_SONAME)
$(call describe-install-target,$(INSTLIBDIR),$(libdtrace_TARGET).so)
ln -sf libdtrace.so.$(libdtrace_VERSION) $(INSTLIBDIR)/$(libdtrace_TARGET).so
- $(call describe-install-target,$(INSTLIBDIR)/dtrace,$(DRTI_OBJ))
- install -m 644 $(DRTI_OBJ) $(INSTLIBDIR)/dtrace
- $(call describe-install-target,$(INSTLIBDIR)/dtrace,$(DRTI32_OBJ))
- $(if $(NATIVE_BITNESS_ONLY),,install -m 644 $(DRTI32_OBJ) $(INSTLIBDIR)/dtrace)
- $(call describe-install-target,$(INSTLIBDIR)/dtrace,drti-vers)
- install -m 644 $(objdir)/dlibs/drti-vers $(INSTLIBDIR)/dtrace
+ $(call describe-install-target,$(INSTLIBDIR)/dtrace/drti,$(DRTI_OBJ))
+ install -m 644 $(DRTI_OBJ) $(INSTLIBDIR)/dtrace/drti
+ $(call describe-install-target,$(INSTLIBDIR)/dtrace/drti,$(DRTI32_OBJ))
+ $(if $(NATIVE_BITNESS_ONLY),,install -m 644 $(DRTI32_OBJ) $(INSTLIBDIR)/dtrace/drti)
+ $(call describe-install-target,$(INSTLIBDIR)/dtrace/drti,drti-vers)
+ install -m 644 $(objdir)/dlibs/drti-vers $(INSTLIBDIR)/dtrace/drti
for kernel in $(SHORTKERNELS); do \
$(call describe-expanded-install-target,$(INSTLIBDIR)/dtrace/$$kernel,$(WORKING_DLIBS)) \
mkdir -p $(INSTLIBDIR)/dtrace/$$kernel && \
diff --git a/libdtrace/dt_link.c b/libdtrace/dt_link.c
index 202dd642aba3..5daaf2b02212 100644
--- a/libdtrace/dt_link.c
+++ b/libdtrace/dt_link.c
@@ -1692,17 +1692,17 @@ dtrace_program_link(dtrace_hdl_t *dtp, dtrace_prog_t *pgp, uint_t dflags,
*/
if (dtp->dt_oflags & DTRACE_O_ILP32) {
- snprintf(drti, sizeof (drti), "%s/drti32.o", libdir->dir_path);
+ snprintf(drti, sizeof (drti), "%s/drti/drti32.o", libdir->dir_path);
#if defined(__sparc)
emu = " -m elf32_sparc";
#elif defined(__i386) || defined(__amd64)
emu = " -m elf_i386";
#endif
} else {
- snprintf(drti, sizeof (drti), "%s/drti.o", libdir->dir_path);
+ snprintf(drti, sizeof (drti), "%s/drti/drti.o", libdir->dir_path);
emu = "";
}
- snprintf(symvers, sizeof (symvers), "%s/drti-vers", libdir->dir_path);
+ snprintf(symvers, sizeof (symvers), "%s/drti/drti-vers", libdir->dir_path);
len = snprintf(NULL, 0, fmt, dtp->dt_ld_path, emu, file,
symvers, fd, drti) + 1;
--
2.37.1.265.g363c192786.dirty
More information about the DTrace-devel
mailing list