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]"