Re: [PATCH 6/8] libselinux: support ANDROID_HOST=1 on Mac

2016-11-01 Thread William Roberts
On the current tip of master, with clang 3.8.0 on my Ubuntu box I get:

avc_internal.c:105:25: error: cast from 'char *' to 'struct nlmsghdr
*' increases required alignment from 1 to 4 [-Werror,-Wcast-align]
struct nlmsghdr *nlh = (struct nlmsghdr *)buf;
   ^~
avc_internal.c:161:25: error: cast from 'char *' to 'struct nlmsghdr
*' increases required alignment from 1 to 4 [-Werror,-Wcast-align]
struct nlmsghdr *nlh = (struct nlmsghdr *)buf;


I'm not sure of the best way to handle that, considering we don't
unsure  that buf is bigger than a nlmsghdr...

I'll send a test patch out in bit.


On Tue, Nov 1, 2016 at 12:48 PM, William Roberts
 wrote:
> On Tue, Nov 1, 2016 at 11:06 AM, Nicolas Iooss  wrote:
>> Hello,
>>
>> After this commit, libselinux fails to build with clang on Linux:
>>
>>   clang-3.9: warning: argument unused during compilation: '-undefined
>> dynamic_lookup'
>>   /usr/bin/ld: unrecognised option: -install_name
>>   clang-3.9: error: linker command failed with exit code 1 (use -v to
>> see invocation)
>>
>> It seems clang 3.9.0 does not like "-undefined dynamic_lookup" and
>> binutils 2.27 does not know about "-install_name". Would it be possible
>> to put the lines which add these two options to the compiler command
>> lines into a "ifeq ($(OS), Darwin)" block, if they are indeed targeted
>> to MacOS?
>
> I'll look into this, likely needs to be Darwin and clang
>
>>
>> Thanks,
>> Nicolas
>>
>> On 17/10/16 22:24, william.c.robe...@intel.com wrote:
>>> From: William Roberts 
>>>
>>> To build on mac, first build libsepol with
>>> DISABLE_CIL=y and no DESTDIR set.
>>>
>>> Secondly, build libselinux with ANDROID_HOST=y
>>>
>>> This configuration can be used to test the Android
>>> host build on Mac.
>>>
>>> Signed-off-by: William Roberts 
>>> ---
>>>  libselinux/Makefile   | 10 ++
>>>  libselinux/src/Makefile   | 36 ++--
>>>  libselinux/utils/Makefile | 29 +
>>>  3 files changed, 57 insertions(+), 18 deletions(-)
>>>
>>> diff --git a/libselinux/Makefile b/libselinux/Makefile
>>> index baa0db3..ef971f4 100644
>>> --- a/libselinux/Makefile
>>> +++ b/libselinux/Makefile
>>> @@ -27,6 +27,16 @@ else
>>>  endif
>>>  export PCRE_CFLAGS PCRE_LDFLAGS
>>>
>>> +OS := $(shell uname)
>>> +export OS
>>> +
>>> +ifeq ($(shell $(CC) -v 2>&1 | grep "clang"),)
>>> +COMPILER := gcc
>>> +else
>>> +COMPILER := clang
>>> +endif
>>> +export COMPILER
>>> +
>>>  all install relabel clean distclean indent:
>>>   @for subdir in $(SUBDIRS); do \
>>>   (cd $$subdir && $(MAKE) $@) || exit 1; \
>>> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
>>> index 13501cd..7a1ae05 100644
>>> --- a/libselinux/src/Makefile
>>> +++ b/libselinux/src/Makefile
>>> @@ -48,23 +48,39 @@ OBJS= $(patsubst %.c,%.o,$(SRCS))
>>>  LOBJS= $(patsubst %.c,%.lo,$(SRCS))
>>>  CFLAGS ?= -O -Wall -W -Wundef -Wformat-y2k -Wformat-security -Winit-self 
>>> -Wmissing-include-dirs \
>>>-Wunused -Wunknown-pragmas -Wstrict-aliasing -Wshadow 
>>> -Wpointer-arith \
>>> -  -Wbad-function-cast -Wcast-align -Wwrite-strings -Wlogical-op 
>>> -Waggregate-return \
>>> +  -Wbad-function-cast -Wcast-align -Wwrite-strings 
>>> -Waggregate-return \
>>>-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes \
>>>-Wmissing-declarations -Wmissing-noreturn 
>>> -Wmissing-format-attribute \
>>>-Wredundant-decls -Wnested-externs -Winline -Winvalid-pch 
>>> -Wvolatile-register-var \
>>> -  -Wdisabled-optimization -Wbuiltin-macro-redefined 
>>> -Wpacked-bitfield-compat \
>>> -  -Wsync-nand -Wattributes -Wcoverage-mismatch -Wmultichar -Wcpp \
>>> +  -Wdisabled-optimization -Wbuiltin-macro-redefined \
>>> +  -Wattributes -Wmultichar \
>>>-Wdeprecated-declarations -Wdiv-by-zero -Wdouble-promotion 
>>> -Wendif-labels -Wextra \
>>> -  -Wformat-contains-nul -Wformat-extra-args -Wformat-zero-length 
>>> -Wformat=2 -Wmultichar \
>>> -  -Wnormalized=nfc -Woverflow -Wpointer-to-int-cast -Wpragmas 
>>> -Wsuggest-attribute=const \
>>> -  -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure 
>>> -Wtrampolines \
>>> -  -Wno-missing-field-initializers -Wno-sign-compare 
>>> -Wjump-misses-init \
>>> -  -Wno-format-nonliteral -Wframe-larger-than=$(MAX_STACK_SIZE) 
>>> -Wp,-D_FORTIFY_SOURCE=2 \
>>> +  -Wformat-extra-args -Wformat-zero-length -Wformat=2 -Wmultichar \
>>> +  -Woverflow -Wpointer-to-int-cast -Wpragmas \
>>> +  -Wno-missing-field-initializers -Wno-sign-compare \
>>> +  -Wno-format-nonliteral -Wframe-larger-than=$(MAX_STACK_SIZE) \
>>>-fstack-protector-all --param=ssp-buffer-size=4 -fexceptions \
>>>

