diff options
47 files changed, 1334 insertions, 191 deletions
| diff --git a/.gitignore b/.gitignore index 8021cf21f..ebb565cd6 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ my.sandboxrc  cxxtest_sb/  testdata  *.csv +.nfs* diff --git a/src/build/tools/hb b/src/build/tools/hb index a8cc3fca9..9179966e9 100755 --- a/src/build/tools/hb +++ b/src/build/tools/hb @@ -34,7 +34,7 @@ execute_in_sandbox()      fi      SANDBOXRC="${SANDBOXROOT}/hbsandboxrc" -    WORKON_CMD="workon -rc ${SANDBOXRC} -sb ${SANDBOXNAME} -m ppc " +    WORKON_CMD="workon -rc ${SANDBOXRC} -sb ${SANDBOXNAME} -m $2 "      echo $1 > ${SANDBOXBASE}/src/sandbox_execute_cmd      chmod 700 ${SANDBOXBASE}/src/sandbox_execute_cmd @@ -166,6 +166,15 @@ hb_helptext()          echo "  recent commit in your repository to ensure the prologs are"          echo "  all added properly."          ;; +    errlparser) +        echo "  Topic 'errlparser'" +        echo +        echo "  Usage:" +        echo "      hb errlparser" +        echo +        echo "  Prepares a copy of FipS errl tool that is hostboot aware," +        echo "  places it in simics directory." +        ;;      customrc)          echo "  Topic 'customrc'"          echo @@ -196,7 +205,7 @@ hb_helptext()          echo          echo "  Available Commands:"          echo "      workon, simsetup, prime, startsimics, rsync, objsizes," -        echo "      copyright_check" +        echo "      copyright_check, errlparser"          echo          echo "  Additional Help Topics:"          echo "      customrc" @@ -269,18 +278,23 @@ hb_simsetup()      echo "Running workarounds (presimsetup)."      cp ${HOSTBOOTROOT}/src/build/citest/etc/workarounds.presimsetup ${SANDBOXBASE}/src -    execute_in_sandbox "export BACKING_BUILD=\$bb && ./workarounds.presimsetup" +    execute_in_sandbox "export BACKING_BUILD=\$bb && ./workarounds.presimsetup"  "ppc"      rm ${SANDBOXBASE}/src/workarounds.presimsetup      needs_machine_variable -    execute_in_sandbox "start_simics -no_start -machine ${MACHINE}" +    execute_in_sandbox "start_simics -no_start -machine ${MACHINE}"  "ppc"      echo "Running workarounds (postsimsetup)."      cp ${HOSTBOOTROOT}/src/build/citest/etc/workarounds.postsimsetup ${SANDBOXBASE}/src -    execute_in_sandbox "export BACKING_BUILD=\$bb && ./workarounds.postsimsetup" +    execute_in_sandbox "export BACKING_BUILD=\$bb && ./workarounds.postsimsetup"  "ppc"      rm ${SANDBOXBASE}/src/workarounds.postsimsetup      mkdir ${SANDBOXBASE}/img + +    # Put a starter copy of errl to simics directory; refresh w/ "hb errlparser" +    cd ${SANDBOXBASE}/simics +    ln -sf  ${DRIVER}/obj/x86.nfp/errl/nfp/tool/errl +  }  hb_startsimics() @@ -306,7 +320,7 @@ hb_startsimics()      needs_machine_variable      execute_in_sandbox \ -        "start_simics -machine ${MACHINE} ${SIMICSOPTIONS} $*" +        "start_simics -machine ${MACHINE} ${SIMICSOPTIONS} $*"  "ppc"  }  hb_rsync() @@ -343,6 +357,130 @@ hb_copyright_check()      git diff HEAD~1 --name-only | xargs addCopyright.pl validate  } + +hb_errlparser() +{ +    [ -z "${HOSTBOOTROOT}" ] && echo "Missing HOSTBOOTROOT." && exit -1 +    [ -z "${SANDBOXBASE}" ] && echo "Missing SANDBOXBASE." && exit -1 +    [ -z "${SANDBOXNAME}" ] && echo "Missing SANDBOXNAME." && exit -1 +    [ -z "${SANDBOXROOT}" ] && echo "Missing SANDBOXROOT." && exit -1 + +    DRIVER=`cat ${HOSTBOOTROOT}/src/build/citest/etc/bbuild` + +    # sanity checks  +    if [ ! -f ${DRIVER}/src/makefile ]; then +        echo "Cannot reach backing build: $DRIVER. You may need tokens." +        exit -1 +    fi + +    if [ !  -f  ${HOSTBOOTROOT}/src/include/usr/hbotcompid.H ]; then  +        echo "Missing \$HOSTBOOTROOT/src/include/usr/hbotcompid.H" +        exit -1 +    fi + +    if [ !  -f  ${HOSTBOOTROOT}/src/include/usr/errl/hberrltypes.H ]; then  +        echo "Missing \$HOSTBOOTROOT/src/include/usr/errl/hberrltypes.H" +        exit -1 +    fi + +    if [ !  -f  ${HOSTBOOTROOT}/obj/genfiles/hostBootSrcParse.H ]; then  +        echo "Missing \$HOSTBOOTROOT/obj/genfiles/hostBootSrcParse.H" +        echo "This is a generated file produced during a Hostboot build." +        exit -1 +    fi + +    # Copy hbotcompid.H to $sb/src/fstp/fsp +    mkdir -p ${SANDBOXBASE}/src/fstp/fsp +    cp ${HOSTBOOTROOT}/src/include/usr/hbotcompid.H  ${SANDBOXBASE}/src/fstp/fsp + +    # Symlink hbotcompid.H into the export trees.  +    # TODO: Eventually, this will be done by src/fstp/nfp/makefile, and when  +    # that's ready, it will require a mk of fstp instead of this. +    mkdir -p  ${SANDBOXBASE}/export/x86.nfp/fips/include  +    cd  ${SANDBOXBASE}/export/x86.nfp/fips/include  +    ln -sf ../../../../src/fstp/fsp/hbotcompid.H + +    mkdir -p  ${SANDBOXBASE}/export/ppc/fips/include  +    cd  ${SANDBOXBASE}/export/ppc/fips/include  +    ln -sf ../../../../src/fstp/fsp/hbotcompid.H + +    # One-time preparation and x86.nfp full build of epub and errl.  +    if [ !  -f  ${SANDBOXBASE}/src/errl/makefile  ]; then  +        # First time running 'hb errlparser'  +        echo "Preparing sandbox ..." +        rm -fr  ${SANDBOXBASE}/src/epub ;  mkdir -p ${SANDBOXBASE}/src/epub +        rm -fr  ${SANDBOXBASE}/src/errl ;  mkdir -p ${SANDBOXBASE}/src/errl + +        # TODO When the backing build has Hostboot awareness, remove this +        # copying from Monte's public directory. Requirement SW105241. +        if [ -d /gsa/ausgsa/home/c/o/copelanm/public/mamatha/errl ]; then +            # Copy patch version of epub_service_codes.H  +            cp -a ${DRIVER}/src/epub/*   ${SANDBOXBASE}/src/epub +            cp  /gsa/ausgsa/home/c/o/copelanm/public/mamatha/epub/fsp/epub_service_codes.H   ${SANDBOXBASE}/src/epub/fsp + +            # Copy errl patch. +            cp -a /gsa/ausgsa/home/c/o/copelanm/public/mamatha/errl/* ${SANDBOXBASE}/src/errl +        else +            # Populate with stuff from backing build. +            cp -a ${DRIVER}/src/epub/*   ${SANDBOXBASE}/src/epub +            cp -a ${DRIVER}/src/errl/*   ${SANDBOXBASE}/src/errl +        fi     + +        # Trigger a full local build this one time.   +        # Next time can be a partial build. +        execute_in_sandbox "cd ${SANDBOXBASE}/src/epub && mk -a"  "x86.nfp" +        execute_in_sandbox "cd ${SANDBOXBASE}/src/errl && mk -a"  "x86.nfp" +    fi + +    # (Re-)Copy Hostboot plugins sources so they are up to date.  +    rm -fr ${SANDBOXBASE}/src/plugins +    mkdir -p ${SANDBOXBASE}/src/plugins + +    # Locate and copy plugins directories for Hostboot components. +    PLUGDIRS=`find  ${HOSTBOOTROOT}/src/usr -name plugins -type d` +    ALLCOMPS="" + +    for D in $PLUGDIRS; do  +        COMP=`echo $D | sed 's/^.*\/src\/usr\///' | awk '-F/' '{print $1}' ` +        mkdir  ${SANDBOXBASE}/src/plugins/$COMP +        cp -a  ${HOSTBOOTROOT}/src/usr/$COMP/plugins/*   ${SANDBOXBASE}/src/plugins/$COMP +        ALLCOMPS="$ALLCOMPS $COMP" +    done + +    # Build a src/plugins/makefile with the component names found above. +    echo "# This file auto-generated from  ${HOSTBOOTROOT}/src/usr/errl/plugins/makefile.fips" >${SANDBOXBASE}/src/plugins/makefile +    echo "HBCOMPS=$ALLCOMPS"  >>${SANDBOXBASE}/src/plugins/makefile +    grep -v "^ *#"  ${HOSTBOOTROOT}/src/usr/errl/plugins/fips.mk >>${SANDBOXBASE}/src/plugins/makefile + +    # Copy common plugins.mk included by all plugins makefiles. +    cp  ${HOSTBOOTROOT}/src/usr/errl/plugins/plugins.mk ${SANDBOXBASE}/src/plugins + +    # Clean any libB* symlinks in the export tree. +    find  ${SANDBOXBASE}/export/x86.nfp/fips/lib -name "libB*" -exec rm {} \;  2>/dev/null + +    # Build all libB* plugins from scratch every time. This should not take long. +    execute_in_sandbox "cd ${SANDBOXBASE}/src/plugins && mk -a" "x86.nfp" +     +    # Ensure the errl binary is gone in order to trigger  +    # a relink to pick up changed libB*.a files  +    mkdir -p ${SANDBOXBASE}/src/errl +    mkdir -p ${SANDBOXBASE}/obj/x86.nfp/errl/nfp/tool +    rm -f ${SANDBOXBASE}/obj/x86.nfp/errl/nfp/tool/errl +    execute_in_sandbox "cd ${SANDBOXBASE}/src/errl && mk"  "x86.nfp" +    +    # Get the x86 errl tool to simics directory  +    # cp  $SANDBOXBASE/obj/x86.nfp/errl/nfp/tool/errl   $SANDBOXBASE/simics +    cd ${SANDBOXBASE}/simics +    ln -sf ../obj/x86.nfp/errl/nfp/tool/errl +} + + + + + + + +  if [ 0 == $# ]; then      hb_helptext      exit -1 @@ -373,6 +511,9 @@ objsizes)  copyright_check)      hb_copyright_check $*      ;; +errlparser) +    hb_errlparser $* +    ;;  *)      hb_helptext $*      exit -1 diff --git a/src/include/usr/devicefw/userif.H b/src/include/usr/devicefw/userif.H index 0fbe63149..336bce720 100644 --- a/src/include/usr/devicefw/userif.H +++ b/src/include/usr/devicefw/userif.H @@ -32,7 +32,7 @@  #define __DEVICEFW_USERIF  #include <stdint.h> -#include <errl/errltypes.H> +#include <errl/errlentry.H>  #include <targeting/targetservice.H>  namespace DeviceFW diff --git a/src/include/usr/errl/backtrace.H b/src/include/usr/errl/backtrace.H index 5db0081d3..e0c8250c5 100755 --- a/src/include/usr/errl/backtrace.H +++ b/src/include/usr/errl/backtrace.H @@ -35,7 +35,6 @@  // I n c l u d e s  /*****************************************************************************/  #include <stdint.h> -#include <errl/errltypes.H>  #include <vector> diff --git a/src/include/usr/errl/errlentry.H b/src/include/usr/errl/errlentry.H index 330a8a813..32eb5a1ea 100644 --- a/src/include/usr/errl/errlentry.H +++ b/src/include/usr/errl/errlentry.H @@ -47,7 +47,7 @@  /*****************************************************************************/  #include <stdint.h>  #include <vector> -#include <errl/errltypes.H> +#include <errl/hberrltypes.H>  #include <errl/errlsctn.H>  #include <errl/errlprvt.H>  #include <errl/errluh.H> @@ -558,4 +558,8 @@ inline void ErrlEntry::setSrcType(const srcType_t i_srcType)  } // End namespace + +typedef ERRORLOG::ErrlEntry* errlHndl_t; + +  #endif //ERRLENTRY_H diff --git a/src/include/usr/errl/errlmanager.H b/src/include/usr/errl/errlmanager.H index 67429cbba..7d41c0ea1 100644 --- a/src/include/usr/errl/errlmanager.H +++ b/src/include/usr/errl/errlmanager.H @@ -35,7 +35,7 @@  #include <stdint.h>  #include <stdlib.h>  #include <util/singleton.H> -#include <errl/errltypes.H> +#include <errl/errlentry.H>  #include <sys/sync.h>  #include <vector>  #include <kernel/timemgr.H> diff --git a/src/include/usr/errl/errlreasoncodes.H b/src/include/usr/errl/errlreasoncodes.H index f5fe78f35..00b156f7e 100644 --- a/src/include/usr/errl/errlreasoncodes.H +++ b/src/include/usr/errl/errlreasoncodes.H @@ -35,22 +35,23 @@  // Module IDs for ERRL component  enum  { -    ERRL_FIRST_MODULE_ID        = 0x00, -    ERRL_USERDETAILS_MODULE_ID, +    HBERRL_FIRST_MODULE_ID        = 0x00, +    HBERRL_USERDETAILS_MODULE_ID  = 1, +    HBERRL_TEST_MOD_ID            = 2,      //........ -    ERRL_LAST_MODULE_ID         = 0xFF +    HBERRL_LAST_MODULE_ID         = 0xFF  };  // Reason codes for ERRL component  enum errlReasonCode  { -    ERRL_FIRST_ERR          = ERRL_COMP_ID | 0x01, -    ERRL_FILENAME_TEST      = ERRL_COMP_ID | 0x02, -    ERRL_ERRORMSG_TEST      = ERRL_COMP_ID | 0x03, -    ERRL_XMLTOKEN_TEST      = ERRL_COMP_ID | 0x04, - +    HBERRL_FIRST_ERR          = HBERRL_COMP_ID | 0x01, +    HBERRL_FILENAME_TEST      = HBERRL_COMP_ID | 0x02, +    HBERRL_ERRORMSG_TEST      = HBERRL_COMP_ID | 0x03, +    HBERRL_XMLTOKEN_TEST      = HBERRL_COMP_ID | 0x04, +    HBERRL_TEST_REASON_CODE   = HBERRL_COMP_ID | 0x0F,      //........ -    ERRL_LAST_ERR           = ERRL_COMP_ID | 0xFF +    HBERRL_LAST_ERR           = HBERRL_COMP_ID | 0xFF  }; diff --git a/src/include/usr/errl/errlsctn.H b/src/include/usr/errl/errlsctn.H index bd31aec40..da7b4adc8 100644 --- a/src/include/usr/errl/errlsctn.H +++ b/src/include/usr/errl/errlsctn.H @@ -36,7 +36,7 @@  /*****************************************************************************/  #include <stdint.h>  #include <stdlib.h> -#include <errl/errltypes.H> +#include <errl/hberrltypes.H>  #include <hbotcompid.H>  #include <errl/errlsctnhdr.H> diff --git a/src/include/usr/errl/errlsctnhdr.H b/src/include/usr/errl/errlsctnhdr.H index 069fa58ba..598b19150 100644 --- a/src/include/usr/errl/errlsctnhdr.H +++ b/src/include/usr/errl/errlsctnhdr.H @@ -38,7 +38,7 @@  /*****************************************************************************/  #include <stdint.h>  #include <stdlib.h> -#include <errl/errltypes.H> +#include <errl/hberrltypes.H>  #include <hbotcompid.H>  #include <string.h> diff --git a/src/include/usr/errl/errluserdetails.H b/src/include/usr/errl/errluserdetails.H index 5ed8fe029..7dd052650 100755 --- a/src/include/usr/errl/errluserdetails.H +++ b/src/include/usr/errl/errluserdetails.H @@ -48,22 +48,21 @@  /*****************************************************************************/  // I n c l u d e s  /*****************************************************************************/ -#include    <hbotcompid.H>      // list of compid's supported -#include    <errl/errltypes.H>  //  errlver_t, errlsubsec_t -#include    <errl/errlentry.H>  //  addFFDC, appendFFDC + +// safe to include these, PARSER or no PARSER +#include    <hbotcompid.H>      // list of compid's supported +#include    <errl/hberrltypes.H>  //  errlver_t, errlsubsec_t -/*****************************************************************************/ -//  Typedefs -/*****************************************************************************/ +#ifndef PARSER +#include    <errl/errlentry.H>  //  addFFDC, appendFFDC  namespace ERRORLOG  { -#ifndef PARSER  /**   * @brief ERRL User Data Details @@ -179,6 +178,7 @@ private:      uint32_t  iv_BufLen;        // Length of internal buffer  }; +} // namespace   #else // (if PARSER defined) @@ -196,6 +196,10 @@ private:   *  These will compile and run in the errl tool.   *  */ +namespace ERRORLOG +{ + +  class ErrlUserDetails  {  public: @@ -251,8 +255,9 @@ private:      ErrlUserDetails & operator=(const ErrlUserDetails &);  }; -#endif //PARSER +} // namespace -} // end namespace + +#endif //PARSER  #endif diff --git a/src/include/usr/errl/errltypes.H b/src/include/usr/errl/hberrltypes.H index ecd6e8187..3bb767b0c 100644 --- a/src/include/usr/errl/errltypes.H +++ b/src/include/usr/errl/hberrltypes.H @@ -1,7 +1,7 @@  //  IBM_PROLOG_BEGIN_TAG  //  This is an automatically generated prolog.  // -//  $Source: src/include/usr/errl/errltypes.H $ +//  $Source: src/include/usr/errl/hberrltypes.H $  //  //  IBM CONFIDENTIAL  // @@ -20,8 +20,8 @@  //  Origin: 30  //  //  IBM_PROLOG_END -#ifndef ERRLTYPES_H -#define ERRLTYPES_H +#ifndef HBERRLTYPES_H +#define HBERRLTYPES_H  /**   *  @file errltypes.H   * @@ -40,7 +40,28 @@   * @brief Pointer to an ErrlEntry object   */  namespace ERRORLOG { class ErrlEntry; }; -typedef ERRORLOG::ErrlEntry* errlHndl_t; + + + +// Identifiers for Hostboot ERRL user-defined data sections. +// Range: 0 .. 255 +enum +{ +    HBERRL_SST_NOFORMAT         = 0, +    HBERRL_SST_DEFAULT          = 0, +        HBERRL_VER_DEFAULT           = 0, // 0,0 not handled +    HBERRL_SST_PRESIDENT        = 1, // testing +    HBERRL_SST_FIRSTLADY        = 2, // testing +    HBERRL_SST_STRING           = 3, // null-ended string +        HBERRL_VER_STRINGNAME        = 0, // label: "Name" +        HBERRL_VER_STRINGTASK        = 1, // label: "Task" +        HBERRL_VER_STRINGTASKNAME    = 2, // label: "Task name" +        HBERRL_VER_STRINGATTRNAME    = 3, // label: "Attribute name" +        HBERRL_VER_STRINGFILENAME    = 4, // label: "File name" +        HBERRL_VER_STRINGPROCNAME    = 5, // label: "Procedure name" +    HBERRL_SST_BACKTRACE        = 4, // backtrace +}; +  /**   * @brief Macros to store different numbers into uint64_t @@ -493,4 +514,4 @@ typedef struct pelsrcsection  } // End namespace -#endif // ERRLTYPES_H +#endif // HBERRLTYPES_H diff --git a/src/include/usr/errl/parser/errlparserbase.H b/src/include/usr/errl/parser/errlparserbase.H index f165f7514..b5074f2d5 100755 --- a/src/include/usr/errl/parser/errlparserbase.H +++ b/src/include/usr/errl/parser/errlparserbase.H @@ -49,7 +49,7 @@  // Unavoidable include for va_list  #include <cstdarg> -#include <errl/errltypes.H> +#include <errl/hberrltypes.H>  /*****************************************************************************/  //  Typedefs diff --git a/src/include/usr/hbotcompid.H b/src/include/usr/hbotcompid.H index 711670aa2..6ff09dd16 100644 --- a/src/include/usr/hbotcompid.H +++ b/src/include/usr/hbotcompid.H @@ -52,22 +52,12 @@ const compId_t MY_COMP_ID = 0x0000;  const char MY_COMP_NAME[] = "myname";  //@} -/** @name ERRL +/** @name HBERRL   *  Error Logging component. - * - *  Oct 2011:  Temporarily set ERRL component ID to the - *  same as FSP ERRL in order to make the FSP x86 errl tool - *  format Hostboot error logs with traces.  For user-defined - *  trace sections, that tools expects component 0x3100, - *  section ID  0x0C, and version 1. - * - *  Requirement SW105241 is opened for fips8xx errl tool - *  to start becoming Hostboot aware.  TODO When errl becomes - *  Hostboot aware, ERRL comp id can revert to 0x0100.  Monte   */  //@{ -const compId_t ERRL_COMP_ID = 0x3100; -const char ERRL_COMP_NAME[] = "errl"; +const compId_t HBERRL_COMP_ID = 0x0100; +const char HBERRL_COMP_NAME[] = "hberrl";  //@}  /** @name DEVFW @@ -180,6 +170,7 @@ const compId_t INTR_COMP_ID = 0x0F00;  const char INTR_COMP_NAME[] = "intr";  //@} +  /** @name SPD   *  EEPROM device driver component   */ @@ -188,6 +179,17 @@ const compId_t SPD_COMP_ID = 0x1000;  const char SPD_COMP_NAME[] = "spd";  //@} +/** @name RESERVED + *  Reserved component ID. x3100 is the component ID + *  of FipS ERRL component. Due to our use of  + *  of the FipS errl tool, let no Hostboot component + *  use this component ID.  + */ +//@{ +const compId_t RESERVED_COMP_ID = 0x3100; +const char RESERVED_COMP_NAME[] = "reserved"; +//@} +  //  ----------------------------------------------------------  //  CXXTEST Unit Test, reserve compid near the end...  /** @name CXXTEST diff --git a/src/include/usr/intr/interrupt.H b/src/include/usr/intr/interrupt.H index 142917df2..7137b2f0e 100644 --- a/src/include/usr/intr/interrupt.H +++ b/src/include/usr/intr/interrupt.H @@ -24,7 +24,7 @@  #define INTERRUPT_H  #include <sys/msg.h> -#include <errl/errltypes.H> +#include <errl/errlentry.H>  #include <sys/interrupt.h>  namespace INTR diff --git a/src/usr/errl/errlUserDetailsTarget.C b/src/usr/errl/errlUserDetailsTarget.C index ece6874bf..2e128fa5c 100644 --- a/src/usr/errl/errlUserDetailsTarget.C +++ b/src/usr/errl/errlUserDetailsTarget.C @@ -53,7 +53,7 @@ void ErrlUserDetailsTarget::addToLog( errlHndl_t i_errl,          if (iv_pTarget == TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL)          {              const char *l_bufPtr = "MASTER_PROCESSOR_CHIP_TARGET_SENTINEL"; -            iv_pErrlFFDC = i_errl->addFFDC( ERRL_COMP_ID, +            iv_pErrlFFDC = i_errl->addFFDC( HBERRL_COMP_ID,                                              l_bufPtr, strlen(l_bufPtr)+1,                                              ERRL_UDV_DEFAULT_VER_1,                                              ERRL_UDT_TARGET_FFDC ); @@ -66,7 +66,7 @@ void ErrlUserDetailsTarget::addToLog( errlHndl_t i_errl,              l_bufPtr = iv_pTarget->targetFFDC( l_bufSize );              if (l_bufPtr)              { -                iv_pErrlFFDC = i_errl->addFFDC( ERRL_COMP_ID, +                iv_pErrlFFDC = i_errl->addFFDC( HBERRL_COMP_ID,                                                  l_bufPtr, l_bufSize,                                                  ERRL_UDV_DEFAULT_VER_1,                                                  ERRL_UDT_TARGET_FFDC ); diff --git a/src/usr/errl/errlentry.C b/src/usr/errl/errlentry.C index a4e8c6669..89248bce5 100644 --- a/src/usr/errl/errlentry.C +++ b/src/usr/errl/errlentry.C @@ -71,10 +71,10 @@ ErrlEntry::ErrlEntry(const errlSeverity_t i_sev,      {          if( 0 == i )          { -            ffdcPtr = addFFDC( ERRL_COMP_ID, +            ffdcPtr = addFFDC( HBERRL_COMP_ID,                                 &bt[i],                                 sizeof(bt[i]), -                               0, 0 ); +                               0, HBERRL_SST_BACKTRACE );              // Make sure we got a pointer to the user details              if( NULL == ffdcPtr ) @@ -164,6 +164,11 @@ void ErrlEntry::appendToFFDC(ErrlUD * i_pErrlUD,  ///////////////////////////////////////////////////////////////////////////////  // Return a Boolean indication of success. +// Use these to tag the UD section containing the trace.  +const int FIPS_ERRL_UDT_TRACE              = 0x0c;  +const int FIPS_ERRL_COMP_ID                = 0x3100; +const int FIPS_ERRL_UDV_DEFAULT_VER_1      = 1;  +  bool ErrlEntry::collectTrace(const char i_name[], const uint64_t i_max)  {      bool l_rc = false;  // assume a problem. @@ -171,6 +176,12 @@ bool ErrlEntry::collectTrace(const char i_name[], const uint64_t i_max)      uint64_t l_cbOutput = 0;      uint64_t l_cbBuffer = 0; +    // Trying to enforce a rule that no Hostboot component +    // use the same component ID as FIPS Errl due to our +    // use of the errl tool and its ability to format +    // FSP traces attached to Hostboot error logs. +    CPPASSERT( FIPS_ERRL_COMP_ID == RESERVED_COMP_ID ); +      do      {          // By passing nil arguments 2 and 3, obtain the size of the buffer. @@ -219,9 +230,9 @@ bool ErrlEntry::collectTrace(const char i_name[], const uint64_t i_max)          // Save the trace buffer as a UD section on this.          ErrlUD * l_udSection = new ErrlUD( l_pBuffer,                                             l_cbOutput, -                                           ERRL_COMP_ID, -                                           ERRL_UDV_DEFAULT_VER_1, -                                           ERRL_UDT_TRACE ); +                                           FIPS_ERRL_COMP_ID, +                                           FIPS_ERRL_UDV_DEFAULT_VER_1, +                                           FIPS_ERRL_UDT_TRACE );          // Add the trace section to the vector of sections          // for this error log. diff --git a/src/usr/errl/errlsctn.H b/src/usr/errl/errlsctn.H index 2cb095d46..67fa0f7c2 100644 --- a/src/usr/errl/errlsctn.H +++ b/src/usr/errl/errlsctn.H @@ -36,7 +36,7 @@  /*****************************************************************************/  #include <stdint.h>  #include <stdlib.h> -#include <errl/errltypes.H> +#include <errl/hberrltypes.H>  #include "errlsctnhdr.H"  namespace ERRORLOG diff --git a/src/usr/errl/errlsrc.C b/src/usr/errl/errlsrc.C index 3c50aed25..801ca2234 100644 --- a/src/usr/errl/errlsrc.C +++ b/src/usr/errl/errlsrc.C @@ -87,7 +87,7 @@ ErrlSrc::~ErrlSrc()  // Flatten the PS primary SRC data to a minimum standard 72-byte structure.  // Page numbers refer to Platform Event Log and SRC PLDD  // https://mcdoc.boeblingen.de.ibm.com/out/out.ViewDocument.php?documentid=1675 -// Version 0.8 (markup). See also src/include/usr/errl/errltypes.H +// Version 0.8 (markup). See also src/include/usr/errl/hberrltypes.H  // for the typedef pelSRCSection_t.  uint64_t ErrlSrc::flatten( void * o_pBuffer, const uint64_t i_cbBuffer ) diff --git a/src/usr/errl/errluserdetails.C b/src/usr/errl/errluserdetails.C index 2ee87f49a..d05af09f3 100644 --- a/src/usr/errl/errluserdetails.C +++ b/src/usr/errl/errluserdetails.C @@ -55,7 +55,7 @@ namespace ERRORLOG  // ErrlUserDetails default constructor  /*****************************************************************************/  ErrlUserDetails::ErrlUserDetails() -: iv_CompId(ERRL_COMP_ID), +: iv_CompId(HBERRL_COMP_ID),    iv_Version(0),    iv_SubSection(0),    iv_pErrlFFDC(NULL), diff --git a/src/usr/errl/parser/errlparser.C b/src/usr/errl/parser/errlparser.C index 9e733a701..20fcac589 100644 --- a/src/usr/errl/parser/errlparser.C +++ b/src/usr/errl/parser/errlparser.C @@ -25,28 +25,21 @@  /**   *  @file errlparser.C   * - *  @brief Builds a program to display committed Hostboot error logs. + *  @brief This program spawns the FipS x86 errl tool to display   + *  a Hostboot error log in full detail.  This program can also show a  + *  brief list of error logs without the detail.  When the user  + *  wants the full detail, this program extracts the error log from + *  the Hostboot image (or dump) and puts it into a temporary file. When + *  saved to file, then this program execs "errl -d..."  to display + *  the error log PEL data.  + *  + *  There are other options, such as "-p" which writes all the PEL files + *  and does not exec errl. This is useful for debugging.  + *    *  Enter errlparser ? (or -? or -h or --help)   to print help.   *  This program can be run standalone using a Simics   *  L3 memory image and the HB syms file, however it is more likely - *  spawned as "simcis> hb-errl" from the Hostboot/Simics python - *  script. - * - *  This program spawns the FSP x86 version of errl and fsp-trace - *  which may or may not be in your $PATH.  Candidates are: - * - *  Classic FSP errl: - *      /esw/fips730/Builds/b0829a_1130.730/obj/x86.nfp/errl/nfp/tool/errl - * - *  Or this version in Monte's sandbox which is more Hostboot aware: - *      /gsa/ausgsa/home/c/o/copelanm/public/bin/errl - * - *  Building Blocks version of fsp-trace: - *      /opt/mcp/shared/fr_DEV-37/opt/fsp/usr/bin/fsp-trace - * - *  Camvan has a solution for PATHing to fsp-trace when in Simics. - *  TODO Will need a copy of FSP x86 errl too in the near future. - * + *  spawned via "simics> hb-errl"    */ @@ -62,14 +55,12 @@  #include <vector>  using namespace std; -#include <errl/errltypes.H> +#include <errl/hberrltypes.H>  #include <hbotcompid.H> -// userdetail -#include <errl/parser/errlusrparser.H> - -// this should be last, otherwise it will not find all the namespaces -#include <hostBootSrcParse.H> +// These should be included from plugin code. +// #include <errl/parser/errlusrparser.H> +// #include <hostBootSrcParse.H>  using namespace ERRORLOG; @@ -753,9 +744,8 @@ int main( int argc,  char *argv[] )          exit(1);      } -    // TODO Need to put a copy of FSP x86 errl tool in the simics path. -    // Try for Monte's sandbox copy, temporary for Sprint 6. -    pszErrlTool = "/gsa/ausgsa/home/c/o/copelanm/public/bin/errl"; +    // There is a copy of FSP x86 errl tool in the simics dir. +    pszErrlTool = "./errl";      rc = stat( pszErrlTool, &statbuffer );      if(  -1 == rc ) @@ -973,13 +963,6 @@ int main( int argc,  char *argv[] )              l_reasonCode = pSRCSection->reserved1;  #endif -            printf( "%-20s%s\n", -                    "Component", -                    FindComp(pPrivateHdr->sectionheader.compId)); - -            // print the Errorlog tags from scanforsrcs.pl -            printErrorTags( l_reasonCode, pSRCSection->moduleId ); -              // done with this tmp file              unlink( szTmpFilename ); diff --git a/src/usr/errl/parser/makefile b/src/usr/errl/parser/makefile index c030b646c..dd9f132bf 100644 --- a/src/usr/errl/parser/makefile +++ b/src/usr/errl/parser/makefile @@ -21,41 +21,50 @@  #  #  IBM_PROLOG_END -# makefile for errlparser, -# a 32-bit x86 linux binary suitable for running on GFW pool machines. +# makefile for errlparser a 32-bit x86 linux binary +# to extract the PEL of an error log and  +# put it in a temporary file so that the  +# FipS errl tool can format and display it. +# "Pretty printing" of those error logs is the +# function of FipS 'errl' and its plugins, not this program. +# +# This makefile runs 'scanforsrc.pl' which generates  +# hostBootSrcParse.H, a file that hostboot plugins will include. + +  ROOTPATH=../../../.. -include ${ROOTPATH}/src/usr/parser.mk +GENDIR = ${ROOTPATH}/obj/genfiles +IMGDIR = ${ROOTPATH}/img +OBJDIR = ${ROOTPATH}/obj/modules/errl/parser -OBJFILES = errlparserbase.o	errlusrparser.o  SRCPARSE_HEADER_TARGET = \  	${GENDIR}/hostBootSrcParse.H +  CC=i686-mcp6-g++ -m32 -CFLAGS:=-g -O0   -I $(ROOTPATH)/src/include/usr  -D PARSER +CFLAGS:=-g -O0   -I $(ROOTPATH)/src/include/usr -I ${GENDIR}  all: gen_pass code_pass -gen_pass: +gen_pass:  mkdirs  ${SRCPARSE_HEADER_TARGET}  ${GENDIR}/comps.C -code_pass: makeobjdir ${IMGDIR}/errlparser ${SRCPARSE_HEADER_TARGET} +code_pass: ${IMGDIR}/errlparser -##	errlparserbase and errlusrparser -%.o : %.C -	$(CC) -c  $(CFLAGS) -o $@  $< +# errlparserbase and errlusrparser are plugins stuff, not errlparser.  +# OBJFILES = ${OBJDIR}/errlparserbase.o	${OBJDIR}/errlusrparser.o +# %.o : %.C +# 	$(CC) -c  $(CFLAGS) -o $@  $< -clean: -	rm -fr ${SRCPARSE_HEADER_TARGET} -	rm -fr ${OBJDIR}/errlparser.o -	rm -fr ${GENDIR}/errlparser -	rm -fr ${GENDIR}/comps.C -	rm -fr ${OBJDIR}/*.o -	rm -fr *.o - -makeobjdir: +mkdirs:  	mkdir -p ${OBJDIR} +	mkdir -p ${GENDIR} + +# Parse for error log tags in the Hostboot code, and generate hostBootSrcParse.H +${SRCPARSE_HEADER_TARGET} : +	./scanforsrcs.pl -b ${ROOTPATH} -o ${GENDIR}  ${GENDIR}/comps.C: ${ROOTPATH}/src/include/usr/hbotcompid.H  	grep "const compId_t [A-Z0-9]*_COMP_ID" $^ | \ @@ -63,23 +72,23 @@ ${GENDIR}/comps.C: ${ROOTPATH}/src/include/usr/hbotcompid.H  	sed 's/const compId_t \([A-Z0-9]*\)_COMP_ID[ =\t]*\(0[xX][0-9a-fA-F]*\).*/{ "\1", \2 },/' \  	> $@ -${OBJDIR}/errlparser.o: errlparser.C ${ROOTPATH}/src/include/usr/errl/errltypes.H ${GENDIR}/comps.C ${SRCPARSE_HEADER_TARGET} -	$(CC) -c  $(CFLAGS) -I${ROOTPATH}/obj/genfiles -o $@  $< +${OBJDIR}/errlparser.o: errlparser.C ${ROOTPATH}/src/include/usr/errl/hberrltypes.H ${GENDIR}/comps.C  +	$(CC) -c  $(CFLAGS)  -o $@  $< -${IMGDIR}/errlparser: ${OBJDIR}/errlparser.o ${OBJFILES} ${UD_FILES} -	$(CC) -o  $@ $? -	 -## TODO	add link step to link in UD_FILES  +${IMGDIR}/errlparser: ${OBJDIR}/errlparser.o +	$(CC) -o  $@ $< -${SRCPARSE_HEADER_TARGET} : -	./scanforsrcs.pl -b ${ROOTPATH} -o ${GENDIR} +clean: +	rm -f ${SRCPARSE_HEADER_TARGET} +	rm -f ${GENDIR}/comps.C +	rm -f ${IMGDIR}/errlparser +	rm -fr ${OBJDIR}  debug:  	ls -l 	${GENDIR}  	ls -l	${OBJDIR}   	ls -l	${IMGDIR} -	ls -l	${UD_DIR}  beam: -	# dummy
\ No newline at end of file +	# dummy diff --git a/src/usr/errl/parser/scanforsrcs.pl b/src/usr/errl/parser/scanforsrcs.pl index d6d594a18..6c187a848 100755 --- a/src/usr/errl/parser/scanforsrcs.pl +++ b/src/usr/errl/parser/scanforsrcs.pl @@ -550,8 +550,9 @@ EOF      print $fh <<EOF; -static void printErrorTags ( uint64_t i_src, -                             uint64_t i_modId ) +static void printErrorTags (  ErrlUsrParser & i_parser, +                              uint64_t i_src, +                              uint64_t i_modId )  {      uint64_t error = (i_src << 8) | i_modId; @@ -710,28 +711,13 @@ sub writePrintStatement          # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=          print $fh "         case \(\($reasonCode \<\< 8\) \| $modId\) \:\n"; -        print $fh "             printf( \"\\n\" \)\;\n"; +          foreach my $tag ( sort keys %$href )          {              $href->{$tag} =~ s/\"/\\\"/g; -            my @lines = split /^/, $href->{$tag}; - -            if( scalar( @lines ) > 1 ) -            { -                print $fh "             printf( \"\%-20s"; -                foreach my $line( @lines ) -                { -                    $line =~ s/\n//g; -                    print $fh "$line"; -                } -                print $fh "\\n\"\, \"$tag\" \)\;\n"; -            } -            else -            { -                my $line = $href->{$tag}; -                $line =~ s/\n//g; -                print $fh "             printf( \"\%-20s$line\\n\"\, \"$tag\" \)\;\n"; -            } +            my $line = $href->{$tag}; +            $line =~ s/\n//g; +            print $fh "             i_parser.PrintString( \"$tag\" \, \"$line\"  )\;\n";          }          print $fh "             break;\n\n";      } diff --git a/src/usr/errl/plugins/errlParse.C b/src/usr/errl/plugins/errlParse.C new file mode 100644 index 000000000..a70dc3ab3 --- /dev/null +++ b/src/usr/errl/plugins/errlParse.C @@ -0,0 +1,254 @@ +//  IBM_PROLOG_BEGIN_TAG +//  This is an automatically generated prolog. +// +//  $Source: src/usr/errl/plugins/errlParse.C $ +// +//  IBM CONFIDENTIAL +// +//  COPYRIGHT International Business Machines Corp. 2012 +// +//  p1 +// +//  Object Code Only (OCO) source materials +//  Licensed Internal Code Source Materials +//  IBM HostBoot Licensed Internal Code +// +//  The source code for this program is not published or other- +//  wise divested of its trade secrets, irrespective of what has +//  been deposited with the U.S. Copyright Office. +// +//  Origin: 30 +// +//  IBM_PROLOG_END + + + + +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <unistd.h> +#include <string.h> +#include <netinet/in.h> +#include <endian.h> +#include <vector> + +// Get these from a FipS/FSP backing build. +#include <errlplugins.H> +#include <errlusrparser.H> +#include <srcisrc.H> + +// These are from Hostboot. +#include <hbotcompid.H> +#include <hostBootSrcParse.H> +#include <errl/hberrltypes.H> + +// Get these from current directory. +#include "symbols.H" + + + +//------------------------------------------------------------- +// endian switch a uint64 +// TODO all plugins are probably going to want this. + +static uint64_t ntohll( uint64_t i ) +#if __BYTE_ORDER == __LITTLE_ENDIAN +{ +    //  CONTEXT_x86_nfp +    uint64_t hi; +    uint64_t lo; +    uint32_t * pword = reinterpret_cast<uint32_t*>(&i); + +    hi = ntohl( *pword ); +    lo = ntohl( *(pword+1) ); + +    return (hi<<32)|lo; +} +#elif __BYTE_ORDER == __BIG_ENDIAN +{ +    // CONTEXT_ppc (or maybe CONTEXT_aix_nfp) +    return i; +} +#else +#error Unexpected endian context. +#endif + + + + +//-------------------------------------------------------------------------- +// Use methods of i_parser such as +//         i_parser.PrintString( "label", "datastring" ); +// to format my user-defined data attached to error logs for my component. +// Parameters i_sst (subsection type) and i_ver (version) identify +// the nature of the user-defined data as defined by my component. +// The file $bb/export/x86.nfp/fips/include/errlusrparser.H defines the +// ErrlUsrParser class. +// +// Return true if handled, suppressing the default hex dump of the data. + +static bool myDataParse  ( +                        ErrlUsrParser& i_parser, +                        void* i_buffer, +                        uint32_t i_buflen, +                        errlver_t i_ver, +                        errlsubsec_t i_sst) +{ + +    bool rc = false; +    char szWork[ 256 ]; + + +    switch( i_sst ) { +    case HBERRL_SST_FIRSTLADY: +        { +            memcpy( szWork, i_buffer, i_buflen ); +            szWork[ i_buflen ] = 0; +            i_parser.PrintString( "First Lady", szWork ); +            rc = true; +        } +        break; +    case HBERRL_SST_PRESIDENT: +        { +            memcpy( szWork, i_buffer, i_buflen ); +            szWork[ i_buflen ] = 0; +            i_parser.PrintString( "President", szWork ); +            rc = true; +        } +        break; +    case HBERRL_SST_STRING: +        { +            // How to label this string? +            const char * l_pLabel; +            switch( i_ver ) +            { +                case HBERRL_VER_STRINGTASK: +                    l_pLabel = "Task"; +                    break; +                case HBERRL_VER_STRINGTASKNAME: +                    l_pLabel = "Task name"; +                    break; +                case HBERRL_VER_STRINGATTRNAME: +                    l_pLabel = "Attribute name"; +                    break; +                case HBERRL_VER_STRINGFILENAME: +                    l_pLabel = "File name"; +                    break; +                case HBERRL_VER_STRINGPROCNAME: +                    l_pLabel = "Procedure name"; +                    break; +                case HBERRL_VER_STRINGNAME: +                default: +                    l_pLabel = "Name"; +                    break; +             } +             // Expect to have a null-ended string in the data, +             // but add a null for good measure. +             int cb = i_buflen + 1; +             char * pWork = new char[cb]; +             memcpy( pWork, i_buffer, i_buflen ); +             pWork[i_buflen] = 0; +             i_parser.PrintString( l_pLabel, pWork ); +             delete pWork; +             rc = true; +        } +        break; + +    case HBERRL_SST_BACKTRACE: +        { +            // This buffer contains a number of 64-bit frame pointers. +            // Awkward because FipS/FSP errl provides no PrintNumber() +            // for a 64-bit number as of Jan 2012. + +            // Initialize l_the symbol table. +            const char * l_pSymFile = "hbicore.syms"; +            hbSymbolTable symTab; +            int readRC = symTab.readSymbols( l_pSymFile ); +            if( readRC ) +            { +                i_parser.PrintString( "Symbols not found", l_pSymFile ); +                // symTab.nearestSymbol() will return NULL because of this. +                // Carry on. +            } + +            const char * l_pErrlEntry = "ErrlEntry::ErrlEntry"; +            const char * l_pLabel = "Backtrace"; + +            // loop thru the buffer which is an array of 64-bit addresses +            uint64_t * p64 = static_cast<uint64_t*>(i_buffer); +            int l_count = i_buflen / sizeof( uint64_t ); +            for( int i = 0; i < l_count; i++ ) +            { +                // endian convert the stack address +                uint64_t l_addr  = ntohll(*p64); + +                // get nearest symbol +                const char * l_pSymbol = symTab.nearestSymbol( l_addr ); + +                if( l_pSymbol ) +                { +                    if( strstr( l_pSymbol, l_pErrlEntry )) +                    { +                        // hackish, makes for better looking output +                        // it's in every backtrace (jan2012) +                        l_pSymbol = l_pErrlEntry; +                    } +                    sprintf( szWork,"#%2d %016llX %s", i, l_addr, l_pSymbol ); +                } +                else +                { +                    sprintf( szWork,"#%2d %016llX", i, l_addr ); +                } +                i_parser.PrintString( l_pLabel, szWork ); + +                // next stack address in the buffer +                p64++; + +                // don't print the label for subsequent backtraces +                l_pLabel = ""; +            } + +            rc = true; +        } +        break; +    default: +        break; +    } + + +    return rc; +} + +// Map my Hostboot component ID to the function above. +// static errl::DataPlugin g_DataPlugin( HBERRL_COMP_ID, hberrl_DataParse ); +static errl::DataPlugin g_DataPlugin( HBERRL_COMP_ID, myDataParse ); + + + + +//---------------------------------------------------------------------------- +// Call the code generated by scanforsrc.pl + +static bool hbSrcParse( ErrlUsrParser & i_parser, const SrciSrc & i_src  ) +{ +  uint32_t src = 0; + +  sscanf( i_src.getAsciiString(), "%X", &src ); + +  // Call this function in obj/genfiles/hostBootSrcParse.H (a script-generated +  // file) which serves for any Hostboot component.   This will cause +  // the FSP errl tool to add the tagged information to the primary SRC +  // section of the error log. For example, the developer description +  // (devdesc) tag and associated info as well as the other tags describing +  // the userdata1 and userdata2 words. +  printErrorTags( i_parser, (src & 0xFFFF), i_src.moduleId()  ); + +  return false; +} + +// Create an instance of SrcPlugin by type (instead of the usual component). +static errl::SrcPlugin  g_SrcPlugin( errl::Plugin::HOSTBOOT_SRCPARSE, hbSrcParse ); + + + diff --git a/src/usr/errl/plugins/fips.mk b/src/usr/errl/plugins/fips.mk new file mode 100644 index 000000000..1db670df3 --- /dev/null +++ b/src/usr/errl/plugins/fips.mk @@ -0,0 +1,45 @@ +#  IBM_PROLOG_BEGIN_TAG +#  This is an automatically generated prolog. +# +#  $Source: src/usr/errl/plugins/fips.mk $ +# +#  IBM CONFIDENTIAL +# +#  COPYRIGHT International Business Machines Corp. 2012 +# +#  p1 +# +#  Object Code Only (OCO) source materials +#  Licensed Internal Code Source Materials +#  IBM HostBoot Licensed Internal Code +# +#  The source code for this program is not published or other- +#  wise divested of its trade secrets, irrespective of what has +#  been deposited with the U.S. Copyright Office. +# +#  Origin: 30 +# +#  IBM_PROLOG_END + +# This is a FipS makefile. The 'hb errlparser' step will copy it +# to a FipS build tree and assign a value for HBCOMPS as it is copied. + + +.if ( $(CONTEXT) == "x86.nfp" || $(CONTEXT) == "ppc" ) + +EXPINC_SUBDIRS = $(HBCOMPS) +EXPLIB_SUBDIRS = $(HBCOMPS)  +OBJECTS_SUBDIRS = $(HBCOMPS) +SUBDIRS = $(HBCOMPS) +EXPSHLIB_SUBDIRS = $(HBCOMPS) + +.elif ( $(CONTEXT) == "aix.nfp" ) + +EXPINC_SUBDIRS = +EXPLIB_SUBDIRS = +OBJECTS_SUBDIRS = +SUBDIRS = +EXPSHLIB_SUBDIRS = +.endif + +.include <${RULES_MK}> diff --git a/src/usr/errl/plugins/makefile b/src/usr/errl/plugins/makefile new file mode 100644 index 000000000..8bb94fb91 --- /dev/null +++ b/src/usr/errl/plugins/makefile @@ -0,0 +1,56 @@ +#  IBM_PROLOG_BEGIN_TAG +#  This is an automatically generated prolog. +# +#  $Source: src/usr/errl/plugins/errl/makefile $ +# +#  IBM CONFIDENTIAL +# +#  COPYRIGHT International Business Machines Corp. 2012 +# +#  p1 +# +#  Object Code Only (OCO) source materials +#  Licensed Internal Code Source Materials +#  IBM HostBoot Licensed Internal Code +# +#  The source code for this program is not published or other- +#  wise divested of its trade secrets, irrespective of what has +#  been deposited with the U.S. Copyright Office. +# +#  Origin: 30 +# +#  IBM_PROLOG_END + + +# This is a FipS makefile. This file and C sources will be built +# in a FipS tree.  + +# All Hostboot plugins/makefile should .include ../plugins.mk +.include "../plugins.mk" + + +ERRL_PLUGIN  = libB-0100 +ERRL_OBJS    = errlParse.o symbols.o + + +CFLAGS +=  -O0  + +.if ( $(CONTEXT) == "x86.nfp" ) + +LIBRARIES   = ${ERRL_PLUGIN}.a  +EXPLIBS	    = ${ERRL_PLUGIN}.a +${ERRL_PLUGIN}.a_OFILES = ${ERRL_OBJS} + +.else + +BUILD_SHARED_OBJS = +SHARED_LIBRARIES EXPSHLIBS = ${ERRL_PLUGIN}.so +${ERRL_PLUGIN}.so_EXTRA_LIBS = libbase.so + +${ERRL_PLUGIN}.so_SHLDFLAGS += ${SHLDFLAGS} -Wl,-soname,${.TARGET} + +${ERRL_PLUGIN}.so_OFILES = ${ERRL_OBJS} + +.endif + +.include <${RULES_MK}> diff --git a/src/usr/errl/plugins/plugins.mk b/src/usr/errl/plugins/plugins.mk new file mode 100644 index 000000000..fd1d90b2a --- /dev/null +++ b/src/usr/errl/plugins/plugins.mk @@ -0,0 +1,35 @@ +#  IBM_PROLOG_BEGIN_TAG +#  This is an automatically generated prolog. +# +#  $Source: src/usr/errl/plugins/plugins.mk $ +# +#  IBM CONFIDENTIAL +# +#  COPYRIGHT International Business Machines Corp. 2012 +# +#  p1 +# +#  Object Code Only (OCO) source materials +#  Licensed Internal Code Source Materials +#  IBM HostBoot Licensed Internal Code +# +#  The source code for this program is not published or other- +#  wise divested of its trade secrets, irrespective of what has +#  been deposited with the U.S. Copyright Office. +# +#  Origin: 30 +# +#  IBM_PROLOG_END + +# This is a FipS makefile. It will be copied to the directory above +# the directories for Hostboot components that build an errl plugin. + +# Hostboot plugin makefiles should include this makefile with  +#          .include "../plugins.mk"  +# in order to set CFLAGS. Eventually, there may be other global  +# settings common to all Hostboot makefiles.  This makefile  +# provides a common place for such changes. + + +CFLAGS += -DERRL_TOOLS -DPARSER  -I${HOSTBOOTROOT}/obj/genfiles  -I${HOSTBOOTROOT}/src/include/usr + diff --git a/src/usr/errl/plugins/symbols.C b/src/usr/errl/plugins/symbols.C new file mode 100644 index 000000000..c79059ca4 --- /dev/null +++ b/src/usr/errl/plugins/symbols.C @@ -0,0 +1,378 @@ +//  IBM_PROLOG_BEGIN_TAG +//  This is an automatically generated prolog. +// +//  $Source: src/usr/errl/plugins/symbols.C $ +// +//  IBM CONFIDENTIAL +// +//  COPYRIGHT International Business Machines Corp. 2012 +// +//  p1 +// +//  Object Code Only (OCO) source materials +//  Licensed Internal Code Source Materials +//  IBM HostBoot Licensed Internal Code +// +//  The source code for this program is not published or other- +//  wise divested of its trade secrets, irrespective of what has +//  been deposited with the U.S. Copyright Office. +// +//  Origin: 30 +// +//  IBM_PROLOG_END + + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdint.h> +#include <vector> + +#include "symbols.H" + + +/** + *  @file symbols.C + * + *  @brief Read HB symbols file and provide a lookup mechanism. + * + */ + + + + +//------------------------------------------------------------------------ +// trim white space from end of s + +static char * trim( char *s ) +{ +  char *p = s; + +  /* bump to last char */ +  while( *p ) p++; +  p--; + +  /* trim */ +  while( p >= s && ( *p == ' ' || *p == '\n' || *p == '\r' || *p == '\t' )) *p-- = 0; + +  /* return what was passed in */ +  return s; +} + + + +//------------------------------------------------------------------------ +// hbSymbolTable methods + +// Read the syms file, return zero for success. +int hbSymbolTable::readSymbols( const char * i_filename ) +{ +    FILE * f = NULL; + +    iv_vecSymbols.clear(); +    iv_fPopulated = false; + +    delete[] iv_pFileName; +    iv_pFileName = NULL; + +    f = fopen( i_filename,  "r" ); +    if( !f ) +    { +      return 2; +    } +    fclose(f); + +    int cb = 1 + strlen( i_filename ); +    iv_pFileName = new char[cb]; +    strcpy( iv_pFileName, i_filename ); + +    populateSymbolVector(); + +    return 0; +} + + + + +// private method +// read the syms file, return 0 if OK +int hbSymbolTable::populateSymbolVector() +{ +    FILE * f = NULL; +    char szWork[ 1024 ]; + +    if( NULL == iv_pFileName ) +    { +        return 2; +    } + +    f = fopen( iv_pFileName,  "r" ); +    if( !f ) +    { +        return 2; +    } + +    memset(szWork, 0, sizeof(szWork)); + +    while( fgets( szWork, sizeof( szWork )-1, f )) +    { +        // function symbols only +        if( 'F' == szWork[0] ) +        { +            hbSymbol* l_pSymbol = new hbSymbol(); + +            int k = 0; +            char * pch; +            pch = strtok( szWork, "," ); +            while( pch ) +            { +                switch( k ) +                { +                    case 0: +                        l_pSymbol->setType( *pch ); +                        break; +                    case 1: +                        l_pSymbol->setAddress( pch ); +                        break; +                    case 3: +                        l_pSymbol->setLength( pch ); +                        break; +                    case 4: +                        l_pSymbol->setSymbolName( pch ); +                        break; +                    default: +                        // skipping field 2 for now +                        break; +                } +                k++; +                pch = strtok( NULL, "," ); +            } + +            if( l_pSymbol->isValid() ) +            { +                iv_vecSymbols.push_back( l_pSymbol ); +            } +            else +            { +                delete l_pSymbol; +            } +        } +    } + +    fclose(f); + +    // The Hostboot symbols file is pretty much sorted already, but +    // ensure vector is sorted for the sake of binary searching. + +    int c = iv_vecSymbols.size() - 1; +    bool fSorted = (iv_vecSymbols.size() <= 1); +    while( !fSorted ) +    { +        fSorted = true; +        for ( int i = 0; i < c; i++ ) +        { +            if( iv_vecSymbols[i]->iv_Address > iv_vecSymbols[i+1]->iv_Address ) +            { +                fSorted = false; +                // swap them +                hbSymbol * l_tempSymbol; +                l_tempSymbol       = iv_vecSymbols[i]; +                iv_vecSymbols[i]   = iv_vecSymbols[i+1]; +                iv_vecSymbols[i+1] = l_tempSymbol; +            } +        } +    } + +    iv_fPopulated = true; +    return 0; +} + + + +// private method +// Given the address, find the vector index of the symbol. +// Return -1 if not found. +// Return 0 for exact match. +// Return 1 for nearest (previous) symbol +int hbSymbolTable::locateSymbol( uint64_t i_address, int &o_index ) +{ +    int rc = -1; +    int top, bot, mid, i; +    int count = iv_vecSymbols.size(); + +    if( 0 == count ) +    { +      return -1; +    } + +    if( 1 == count ) +    { +      return 1; +    } + + +    top = count - 1; +    bot = 0; + +    while( top >= bot ) +    { +        mid = (top + bot) / 2; + +        uint64_t l_midAddress = iv_vecSymbols[mid]->iv_Address; + +        if( i_address >  l_midAddress ) +        { +            /* input address >  symtable address */ +            bot = mid + 1; +        } +        else if( i_address <  l_midAddress ) +        { +            /* input address <  symtable address */ +            top = mid - 1; +        } +        else +        { +            /* exact match */ +            o_index = mid; +            return 0; +        } +    } + + +    /*  The binary search above rarely returns with mid pointing to +     *  the right symbol, so back up a couple of indices and bump along +     *  until we find the right symbol. +     */ + +    bot = mid - 2; +    if( bot < 0 ) +    { +        bot = 0; +    } + +    top = mid + 1; +    if( top > count ) +    { +        top = count; +    } + + +    for( i = bot; i < top; i++ ) +    { +        if(  ( i_address >= iv_vecSymbols[i]->iv_Address ) && +             ( i_address <  ( iv_vecSymbols[i]->iv_Address + iv_vecSymbols[i]->iv_Length ))) +        { +            // this is the one +            o_index = i; + +            // nearest symbol found +            rc = 1; +            break; +        } +    } +    return rc; +} + + + + + +// construtor +hbSymbolTable::hbSymbolTable() +{ +    iv_pFileName = NULL; +    iv_fPopulated = 0; +} + + +hbSymbolTable::~hbSymbolTable() +{ +    int c = iv_vecSymbols.size(); +    for( int i = 0; i < c; i++ ) +    { +        delete iv_vecSymbols[i]; +    } +    delete[] iv_pFileName; +} + + +// public method +char * hbSymbolTable::nearestSymbol( uint64_t  i_address ) +{ +    // search +    int l_index = 0; +    int rc = locateSymbol( i_address, l_index ); +    if( rc < 0 ) +    { +        // not found +        return NULL; +    } +    return iv_vecSymbols[l_index]->iv_pszName; +} + + + + + +//------------------------------------------------------------------------ +// hbSymbol methods + + +hbSymbol::hbSymbol() +{ +    iv_validationBits = 0; +    iv_Type           = 0; +    iv_Address        = 0; +    iv_Length         = 0; +    iv_pszName        = NULL; +} + +void hbSymbol::setAddress( const char * i_pszAddress ) +{ +    sscanf( i_pszAddress, "%llX", &iv_Address ); +    iv_validationBits |= ADDRESS; +} + +void hbSymbol::setLength( const char * i_pszLength ) +{ +    sscanf( i_pszLength,  "%llX", &iv_Length  ); +    iv_validationBits |= LENGTH; +} + +void hbSymbol::setType( int i_type ) +{ +    iv_Type = i_type; +    iv_validationBits |= TYPE; +} + +void hbSymbol::setSymbolName( char * i_pszName ) +{ +    trim( i_pszName ); + +    delete[] iv_pszName; +    int cb = strlen( i_pszName ) + 1; +    iv_pszName =  new char[cb]; +    strcpy( iv_pszName, i_pszName ); +    if( cb > 1 ) +    { +        iv_validationBits |= NAME; +    } +} + +bool hbSymbol::isValid() +{ +    // ensure somebody called to set address, length, +    // name of symbol, and type.  This would indicate the +    // parsing of the symbols input line went OK. +    return ((TYPE|ADDRESS|LENGTH|NAME)==(iv_validationBits)); +} + + +hbSymbol::~hbSymbol() +{ +    delete[] iv_pszName; +} + + + + diff --git a/src/usr/errl/plugins/symbols.H b/src/usr/errl/plugins/symbols.H new file mode 100644 index 000000000..4be1512b4 --- /dev/null +++ b/src/usr/errl/plugins/symbols.H @@ -0,0 +1,162 @@ +//  IBM_PROLOG_BEGIN_TAG +//  This is an automatically generated prolog. +// +//  $Source: src/usr/errl/plugins/symbols.H $ +// +//  IBM CONFIDENTIAL +// +//  COPYRIGHT International Business Machines Corp. 2012 +// +//  p1 +// +//  Object Code Only (OCO) source materials +//  Licensed Internal Code Source Materials +//  IBM HostBoot Licensed Internal Code +// +//  The source code for this program is not published or other- +//  wise divested of its trade secrets, irrespective of what has +//  been deposited with the U.S. Copyright Office. +// +//  Origin: 30 +// +//  IBM_PROLOG_END + + + + + +#ifndef ERRL_PLUGINS_SYMS_H +#define ERRL_PLUGINS_SYMS_H + +/** + *  @file symbols.H + * + *  @brief read HB symbols file and provide a lookup mechanism. + * + */ + + +/** + *  @brief  hbSymbol + * + *  This class contains the data from a line of the HB syms file. + */ + +class hbSymbol +{ +    public: + +    // Data from a line from hbicore.syms +    uint64_t  iv_Address; +    uint64_t  iv_Length; +    char *    iv_pszName; + +    // The char in column 1 of hbicore.syms +    int       iv_Type; + +    hbSymbol(); + +    /** @brief Set the starting address of the symbol. +     */ +    void setAddress( const char * i_pszAddress ); + + +    /** @brief Set the length of the data over which +     *  this symbol spans. +     */ +    void setLength( const char * i_pszLength ); + + +    /** @brief Set the symbol name. +     */ +    void setSymbolName( char * i_pszName ); + + +    /** @brief Set the type of symbol. This is +     *  the char found in column 1 of Hostboot +     *  symbol files.  F is function, V is variable. +     */ +    void setType( int i_type ); + + +    /** @brief Checks to see if all four set functions +     *  have been called.  If so, then this symbol is considered +     *  valid.  These symbols are built piecemeal as values are +     *  scanned from the input line of text. +     */ +    bool isValid(); + + +    ~hbSymbol(); + +    // A validation scheme, since instance +    // vars are set piecemeal. +    enum +    { +        ADDRESS  =  0x0001, +        LENGTH   =  0x0002, +        NAME     =  0x0004, +        TYPE     =  0x0008, +    }; + +    private: +    int iv_validationBits; + +}; + + + + + + +/** + * @brief  hbSymbolTable + * + * Container for hbSymbols with methods to initialize and access. + */ + + +class hbSymbolTable +{ +    public: + +    /** @brief Contructor. To use: create instance, then +     *  call readSymbols() to populate the symbol table. +     *  Then call nearestSymbol(). +     */ +    hbSymbolTable(); + +    /** @brief Read the symbols file, return zero for success. +     *  On success, then you can call nearestSymbol() +     */ +    int readSymbols( const char * i_filename ); + +    /** @brief Find and return the nearest symbol for the address given. +     *  Returns null when not found. +     */ +    char * nearestSymbol( uint64_t  i_address ); + +    /** @brief Destructor. +     */ +    ~hbSymbolTable(); + +    private: + +    bool iv_fPopulated; +    char * iv_pFileName; +    std::vector<hbSymbol*> iv_vecSymbols; + +    // Read the file and populate the symbol vector. +    int populateSymbolVector(); + +    // Given the address, find the vector index of the symbol. +    // Return -1 if not found. +    // Return 0 for exact match. +    // Return 1 for nearest (previous) symbol +    int locateSymbol( uint64_t i_address, int & o_index ); +}; + + + +#endif       // ERRL_PLUGINS_SYMS_H + diff --git a/src/usr/errl/test/errltest.H b/src/usr/errl/test/errltest.H index 817bcee89..4e186a98e 100644 --- a/src/usr/errl/test/errltest.H +++ b/src/usr/errl/test/errltest.H @@ -32,12 +32,13 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> +#include <errl/errlreasoncodes.H>  #include <trace/trace.H>  #include <hbotcompid.H> -#define TEST_REASON_CODE    (ERRL_COMP_ID | 0x0F) +  #define TEST_SEVERITY       ERRORLOG::ERRL_SEV_INFORMATIONAL -#define TEST_MOD_ID         0x0022 +  #define TEST_USR_8BIT_1    0x80  #define TEST_USR_8BIT_2    0x93 @@ -92,12 +93,19 @@ public:          do          { +            /*@ +             * @errortype +             * @reasoncode  HBERRL_TEST_REASON_CODE +             * @severity    ERRORLOG::ERRL_SEV_INFORMATIONAL +             * @moduleid    HBERRL_TEST_MOD_ID +             * @devdesc     Errl test, errl log the first. +             */              // Create an error log              errlHndl_t l_err = new ERRORLOG::ErrlEntry(                                      ERRORLOG::ERRL_SEV_INFORMATIONAL, -                                    TEST_MOD_ID, -                                    TEST_REASON_CODE, +                                    HBERRL_TEST_MOD_ID, +                                    HBERRL_TEST_REASON_CODE,                                      l_userData1,                                      l_userData2); @@ -115,7 +123,7 @@ public:              // for it.  addFFDC() should return a Boolean indication of success.              const char * pch = "martha washington"; -            pffdc = l_err->addFFDC( ERRL_COMP_ID, pch, strlen( pch ), 1, 2 ); +            pffdc = l_err->addFFDC( HBERRL_COMP_ID, pch, strlen( pch ), 0, HBERRL_SST_FIRSTLADY );              if ( NULL == pffdc )              {                  TS_FAIL("testErrl1: addFFDC() output NULL pointer"); @@ -124,7 +132,7 @@ public:              // really short user data              pch = "A"; -            pffdc = l_err->addFFDC( DEVFW_COMP_ID, pch, strlen( pch ), 3, 4 ); +            pffdc = l_err->addFFDC( DEVFW_COMP_ID, pch, strlen( pch ));              if ( NULL == pffdc )              {                  TS_FAIL("testErrl1: addFFDC() output NULL pointer"); @@ -132,7 +140,7 @@ public:              }              pch = "george washington"; -            pffdc = l_err->addFFDC( DEVFW_COMP_ID, pch, strlen( pch ), 3, 4 ); +            pffdc = l_err->addFFDC( DEVFW_COMP_ID, pch, strlen( pch ), 0, HBERRL_SST_PRESIDENT  );              if ( NULL == pffdc )              {                  TS_FAIL("testErrl1: addFFDC() output NULL pointer"); @@ -140,7 +148,7 @@ public:              }              pch = "dwight eisenhour"; -            pffdc = l_err->addFFDC( SCOM_COMP_ID, pch, strlen( pch ), 5, 6 ); +            pffdc = l_err->addFFDC( SCOM_COMP_ID, pch, strlen( pch ), 1, 12 );              if ( NULL == pffdc )              {                  TS_FAIL("testErrl1: addFFDC() output NULL pointer"); @@ -148,7 +156,7 @@ public:              }              pch = "ronald "; -            pffdc = l_err->addFFDC( ERRL_COMP_ID, pch, strlen( pch ), 7, 8 ); +            pffdc = l_err->addFFDC( HBERRL_COMP_ID, pch, strlen( pch ), 0, HBERRL_SST_PRESIDENT );              if ( NULL == pffdc )              {                  TS_FAIL("testErrl1: addFFDC() output NULL pointer"); @@ -209,7 +217,7 @@ public:              if( !fOK )              {                  // cb is big enough for the header only, but no -                // room for any entries.  +                // room for any entries.                  TS_FAIL( "collectTrace(TARG,l_cb) rets false", l_cb );                  break;              } @@ -227,7 +235,7 @@ public:              // Add null data. -            pffdc = l_err->addFFDC( ERRL_COMP_ID, NULL, 0,  9, 10 ); +            pffdc = l_err->addFFDC( HBERRL_COMP_ID, NULL, 0,  9, 10 );              if ( NULL != pffdc )              {                  TS_FAIL("testErrl1: addFFDC() returned non null"); @@ -241,7 +249,7 @@ public:                  break;              } -            if (l_err->reasonCode() != TEST_REASON_CODE) +            if (l_err->reasonCode() != HBERRL_TEST_REASON_CODE)              {                  TS_FAIL("testErrl1: createErrlLog() returns incorrect reason code!");                  break; @@ -308,8 +316,8 @@ public:          // Create an error log          errlHndl_t l_err = new ERRORLOG::ErrlEntry(                                  ERRORLOG::ERRL_SEV_UNRECOVERABLE, -                                TEST_MOD_ID, -                                TEST_REASON_CODE, +                                HBERRL_TEST_MOD_ID, +                                HBERRL_TEST_REASON_CODE,                                  l_userData1,                                  l_userData2); diff --git a/src/usr/errl/test/errluserdetailtest.H b/src/usr/errl/test/errluserdetailtest.H index 5d0d94682..b32a655f0 100644 --- a/src/usr/errl/test/errluserdetailtest.H +++ b/src/usr/errl/test/errluserdetailtest.H @@ -201,16 +201,16 @@ public:          /*@          * @errortype          * @severity ERRORLOG_SEV_INFORMATIONAL -        * @moduleid ERRL_USERDETAILS_MODULE_ID -        * @reasoncode ERRL_FILENAME_TEST +        * @moduleid HBERRL_USERDETAILS_MODULE_ID +        * @reasoncode HBERRL_FILENAME_TEST          * @userdata1 <UNUSED>          * @userdata2 <UNUSED>          * @devdesc  User Details unit test - post a filename user data section          */          l_errl = new ERRORLOG::ErrlEntry(                  ERRORLOG::ERRL_SEV_INFORMATIONAL, -                ERRL_USERDETAILS_MODULE_ID, -                ERRL_FILENAME_TEST,             //  compid/reasoncode +                HBERRL_USERDETAILS_MODULE_ID, +                HBERRL_FILENAME_TEST,             //  compid/reasoncode                  0x1234567890,                   //  user1                  0x9876543210 );                 //  user2          if( l_errl   ==   NULL ) @@ -235,7 +235,7 @@ public:          l_FN_userdata.addToLog( l_errl, testfnstr2, sizeof(testfnstr2) );          // commit the errorlog -        errlCommit(l_errl, ERRL_COMP_ID ); +        errlCommit(l_errl, HBERRL_COMP_ID );          //  Maybe do some stuff here to find the committed errorlog back and          //  see if it is still correct?  Later. @@ -254,8 +254,8 @@ public:          /*@          * @errortype          * @severity ERRORLOG_SEV_INFORMATIONAL -        * @moduleid ERRL_USERDETAILS_MODULE_ID -        * @reasoncode ERRL_ERRORMSG_TEST +        * @moduleid HBERRL_USERDETAILS_MODULE_ID +        * @reasoncode HBERRL_ERRORMSG_TEST          * @userdata1 <UNUSED>          * @userdata2 <UNUSED>          * @devdesc  User Details unit test - post an error message in a @@ -263,8 +263,8 @@ public:          */          l_errl = new ERRORLOG::ErrlEntry(                  ERRORLOG::ERRL_SEV_INFORMATIONAL, -                ERRL_USERDETAILS_MODULE_ID, -                ERRL_ERRORMSG_TEST,             //  compid/reasoncode +                HBERRL_USERDETAILS_MODULE_ID, +                HBERRL_ERRORMSG_TEST,             //  compid/reasoncode                  0x1212121212,                   //  user1                  0x3434343434 );                 //  user2          if( l_errl   ==   NULL ) @@ -280,7 +280,7 @@ public:          l_userdata.addToLog( l_errl );          // commit the errorlog -        errlCommit(l_errl, ERRL_COMP_ID ); +        errlCommit(l_errl, HBERRL_COMP_ID );      } @@ -296,8 +296,8 @@ public:          /*@          * @errortype          * @severity ERRORLOG_SEV_INFORMATIONAL -        * @moduleid ERRL_USERDETAILS_MODULE_ID -        * @reasoncode ERRL_XMLTOKEN_TEST +        * @moduleid HBERRL_USERDETAILS_MODULE_ID +        * @reasoncode HBERRL_XMLTOKEN_TEST          * @userdata1 <UNUSED>          * @userdata2 <UNUSED>          * @devdesc  User Details unit test - post an XML token in error as @@ -305,8 +305,8 @@ public:          */          l_errl = new ERRORLOG::ErrlEntry(                  ERRORLOG::ERRL_SEV_INFORMATIONAL, -                ERRL_USERDETAILS_MODULE_ID, -                ERRL_XMLTOKEN_TEST,             //  compid/reasoncode +                HBERRL_USERDETAILS_MODULE_ID, +                HBERRL_XMLTOKEN_TEST,             //  compid/reasoncode                  0xa5a5a5a5a5,                   //  user1                  0xd2d2d2d2d2 );                 //  user2          if( l_errl   ==   NULL ) @@ -322,7 +322,7 @@ public:           l_userdata.addToLog( l_errl );          // commit the errorlog -        errlCommit( l_errl, ERRL_COMP_ID ); +        errlCommit( l_errl, HBERRL_COMP_ID );      } diff --git a/src/usr/fsi/test/fsiddtest.H b/src/usr/fsi/test/fsiddtest.H index c3d254b7d..74befc8aa 100644 --- a/src/usr/fsi/test/fsiddtest.H +++ b/src/usr/fsi/test/fsiddtest.H @@ -32,7 +32,6 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <limits.h>  #include <devicefw/driverif.H>  #include <fsi/fsiif.H> diff --git a/src/usr/fsiscom/test/fsiscomtest.H b/src/usr/fsiscom/test/fsiscomtest.H index 76afb9a18..5c570793b 100644 --- a/src/usr/fsiscom/test/fsiscomtest.H +++ b/src/usr/fsiscom/test/fsiscomtest.H @@ -23,7 +23,6 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <limits.h>  #include <devicefw/driverif.H> diff --git a/src/usr/hwpf/plat/fapiPlatAttributeService.C b/src/usr/hwpf/plat/fapiPlatAttributeService.C index e567a0c74..b106cbb6e 100644 --- a/src/usr/hwpf/plat/fapiPlatAttributeService.C +++ b/src/usr/hwpf/plat/fapiPlatAttributeService.C @@ -35,7 +35,6 @@  #include <targeting/targetservice.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <hwpf/plat/fapiPlatAttributeService.H>  #include <hwpf/plat/fapiPlatReasonCodes.H> diff --git a/src/usr/i2c/eepromdd.H b/src/usr/i2c/eepromdd.H index 35ae315a7..ab47f692a 100755 --- a/src/usr/i2c/eepromdd.H +++ b/src/usr/i2c/eepromdd.H @@ -33,7 +33,7 @@  // ----------------------------------------------  // Includes  // ---------------------------------------------- -#include <errl/errltypes.H> +#include <errl/errlentry.H>  namespace EEPROM  { diff --git a/src/usr/i2c/i2c.H b/src/usr/i2c/i2c.H index ea513f6db..ad7592e2c 100755 --- a/src/usr/i2c/i2c.H +++ b/src/usr/i2c/i2c.H @@ -33,7 +33,7 @@  // ----------------------------------------------  // Includes  // ---------------------------------------------- -#include <errl/errltypes.H> +#include <errl/errlentry.H>  namespace I2C  { diff --git a/src/usr/i2c/test/eepromddtest.H b/src/usr/i2c/test/eepromddtest.H index 6cb8adddc..5f31a128b 100755 --- a/src/usr/i2c/test/eepromddtest.H +++ b/src/usr/i2c/test/eepromddtest.H @@ -33,7 +33,6 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <devicefw/driverif.H>  #include <i2c/eepromddreasoncodes.H>  #include <targeting/predicates/predicatectm.H> diff --git a/src/usr/i2c/test/i2ctest.H b/src/usr/i2c/test/i2ctest.H index 80523c629..865d62248 100755 --- a/src/usr/i2c/test/i2ctest.H +++ b/src/usr/i2c/test/i2ctest.H @@ -33,7 +33,6 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <devicefw/driverif.H>  #include <i2c/i2creasoncodes.H>  #include <targeting/predicates/predicatectm.H> diff --git a/src/usr/initservice/plugins/makefile b/src/usr/initservice/plugins/makefile new file mode 100644 index 000000000..58f562153 --- /dev/null +++ b/src/usr/initservice/plugins/makefile @@ -0,0 +1,50 @@ +#  IBM_PROLOG_BEGIN_TAG +#  This is an automatically generated prolog. +# +#  $Source: src/usr/initservice/plugins/makefile $ +# +#  IBM CONFIDENTIAL +# +#  COPYRIGHT International Business Machines Corp. 2012 +# +#  p1 +# +#  Object Code Only (OCO) source materials +#  Licensed Internal Code Source Materials +#  IBM HostBoot Licensed Internal Code +# +#  The source code for this program is not published or other- +#  wise divested of its trade secrets, irrespective of what has +#  been deposited with the U.S. Copyright Office. +# +#  Origin: 30 +# +#  IBM_PROLOG_END + +# This is a FipS makefile. + + +# Include the common hostboot plugins makefile +.include "../plugins.mk"  + +MY_PLUGIN  = libB-0500 +MY_OBJS    = # initserviceParse.o  + + +.if ( $(CONTEXT) == "x86.nfp" ) + +LIBRARIES   = ${MY_PLUGIN}.a  +EXPLIBS	    = ${MY_PLUGIN}.a +${MY_PLUGIN}.a_OFILES = ${MY_OBJS} + +.else + +BUILD_SHARED_OBJS = +SHARED_LIBRARIES EXPSHLIBS = ${MY_PLUGIN}.so +${MY_PLUGIN}.so_EXTRA_LIBS = libbase.so +${MY_PLUGIN}.so_SHLDFLAGS += ${SHLDFLAGS} -Wl,-soname,${.TARGET} +${MY_PLUGIN}.so_OFILES = ${MY_OBJS} + +.endif + +.include <${RULES_MK}> diff --git a/src/usr/intr/intrrp.H b/src/usr/intr/intrrp.H index 6c54cf993..bb407bc02 100644 --- a/src/usr/intr/intrrp.H +++ b/src/usr/intr/intrrp.H @@ -26,7 +26,7 @@  #include <stdint.h>  #include <builtins.h>  #include <limits.h> -#include <errl/errltypes.H> +#include <errl/errlentry.H>  #include <sys/msg.h>  #include <intr/interrupt.H>  #include <map> diff --git a/src/usr/parser.mk b/src/usr/parser.mk index 4666d5fc6..2b47925ce 100644 --- a/src/usr/parser.mk +++ b/src/usr/parser.mk @@ -20,11 +20,13 @@  #  Origin: 30  #  #  IBM_PROLOG_END -# Common file for x86 parser files + +#  This file used by initservice/build/makefile +#  Not used by errlparser nor plugins as of sprint 9. +  GENDIR = ${ROOTPATH}/obj/genfiles  IMGDIR = ${ROOTPATH}/img  OBJDIR = ${ROOTPATH}/obj/modules/parser  UD_DIR = ${ROOTPATH}/obj/modules/userdetails -## UD_FILES = ${UD_DIR}/*.o
\ No newline at end of file diff --git a/src/usr/pnor/test/pnorddtest.H b/src/usr/pnor/test/pnorddtest.H index 400114ffa..d8eb4af63 100644 --- a/src/usr/pnor/test/pnorddtest.H +++ b/src/usr/pnor/test/pnorddtest.H @@ -32,7 +32,6 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <pnor/pnorif.H>  #include <devicefw/userif.H> diff --git a/src/usr/pnor/test/pnorrptest.H b/src/usr/pnor/test/pnorrptest.H index 343b7bdb7..bdd28c2b8 100644 --- a/src/usr/pnor/test/pnorrptest.H +++ b/src/usr/pnor/test/pnorrptest.H @@ -32,7 +32,6 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <pnor/pnorif.H>  #include <sys/msg.h>  #include <limits.h> diff --git a/src/usr/scom/test/scomtest.H b/src/usr/scom/test/scomtest.H index 7545b795b..183ac0ebc 100644 --- a/src/usr/scom/test/scomtest.H +++ b/src/usr/scom/test/scomtest.H @@ -32,7 +32,6 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <devicefw/userif.H>  #include <fsi/fsiif.H>  #include    <sys/time.h>  //mc99 remove diff --git a/src/usr/spd/spd.H b/src/usr/spd/spd.H index 65f85119a..81da52888 100755 --- a/src/usr/spd/spd.H +++ b/src/usr/spd/spd.H @@ -33,7 +33,7 @@  // ----------------------------------------------  // Includes  // ---------------------------------------------- -#include <errl/errltypes.H> +#include <errl/errlentry.H>  namespace SPD  { diff --git a/src/usr/spd/test/spdtest.H b/src/usr/spd/test/spdtest.H index 3efa690cc..7fff3db2c 100755 --- a/src/usr/spd/test/spdtest.H +++ b/src/usr/spd/test/spdtest.H @@ -33,7 +33,6 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <devicefw/driverif.H>  #include <targeting/predicates/predicatectm.H> diff --git a/src/usr/vfs/vfsrp.H b/src/usr/vfs/vfsrp.H index 8492f559d..c57603907 100644 --- a/src/usr/vfs/vfsrp.H +++ b/src/usr/vfs/vfsrp.H @@ -25,7 +25,7 @@  #include <stdint.h>  #include <builtins.h> -#include <errl/errltypes.H> +#include <errl/errlentry.H>  #include <sys/msg.h>  #include <vector>  #include <sys/sync.h> diff --git a/src/usr/xscom/test/xscomtest.H b/src/usr/xscom/test/xscomtest.H index 00b9e43a9..b5bd1c705 100644 --- a/src/usr/xscom/test/xscomtest.H +++ b/src/usr/xscom/test/xscomtest.H @@ -32,7 +32,6 @@  #include <cxxtest/TestSuite.H>  #include <errl/errlmanager.H>  #include <errl/errlentry.H> -#include <errl/errltypes.H>  #include <devicefw/userif.H>  #include <xscom/xscomreasoncodes.H> | 

