https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120006

--- Comment #6 from Sam James <sjames at gcc dot gnu.org> ---
(In reply to Avraham Hollander from comment #5)
> So it could be code from either of those files. How would you narrow that
> down further?

What I usually do is:
* Build it manually (git clone ... && cd ... && ./autogen.sh && ./configure &&
make, make sure The Thing works)
* Build it again w/ `make clean && ./configure CFLAGS="-O2 -fipa-pta" && make`
(or whatever flags), make sure I can reproduce
* make clean, git clean -fdx to clean up
* mkdir build-{good,bad,maybe}
* cd into each of those, do ~/git/util-linux/configure CFLAGS="-O2 -fipa-pta"
for bad, do ~/git/util-linux/configure for good & maybe
* get a list of differing objects between build-good/ and build-bad/
* bisect the list of differing objects by copying and rerunning make (inside
build-maybe)

But that's when I have no idea. If I have a clue or idea that it's in a
specific file, I may modify the build system first to just add -fipa-pta for a
single file or object to see if it works. Or I'll read the build log from a
regular build, and re-run the commands involved (put them in a script first,
make sure it works) to make each object + relink the executable, then tweak it.

(This is a rough outline of what I'm doing now.)

If you want to very quickly confirm (sort of -- see below (*)), you can read
the build.log, re-run that fsck-fsck.o comman with -fno-ipa-pta appended, then
run the command which linked fsck. Does it work now? Repeat with
fsck-monotonic.o to be sure.

(*) This isn't strictly accurate because it could be something inside
libmount.la libblkid.la libcommon.la.

Reply via email to