On 09/12/13 01:04, Jordan Justen wrote:
> On Wed, Sep 11, 2013 at 2:03 AM, Laszlo Ersek <ler...@redhat.com> wrote:
>> On 09/11/13 10:15, Jordan Justen wrote:
>>> On Fri, Sep 6, 2013 at 2:40 PM, Laszlo Ersek <ler...@redhat.com> wrote:
>>>> In preparation for the next patch, collect active UEFI boot options in
>>>> advance into a new array. Rebase the current inner loop (the matching
>>>> loop) to this array.
>>>>
>>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>>>
>>>> Signed-off-by: Laszlo Ersek <ler...@redhat.com>
>>>> ---
>>>>  OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c |  115 
>>>> ++++++++++++++++++++----
>>>>  1 files changed, 97 insertions(+), 18 deletions(-)
>>>>
>>>> diff --git a/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c 
>>>> b/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c
>>>> index e9580b9..7139cc2 100644
>>>> --- a/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c
>>>> +++ b/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c
>>>> @@ -238,6 +238,15 @@ typedef struct {
>>>>
>>>>
>>>>  /**
>>>> +  Array element tracking an enumerated boot option that has the
>>>> +  LOAD_OPTION_ACTIVE attribute.
>>>> +**/
>>>> +typedef struct {
>>>> +  CONST BDS_COMMON_OPTION *BootOption; // reference only, no ownership
>>>> +} ACTIVE_OPTION;
>>>> +
>>>> +
>>>> +/**
>>>>
>>>>    Append BootOptionId to BootOrder, reallocating the latter if needed.
>>>>
>>>> @@ -283,6 +292,75 @@ BootOrderAppend (
>>>>
>>>>
>>>>  /**
>>>> +
>>>> +  Create an array of ACTIVE_OPTION elements for a boot option list.
>>>> +
>>>> +  @param[in]  BootOptionList  A boot option list, created with
>>>> +                              BdsLibEnumerateAllBootOption().
>>>> +
>>>> +  @param[out] ActiveOption    Pointer to the first element in the new 
>>>> array.
>>>> +                              The caller is responsible for freeing the 
>>>> array
>>>> +                              with FreePool() after use.
>>>> +
>>>> +  @param[out] Count           Number of elements in the new array.
>>>> +
>>>> +
>>>> +  @retval RETURN_SUCCESS           The ActiveOption array has been 
>>>> created.
>>>> +
>>>> +  @retval RETURN_NOT_FOUND         No active entry has been found in
>>>> +                                   BootOptionList.
>>>> +
>>>> +  @retval RETURN_OUT_OF_RESOURCES  Memory allocation failed.
>>>> +
>>>> +**/
>>>> +STATIC
>>>> +RETURN_STATUS
>>>> +CollectActiveOptions (
>>>> +  IN   CONST LIST_ENTRY *BootOptionList,
>>>> +  OUT  ACTIVE_OPTION    **ActiveOption,
>>>> +  OUT  UINTN            *Count
>>>> +  )
>>>> +{
>>>> +  UINTN ScanMode;
>>>> +
>>>
>>> GCC 4.7 for IA32 wants to issue a warning unless I set *ActiveOption
>>> to NULL here. Do you see the same?
>>
>> Unfortunately, I do.
>>
>> When building for IA32 I see the warning (treated as an error) with both
>> gcc-4.4 and gcc-4.7, issued for the caller:
>>
>> gcc-4.4:
>> .../QemuBootOrder.c: In function 'SetBootOrderFromQemu':
>> .../QemuBootOrder.c:1152: error: 'ActiveOption' may be used
>> uninitialized in this function
>>
>> gcc-4.7:
>> .../QemuBootOrder.c: In function 'SetBootOrderFromQemu':
>> .../QemuBootOrder.c:1152:37: error: 'ActiveOption' may be used
>> uninitialized in this function [-Werror=maybe-uninitialized]
>>
>> When targeting X64, neither gcc version emits the warning.
>>
>> The warning is wrong by the way.
>>
>> I wonder what else VS might choke on.
> 
> I tried VS2012, and it seemed okay with the original series for both IA32 & 
> X64.
> 
>> Do you want me to resubmit the series?
> 
> I can add this if you are okay with it.

That'd be perfect, thank you!
Laszlo


------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. Consolidate legacy IT systems to a single system of record for IT
2. Standardize and globalize service processes across IT
3. Implement zero-touch automation to replace manual, redundant tasks
http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to