This enables building on Mac OS and FreeBSD by adding support to their
variants of the sed utility.

diff -urN gcc-5.2.0.orig/libgcc/config/t-hardfp gcc-5.2.0/libgcc/config/t-hardfp
--- gcc-5.2.0.orig/libgcc/config/t-hardfp	2015-01-05 04:33:28.000000000 -0800
+++ gcc-8.1.0/libgcc/config/t-hardfp	2016-04-06 12:04:51.000000000 -0700
@@ -59,21 +59,52 @@
 
 hardfp_func_list := $(filter-out $(hardfp_exclusions),$(hardfp_func_list))
 
+HOST_OS ?= $(shell uname)
+
 # Regexp for matching a floating-point mode.
+ifeq ($(HOST_OS), Darwin)
+hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /|/g')
+else
+ifeq ($(HOST_OS), FreeBSD)
+hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /|/g')
+else
 hardfp_mode_regexp := $(shell echo $(hardfp_float_modes) | sed 's/ /\\|/g')
+endif
+endif
 
 # Regexp for matching the end of a function name, after the last
 # floating-point mode.
+ifeq ($(HOST_OS), Darwin)
+hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /|/g')
+else
+ifeq ($(HOST_OS), FreeBSD)
+hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /|/g')
+else
 hardfp_suffix_regexp := $(shell echo $(hardfp_int_modes) 2 3 | sed 's/ /\\|/g')
+endif
+endif
 
 # Add -D options to define:
 #   FUNC: the function name (e.g. __addsf3)
 #   OP:   the function name without the leading __ and with the last
 #            floating-point mode removed (e.g. add3)
 #   TYPE: the last floating-point mode (e.g. sf)
+
+ifeq ($(HOST_OS), Darwin)
 hardfp_defines_for = \
   $(shell echo $1 | \
-    sed 's/\(.*\)\($(hardfp_mode_regexp)\)\($(hardfp_suffix_regexp)\|\)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/')
+    sed -E 's/(.*)($(hardfp_mode_regexp))($(hardfp_suffix_regexp)|.*)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/')
+else
+ifeq ($(HOST_OS), FreeBSD)
+hardfp_defines_for = \
+  $(shell echo $1 | \
+    sed -r 's/(.*)($(hardfp_mode_regexp))($(hardfp_suffix_regexp)|.*)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/')
+else
+hardfp_defines_for = \
+  $(shell echo $1 | \
+    sed 's/\(.*\)\($(hardfp_mode_regexp)\)\($(hardfp_suffix_regexp)\|\)$$/-DFUNC=__& -DOP_\1\3 -DTYPE=\2/')
+endif
+endif
 
 hardfp-o = $(patsubst %,%$(objext),$(hardfp_func_list))
 $(hardfp-o): %$(objext): $(srcdir)/config/hardfp.c
