[FFmpeg-devel] [PATCH] mips/asmdefs: use asm/sgidefs.h header on linux

James Cowgill james410 at cowgill.org.uk
Sat Mar 7 19:08:53 CET 2015


On Sat, 2015-03-07 at 18:06 +0100, wm4 wrote:
> On Sat,  7 Mar 2015 10:13:23 +0000
> James Cowgill <james410 at cowgill.org.uk> wrote:
> 
> > Unfortunately android < api 21 (lollipop) doesn't have the sgidefs.h header,
> > but the linux kernel does in asm/sgidefs.h. So use that header if we can.
> > 
> > Change _ABI64 to _MIPS_SIM_ABI64 which is defined in both headers.
> 
> What does this header contain? Requiring kernel headers for anything
> but Linux specific syscalls or for building kernel modules is incredibly
> broken.

Yes the correct header on mips is just 'sgidefs.h' and while glibc has
provided it for years, android bionic only added it for lollipop.

This is the kernel header:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/include/uapi/asm/sgidefs.h

The one provided by glibc has a little more stuff but we don't need it.
_MIPS_SIM is defined by GCC (and some older mips compilers) to be equal
to one of the _MIPS_SIM_* constants depending on which ABI is selected.

GCC and Clang also define _ABI* themselves (as well as being defined in
the glibc version of the header) for the current ABI, so I suppose using
this without including anything might work if we don't care about other
compilers:

#if defined(_ABI64) && _MIPS_SIM == _ABI64

> And __linux__ is of course completely out of the question. Just because
> it's Linux, the libc doesn't necessarily provide kernel headers.

Ok

James



More information about the ffmpeg-devel mailing list