Merge pull request #721 from stewart-ibm/gcc6

Use GCC6 for POWER8 + simulation platforms
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index 8726813..37a6ca0 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index d720bab..bcd4ed6 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index 79a024a..09275e6 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index 7cfad87..ca8fa57 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index d1cd72b..7f583cd 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -3,6 +3,7 @@
 BR2_KERNEL_HEADERS_4_4=y
 BR2_BINUTILS_VERSION_2_26_X=y
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GCC_VERSION_6_X=y
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TARGET_GENERIC_HOSTNAME="skiroot"
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0003-Default-to-std-gnu-03.patch b/openpower/package/hostboot/p8Patches/hostboot-0003-Default-to-std-gnu-03.patch
new file mode 100644
index 0000000..f6c6710
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0003-Default-to-std-gnu-03.patch
@@ -0,0 +1,32 @@
+From bc7b8b21549752274b162c64dbce3c81d20f2cab Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 20:22:30 +1000
+Subject: [PATCH 03/10] Default to std=gnu++03
+
+Seeing as no C++ dialect was previously selected, GCC < 6 defaulted
+to GNU++98 as the standard C++ mode. However... it seems that C++03
+is a better match for HostBoot code (confirmed by Patrick Williams
+in https://github.com/open-power/hostboot/pull/62#discussion_r76830612 )
+
+Change-Id: I6661b5b61319c85c2a90926beb6e2662e96dcf06
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/build/mkrules/cflags.env.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/build/mkrules/cflags.env.mk b/src/build/mkrules/cflags.env.mk
+index c805999..0bae0ec 100644
+--- a/src/build/mkrules/cflags.env.mk
++++ b/src/build/mkrules/cflags.env.mk
+@@ -41,7 +41,7 @@ CFLAGS += $(COMMONFLAGS) -mcpu=power7 -nostdinc -g -mno-vsx -mno-altivec\
+ 	  -ffunction-sections -fdata-sections -ffreestanding -mbig-endian
+ ASMFLAGS += $(COMMONFLAGS) -mcpu=power7 -mbig-endian
+ CXXFLAGS += $(CFLAGS) -nostdinc++ -fno-rtti -fno-exceptions -Wall \
+-	    -fuse-cxa-atexit
++	    -fuse-cxa-atexit -std=gnu++03
+ LDFLAGS += --nostdlib --sort-common -EB $(COMMONFLAGS)
+ 
+ INCFLAGS = $(addprefix -I, $(INCDIR) )
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0004-fix-build-error-return-statement-with-a-value-in-fun.patch b/openpower/package/hostboot/p8Patches/hostboot-0004-fix-build-error-return-statement-with-a-value-in-fun.patch
new file mode 100644
index 0000000..b1ecacd
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0004-fix-build-error-return-statement-with-a-value-in-fun.patch
@@ -0,0 +1,28 @@
+From 6ae906e70c7209e69b750f6566263fe4998dfb48 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 19:22:00 +1000
+Subject: [PATCH 04/10] fix build error: return-statement with a value, in
+ function returning 'void'
+
+Change-Id: I9dc8b698fec95488e209cbc40b928769a26b6de6
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/include/usr/devicefw/driverif.H | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/include/usr/devicefw/driverif.H b/src/include/usr/devicefw/driverif.H
+index a148725..fb43073 100644
+--- a/src/include/usr/devicefw/driverif.H
++++ b/src/include/usr/devicefw/driverif.H
+@@ -266,7 +266,7 @@ namespace DeviceFW
+                              TargType i_targetType,
+                              deviceOp_t i_regRoute)
+     {
+-        return InvalidParameterType(); // Cause a compile fail if not one of
++        InvalidParameterType(); // Cause a compile fail if not one of
+                                        // the explicit template specializations.
+     }
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0005-error-dereferencing-type-punned-pointer-will-break-s.patch b/openpower/package/hostboot/p8Patches/hostboot-0005-error-dereferencing-type-punned-pointer-will-break-s.patch
new file mode 100644
index 0000000..fcfe570
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0005-error-dereferencing-type-punned-pointer-will-break-s.patch
@@ -0,0 +1,71 @@
+From 550d36dca3cdec84d47f05711c2569990d3b4708 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 19:27:04 +1000
+Subject: [PATCH 05/10] error: dereferencing type-punned pointer will break
+ strict-aliasing rules
+
+Change-Id: I63accd3e881c941736ece4b4498c2c9d06ff8761
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H             | 7 +++++++
+ .../usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H        | 1 -
+ src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C        | 6 +++---
+ 3 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
+index e5af2c9..7edf2bf 100755
+--- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
++++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.H
+@@ -227,6 +227,13 @@ namespace getAttrData
+         uint8_t              iv_systemType;
+         uint8_t              iv_systemType_ext;
+         uint8_t              iv_dataVersion;
++    public:
++	MBvpdVMKeyword() : iv_version(0),iv_systemType(0),
++			   iv_systemType_ext(0),iv_dataVersion(0) {};
++	operator uint32_t() const {
++		return iv_version << 24 | iv_systemType << 16 |
++			iv_systemType_ext << 8 | iv_dataVersion;
++	}
+     };
+ //  Attribute definition
+     struct MBvpdAttrDef
+diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
+index f172508..85460b2 100644
+--- a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
++++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.H
+@@ -33,7 +33,6 @@
+ #define _HWP_GETMBVPDMEMDATAVERSION_
+ 
+ #include <fapi.H>
+-#define VM_KEYWORD_DEFAULT_VALUE 0x00000000
+ 
+ // function pointer typedef definition for HWP call support
+ typedef fapi::ReturnCode (*getMBvpdMemoryDataVersion_FP_t)
+diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
+index 2f83fa2..ef64515 100644
+--- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
++++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdMemoryDataVersion.C
+@@ -50,7 +50,7 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
+     fapi::ReturnCode l_fapirc;
+     DimmType l_dimmType = ISDIMM;
+     fapi::MBvpdRecord  l_record  = fapi::MBVPD_RECORD_SPDX;
+-    uint32_t l_vpdMemoryDataVersion = VM_KEYWORD_DEFAULT_VALUE;   
++    MBvpdVMKeyword l_vpdMemoryDataVersion;
+     uint32_t l_bufSize = sizeof(l_vpdMemoryDataVersion);
+ 
+     FAPI_DBG("getMBvpdMemoryDataVersion: entry ");
+@@ -140,8 +140,8 @@ fapi::ReturnCode getMBvpdMemoryDataVersion(
+         }
+                     
+         // Check if the format byte in the value returned is in between valid range
+-        if (( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version >  VM_SUPPORTED_HIGH_VER )||
+-            ( ((MBvpdVMKeyword *)(&l_vpdMemoryDataVersion))->iv_version == VM_NOT_SUPPORTED ))
++        if ((l_vpdMemoryDataVersion.iv_version >  VM_SUPPORTED_HIGH_VER )||
++            (l_vpdMemoryDataVersion.iv_version == VM_NOT_SUPPORTED ))
+         {
+             FAPI_ERR("getMBvpdMemoryDataVersion:"
+                      " keyword data returned is invalid : %d ",
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch b/openpower/package/hostboot/p8Patches/hostboot-0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch
new file mode 100644
index 0000000..666c747
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0006-Change-cv_forcedMemPeriodic-to-uint8_t-as-bool-is-in.patch
@@ -0,0 +1,70 @@
+From 74d099aaffa37498859c0840771052f50253ce4d Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 19:33:42 +1000
+Subject: [PATCH 06/10] Change cv_forcedMemPeriodic to uint8_t as bool is
+ invalid
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+GCC6 throws the following error:
+operand type ‘bool*’ is incompatible with argument 1 of ‘__sync_fetch_and_and’
+
+GCC documents that bool is invalid for __sync builtins over at:
+https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html#g_t_005f_005fsync-Builtins
+" GCC allows any scalar type that is 1, 2, 4 or 8 bytes in size other than the C type _Bool or the C++ type bool"
+
+Change-Id: Iab6415348cb19f590921d8ccc5349867fa57a42d
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/include/kernel/cpumgr.H | 2 +-
+ src/kernel/cpumgr.C         | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/include/kernel/cpumgr.H b/src/include/kernel/cpumgr.H
+index 68f8972..6e9b697 100644
+--- a/src/include/kernel/cpumgr.H
++++ b/src/include/kernel/cpumgr.H
+@@ -215,7 +215,7 @@ class CpuManager
+              */
+         static uint64_t cv_cpuSeq;
+ 
+-        static bool cv_forcedMemPeriodic;       //!<  force free / coalesce.
++        static uint8_t cv_forcedMemPeriodic;       //!<  force free / coalesce.
+ 
+         // If a shutdown of all CPUs is requested
+         static bool cv_shutdown_requested;
+diff --git a/src/kernel/cpumgr.C b/src/kernel/cpumgr.C
+index 44f61a1..ce7516f 100644
+--- a/src/kernel/cpumgr.C
++++ b/src/kernel/cpumgr.C
+@@ -50,7 +50,7 @@ cpu_t** CpuManager::cv_cpus[KERNEL_MAX_SUPPORTED_NODES];
+ bool CpuManager::cv_shutdown_requested = false;
+ uint64_t CpuManager::cv_shutdown_status = 0;
+ size_t CpuManager::cv_cpuSeq = 0;
+-bool CpuManager::cv_forcedMemPeriodic = false;
++uint8_t CpuManager::cv_forcedMemPeriodic = 0;
+ InteractiveDebug CpuManager::cv_interactive_debug;
+ 
+ CpuManager::CpuManager() : iv_lastStartTimebase(0)
+@@ -361,7 +361,7 @@ void CpuManager::executePeriodics(cpu_t * i_cpu)
+         }
+ 
+         bool forceMemoryPeriodic = __sync_fetch_and_and(&cv_forcedMemPeriodic,
+-                                                        false);
++                                                        0);
+ 
+         ++(i_cpu->periodic_count);
+         if((0 == (i_cpu->periodic_count % CPU_PERIODIC_CHECK_MEMORY)) ||
+@@ -461,7 +461,7 @@ size_t CpuManager::getThreadCount()
+ 
+ void CpuManager::forceMemoryPeriodic()
+ {
+-    cv_forcedMemPeriodic = true;
++    cv_forcedMemPeriodic = 1;
+ }
+ 
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0007-error-the-compiler-can-assume-that-the-address-of-r-.patch b/openpower/package/hostboot/p8Patches/hostboot-0007-error-the-compiler-can-assume-that-the-address-of-r-.patch
new file mode 100644
index 0000000..9c2c8f4
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0007-error-the-compiler-can-assume-that-the-address-of-r-.patch
@@ -0,0 +1,34 @@
+From 8797f215a09a89c271dab484b892ceedd2486615 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 20:13:11 +1000
+Subject: [PATCH 07/10] =?UTF-8?q?error:=20the=20compiler=20can=20assume=20?=
+ =?UTF-8?q?that=20the=20address=20of=20=E2=80=98r=E2=80=99=20will=20never?=
+ =?UTF-8?q?=20be=20NULL?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+     PRDF_ASSERT( &r  != NULL );
+
+Change-Id: I2d60075f9e2232512efe45a5c6aa5563f3a565f5
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C b/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
+index 9ee1358..ef7279b 100755
+--- a/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
++++ b/src/usr/diag/prdf/common/framework/register/prdfErrorRegister.C
+@@ -120,8 +120,6 @@ ErrorRegister::ErrorRegister( SCAN_COMM_REGISTER_CLASS & r, ResolutionMap & rm,
+     ErrorRegisterType(), scr(r), scr_rc(SUCCESS), rMap(rm),
+     xNoErrorOnZeroScr(false), xScrId(scrId)
+ {
+-    PRDF_ASSERT( &r  != NULL );
+-    PRDF_ASSERT( &rm != NULL );
+ }
+ 
+ /*---------------------------------------------------------------------*/
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch b/openpower/package/hostboot/p8Patches/hostboot-0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch
new file mode 100644
index 0000000..73adecc
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0008-Fix-compiler-can-assume-address-will-never-be-NULL-e.patch
@@ -0,0 +1,90 @@
+From b315c53f2803b84e35fe646aa82702b82e8ecd98 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 25 Aug 2016 20:07:58 +1000
+Subject: [PATCH 08/10] Fix compiler can assume address will never be NULL
+ error with GCC6
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+So, it turns out that relying on the address of something passed by
+reference being able to be NULL isn't exactly a good idea, or remotely
+obvious code. So, instead, do the sane thing and pass a pointer and
+check it.
+
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:
+In constructor ‘PRDF::AttnTypeRegister::AttnTypeRegister(PRDF::SCAN_COMM_REGISTE
+R_CLASS&, PRDF::SCAN_COMM_REGISTER_CLASS&, PRDF::SCAN_COMM_REGISTER_CLASS&, PRDF
+::SCAN_COMM_REGISTER_CLASS&)’:
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+42:21: error: the compiler can assume that the address of ‘i_check’ will never b
+e NULL [-Werror=address]
+         iv_check(  NULL == &i_check   ? &cv_null : &i_check),
+                   ~~^~~~~~~~~~~
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+43:21: error: the compiler can assume that the address of ‘i_recov’ will never b
+e NULL [-Werror=address]
+         iv_recov(  NULL == &i_recov   ? &cv_null : &i_recov),
+                   ~~^~~~~~~~~~~
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+44:22: error: the compiler can assume that the address of ‘i_special’ will never
+ be NULL [-Werror=address]
+         iv_special(NULL == &i_special ? &cv_null : &i_special),
+                    ~~^~~~~~~~~~~~~
+../../../../src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H:4
+45:22: error: the compiler can assume that the address of ‘i_proccs’ will never
+be NULL [-Werror=address]
+         iv_proccs( NULL == &i_proccs  ? &cv_null : &i_proccs),
+                    ~~^~~~~~~~~~~~
+
+Change-Id: Iecd8636da67aac24f64f73fd82b1f7ccbfced900
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ .../common/framework/register/prdfOperatorRegister.H     | 16 ++++++++--------
+ .../prdf/common/framework/register/prdfScanFacility.C    |  2 +-
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H b/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
+index b0513e4..a26a76e 100755
+--- a/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
++++ b/src/usr/diag/prdf/common/framework/register/prdfOperatorRegister.H
+@@ -434,15 +434,15 @@ class AttnTypeRegister : public SCAN_COMM_REGISTER_CLASS
+         iv_bs = &iv_iBS;
+     }
+ 
+-    AttnTypeRegister( SCAN_COMM_REGISTER_CLASS & i_check,
+-                      SCAN_COMM_REGISTER_CLASS & i_recov,
+-                      SCAN_COMM_REGISTER_CLASS & i_special,
+-                      SCAN_COMM_REGISTER_CLASS & i_proccs ) :
++    AttnTypeRegister( SCAN_COMM_REGISTER_CLASS *i_check,
++                      SCAN_COMM_REGISTER_CLASS *i_recov,
++                      SCAN_COMM_REGISTER_CLASS *i_special,
++                      SCAN_COMM_REGISTER_CLASS *i_proccs ) :
+         SCAN_COMM_REGISTER_CLASS( ),
+-        iv_check(  NULL == &i_check   ? &cv_null : &i_check),
+-        iv_recov(  NULL == &i_recov   ? &cv_null : &i_recov),
+-        iv_special(NULL == &i_special ? &cv_null : &i_special),
+-        iv_proccs( NULL == &i_proccs  ? &cv_null : &i_proccs),
++        iv_check(  NULL == i_check   ? &cv_null : i_check),
++        iv_recov(  NULL == i_recov   ? &cv_null : i_recov),
++        iv_special(NULL == i_special ? &cv_null : i_special),
++        iv_proccs( NULL == i_proccs  ? &cv_null : i_proccs),
+         iv_iBS(0)         // will fully initialize this inside ctor.
+     {
+         uint32_t l_length = 1024;
+diff --git a/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C b/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
+index 0d379cf..cad5ce8 100755
+--- a/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
++++ b/src/usr/diag/prdf/common/framework/register/prdfScanFacility.C
+@@ -166,7 +166,7 @@ SCAN_COMM_REGISTER_CLASS &  ScanFacility::GetAttnTypeRegister(
+                                            SCAN_COMM_REGISTER_CLASS * i_special,
+                                            SCAN_COMM_REGISTER_CLASS * i_proccs )
+ {
+-  AttnTypeRegister r(*i_check, *i_recov, *i_special, *i_proccs);
++  AttnTypeRegister r(i_check, i_recov, i_special, i_proccs);
+   return iv_attnRegFw.get(r);
+ }
+ 
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch b/openpower/package/hostboot/p8Patches/hostboot-0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch
new file mode 100644
index 0000000..7e17bf9
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0009-error-in-C-98-l_vmVersionBuf-must-be-initialized-by-.patch
@@ -0,0 +1,33 @@
+From 9279a2bf255392321594b9457a67b796195b0891 Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Wed, 31 Aug 2016 13:07:17 +1000
+Subject: [PATCH 09/10] =?UTF-8?q?error:=20in=20C++98=20=E2=80=98l=5FvmVers?=
+ =?UTF-8?q?ionBuf=E2=80=99=20must=20be=20initialized=20by=20constructor?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fix GCC6 thrown error
+
+Change-Id: I9aa508843f54c99ebb59822c39590811423ad0b1
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
+index 3739c75..a4685ad 100755
+--- a/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
++++ b/src/usr/hwpf/hwp/mvpd_accessors/getMBvpdAttr.C
+@@ -392,7 +392,7 @@ fapi::ReturnCode getVersion  (const fapi::Target    & i_mbaTarget,
+     fapi::Target l_mbTarget;
+     fapi::MBvpdKeyword l_keyword = fapi::MBVPD_KEYWORD_VM;  // try VM first
+     fapi::MBvpdRecord  l_record  = fapi::MBVPD_RECORD_SPDX; // default to SPDX
+-    MBvpdVMKeyword l_vmVersionBuf={};
++    MBvpdVMKeyword l_vmVersionBuf;
+     uint32_t l_version = 0;
+     uint32_t l_vmBufSize = sizeof(MBvpdVMKeyword); // VM keyword is of 4 bytes.
+     uint16_t l_versionBuf = 0;
+-- 
+2.7.4
+
diff --git a/openpower/package/hostboot/p8Patches/hostboot-0010-Use-std-gnu-03-for-host-g-invocations.patch b/openpower/package/hostboot/p8Patches/hostboot-0010-Use-std-gnu-03-for-host-g-invocations.patch
new file mode 100644
index 0000000..a9cef3f
--- /dev/null
+++ b/openpower/package/hostboot/p8Patches/hostboot-0010-Use-std-gnu-03-for-host-g-invocations.patch
@@ -0,0 +1,69 @@
+From 9852975319c864b47759cc8d7814bf6f9f0f1f4c Mon Sep 17 00:00:00 2001
+From: Stewart Smith <stewart@linux.vnet.ibm.com>
+Date: Thu, 3 Nov 2016 14:36:19 +1100
+Subject: [PATCH 10/10] Use -std=gnu++03 for host g++ invocations
+
+Seeing as the ancient GCC on RHEL6 doesn't actually support -std=gnu++03
+we have to go through some hoops to detect it (we use the same magic
+Make as we use in skiboot to do the same)
+
+Change-Id: I338560ae2ebdac842c8055c07519d542564c3923
+Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
+---
+ src/usr/hwpf/makefile | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/src/usr/hwpf/makefile b/src/usr/hwpf/makefile
+index 8d0bb72..ee8cf13 100644
+--- a/src/usr/hwpf/makefile
++++ b/src/usr/hwpf/makefile
+@@ -5,7 +5,7 @@
+ #
+ # OpenPOWER HostBoot Project
+ #
+-# Contributors Listed Below - COPYRIGHT 2011,2015
++# Contributors Listed Below - COPYRIGHT 2011,2016
+ # [+] International Business Machines Corp.
+ #
+ #
+@@ -402,18 +402,26 @@ $(call GENTARGET, ${IF_CMP_FLEX_TARGET}) : \
+ 	$(C2) "    FLEX       $(notdir $<)"
+ 	$(C1)flex -o$@ $^
+ 
++try = $(shell set -e; if ($(1)) >/dev/null 2>&1; \
++        then echo "$(2)"; \
++        else echo "$(3)"; fi )
++
++try-cflag = $(call try,$(1) $(2) -x c -c /dev/null -o /dev/null,$(2))
++HOSTCFLAGS:=-O3
++HOSTCFLAGS+=$(call try-cflag,$(HOST_PREFIX)g++,-std=gnu++03)
++
+ $(GENDIR)/$(IF_CMP_SUBDIR)/%.host.o: \
+ 	    ifcompiler/%.C $(IF_COMPILER_H_FILES) \
+ 	    $(GENDIR)/$(IF_CMP_YACC_H_TARGET)
+ 	$(C2) "    CXX        $(notdir $<)"
+-	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 $< -I ifcompiler -I $(GENDIR) \
++	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) $< -I ifcompiler -I $(GENDIR) \
+ 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
+ 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
+ 
+ $(GENDIR)/$(IF_CMP_YACC_C_TARGET:.c=.host.o): \
+     $(GENDIR)/$(IF_CMP_YACC_C_TARGET) $(IF_COMPILER_H_FILES)
+ 	$(C2) "    CXX        $(notdir $<)"
+-	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 $< -I ifcompiler -I $(GENDIR) \
++	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) $< -I ifcompiler -I $(GENDIR) \
+ 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
+ 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
+ 
+@@ -421,7 +429,7 @@ $(GENDIR)/$(IF_CMP_FLEX_TARGET:.c=.host.o): \
+     $(GENDIR)/$(IF_CMP_FLEX_TARGET) $(IF_COMPILER_H_FILES) \
+     $(GENDIR)/$(IF_CMP_YACC_H_TARGET)
+ 	$(C2) "    CXX        $(notdir $<)"
+-	$(C1)$(CCACHE) $(HOST_PREFIX)g++ -O3 -DHOSTBOOT_COMPILE $< -I ifcompiler -I $(GENDIR) \
++	$(C1)$(CCACHE) $(HOST_PREFIX)g++ $(HOSTCFLAGS) -DHOSTBOOT_COMPILE $< -I ifcompiler -I $(GENDIR) \
+ 			-I $(GENDIR)/$(IF_CMP_SUBDIR) \
+ 			-I $(ROOTPATH)/src/include/usr/hwpf/hwp -c -o $@
+ 
+-- 
+2.7.4
+