* Fixed typeo lib/error.c EFI_WARN_UNKNOWN_GLYPH definition.

On couple of locations in runtime string library (rtstr.c)
there are calls to non-runtime variant of StrLen function.
* Another issue is with formatting 1394 paths.
The F1394_DEVICE_PATH::Guid is formatted as %g, but 1394
GUID is 8 byte integer, not EFI_GUID and therefore should
be formatted as e.g. %016lx (as edk2 does).
* Beyond what's mentioned above, changed the format of the
harddrive path, so it's in line with edk2 format and spec
(2.7 errata A, chapter 10.6.1.6, table 102).

Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
Signed-off-by: manison <manison@users.sf.net>
This commit is contained in:
Nigel Croxon 2019-01-09 07:03:46 -05:00
parent 5d0d538c25
commit d34132e62f
4 changed files with 26 additions and 24 deletions

View File

@ -325,11 +325,11 @@ typedef struct _VLAN_DEVICE_PATH {
#define MSG_INFINIBAND_DP 0x09
typedef struct _INFINIBAND_DEVICE_PATH {
EFI_DEVICE_PATH_PROTOCOL Header;
UINT32 ResourceFlags ;
UINT64 PortGid ;
UINT64 ServiceId ;
UINT64 TargetPortId ;
UINT64 DeviceId ;
UINT32 ResourceFlags;
UINT8 PortGid[16];
UINT64 ServiceId;
UINT64 TargetPortId;
UINT64 DeviceId;
} INFINIBAND_DEVICE_PATH;
#define MSG_UART_DP 0x0e

View File

@ -659,7 +659,8 @@ _DevPath1394 (
F1394_DEVICE_PATH *F1394;
F1394 = DevPath;
CatPrint(Str, L"1394(%g)", &F1394->Guid);
// Guid has format of IEEE-EUI64
CatPrint(Str, L"I1394(%016lx)", F1394->Guid);
}
@ -863,9 +864,9 @@ _DevPathInfiniBand (
INFINIBAND_DEVICE_PATH *InfiniBand;
InfiniBand = DevPath;
CatPrint( Str , L"Infiniband(0x%x,%g,0x%lx,0x%lx,0x%lx)" ,
InfiniBand-> ResourceFlags , InfiniBand-> PortGid , InfiniBand-> ServiceId ,
InfiniBand-> TargetPortId , InfiniBand-> DeviceId ) ;
CatPrint(Str, L"Infiniband(0x%x,%g,0x%lx,0x%lx,0x%lx)",
InfiniBand->ResourceFlags, InfiniBand->PortGid, InfiniBand->ServiceId,
InfiniBand->TargetPortId, InfiniBand->DeviceId);
}
static VOID
@ -889,17 +890,19 @@ _DevPathUart (
}
if (Uart->BaudRate == 0) {
CatPrint(Str, L"Uart(DEFAULT %c",Uart->BaudRate,Parity);
CatPrint(Str, L"Uart(DEFAULT,");
} else {
CatPrint(Str, L"Uart(%d %c",Uart->BaudRate,Parity);
CatPrint(Str, L"Uart(%ld,", Uart->BaudRate);
}
if (Uart->DataBits == 0) {
CatPrint(Str, L"D");
CatPrint(Str, L"DEFAULT,");
} else {
CatPrint(Str, L"%d",Uart->DataBits);
CatPrint(Str, L"%d,", Uart->DataBits);
}
CatPrint(Str, L"%c,", Parity);
switch (Uart->StopBits) {
case 0 : CatPrint(Str, L"D)"); break;
case 1 : CatPrint(Str, L"1)"); break;
@ -933,21 +936,20 @@ _DevPathHardDrive (
Hd = DevPath;
switch (Hd->SignatureType) {
case SIGNATURE_TYPE_MBR:
CatPrint(Str, L"HD(Part%d,Sig%08X)",
CatPrint(Str, L"HD(%d,MBR,0x%08x)",
Hd->PartitionNumber,
*((UINT32 *)(&(Hd->Signature[0])))
);
break;
case SIGNATURE_TYPE_GUID:
CatPrint(Str, L"HD(Part%d,Sig%g)",
CatPrint(Str, L"HD(%d,GPT,%g)",
Hd->PartitionNumber,
(EFI_GUID *) &(Hd->Signature[0])
);
break;
default:
CatPrint(Str, L"HD(Part%d,MBRType=%02x,SigType=%02x)",
CatPrint(Str, L"HD(%d,%d,0)",
Hd->PartitionNumber,
Hd->MBRType,
Hd->SignatureType
);
break;

View File

@ -56,7 +56,7 @@ struct {
{ EFI_COMPROMISED_DATA, L"Compromised Data"},
// warnings
{ EFI_WARN_UNKOWN_GLYPH, L"Warning Unknown Glyph"},
{ EFI_WARN_UNKNOWN_GLYPH, L"Warning Unknown Glyph"},
{ EFI_WARN_DELETE_FAILURE, L"Warning Delete Failure"},
{ EFI_WARN_WRITE_FAILURE, L"Warning Write Failure"},
{ EFI_WARN_BUFFER_TOO_SMALL, L"Warning Buffer Too Small"},

View File

@ -18,7 +18,7 @@ Revision History
#include "lib.h"
#ifndef __GNUC__
#pragma RUNTIME_CODE(RtAcquireLock)
#pragma RUNTIME_CODE(RtStrCmp)
#endif
INTN
RUNTIMEFUNCTION
@ -76,7 +76,7 @@ RtStrnCpy (
}
#ifndef __GNUC__
#pragma RUNTIME_CODE(RtStrCpy)
#pragma RUNTIME_CODE(RtStpCpy)
#endif
CHAR16 *
RUNTIMEFUNCTION
@ -122,7 +122,7 @@ RtStrCat (
IN CONST CHAR16 *Src
)
{
RtStrCpy(Dest+StrLen(Dest), Src);
RtStrCpy(Dest+RtStrLen(Dest), Src);
}
#ifndef __GNUC__
@ -138,7 +138,7 @@ RtStrnCat (
{
UINTN DestSize, Size;
DestSize = StrLen(Dest);
DestSize = RtStrLen(Dest);
Size = RtStrnLen(Src, Len);
RtCopyMem(Dest + DestSize, Src, Size * sizeof(CHAR16));
Dest[DestSize + Size] = '\0';
@ -169,11 +169,11 @@ RtStrnLen (
IN CONST CHAR16 *s1,
IN UINTN Len
)
// copy strings
// string length
{
UINTN i;
for (i = 0; *s1 && i < Len; i++)
s1++;
s1++;
return i;
}