Home | History | Annotate | Download | only in libdl
      1 //
      2 // libdl
      3 //
      4 cc_library_static {
      5     name: "libdl_static",
      6     defaults: ["linux_bionic_supported"],
      7     recovery_available: true,
      8 
      9     srcs: [
     10         "libdl.cpp",
     11         "libdl_cfi.cpp",
     12     ],
     13 
     14     cflags: [
     15         "-Wall",
     16         "-Wextra",
     17         "-Wunused",
     18         "-Werror",
     19     ],
     20 
     21     // For private/CFIShadow.h.
     22     include_dirs: ["bionic/libc"],
     23 
     24     stl: "none",
     25     system_shared_libs: [],
     26 
     27     sanitize: {
     28         never: true,
     29     },
     30 }
     31 
     32 cc_library {
     33     name: "libdl",
     34     recovery_available: true,
     35     static_ndk_lib: true,
     36 
     37     defaults: ["linux_bionic_supported"],
     38 
     39     // NOTE: --exclude-libs=libgcc.a makes sure that any symbols libdl.so pulls from
     40     // libgcc.a are made static to libdl.so.  This in turn ensures that libraries that
     41     // a) pull symbols from libgcc.a and b) depend on libdl.so will not rely on libdl.so
     42     // to provide those symbols, but will instead pull them from libgcc.a.  Specifically,
     43     // we use this property to make sure libc.so has its own copy of the code from
     44     // libgcc.a it uses.
     45     //
     46     // DO NOT REMOVE --exclude-libs!
     47 
     48     ldflags: [
     49         "-Wl,--exclude-libs=libgcc.a",
     50         "-Wl,--exclude-libs=libgcc_stripped.a",
     51         "-Wl,--exclude-libs=libclang_rt.builtins-arm-android.a",
     52         "-Wl,--exclude-libs=libclang_rt.builtins-aarch64-android.a",
     53         "-Wl,--exclude-libs=libclang_rt.builtins-x86-android.a",
     54         "-Wl,--exclude-libs=libclang_rt.builtins-x86_64-android.a",
     55     ],
     56 
     57     // for x86, exclude libgcc_eh.a for the same reasons as above
     58     arch: {
     59         arm: {
     60             version_script: ":libdl.arm.map",
     61             pack_relocations: false,
     62             ldflags: ["-Wl,--hash-style=both"],
     63         },
     64         arm64: {
     65             version_script: ":libdl.arm64.map",
     66         },
     67         x86: {
     68             pack_relocations: false,
     69             ldflags: [
     70                 "-Wl,--exclude-libs=libgcc_eh.a",
     71                 "-Wl,--hash-style=both",
     72             ],
     73             version_script: ":libdl.x86.map",
     74         },
     75         x86_64: {
     76             ldflags: ["-Wl,--exclude-libs=libgcc_eh.a"],
     77             version_script: ":libdl.x86_64.map",
     78         },
     79     },
     80     shared: {
     81         whole_static_libs: ["libdl_static"],
     82     },
     83     static: {
     84         srcs: ["libdl_static.cpp"],
     85     },
     86     cflags: [
     87         "-Wall",
     88         "-Wextra",
     89         "-Wunused",
     90         "-Werror",
     91     ],
     92     stl: "none",
     93 
     94     nocrt: true,
     95     system_shared_libs: [],
     96 
     97     // Opt out of native_coverage when opting out of system_shared_libs
     98     native_coverage: false,
     99 
    100     // This is placeholder library the actual implementation is (currently)
    101     // provided by the linker.
    102     shared_libs: ["ld-android"],
    103 
    104     sanitize: {
    105         never: true,
    106     },
    107 
    108     stubs: {
    109         symbol_file: "libdl.map.txt",
    110         versions: ["10000"],
    111     },
    112 }
    113 
    114 cc_library {
    115     name: "libdl_android",
    116 
    117     defaults: ["linux_bionic_supported"],
    118     recovery_available: true,
    119 
    120     // NOTE: --exclude-libs=libgcc.a makes sure that any symbols libdl.so pulls from
    121     // libgcc.a are made static to libdl.so.  This in turn ensures that libraries that
    122     // a) pull symbols from libgcc.a and b) depend on libdl.so will not rely on libdl.so
    123     // to provide those symbols, but will instead pull them from libgcc.a.  Specifically,
    124     // we use this property to make sure libc.so has its own copy of the code from
    125     // libgcc.a it uses.
    126     //
    127     // DO NOT REMOVE --exclude-libs!
    128 
    129     ldflags: [
    130         "-Wl,--exclude-libs=libgcc.a",
    131         "-Wl,--exclude-libs=libgcc_stripped.a",
    132         "-Wl,--exclude-libs=libclang_rt.builtins-arm-android.a",
    133         "-Wl,--exclude-libs=libclang_rt.builtins-aarch64-android.a",
    134         "-Wl,--exclude-libs=libclang_rt.builtins-x86-android.a",
    135         "-Wl,--exclude-libs=libclang_rt.builtins-x86_64-android.a",
    136     ],
    137 
    138     // for x86, exclude libgcc_eh.a for the same reasons as above
    139     arch: {
    140         x86: {
    141             ldflags: [
    142                 "-Wl,--exclude-libs=libgcc_eh.a",
    143             ],
    144         },
    145         x86_64: {
    146             ldflags: ["-Wl,--exclude-libs=libgcc_eh.a"],
    147         },
    148     },
    149 
    150     srcs: [ "libdl_android.cpp" ],
    151     version_script: "libdl_android.map.txt",
    152 
    153     cflags: [
    154         "-Wall",
    155         "-Wextra",
    156         "-Wunused",
    157         "-Werror",
    158     ],
    159 
    160     stl: "none",
    161 
    162     nocrt: true,
    163     system_shared_libs: [],
    164 
    165     // Opt out of native_coverage when opting out of system_shared_libs
    166     native_coverage: false,
    167 
    168     // This is placeholder library the actual implementation is (currently)
    169     // provided by the linker.
    170     shared_libs: ["ld-android"],
    171 
    172     sanitize: {
    173         never: true,
    174     },
    175 
    176     stubs: {
    177         symbol_file: "libdl_android.map.txt",
    178         versions: ["10000"],
    179     },
    180 }
    181 
    182 ndk_library {
    183     name: "libdl",
    184     symbol_file: "libdl.map.txt",
    185     first_version: "9",
    186 }
    187 
    188 llndk_library {
    189     name: "libdl",
    190     symbol_file: "libdl.map.txt",
    191 }
    192 
    193 genrule {
    194     name: "libdl.arm.map",
    195     out: ["libdl.arm.map"],
    196     srcs: ["libdl.map.txt"],
    197     tool_files: [":bionic-generate-version-script"],
    198     cmd: "$(location :bionic-generate-version-script) arm $(in) $(out)",
    199 }
    200 
    201 genrule {
    202     name: "libdl.arm64.map",
    203     out: ["libdl.arm64.map"],
    204     srcs: ["libdl.map.txt"],
    205     tool_files: [":bionic-generate-version-script"],
    206     cmd: "$(location :bionic-generate-version-script) arm64 $(in) $(out)",
    207 }
    208 
    209 genrule {
    210     name: "libdl.x86.map",
    211     out: ["libdl.x86.map"],
    212     srcs: ["libdl.map.txt"],
    213     tool_files: [":bionic-generate-version-script"],
    214     cmd: "$(location :bionic-generate-version-script) x86 $(in) $(out)",
    215 }
    216 
    217 genrule {
    218     name: "libdl.x86_64.map",
    219     out: ["libdl.x86_64.map"],
    220     srcs: ["libdl.map.txt"],
    221     tool_files: [":bionic-generate-version-script"],
    222     cmd: "$(location :bionic-generate-version-script) x86_64 $(in) $(out)",
    223 }
    224