svn commit: r323063 - head/sys/boot/efi/boot1
Andrew Turner
andrew at fubar.geek.nz
Thu Sep 7 07:04:51 UTC 2017
And we need a constant wchar_t between loader and libstand as ld.bfd checks the attributes across these when linking.
There are a few options, the simplest is probably to make sys/boot and libstand all build with 16bit wchar_t, but it would need someone to check on wchar_t usage in other loader versions.
Andrew
> On 7 Sep 2017, at 07:25, Conrad Meyer <cem at freebsd.org> wrote:
>
> This seems to break world on ARM due to the size difference CHAR16 vs
> ARM wchat_t (currently 32-bit in loader, apparently).
>
> Best,
> Conrad
>
> On Thu, Aug 31, 2017 at 10: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);
>>
>
More information about the svn-src-head
mailing list