-
Notifications
You must be signed in to change notification settings - Fork 97
Closed
Description
I'm seeing build failures on GCC5.3 when building hostboot, several unused variable warnings. This seems to be because of how Hostboot code defines some constants.
The below patch is a quick stab at solving it, but this just gets hostboot to compile, booting does not work (checkstop) - this is probably due to me being very rusty on C++ linkage for constants and not entirely sure how hostboot links itself at runtime that may cause problems.
--- a/src/include/usr/targeting/attrPlatOverride.H
+++ b/src/include/usr/targeting/attrPlatOverride.H
@@ -52,13 +52,7 @@ struct AttrOverrideSection
* enums and make it obvious which layers map to what PNOR section.
* Currrently the pair is only used in a test case to keep it in order
*/
-const std::pair
- tankLayerToPnor[AttributeTank::TANK_LAYER_LAST] =
- {
- std::make_pair(AttributeTank::TANK_LAYER_FAPI, PNOR::ATTR_TMP),
- std::make_pair(AttributeTank::TANK_LAYER_TARG, PNOR::ATTR_TMP),
- std::make_pair(AttributeTank::TANK_LAYER_PERM, PNOR::ATTR_PERM)
- };
+extern const std::pair tankLayerToPn
or[AttributeTank::TANK_LAYER_LAST];
/**
* @brief This function gets any Attribute Overrides in PNOR
diff --git a/src/include/usr/targeting/common/targetservice.H b/src/include/usr/
targeting/common/targetservice.H
index 828fe86f3e51..8603f5174743 100644
--- a/src/include/usr/targeting/common/targetservice.H
+++ b/src/include/usr/targeting/common/targetservice.H
@@ -134,10 +134,7 @@ namespace TARGETING
* DD framework to bring PNOR device driver online. Note this target
* cannot be used as input to any target service APIs.
*/
-static Target* const MASTER_PROCESSOR_CHIP_TARGET_SENTINEL
- = (sizeof(void*) == 4) ?
- reinterpret_cast(0xFFFFFFFF)
- : reinterpret_cast(0xFFFFFFFFFFFFFFFFULL);
+extern Target* const MASTER_PROCESSOR_CHIP_TARGET_SENTINEL;
/**
* @brief TargetService class
diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C
index 2afd7730c4ba..0261dda6db9b 100755
--- a/src/usr/i2c/i2c.C
+++ b/src/usr/i2c/i2c.C
@@ -89,6 +89,7 @@ const TARGETING::ATTR_I2C_BUS_SPEED_ARRAY_type g_var = {{NULL}};
namespace I2C
{
+uint64_t g_I2C_NEST_FREQ_MHZ = i2cGetNestFreq();
// Register the generic I2C perform Op with the routing code for Procs.
DEVICE_REGISTER_ROUTE( DeviceFW::WILDCARD,
diff --git a/src/usr/i2c/i2c.H b/src/usr/i2c/i2c.H
index 05f11d5514d6..0b15c5a096d7 100755
--- a/src/usr/i2c/i2c.H
+++ b/src/usr/i2c/i2c.H
@@ -88,7 +88,7 @@ ALWAYS_INLINE inline uint64_t i2cGetNestFreq()
return sysTarget->getAttr();
};
-static uint64_t g_I2C_NEST_FREQ_MHZ = i2cGetNestFreq();
+extern uint64_t g_I2C_NEST_FREQ_MHZ;
/**
diff --git a/src/usr/targeting/attrPlatOverride.C b/src/usr/targeting/attrPlatOverride.C
index 9368c4af1378..4edac1fa339a 100644
--- a/src/usr/targeting/attrPlatOverride.C
+++ b/src/usr/targeting/attrPlatOverride.C
@@ -30,6 +30,13 @@
namespace TARGETING
{
+const std::pair
+ tankLayerToPnor[AttributeTank::TANK_LAYER_LAST] =
+ {
+ std::make_pair(AttributeTank::TANK_LAYER_FAPI, PNOR::ATTR_TMP),
+ std::make_pair(AttributeTank::TANK_LAYER_TARG, PNOR::ATTR_TMP),
+ std::make_pair(AttributeTank::TANK_LAYER_PERM, PNOR::ATTR_PERM)
+ };
errlHndl_t getAttrOverrides(PNOR::SectionInfo_t &i_sectionInfo,
AttributeTank* io_tanks[AttributeTank::TANK_LAYER_LAST])
diff --git a/src/usr/targeting/common/targetservice.C b/src/usr/targeting/common/targetservice.C
index cd3870dedced..2822b47080e3 100644
--- a/src/usr/targeting/common/targetservice.C
+++ b/src/usr/targeting/common/targetservice.C
@@ -61,7 +61,7 @@
namespace TARGETING
{
-
+Target* const MASTER_PROCESSOR_CHIP_TARGET_SENTINEL = reinterpret_cast(~0);
#define TARG_NAMESPACE "TARGETING::"
#define TARG_CLASS "targetService"
Metadata
Metadata
Assignees
Labels
No labels