Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Feb 2017 09:49:27 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        Ian Lepore <ian@freebsd.org>
Cc:        Toomas Soome <tsoome@freebsd.org>, src-committers <src-committers@freebsd.org>,  "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>,  "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r313166 - head/sys/boot/efi/libefi
Message-ID:  <CANCZdfqKL9C5=8WzDe55=HZuBpCVygcL=_867gaR0=gb4yip5g@mail.gmail.com>
In-Reply-To: <1486140447.3017.189.camel@freebsd.org>
References:  <201702031639.v13GdAXQ074031@repo.freebsd.org> <1486140447.3017.189.camel@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Feb 3, 2017 at 9:47 AM, Ian Lepore <ian@freebsd.org> wrote:
> On Fri, 2017-02-03 at 16:39 +0000, Toomas Soome wrote:
>> Author: tsoome
>> Date: Fri Feb  3 16:39:10 2017
>> New Revision: 313166
>> URL: https://svnweb.freebsd.org/changeset/base/313166
>>
>> Log:
>>   loader: libefi/env.c warnings in arm build
>>
>>   The arm build has revealed some of the warnings, the fix for CHAR16
>>   warning is to switch the warning off for env.c (same as for
>> efinet.c).
>>
>
> How is disabling the warning instead of just fixing it the right thing
> to do?  I think disabling a printf format warning is never the right
> thing to do, it just turns a compile warning into a runtime failure.

Because clang's understanding of %S in the bootloader doesn't match
how it's actually used and there's no casting that will fix that.

Warner

> -- Ian
>
>>   For error code we need to use macro.
>>
>>   Reported by:        gjb
>>   Reviewed by:        imp
>>   Approved by:        imp (mentor)
>>   Differential Revision:      https://reviews.freebsd.org/D9422
>>
>> Modified:
>>   head/sys/boot/efi/libefi/Makefile
>>   head/sys/boot/efi/libefi/env.c
>>
>> Modified: head/sys/boot/efi/libefi/Makefile
>> =====================================================================
>> =========
>> --- head/sys/boot/efi/libefi/Makefile Fri Feb  3 16:36:14 2017
>>       (r313165)
>> +++ head/sys/boot/efi/libefi/Makefile Fri Feb  3 16:39:10 2017
>>       (r313166)
>> @@ -26,6 +26,7 @@ SRCS+=      time_event.c
>>  # of a short. There's no good cast to use here so just ignore the
>>  # warnings for now.
>>  CWARNFLAGS.efinet.c+=        -Wno-format
>> +CWARNFLAGS.env.c+=   -Wno-format
>>
>>  .if ${MACHINE_CPUARCH} == "aarch64"
>>  CFLAGS+=     -msoft-float -mgeneral-regs-only
>>
>> Modified: head/sys/boot/efi/libefi/env.c
>> =====================================================================
>> =========
>> --- head/sys/boot/efi/libefi/env.c    Fri Feb  3 16:36:14 2017
>> (r313165)
>> +++ head/sys/boot/efi/libefi/env.c    Fri Feb  3 16:39:10 2017
>> (r313166)
>> @@ -94,14 +94,16 @@ efi_print_var(CHAR16 *varnamearg, EFI_GU
>>       status = RS->GetVariable(varnamearg, matchguid, &attr,
>>           &datasz, NULL);
>>       if (status != EFI_BUFFER_TOO_SMALL) {
>> -             printf("Can't get the variable: error %#lx\n",
>> status);
>> +             printf("Can't get the variable: error %#lx\n",
>> +                 EFI_ERROR_CODE(status));
>>               return (CMD_ERROR);
>>       }
>>       data = malloc(datasz);
>>       status = RS->GetVariable(varnamearg, matchguid, &attr,
>>           &datasz, data);
>>       if (status != EFI_SUCCESS) {
>> -             printf("Can't get the variable: error %#lx\n",
>> status);
>> +             printf("Can't get the variable: error %#lx\n",
>> +                 EFI_ERROR_CODE(status));
>>               return (CMD_ERROR);
>>       }
>>       uuid_to_string((uuid_t *)matchguid, &str, &uuid_status);
>>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfqKL9C5=8WzDe55=HZuBpCVygcL=_867gaR0=gb4yip5g>