On 14/01/2016 16:53, Warner Losh wrote:


On Thu, Jan 14, 2016 at 2:47 AM, NGie Cooper <[email protected] <mailto:[email protected]>> wrote:


    > On Jan 14, 2016, at 01:27, NGie Cooper <[email protected]
    <mailto:[email protected]>> wrote:
    >
    >
    >> On Jan 14, 2016, at 01:22, Steven Hartland <[email protected]> wrote:
    >>
    >> Author: smh
    >> Date: Thu Jan 14 09:22:01 2016
    >> New Revision: 293903
    >> URL: https://svnweb.freebsd.org/changeset/base/293903
    >>
    >> Log:
    >> Fix GCC warnings causing build failure after r293724
    >>
    >> Disable some compiler warnings for GCC (non-standard compiler)
    fixing
    >> build failures introduced by r293724, which enabled WARNS in
    the EFI boot
    >> code, when compiling with none standard compiler (GCC).
    >
    > Disabling warnings is wrong. Here’s how arm could be fixed:
    >
    > $ svn diff sys/boot/
    > Index: sys/boot/common/bootstrap.h
    > ===================================================================
    > --- sys/boot/common/bootstrap.h (revision 293877)
    > +++ sys/boot/common/bootstrap.h (working copy)
    > @@ -32,6 +32,7 @@
    > #include <sys/types.h>
    > #include <sys/queue.h>
    > #include <sys/linker_set.h>
    > +#include <time.h>
    >
    > /*
    >  * Generic device specifier; architecture-dependant
    > @@ -332,12 +333,8 @@
    > extern struct arch_switch archsw;
    >
    > /* This must be provided by the MD code, but should it be in the
    archsw? */
    > -void   delay(int delay);
    > -
    > void   dev_cleanup(void);
    >
    > -time_t time(time_t *tloc);
    > -
    > #ifndef CTASSERT                /* Allow lint to override */
    > #define CTASSERT(x)             _CTASSERT(x, __LINE__)
    > #define _CTASSERT(x, y)         __CTASSERT(x, y)
    > Index: sys/boot/efi/include/efiapi.h
    > ===================================================================
    > --- sys/boot/efi/include/efiapi.h       (revision 293877)
    > +++ sys/boot/efi/include/efiapi.h       (working copy)
    > @@ -532,6 +532,7 @@
    > typedef
    > EFI_STATUS
    > (EFIAPI *EFI_RESERVED_SERVICE) (
    > +    VOID
    >     );
    >
    > typedef
    >
    > amd64 is a bit trickier:
    >
    >
    /scratch/tmp/ngie/svn/sys/boot/efi/libefi/../include/efigop.h:75:
    warning: 'ms_abi' attribute directive ignored
    >
    > I didn’t dig into why this is happening [yet], other than there
    maybe being MS extensions involved?
    >
    > Thanks,
    > -NGie

    This might fix amd64:

    Index:
    /scratch/tmp/ngie/svn/sys/boot/efi/libefi/../include/amd64/efibind.h
    ===================================================================
    ---
    /scratch/tmp/ngie/svn/sys/boot/efi/libefi/../include/amd64/efibind.h
          (revision 293877)
    +++
    /scratch/tmp/ngie/svn/sys/boot/efi/libefi/../include/amd64/efibind.h
          (working copy)
    @@ -160,8 +160,10 @@
     //

     #ifdef __amd64__
    +#if defined(__clang__) && (__clang_major__ >= 3 &&
    __clang_minor__ >= 5)
     #define        EFIAPI  __attribute__((ms_abi))
     #endif
    +#endif

     #ifndef EFIAPI                  // Forces EFI calling conventions
    reguardless of compiler options
         #ifdef _MSC_EXTENSIONS



Sure this fix is right? If you aren't marking the ABI correctly, how could this possibly work?

Warner
No I don't think it is, Andrew's fix is the most appropriate (disable building of all EFI on none supported platforms).

Currently I intend to backout 293903 and apply this change instead. I'm just waiting on a full tinderbox under GCC to finish.

    Regards
    Steve
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to