RFR(XS): 8191337: GCC 4.8 build broken after 8186571

Kim Barrett kim.barrett at oracle.com
Wed Nov 15 20:59:54 UTC 2017

> On Nov 15, 2017, at 11:23 AM, Doerr, Martin <martin.doerr at sap.com> wrote:
> Hi,
> I’d like to build the VM with GCC 4.8.5, but I got the following error while linking:
> g1FullGCOopClosures.hpp:140: undefined reference to `void G1VerifyOopClosure::do_oop_nv<unsigned int>(unsigned int*)'
> It can be fixed by:
> http://cr.openjdk.java.net/~mdoerr/8191337_fix_linux_build/webrev/
> Please review. I will also need a sponsor.
> Thanks and best regards,
> Martin

Rather than moving the do_oop definitions, maybe instead add explicit
instantiations of the template in the .cpp file, e.g.

template void G1VerifyOopClosure::do_oop_nv(oop*); 
template void G1VerifyOopClosure::do_oop_nv(narrowOop*); 

I'm not sure what's different about gcc4.9 (what we test with at
Oracle) that would have allowed the existing code to work at all.

More information about the hotspot-gc-dev mailing list