Home | History | Annotate | Download | only in libdl
      1 //
      2 // libdl
      3 //
      4 cc_library {
      5 
      6     // NOTE: --exclude-libs=libgcc.a makes sure that any symbols libdl.so pulls from
      7     // libgcc.a are made static to libdl.so.  This in turn ensures that libraries that
      8     // a) pull symbols from libgcc.a and b) depend on libdl.so will not rely on libdl.so
      9     // to provide those symbols, but will instead pull them from libgcc.a.  Specifically,
     10     // we use this property to make sure libc.so has its own copy of the code from
     11     // libgcc.a it uses.
     12     //
     13     // DO NOT REMOVE --exclude-libs!
     14 
     15     ldflags: ["-Wl,--exclude-libs=libgcc.a"],
     16 
     17     // for x86, exclude libgcc_eh.a for the same reasons as above
     18     arch: {
     19         arm: {
     20             version_script: "libdl.arm.map",
     21         },
     22         arm64: {
     23             version_script: "libdl.arm64.map",
     24         },
     25         mips: {
     26             version_script: "libdl.mips.map",
     27         },
     28         mips64: {
     29             version_script: "libdl.mips64.map",
     30         },
     31         x86: {
     32             ldflags: ["-Wl,--exclude-libs=libgcc_eh.a"],
     33             version_script: "libdl.x86.map",
     34         },
     35         x86_64: {
     36             ldflags: ["-Wl,--exclude-libs=libgcc_eh.a"],
     37             version_script: "libdl.x86_64.map",
     38         },
     39     },
     40     srcs: ["libdl.c"],
     41     cflags: [
     42         "-Wall",
     43         "-Wextra",
     44         "-Wunused",
     45         "-Werror",
     46     ],
     47     stl: "none",
     48 
     49     name: "libdl",
     50 
     51     // NOTE: libdl needs __aeabi_unwind_cpp_pr0 from libgcc.a but libgcc.a needs a
     52     // few symbols from libc. Using --no-undefined here results in having to link
     53     // against libc creating a circular dependency which is removed and we end up
     54     // with missing symbols. Since this library is just a bunch of stubs, we set
     55     // LOCAL_ALLOW_UNDEFINED_SYMBOLS to remove --no-undefined from the linker flags.
     56     allow_undefined_symbols: true,
     57     system_shared_libs: [],
     58 
     59     sanitize: ["never"],
     60 }
     61