nacl: $(Q)echo "$(bold)$(WHAT) $@:$(normal)" $(Q)cd curvetun/ && source ./nacl_build.sh ~/nacl $(Q)source ~/.bashrc tarball.gz: ; $(call GIT_ARCHIVE,gzip,gz) tarball.bz2: ; $(call GIT_ARCHIVE,bzip2,bz2) tarball.xz: ; $(call GIT_ARCHIVE,xz,xz) tarball: tarball.gz tarball.bz2 tarball.xz tag: $(GIT_TAG) people: $(GIT_PEOPLE) log: $(GIT_LOG) announcement: $(Q)echo -e " *** BLURB HERE (general bits, optional) ***\n\n---\n" > .MAIL_MSG $(Q)echo -e "netsniff-ng $(VERSION_SHORT) ($(NAME)) has been released to the public.\n" >> .MAIL_MSG $(Q)echo -e "It can be fetched via Git:\n" >> .MAIL_MSG $(Q)echo -e " git clone git://github.com/netsniff-ng/netsniff-ng.git" >> .MAIL_MSG $(Q)echo -e " git checkout v$(VERSION_SHORT)\n" >> .MAIL_MSG $(Q)echo -e "Or via HTTP from one of our mirrors:\n" >> .MAIL_MSG $(Q)echo -e " http://pub.netsniff-ng.org/netsniff-ng/netsniff-ng-$(VERSION_SHORT).tar.gz" >> .MAIL_MSG $(Q)echo -e " http://mirror.distanz.ch/netsniff-ng/netsniff-ng-$(VERSION_SHORT).tar.gz" >> .MAIL_MSG $(Q)echo -e " http://github.com/netsniff-ng/netsniff-ng/archive/v$(VERSION_SHORT).tar.gz\n" >> .MAIL_MSG $(Q)echo -e "The release can be verified via Git (see README):\n" >> .MAIL_MSG $(Q)echo -e " git tag -v v$(VERSION_SHORT)\n" >> .MAIL_MSG $(Q)echo -e "Major high-level changes since the last release ($(shell $(GIT_LAST_TAG))) are:\n" >> .MAIL_MSG $(Q)echo -e " *** BLURB HERE (specific bits) ***\n" >> .MAIL_MSG $(Q)echo -e "Contributions since last release:\n" >> .MAIL_MSG $(GIT_PEOPLE) >> .MAIL_MSG $(Q)echo -e "\nGit changelog since last release:\n" >> .MAIL_MSG $(GIT_LOG) >> .MAIL_MSG sign: $(call GPG_SIGN,gz) $(call GPG_SIGN,bz2) $(call GPG_SIGN,xz) release: tag announcement tarball sign $(Q)echo "Released $(bold)$(VERSION_SHORT)$(normal)" FIND_SOURCE_FILES = ( git ls-files '*.[hcS]' 2>/dev/null || \ find . \( -name .git -type d -prune \) \ -o \( -name '*.[hcS]' -type f -print \) ) tags ctags: $(Q)$(call RM,tags) $(FIND_SOURCE_FILES) | xargs ctags -a cscope: $(Q)$(call RM,cscope*) $(FIND_SOURCE_FILES) | xargs cscope -b COV_URL = "https://scan.coverity.com/builds?project=netsniff-ng" # these need to be specified on the command line COV_EMAIL = COV_PASSWD = coverity: $(Q)test -n "$(COV_EMAIL)" || (echo "COV_EMAIL not set" && false) $(Q)test -n "$(COV_PASSWD)" || (echo "COV_PASSWD not set" && false) $(Q)$(MAKE) distclean $(Q)$(call RM,cov-int) $(Q)$(call MKDIR,cov-int) $(Q)./configure $(Q)cov-build --dir cov-int $(MAKE) $(Q)tar czvf netsniff-ng-coverity.tgz cov-int $(Q)echo "Uploading snapshot to Coverity scanner at $(COV_URL)" $(Q)curl --form project=netsniff-ng \ --form file=@netsniff-ng-coverity.tgz \ --form token=$(COV_PASSWD) \ --form email=$(COV_EMAIL) \ --form version=`$(GIT_VERSION)` \ --form description="netsniff-ng snapshot" $(COV_URL) help: $(Q)echo "$(bold)Available tools from the toolkit:$(normal)" $(Q)echo " :={$(TOOLS)}" $(Q)echo "$(bold)Targets for building the toolkit:$(normal)" $(Q)echo " all|toolkit - Build the whole toolkit" $(Q)echo " allbutcurvetun - Build all except curvetun" $(Q)echo " allbutmausezahn - Build all except mausezahn" $(Q)echo " - Build only one of the tools" $(Q)echo "$(bold)Targets for cleaning the toolkit's build files:$(normal)" $(Q)echo " clean - Remove all build files" $(Q)echo " _clean - Remove only one of the tool's files" $(Q)echo " distclean - Remove all build and build config files" $(Q)echo " mrproper - Remove all files not in source distribution" $(Q)echo "$(bold)Targets for installing the toolkit:$(normal)" $(Q)echo " install - Install the whole toolkit" $(Q)echo " _install - Install only one of the tools" $(Q)echo "$(bold)Targets for removing the toolkit:$(normal)" $(Q)echo " uninstall - Remove the whole toolkit from the system" $(Q)echo " _uninstall - Remove only one of the tools" $(Q)echo "$(bold)Hacking/development targets:$(normal)" $(Q)echo " tag - Generate Git tag of current version" $(Q)echo " tarball - Generate tarball of latest version" $(Q)echo " release - Generate a new release" $(Q)echo " tags - Generate sparse ctags" $(Q)echo " cscope - Generate cscope files" $(Q)echo "$(bold)Misc targets:$(normal)" $(Q)echo " nacl - Execute the build_nacl script" $(Q)echo " help - Show this help" $(Q)echo "$(bold)Available parameters:$(normal)" $(Q)echo " DEBUG=1 - Enable debugging" $(Q)echo " HARDENING=1 - Enable GCC hardening of executables" $(Q)echo " PREFIX=/path - Install path prefix" $(Q)echo " DESTDIR=/path - Alternative install destination path" $(Q)echo " CC=cgcc - Use sparse compiler wrapper" $(Q)echo " CFLAGS=\"-O2 -Wall ...\" - Overwrite CFLAGS for compilation" $(Q)echo " CPPFLAGS=\"-I ...\" - Additional CFLAGS for compilation" $(Q)echo " LDFLAGS=\"-L ...\" - Additional LDFLAGS for compilation" $(Q)echo " CCACHE=ccache - Use ccache for compilation" $(Q)echo " C=1 - Check all C source files with sparse" $(Q)echo " Q= - Show verbose garbage" t use for group name of uprobes when making it based on executable filename. For example, if the exec name is libstdc++.so, without this fix perf probe generates "probe_libstdc++" as the group name, but it is failed to set because '+' can not be used for group name. With this fix perf accepts only alphabet, number or '_' for group name, thus perf generates "probe_libstdc" as the group name. E.g. with this fix, you can see the event name has no "+". ---- $ ./perf probe -x /usr/lib64/libstdc++.so.6 -D is_open p:probe_libstdc/is_open /usr/lib64/libstdc++.so.6.0.22:0x8ca80 p:probe_libstdc/is_open_1 /usr/lib64/libstdc++.so.6.0.22:0x8ca70 p:probe_libstdc/is_open_2 /usr/lib64/libstdc++.so.6.0.22:0x8ca60 p:probe_libstdc/is_open_3 /usr/lib64/libstdc++.so.6.0.22:0xb0ad0 p:probe_libstdc/is_open_4 /usr/lib64/libstdc++.so.6.0.22:0xecca9 ---- Committer note: Before this fix: # perf probe -x /usr/lib64/libstdc++.so.6 is_open Failed to write event: Invalid argument Error: Failed to add events. # After the fix: # perf probe -x /usr/lib64/libstdc++.so.6 is_open Added new events: probe_libstdc:is_open (on is_open in /usr/lib64/libstdc++.so.6.0.22) probe_libstdc:is_open_1 (on is_open in /usr/lib64/libstdc++.so.6.0.22) probe_libstdc:is_open_2 (on is_open in /usr/lib64/libstdc++.so.6.0.22) probe_libstdc:is_open_3 (on is_open in /usr/lib64/libstdc++.so.6.0.22) probe_libstdc:is_open_4 (on is_open in /usr/lib64/libstdc++.so.6.0.22) You can now use it in all perf tools, such as: perf record -e probe_libstdc:is_open_4 -aR sleep 1 # perf probe -l probe_libstdc:* probe_libstdc:is_open (on is_open@libstdc++-v3/include/fstream in /usr/lib64/libstdc++.so.6.0.22) probe_libstdc:is_open_1 (on is_open@libstdc++-v3/include/fstream in /usr/lib64/libstdc++.so.6.0.22) probe_libstdc:is_open_2 (on is_open@libstdc++-v3/include/fstream in /usr/lib64/libstdc++.so.6.0.22) probe_libstdc:is_open_3 (on is_open@src/c++98/basic_file.cc in /usr/lib64/libstdc++.so.6.0.22) probe_libstdc:is_open_4 (on stdio_filebuf:5@include/ext/stdio_filebuf.h in /usr/lib64/libstdc++.so.6.0.22) # Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Tested-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/147464491667.29804.9553638175441827970.stgit@devbox Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>