svn commit: r323063 - head/sys/boot/efi/boot1

Warner Losh imp at bsdimp.com
Tue Sep 5 13:33:28 UTC 2017


On Mon, Sep 4, 2017 at 11:51 PM, Jia-Shiun Li <jiashiun at gmail.com> wrote:

> Seems to cause armv6 crossbuild to fail.
> But did armv6 use efi anyway?
>
>
> jsli at jsli-e5:/tmp/src # uname -a
> FreeBSD jsli-e5 12.0-CURRENT FreeBSD 12.0-CURRENT #59 r323150: Mon Sep  4
> 11:30:09 CST 2017     jsli at jsli-e5:/usr/obj/usr/src/sys/GENERIC-NODEBUG
> amd64
> jsli at jsli-e5:/tmp/src # svnversion
> 323170
> jsli at jsli-e5:/tmp/src # time nice +20 env MAKEOBJDIRPREFIX=/tmp/obj make
> -sj12 TARGET_ARCH=armv6 KERNCONF=RPI2 -DNO_CLEAN buildworld buildkernel
> ...
> ...
> ...
> /tmp/src/sys/boot/efi/boot1/boot1.c:474:32: error: format specifies type
> 'wchar_t *' (aka 'unsigned int *') but the argume
> nt has type 'CHAR16 *' (aka 'unsigned short *') [-Werror,-Wformat]
>                 printf("   Load Path: %S\n", text);
>                                       ~~     ^~~~
> /tmp/src/sys/boot/efi/boot1/boot1.c:485:35: error: format specifies type
> 'wchar_t *' (aka 'unsigned int *') but the argume
> nt has type 'CHAR16 *' (aka 'unsigned short *') [-Werror,-Wformat]
>                         printf("   Load Device: %S\n", text);
>                                                 ~~     ^~~~
>

Yea, this is just a command line flag. Will fix. Not sure why x86 doesn't
suffer from this, but it's a wchar_t size difference I'm sure.

Warner


> On Fri, Sep 1, 2017 at 1:32 AM, Warner Losh <imp at freebsd.org> wrote:
>
>> Author: imp
>> Date: Thu Aug 31 17:32:14 2017
>> New Revision: 323063
>> URL: https://svnweb.freebsd.org/changeset/base/323063
>>
>> Log:
>>   boot1.efi: print more info about where boot1.efi is loaded from
>>
>>   Print the device that boot1.efi was loaded from. Print the path as
>>   well (since it isn't included in DeviceHandle). Move block where we do
>>   this earlier so all the block handle code is now together.
>>
>>   Sponsored by: Netflix
>>
>> Modified:
>>   head/sys/boot/efi/boot1/boot1.c
>>
>> Modified: head/sys/boot/efi/boot1/boot1.c
>> ============================================================
>> ==================
>> --- head/sys/boot/efi/boot1/boot1.c     Thu Aug 31 17:32:09 2017
>> (r323062)
>> +++ head/sys/boot/efi/boot1/boot1.c     Thu Aug 31 17:32:14 2017
>> (r323063)
>> @@ -344,6 +344,7 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab)
>>         EFI_CONSOLE_CONTROL_PROTOCOL *ConsoleControl = NULL;
>>         SIMPLE_TEXT_OUTPUT_INTERFACE *conout = NULL;
>>         UINTN i, max_dim, best_mode, cols, rows, hsize, nhandles;
>> +       CHAR16 *text;
>>
>>         /* Basic initialization*/
>>         ST = Xsystab;
>> @@ -387,6 +388,27 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE
>> *Xsystab)
>>         }
>>         putchar('\n');
>>
>> +       /* Determine the devpath of our image so we can prefer it. */
>> +       status = BS->HandleProtocol(IH, &LoadedImageGUID, (VOID**)&img);
>> +       imgpath = NULL;
>> +       if (status == EFI_SUCCESS) {
>> +               text = efi_devpath_name(img->FilePath);
>> +               printf("   Load Path: %S\n", text);
>> +               efi_free_devpath_name(text);
>> +
>> +               status = BS->HandleProtocol(img->DeviceHandle,
>> &DevicePathGUID,
>> +                   (void **)&imgpath);
>> +               if (status != EFI_SUCCESS) {
>> +                       DPRINTF("Failed to get image DevicePath (%lu)\n",
>> +                           EFI_ERROR_CODE(status));
>> +               } else {
>> +                       text = efi_devpath_name(imgpath);
>> +                       printf("   Load Device: %S\n", text);
>> +                       efi_free_devpath_name(text);
>> +               }
>> +
>> +       }
>> +
>>         /* Get all the device handles */
>>         hsize = (UINTN)NUM_HANDLES_INIT * sizeof(EFI_HANDLE);
>>         if ((status = BS->AllocatePool(EfiLoaderData, hsize, (void
>> **)&handles))
>> @@ -421,24 +443,6 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE
>> *Xsystab)
>>         nhandles = hsize / sizeof(*handles);
>>         printf("   Probing %zu block devices...", nhandles);
>>         DPRINTF("\n");
>> -
>> -       /* Determine the devpath of our image so we can prefer it. */
>> -       status = BS->HandleProtocol(IH, &LoadedImageGUID, (VOID**)&img);
>> -       imgpath = NULL;
>> -       if (status == EFI_SUCCESS) {
>> -               status = BS->HandleProtocol(img->DeviceHandle,
>> &DevicePathGUID,
>> -                   (void **)&imgpath);
>> -               if (status != EFI_SUCCESS)
>> -                       DPRINTF("Failed to get image DevicePath (%lu)\n",
>> -                           EFI_ERROR_CODE(status));
>> -#ifdef EFI_DEBUG
>> -               {
>> -                       CHAR16 *text = efi_devpath_name(imgpath);
>> -                       DPRINTF("boot1 imagepath: %S\n", text);
>> -                       efi_free_devpath_name(text);
>> -               }
>> -#endif
>> -       }
>>
>>         for (i = 0; i < nhandles; i++)
>>                 probe_handle_status(handles[i], imgpath);
>> _______________________________________________
>> svn-src-head at freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/svn-src-head
>> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"
>>
>
>


More information about the svn-src-head mailing list