* [asan] migrate runtime from llvm @ 2012-10-16 6:40 Wei Mi 2012-10-16 6:40 ` Andrew Pinski 0 siblings, 1 reply; 31+ messages in thread From: Wei Mi @ 2012-10-16 6:40 UTC (permalink / raw) To: gcc-patches; +Cc: Diego Novillo, David Li [-- Attachment #1: Type: text/plain, Size: 766 bytes --] Hi, I create a patch to migrate llvm runtime to asan branch. The configure.ac is a preliminary version and almost doesn't contain any portability check. I build it and test my own small case only and it works. Just send it out to ask for a preliminary review. The patch is zipped to keep it smaller than 400K (required by sourceware.org). Because I am a fresh man to gcc, please forgive me to send out a patch with many errors. Thanks, Wei. gcc/ChangeLog: 2012-10-15 Wei Mi <wmi@google.com> migrate llvm runtime to asan branch * configure.ac: Add libasan to target_libraries * Makefile.def: Ditto * configure: Regenerate * Makefile.in: Regenerate * gcc/gcc.c: Add -lasan -lpthread ... to link command if -fasan is on * libasan: New directory for asan runtime [-- Attachment #2: patch.txt.bz2 --] [-- Type: application/x-bzip2, Size: 125926 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-16 6:40 [asan] migrate runtime from llvm Wei Mi @ 2012-10-16 6:40 ` Andrew Pinski 2012-10-16 6:45 ` Wei Mi 0 siblings, 1 reply; 31+ messages in thread From: Andrew Pinski @ 2012-10-16 6:40 UTC (permalink / raw) To: Wei Mi; +Cc: gcc-patches, Diego Novillo, David Li On Mon, Oct 15, 2012 at 11:25 PM, Wei Mi <wmi@google.com> wrote: > Hi, > > I create a patch to migrate llvm runtime to asan branch. The > configure.ac is a preliminary version and almost doesn't contain any > portability check. I build it and test my own small case only and it > works. Just send it out to ask for a preliminary review. The patch is > zipped to keep it smaller than 400K (required by sourceware.org). > Because I am a fresh man to gcc, please forgive me to send out a patch > with many errors. This is a good start. Can you send a patch out without including libasan so at least the toplevel parts can be reviewed easier? Also the changelog entry for gcc.c go under the gcc/ChangeLog rather than the toplevel one. Thanks, Andrew Pinski > > Thanks, > Wei. > > gcc/ChangeLog: > 2012-10-15 Wei Mi <wmi@google.com> > > migrate llvm runtime to asan branch > * configure.ac: Add libasan to target_libraries > * Makefile.def: Ditto > * configure: Regenerate > * Makefile.in: Regenerate > * gcc/gcc.c: Add -lasan -lpthread ... to link command if -fasan is on > * libasan: New directory for asan runtime ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-16 6:40 ` Andrew Pinski @ 2012-10-16 6:45 ` Wei Mi 2012-10-16 7:47 ` Andrew Pinski 2012-10-16 15:27 ` Jakub Jelinek 0 siblings, 2 replies; 31+ messages in thread From: Wei Mi @ 2012-10-16 6:45 UTC (permalink / raw) To: Andrew Pinski; +Cc: gcc-patches, Diego Novillo, David Li [-- Attachment #1: Type: text/plain, Size: 338 bytes --] > > This is a good start. Can you send a patch out without including > libasan so at least the toplevel parts can be reviewed easier? > Also the changelog entry for gcc.c go under the gcc/ChangeLog rather > than the toplevel one. > > Thanks, > Andrew Pinski Sure, I attach it. Thanks for pointing out the changelog error. Thanks, Wei. [-- Attachment #2: patch.wo.libasan.txt --] [-- Type: text/plain, Size: 26972 bytes --] Index: Makefile.in =================================================================== --- Makefile.in (revision 192487) +++ Makefile.in (working copy) @@ -575,7 +575,7 @@ all: # This is the list of directories that may be needed in RPATH_ENVVAR # so that programs built for the target machine work. -TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libmudflap)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) +TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libmudflap)$(TARGET_LIB_PATH_libasan)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) @if target-libstdc++-v3 TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: @@ -585,6 +585,10 @@ TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TAR TARGET_LIB_PATH_libmudflap = $$r/$(TARGET_SUBDIR)/libmudflap/.libs: @endif target-libmudflap +@if target-libasan +TARGET_LIB_PATH_libasan = $$r/$(TARGET_SUBDIR)/libasan/.libs: +@endif target-libasan + @if target-libssp TARGET_LIB_PATH_libssp = $$r/$(TARGET_SUBDIR)/libssp/.libs: @endif target-libssp @@ -914,6 +918,7 @@ configure-host: \ configure-target: \ maybe-configure-target-libstdc++-v3 \ maybe-configure-target-libmudflap \ + maybe-configure-target-libasan \ maybe-configure-target-libssp \ maybe-configure-target-newlib \ maybe-configure-target-libgcc \ @@ -1062,6 +1067,7 @@ all-host: maybe-all-lto-plugin all-target: maybe-all-target-libstdc++-v3 @endif target-libstdc++-v3-no-bootstrap all-target: maybe-all-target-libmudflap +all-target: maybe-all-target-libasan all-target: maybe-all-target-libssp all-target: maybe-all-target-newlib @if target-libgcc-no-bootstrap @@ -1152,6 +1158,7 @@ info-host: maybe-info-lto-plugin info-target: maybe-info-target-libstdc++-v3 info-target: maybe-info-target-libmudflap +info-target: maybe-info-target-libasan info-target: maybe-info-target-libssp info-target: maybe-info-target-newlib info-target: maybe-info-target-libgcc @@ -1233,6 +1240,7 @@ dvi-host: maybe-dvi-lto-plugin dvi-target: maybe-dvi-target-libstdc++-v3 dvi-target: maybe-dvi-target-libmudflap +dvi-target: maybe-dvi-target-libasan dvi-target: maybe-dvi-target-libssp dvi-target: maybe-dvi-target-newlib dvi-target: maybe-dvi-target-libgcc @@ -1314,6 +1322,7 @@ pdf-host: maybe-pdf-lto-plugin pdf-target: maybe-pdf-target-libstdc++-v3 pdf-target: maybe-pdf-target-libmudflap +pdf-target: maybe-pdf-target-libasan pdf-target: maybe-pdf-target-libssp pdf-target: maybe-pdf-target-newlib pdf-target: maybe-pdf-target-libgcc @@ -1395,6 +1404,7 @@ html-host: maybe-html-lto-plugin html-target: maybe-html-target-libstdc++-v3 html-target: maybe-html-target-libmudflap +html-target: maybe-html-target-libasan html-target: maybe-html-target-libssp html-target: maybe-html-target-newlib html-target: maybe-html-target-libgcc @@ -1476,6 +1486,7 @@ TAGS-host: maybe-TAGS-lto-plugin TAGS-target: maybe-TAGS-target-libstdc++-v3 TAGS-target: maybe-TAGS-target-libmudflap +TAGS-target: maybe-TAGS-target-libasan TAGS-target: maybe-TAGS-target-libssp TAGS-target: maybe-TAGS-target-newlib TAGS-target: maybe-TAGS-target-libgcc @@ -1557,6 +1568,7 @@ install-info-host: maybe-install-info-lt install-info-target: maybe-install-info-target-libstdc++-v3 install-info-target: maybe-install-info-target-libmudflap +install-info-target: maybe-install-info-target-libasan install-info-target: maybe-install-info-target-libssp install-info-target: maybe-install-info-target-newlib install-info-target: maybe-install-info-target-libgcc @@ -1638,6 +1650,7 @@ install-pdf-host: maybe-install-pdf-lto- install-pdf-target: maybe-install-pdf-target-libstdc++-v3 install-pdf-target: maybe-install-pdf-target-libmudflap +install-pdf-target: maybe-install-pdf-target-libasan install-pdf-target: maybe-install-pdf-target-libssp install-pdf-target: maybe-install-pdf-target-newlib install-pdf-target: maybe-install-pdf-target-libgcc @@ -1719,6 +1732,7 @@ install-html-host: maybe-install-html-lt install-html-target: maybe-install-html-target-libstdc++-v3 install-html-target: maybe-install-html-target-libmudflap +install-html-target: maybe-install-html-target-libasan install-html-target: maybe-install-html-target-libssp install-html-target: maybe-install-html-target-newlib install-html-target: maybe-install-html-target-libgcc @@ -1800,6 +1814,7 @@ installcheck-host: maybe-installcheck-lt installcheck-target: maybe-installcheck-target-libstdc++-v3 installcheck-target: maybe-installcheck-target-libmudflap +installcheck-target: maybe-installcheck-target-libasan installcheck-target: maybe-installcheck-target-libssp installcheck-target: maybe-installcheck-target-newlib installcheck-target: maybe-installcheck-target-libgcc @@ -1881,6 +1896,7 @@ mostlyclean-host: maybe-mostlyclean-lto- mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3 mostlyclean-target: maybe-mostlyclean-target-libmudflap +mostlyclean-target: maybe-mostlyclean-target-libasan mostlyclean-target: maybe-mostlyclean-target-libssp mostlyclean-target: maybe-mostlyclean-target-newlib mostlyclean-target: maybe-mostlyclean-target-libgcc @@ -1962,6 +1978,7 @@ clean-host: maybe-clean-lto-plugin clean-target: maybe-clean-target-libstdc++-v3 clean-target: maybe-clean-target-libmudflap +clean-target: maybe-clean-target-libasan clean-target: maybe-clean-target-libssp clean-target: maybe-clean-target-newlib clean-target: maybe-clean-target-libgcc @@ -2043,6 +2060,7 @@ distclean-host: maybe-distclean-lto-plug distclean-target: maybe-distclean-target-libstdc++-v3 distclean-target: maybe-distclean-target-libmudflap +distclean-target: maybe-distclean-target-libasan distclean-target: maybe-distclean-target-libssp distclean-target: maybe-distclean-target-newlib distclean-target: maybe-distclean-target-libgcc @@ -2124,6 +2142,7 @@ maintainer-clean-host: maybe-maintainer- maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3 maintainer-clean-target: maybe-maintainer-clean-target-libmudflap +maintainer-clean-target: maybe-maintainer-clean-target-libasan maintainer-clean-target: maybe-maintainer-clean-target-libssp maintainer-clean-target: maybe-maintainer-clean-target-newlib maintainer-clean-target: maybe-maintainer-clean-target-libgcc @@ -2260,6 +2279,7 @@ check-host: \ check-target: \ maybe-check-target-libstdc++-v3 \ maybe-check-target-libmudflap \ + maybe-check-target-libasan \ maybe-check-target-libssp \ maybe-check-target-newlib \ maybe-check-target-libgcc \ @@ -2414,6 +2434,7 @@ install-host: \ install-target: \ maybe-install-target-libstdc++-v3 \ maybe-install-target-libmudflap \ + maybe-install-target-libasan \ maybe-install-target-libssp \ maybe-install-target-newlib \ maybe-install-target-libgcc \ @@ -2515,6 +2536,7 @@ install-strip-host: \ install-strip-target: \ maybe-install-strip-target-libstdc++-v3 \ maybe-install-strip-target-libmudflap \ + maybe-install-strip-target-libasan \ maybe-install-strip-target-libssp \ maybe-install-strip-target-newlib \ maybe-install-strip-target-libgcc \ @@ -32337,6 +32359,463 @@ maintainer-clean-target-libmudflap: +.PHONY: configure-target-libasan maybe-configure-target-libasan +maybe-configure-target-libasan: +@if gcc-bootstrap +configure-target-libasan: stage_current +@endif gcc-bootstrap +@if target-libasan +maybe-configure-target-libasan: configure-target-libasan +configure-target-libasan: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libasan..."; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libasan ; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libasan/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libasan/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libasan/multilib.tmp $(TARGET_SUBDIR)/libasan/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libasan/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libasan/Makefile; \ + mv $(TARGET_SUBDIR)/libasan/multilib.tmp $(TARGET_SUBDIR)/libasan/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libasan/multilib.tmp $(TARGET_SUBDIR)/libasan/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libasan/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libasan ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo Configuring in $(TARGET_SUBDIR)/libasan; \ + cd "$(TARGET_SUBDIR)/libasan" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libasan/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libasan"; \ + libsrcdir="$$s/libasan"; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + || exit 1 +@endif target-libasan + + + + + +.PHONY: all-target-libasan maybe-all-target-libasan +maybe-all-target-libasan: +@if gcc-bootstrap +all-target-libasan: stage_current +@endif gcc-bootstrap +@if target-libasan +TARGET-target-libasan=all +maybe-all-target-libasan: all-target-libasan +all-target-libasan: configure-target-libasan + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ + $(TARGET-target-libasan)) +@endif target-libasan + + + + + +.PHONY: check-target-libasan maybe-check-target-libasan +maybe-check-target-libasan: +@if target-libasan +maybe-check-target-libasan: check-target-libasan + +check-target-libasan: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) check) + +@endif target-libasan + +.PHONY: install-target-libasan maybe-install-target-libasan +maybe-install-target-libasan: +@if target-libasan +maybe-install-target-libasan: install-target-libasan + +install-target-libasan: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install) + +@endif target-libasan + +.PHONY: install-strip-target-libasan maybe-install-strip-target-libasan +maybe-install-strip-target-libasan: +@if target-libasan +maybe-install-strip-target-libasan: install-strip-target-libasan + +install-strip-target-libasan: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libasan + +# Other targets (info, dvi, pdf, etc.) + +.PHONY: maybe-info-target-libasan info-target-libasan +maybe-info-target-libasan: +@if target-libasan +maybe-info-target-libasan: info-target-libasan + +info-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing info in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + info) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-dvi-target-libasan dvi-target-libasan +maybe-dvi-target-libasan: +@if target-libasan +maybe-dvi-target-libasan: dvi-target-libasan + +dvi-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing dvi in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + dvi) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-pdf-target-libasan pdf-target-libasan +maybe-pdf-target-libasan: +@if target-libasan +maybe-pdf-target-libasan: pdf-target-libasan + +pdf-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing pdf in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + pdf) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-html-target-libasan html-target-libasan +maybe-html-target-libasan: +@if target-libasan +maybe-html-target-libasan: html-target-libasan + +html-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing html in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + html) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-TAGS-target-libasan TAGS-target-libasan +maybe-TAGS-target-libasan: +@if target-libasan +maybe-TAGS-target-libasan: TAGS-target-libasan + +TAGS-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing TAGS in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + TAGS) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-install-info-target-libasan install-info-target-libasan +maybe-install-info-target-libasan: +@if target-libasan +maybe-install-info-target-libasan: install-info-target-libasan + +install-info-target-libasan: \ + configure-target-libasan \ + info-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-info in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-info) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-install-pdf-target-libasan install-pdf-target-libasan +maybe-install-pdf-target-libasan: +@if target-libasan +maybe-install-pdf-target-libasan: install-pdf-target-libasan + +install-pdf-target-libasan: \ + configure-target-libasan \ + pdf-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-pdf in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-pdf) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-install-html-target-libasan install-html-target-libasan +maybe-install-html-target-libasan: +@if target-libasan +maybe-install-html-target-libasan: install-html-target-libasan + +install-html-target-libasan: \ + configure-target-libasan \ + html-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-html in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-html) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-installcheck-target-libasan installcheck-target-libasan +maybe-installcheck-target-libasan: +@if target-libasan +maybe-installcheck-target-libasan: installcheck-target-libasan + +installcheck-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing installcheck in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + installcheck) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-mostlyclean-target-libasan mostlyclean-target-libasan +maybe-mostlyclean-target-libasan: +@if target-libasan +maybe-mostlyclean-target-libasan: mostlyclean-target-libasan + +mostlyclean-target-libasan: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing mostlyclean in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + mostlyclean) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-clean-target-libasan clean-target-libasan +maybe-clean-target-libasan: +@if target-libasan +maybe-clean-target-libasan: clean-target-libasan + +clean-target-libasan: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing clean in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + clean) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-distclean-target-libasan distclean-target-libasan +maybe-distclean-target-libasan: +@if target-libasan +maybe-distclean-target-libasan: distclean-target-libasan + +distclean-target-libasan: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing distclean in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + distclean) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-maintainer-clean-target-libasan maintainer-clean-target-libasan +maybe-maintainer-clean-target-libasan: +@if target-libasan +maybe-maintainer-clean-target-libasan: maintainer-clean-target-libasan + +maintainer-clean-target-libasan: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + maintainer-clean) \ + || exit 1 + +@endif target-libasan + + + + + .PHONY: configure-target-libssp maybe-configure-target-libssp maybe-configure-target-libssp: @if gcc-bootstrap @@ -44591,6 +45070,7 @@ configure-stage4-target-libstdc++-v3: ma configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-gcc configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-gcc configure-target-libmudflap: stage_last +configure-target-libasan: stage_last configure-target-libssp: stage_last configure-target-newlib: stage_last configure-stage1-target-libgcc: maybe-all-stage1-gcc @@ -44626,6 +45106,7 @@ configure-target-libatomic: stage_last @if gcc-no-bootstrap configure-target-libstdc++-v3: maybe-all-gcc configure-target-libmudflap: maybe-all-gcc +configure-target-libasan: maybe-all-gcc configure-target-libssp: maybe-all-gcc configure-target-newlib: maybe-all-gcc configure-target-libgcc: maybe-all-gcc @@ -45405,6 +45886,7 @@ configure-stagefeedback-target-libgomp: @if gcc-no-bootstrap configure-target-libstdc++-v3: maybe-all-target-libgcc configure-target-libmudflap: maybe-all-target-libgcc +configure-target-libasan: maybe-all-target-libgcc configure-target-libssp: maybe-all-target-libgcc configure-target-newlib: maybe-all-target-libgcc configure-target-libbacktrace: maybe-all-target-libgcc @@ -45431,6 +45913,8 @@ configure-target-libstdc++-v3: maybe-all configure-target-libmudflap: maybe-all-target-newlib maybe-all-target-libgloss +configure-target-libasan: maybe-all-target-newlib maybe-all-target-libgloss + configure-target-libssp: maybe-all-target-newlib maybe-all-target-libgloss Index: configure.ac =================================================================== --- configure.ac (revision 192487) +++ configure.ac (working copy) @@ -160,6 +160,7 @@ target_libraries="target-libgcc \ target-libitm \ target-libstdc++-v3 \ target-libmudflap \ + target-libasan \ target-libssp \ target-libquadmath \ target-libgfortran \ Index: configure =================================================================== --- configure (revision 192487) +++ configure (working copy) @@ -2725,6 +2725,7 @@ target_libraries="target-libgcc \ target-libitm \ target-libstdc++-v3 \ target-libmudflap \ + target-libasan \ target-libssp \ target-libquadmath \ target-libgfortran \ Index: gcc/gcc.c =================================================================== --- gcc/gcc.c (revision 192487) +++ gcc/gcc.c (working copy) @@ -679,6 +679,7 @@ proper position among the other output f %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ %(mflib) " STACK_SPLIT_SPEC "\ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ + %{fasan|coverage:-lasan -lpthread -ldl -lstdc++}\ %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}" #endif Index: Makefile.def =================================================================== --- Makefile.def (revision 192487) +++ Makefile.def (working copy) @@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; lib_path=src/.libs; raw_cxx=true; }; target_modules = { module= libmudflap; lib_path=.libs; }; +target_modules = { module= libasan; lib_path=.libs; }; target_modules = { module= libssp; lib_path=.libs; }; target_modules = { module= newlib; }; target_modules = { module= libgcc; bootstrap=true; no_check=true; }; ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-16 6:45 ` Wei Mi @ 2012-10-16 7:47 ` Andrew Pinski 2012-10-16 15:27 ` Jakub Jelinek 1 sibling, 0 replies; 31+ messages in thread From: Andrew Pinski @ 2012-10-16 7:47 UTC (permalink / raw) To: Wei Mi; +Cc: gcc-patches, Diego Novillo, David Li On Mon, Oct 15, 2012 at 11:39 PM, Wei Mi <wmi@google.com> wrote: >> >> This is a good start. Can you send a patch out without including >> libasan so at least the toplevel parts can be reviewed easier? >> Also the changelog entry for gcc.c go under the gcc/ChangeLog rather >> than the toplevel one. >> >> Thanks, >> Andrew Pinski > > Sure, I attach it. Thanks for pointing out the changelog error. + %{fasan|coverage:-lasan -lpthread -ldl -lstdc++}\ Just curious, does asan runtime really require linking against pthread and the standard C++ library? Also I think the above will not work if shared libraries are disabled as -lsupc++ is also needed when linking against the stdc++. Also if libasan really depends on the C++ library, then most likely you should a dependency in the toplevel makefile itself and maybe even have the shared version of libasan link against libstdc++. Thanks, Andrew Pinski > > Thanks, > Wei. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-16 6:45 ` Wei Mi 2012-10-16 7:47 ` Andrew Pinski @ 2012-10-16 15:27 ` Jakub Jelinek 2012-10-18 17:00 ` Wei Mi 2012-10-18 18:22 ` Xinliang David Li 1 sibling, 2 replies; 31+ messages in thread From: Jakub Jelinek @ 2012-10-16 15:27 UTC (permalink / raw) To: Wei Mi; +Cc: Andrew Pinski, gcc-patches, Diego Novillo, David Li On Mon, Oct 15, 2012 at 11:39:52PM -0700, Wei Mi wrote: > --- gcc/gcc.c (revision 192487) > +++ gcc/gcc.c (working copy) > @@ -679,6 +679,7 @@ proper position among the other output f > %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ > %(mflib) " STACK_SPLIT_SPEC "\ > %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ > + %{fasan|coverage:-lasan -lpthread -ldl -lstdc++}\ > %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ > %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}" Why the |coverage there? It isn't related to asan in any way. Also, why -lstdc++ in there? I could understand %{static:-lstdc++}, but given that libasan doesn't support static linking, I find it hardly useful. > --- Makefile.def (revision 192487) > +++ Makefile.def (working copy) > @@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; > lib_path=src/.libs; > raw_cxx=true; }; > target_modules = { module= libmudflap; lib_path=.libs; }; > +target_modules = { module= libasan; lib_path=.libs; }; > target_modules = { module= libssp; lib_path=.libs; }; > target_modules = { module= newlib; }; > target_modules = { module= libgcc; bootstrap=true; no_check=true; }; Shouldn't libasan, given it is a C++ shared library, depend on libstdc++-v3? Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-16 15:27 ` Jakub Jelinek @ 2012-10-18 17:00 ` Wei Mi 2012-10-18 18:28 ` Jakub Jelinek 2012-10-18 18:22 ` Xinliang David Li 1 sibling, 1 reply; 31+ messages in thread From: Wei Mi @ 2012-10-18 17:00 UTC (permalink / raw) To: Jakub Jelinek; +Cc: Andrew Pinski, gcc-patches, Diego Novillo, David Li [-- Attachment #1: Type: text/plain, Size: 1954 bytes --] Thanks for the comments. I create a dynamic linking libasan and update the patch. Thanks, Wei. ChangeLog: 2012-10-18 Wei Mi <wmi@google.com> migrate llvm runtime to asan branch * configure.ac: Add libasan to target_libraries * Makefile.def: Ditto * configure: Regenerate * Makefile.in: Regenerate * libasan: New directory for asan runtime gcc/ChangeLog: 2012-10-18 Wei Mi <wmi@google.com> link pthread and dynamic load library * gcc/gcc.c: Add -lasan -lpthread -ldl to link command if -fasan is on On Tue, Oct 16, 2012 at 12:27 AM, Jakub Jelinek <jakub@redhat.com> wrote: > On Mon, Oct 15, 2012 at 11:39:52PM -0700, Wei Mi wrote: >> --- gcc/gcc.c (revision 192487) >> +++ gcc/gcc.c (working copy) >> @@ -679,6 +679,7 @@ proper position among the other output f >> %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ >> %(mflib) " STACK_SPLIT_SPEC "\ >> %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ >> + %{fasan|coverage:-lasan -lpthread -ldl -lstdc++}\ >> %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ >> %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}" > > Why the |coverage there? It isn't related to asan in any way. > Also, why -lstdc++ in there? I could understand %{static:-lstdc++}, but > given that libasan doesn't support static linking, I find it hardly useful. > >> --- Makefile.def (revision 192487) >> +++ Makefile.def (working copy) >> @@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; >> lib_path=src/.libs; >> raw_cxx=true; }; >> target_modules = { module= libmudflap; lib_path=.libs; }; >> +target_modules = { module= libasan; lib_path=.libs; }; >> target_modules = { module= libssp; lib_path=.libs; }; >> target_modules = { module= newlib; }; >> target_modules = { module= libgcc; bootstrap=true; no_check=true; }; > > Shouldn't libasan, given it is a C++ shared library, depend on libstdc++-v3? > > Jakub [-- Attachment #2: patch.wo.libasan.txt --] [-- Type: text/plain, Size: 26954 bytes --] Index: Makefile.in =================================================================== --- Makefile.in (revision 192567) +++ Makefile.in (working copy) @@ -575,7 +575,7 @@ all: # This is the list of directories that may be needed in RPATH_ENVVAR # so that programs built for the target machine work. -TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libmudflap)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) +TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libmudflap)$(TARGET_LIB_PATH_libasan)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) @if target-libstdc++-v3 TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: @@ -585,6 +585,10 @@ TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TAR TARGET_LIB_PATH_libmudflap = $$r/$(TARGET_SUBDIR)/libmudflap/.libs: @endif target-libmudflap +@if target-libasan +TARGET_LIB_PATH_libasan = $$r/$(TARGET_SUBDIR)/libasan/.libs: +@endif target-libasan + @if target-libssp TARGET_LIB_PATH_libssp = $$r/$(TARGET_SUBDIR)/libssp/.libs: @endif target-libssp @@ -914,6 +918,7 @@ configure-host: \ configure-target: \ maybe-configure-target-libstdc++-v3 \ maybe-configure-target-libmudflap \ + maybe-configure-target-libasan \ maybe-configure-target-libssp \ maybe-configure-target-newlib \ maybe-configure-target-libgcc \ @@ -1062,6 +1067,7 @@ all-host: maybe-all-lto-plugin all-target: maybe-all-target-libstdc++-v3 @endif target-libstdc++-v3-no-bootstrap all-target: maybe-all-target-libmudflap +all-target: maybe-all-target-libasan all-target: maybe-all-target-libssp all-target: maybe-all-target-newlib @if target-libgcc-no-bootstrap @@ -1152,6 +1158,7 @@ info-host: maybe-info-lto-plugin info-target: maybe-info-target-libstdc++-v3 info-target: maybe-info-target-libmudflap +info-target: maybe-info-target-libasan info-target: maybe-info-target-libssp info-target: maybe-info-target-newlib info-target: maybe-info-target-libgcc @@ -1233,6 +1240,7 @@ dvi-host: maybe-dvi-lto-plugin dvi-target: maybe-dvi-target-libstdc++-v3 dvi-target: maybe-dvi-target-libmudflap +dvi-target: maybe-dvi-target-libasan dvi-target: maybe-dvi-target-libssp dvi-target: maybe-dvi-target-newlib dvi-target: maybe-dvi-target-libgcc @@ -1314,6 +1322,7 @@ pdf-host: maybe-pdf-lto-plugin pdf-target: maybe-pdf-target-libstdc++-v3 pdf-target: maybe-pdf-target-libmudflap +pdf-target: maybe-pdf-target-libasan pdf-target: maybe-pdf-target-libssp pdf-target: maybe-pdf-target-newlib pdf-target: maybe-pdf-target-libgcc @@ -1395,6 +1404,7 @@ html-host: maybe-html-lto-plugin html-target: maybe-html-target-libstdc++-v3 html-target: maybe-html-target-libmudflap +html-target: maybe-html-target-libasan html-target: maybe-html-target-libssp html-target: maybe-html-target-newlib html-target: maybe-html-target-libgcc @@ -1476,6 +1486,7 @@ TAGS-host: maybe-TAGS-lto-plugin TAGS-target: maybe-TAGS-target-libstdc++-v3 TAGS-target: maybe-TAGS-target-libmudflap +TAGS-target: maybe-TAGS-target-libasan TAGS-target: maybe-TAGS-target-libssp TAGS-target: maybe-TAGS-target-newlib TAGS-target: maybe-TAGS-target-libgcc @@ -1557,6 +1568,7 @@ install-info-host: maybe-install-info-lt install-info-target: maybe-install-info-target-libstdc++-v3 install-info-target: maybe-install-info-target-libmudflap +install-info-target: maybe-install-info-target-libasan install-info-target: maybe-install-info-target-libssp install-info-target: maybe-install-info-target-newlib install-info-target: maybe-install-info-target-libgcc @@ -1638,6 +1650,7 @@ install-pdf-host: maybe-install-pdf-lto- install-pdf-target: maybe-install-pdf-target-libstdc++-v3 install-pdf-target: maybe-install-pdf-target-libmudflap +install-pdf-target: maybe-install-pdf-target-libasan install-pdf-target: maybe-install-pdf-target-libssp install-pdf-target: maybe-install-pdf-target-newlib install-pdf-target: maybe-install-pdf-target-libgcc @@ -1719,6 +1732,7 @@ install-html-host: maybe-install-html-lt install-html-target: maybe-install-html-target-libstdc++-v3 install-html-target: maybe-install-html-target-libmudflap +install-html-target: maybe-install-html-target-libasan install-html-target: maybe-install-html-target-libssp install-html-target: maybe-install-html-target-newlib install-html-target: maybe-install-html-target-libgcc @@ -1800,6 +1814,7 @@ installcheck-host: maybe-installcheck-lt installcheck-target: maybe-installcheck-target-libstdc++-v3 installcheck-target: maybe-installcheck-target-libmudflap +installcheck-target: maybe-installcheck-target-libasan installcheck-target: maybe-installcheck-target-libssp installcheck-target: maybe-installcheck-target-newlib installcheck-target: maybe-installcheck-target-libgcc @@ -1881,6 +1896,7 @@ mostlyclean-host: maybe-mostlyclean-lto- mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3 mostlyclean-target: maybe-mostlyclean-target-libmudflap +mostlyclean-target: maybe-mostlyclean-target-libasan mostlyclean-target: maybe-mostlyclean-target-libssp mostlyclean-target: maybe-mostlyclean-target-newlib mostlyclean-target: maybe-mostlyclean-target-libgcc @@ -1962,6 +1978,7 @@ clean-host: maybe-clean-lto-plugin clean-target: maybe-clean-target-libstdc++-v3 clean-target: maybe-clean-target-libmudflap +clean-target: maybe-clean-target-libasan clean-target: maybe-clean-target-libssp clean-target: maybe-clean-target-newlib clean-target: maybe-clean-target-libgcc @@ -2043,6 +2060,7 @@ distclean-host: maybe-distclean-lto-plug distclean-target: maybe-distclean-target-libstdc++-v3 distclean-target: maybe-distclean-target-libmudflap +distclean-target: maybe-distclean-target-libasan distclean-target: maybe-distclean-target-libssp distclean-target: maybe-distclean-target-newlib distclean-target: maybe-distclean-target-libgcc @@ -2124,6 +2142,7 @@ maintainer-clean-host: maybe-maintainer- maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3 maintainer-clean-target: maybe-maintainer-clean-target-libmudflap +maintainer-clean-target: maybe-maintainer-clean-target-libasan maintainer-clean-target: maybe-maintainer-clean-target-libssp maintainer-clean-target: maybe-maintainer-clean-target-newlib maintainer-clean-target: maybe-maintainer-clean-target-libgcc @@ -2260,6 +2279,7 @@ check-host: \ check-target: \ maybe-check-target-libstdc++-v3 \ maybe-check-target-libmudflap \ + maybe-check-target-libasan \ maybe-check-target-libssp \ maybe-check-target-newlib \ maybe-check-target-libgcc \ @@ -2414,6 +2434,7 @@ install-host: \ install-target: \ maybe-install-target-libstdc++-v3 \ maybe-install-target-libmudflap \ + maybe-install-target-libasan \ maybe-install-target-libssp \ maybe-install-target-newlib \ maybe-install-target-libgcc \ @@ -2515,6 +2536,7 @@ install-strip-host: \ install-strip-target: \ maybe-install-strip-target-libstdc++-v3 \ maybe-install-strip-target-libmudflap \ + maybe-install-strip-target-libasan \ maybe-install-strip-target-libssp \ maybe-install-strip-target-newlib \ maybe-install-strip-target-libgcc \ @@ -32337,6 +32359,463 @@ maintainer-clean-target-libmudflap: +.PHONY: configure-target-libasan maybe-configure-target-libasan +maybe-configure-target-libasan: +@if gcc-bootstrap +configure-target-libasan: stage_current +@endif gcc-bootstrap +@if target-libasan +maybe-configure-target-libasan: configure-target-libasan +configure-target-libasan: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libasan..."; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libasan ; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libasan/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libasan/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libasan/multilib.tmp $(TARGET_SUBDIR)/libasan/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libasan/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libasan/Makefile; \ + mv $(TARGET_SUBDIR)/libasan/multilib.tmp $(TARGET_SUBDIR)/libasan/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libasan/multilib.tmp $(TARGET_SUBDIR)/libasan/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libasan/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libasan ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo Configuring in $(TARGET_SUBDIR)/libasan; \ + cd "$(TARGET_SUBDIR)/libasan" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libasan/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libasan"; \ + libsrcdir="$$s/libasan"; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + || exit 1 +@endif target-libasan + + + + + +.PHONY: all-target-libasan maybe-all-target-libasan +maybe-all-target-libasan: +@if gcc-bootstrap +all-target-libasan: stage_current +@endif gcc-bootstrap +@if target-libasan +TARGET-target-libasan=all +maybe-all-target-libasan: all-target-libasan +all-target-libasan: configure-target-libasan + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ + $(TARGET-target-libasan)) +@endif target-libasan + + + + + +.PHONY: check-target-libasan maybe-check-target-libasan +maybe-check-target-libasan: +@if target-libasan +maybe-check-target-libasan: check-target-libasan + +check-target-libasan: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) check) + +@endif target-libasan + +.PHONY: install-target-libasan maybe-install-target-libasan +maybe-install-target-libasan: +@if target-libasan +maybe-install-target-libasan: install-target-libasan + +install-target-libasan: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install) + +@endif target-libasan + +.PHONY: install-strip-target-libasan maybe-install-strip-target-libasan +maybe-install-strip-target-libasan: +@if target-libasan +maybe-install-strip-target-libasan: install-strip-target-libasan + +install-strip-target-libasan: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libasan + +# Other targets (info, dvi, pdf, etc.) + +.PHONY: maybe-info-target-libasan info-target-libasan +maybe-info-target-libasan: +@if target-libasan +maybe-info-target-libasan: info-target-libasan + +info-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing info in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + info) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-dvi-target-libasan dvi-target-libasan +maybe-dvi-target-libasan: +@if target-libasan +maybe-dvi-target-libasan: dvi-target-libasan + +dvi-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing dvi in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + dvi) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-pdf-target-libasan pdf-target-libasan +maybe-pdf-target-libasan: +@if target-libasan +maybe-pdf-target-libasan: pdf-target-libasan + +pdf-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing pdf in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + pdf) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-html-target-libasan html-target-libasan +maybe-html-target-libasan: +@if target-libasan +maybe-html-target-libasan: html-target-libasan + +html-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing html in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + html) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-TAGS-target-libasan TAGS-target-libasan +maybe-TAGS-target-libasan: +@if target-libasan +maybe-TAGS-target-libasan: TAGS-target-libasan + +TAGS-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing TAGS in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + TAGS) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-install-info-target-libasan install-info-target-libasan +maybe-install-info-target-libasan: +@if target-libasan +maybe-install-info-target-libasan: install-info-target-libasan + +install-info-target-libasan: \ + configure-target-libasan \ + info-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-info in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-info) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-install-pdf-target-libasan install-pdf-target-libasan +maybe-install-pdf-target-libasan: +@if target-libasan +maybe-install-pdf-target-libasan: install-pdf-target-libasan + +install-pdf-target-libasan: \ + configure-target-libasan \ + pdf-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-pdf in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-pdf) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-install-html-target-libasan install-html-target-libasan +maybe-install-html-target-libasan: +@if target-libasan +maybe-install-html-target-libasan: install-html-target-libasan + +install-html-target-libasan: \ + configure-target-libasan \ + html-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-html in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-html) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-installcheck-target-libasan installcheck-target-libasan +maybe-installcheck-target-libasan: +@if target-libasan +maybe-installcheck-target-libasan: installcheck-target-libasan + +installcheck-target-libasan: \ + configure-target-libasan + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing installcheck in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + installcheck) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-mostlyclean-target-libasan mostlyclean-target-libasan +maybe-mostlyclean-target-libasan: +@if target-libasan +maybe-mostlyclean-target-libasan: mostlyclean-target-libasan + +mostlyclean-target-libasan: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing mostlyclean in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + mostlyclean) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-clean-target-libasan clean-target-libasan +maybe-clean-target-libasan: +@if target-libasan +maybe-clean-target-libasan: clean-target-libasan + +clean-target-libasan: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing clean in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + clean) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-distclean-target-libasan distclean-target-libasan +maybe-distclean-target-libasan: +@if target-libasan +maybe-distclean-target-libasan: distclean-target-libasan + +distclean-target-libasan: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing distclean in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + distclean) \ + || exit 1 + +@endif target-libasan + +.PHONY: maybe-maintainer-clean-target-libasan maintainer-clean-target-libasan +maybe-maintainer-clean-target-libasan: +@if target-libasan +maybe-maintainer-clean-target-libasan: maintainer-clean-target-libasan + +maintainer-clean-target-libasan: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libasan/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libasan" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libasan && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + maintainer-clean) \ + || exit 1 + +@endif target-libasan + + + + + .PHONY: configure-target-libssp maybe-configure-target-libssp maybe-configure-target-libssp: @if gcc-bootstrap @@ -44591,6 +45070,7 @@ configure-stage4-target-libstdc++-v3: ma configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-gcc configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-gcc configure-target-libmudflap: stage_last +configure-target-libasan: stage_last configure-target-libssp: stage_last configure-target-newlib: stage_last configure-stage1-target-libgcc: maybe-all-stage1-gcc @@ -44626,6 +45106,7 @@ configure-target-libatomic: stage_last @if gcc-no-bootstrap configure-target-libstdc++-v3: maybe-all-gcc configure-target-libmudflap: maybe-all-gcc +configure-target-libasan: maybe-all-gcc configure-target-libssp: maybe-all-gcc configure-target-newlib: maybe-all-gcc configure-target-libgcc: maybe-all-gcc @@ -45405,6 +45886,7 @@ configure-stagefeedback-target-libgomp: @if gcc-no-bootstrap configure-target-libstdc++-v3: maybe-all-target-libgcc configure-target-libmudflap: maybe-all-target-libgcc +configure-target-libasan: maybe-all-target-libgcc configure-target-libssp: maybe-all-target-libgcc configure-target-newlib: maybe-all-target-libgcc configure-target-libbacktrace: maybe-all-target-libgcc @@ -45431,6 +45913,8 @@ configure-target-libstdc++-v3: maybe-all configure-target-libmudflap: maybe-all-target-newlib maybe-all-target-libgloss +configure-target-libasan: maybe-all-target-newlib maybe-all-target-libgloss + configure-target-libssp: maybe-all-target-newlib maybe-all-target-libgloss Index: Makefile.def =================================================================== --- Makefile.def (revision 192567) +++ Makefile.def (working copy) @@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; lib_path=src/.libs; raw_cxx=true; }; target_modules = { module= libmudflap; lib_path=.libs; }; +target_modules = { module= libasan; lib_path=.libs; }; target_modules = { module= libssp; lib_path=.libs; }; target_modules = { module= newlib; }; target_modules = { module= libgcc; bootstrap=true; no_check=true; }; Index: configure =================================================================== --- configure (revision 192567) +++ configure (working copy) @@ -2725,6 +2725,7 @@ target_libraries="target-libgcc \ target-libitm \ target-libstdc++-v3 \ target-libmudflap \ + target-libasan \ target-libssp \ target-libquadmath \ target-libgfortran \ Index: gcc/gcc.c =================================================================== --- gcc/gcc.c (revision 192567) +++ gcc/gcc.c (working copy) @@ -679,6 +679,7 @@ proper position among the other output f %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ %(mflib) " STACK_SPLIT_SPEC "\ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ + %{fasan:-lasan -lpthread -ldl}\ %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}" #endif Index: configure.ac =================================================================== --- configure.ac (revision 192567) +++ configure.ac (working copy) @@ -160,6 +160,7 @@ target_libraries="target-libgcc \ target-libitm \ target-libstdc++-v3 \ target-libmudflap \ + target-libasan \ target-libssp \ target-libquadmath \ target-libgfortran \ [-- Attachment #3: patch.txt.bz2 --] [-- Type: application/x-bzip2, Size: 190184 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-18 17:00 ` Wei Mi @ 2012-10-18 18:28 ` Jakub Jelinek 2012-10-18 20:25 ` Wei Mi 0 siblings, 1 reply; 31+ messages in thread From: Jakub Jelinek @ 2012-10-18 18:28 UTC (permalink / raw) To: Wei Mi; +Cc: Andrew Pinski, gcc-patches, Diego Novillo, David Li On Thu, Oct 18, 2012 at 09:46:36AM -0700, Wei Mi wrote: > --- gcc/gcc.c (revision 192567) > +++ gcc/gcc.c (working copy) > @@ -679,6 +679,7 @@ proper position among the other output f > %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ > %(mflib) " STACK_SPLIT_SPEC "\ > %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ > + %{fasan:-lasan -lpthread -ldl}\ > %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ > %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}" > #endif Sorry for not mentioning it earlier at once, but -lpthread -ldl shouldn't be there either, the -fasan compiled code makes no direct calls to -lpthread nor -ldl, just libasan. Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-18 18:28 ` Jakub Jelinek @ 2012-10-18 20:25 ` Wei Mi 2012-10-19 3:49 ` Wei Mi 0 siblings, 1 reply; 31+ messages in thread From: Wei Mi @ 2012-10-18 20:25 UTC (permalink / raw) To: Jakub Jelinek; +Cc: Andrew Pinski, gcc-patches, Diego Novillo, David Li On Thu, Oct 18, 2012 at 11:16 AM, Jakub Jelinek <jakub@redhat.com> wrote: > On Thu, Oct 18, 2012 at 09:46:36AM -0700, Wei Mi wrote: >> --- gcc/gcc.c (revision 192567) >> +++ gcc/gcc.c (working copy) >> @@ -679,6 +679,7 @@ proper position among the other output f >> %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ >> %(mflib) " STACK_SPLIT_SPEC "\ >> %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ >> + %{fasan:-lasan -lpthread -ldl}\ >> %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ >> %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}" >> #endif > > Sorry for not mentioning it earlier at once, but -lpthread -ldl shouldn't > be there either, the -fasan compiled code makes no direct calls to > -lpthread nor -ldl, just libasan. > > Jakub Thanks, I move those options to libasan LDFLAGS. Wei. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-18 20:25 ` Wei Mi @ 2012-10-19 3:49 ` Wei Mi 2012-10-19 17:43 ` Xinliang David Li 0 siblings, 1 reply; 31+ messages in thread From: Wei Mi @ 2012-10-19 3:49 UTC (permalink / raw) To: Jakub Jelinek; +Cc: Andrew Pinski, gcc-patches, Diego Novillo, David Li [-- Attachment #1: Type: text/plain, Size: 350 bytes --] Hi, David cought a problem in the last patch when he tries to built libasan. The problem was that an incomplete libtool under libasan build directory was generated. The cause is that the old patch used an old ltmain.sh to generate libtool. I fix it and attach a new patch. And the new patch move -lpthread and -ldl to libasan LDFLAGS. Thanks, Wei. [-- Attachment #2: patch.txt.bz2 --] [-- Type: application/x-bzip2, Size: 284555 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-19 3:49 ` Wei Mi @ 2012-10-19 17:43 ` Xinliang David Li 2012-10-19 18:52 ` Diego Novillo 2012-10-19 19:02 ` Wei Mi 0 siblings, 2 replies; 31+ messages in thread From: Xinliang David Li @ 2012-10-19 17:43 UTC (permalink / raw) To: Wei Mi; +Cc: Jakub Jelinek, Andrew Pinski, gcc-patches, Diego Novillo I tried it, and this version works for me. Your probably do not need to add the m4 subdir under libasan. The required m4 files are either in .. or ../config dir. See how libmudflap does it. Other than that, if there are no other comments, the change is good to check into the branch. Remaining bugs can always be found and fixed later. thanks, David On Thu, Oct 18, 2012 at 8:04 PM, Wei Mi <wmi@google.com> wrote: > Hi, > > David cought a problem in the last patch when he tries to built > libasan. The problem was that an incomplete libtool under libasan > build directory was generated. The cause is that the old patch used an > old ltmain.sh to generate libtool. I fix it and attach a new patch. > And the new patch move -lpthread and -ldl to libasan LDFLAGS. > > Thanks, > Wei. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-19 17:43 ` Xinliang David Li @ 2012-10-19 18:52 ` Diego Novillo 2012-10-19 19:02 ` Wei Mi 1 sibling, 0 replies; 31+ messages in thread From: Diego Novillo @ 2012-10-19 18:52 UTC (permalink / raw) To: Xinliang David Li; +Cc: Wei Mi, Jakub Jelinek, Andrew Pinski, gcc-patches On 2012-10-19 13:16 , Xinliang David Li wrote: > Other than that, if there are no other comments, the change is good to > check into the branch. Remaining bugs can always be found and fixed > later. Agreed. David, could you commit the patch after Wei has addressed your feedback? I have just committed a merge from trunk. Once the runtime is in, please test patches against it. We still don't have dejagnu glue, so testing will need to be manual at first. Diego. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-19 17:43 ` Xinliang David Li 2012-10-19 18:52 ` Diego Novillo @ 2012-10-19 19:02 ` Wei Mi 2012-10-19 20:28 ` Xinliang David Li 1 sibling, 1 reply; 31+ messages in thread From: Wei Mi @ 2012-10-19 19:02 UTC (permalink / raw) To: Xinliang David Li Cc: Jakub Jelinek, Andrew Pinski, gcc-patches, Diego Novillo David, I put the m4 subdir under libasan because once I use the .m4 files (libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4) and ltmain.sh under $topsrcdir, the problem that a bad libtool was generated under $topbuilddir/x86_64-unknown-linux-gnu/libasan you met yesterday appeared. That is why I had to generate the new libtool m4 files and ltmain.sh using libtoolize. Thanks, Wei. On Fri, Oct 19, 2012 at 10:16 AM, Xinliang David Li <davidxl@google.com> wrote: > I tried it, and this version works for me. > > Your probably do not need to add the m4 subdir under libasan. The > required m4 files are either in .. or ../config dir. See how > libmudflap does it. > > Other than that, if there are no other comments, the change is good to > check into the branch. Remaining bugs can always be found and fixed > later. > > thanks, > > David > > > > On Thu, Oct 18, 2012 at 8:04 PM, Wei Mi <wmi@google.com> wrote: >> Hi, >> >> David cought a problem in the last patch when he tries to built >> libasan. The problem was that an incomplete libtool under libasan >> build directory was generated. The cause is that the old patch used an >> old ltmain.sh to generate libtool. I fix it and attach a new patch. >> And the new patch move -lpthread and -ldl to libasan LDFLAGS. >> >> Thanks, >> Wei. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-19 19:02 ` Wei Mi @ 2012-10-19 20:28 ` Xinliang David Li 2012-10-19 20:41 ` Diego Novillo 2012-10-20 2:08 ` Wei Mi 0 siblings, 2 replies; 31+ messages in thread From: Xinliang David Li @ 2012-10-19 20:28 UTC (permalink / raw) To: Wei Mi; +Cc: Jakub Jelinek, Andrew Pinski, gcc-patches, Diego Novillo The library builds fine with the following diff. The file acinclude.m4 is cloned from libmudflap. David index 485d169..3e847f1 100644 --- a/libasan/aclocal.m4 +++ b/libasan/aclocal.m4 @@ -1037,8 +1037,8 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) +m4_include([../config/ltoptions.m4]) +m4_include([../config/ltsugar.m4]) +m4_include([../config/ltversion.m4]) +#m4_include([../config/lt~obsolete.m4]) +m4_include([acinclude.m4]) On Fri, Oct 19, 2012 at 11:02 AM, Wei Mi <wmi@google.com> wrote: > David, I put the m4 subdir under libasan because once I use the .m4 > files (libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 > ltversion.m4) and ltmain.sh under $topsrcdir, the problem that a bad > libtool was generated under > $topbuilddir/x86_64-unknown-linux-gnu/libasan you met yesterday > appeared. That is why I had to generate the new libtool m4 files and > ltmain.sh using libtoolize. > > Thanks, > Wei. > > On Fri, Oct 19, 2012 at 10:16 AM, Xinliang David Li <davidxl@google.com> wrote: >> I tried it, and this version works for me. >> >> Your probably do not need to add the m4 subdir under libasan. The >> required m4 files are either in .. or ../config dir. See how >> libmudflap does it. >> >> Other than that, if there are no other comments, the change is good to >> check into the branch. Remaining bugs can always be found and fixed >> later. >> >> thanks, >> >> David >> >> >> >> On Thu, Oct 18, 2012 at 8:04 PM, Wei Mi <wmi@google.com> wrote: >>> Hi, >>> >>> David cought a problem in the last patch when he tries to built >>> libasan. The problem was that an incomplete libtool under libasan >>> build directory was generated. The cause is that the old patch used an >>> old ltmain.sh to generate libtool. I fix it and attach a new patch. >>> And the new patch move -lpthread and -ldl to libasan LDFLAGS. >>> >>> Thanks, >>> Wei. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-19 20:28 ` Xinliang David Li @ 2012-10-19 20:41 ` Diego Novillo 2012-10-20 2:08 ` Wei Mi 1 sibling, 0 replies; 31+ messages in thread From: Diego Novillo @ 2012-10-19 20:41 UTC (permalink / raw) To: Xinliang David Li; +Cc: Wei Mi, Jakub Jelinek, Andrew Pinski, gcc-patches On Fri, Oct 19, 2012 at 3:52 PM, Xinliang David Li <davidxl@google.com> wrote: > The library builds fine with the following diff. The file acinclude.m4 > is cloned from libmudflap. This is OK with the corresponding ChangeLog entry (in ChangeLog.asan). Diego. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-19 20:28 ` Xinliang David Li 2012-10-19 20:41 ` Diego Novillo @ 2012-10-20 2:08 ` Wei Mi 2012-10-20 2:33 ` Wei Mi 1 sibling, 1 reply; 31+ messages in thread From: Wei Mi @ 2012-10-20 2:08 UTC (permalink / raw) To: Xinliang David Li Cc: Jakub Jelinek, Andrew Pinski, gcc-patches, Diego Novillo [-- Attachment #1: Type: text/plain, Size: 3214 bytes --] Thanks David. Here is the patch after removing m4 directory under libasan. And I add the dependence libasan on libstdc++-v3 to avoid problem under parallel making for now. The patch is too big even after compressed, so I have to split the patch into two parts contained in two mails. patch.part1.txt and patch.part2.txt. This is the first part. --- a/Makefile.def 2012-10-19 15:36:36.156106282 -0700 +++ b/Makefile.def 2012-10-19 15:36:51.656186869 -0700 @@ -504,7 +504,6 @@ dependencies = { module=configure-target-libobjc; on=configure-target-boehm-gc; }; dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; }; dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; +dependencies = { module=configure-target-libasan; on=all-target-libstdc++-v3; }; // parallel_list.o and parallel_settings.o depend on omp.h, which is // generated by the libgomp configure. Unfortunately, due to the use of // recursive make, we can't be that specific. Thanks, Wei. On Fri, Oct 19, 2012 at 12:52 PM, Xinliang David Li <davidxl@google.com> wrote: > The library builds fine with the following diff. The file acinclude.m4 > is cloned from libmudflap. > > David > > index 485d169..3e847f1 100644 > --- a/libasan/aclocal.m4 > +++ b/libasan/aclocal.m4 > @@ -1037,8 +1037,8 @@ AC_SUBST([am__tar]) > AC_SUBST([am__untar]) > ]) # _AM_PROG_TAR > > -m4_include([m4/libtool.m4]) > -m4_include([m4/ltoptions.m4]) > -m4_include([m4/ltsugar.m4]) > -m4_include([m4/ltversion.m4]) > -m4_include([m4/lt~obsolete.m4]) > +m4_include([../config/ltoptions.m4]) > +m4_include([../config/ltsugar.m4]) > +m4_include([../config/ltversion.m4]) > +#m4_include([../config/lt~obsolete.m4]) > +m4_include([acinclude.m4]) > > > On Fri, Oct 19, 2012 at 11:02 AM, Wei Mi <wmi@google.com> wrote: >> David, I put the m4 subdir under libasan because once I use the .m4 >> files (libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 >> ltversion.m4) and ltmain.sh under $topsrcdir, the problem that a bad >> libtool was generated under >> $topbuilddir/x86_64-unknown-linux-gnu/libasan you met yesterday >> appeared. That is why I had to generate the new libtool m4 files and >> ltmain.sh using libtoolize. >> >> Thanks, >> Wei. >> >> On Fri, Oct 19, 2012 at 10:16 AM, Xinliang David Li <davidxl@google.com> wrote: >>> I tried it, and this version works for me. >>> >>> Your probably do not need to add the m4 subdir under libasan. The >>> required m4 files are either in .. or ../config dir. See how >>> libmudflap does it. >>> >>> Other than that, if there are no other comments, the change is good to >>> check into the branch. Remaining bugs can always be found and fixed >>> later. >>> >>> thanks, >>> >>> David >>> >>> >>> >>> On Thu, Oct 18, 2012 at 8:04 PM, Wei Mi <wmi@google.com> wrote: >>>> Hi, >>>> >>>> David cought a problem in the last patch when he tries to built >>>> libasan. The problem was that an incomplete libtool under libasan >>>> build directory was generated. The cause is that the old patch used an >>>> old ltmain.sh to generate libtool. I fix it and attach a new patch. >>>> And the new patch move -lpthread and -ldl to libasan LDFLAGS. >>>> >>>> Thanks, >>>> Wei. [-- Attachment #2: patch.part1.txt.bz2 --] [-- Type: application/x-bzip2, Size: 163661 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-20 2:08 ` Wei Mi @ 2012-10-20 2:33 ` Wei Mi 2012-10-25 16:49 ` Xinliang David Li 0 siblings, 1 reply; 31+ messages in thread From: Wei Mi @ 2012-10-20 2:33 UTC (permalink / raw) To: Xinliang David Li Cc: Jakub Jelinek, Andrew Pinski, gcc-patches, Diego Novillo [-- Attachment #1: Type: text/plain, Size: 3434 bytes --] And this is the second part. Thanks, Wei. On Fri, Oct 19, 2012 at 6:41 PM, Wei Mi <wmi@google.com> wrote: > Thanks David. Here is the patch after removing m4 directory under libasan. > And I add the dependence libasan on libstdc++-v3 to avoid problem > under parallel making for now. > > The patch is too big even after compressed, so I have to split the > patch into two parts contained in two mails. patch.part1.txt and > patch.part2.txt. This is the first part. > > --- a/Makefile.def 2012-10-19 15:36:36.156106282 -0700 > +++ b/Makefile.def 2012-10-19 15:36:51.656186869 -0700 > @@ -504,7 +504,6 @@ > dependencies = { module=configure-target-libobjc; > on=configure-target-boehm-gc; }; > dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; }; > dependencies = { module=configure-target-libstdc++-v3; > on=configure-target-libgomp; }; > +dependencies = { module=configure-target-libasan; > on=all-target-libstdc++-v3; }; > // parallel_list.o and parallel_settings.o depend on omp.h, which is > // generated by the libgomp configure. Unfortunately, due to the use of > // recursive make, we can't be that specific. > > Thanks, > Wei. > > On Fri, Oct 19, 2012 at 12:52 PM, Xinliang David Li <davidxl@google.com> wrote: >> The library builds fine with the following diff. The file acinclude.m4 >> is cloned from libmudflap. >> >> David >> >> index 485d169..3e847f1 100644 >> --- a/libasan/aclocal.m4 >> +++ b/libasan/aclocal.m4 >> @@ -1037,8 +1037,8 @@ AC_SUBST([am__tar]) >> AC_SUBST([am__untar]) >> ]) # _AM_PROG_TAR >> >> -m4_include([m4/libtool.m4]) >> -m4_include([m4/ltoptions.m4]) >> -m4_include([m4/ltsugar.m4]) >> -m4_include([m4/ltversion.m4]) >> -m4_include([m4/lt~obsolete.m4]) >> +m4_include([../config/ltoptions.m4]) >> +m4_include([../config/ltsugar.m4]) >> +m4_include([../config/ltversion.m4]) >> +#m4_include([../config/lt~obsolete.m4]) >> +m4_include([acinclude.m4]) >> >> >> On Fri, Oct 19, 2012 at 11:02 AM, Wei Mi <wmi@google.com> wrote: >>> David, I put the m4 subdir under libasan because once I use the .m4 >>> files (libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 >>> ltversion.m4) and ltmain.sh under $topsrcdir, the problem that a bad >>> libtool was generated under >>> $topbuilddir/x86_64-unknown-linux-gnu/libasan you met yesterday >>> appeared. That is why I had to generate the new libtool m4 files and >>> ltmain.sh using libtoolize. >>> >>> Thanks, >>> Wei. >>> >>> On Fri, Oct 19, 2012 at 10:16 AM, Xinliang David Li <davidxl@google.com> wrote: >>>> I tried it, and this version works for me. >>>> >>>> Your probably do not need to add the m4 subdir under libasan. The >>>> required m4 files are either in .. or ../config dir. See how >>>> libmudflap does it. >>>> >>>> Other than that, if there are no other comments, the change is good to >>>> check into the branch. Remaining bugs can always be found and fixed >>>> later. >>>> >>>> thanks, >>>> >>>> David >>>> >>>> >>>> >>>> On Thu, Oct 18, 2012 at 8:04 PM, Wei Mi <wmi@google.com> wrote: >>>>> Hi, >>>>> >>>>> David cought a problem in the last patch when he tries to built >>>>> libasan. The problem was that an incomplete libtool under libasan >>>>> build directory was generated. The cause is that the old patch used an >>>>> old ltmain.sh to generate libtool. I fix it and attach a new patch. >>>>> And the new patch move -lpthread and -ldl to libasan LDFLAGS. >>>>> >>>>> Thanks, >>>>> Wei. [-- Attachment #2: patch.part2.txt.bz2 --] [-- Type: application/x-bzip2, Size: 176181 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-20 2:33 ` Wei Mi @ 2012-10-25 16:49 ` Xinliang David Li 2012-10-25 16:51 ` Jakub Jelinek 0 siblings, 1 reply; 31+ messages in thread From: Xinliang David Li @ 2012-10-25 16:49 UTC (permalink / raw) To: Wei Mi; +Cc: Jakub Jelinek, Andrew Pinski, gcc-patches, Diego Novillo To accommodate tsan (and msan in the future), the directory structure needs to be changed. The top level directory can be called something like librt with the following subdirs: asan, tsan, sanitizer_common, and interception. Also the libasan should be linked in statically by default. thanks, David On Fri, Oct 19, 2012 at 6:42 PM, Wei Mi <wmi@google.com> wrote: > And this is the second part. > > Thanks, > Wei. > > On Fri, Oct 19, 2012 at 6:41 PM, Wei Mi <wmi@google.com> wrote: >> Thanks David. Here is the patch after removing m4 directory under libasan. >> And I add the dependence libasan on libstdc++-v3 to avoid problem >> under parallel making for now. >> >> The patch is too big even after compressed, so I have to split the >> patch into two parts contained in two mails. patch.part1.txt and >> patch.part2.txt. This is the first part. >> >> --- a/Makefile.def 2012-10-19 15:36:36.156106282 -0700 >> +++ b/Makefile.def 2012-10-19 15:36:51.656186869 -0700 >> @@ -504,7 +504,6 @@ >> dependencies = { module=configure-target-libobjc; >> on=configure-target-boehm-gc; }; >> dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; }; >> dependencies = { module=configure-target-libstdc++-v3; >> on=configure-target-libgomp; }; >> +dependencies = { module=configure-target-libasan; >> on=all-target-libstdc++-v3; }; >> // parallel_list.o and parallel_settings.o depend on omp.h, which is >> // generated by the libgomp configure. Unfortunately, due to the use of >> // recursive make, we can't be that specific. >> >> Thanks, >> Wei. >> >> On Fri, Oct 19, 2012 at 12:52 PM, Xinliang David Li <davidxl@google.com> wrote: >>> The library builds fine with the following diff. The file acinclude.m4 >>> is cloned from libmudflap. >>> >>> David >>> >>> index 485d169..3e847f1 100644 >>> --- a/libasan/aclocal.m4 >>> +++ b/libasan/aclocal.m4 >>> @@ -1037,8 +1037,8 @@ AC_SUBST([am__tar]) >>> AC_SUBST([am__untar]) >>> ]) # _AM_PROG_TAR >>> >>> -m4_include([m4/libtool.m4]) >>> -m4_include([m4/ltoptions.m4]) >>> -m4_include([m4/ltsugar.m4]) >>> -m4_include([m4/ltversion.m4]) >>> -m4_include([m4/lt~obsolete.m4]) >>> +m4_include([../config/ltoptions.m4]) >>> +m4_include([../config/ltsugar.m4]) >>> +m4_include([../config/ltversion.m4]) >>> +#m4_include([../config/lt~obsolete.m4]) >>> +m4_include([acinclude.m4]) >>> >>> >>> On Fri, Oct 19, 2012 at 11:02 AM, Wei Mi <wmi@google.com> wrote: >>>> David, I put the m4 subdir under libasan because once I use the .m4 >>>> files (libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 >>>> ltversion.m4) and ltmain.sh under $topsrcdir, the problem that a bad >>>> libtool was generated under >>>> $topbuilddir/x86_64-unknown-linux-gnu/libasan you met yesterday >>>> appeared. That is why I had to generate the new libtool m4 files and >>>> ltmain.sh using libtoolize. >>>> >>>> Thanks, >>>> Wei. >>>> >>>> On Fri, Oct 19, 2012 at 10:16 AM, Xinliang David Li <davidxl@google.com> wrote: >>>>> I tried it, and this version works for me. >>>>> >>>>> Your probably do not need to add the m4 subdir under libasan. The >>>>> required m4 files are either in .. or ../config dir. See how >>>>> libmudflap does it. >>>>> >>>>> Other than that, if there are no other comments, the change is good to >>>>> check into the branch. Remaining bugs can always be found and fixed >>>>> later. >>>>> >>>>> thanks, >>>>> >>>>> David >>>>> >>>>> >>>>> >>>>> On Thu, Oct 18, 2012 at 8:04 PM, Wei Mi <wmi@google.com> wrote: >>>>>> Hi, >>>>>> >>>>>> David cought a problem in the last patch when he tries to built >>>>>> libasan. The problem was that an incomplete libtool under libasan >>>>>> build directory was generated. The cause is that the old patch used an >>>>>> old ltmain.sh to generate libtool. I fix it and attach a new patch. >>>>>> And the new patch move -lpthread and -ldl to libasan LDFLAGS. >>>>>> >>>>>> Thanks, >>>>>> Wei. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-25 16:49 ` Xinliang David Li @ 2012-10-25 16:51 ` Jakub Jelinek 2012-10-25 16:53 ` Xinliang David Li 0 siblings, 1 reply; 31+ messages in thread From: Jakub Jelinek @ 2012-10-25 16:51 UTC (permalink / raw) To: Xinliang David Li; +Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo On Thu, Oct 25, 2012 at 09:24:51AM -0700, Xinliang David Li wrote: > To accommodate tsan (and msan in the future), the directory structure > needs to be changed. The top level directory can be called something > like librt with the following subdirs: asan, tsan, sanitizer_common, > and interception. Also the libasan should be linked in statically by > default. librt is a very bad name, that clashes with glibc librt, would only create confusion. Why should be libasan linked statically by default? Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-25 16:51 ` Jakub Jelinek @ 2012-10-25 16:53 ` Xinliang David Li 2012-10-25 16:55 ` Diego Novillo 2012-10-25 17:00 ` Jakub Jelinek 0 siblings, 2 replies; 31+ messages in thread From: Xinliang David Li @ 2012-10-25 16:53 UTC (permalink / raw) To: Jakub Jelinek; +Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo On Thu, Oct 25, 2012 at 9:39 AM, Jakub Jelinek <jakub@redhat.com> wrote: > On Thu, Oct 25, 2012 at 09:24:51AM -0700, Xinliang David Li wrote: >> To accommodate tsan (and msan in the future), the directory structure >> needs to be changed. The top level directory can be called something >> like librt with the following subdirs: asan, tsan, sanitizer_common, >> and interception. Also the libasan should be linked in statically by >> default. > > librt is a very bad name, that clashes with glibc librt, would only create > confusion. Ok, then we should pick something that is not confusing but reflect the fact they are for runtime error checking .. > > Why should be libasan linked statically by default? > There are a couple of reasons: 1) it makes running sanitized binary on remote machines which does not have libasan installed easier; 2) There is no guarantee that libasan API won't change, statically linking it in makes it less vulnerable to such changes. thanks, David > Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-25 16:53 ` Xinliang David Li @ 2012-10-25 16:55 ` Diego Novillo 2012-10-25 16:56 ` Xinliang David Li 2012-10-25 17:00 ` Jakub Jelinek 1 sibling, 1 reply; 31+ messages in thread From: Diego Novillo @ 2012-10-25 16:55 UTC (permalink / raw) To: Xinliang David Li; +Cc: Jakub Jelinek, Wei Mi, Andrew Pinski, gcc-patches On Thu, Oct 25, 2012 at 12:48 PM, Xinliang David Li <davidxl@google.com> wrote: > On Thu, Oct 25, 2012 at 9:39 AM, Jakub Jelinek <jakub@redhat.com> wrote: >> >> librt is a very bad name, that clashes with glibc librt, would only create >> confusion. > > Ok, then we should pick something that is not confusing but reflect > the fact they are for runtime error checking .. libsanitizer? Diego. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-25 16:55 ` Diego Novillo @ 2012-10-25 16:56 ` Xinliang David Li 0 siblings, 0 replies; 31+ messages in thread From: Xinliang David Li @ 2012-10-25 16:56 UTC (permalink / raw) To: Diego Novillo; +Cc: Jakub Jelinek, Wei Mi, Andrew Pinski, gcc-patches On Thu, Oct 25, 2012 at 9:52 AM, Diego Novillo <dnovillo@google.com> wrote: > On Thu, Oct 25, 2012 at 12:48 PM, Xinliang David Li <davidxl@google.com> wrote: >> On Thu, Oct 25, 2012 at 9:39 AM, Jakub Jelinek <jakub@redhat.com> wrote: >>> >>> librt is a very bad name, that clashes with glibc librt, would only create >>> confusion. >> >> Ok, then we should pick something that is not confusing but reflect >> the fact they are for runtime error checking .. > > libsanitizer? +1 --- missed the obvious one :) David > > > Diego. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-25 16:53 ` Xinliang David Li 2012-10-25 16:55 ` Diego Novillo @ 2012-10-25 17:00 ` Jakub Jelinek 2012-10-25 17:13 ` Xinliang David Li 1 sibling, 1 reply; 31+ messages in thread From: Jakub Jelinek @ 2012-10-25 17:00 UTC (permalink / raw) To: Xinliang David Li; +Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo On Thu, Oct 25, 2012 at 09:48:54AM -0700, Xinliang David Li wrote: > > Why should be libasan linked statically by default? > There are a couple of reasons: > > 1) it makes running sanitized binary on remote machines which does not > have libasan installed easier; > 2) There is no guarantee that libasan API won't change, statically > linking it in makes it less vulnerable to such changes. Neither of the reasons look important enough, compared to the http://www.akkadia.org/drepper/no_static_linking.html Especially as libasan is overriding malloc etc., having dozens of malloc overrides in different shared libraries, perhaps all chaining into each other, is a nightmare. For 2), libasan should just use symbol versioning and provide backwards compatibility as long as it is possible, or worst case bump SONAME occassionally. Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-25 17:00 ` Jakub Jelinek @ 2012-10-25 17:13 ` Xinliang David Li 2012-10-25 17:27 ` Jakub Jelinek 0 siblings, 1 reply; 31+ messages in thread From: Xinliang David Li @ 2012-10-25 17:13 UTC (permalink / raw) To: Jakub Jelinek; +Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo On Thu, Oct 25, 2012 at 9:55 AM, Jakub Jelinek <jakub@redhat.com> wrote: > On Thu, Oct 25, 2012 at 09:48:54AM -0700, Xinliang David Li wrote: >> > Why should be libasan linked statically by default? > >> There are a couple of reasons: >> >> 1) it makes running sanitized binary on remote machines which does not >> have libasan installed easier; >> 2) There is no guarantee that libasan API won't change, statically >> linking it in makes it less vulnerable to such changes. > > Neither of the reasons look important enough, compared to the > http://www.akkadia.org/drepper/no_static_linking.html > Especially as libasan is overriding malloc etc., having dozens of malloc > overrides in different shared libraries, perhaps all chaining into each > other, is a nightmare. How about statically linking just for executables, not shared library buid? David > For 2), libasan should just use symbol versioning and provide backwards > compatibility as long as it is possible, or worst case bump SONAME > occassionally. > > Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-25 17:13 ` Xinliang David Li @ 2012-10-25 17:27 ` Jakub Jelinek 2012-10-25 18:08 ` Xinliang David Li 0 siblings, 1 reply; 31+ messages in thread From: Jakub Jelinek @ 2012-10-25 17:27 UTC (permalink / raw) To: Xinliang David Li; +Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo On Thu, Oct 25, 2012 at 10:00:03AM -0700, Xinliang David Li wrote: > How about statically linking just for executables, not shared library buid? That is IMHO still a bad idea. Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-25 17:27 ` Jakub Jelinek @ 2012-10-25 18:08 ` Xinliang David Li 2012-10-25 18:11 ` Diego Novillo 0 siblings, 1 reply; 31+ messages in thread From: Xinliang David Li @ 2012-10-25 18:08 UTC (permalink / raw) To: Jakub Jelinek; +Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo On Thu, Oct 25, 2012 at 10:19 AM, Jakub Jelinek <jakub@redhat.com> wrote: > On Thu, Oct 25, 2012 at 10:00:03AM -0700, Xinliang David Li wrote: >> How about statically linking just for executables, not shared library buid? > > That is IMHO still a bad idea. I don't know why you think so (It seems that the points mentioned in http://www.akkadia.org/drepper/no_static_linking.html mainly apply to release binaries, not sanitized ones), but for now let's drop the static link request. thanks, David > > Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-25 18:08 ` Xinliang David Li @ 2012-10-25 18:11 ` Diego Novillo 0 siblings, 0 replies; 31+ messages in thread From: Diego Novillo @ 2012-10-25 18:11 UTC (permalink / raw) To: Xinliang David Li; +Cc: Jakub Jelinek, Wei Mi, Andrew Pinski, gcc-patches On Thu, Oct 25, 2012 at 1:24 PM, Xinliang David Li <davidxl@google.com> wrote: > I don't know why you think so (It seems that the points mentioned in > http://www.akkadia.org/drepper/no_static_linking.html mainly apply to > release binaries, not sanitized ones), but for now let's drop the > static link request. Yeah, we can always just do that in our own builds. Diego. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-16 15:27 ` Jakub Jelinek 2012-10-18 17:00 ` Wei Mi @ 2012-10-18 18:22 ` Xinliang David Li 2012-10-18 18:32 ` Jakub Jelinek 1 sibling, 1 reply; 31+ messages in thread From: Xinliang David Li @ 2012-10-18 18:22 UTC (permalink / raw) To: Jakub Jelinek; +Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo On Tue, Oct 16, 2012 at 12:27 AM, Jakub Jelinek <jakub@redhat.com> wrote: > On Mon, Oct 15, 2012 at 11:39:52PM -0700, Wei Mi wrote: >> --- gcc/gcc.c (revision 192487) >> +++ gcc/gcc.c (working copy) >> @@ -679,6 +679,7 @@ proper position among the other output f >> %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ >> %(mflib) " STACK_SPLIT_SPEC "\ >> %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\ >> + %{fasan|coverage:-lasan -lpthread -ldl -lstdc++}\ >> %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ >> %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}" > > Why the |coverage there? It isn't related to asan in any way. > Also, why -lstdc++ in there? I could understand %{static:-lstdc++}, but > given that libasan doesn't support static linking, I find it hardly useful. > >> --- Makefile.def (revision 192487) >> +++ Makefile.def (working copy) >> @@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; >> lib_path=src/.libs; >> raw_cxx=true; }; >> target_modules = { module= libmudflap; lib_path=.libs; }; >> +target_modules = { module= libasan; lib_path=.libs; }; >> target_modules = { module= libssp; lib_path=.libs; }; >> target_modules = { module= newlib; }; >> target_modules = { module= libgcc; bootstrap=true; no_check=true; }; > > Shouldn't libasan, given it is a C++ shared library, depend on libstdc++-v3? > I don't think it should depend on any C++ libraries. libasan is written in C++, but I don't see any C++ features that require C++ runtime support (libstdc++, libcsup++) are used -- otherwise the archive libasan can not be used with C program. David > Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-18 18:22 ` Xinliang David Li @ 2012-10-18 18:32 ` Jakub Jelinek 2012-10-18 19:29 ` Xinliang David Li 0 siblings, 1 reply; 31+ messages in thread From: Jakub Jelinek @ 2012-10-18 18:32 UTC (permalink / raw) To: Xinliang David Li; +Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo On Thu, Oct 18, 2012 at 11:15:33AM -0700, Xinliang David Li wrote: > >> --- Makefile.def (revision 192487) > >> +++ Makefile.def (working copy) > >> @@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; > >> lib_path=src/.libs; > >> raw_cxx=true; }; > >> target_modules = { module= libmudflap; lib_path=.libs; }; > >> +target_modules = { module= libasan; lib_path=.libs; }; > >> target_modules = { module= libssp; lib_path=.libs; }; > >> target_modules = { module= newlib; }; > >> target_modules = { module= libgcc; bootstrap=true; no_check=true; }; > > > > Shouldn't libasan, given it is a C++ shared library, depend on libstdc++-v3? > > > > I don't think it should depend on any C++ libraries. libasan is > written in C++, but I don't see any C++ features that require C++ > runtime support (libstdc++, libcsup++) are used -- otherwise the > archive libasan can not be used with C program. Is it compiled with -fno-exceptions -fno-rtti? Without it it would require either libstdc++ or libsupc++. I see it uses at least #include <new>, so even if it doesn't link against libstdc++, it needs its headers being setup and thus need to depend at the toplevel on libstdc++ being built (and likely needs to use `$(...)/libstdc++-v3/scripts/testsuite_flags --build-includes` ) when compiling. Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-18 18:32 ` Jakub Jelinek @ 2012-10-18 19:29 ` Xinliang David Li 2012-10-18 19:45 ` Xinliang David Li 0 siblings, 1 reply; 31+ messages in thread From: Xinliang David Li @ 2012-10-18 19:29 UTC (permalink / raw) To: Jakub Jelinek; +Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo On Thu, Oct 18, 2012 at 11:22 AM, Jakub Jelinek <jakub@redhat.com> wrote: > On Thu, Oct 18, 2012 at 11:15:33AM -0700, Xinliang David Li wrote: >> >> --- Makefile.def (revision 192487) >> >> +++ Makefile.def (working copy) >> >> @@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; >> >> lib_path=src/.libs; >> >> raw_cxx=true; }; >> >> target_modules = { module= libmudflap; lib_path=.libs; }; >> >> +target_modules = { module= libasan; lib_path=.libs; }; >> >> target_modules = { module= libssp; lib_path=.libs; }; >> >> target_modules = { module= newlib; }; >> >> target_modules = { module= libgcc; bootstrap=true; no_check=true; }; >> > >> > Shouldn't libasan, given it is a C++ shared library, depend on libstdc++-v3? >> > >> >> I don't think it should depend on any C++ libraries. libasan is >> written in C++, but I don't see any C++ features that require C++ >> runtime support (libstdc++, libcsup++) are used -- otherwise the >> archive libasan can not be used with C program. > > Is it compiled with -fno-exceptions -fno-rtti? Without it it would > require either libstdc++ or libsupc++. I see it uses at least > #include <new>, so even if it doesn't link against libstdc++, it needs > its headers being setup and thus need to depend at the toplevel > on libstdc++ being built (and likely needs to use > `$(...)/libstdc++-v3/scripts/testsuite_flags --build-includes` > ) when compiling. I looked at the library built with LLVM -- it does not reference any exception handling routines, nor operator new, rtti related routines. I am not sure if the inclusion of <new> is needed -- it is used in asan_new_delete.cc which defines replacement for global new and delete, I think. David > > Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [asan] migrate runtime from llvm 2012-10-18 19:29 ` Xinliang David Li @ 2012-10-18 19:45 ` Xinliang David Li [not found] ` <CAN=P9piGAbcEmLLVF+77jJvOHAh3dFpEWMgrYqAHqKynrfFNeQ@mail.gmail.com> 0 siblings, 1 reply; 31+ messages in thread From: Xinliang David Li @ 2012-10-18 19:45 UTC (permalink / raw) To: Jakub Jelinek, Kostya Serebryany Cc: Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo + kcc the author of the libasan library. Koystya, does libasan build (need to ) depend on C++ library ? thanks, David On Thu, Oct 18, 2012 at 12:26 PM, Xinliang David Li <davidxl@google.com> wrote: > On Thu, Oct 18, 2012 at 11:22 AM, Jakub Jelinek <jakub@redhat.com> wrote: >> On Thu, Oct 18, 2012 at 11:15:33AM -0700, Xinliang David Li wrote: >>> >> --- Makefile.def (revision 192487) >>> >> +++ Makefile.def (working copy) >>> >> @@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; >>> >> lib_path=src/.libs; >>> >> raw_cxx=true; }; >>> >> target_modules = { module= libmudflap; lib_path=.libs; }; >>> >> +target_modules = { module= libasan; lib_path=.libs; }; >>> >> target_modules = { module= libssp; lib_path=.libs; }; >>> >> target_modules = { module= newlib; }; >>> >> target_modules = { module= libgcc; bootstrap=true; no_check=true; }; >>> > >>> > Shouldn't libasan, given it is a C++ shared library, depend on libstdc++-v3? >>> > >>> >>> I don't think it should depend on any C++ libraries. libasan is >>> written in C++, but I don't see any C++ features that require C++ >>> runtime support (libstdc++, libcsup++) are used -- otherwise the >>> archive libasan can not be used with C program. >> >> Is it compiled with -fno-exceptions -fno-rtti? Without it it would >> require either libstdc++ or libsupc++. I see it uses at least >> #include <new>, so even if it doesn't link against libstdc++, it needs >> its headers being setup and thus need to depend at the toplevel >> on libstdc++ being built (and likely needs to use >> `$(...)/libstdc++-v3/scripts/testsuite_flags --build-includes` >> ) when compiling. > > I looked at the library built with LLVM -- it does not reference any > exception handling routines, nor operator new, rtti related routines. > > I am not sure if the inclusion of <new> is needed -- it is used in > asan_new_delete.cc which defines replacement for global new and > delete, I think. > > David > >> >> Jakub ^ permalink raw reply [flat|nested] 31+ messages in thread
[parent not found: <CAN=P9piGAbcEmLLVF+77jJvOHAh3dFpEWMgrYqAHqKynrfFNeQ@mail.gmail.com>]
* Re: [asan] migrate runtime from llvm [not found] ` <CAN=P9piGAbcEmLLVF+77jJvOHAh3dFpEWMgrYqAHqKynrfFNeQ@mail.gmail.com> @ 2012-10-19 5:14 ` Xinliang David Li 0 siblings, 0 replies; 31+ messages in thread From: Xinliang David Li @ 2012-10-19 5:14 UTC (permalink / raw) To: Kostya Serebryany Cc: Jakub Jelinek, Wei Mi, Andrew Pinski, gcc-patches, Diego Novillo, Alexander Potapenko, Evgeniy Stepanov, Alexey Samsonov thanks. If libasan is statically linked in (which is the case for clang), removing the dependency on libstdc++ is a must. David On Thu, Oct 18, 2012 at 9:05 PM, Kostya Serebryany <kcc@google.com> wrote: > +few more folks > > libasan does not (and should not) depend on libstdc++-v3. > In llvm build system it is built with > -fPIC > -fno-builtin > -fno-exceptions > -fomit-frame-pointer > -funwind-tables > -O3 > (I guess we can add -fno-rtti too, but we did not need it). > > the file asan_new_delete.cc indeed depends on <new>, but I think we can > eliminate this include completely > (we've just discussed this yesterday). > > > --kcc > > On Thu, Oct 18, 2012 at 11:29 PM, Xinliang David Li <davidxl@google.com> > wrote: >> >> + kcc the author of the libasan library. >> >> Koystya, does libasan build (need to ) depend on C++ library ? >> >> thanks, >> >> David >> >> On Thu, Oct 18, 2012 at 12:26 PM, Xinliang David Li <davidxl@google.com> >> wrote: >> > On Thu, Oct 18, 2012 at 11:22 AM, Jakub Jelinek <jakub@redhat.com> >> > wrote: >> >> On Thu, Oct 18, 2012 at 11:15:33AM -0700, Xinliang David Li wrote: >> >>> >> --- Makefile.def (revision 192487) >> >>> >> +++ Makefile.def (working copy) >> >>> >> @@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; >> >>> >> lib_path=src/.libs; >> >>> >> raw_cxx=true; }; >> >>> >> target_modules = { module= libmudflap; lib_path=.libs; }; >> >>> >> +target_modules = { module= libasan; lib_path=.libs; }; >> >>> >> target_modules = { module= libssp; lib_path=.libs; }; >> >>> >> target_modules = { module= newlib; }; >> >>> >> target_modules = { module= libgcc; bootstrap=true; no_check=true; >> >>> >> }; >> >>> > >> >>> > Shouldn't libasan, given it is a C++ shared library, depend on >> >>> > libstdc++-v3? >> >>> > >> >>> >> >>> I don't think it should depend on any C++ libraries. libasan is >> >>> written in C++, but I don't see any C++ features that require C++ >> >>> runtime support (libstdc++, libcsup++) are used -- otherwise the >> >>> archive libasan can not be used with C program. >> >> >> >> Is it compiled with -fno-exceptions -fno-rtti? Without it it would >> >> require either libstdc++ or libsupc++. I see it uses at least >> >> #include <new>, so even if it doesn't link against libstdc++, it needs >> >> its headers being setup and thus need to depend at the toplevel >> >> on libstdc++ being built (and likely needs to use >> >> `$(...)/libstdc++-v3/scripts/testsuite_flags --build-includes` >> >> ) when compiling. >> > >> > I looked at the library built with LLVM -- it does not reference any >> > exception handling routines, nor operator new, rtti related routines. >> > >> > I am not sure if the inclusion of <new> is needed -- it is used in >> > asan_new_delete.cc which defines replacement for global new and >> > delete, I think. >> > >> > David >> > >> >> >> >> Jakub > > ^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2012-10-25 17:27 UTC | newest] Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-10-16 6:40 [asan] migrate runtime from llvm Wei Mi 2012-10-16 6:40 ` Andrew Pinski 2012-10-16 6:45 ` Wei Mi 2012-10-16 7:47 ` Andrew Pinski 2012-10-16 15:27 ` Jakub Jelinek 2012-10-18 17:00 ` Wei Mi 2012-10-18 18:28 ` Jakub Jelinek 2012-10-18 20:25 ` Wei Mi 2012-10-19 3:49 ` Wei Mi 2012-10-19 17:43 ` Xinliang David Li 2012-10-19 18:52 ` Diego Novillo 2012-10-19 19:02 ` Wei Mi 2012-10-19 20:28 ` Xinliang David Li 2012-10-19 20:41 ` Diego Novillo 2012-10-20 2:08 ` Wei Mi 2012-10-20 2:33 ` Wei Mi 2012-10-25 16:49 ` Xinliang David Li 2012-10-25 16:51 ` Jakub Jelinek 2012-10-25 16:53 ` Xinliang David Li 2012-10-25 16:55 ` Diego Novillo 2012-10-25 16:56 ` Xinliang David Li 2012-10-25 17:00 ` Jakub Jelinek 2012-10-25 17:13 ` Xinliang David Li 2012-10-25 17:27 ` Jakub Jelinek 2012-10-25 18:08 ` Xinliang David Li 2012-10-25 18:11 ` Diego Novillo 2012-10-18 18:22 ` Xinliang David Li 2012-10-18 18:32 ` Jakub Jelinek 2012-10-18 19:29 ` Xinliang David Li 2012-10-18 19:45 ` Xinliang David Li [not found] ` <CAN=P9piGAbcEmLLVF+77jJvOHAh3dFpEWMgrYqAHqKynrfFNeQ@mail.gmail.com> 2012-10-19 5:14 ` Xinliang David Li
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).