• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1//
2// libdl
3//
4cc_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
32cc_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
114cc_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
182ndk_library {
183    name: "libdl",
184    symbol_file: "libdl.map.txt",
185    first_version: "9",
186}
187
188llndk_library {
189    name: "libdl",
190    symbol_file: "libdl.map.txt",
191}
192
193genrule {
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
201genrule {
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
209genrule {
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
217genrule {
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