The problem is the PLT is moving from one invocation of cc1plus to
another. I'm not sure why. Currently, function descriptors live in
the PLT. So, if it moves, the PCH is dead even if the text is in the
same location as it was when the PCH file was written. If this can't
be fixed, then the only solution is to avoid writing out any function
pointers.
It turns out that the PLT isn't moving. The problem is a Makefile
issue. The runtime libraries are being built with the training compiler
in a profiled build. Then, we use the profiled feedback compiler
when the testsuite is run. As a result, PCH is disabled.
I am testing the enclosed fix.