avoiding extra .loc directives
For my VLIW toolchain, I am not allowed to output .loc directives in the middle of a VLIW bundle. Following the lead of the bfin backend, I scan bundles during the machine reorg pass and ensure that all of the insns of a bundle have the same location. This solves most of the problems, but final.c will also output the .loc directive after encountering a NOTE_INSN_PROLOGUE_END. There are two obvious solutions to this: 1) eliminate the note in machine reorg. 2) eliminate the line "force_source_line = true;" from the appropriate line in final.c. Would either of these alternatives cause a problem? Is there a better way to avoid having .loc directives inside bundles?
Re: [PATCH] RE: libcilkrts breaks non-bootstrap build
On 05/11/13 05:17, Iyer, Balaji V wrote: > Is the following patch OK to fix this issue? > Balaji, the patch fixes the problem for me, thanks. I can't approve your patch, but it looks good to me. FWIW, I stumbled upon this text at http://gcc.gnu.org/codingconventions.html which is related to this patch, and also to the top-level part of your commit r204173, which is missing at 'src': ... Top-level configure.ac, configure, Makefile.in, config-ml.in, config.if and most other top-level shell-scripts: Please try to keep these files in sync with the corresponding files in the src repository at sourceware.org. Some people hope to eventually merge these trees into a single repository; keeping them in sync helps this goal. When you check in a patch to one of these files, please check it in the src tree too, or ask someone else with write access there to do so. ... Thanks, - Tom > Thanks, > > Balaji V. Iyer. > > Index: configure.ac > === > --- configure.ac(revision 204381) > +++ configure.ac(working copy) > @@ -2061,7 +2061,7 @@ > case ,${enable_languages}, in >*,c++,*) ;; >*) > -noconfigdirs="$noconfigdirs target-libitm target-libsanitizer > target-libvtv" > +noconfigdirs="$noconfigdirs target-libcilkrts target-libitm > target-libsanitizer target-libvtv" > ;; > esac > > Index: ChangeLog > === > --- ChangeLog (revision 204381) > +++ ChangeLog (working copy) > @@ -1,3 +1,9 @@ > +2013-11-04 Balaji V. Iyer > + > + * configure.ac: Added libcilkrts to noconfig list when C++ is not > + supported. > + * configure: Regenerated. > + > 2013-11-01 Trevor Saunders > > * MAINTAINERS (Write After Approval): Add myself. > Index: configure > === > --- configure (revision 204381) > +++ configure (working copy) > @@ -6630,7 +6630,7 @@ > case ,${enable_languages}, in >*,c++,*) ;; >*) > -noconfigdirs="$noconfigdirs target-libitm target-libsanitizer > target-libvtv" > +noconfigdirs="$noconfigdirs target-libcilkrts target-libitm > target-libsanitizer target-libvtv" > ;; > esac
RE: [PATCH] RE: libcilkrts breaks non-bootstrap build
My non-bootstrap build fails with the following message /bin/bash: ./libtool: No such file or directory make: *** [cilk-abi-vla.lo] Error 127 I have my libtool installed in /usr/bin. I configured the build with configure --prefix=../dailybuild/usr/Nov_05_2013 --enable-languages=c,c++,fortran --disable-bootstrap Am I missing something? Regards Ganesh -Original Message- From: gcc-ow...@gcc.gnu.org [mailto:gcc-ow...@gcc.gnu.org] On Behalf Of Iyer, Balaji V Sent: Tuesday, November 05, 2013 9:47 AM To: Tom de Vries; gcc@gcc.gnu.org Subject: [PATCH] RE: libcilkrts breaks non-bootstrap build > -Original Message- > From: Tom de Vries [mailto:tom_devr...@mentor.com] > Sent: Monday, November 4, 2013 2:15 PM > To: gcc@gcc.gnu.org > Cc: Iyer, Balaji V > Subject: libcilkrts breaks non-bootstrap build > > Hi, > > When configuring a gcc build with "--disable-bootstrap --enable- > languages=c" I run into this error: > ... > libtool: compile: g++ > -B/home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- > gnu/bin/ > -B/home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- > gnu/lib/ > -isystem > /home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- > gnu/include > -isystem > /home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- > gnu/sys-include > "-DPACKAGE_NAME=\"Cilk Runtime Library\"" > -DPACKAGE_TARNAME=\"cilk-runtime-library\" - DPACKAGE_VERSION=\"2.0\" > "-DPACKAGE_STRING=\"Cilk Runtime Library 2.0\"" > -DPACKAGE_BUGREPORT=\"c...@intel.com\" -DPACKAGE_URL=\"\" > -DPACKAGE=\"cilk-runtime-library\" -DVERSION=\"2.0\" -DSTDC_HEADERS=1 > -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 - > DHAVE_STRING_H=1 > -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 - > DHAVE_STDINT_H=1 > -DHAVE_UNISTD_H=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 - > DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. - > I/home/vries/gcc_versions/devel/src/libcilkrts > -I/home/vries/gcc_versions/devel/src/libcilkrts/include > -I/home/vries/gcc_versions/devel/src/libcilkrts/runtime > -I/home/vries/gcc_versions/devel/src/libcilkrts/runtime/config/x86 > -DIN_CILK_RUNTIME=1 -D_Cilk_spawn= -D_Cilk_sync= -D_Cilk_for=for - > fcilkplus -g3 > -O0 -dH -D_GNU_SOURCE -MT bug.lo -MD -MP -MF .deps/bug.Tpo -c > /home/vries/gcc_versions/devel/src/libcilkrts/runtime/bug.cpp -fPIC > -DPIC - o .libs/bug.o > g++: error: unrecognized command line option '-fcilkplus' > make[2]: *** [bug.lo] Error 1 > make[2]: Leaving directory > `/home/vries/gcc_versions/devel/lean-c/build/x86_64-unknown-linux- > gnu/libcilkrts' > ... > > The error occurs because the compiler doesn't support -fcilkplus. > > Should configure disable libcilkplus when c++ is not enabled? > Is the following patch OK to fix this issue? Thanks, Balaji V. Iyer. Index: configure.ac === --- configure.ac(revision 204381) +++ configure.ac(working copy) @@ -2061,7 +2061,7 @@ case ,${enable_languages}, in *,c++,*) ;; *) -noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv" +noconfigdirs="$noconfigdirs target-libcilkrts target-libitm target-libsanitizer target-libvtv" ;; esac Index: ChangeLog === --- ChangeLog (revision 204381) +++ ChangeLog (working copy) @@ -1,3 +1,9 @@ +2013-11-04 Balaji V. Iyer + + * configure.ac: Added libcilkrts to noconfig list when C++ is not + supported. + * configure: Regenerated. + 2013-11-01 Trevor Saunders * MAINTAINERS (Write After Approval): Add myself. Index: configure === --- configure (revision 204381) +++ configure (working copy) @@ -6630,7 +6630,7 @@ case ,${enable_languages}, in *,c++,*) ;; *) -noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv" +noconfigdirs="$noconfigdirs target-libcilkrts target-libitm target-libsanitizer target-libvtv" ;; esac
Re: Report on the bounded pointers work
> If you're referring to mudflap (Frank Eigler's work), > ... > It never reached a point where interoperability across objects with and without mudflap instrumentation worked Jeff, Could you add more details? E.g. I don't see how mudflap interoperability is different from AdressSanitizer which seems to be state of the art. -Y
Re: Report on the bounded pointers work
On 11/04/2013 05:43 PM, Joseph S. Myers wrote: On Mon, 4 Nov 2013, Jeff Law wrote: You might also be referring to Greg McGary's work on bounded pointers, I don't think that ever got integrated or if it did, it got pulled long ago. It was integrated in 2000, removed in 2002/2003 (I removed the relics from glibc earlier this year). By using fat pointers, it required the entire program including all libraries it used to be built with bounded pointers enabled (and associated changes to all assembly sources to handle them). Yes, I was referring to Greg's work. I'm wondering if the trade-offs have changed since then, considering that it's again en vogue to bootstrap new architectures. It's difficult to tell without more details about that past effort, though. -- Florian Weimer / Red Hat Product Security Team
Re: [PATCH] RE: libcilkrts breaks non-bootstrap build
On 05/11/13 10:37, Gopalasubramanian, Ganesh wrote: > My non-bootstrap build fails with the following message > > /bin/bash: ./libtool: No such file or directory > make: *** [cilk-abi-vla.lo] Error 127 > > I have my libtool installed in /usr/bin. > > I configured the build with > configure --prefix=../dailybuild/usr/Nov_05_2013 > --enable-languages=c,c++,fortran --disable-bootstrap > > Am I missing something? Ganesh, I've just completed a build of r204382 with the same configure flags. I can't reproduce that failure. What is not clear from your message, is whether indeed ./libtool is missing, or it can't be found while it's present. If ./libtool is not present, it's supposed to be generated by configure.status, so check your configure.log, perhaps there's a related error there? Thanks, - Tom
Re: Something wrong with bootstrap-lto, or lto itself:
On Tue, Nov 5, 2013 at 6:42 AM, Trevor Saunders wrote: > On Mon, Nov 04, 2013 at 01:29:10PM +0100, Richard Biener wrote: >> On Wed, Oct 30, 2013 at 8:17 PM, Toon Moene wrote: >> > Consider this: >> > >> > http://gcc.gnu.org/ml/gcc-testresults/2013-10/msg02329.html >> > >> > and >> > >> > http://gcc.gnu.org/ml/gcc-testresults/2013-10/msg02258.html >> > >> > /scratch/toon/bd5894/./prev-gcc/xg++ -B/scratch/toon/bd5894/./prev-gcc/ >> > -B/home/toon/compilers/install/x86_64-unknown-linux-gnu/bin/ -nostdinc++ >> > -B/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs >> > -B/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs >> > -I/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu >> > -I/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include >> > -I/home/toon/compilers/gcc/libstdc++-v3/libsupc++ >> > -L/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs >> > -L/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs >> > -g -O2 -flto=jobserver -frandom-seed=1 -DIN_GCC-fno-exceptions >> > -fno-rtti >> > -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings >> > -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long >> > -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common >> > -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc -o cc1plus \ >> > cp/cp-lang.o c-family/stub-objc.o cp/call.o cp/decl.o >> > cp/expr.o cp/pt.o cp/typeck2.o cp/class.o cp/decl2.o cp/error.o cp/lex.o >> > cp/parser.o cp/ptree.o cp/rtti.o cp/typeck.o cp/cvt.o cp/except.o >> > cp/friend.o cp/init.o cp/method.o cp/search.o cp/semantics.o cp/tree.o >> > cp/repo.o cp/dump.o cp/optimize.o cp/mangle.o cp/cp-objcp-common.o >> > cp/name-lookup.o cp/cxx-pretty-print.o cp/cp-gimplify.o >> > cp/cp-array-notation.o cp/lambda.o cp/vtable-class-hierarchy.o attribs.o >> > incpath.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o >> > c-family/c-format.o c-family/c-gimplify.o c-family/c-lex.o c-family/c-omp.o >> > c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o >> > c-family/c-pragma.o >> > c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o >> > c-family/array-notation-common.o c-family/c-ubsan.o i386-c.o glibc-c.o >> > cc1plus-checksum.o libbackend.a main.o tree-browser.o libcommon-target.a >> > libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a >> > ../libcpp/libcpp.a ../libbacktrace/.libs/libbacktrace.a >> > ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -lcloog-isl -lisl >> > -lmpc -lmpfr -lgmp -rdynamic -ldl -L../zlib -lz >> > In function 'release', >> > inlined from '_ZN7va_heap7reserveIbEEvRP3vecIT_S_8vl_embedEjb.part.95' >> > at /home/toon/compilers/gcc/gcc/vec.h:288:7, >> > inlined from 'reserve', >> > inlined from '_ZN3vecIb7va_heap6vl_ptrE7reserveEjb.part.96' at >> > /home/toon/compilers/gcc/gcc/vec.h:1367:3, >> > inlined from 'reserve.constprop', >> > inlined from 'reserve_exact' at >> > /home/toon/compilers/gcc/gcc/vec.h:1387:45, >> > inlined from 'safe_grow' at /home/toon/compilers/gcc/gcc/vec.h:1515:3, >> > inlined from 'safe_grow_cleared' at >> > /home/toon/compilers/gcc/gcc/vec.h:1529:3, >> > inlined from 'vect_bb_vectorization_profitable_p' at >> > /home/toon/compilers/gcc/gcc/tree-vect-slp.c:2027:0, >> > inlined from 'vect_slp_analyze_bb_1' at >> > /home/toon/compilers/gcc/gcc/tree-vect-slp.c:2174:55, >> > inlined from 'vect_slp_analyze_bb' at >> > /home/toon/compilers/gcc/gcc/tree-vect-slp.c:2229:44: >> > /home/toon/compilers/gcc/gcc/vec.h:316:3: error: attempt to free a non-heap >> > object 'life' [-Werror=free-nonheap-object] >> >::free (v); >> >^ >> > lto1: all warnings being treated as errors >> >> Obviously fallout of the stack-vector rewrite. >> >> stack_vec life; >> life.safe_grow_cleared (SLP_INSTANCE_GROUP_SIZE (instance)); >> >> doesn't make much sense anyway ... why is the initial size only >> allowed as a template parameter? But then safe_grow shouldn't free >> the stack storage. > > So, I'm still confused how exactly this happens, presumably we must be > trying to reserve a vector of length zero and consequently hit that code > in va_heap::reserve to free the vector if we're supposed to reserve 0 > elements, but that doesn't make sense because the first check in > vec::reserve should have failed if that was the case. Unfortunately I > have no clue how to get dumps for optimization happening during lto or > otherwise debug the compiler during lto. The backtrace suggests that the error may be from expanding code that is dead at runtime but was not detected as so. IPA-CP likely propagated the storage object and partial inlining obfuscated the code enough to hide the fact that it is dead ... > However I think I've convinced myself this code to have > vec_prefix::calculate_a
Re: [PATCH] RE: libcilkrts breaks non-bootstrap build
On Tue, Nov 5, 2013 at 5:17 AM, Iyer, Balaji V wrote: > > >> -Original Message- >> From: Tom de Vries [mailto:tom_devr...@mentor.com] >> Sent: Monday, November 4, 2013 2:15 PM >> To: gcc@gcc.gnu.org >> Cc: Iyer, Balaji V >> Subject: libcilkrts breaks non-bootstrap build >> >> Hi, >> >> When configuring a gcc build with "--disable-bootstrap --enable- >> languages=c" I run into this error: >> ... >> libtool: compile: g++ >> -B/home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- >> gnu/bin/ >> -B/home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- >> gnu/lib/ >> -isystem >> /home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- >> gnu/include >> -isystem >> /home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- >> gnu/sys-include >> "-DPACKAGE_NAME=\"Cilk Runtime Library\"" >> -DPACKAGE_TARNAME=\"cilk-runtime-library\" - >> DPACKAGE_VERSION=\"2.0\" >> "-DPACKAGE_STRING=\"Cilk Runtime Library 2.0\"" >> -DPACKAGE_BUGREPORT=\"c...@intel.com\" -DPACKAGE_URL=\"\" >> -DPACKAGE=\"cilk-runtime-library\" -DVERSION=\"2.0\" -DSTDC_HEADERS=1 >> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 - >> DHAVE_STRING_H=1 >> -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 - >> DHAVE_STDINT_H=1 >> -DHAVE_UNISTD_H=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 - >> DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. - >> I/home/vries/gcc_versions/devel/src/libcilkrts >> -I/home/vries/gcc_versions/devel/src/libcilkrts/include >> -I/home/vries/gcc_versions/devel/src/libcilkrts/runtime >> -I/home/vries/gcc_versions/devel/src/libcilkrts/runtime/config/x86 >> -DIN_CILK_RUNTIME=1 -D_Cilk_spawn= -D_Cilk_sync= -D_Cilk_for=for - >> fcilkplus -g3 >> -O0 -dH -D_GNU_SOURCE -MT bug.lo -MD -MP -MF .deps/bug.Tpo -c >> /home/vries/gcc_versions/devel/src/libcilkrts/runtime/bug.cpp -fPIC -DPIC - >> o .libs/bug.o >> g++: error: unrecognized command line option '-fcilkplus' >> make[2]: *** [bug.lo] Error 1 >> make[2]: Leaving directory >> `/home/vries/gcc_versions/devel/lean-c/build/x86_64-unknown-linux- >> gnu/libcilkrts' >> ... >> >> The error occurs because the compiler doesn't support -fcilkplus. >> >> Should configure disable libcilkplus when c++ is not enabled? >> > > Is the following patch OK to fix this issue? Ok. Thanks, Richard. > Thanks, > > Balaji V. Iyer. > > Index: configure.ac > === > --- configure.ac(revision 204381) > +++ configure.ac(working copy) > @@ -2061,7 +2061,7 @@ > case ,${enable_languages}, in >*,c++,*) ;; >*) > -noconfigdirs="$noconfigdirs target-libitm target-libsanitizer > target-libvtv" > +noconfigdirs="$noconfigdirs target-libcilkrts target-libitm > target-libsanitizer target-libvtv" > ;; > esac > > Index: ChangeLog > === > --- ChangeLog (revision 204381) > +++ ChangeLog (working copy) > @@ -1,3 +1,9 @@ > +2013-11-04 Balaji V. Iyer > + > + * configure.ac: Added libcilkrts to noconfig list when C++ is not > + supported. > + * configure: Regenerated. > + > 2013-11-01 Trevor Saunders > > * MAINTAINERS (Write After Approval): Add myself. > Index: configure > === > --- configure (revision 204381) > +++ configure (working copy) > @@ -6630,7 +6630,7 @@ > case ,${enable_languages}, in >*,c++,*) ;; >*) > -noconfigdirs="$noconfigdirs target-libitm target-libsanitizer > target-libvtv" > +noconfigdirs="$noconfigdirs target-libcilkrts target-libitm > target-libsanitizer target-libvtv" > ;; > esac >
[C++] Optimizing dynamic_cast to a final C++ class
I've looked at optimizing dynamic_cast to final C++ class. In theory, it should be possible to load the vtable pointer, compare it to the expected value, and use the original pointer if it matches, or NULL otherwise (for pointers, references are similar but need the conditional throw). But I remember a discussion on the cxxabi list that vtables are not deduplicated if they are contained in multiple libraries, so a simple pointer comparison won't do. Is there anything else that could be used as a reliable marker? If not, do you think it would be feasible to add a fast-path for final target classes to the __dynamic_cast implementation? -- Florian Weimer / Red Hat Product Security Team
Re: [C++] Optimizing dynamic_cast to a final C++ class
On 11/05/2013 01:36 PM, Florian Weimer wrote: I've looked at optimizing dynamic_cast to final C++ class. In theory, it should be possible to load the vtable pointer, compare it to the expected value, and use the original pointer if it matches, or NULL otherwise (for pointers, references are similar but need the conditional throw). But I remember a discussion on the cxxabi list that vtables are not deduplicated if they are contained in multiple libraries, so a simple pointer comparison won't do. Is there anything else that could be used as a reliable marker? If not, do you think it would be feasible to add a fast-path for final target classes to the __dynamic_cast implementation? Just wanted to say that if you are going to work in this are you could consider also adding the warning per c++/12277 (/38557), which seems nice to have. Paolo.
Re: [PATCH] RE: libcilkrts breaks non-bootstrap build
On Tue, 5 Nov 2013, Tom de Vries wrote: > FWIW, I stumbled upon this text at http://gcc.gnu.org/codingconventions.html > which is related to this patch, and also to the top-level part of your commit > r204173, which is missing at 'src': Note there are now *three* repositories to keep in sync - GCC, src CVS and binutils-gdb git. -- Joseph S. Myers jos...@codesourcery.com
Re: Something wrong with bootstrap-lto, or lto itself:
On Tue, Nov 05, 2013 at 12:56:39PM +0100, Richard Biener wrote: > On Tue, Nov 5, 2013 at 6:42 AM, Trevor Saunders wrote: > > On Mon, Nov 04, 2013 at 01:29:10PM +0100, Richard Biener wrote: > >> On Wed, Oct 30, 2013 at 8:17 PM, Toon Moene wrote: > >> > Consider this: > >> > > >> > http://gcc.gnu.org/ml/gcc-testresults/2013-10/msg02329.html > >> > > >> > and > >> > > >> > http://gcc.gnu.org/ml/gcc-testresults/2013-10/msg02258.html > >> > > >> > /scratch/toon/bd5894/./prev-gcc/xg++ -B/scratch/toon/bd5894/./prev-gcc/ > >> > -B/home/toon/compilers/install/x86_64-unknown-linux-gnu/bin/ -nostdinc++ > >> > -B/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs > >> > -B/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs > >> > -I/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu > >> > -I/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include > >> > -I/home/toon/compilers/gcc/libstdc++-v3/libsupc++ > >> > -L/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs > >> > -L/scratch/toon/bd5894/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs > >> > -g -O2 -flto=jobserver -frandom-seed=1 -DIN_GCC-fno-exceptions > >> > -fno-rtti > >> > -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings > >> > -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long > >> > -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common > >> > -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc -o cc1plus \ > >> > cp/cp-lang.o c-family/stub-objc.o cp/call.o cp/decl.o > >> > cp/expr.o cp/pt.o cp/typeck2.o cp/class.o cp/decl2.o cp/error.o cp/lex.o > >> > cp/parser.o cp/ptree.o cp/rtti.o cp/typeck.o cp/cvt.o cp/except.o > >> > cp/friend.o cp/init.o cp/method.o cp/search.o cp/semantics.o cp/tree.o > >> > cp/repo.o cp/dump.o cp/optimize.o cp/mangle.o cp/cp-objcp-common.o > >> > cp/name-lookup.o cp/cxx-pretty-print.o cp/cp-gimplify.o > >> > cp/cp-array-notation.o cp/lambda.o cp/vtable-class-hierarchy.o attribs.o > >> > incpath.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o > >> > c-family/c-format.o c-family/c-gimplify.o c-family/c-lex.o > >> > c-family/c-omp.o > >> > c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o > >> > c-family/c-pragma.o > >> > c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o > >> > c-family/array-notation-common.o c-family/c-ubsan.o i386-c.o glibc-c.o > >> > cc1plus-checksum.o libbackend.a main.o tree-browser.o libcommon-target.a > >> > libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a > >> > ../libcpp/libcpp.a ../libbacktrace/.libs/libbacktrace.a > >> > ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -lcloog-isl > >> > -lisl > >> > -lmpc -lmpfr -lgmp -rdynamic -ldl -L../zlib -lz > >> > In function 'release', > >> > inlined from > >> > '_ZN7va_heap7reserveIbEEvRP3vecIT_S_8vl_embedEjb.part.95' > >> > at /home/toon/compilers/gcc/gcc/vec.h:288:7, > >> > inlined from 'reserve', > >> > inlined from '_ZN3vecIb7va_heap6vl_ptrE7reserveEjb.part.96' at > >> > /home/toon/compilers/gcc/gcc/vec.h:1367:3, > >> > inlined from 'reserve.constprop', > >> > inlined from 'reserve_exact' at > >> > /home/toon/compilers/gcc/gcc/vec.h:1387:45, > >> > inlined from 'safe_grow' at > >> > /home/toon/compilers/gcc/gcc/vec.h:1515:3, > >> > inlined from 'safe_grow_cleared' at > >> > /home/toon/compilers/gcc/gcc/vec.h:1529:3, > >> > inlined from 'vect_bb_vectorization_profitable_p' at > >> > /home/toon/compilers/gcc/gcc/tree-vect-slp.c:2027:0, > >> > inlined from 'vect_slp_analyze_bb_1' at > >> > /home/toon/compilers/gcc/gcc/tree-vect-slp.c:2174:55, > >> > inlined from 'vect_slp_analyze_bb' at > >> > /home/toon/compilers/gcc/gcc/tree-vect-slp.c:2229:44: > >> > /home/toon/compilers/gcc/gcc/vec.h:316:3: error: attempt to free a > >> > non-heap > >> > object 'life' [-Werror=free-nonheap-object] > >> >::free (v); > >> >^ > >> > lto1: all warnings being treated as errors > >> > >> Obviously fallout of the stack-vector rewrite. > >> > >> stack_vec life; > >> life.safe_grow_cleared (SLP_INSTANCE_GROUP_SIZE (instance)); > >> > >> doesn't make much sense anyway ... why is the initial size only > >> allowed as a template parameter? But then safe_grow shouldn't free > >> the stack storage. > > > > So, I'm still confused how exactly this happens, presumably we must be > > trying to reserve a vector of length zero and consequently hit that code > > in va_heap::reserve to free the vector if we're supposed to reserve 0 > > elements, but that doesn't make sense because the first check in > > vec::reserve should have failed if that was the case. Unfortunately I > > have no clue how to get dumps for optimization happening during lto or > > otherwise debug the compiler during lto. > > The backtrace suggests that the error may be from expan
RE: [PATCH] RE: libcilkrts breaks non-bootstrap build
> -Original Message- > From: Richard Biener [mailto:richard.guent...@gmail.com] > Sent: Tuesday, November 5, 2013 7:08 AM > To: Iyer, Balaji V > Cc: Tom de Vries; gcc@gcc.gnu.org > Subject: Re: [PATCH] RE: libcilkrts breaks non-bootstrap build > > On Tue, Nov 5, 2013 at 5:17 AM, Iyer, Balaji V > wrote: > > > > > >> -Original Message- > >> From: Tom de Vries [mailto:tom_devr...@mentor.com] > >> Sent: Monday, November 4, 2013 2:15 PM > >> To: gcc@gcc.gnu.org > >> Cc: Iyer, Balaji V > >> Subject: libcilkrts breaks non-bootstrap build > >> > >> Hi, > >> > >> When configuring a gcc build with "--disable-bootstrap --enable- > >> languages=c" I run into this error: > >> ... > >> libtool: compile: g++ > >> -B/home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- > >> gnu/bin/ > >> -B/home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- > >> gnu/lib/ > >> -isystem > >> /home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- > >> gnu/include > >> -isystem > >> /home/vries/gcc_versions/devel/lean-c/install/x86_64-unknown-linux- > >> gnu/sys-include > >> "-DPACKAGE_NAME=\"Cilk Runtime Library\"" > >> -DPACKAGE_TARNAME=\"cilk-runtime-library\" - > DPACKAGE_VERSION=\"2.0\" > >> "-DPACKAGE_STRING=\"Cilk Runtime Library 2.0\"" > >> -DPACKAGE_BUGREPORT=\"c...@intel.com\" -DPACKAGE_URL=\"\" > >> -DPACKAGE=\"cilk-runtime-library\" -DVERSION=\"2.0\" - > DSTDC_HEADERS=1 > >> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 - > >> DHAVE_STRING_H=1 > >> -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 - > >> DHAVE_STDINT_H=1 > >> -DHAVE_UNISTD_H=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 - > >> DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. - > >> I/home/vries/gcc_versions/devel/src/libcilkrts > >> -I/home/vries/gcc_versions/devel/src/libcilkrts/include > >> -I/home/vries/gcc_versions/devel/src/libcilkrts/runtime > >> -I/home/vries/gcc_versions/devel/src/libcilkrts/runtime/config/x86 > >> -DIN_CILK_RUNTIME=1 -D_Cilk_spawn= -D_Cilk_sync= -D_Cilk_for=for - > >> fcilkplus -g3 > >> -O0 -dH -D_GNU_SOURCE -MT bug.lo -MD -MP -MF .deps/bug.Tpo -c > >> /home/vries/gcc_versions/devel/src/libcilkrts/runtime/bug.cpp -fPIC > >> -DPIC - o .libs/bug.o > >> g++: error: unrecognized command line option '-fcilkplus' > >> make[2]: *** [bug.lo] Error 1 > >> make[2]: Leaving directory > >> `/home/vries/gcc_versions/devel/lean-c/build/x86_64-unknown-linux- > >> gnu/libcilkrts' > >> ... > >> > >> The error occurs because the compiler doesn't support -fcilkplus. > >> > >> Should configure disable libcilkplus when c++ is not enabled? > >> > > > > Is the following patch OK to fix this issue? > > Ok. > > Thanks, > Richard. > Committed as revision 204396. Thanks, Balaji V. Iyer. > > Thanks, > > > > Balaji V. Iyer. > > > > Index: configure.ac > > > == > = > > --- configure.ac(revision 204381) > > +++ configure.ac(working copy) > > @@ -2061,7 +2061,7 @@ > > case ,${enable_languages}, in > >*,c++,*) ;; > >*) > > -noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target- > libvtv" > > +noconfigdirs="$noconfigdirs target-libcilkrts target-libitm target- > libsanitizer target-libvtv" > > ;; > > esac > > > > Index: ChangeLog > > > == > = > > --- ChangeLog (revision 204381) > > +++ ChangeLog (working copy) > > @@ -1,3 +1,9 @@ > > +2013-11-04 Balaji V. Iyer > > + > > + * configure.ac: Added libcilkrts to noconfig list when C++ is not > > + supported. > > + * configure: Regenerated. > > + > > 2013-11-01 Trevor Saunders > > > > * MAINTAINERS (Write After Approval): Add myself. > > Index: configure > > > == > = > > --- configure (revision 204381) > > +++ configure (working copy) > > @@ -6630,7 +6630,7 @@ > > case ,${enable_languages}, in > >*,c++,*) ;; > >*) > > -noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target- > libvtv" > > +noconfigdirs="$noconfigdirs target-libcilkrts target-libitm target- > libsanitizer target-libvtv" > > ;; > > esac > >
Bootstrap issues in libsanitizer
Hello Everyone, I am getting this weird bootstrap error in my SUSE machine with libsanitizer that didn't occur ~1.5 days ago. Is anyone else seeing this? libtool: compile: /export/users/gcc-svn/b-trunk-gcc/./gcc/xgcc -shared-libgcc -B/export/users/gcc-svn/b-trunk-gcc/./gcc -nostdinc++ -L/export/users/gcc-svn/b-trunk-gcc/x86_64-unknown-linux-gnu/libstdc++-v3/src -L/export/users/gcc-svn/b-trunk-gcc/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -L/export/users/gcc-svn/b-trunk-gcc/x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -B/export/users/gcc-svn/install_dir/trunk-install/x86_64-unknown-linux-gnu/bin/ -B/export/users/gcc-svn/install_dir/trunk-install/x86_64-unknown-linux-gnu/lib/ -isystem /export/users/gcc-svn/install_dir/trunk-install/x86_64-unknown-linux-gnu/include -isystem /export/users/gcc-svn/install_dir/trunk-install/x86_64-unknown-linux-gnu/sys-include -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I. -I../../../../trunk-gcc/libsanitizer/sanitizer_common -I ../../../../trunk-gcc/libsanitizer/include -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros -I../../libstdc++-v3/include -I../../libstdc++-v3/include/x86_64-unknown-linux-gnu -I../../../../trunk-gcc/libsanitizer/../libstdc++-v3/libsupc++ -g -O2 -D_GNU_SOURCE -MT sanitizer_platform_limits_posix.lo -MD -MP -MF .deps/sanitizer_platform_limits_posix.Tpo -c ../../../../trunk-gcc/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc -fPIC -DPIC -o .libs/sanitizer_platform_limits_posix.o In file included from /usr/include/sys/vt.h:1:0, from ../../../../trunk-gcc/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:49: /usr/include/linux/vt.h:74:15: error: expected unqualified-id before ânewâ unsigned int new; /* New console (if changing) */ ^ configured with: ../trunk-gcc/configure --prefix=/export/users/gcc-svn/install_dir/trunk-install Thanks, Balaji V. Iyer.
Re: Bootstrap issues in libsanitizer
On 5 November 2013 15:27, Iyer, Balaji V wrote: > In file included from /usr/include/sys/vt.h:1:0, > from > ../../../../trunk-gcc/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:49: > /usr/include/linux/vt.h:74:15: error: expected unqualified-id before ânewâ > unsigned int new; /* New console (if changing) */ >^ 'new' is a keyword in C++, so your linux/vt.h header is not usable in C++ files. This is not a problem in libsanitizer. Have you recently updated a kernel-headers package on your machine?
Re: Bootstrap issues in libsanitizer
On 5 November 2013 15:32, Jonathan Wakely wrote: > On 5 November 2013 15:27, Iyer, Balaji V wrote: >> In file included from /usr/include/sys/vt.h:1:0, >> from >> ../../../../trunk-gcc/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:49: >> /usr/include/linux/vt.h:74:15: error: expected unqualified-id before ânewâ >> unsigned int new; /* New console (if changing) */ >>^ > > 'new' is a keyword in C++, so your linux/vt.h header is not usable in C++ > files. > > This is not a problem in libsanitizer. Have you recently updated a > kernel-headers package on your machine? With kernel 3.11.6 I see that field is called newev, so it looks as though newer kernels fix the problem. Maybe libsanitizer needs to do some ugly dance around that header: #define new renamed_new #include #undef new
Re: Bootstrap issues in libsanitizer
On 5 November 2013 15:38, Jonathan Wakely wrote: > On 5 November 2013 15:32, Jonathan Wakely wrote: >> On 5 November 2013 15:27, Iyer, Balaji V wrote: >>> In file included from /usr/include/sys/vt.h:1:0, >>> from >>> ../../../../trunk-gcc/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:49: >>> /usr/include/linux/vt.h:74:15: error: expected unqualified-id before ânewâ >>> unsigned int new; /* New console (if changing) */ >>>^ >> >> 'new' is a keyword in C++, so your linux/vt.h header is not usable in C++ >> files. >> >> This is not a problem in libsanitizer. Have you recently updated a >> kernel-headers package on your machine? > > With kernel 3.11.6 I see that field is called newev, so it looks as > though newer kernels fix the problem. http://lkml.indiana.edu/hypermail/linux/kernel/0911.2/01720.html implies the "new" field never made it into an actual release, so it might be a problem for SuSE kernels only.
Re: Report on the bounded pointers work
On 11/05/13 03:35, Florian Weimer wrote: On 11/04/2013 05:43 PM, Joseph S. Myers wrote: On Mon, 4 Nov 2013, Jeff Law wrote: You might also be referring to Greg McGary's work on bounded pointers, I don't think that ever got integrated or if it did, it got pulled long ago. It was integrated in 2000, removed in 2002/2003 (I removed the relics from glibc earlier this year). By using fat pointers, it required the entire program including all libraries it used to be built with bounded pointers enabled (and associated changes to all assembly sources to handle them). Yes, I was referring to Greg's work. I'm wondering if the trade-offs have changed since then, considering that it's again en vogue to bootstrap new architectures. It's difficult to tell without more details about that past effort, though. Not really, IMHO. If anything as software complexity continues to increase (specifically pulling in more and more libraries from various sources), the problem of mixing instrumented and uninstrumented code has actually gotten worse. jeff
Re: Report on the bounded pointers work
On Tue, Nov 05, 2013 at 08:55:21AM -0700, Jeff Law wrote: > On 11/05/13 03:35, Florian Weimer wrote: > >On 11/04/2013 05:43 PM, Joseph S. Myers wrote: > >>On Mon, 4 Nov 2013, Jeff Law wrote: > >> > >>>You might also be referring to Greg McGary's work on bounded > >>>pointers, I don't > >>>think that ever got integrated or if it did, it got pulled long ago. > >> > >>It was integrated in 2000, removed in 2002/2003 (I removed the relics > >>from > >>glibc earlier this year). By using fat pointers, it required the entire > >>program including all libraries it used to be built with bounded pointers > >>enabled (and associated changes to all assembly sources to handle them). > > > >Yes, I was referring to Greg's work. I'm wondering if the trade-offs > >have changed since then, considering that it's again en vogue to > >bootstrap new architectures. It's difficult to tell without more > >details about that past effort, though. > Not really, IMHO. If anything as software complexity continues to > increase (specifically pulling in more and more libraries from > various sources), the problem of mixing instrumented and > uninstrumented code has actually gotten worse. > Also it is doing useless work, allocator already knows bounds so all you need to do is ask. A query can be made O(1) with bit of work, I attached a proof of concept allocator that checks memcpy where queries are unoptimized O(n). As it is this will not get bounds on static and stack allocations. For static allocations you could extract bounds by reading debug information as gdb does. For stack allocations it takes more work, it could be done by compiler/compiler plugin/custom frontend inserting bound_add (from, to) and bound_remove (from, to) calls for each stack variable that escaped. #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #define log(...) fprintf (stderr, __VA_ARGS__) #ifndef TRACE # define TRACE 4 #endif typedef struct left_sentinel { void *origin[TRACE]; uint64_t res2; uint64_t iteration; struct left_sentinel *previous, *next; uint64_t size; uint64_t sentinel; } left_sentinel; #define ALIGN_UP(x, no) uintptr_t) x) + no - 1) - (((uintptr_t) x) + no - 1) % no) #define SENTINEL5877815476798078077UL #define BIG_SENTINEL1204925723299285449UL #define DOUBLE_FREE 10943064412161398437UL static pthread_mutex_t mutex; static int inited; size_t page_size; static void init () { page_size = sysconf (_SC_PAGE_SIZE); pthread_mutex_init (&mutex, NULL); inited = 1; } static void verify_sentinel (); void * malloc (size_t len) { void *ptr; posix_memalign (&ptr, 16, len); return ptr; } void * calloc (size_t nmemb, size_t size) { if (!nmemb | !size) return NULL; if (SIZE_MAX / nmemb < size) { log ("allocation overflow in calloc(%i, %i)\n", nmemb, size); abort (); } void *ptr = malloc (nmemb * size); if (ptr != NULL) memset (ptr, 0, nmemb * size); return ptr; } void * valloc (size_t size) { void *ret; posix_memalign (&ret, page_size, size); return ret; } void * pvalloc (size_t size) { void *ret; posix_memalign (&ret, page_size, size); return ret; } void * memalign (size_t alignment, size_t size) { void *ret; posix_memalign (&ret, alignment, size); return ret; } void * realloc (void *ptr, size_t size) { if (!ptr) return malloc (size); left_sentinel *cur = (left_sentinel *) (((char *) ptr) - sizeof (left_sentinel)); verify_sentinel (cur); size_t old_size = cur->size; if (old_size > size) return ptr; char *new = malloc (size); if (!new) return NULL; memcpy (new, ptr, old_size); free (ptr); return new; } static char * wrap_mmap (size_t size) { char *ret = mmap (NULL, ALIGN_UP (size, page_size) + 2 * page_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (!ret) abort; munmap (ret, page_size); munmap (ret + page_size + ALIGN_UP (size, page_size), page_size); return ret + page_size; } static void **bucket[64]; static void return_bucket (char *ptr, size_t size) { int pow; for (pow = 0; 1UL << pow < size; pow++) ; char *old = (char *) bucket[pow]; bucket[pow] = (void **) ptr; *bucket[pow] = old; } static void add_bucket (size_t size) { int i, pow; for (pow = 0; 1UL << pow < size; pow++) ; if (1UL << pow >= page_size) { /* tighter checks. */ char *ptr = wrap_mmap ((1UL << pow)); return_bucket (ptr, size); } else { char *ptr = wrap_mmap (page_size); for (i = 0; i < page_size; i += 1UL << pow) { return_bucket (ptr + i, size); } } } static void * get_bucket (size_t size) { int pow; for (pow = 0; 1UL << pow < size; pow++) ; if (!bucket[pow]) add_bucket (size); void **ret = bucket[pow]; bucket[pow] = *ret; return (void *) ret; } static left_sentinel *previous = NULL; int posix_memalign (v
Re: Report on the bounded pointers work
On 11/05/13 03:11, Yury Gribov wrote: > If you're referring to mudflap (Frank Eigler's work), > ... > It never reached a point where interoperability across objects with and without mudflap instrumentation worked Jeff, Could you add more details? E.g. I don't see how mudflap interoperability is different from AdressSanitizer which seems to be state of the art. I haven't looked at AddressSanitizer, so I can't really comment on if/how it handles code interoperability. I would recommend reviewing the work Intel is doing on MPX. jeff
Re: Report on the bounded pointers work
On Tue, Nov 05, 2013 at 09:54:31AM -0700, Jeff Law wrote: > On 11/05/13 03:11, Yury Gribov wrote: > > > If you're referring to mudflap (Frank Eigler's work), > > > ... > > > It never reached a point where interoperability across objects with > >and without mudflap instrumentation worked > >Could you add more details? E.g. I don't see how mudflap > >interoperability is different from AdressSanitizer which seems to be > >state of the art. > I haven't looked at AddressSanitizer, so I can't really comment on > if/how it handles code interoperability. Asan is conservative, you can mix instrumented and uninstrumented code. There are some issues if you don't link the binary with -fsanitize=address (both that the library may be initialized too late to work properly and that it's entry points that are meant to override libc/libpthread/libstdc++ entry points aren't early enough in symbol search scope), but some libraries are instrumented, but other than that it should work fine. Also, one issue is the large address space requirements (so you can't use too low RLIMIT_AS). As for speed, I guess it remains to be measured which of asan vs. MPX is faster (and, if MPX grows some variant without HW support, also how well that one works compared to asan). Jakub
Re: Report on the bounded pointers work
Yury Gribov writes: >[...] >> [mudflap] never reached a point where interoperability across objects with > and without mudflap instrumentation worked > > Could you add more details? E.g. I don't see how mudflap > interoperability is different from AdressSanitizer which seems to be > state of the art. My sense is that asan and mudflap are comparable with respect to support of interoperation between instrumented and uninstrumented code. The trick is how to handle pointers arriving from the latter. libmudflap handled this issue in two ways: by attempting to intercept all heap allocations from libraries (at the glibc/dlsym level), and by heuristics for recognizing addresses that might have come from unintercepted static/auto allocations. The former is tricky and was an uphill battle trying to catch everything, so in practice heuristics were almost always necessary. (There are of course many differences. They have different tradeoffs as to speed versus memory-consumption - asan is hard-coded in the opposite direction than libmudflap's (configurable) default. asan's multi-threading support may be superior. mudflap's tuning/features were not completed. asan sports more recent developers.) - FChE
Re: [Patch: libcpp, c-family, Fortran] Re: Warning about __DATE__ and __TIME__
On Mon, Nov 04, 2013 at 09:58:30PM +0100, Tobias Burnus wrote: > Tobias Burnus wrote: > > Gerald Pfeifer wrote: > >> To make it easier to reproduce builds of software and entire GNU/Linux > >> distributions, RMS had the idea of adding a warning to GCC that warns > >> about the use of __DATE__ and __TIME__. > > > > I assume that he also likes to have a warning for __TIMESTAMP__. > > > >> I was thinking a new warning -Wdate-time or similar could address > >> this. Any volunteers implementing this? > > Do you mean something like the attached patch? (Only lightly tested.) > > Updated version attached ? after bootstrapping and regtesting on > x86-64-gnu-linux > OK? > Fortran bits are OK. -- Steve
Adding dependencies without rule in Makefile.am
Hi, I’m trying to patch libgfortran’s Makefile.am but I’m running into trouble to express some chain of dependencies. I have two new files: a.F90 and b.F90. I’m adding them to libgfortran_la_SOURCES. These will thus generate a.o and b.o object files, which will be linked into libgfortran. So far, so good. But these files also generate Fortran module files (i.e., compiling a.F90 will generate a file a.mod in addition to a.o). It so happens that compiling b.F90 depends on a.mod being available. I cannot, however, manage to enter that information into the Makefile.am. I first tried to add this simple dependency in terms of object files: a.lo: b.lo with no rule. Turns out that automake then says: > Makefile.am:882: user target `ieee_arithmetic.lo' defined here... > /opt/automake-1.11.1/share/automake-1.11/am/depend2.am: ... overrides > Automake target `ieee_arithmetic.lo' defined here So: is it possible to add a dependency without overriding the rule? I like automake’s compilation line fine, I just want to add a dependency. Thanks for any help, this is driving me nuts and preventing completion of my patch… FX