Re: [PATCH 6/8] libselinux: support ANDROID_HOST=1 on Mac
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 Robertswrote: > 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
On Tue, Nov 1, 2016 at 11:06 AM, Nicolas Ioosswrote: > 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
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