Acked-by: Jeff Vander Stoep <jeffv@xxxxxxxxxx> On Thu, Apr 2, 2015 at 3:51 PM, Nick Kralevich <nnk@xxxxxxxxxx> wrote: > Acked-by: Nick Kralevich <nnk@xxxxxxxxxx> > > On Thu, Apr 2, 2015 at 8:58 AM, Stephen Smalley <sds@xxxxxxxxxxxxx> wrote: >> The Android build does not like the symbol versioning introduced >> by commit 8147bc7; the build fails with: >> host SharedLib: libsepol (out/host/linux-x86/obj/lib/libsepol.so) >> prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8//x86_64-linux/bin/ld: error: symbol cil_build_policydb has undefined version >> prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8//x86_64-linux/bin/ld: error: symbol cil_build_policydb has undefined version LIBSEPOL_1.1 >> clang: error: linker command failed with exit code 1 (use -v to see invocation) >> >> Omit the versioned symbols and simply use the current interfaces >> when building on Android. >> >> Commit 36f62b7 also broke the Android build by moving secilc out of >> libsepol, because the libsepol headers were not installed by the Android.mk >> file. >> >> Export the required libsepol headers for use by secilc and adjust secilc >> to pick them up from the right location on Android. >> >> Signed-off-by: Stephen Smalley <sds@xxxxxxxxxxxxx> >> --- >> libsepol/Android.mk | 2 ++ >> libsepol/cil/src/cil.c | 30 ++++++++++++++++++++++++++++++ >> secilc/Android.mk | 4 ++-- >> secilc/secilc.c | 4 ++++ >> 4 files changed, 38 insertions(+), 2 deletions(-) >> >> diff --git a/libsepol/Android.mk b/libsepol/Android.mk >> index 3e4700b..36f6d27 100644 >> --- a/libsepol/Android.mk >> +++ b/libsepol/Android.mk >> @@ -89,6 +89,8 @@ include $(CLEAR_VARS) >> >> LOCAL_MODULE := libsepol >> LOCAL_MODULE_TAGS := optional >> +LOCAL_COPY_HEADERS_TO := sepol >> +LOCAL_COPY_HEADERS := include/sepol/handle.h include/sepol/policydb.h cil/include/cil/cil.h >> LOCAL_C_INCLUDES := $(common_includes) >> LOCAL_CFLAGS := $(yacc_flags) $(common_cflags) >> LOCAL_SRC_FILES := $(common_src_files) $(cil_src_files) >> diff --git a/libsepol/cil/src/cil.c b/libsepol/cil/src/cil.c >> index 1594be6..b852628 100644 >> --- a/libsepol/cil/src/cil.c >> +++ b/libsepol/cil/src/cil.c >> @@ -51,6 +51,7 @@ >> #include "cil_policy.h" >> #include "cil_strpool.h" >> >> +#ifndef ANDROID >> asm(".symver cil_build_policydb_pdb, cil_build_policydb@"); >> asm(".symver cil_build_policydb_create_pdb, cil_build_policydb@@LIBSEPOL_1.1"); >> >> @@ -65,6 +66,7 @@ asm(".symver cil_selinuxusers_to_string_nopdb, cil_selinuxusers_to_string@@LIBSE >> >> asm(".symver cil_filecons_to_string_pdb, cil_filecons_to_string@"); >> asm(".symver cil_filecons_to_string_nopdb, cil_filecons_to_string@@LIBSEPOL_1.1"); >> +#endif >> >> int cil_sym_sizes[CIL_SYM_ARRAY_NUM][CIL_SYM_NUM] = { >> {64, 64, 64, 1 << 13, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, >> @@ -352,7 +354,11 @@ exit: >> return rc; >> } >> >> +#ifdef ANDROID >> +int cil_compile(struct cil_db *db) >> +#else >> int cil_compile_nopdb(struct cil_db *db) >> +#endif >> { >> int rc = SEPOL_ERR; >> >> @@ -396,6 +402,7 @@ exit: >> return rc; >> } >> >> +#ifndef ANDROID >> int cil_compile_pdb(struct cil_db *db, __attribute__((unused)) sepol_policydb_t *sepol_db) >> { >> return cil_compile_nopdb(db); >> @@ -415,8 +422,13 @@ int cil_build_policydb_pdb(cil_db_t *db, sepol_policydb_t *sepol_db) >> exit: >> return rc; >> } >> +#endif >> >> +#ifdef ANDROID >> +int cil_build_policydb(cil_db_t *db, sepol_policydb_t **sepol_db) >> +#else >> int cil_build_policydb_create_pdb(cil_db_t *db, sepol_policydb_t **sepol_db) >> +#endif >> { >> int rc; >> >> @@ -1104,7 +1116,11 @@ const char * cil_node_to_string(struct cil_tree_node *node) >> return "<unknown>"; >> } >> >> +#ifdef ANDROID >> +int cil_userprefixes_to_string(struct cil_db *db, char **out, size_t *size) >> +#else >> int cil_userprefixes_to_string_nopdb(struct cil_db *db, char **out, size_t *size) >> +#endif >> { >> int rc = SEPOL_ERR; >> size_t str_len = 0; >> @@ -1149,10 +1165,12 @@ exit: >> >> } >> >> +#ifndef ANDROID >> int cil_userprefixes_to_string_pdb(struct cil_db *db, __attribute__((unused)) sepol_policydb_t *sepol_db, char **out, size_t *size) >> { >> return cil_userprefixes_to_string_nopdb(db, out, size); >> } >> +#endif >> >> static int cil_cats_to_ebitmap(struct cil_cats *cats, struct ebitmap* cats_ebitmap) >> { >> @@ -1339,7 +1357,11 @@ static int __cil_level_to_string(struct cil_level *lvl, char *out) >> return str_tmp - out; >> } >> >> +#ifdef ANDROID >> +int cil_selinuxusers_to_string(struct cil_db *db, char **out, size_t *size) >> +#else >> int cil_selinuxusers_to_string_nopdb(struct cil_db *db, char **out, size_t *size) >> +#endif >> { >> size_t str_len = 0; >> int buf_pos = 0; >> @@ -1396,12 +1418,18 @@ int cil_selinuxusers_to_string_nopdb(struct cil_db *db, char **out, size_t *size >> return SEPOL_OK; >> } >> >> +#ifndef ANDROID >> int cil_selinuxusers_to_string_pdb(struct cil_db *db, __attribute__((unused)) sepol_policydb_t *sepol_db, char **out, size_t *size) >> { >> return cil_selinuxusers_to_string_nopdb(db, out, size); >> } >> +#endif >> >> +#ifdef ANDROID >> +int cil_filecons_to_string(struct cil_db *db, char **out, size_t *size) >> +#else >> int cil_filecons_to_string_nopdb(struct cil_db *db, char **out, size_t *size) >> +#endif >> { >> uint32_t i = 0; >> int buf_pos = 0; >> @@ -1519,10 +1547,12 @@ int cil_filecons_to_string_nopdb(struct cil_db *db, char **out, size_t *size) >> return SEPOL_OK; >> } >> >> +#ifndef ANDROID >> int cil_filecons_to_string_pdb(struct cil_db *db, __attribute__((unused)) sepol_policydb_t *sepol_db, char **out, size_t *size) >> { >> return cil_filecons_to_string_nopdb(db, out, size); >> } >> +#endif >> >> void cil_set_disable_dontaudit(struct cil_db *db, int disable_dontaudit) >> { >> diff --git a/secilc/Android.mk b/secilc/Android.mk >> index b80955c..ef584e7 100644 >> --- a/secilc/Android.mk >> +++ b/secilc/Android.mk >> @@ -24,8 +24,8 @@ LOCAL_MODULE := secilc >> LOCAL_MODULE_TAGS := optional >> LOCAL_C_INCLUDES := $(common_includes) >> LOCAL_CFLAGS := $(common_cflags) >> -LOCAL_SRC_FILES := ./secilc.c >> -LOCAL_SHARED_LIRARIES := libsepol >> +LOCAL_SRC_FILES := secilc.c >> +LOCAL_SHARED_LIBRARIES := libsepol >> LOCAL_MODULE_CLASS := EXECUTABLES >> >> include $(BUILD_HOST_EXECUTABLE) >> diff --git a/secilc/secilc.c b/secilc/secilc.c >> index 923151c..e98abe2 100644 >> --- a/secilc/secilc.c >> +++ b/secilc/secilc.c >> @@ -34,7 +34,11 @@ >> #include <getopt.h> >> #include <sys/stat.h> >> >> +#ifdef ANDROID >> +#include <sepol/cil.h> >> +#else >> #include <sepol/cil/cil.h> >> +#endif >> #include <sepol/policydb.h> >> >> void usage(char *prog) >> -- >> 1.9.3 >> > > > > -- > Nick Kralevich | Android Security | nnk@xxxxxxxxxx | 650.214.4037 _______________________________________________ Selinux mailing list Selinux@xxxxxxxxxxxxx To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx. To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.