diff options
Diffstat (limited to 'src/usr/targeting/common/xmltohb/xmltohb.pl')
-rwxr-xr-x | src/usr/targeting/common/xmltohb/xmltohb.pl | 289 |
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"; |