Re: [PATCH 6/8] libselinux: support ANDROID_HOST=1 on Mac

2016-11-01 Thread William Roberts
On Tue, Nov 1, 2016 at 11:06 AM, Nicolas Iooss  wrote:
> Hello,
>
> After this commit, libselinux fails to build with clang on Linux:
>
>   clang-3.9: warning: argument unused during compilation: '-undefined
> dynamic_lookup'
>   /usr/bin/ld: unrecognised option: -install_name
>   clang-3.9: error: linker command failed with exit code 1 (use -v to
> see invocation)
>
> It seems clang 3.9.0 does not like "-undefined dynamic_lookup" and
> binutils 2.27 does not know about "-install_name". Would it be possible
> to put the lines which add these two options to the compiler command
> lines into a "ifeq ($(OS), Darwin)" block, if they are indeed targeted
> to MacOS?

I'll look into this, likely needs to be Darwin and clang

>
> Thanks,
> Nicolas
>
> On 17/10/16 22:24, william.c.robe...@intel.com wrote:
>> From: William Roberts 
>>
>> To build on mac, first build libsepol with
>> DISABLE_CIL=y and no DESTDIR set.
>>
>> Secondly, build libselinux with ANDROID_HOST=y
>>
>> This configuration can be used to test the Android
>> host build on Mac.
>>
>> Signed-off-by: William Roberts 
>> ---
>>  libselinux/Makefile   | 10 ++
>>  libselinux/src/Makefile   | 36 ++--
>>  libselinux/utils/Makefile | 29 +
>>  3 files changed, 57 insertions(+), 18 deletions(-)
>>
>> diff --git a/libselinux/Makefile b/libselinux/Makefile
>> index baa0db3..ef971f4 100644
>> --- a/libselinux/Makefile
>> +++ b/libselinux/Makefile
>> @@ -27,6 +27,16 @@ else
>>  endif
>>  export PCRE_CFLAGS PCRE_LDFLAGS
>>
>> +OS := $(shell uname)
>> +export OS
>> +
>> +ifeq ($(shell $(CC) -v 2>&1 | grep "clang"),)
>> +COMPILER := gcc
>> +else
>> +COMPILER := clang
>> +endif
>> +export COMPILER
>> +
>>  all install relabel clean distclean indent:
>>   @for subdir in $(SUBDIRS); do \
>>   (cd $$subdir && $(MAKE) $@) || exit 1; \
>> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
>> index 13501cd..7a1ae05 100644
>> --- a/libselinux/src/Makefile
>> +++ b/libselinux/src/Makefile
>> @@ -48,23 +48,39 @@ OBJS= $(patsubst %.c,%.o,$(SRCS))
>>  LOBJS= $(patsubst %.c,%.lo,$(SRCS))
>>  CFLAGS ?= -O -Wall -W -Wundef -Wformat-y2k -Wformat-security -Winit-self 
>> -Wmissing-include-dirs \
>>-Wunused -Wunknown-pragmas -Wstrict-aliasing -Wshadow 
>> -Wpointer-arith \
>> -  -Wbad-function-cast -Wcast-align -Wwrite-strings -Wlogical-op 
>> -Waggregate-return \
>> +  -Wbad-function-cast -Wcast-align -Wwrite-strings 
>> -Waggregate-return \
>>-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes \
>>-Wmissing-declarations -Wmissing-noreturn 
>> -Wmissing-format-attribute \
>>-Wredundant-decls -Wnested-externs -Winline -Winvalid-pch 
>> -Wvolatile-register-var \
>> -  -Wdisabled-optimization -Wbuiltin-macro-redefined 
>> -Wpacked-bitfield-compat \
>> -  -Wsync-nand -Wattributes -Wcoverage-mismatch -Wmultichar -Wcpp \
>> +  -Wdisabled-optimization -Wbuiltin-macro-redefined \
>> +  -Wattributes -Wmultichar \
>>-Wdeprecated-declarations -Wdiv-by-zero -Wdouble-promotion 
>> -Wendif-labels -Wextra \
>> -  -Wformat-contains-nul -Wformat-extra-args -Wformat-zero-length 
>> -Wformat=2 -Wmultichar \
>> -  -Wnormalized=nfc -Woverflow -Wpointer-to-int-cast -Wpragmas 
>> -Wsuggest-attribute=const \
>> -  -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure 
>> -Wtrampolines \
>> -  -Wno-missing-field-initializers -Wno-sign-compare 
>> -Wjump-misses-init \
>> -  -Wno-format-nonliteral -Wframe-larger-than=$(MAX_STACK_SIZE) 
>> -Wp,-D_FORTIFY_SOURCE=2 \
>> +  -Wformat-extra-args -Wformat-zero-length -Wformat=2 -Wmultichar \
>> +  -Woverflow -Wpointer-to-int-cast -Wpragmas \
>> +  -Wno-missing-field-initializers -Wno-sign-compare \
>> +  -Wno-format-nonliteral -Wframe-larger-than=$(MAX_STACK_SIZE) \
>>-fstack-protector-all --param=ssp-buffer-size=4 -fexceptions \
>>-fasynchronous-unwind-tables -fdiagnostics-show-option 
>> -funit-at-a-time \
>> -  -fipa-pure-const -Wno-suggest-attribute=pure 
>> -Wno-suggest-attribute=const \
>>-Werror -Wno-aggregate-return -Wno-redundant-decls
>>
>> +LD_SONAME_FLAGS=-soname,$(LIBSO),-z,defs,-z,relro
>> +
>> +ifeq ($(COMPILER), gcc)
>> +override CFLAGS += -fipa-pure-const -Wlogical-op -Wpacked-bitfield-compat 
>> -Wsync-nand \
>> + -Wcoverage-mismatch -Wcpp -Wformat-contains-nul -Wnormalized=nfc 
>> -Wsuggest-attribute=const \
>> + -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wtrampolines 
>> -Wjump-misses-init \
>> + -Wno-suggest-attribute=pure -Wno-suggest-attribute=const 
>> -Wp,-D_FORTIFY_SOURCE=2
>> +else
>> +override CFLAGS += -Wunused-command-line-argument
>> +override LDFLAGS += -L/opt/local/lib -undefined dynamic_lookup
>> 

