https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69611
Bug ID: 69611 Summary: Bootstrap broken on PowerPC FreeBSD, IEEE 128-bit floating point support. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: bootstrap Assignee: unassigned at gcc dot gnu.org Reporter: andreast at gcc dot gnu.org Target Milestone: --- PowerPC FreeBSD does not support 128-bit floating point yet. Bootstrap on this target is broken because of undefined references to __sfp_handle_exceptions. We build gcc with softfp for our 32-bit embedded targets. Now the the sfp-machine.h is included even in the non 128-bit t-float128 case. The definition of the __sfp_handle_exceptions is done in the mentioned header file while the implementation is done in the sfp-exceptions.c which is only built when 128-bit float is supported. To fix this issue we propose to guard the affected region in sfp-machine.h with this: Index: config/rs6000/sfp-machine.h =================================================================== --- config/rs6000/sfp-machine.h (revision 233015) +++ config/rs6000/sfp-machine.h (working copy) @@ -110,7 +110,7 @@ floating point on pre-ISA 3.0 machines without the IEEE 128-bit floating point support. */ -#ifndef __NO_FPRS__ +#if defined(__FLOAT128__) #define ISA_BIT(x) (1LL << (63 - x)) /* Use the same bits of the FPSCR. */ @@ -151,7 +151,7 @@ } while (0) # define FP_ROUNDMODE (_fpscr & FP_RND_MASK) -#endif /* !__NO_FPRS__ */ +#endif /* __FLOAT128__ */ I discussed this with Michael Meissner on #irc. He agrees on this approach. I'm running a bootstrap and will provide test results from FreeBSD PowerPC asap. I'd appreciate a testrun on a GNU/Linux target. I do not have such a setup yet. TIA, Andreas