1) Added prototype of constructor and destructor in the library's AutoGen.h. This is necessary for Intel Compiler.
2) Corrected the prototype destructor of EdkUefiRuntimeLib. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2271 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -129,7 +129,8 @@ RuntimeDriverLibConstruct (
|
|||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
RuntimeDriverLibDeconstruct (
|
RuntimeDriverLibDeconstruct (
|
||||||
VOID
|
IN EFI_HANDLE ImageHandle,
|
||||||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
@ -142,7 +142,8 @@ Returns:
|
|||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
RuntimeDriverLibDeconstruct (
|
RuntimeDriverLibDeconstruct (
|
||||||
VOID
|
IN EFI_HANDLE ImageHandle,
|
||||||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
)
|
)
|
||||||
/*++
|
/*++
|
||||||
|
|
||||||
|
@ -620,12 +620,15 @@ public class AutoGen {
|
|||||||
fileBuffer.append("\n");
|
fileBuffer.append("\n");
|
||||||
fileBuffer.append(this.myPcdAutogen.getHAutoGenString());
|
fileBuffer.append(this.myPcdAutogen.getHAutoGenString());
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
// generate function prototype for constructor and destructor
|
||||||
|
//
|
||||||
|
LibConstructorToAutogenH(moduleType, fileBuffer);
|
||||||
|
LibDestructorToAutogenH(moduleType, fileBuffer);
|
||||||
//
|
//
|
||||||
// Append the #endif at AutoGen.h
|
// Append the #endif at AutoGen.h
|
||||||
//
|
//
|
||||||
fileBuffer.append("#endif\n");
|
fileBuffer.append("#endif\n");
|
||||||
|
|
||||||
//
|
//
|
||||||
// Save content of string buffer to AutoGen.h file.
|
// Save content of string buffer to AutoGen.h file.
|
||||||
//
|
//
|
||||||
@ -1362,6 +1365,152 @@ public class AutoGen {
|
|||||||
LibDestructorToAutogenC(libDestructList, moduleType, fileBuffer/* autogenC */);
|
LibDestructorToAutogenC(libDestructList, moduleType, fileBuffer/* autogenC */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
LibConstructorToAutogenH
|
||||||
|
|
||||||
|
This function writes library constructor declarations AutoGen.h. The library
|
||||||
|
constructor's parameter and return value depend on module type.
|
||||||
|
|
||||||
|
@param libInstanceList
|
||||||
|
List of library construct name.
|
||||||
|
@param moduleType
|
||||||
|
Module type.
|
||||||
|
@param fileBuffer
|
||||||
|
String buffer for AutoGen.c
|
||||||
|
@throws Exception
|
||||||
|
**/
|
||||||
|
void LibConstructorToAutogenH(String moduleType, StringBuffer fileBuffer) throws EdkException {
|
||||||
|
boolean isFirst = true;
|
||||||
|
|
||||||
|
//
|
||||||
|
// If not yet parse this library instance's constructor
|
||||||
|
// element,parse it.
|
||||||
|
//
|
||||||
|
String libConstructName = saq.getLibConstructorName();
|
||||||
|
if (libConstructName == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// The library constructor's parameter and return value depend on
|
||||||
|
// module type.
|
||||||
|
//
|
||||||
|
if (moduleType.equalsIgnoreCase(EdkDefinitions.MODULE_TYPE_BASE)) {
|
||||||
|
fileBuffer.append("RETURN_STATUS\n");
|
||||||
|
fileBuffer.append("EFIAPI\n");
|
||||||
|
fileBuffer.append(libConstructName);
|
||||||
|
fileBuffer.append(" (\n");
|
||||||
|
fileBuffer.append(" VOID\n");
|
||||||
|
fileBuffer.append(" );\n");
|
||||||
|
} else {
|
||||||
|
switch (CommonDefinition.getModuleType(moduleType)) {
|
||||||
|
case CommonDefinition.ModuleTypeBase:
|
||||||
|
fileBuffer.append("RETURN_STATUS\n");
|
||||||
|
fileBuffer.append("EFIAPI\n");
|
||||||
|
fileBuffer.append(libConstructName);
|
||||||
|
fileBuffer.append(" (\n");
|
||||||
|
fileBuffer.append(" VOID\n");
|
||||||
|
fileBuffer.append(" );\n");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CommonDefinition.ModuleTypePeiCore:
|
||||||
|
case CommonDefinition.ModuleTypePeim:
|
||||||
|
fileBuffer.append("EFI_STATUS\n");
|
||||||
|
fileBuffer.append("EFIAPI\n");
|
||||||
|
fileBuffer.append(libConstructName);
|
||||||
|
fileBuffer.append(" (\n");
|
||||||
|
fileBuffer.append(" IN EFI_FFS_FILE_HEADER *FfsHeader,\n");
|
||||||
|
fileBuffer.append(" IN EFI_PEI_SERVICES **PeiServices\n");
|
||||||
|
fileBuffer.append(" );\n");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CommonDefinition.ModuleTypeDxeCore:
|
||||||
|
case CommonDefinition.ModuleTypeDxeDriver:
|
||||||
|
case CommonDefinition.ModuleTypeDxeRuntimeDriver:
|
||||||
|
case CommonDefinition.ModuleTypeDxeSmmDriver:
|
||||||
|
case CommonDefinition.ModuleTypeDxeSalDriver:
|
||||||
|
case CommonDefinition.ModuleTypeUefiDriver:
|
||||||
|
case CommonDefinition.ModuleTypeUefiApplication:
|
||||||
|
fileBuffer.append("EFI_STATUS\n");
|
||||||
|
fileBuffer.append("EFIAPI\n");
|
||||||
|
fileBuffer.append(libConstructName);
|
||||||
|
fileBuffer.append(" (\n");
|
||||||
|
fileBuffer.append(" IN EFI_HANDLE ImageHandle,\n");
|
||||||
|
fileBuffer.append(" IN EFI_SYSTEM_TABLE *SystemTable\n");
|
||||||
|
fileBuffer.append(" );\n");
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
LibDestructorToAutogenH
|
||||||
|
|
||||||
|
This function writes library destructor declarations AutoGen.h. The library
|
||||||
|
destructor's parameter and return value depend on module type.
|
||||||
|
|
||||||
|
@param libInstanceList
|
||||||
|
List of library destructor name.
|
||||||
|
@param moduleType
|
||||||
|
Module type.
|
||||||
|
@param fileBuffer
|
||||||
|
String buffer for AutoGen.c
|
||||||
|
@throws Exception
|
||||||
|
**/
|
||||||
|
void LibDestructorToAutogenH(String moduleType, StringBuffer fileBuffer) throws EdkException {
|
||||||
|
boolean isFirst = true;
|
||||||
|
String libDestructName = saq.getLibDestructorName();
|
||||||
|
if (libDestructName == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (moduleType.equalsIgnoreCase(EdkDefinitions.MODULE_TYPE_BASE)) {
|
||||||
|
fileBuffer.append("RETURN_STATUS\n");
|
||||||
|
fileBuffer.append("EFIAPI\n");
|
||||||
|
fileBuffer.append(libDestructName);
|
||||||
|
fileBuffer.append(" (\n");
|
||||||
|
fileBuffer.append(" VOID\n");
|
||||||
|
fileBuffer.append(" );\n");
|
||||||
|
} else {
|
||||||
|
switch (CommonDefinition.getModuleType(moduleType)) {
|
||||||
|
case CommonDefinition.ModuleTypeBase:
|
||||||
|
fileBuffer.append("RETURN_STATUS\n");
|
||||||
|
fileBuffer.append("EFIAPI\n");
|
||||||
|
fileBuffer.append(libDestructName);
|
||||||
|
fileBuffer.append(" (\n");
|
||||||
|
fileBuffer.append(" VOID\n");
|
||||||
|
fileBuffer.append(" );\n");
|
||||||
|
break;
|
||||||
|
case CommonDefinition.ModuleTypePeiCore:
|
||||||
|
case CommonDefinition.ModuleTypePeim:
|
||||||
|
fileBuffer.append("EFI_STATUS\n");
|
||||||
|
fileBuffer.append("EFIAPI\n");
|
||||||
|
fileBuffer.append(libDestructName);
|
||||||
|
fileBuffer.append(" (\n");
|
||||||
|
fileBuffer.append(" IN EFI_FFS_FILE_HEADER *FfsHeader,\n");
|
||||||
|
fileBuffer.append(" IN EFI_PEI_SERVICES **PeiServices\n");
|
||||||
|
fileBuffer.append(" );\n");
|
||||||
|
break;
|
||||||
|
case CommonDefinition.ModuleTypeDxeCore:
|
||||||
|
case CommonDefinition.ModuleTypeDxeDriver:
|
||||||
|
case CommonDefinition.ModuleTypeDxeRuntimeDriver:
|
||||||
|
case CommonDefinition.ModuleTypeDxeSmmDriver:
|
||||||
|
case CommonDefinition.ModuleTypeDxeSalDriver:
|
||||||
|
case CommonDefinition.ModuleTypeUefiDriver:
|
||||||
|
case CommonDefinition.ModuleTypeUefiApplication:
|
||||||
|
fileBuffer.append("EFI_STATUS\n");
|
||||||
|
fileBuffer.append("EFIAPI\n");
|
||||||
|
fileBuffer.append(libDestructName);
|
||||||
|
fileBuffer.append(" (\n");
|
||||||
|
fileBuffer.append(" IN EFI_HANDLE ImageHandle,\n");
|
||||||
|
fileBuffer.append(" IN EFI_SYSTEM_TABLE *SystemTable\n");
|
||||||
|
fileBuffer.append(" );\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
LibConstructorToAutogenc
|
LibConstructorToAutogenc
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user