MdeModulePkg: Fix constructor invocation ordering

The BaseSerialPortLib16550 library does not implement
a constructor. This prevents the correct constructor
invocation order for dependent libraries.
e.g. A PlatformHookLib (for the Serial Port) may have
a dependency on retrieving data from a Hob. A Hob
library implementation may configure its initial state
in the HobLib constructor. Since BaseSerialPortLib16550
does not implement a constructor, the Basetools do not
resolve the correct order for constructor invocation.

To fix this, add an empty constructor to the serial port
library BaseSerialPortLib16550.

Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Acked-by: Ard Biesheuvel <Ard.Biesheuvel@arm.com>
Acked-by: Hao A Wu <hao.a.wu@intel.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
Sami Mujawar 2020-10-02 22:14:01 +01:00 committed by mergify[bot]
parent 69f8ef04a8
commit 1c03498a25
2 changed files with 19 additions and 0 deletions

View File

@ -4,6 +4,7 @@
(C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2018, AMD Incorporated. All rights reserved.<BR>
Copyright (c) 2020, ARM Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@ -1102,3 +1103,18 @@ SerialPortSetAttributes (
return RETURN_SUCCESS;
}
/** Base Serial Port 16550 Library Constructor
@retval RETURN_SUCCESS Success.
**/
EFI_STATUS
EFIAPI
BaseSerialPortLib16550 (
VOID
)
{
// Nothing to do here. This constructor is added to
// enable the chain of constructor invocation for
// dependent libraries.
return RETURN_SUCCESS;
}

View File

@ -2,6 +2,8 @@
# SerialPortLib instance for 16550 UART.
#
# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2020, ARM Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
@ -14,6 +16,7 @@
MODULE_TYPE = BASE
VERSION_STRING = 1.1
LIBRARY_CLASS = SerialPortLib
CONSTRUCTOR = BaseSerialPortLib16550
[Packages]
MdePkg/MdePkg.dec