Makefile
application/octet-stream
Filename: Makefile
Type: application/octet-stream
Part: 1
.DEFAULT_GOAL := disassembly
# Set to 0 to recompile with tracepoints completely omitted, as if
# stubbed out by macros.
USE_SDT ?= 1
# Set to 0 to compile with tracepoints unguarded by semaphores
USE_SDT_SEMAPHORES ?= 1
CFLAGS += -Wall -Wextra -O2 -finline-functions
ifeq ($(USE_SDT),1)
ifeq ($(USE_SDT_SEMAPHORES),1)
variant=semaphores
CPPFLAGS += -DUSE_SDT_SEMAPHORES
else
variant=enabled
endif
sdt_noop.c: sdt_noop_probes_enabled.h
variant=enabled
extra_objs+=sdt_noop_probes_enabled.o
CFLAGS+=-DUSE_SDT
else
sdt_noop.c: sdt_noop_probes_disabled.h
variant=disabled
endif
sdt_noop_probes_enabled.h sdt_noop_probes_semaphores.: sdt_noop_probes.d
dtrace -h -C -o $@ -s $<
sdt_noop_probes_enabled.o sdt_noop_probes_semaphores.o: sdt_noop_probes.d
dtrace -G -o $@ -s $<
sdt_noop_probes_disabled.h: sdt_noop_probes.d
sed -E \
-e '/[\t ]*probe/!d' \
-e 's/([\(,][^\),]+)/\1 __attribute__((unused))/g' \
-e 's/\<probe\>[\t ]*([^ \(]*)/__attribute__((always_inline)) static inline void SDT_NOOP_\U\1/' \
-e 's/;/ {}/' $< > $@
rm -f sdt_noop_probes.o
sdt_noop_$(variant).o: sdt_noop.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
sdt_noop_$(variant): sdt_noop_$(variant).o $(extra_objs)
define newline
endef
symbols=main no_args with_many_args with_global_arg with_volatile_arg with_computed_arg with_pointer_chasing
disassembly: sdt_noop_$(variant)
$(foreach symbol,$(symbols),\
objdump -j .text --disassemble="$(symbol)" --no-addresses --no-show-raw-insn sdt_noop_$(variant); $(newline) \
objdump -j .text --disassemble="$(symbol).part.0" --no-addresses --no-show-raw-insn sdt_noop_$(variant); $(newline) \
)
clean:
rm -f sdt_noop*.o sdt_noop_probes_*.h
$(foreach v,enabled disabled semaphores, rm -f sdt_noop_$(v) )