summaryrefslogtreecommitdiffstats
path: root/src/usr/targeting/common/xmltohb/xmltohb.pl
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/targeting/common/xmltohb/xmltohb.pl')
-rwxr-xr-xsrc/usr/targeting/common/xmltohb/xmltohb.pl289
1 files changed, 112 insertions, 177 deletions
diff --git a/src/usr/targeting/common/xmltohb/xmltohb.pl b/src/usr/targeting/common/xmltohb/xmltohb.pl
index b3370906e..339c26960 100755
--- a/src/usr/targeting/common/xmltohb/xmltohb.pl
+++ b/src/usr/targeting/common/xmltohb/xmltohb.pl
@@ -8,6 +8,7 @@
#
# Contributors Listed Below - COPYRIGHT 2012,2019
# [+] International Business Machines Corp.
+# [+] YADRO
#
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,10 +27,7 @@
#
# Purpose:
-# Author: Nick Bofferding
-# Last Updated: 09/09/2011
-#
-# Version: 1.0
+# Process the attribute xml files, generate code, create binaries, etc
#
# Change Log **********************************************************
#
@@ -363,17 +361,17 @@ if( !($cfgSrcOutputDir =~ "none") )
writeFapi2PlatAttrMacrosHeaderFileFooter ($fapi2PlatAttrMacrosHeaderFile);
close $fapi2PlatAttrMacrosHeaderFile;
- open(ATTR_ATTRERRL_C_FILE,">$cfgSrcOutputDir"."errludattribute.C")
+ open(ATTR_ATTRERRL_C_FILE,">$cfgSrcOutputDir"."errludattribute_gen.C")
or croak ("Attribute errlog C file: \"$cfgSrcOutputDir"
- . "errludattribute.C\" could not be opened.");
+ . "errludattribute_gen.C\" could not be opened.");
my $attrErrlCFile = *ATTR_ATTRERRL_C_FILE;
writeAttrErrlCFile($attributes,$attrErrlCFile);
close $attrErrlCFile;
mkdir("$cfgSrcOutputDir/errl");
- open(ATTR_ATTRERRL_H_FILE,">$cfgSrcOutputDir"."errl/errludattribute.H")
+ open(ATTR_ATTRERRL_H_FILE,">$cfgSrcOutputDir"."errl/errludattributeP_gen.H")
or croak ("Attribute errlog H file: \"$cfgSrcOutputDir"
- . "errl/errludattribute.H\" could not be opened.");
+ . "errl/errludattributeP_gen.H\" could not be opened.");
my $attrErrlHFile = *ATTR_ATTRERRL_H_FILE;
writeAttrErrlHFile($attributes,$attrErrlHFile);
close $attrErrlHFile;
@@ -1018,32 +1016,30 @@ sub validateAttributes {
my($attributes) = @_;
my %elements = ( );
- $elements{"id"} = { required => 1, isscalar => 1};
- $elements{"description"} = { required => 1, isscalar => 1};
- $elements{"persistency"} = { required => 1, isscalar => 1};
- $elements{"fspOnly"} = { required => 0, isscalar => 0};
- $elements{"hbOnly"} = { required => 0, isscalar => 0};
- $elements{"readable"} = { required => 0, isscalar => 0};
- $elements{"simpleType"} = { required => 0, isscalar => 0};
- $elements{"complexType"} = { required => 0, isscalar => 0};
- $elements{"nativeType"} = { required => 0, isscalar => 0};
- $elements{"writeable"} = { required => 0, isscalar => 0};
- $elements{"hasStringConversion"}
- = { required => 0, isscalar => 0};
- $elements{"hwpfToHbAttrMap"}
- = { required => 0, isscalar => 0};
- $elements{"display-name"} = { required => 0, isscalar => 1};
- $elements{"virtual"} = { required => 0, isscalar => 0};
- $elements{"tempAttribute"} = { required => 0, isscalar => 0};
- $elements{"serverwizReadonly"} = { required => 0, isscalar => 0};
- $elements{"serverwizShow"} = { required => 0, isscalar => 1};
- $elements{"global"} = { required => 0, isscalar => 0};
- $elements{"range"} = { required => 0, isscalar => 0};
- $elements{"ignoreEkb"} = { required => 0, isscalar => 0};
- $elements{"mrwRequired"} = { required => 0, isscalar => 0};
+ $elements{"id"} = { required => 1, isscalar => 1};
+ $elements{"description"} = { required => 1, isscalar => 1};
+ $elements{"persistency"} = { required => 1, isscalar => 1};
+ $elements{"fspOnly"} = { required => 0, isscalar => 0};
+ $elements{"hbOnly"} = { required => 0, isscalar => 0};
+ $elements{"readable"} = { required => 0, isscalar => 0};
+ $elements{"simpleType"} = { required => 0, isscalar => 0};
+ $elements{"complexType"} = { required => 0, isscalar => 0};
+ $elements{"nativeType"} = { required => 0, isscalar => 0};
+ $elements{"writeable"} = { required => 0, isscalar => 0};
+ $elements{"hasStringConversion"} = { required => 0, isscalar => 0};
+ $elements{"hwpfToHbAttrMap"} = { required => 0, isscalar => 0};
+ $elements{"display-name"} = { required => 0, isscalar => 1};
+ $elements{"virtual"} = { required => 0, isscalar => 0};
+ $elements{"tempAttribute"} = { required => 0, isscalar => 0};
+ $elements{"serverwizReadonly"} = { required => 0, isscalar => 0};
+ $elements{"serverwizShow"} = { required => 0, isscalar => 1};
+ $elements{"global"} = { required => 0, isscalar => 0};
+ $elements{"range"} = { required => 0, isscalar => 0};
+ $elements{"ignoreEkb"} = { required => 0, isscalar => 0};
+ $elements{"mrwRequired"} = { required => 0, isscalar => 0};
# do NOT export attribute & its associated enum to serverwiz
- $elements{"no_export"} = { required => 0, isscalar => 0};
+ $elements{"no_export"} = { required => 0, isscalar => 0};
foreach my $attribute (@{$attributes->{attribute}})
{
@@ -2438,6 +2434,9 @@ print $outFile <<VERBATIM;
// STD
#include <stdint.h>
#include <stdlib.h>
+#ifdef __HOSTBOOT_MODULE
+#include <array>
+#endif
VERBATIM
foreach my $attribute (@{$attributes->{attribute}})
@@ -2541,12 +2540,11 @@ sub writeTraitFileTraits {
$traits .= " fspAccessible,";
}
- chop($traits);
-
# Build value type
my $type = "";
my $dimensions = "";
+ my $stdArrAddOn = ""; # Only used if attr holds array type
if(exists $attribute->{simpleType})
{
my $simpleType = $attribute->{simpleType};
@@ -2569,11 +2567,26 @@ sub writeTraitFileTraits {
if( (exists $simpleType->{array})
&& ($simpleTypeProperties->{$typeName}{supportsArray}) )
{
- my @bounds = split(/,/,$simpleType->{array});
- foreach my $bound (@bounds)
+
+ my @revBounds = reverse split(/,/,$simpleType->{array});
+
+ for my $idx (0 .. $#revBounds)
{
- $dimensions .= "[$bound]";
+ $dimensions = "[@revBounds[$idx]]$dimensions";
+
+ # Creating std::array, even if multi-dimensional
+ if ($idx == 0)
+ {
+ $stdArrAddOn = "std::array<$type, "
+ ."@revBounds[$idx]>";
+ }
+ else
+ {
+ $stdArrAddOn = "std::array<$stdArrAddOn, "
+ ."@revBounds[$idx]>";
+ }
}
+
}
if(exists $simpleType->{string})
@@ -2611,6 +2624,8 @@ sub writeTraitFileTraits {
. "$attribute->{id}.");
}
+ chop($traits);
+
# if it already exists skip it
if( !exists($attrValHash{$attribute->{id}}))
{
@@ -2625,6 +2640,13 @@ sub writeTraitFileTraits {
print $outFile " public:\n";
print $outFile " enum {",$traits," };\n";
print $outFile " typedef ", $type, " Type$dimensions;\n";
+ if ($stdArrAddOn ne "")
+ {
+ # Append typedef for std::array if attr holds array value
+ print $outFile "#ifdef __HOSTBOOT_MODULE\n";
+ print $outFile " typedef $stdArrAddOn TypeStdArr;\n";
+ print $outFile "#endif\n";
+ }
print $outFile "};\n\n";
$typedefs .= "// Type aliases and/or sizes for ATTR_"
@@ -2637,6 +2659,14 @@ sub writeTraitFileTraits {
$typedefs .= "typedef " . $type .
" ATTR_" . "$attribute->{id}" . "_type" . $dimensions . ";\n";
+ if ($stdArrAddOn ne "")
+ {
+ $typedefs .= "#ifdef __HOSTBOOT_MODULE\n";
+ $typedefs .= "typedef $stdArrAddOn "
+ ."ATTR_$attribute->{id}_typeStdArr;\n";
+ $typedefs .= "#endif\n";
+ }
+
# If a string, append max # of characters for the string
if( (exists $attribute->{simpleType})
&& (exists $attribute->{simpleType}->{string}))
@@ -2718,14 +2748,6 @@ VERBATIM
sub writeAttrErrlCFile {
my($attributes,$outFile) = @_;
- #First setup the includes and function definition
- print $outFile "#include <stdint.h>\n";
- print $outFile "#include <stdio.h>\n";
- print $outFile "#include <string.h>\n";
- print $outFile "#include <errl/errludattribute.H>\n";
- print $outFile "#include <errl/errlreasoncodes.H>\n";
- print $outFile "#include <targeting/common/targetservice.H>\n";
- print $outFile "#include <targeting/common/trace.H>\n";
print $outFile "\n";
print $outFile "namespace ERRORLOG\n";
print $outFile "{\n";
@@ -2742,52 +2764,38 @@ sub writeAttrErrlCFile {
print $outFile "\n";
print $outFile " switch (i_attr) {\n";
- print $outFile " case (ATTR_SERIAL_NUMBER): { //simpleType:uint, :int...\n";
- print $outFile " //TRACDCOMP( g_trac_errl, \"ErrlUserDetailsAttribute: SERIAL_NUMBER entry\");\n";
- print $outFile " AttributeTraits<ATTR_SERIAL_NUMBER>::Type tmp;\n";
- print $outFile " if( iv_pTarget->tryGetAttr<ATTR_SERIAL_NUMBER>(tmp) ) {\n";
- print $outFile " tmpBuffer = new char[sizeof(tmp)];\n";
- print $outFile " memcpy(tmpBuffer, &tmp, sizeof(tmp));\n";
- print $outFile " attrSize = sizeof(tmp);\n";
- print $outFile " }\n";
- print $outFile " break;\n";
- print $outFile " }\n";
- print $outFile " case (ATTR_PART_NUMBER): { //simpleType:uint, :int...\n";
- print $outFile " //TRACDCOMP( g_trac_errl, \"ErrlUserDetailsAttribute: PART_NUMBER entry\");\n";
- print $outFile " AttributeTraits<ATTR_PART_NUMBER>::Type tmp;\n";
- print $outFile " if( iv_pTarget->tryGetAttr<ATTR_PART_NUMBER>(tmp) ) {\n";
- print $outFile " tmpBuffer = new char[sizeof(tmp)];\n";
- print $outFile " memcpy(tmpBuffer, &tmp, sizeof(tmp));\n";
- print $outFile " attrSize = sizeof(tmp);\n";
- print $outFile " }\n";
- print $outFile " break;\n";
- print $outFile " }\n";
- print $outFile " case (ATTR_PEC_PCIE_HX_KEYWORD_DATA): { //simpleType:uint, :int...\n";
- print $outFile " //TRACDCOMP( g_trac_errl, \"ErrlUserDetailsAttribute: PEC_PCIE_HX_KEYWORD_DATA entry\");\n";
- print $outFile " AttributeTraits<ATTR_PEC_PCIE_HX_KEYWORD_DATA>::Type tmp;\n";
- print $outFile " if( iv_pTarget->tryGetAttr<ATTR_PEC_PCIE_HX_KEYWORD_DATA>(tmp) ) {\n";
- print $outFile " tmpBuffer = new char[sizeof(tmp)];\n";
- print $outFile " memcpy(tmpBuffer, &tmp, sizeof(tmp));\n";
- print $outFile " attrSize = sizeof(tmp);\n";
- print $outFile " }\n";
- print $outFile " break;\n";
- print $outFile " }\n";
- print $outFile "#if 0 //\@fixme-RTC:152874\n";
+ # List of attributes we want to explicitly support
+ my @allowed_attributes = (
+ "SERIAL_NUMBER",
+ "PART_NUMBER",
+ "PEC_PCIE_HX_KEYWORD_DATA",
+ "ECID",
+ "HUID",
+ );
- # loop through every attribute to make the swith/case
+ # loop through every attribute to make the switch/case
foreach my $attribute (@{$attributes->{attribute}})
{
+ my $skippedattr = 0;
+ if( grep { $_ eq $attribute->{id} } @allowed_attributes )
+ {
+ print "Allowing $attribute->{id}\n";
+ }
+ else
+ {
+ print $outFile "#if 0 //\@fixme-RTC:152874\n";
+ $skippedattr = 1;
+ }
+
# things we'll skip:
if(!(exists $attribute->{readable}) || # write-only attributes
- !(exists $attribute->{writeable}) || # read-only attributes
(exists $attribute->{simpleType} && (
(exists $attribute->{simpleType}->{hbmutex}) ||
(exists $attribute->{simpleType}->{hbrecrusivemutex}) ||
(exists $attribute->{simpleType}->{fspmutex}))) # mutex attributes
) {
print $outFile " case (ATTR_",$attribute->{id},"): { break; }\n";
- next;
}
# any complicated types just get dumped as raw hex binary
elsif(exists $attribute->{complexType}) {
@@ -2872,6 +2880,11 @@ sub writeAttrErrlCFile {
print $outFile " break;\n";
print $outFile " }\n";
}
+
+ if( $skippedattr )
+ {
+ print $outFile "#endif //\@fixme-RTC:152874\n";
+ }
}
print $outFile " default: { //Shouldn't be anything here!!\n";
@@ -2879,7 +2892,6 @@ sub writeAttrErrlCFile {
print $outFile " break;\n";
print $outFile " }\n";
- print $outFile "#endif //\@fixme-RTC:152874\n";
print $outFile " } //switch\n";
print $outFile "\n";
@@ -2898,45 +2910,6 @@ sub writeAttrErrlCFile {
print $outFile "}\n";
print $outFile "\n";
- # build constructor that dumps 1 attribute
- print $outFile "\n";
- print $outFile "//------------------------------------------------------------------------------\n";
- print $outFile "ErrlUserDetailsAttribute::ErrlUserDetailsAttribute(\n";
- print $outFile " const Target * i_pTarget, uint32_t i_attr)\n";
- print $outFile " : iv_pTarget(i_pTarget), iv_dataSize(0)\n";
- print $outFile "{\n";
- print $outFile " // Set up ErrlUserDetails instance variables\n";
- print $outFile " iv_CompId = ERRL_COMP_ID;\n";
- print $outFile " iv_Version = 1;\n";
- print $outFile " iv_SubSection = ERRL_UDT_ATTRIBUTE;\n";
- print $outFile " // override the default of false\n";
- print $outFile " iv_merge = true;\n";
- print $outFile "\n";
- print $outFile " // first, write out the HUID\n";
- print $outFile " addData(ATTR_HUID);\n";
- print $outFile " if (i_attr != ATTR_HUID) {\n";
- print $outFile " addData(i_attr);\n";
- print $outFile " }\n";
- print $outFile "}\n";
- print $outFile "\n";
-
- # build constructor that dumps all attributes
- print $outFile "//------------------------------------------------------------------------------\n";
- print $outFile "ErrlUserDetailsAttribute::ErrlUserDetailsAttribute(\n";
- print $outFile " const Target * i_pTarget)\n";
- print $outFile " : iv_pTarget(i_pTarget), iv_dataSize(0)\n";
- print $outFile "{\n";
- print $outFile " // Set up ErrlUserDetails instance variables\n";
- print $outFile " iv_CompId = ERRL_COMP_ID;\n";
- print $outFile " iv_Version = 1;\n";
- print $outFile " iv_SubSection = ERRL_UDT_ATTRIBUTE;\n";
- print $outFile " // override the default of false\n";
- print $outFile " iv_merge = true;\n";
- print $outFile "\n";
- print $outFile " dumpAll();\n";
- print $outFile "}\n";
- print $outFile "\n";
-
# build internal function that dumps all attributes
print $outFile "//------------------------------------------------------------------------------\n";
print $outFile "void ErrlUserDetailsAttribute::dumpAll()\n";
@@ -2967,10 +2940,7 @@ sub writeAttrErrlCFile {
print $outFile "\n";
- print $outFile "//------------------------------------------------------------------------------\n";
- print $outFile "ErrlUserDetailsAttribute::~ErrlUserDetailsAttribute()\n";
- print $outFile "{ }\n";
- print $outFile "} // namespace\n";
+ print $outFile "} // namespace\n\n";
} # sub writeAttrErrlCFile
@@ -2980,44 +2950,7 @@ sub writeAttrErrlCFile {
sub writeAttrErrlHFile {
my($attributes,$outFile) = @_;
- #First setup the includes and function definition
- print $outFile "\n";
- print $outFile "#ifndef ERRL_UDATTRIBUTE_H\n";
- print $outFile "#define ERRL_UDATTRIBUTE_H\n";
- print $outFile "\n";
- print $outFile "#if !defined(PARSER) && !defined(LOGPARSER)\n";
- print $outFile "\n";
- print $outFile "#include <errl/errluserdetails.H>\n";
- print $outFile "\n";
- print $outFile "namespace TARGETING // Forward reference\n";
- print $outFile "{ class Target; }\n";
- print $outFile "\n";
- print $outFile "namespace ERRORLOG\n";
- print $outFile "{\n";
- print $outFile "class ErrlUserDetailsAttribute : public ErrlUserDetails {\n";
- print $outFile "public:\n";
- print $outFile "\n";
- print $outFile " ErrlUserDetailsAttribute(const TARGETING::Target * i_pTarget, uint32_t i_attr);\n";
- print $outFile " ErrlUserDetailsAttribute(const TARGETING::Target * i_pTarget);\n";
- print $outFile " void addData(uint32_t i_attr);\n";
- print $outFile " virtual ~ErrlUserDetailsAttribute();\n";
- print $outFile "\n";
- print $outFile "private:\n";
- print $outFile "\n";
- print $outFile " // Disabled\n";
- print $outFile " ErrlUserDetailsAttribute(const ErrlUserDetailsAttribute &);\n";
- print $outFile " ErrlUserDetailsAttribute & operator=(const ErrlUserDetailsAttribute &);\n";
- print $outFile "\n";
- print $outFile " // internal function\n";
- print $outFile " void dumpAll();\n";
- print $outFile "\n";
- print $outFile " const TARGETING::Target * iv_pTarget;\n";
- print $outFile " uint32_t iv_dataSize;\n";
- print $outFile "};\n";
- print $outFile "}\n";
- print $outFile "#else // if LOGPARSER defined\n";
- print $outFile "\n";
- print $outFile "#include \"errluserdetails.H\"\n";
+ # Included by errludattributeP.H
print $outFile "\n";
print $outFile "namespace ERRORLOG\n";
print $outFile "{\n";
@@ -3048,8 +2981,9 @@ sub writeAttrErrlHFile {
print $outFile " for (; (l_ptr + sizeof(uint32_t)) <= ((uint8_t*)i_pBuffer + i_buflen); )\n";
print $outFile " {\n";
print $outFile " // first 4 bytes is the attr enum\n";
- print $outFile " uint32_t attrEnum = ntohl(*(uint32_t *)l_ptr);\n";
+ print $outFile " uint32_t attrEnum = ntohl(UINT32_FROM_PTR(l_ptr));\n";
print $outFile " l_ptr += sizeof(attrEnum);\n";
+ print $outFile " char* tmplabel = NULL;\n";
print $outFile "\n";
print $outFile " switch (attrEnum) {\n";
@@ -3179,21 +3113,21 @@ sub writeAttrErrlHFile {
elsif (exists $attribute->{simpleType}->{uint16_t}) {
print $outFile " l_traceEntry.resize(10+offset + $total_count * 7);\n";
print $outFile " for (uint32_t i = 0;i<$total_count;i++) {\n";
- print $outFile " sprintf(&(l_traceEntry[offset+i*7]), \"0x%.4X \", ntohs(*(((uint16_t *)l_ptr)+i)));\n";
+ print $outFile " sprintf(&(l_traceEntry[offset+i*7]), \"0x%.4X \", ntohs(UINT16_FROM_PTR(reinterpret_cast<const uint16_t*>(l_ptr) + i)));\n";
print $outFile " }\n";
print $outFile " l_ptr += $total_count * sizeof(uint16_t);\n";
}
elsif (exists $attribute->{simpleType}->{uint32_t}) {
print $outFile " l_traceEntry.resize(10+offset + $total_count * 11);\n";
print $outFile " for (uint32_t i = 0;i<$total_count;i++) {\n";
- print $outFile " sprintf(&(l_traceEntry[offset+i*11]), \"0x%.8X \", ntohl(*(((uint32_t *)l_ptr)+i)));\n";
+ print $outFile " sprintf(&(l_traceEntry[offset+i*11]), \"0x%.8X \", ntohl(UINT32_FROM_PTR(reinterpret_cast<const uint32_t*>(l_ptr)+i)));\n";
print $outFile " }\n";
print $outFile " l_ptr += $total_count * sizeof(uint32_t);\n";
}
elsif (exists $attribute->{simpleType}->{uint64_t}) {
print $outFile " l_traceEntry.resize(10+offset + $total_count * 19);\n";
print $outFile " for (uint32_t i = 0;i<$total_count;i++) {\n";
- print $outFile " sprintf(&(l_traceEntry[offset+i*19]), \"0x%.16llX \", ntohll(*(((uint64_t *)l_ptr)+i)));\n";
+ print $outFile " sprintf(&(l_traceEntry[offset+i*19]), \"0x%.16llX \", ntohll(UINT64_FROM_PTR(reinterpret_cast<const uint64_t*>(l_ptr)+i)));\n";
print $outFile " }\n";
print $outFile " l_ptr += $total_count * sizeof(uint64_t);\n";
}
@@ -3207,21 +3141,21 @@ sub writeAttrErrlHFile {
elsif (exists $attribute->{simpleType}->{int16_t}) {
print $outFile " l_traceEntry.resize(10+offset + $total_count * 7);\n";
print $outFile " for (uint32_t i = 0;i<$total_count;i++) {\n";
- print $outFile " sprintf(&(l_traceEntry[offset+i*7]), \"0x%.4X \", ntohs(*(((int16_t *)l_ptr)+i)));\n";
+ print $outFile " sprintf(&(l_traceEntry[offset+i*7]), \"0x%.4X \", ntohs(INT16_FROM_PTR(reinterpret_cast<const int16_t*>(l_ptr)+i)));\n";
print $outFile " }\n";
print $outFile " l_ptr += $total_count * sizeof(int16_t);\n";
}
elsif (exists $attribute->{simpleType}->{int32_t}) {
print $outFile " l_traceEntry.resize(10+offset + $total_count * 11);\n";
print $outFile " for (uint32_t i = 0;i<$total_count;i++) {\n";
- print $outFile " sprintf(&(l_traceEntry[offset+i*11]), \"0x%.8X \", ntohl(*(((int32_t *)l_ptr)+i)));\n";
+ print $outFile " sprintf(&(l_traceEntry[offset+i*11]), \"0x%.8X \", ntohl(INT32_FROM_PTR(reinterpret_cast<const int32_t*>(l_ptr)+i)));\n";
print $outFile " }\n";
print $outFile " l_ptr += $total_count * sizeof(int32_t);\n";
}
elsif (exists $attribute->{simpleType}->{int64_t}) {
print $outFile " l_traceEntry.resize(10+offset + $total_count * 19);\n";
print $outFile " for (uint32_t i = 0;i<$total_count;i++) {\n";
- print $outFile " sprintf(&(l_traceEntry[offset+i*19]), \"0x%.16llX \", ntohll(*(((int64_t *)l_ptr)+i)));\n";
+ print $outFile " sprintf(&(l_traceEntry[offset+i*19]), \"0x%.16llX \", ntohll(INT64_FROM_PTR(reinterpret_cast<const int64_t*>(l_ptr)+i)));\n";
print $outFile " }\n";
print $outFile " l_ptr += $total_count * sizeof(int64_t);\n";
}
@@ -3296,7 +3230,9 @@ sub writeAttrErrlHFile {
print $outFile " }\n";
}
print $outFile " default: {\n";
- print $outFile " pLabel = \"unknown Attribute\";\n";
+ print $outFile " tmplabel = new char[30];\n";
+ print $outFile " sprintf( tmplabel, \"Unknown [0x%x]\", attrEnum );\n";
+ print $outFile " pLabel = tmplabel;\n";
print $outFile " break;\n";
print $outFile " }\n";
print $outFile " } // switch\n";
@@ -3305,6 +3241,7 @@ sub writeAttrErrlHFile {
print $outFile " if (pLabel != NULL) {\n";
print $outFile " i_parser.PrintString(pLabel, &(l_traceEntry[0]));\n";
print $outFile " }\n";
+ print $outFile " if( tmplabel != NULL ) { delete[] tmplabel; }\n";
print $outFile " } // for\n";
print $outFile " } // parse\n\n";
print $outFile "private:\n";
@@ -3313,9 +3250,7 @@ sub writeAttrErrlHFile {
print $outFile "ErrlUserDetailsParserAttribute(const ErrlUserDetailsParserAttribute &);\n";
print $outFile "ErrlUserDetailsParserAttribute & operator=(const ErrlUserDetailsParserAttribute &);\n";
print $outFile "};\n";
- print $outFile "} // namespace\n";
- print $outFile "#endif\n";
- print $outFile "#endif\n";
+ print $outFile "} // namespace\n\n";
} # sub writeAttrErrlHFile
######
@@ -4016,11 +3951,11 @@ sub writeTargetErrlHFile {
print $outFile " // first 4 are always the same\n";
print $outFile " if ((l_ptr32 + 4) <= (uint32_t *)((uint8_t*)i_pBuffer + i_buflen)) {\n";
- print $outFile " i_parser.PrintNumber( l_label, \"HUID = 0x%08X\", ntohl(*l_ptr32) );\n";
+ print $outFile " i_parser.PrintNumber( l_label, \"HUID = 0x%08X\", ntohl(UINT32_FROM_PTR(l_ptr32)) );\n";
print $outFile " l_ptr32++;\n";
# find CLASS
- print $outFile " switch (ntohl(*l_ptr32)) { // CLASS\n";
+ print $outFile " switch (ntohl(UINT32_FROM_PTR(l_ptr32))) { // CLASS\n";
foreach my $enumerationType (@{$attributes->{enumerationType}})
{
if( $enumerationType->{id} eq "CLASS" ) {
@@ -4039,7 +3974,7 @@ sub writeTargetErrlHFile {
print $outFile " l_ptr32++;\n";
# find TYPE
- print $outFile " switch (ntohl(*l_ptr32)) { // TYPE\n";
+ print $outFile " switch (ntohl(UINT32_FROM_PTR(l_ptr32))) { // TYPE\n";
foreach my $enumerationType (@{$attributes->{enumerationType}})
{
if( $enumerationType->{id} eq "TYPE" ) {
@@ -4058,7 +3993,7 @@ sub writeTargetErrlHFile {
print $outFile " l_ptr32++;\n";
# find MODEL
- print $outFile " switch (ntohl(*l_ptr32)) { // MODEL\n";
+ print $outFile " switch (ntohl(UINT32_FROM_PTR(l_ptr32))) { // MODEL\n";
foreach my $enumerationType (@{$attributes->{enumerationType}})
{
if( $enumerationType->{id} eq "MODEL" ) {
@@ -4096,7 +4031,7 @@ sub writeTargetErrlHFile {
}
}
- print $outFile " uint32_t l_pathType = ntohl(*l_ptr32);\n";
+ print $outFile " uint32_t l_pathType = ntohl(UINT32_FROM_PTR(l_ptr32));\n";
print $outFile " if ((l_pathType == $attrPhysPath) || // ATTR_PHYS_PATH\n";
print $outFile " (l_pathType == $attrAffinityPath)) // ATTR_AFFINITY_PATH\n";
print $outFile " {\n";
OpenPOWER on IntegriCloud