Re: [PATCH 6/8] libselinux: support ANDROID_HOST=1 on Mac

2016-11-01 Thread Nicolas Iooss
Hello,

After this commit, libselinux fails to build with clang on Linux:

  clang-3.9: warning: argument unused during compilation: '-undefined
dynamic_lookup'
  /usr/bin/ld: unrecognised option: -install_name
  clang-3.9: error: linker command failed with exit code 1 (use -v to
see invocation)

It seems clang 3.9.0 does not like "-undefined dynamic_lookup" and
binutils 2.27 does not know about "-install_name". Would it be possible
to put the lines which add these two options to the compiler command
lines into a "ifeq ($(OS), Darwin)" block, if they are indeed targeted
to MacOS?

Thanks,
Nicolas

On 17/10/16 22:24, william.c.robe...@intel.com wrote:
> From: William Roberts 
> 
> To build on mac, first build libsepol with
> DISABLE_CIL=y and no DESTDIR set.
> 
> Secondly, build libselinux with ANDROID_HOST=y
> 
> This configuration can be used to test the Android
> host build on Mac.
> 
> Signed-off-by: William Roberts 
> ---
>  libselinux/Makefile   | 10 ++
>  libselinux/src/Makefile   | 36 ++--
>  libselinux/utils/Makefile | 29 +
>  3 files changed, 57 insertions(+), 18 deletions(-)
> 
> diff --git a/libselinux/Makefile b/libselinux/Makefile
> index baa0db3..ef971f4 100644
> --- a/libselinux/Makefile
> +++ b/libselinux/Makefile
> @@ -27,6 +27,16 @@ else
>  endif
>  export PCRE_CFLAGS PCRE_LDFLAGS
>  
> +OS := $(shell uname)
> +export OS
> +
> +ifeq ($(shell $(CC) -v 2>&1 | grep "clang"),)
> +COMPILER := gcc
> +else
> +COMPILER := clang
> +endif
> +export COMPILER
> +
>  all install relabel clean distclean indent:
>   @for subdir in $(SUBDIRS); do \
>   (cd $$subdir && $(MAKE) $@) || exit 1; \
> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
> index 13501cd..7a1ae05 100644
> --- a/libselinux/src/Makefile
> +++ b/libselinux/src/Makefile
> @@ -48,23 +48,39 @@ OBJS= $(patsubst %.c,%.o,$(SRCS))
>  LOBJS= $(patsubst %.c,%.lo,$(SRCS))
>  CFLAGS ?= -O -Wall -W -Wundef -Wformat-y2k -Wformat-security -Winit-self 
> -Wmissing-include-dirs \
>-Wunused -Wunknown-pragmas -Wstrict-aliasing -Wshadow 
> -Wpointer-arith \
> -  -Wbad-function-cast -Wcast-align -Wwrite-strings -Wlogical-op 
> -Waggregate-return \
> +  -Wbad-function-cast -Wcast-align -Wwrite-strings 
> -Waggregate-return \
>-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes \
>-Wmissing-declarations -Wmissing-noreturn 
> -Wmissing-format-attribute \
>-Wredundant-decls -Wnested-externs -Winline -Winvalid-pch 
> -Wvolatile-register-var \
> -  -Wdisabled-optimization -Wbuiltin-macro-redefined 
> -Wpacked-bitfield-compat \
> -  -Wsync-nand -Wattributes -Wcoverage-mismatch -Wmultichar -Wcpp \
> +  -Wdisabled-optimization -Wbuiltin-macro-redefined \
> +  -Wattributes -Wmultichar \
>-Wdeprecated-declarations -Wdiv-by-zero -Wdouble-promotion 
> -Wendif-labels -Wextra \
> -  -Wformat-contains-nul -Wformat-extra-args -Wformat-zero-length 
> -Wformat=2 -Wmultichar \
> -  -Wnormalized=nfc -Woverflow -Wpointer-to-int-cast -Wpragmas 
> -Wsuggest-attribute=const \
> -  -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure 
> -Wtrampolines \
> -  -Wno-missing-field-initializers -Wno-sign-compare 
> -Wjump-misses-init \
> -  -Wno-format-nonliteral -Wframe-larger-than=$(MAX_STACK_SIZE) 
> -Wp,-D_FORTIFY_SOURCE=2 \
> +  -Wformat-extra-args -Wformat-zero-length -Wformat=2 -Wmultichar \
> +  -Woverflow -Wpointer-to-int-cast -Wpragmas \
> +  -Wno-missing-field-initializers -Wno-sign-compare \
> +  -Wno-format-nonliteral -Wframe-larger-than=$(MAX_STACK_SIZE) \
>-fstack-protector-all --param=ssp-buffer-size=4 -fexceptions \
>-fasynchronous-unwind-tables -fdiagnostics-show-option 
> -funit-at-a-time \
> -  -fipa-pure-const -Wno-suggest-attribute=pure 
> -Wno-suggest-attribute=const \
>-Werror -Wno-aggregate-return -Wno-redundant-decls
>  
> +LD_SONAME_FLAGS=-soname,$(LIBSO),-z,defs,-z,relro
> +
> +ifeq ($(COMPILER), gcc)
> +override CFLAGS += -fipa-pure-const -Wlogical-op -Wpacked-bitfield-compat 
> -Wsync-nand \
> + -Wcoverage-mismatch -Wcpp -Wformat-contains-nul -Wnormalized=nfc 
> -Wsuggest-attribute=const \
> + -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wtrampolines 
> -Wjump-misses-init \
> + -Wno-suggest-attribute=pure -Wno-suggest-attribute=const 
> -Wp,-D_FORTIFY_SOURCE=2
> +else
> +override CFLAGS += -Wunused-command-line-argument
> +override LDFLAGS += -L/opt/local/lib -undefined dynamic_lookup
> +LD_SONAME_FLAGS=-install_name,$(LIBSO)
> +endif
> +
> +ifeq ($(OS), Darwin)
> +override CFLAGS += -I/opt/local/include
> +override LDFLAGS += -L/opt/local/lib -undefined dynamic_lookup
> +endif
> +
>  PCRE_LDFLAGS ?= -lpcre
>  
>  override CFLAGS += -I../include