Re: [PATCH v3] libsepol, secilc: Fix build for Android

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux