> Perhaps all trace.o files should be put into their own .a instead of > being added directly to the linker line: > > COMMON_LDADDS = $(trace-obj-y) libqemuutil.a libqemustub.a > > I think the linker would only pull in .o files containing symbols that are > actually referenced by the program.
Hi Stefan, That's a good idea! Below patch creates libqemutrace.a. ./trace.o, ./qapi/trace.o and ./util/trace.o are added into libqemuutil.a to avoid recursive dependencies between libqemuutil.a and libqemutrace.a. Anthony diff --git a/Makefile b/Makefile index 6c359b2..565f5c7 100644 --- a/Makefile +++ b/Makefile @@ -345,8 +345,8 @@ subdir-dtc:dtc/libfdt dtc/tests dtc/%: mkdir -p $@ -$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y) $(chardev-obj-y) \ - $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY)) $(trace-obj-y) +$(SUBDIR_RULES): libqemutrace.a libqemuutil.a libqemustub.a $(common-obj-y) $(chardev-obj-y) \ + $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY)) ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS)) # Only keep -O and -g cflags @@ -367,10 +367,11 @@ Makefile: $(version-obj-y) libqemustub.a: $(stub-obj-y) libqemuutil.a: $(util-obj-y) +libqemutrace.a: $(trace-obj-y) ###################################################################### -COMMON_LDADDS = $(trace-obj-y) libqemuutil.a libqemustub.a +COMMON_LDADDS = libqemutrace.a libqemuutil.a libqemustub.a qemu-img.o: qemu-img-cmds.h diff --git a/Makefile.objs b/Makefile.objs index 6167e7b..4289ef9 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -3,6 +3,7 @@ stub-obj-y = stubs/ crypto/ util-obj-y = util/ qobject/ qapi/ util-obj-y += qmp-introspect.o qapi-types.o qapi-visit.o qapi-event.o +util-obj-y += $(trace-root-obj-y) chardev-obj-y = chardev/ @@ -167,8 +168,9 @@ trace-events-subdirs += qapi trace-events-files = $(SRC_PATH)/trace-events $(trace-events-subdirs:%=$(SRC_PATH)/%/trace-events) -trace-obj-y = trace-root.o +trace-root-obj-y = trace-root.o +trace-root-obj-$(CONFIG_TRACE_DTRACE) += trace-dtrace-root.o +trace-obj-y = $(trace-root-obj-y) trace-obj-y += $(trace-events-subdirs:%=%/trace.o) trace-obj-$(CONFIG_TRACE_UST) += trace-ust-all.o -trace-obj-$(CONFIG_TRACE_DTRACE) += trace-dtrace-root.o trace-obj-$(CONFIG_TRACE_DTRACE) += $(trace-events-subdirs:%=%/trace-dtrace.o) diff --git a/Makefile.target b/Makefile.target index 7df2b8c..6f508c8 100644 --- a/Makefile.target +++ b/Makefile.target @@ -201,7 +201,7 @@ all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y) $(QEMU_PROG_BUILD): config-devices.mak -COMMON_LDADDS = $(trace-obj-y) ../libqemuutil.a ../libqemustub.a +COMMON_LDADDS = ../libqemutrace.a ../libqemuutil.a ../libqemustub.a # build either PROG or PROGW $(QEMU_PROG_BUILD): $(all-obj-y) $(COMMON_LDADDS) diff --git a/qapi/Makefile.objs b/qapi/Makefile.objs index 33906ff..d543d56 100644 --- a/qapi/Makefile.objs +++ b/qapi/Makefile.objs @@ -4,3 +4,5 @@ util-obj-y += string-input-visitor.o string-output-visitor.o util-obj-y += opts-visitor.o qapi-clone-visitor.o util-obj-y += qmp-event.o util-obj-y += qapi-util.o +util-obj-y += trace.o +util-obj-$(CONFIG_TRACE_DTRACE) += trace-dtrace.o diff --git a/tests/Makefile.include b/tests/Makefile.include index f3de81f..6cbd602 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -519,7 +519,7 @@ QEMU_CFLAGS += -I$(SRC_PATH)/tests # Deps that are common to various different sets of tests below -test-util-obj-y = $(trace-obj-y) libqemuutil.a libqemustub.a +test-util-obj-y = libqemutrace.a libqemuutil.a libqemustub.a test-qom-obj-y = $(qom-obj-y) $(test-util-obj-y) test-qapi-obj-y = tests/test-qapi-visit.o tests/test-qapi-types.o \ tests/test-qapi-event.o tests/test-qmp-introspect.o \ diff --git a/util/Makefile.objs b/util/Makefile.objs index c6205eb..e38b91e 100644 --- a/util/Makefile.objs +++ b/util/Makefile.objs @@ -43,3 +43,5 @@ util-obj-y += qdist.o util-obj-y += qht.o util-obj-y += range.o util-obj-y += systemd.o +util-obj-y += trace.o +util-obj-$(CONFIG_TRACE_DTRACE) += trace-dtrace.o