OSDN Git Service

Loosen _POSIX_THREAD_PROCESS_SHARED test.
[android-x86/bionic.git] / linker / Android.bp
1 cc_library_static {
2     name: "liblinker_malloc",
3     defaults: ["linux_bionic_supported"],
4
5     srcs: [
6         "linker_allocator.cpp",
7         "linker_memory.cpp",
8     ],
9
10     // We need to access Bionic private headers in the linker.
11     include_dirs: ["bionic/libc"],
12
13     static_libs: ["libasync_safe"],
14 }
15
16 cc_binary {
17     defaults: ["linux_bionic_supported"],
18     srcs: [
19         "dlfcn.cpp",
20         "linker.cpp",
21         "linker_block_allocator.cpp",
22         "linker_dlwarning.cpp",
23         "linker_cfi.cpp",
24         "linker_config.cpp",
25         "linker_gdb_support.cpp",
26         "linker_globals.cpp",
27         "linker_libc_support.c",
28         "linker_libcxx_support.cpp",
29         "linker_main.cpp",
30         "linker_namespaces.cpp",
31         "linker_logger.cpp",
32         "linker_mapped_file_fragment.cpp",
33         "linker_phdr.cpp",
34         "linker_sdk_versions.cpp",
35         "linker_soinfo.cpp",
36         "linker_utils.cpp",
37         "rt.cpp",
38     ],
39
40     arch: {
41         arm: {
42             srcs: ["arch/arm/begin.S"],
43
44             cflags: ["-D__work_around_b_24465209__"],
45         },
46         arm64: {
47             srcs: ["arch/arm64/begin.S"],
48         },
49         x86: {
50             srcs: ["arch/x86/begin.c"],
51
52             cflags: ["-D__work_around_b_24465209__"],
53         },
54         x86_64: {
55             srcs: ["arch/x86_64/begin.S"],
56         },
57         mips: {
58             srcs: [
59                 "arch/mips/begin.S",
60                 "linker_mips.cpp",
61             ],
62         },
63         mips64: {
64             srcs: [
65                 "arch/mips64/begin.S",
66                 "linker_mips.cpp",
67             ],
68         },
69     },
70
71     // We need to access Bionic private headers in the linker.
72     include_dirs: ["bionic/libc"],
73
74     // -shared is used to overwrite the -Bstatic and -static
75     // flags triggered by LOCAL_FORCE_STATIC_EXECUTABLE.
76     // This dynamic linker is actually a shared object linked with static libraries.
77     ldflags: [
78         "-shared",
79         "-Wl,-Bsymbolic",
80         "-Wl,--exclude-libs,ALL",
81     ],
82
83     cflags: [
84         "-fno-stack-protector",
85         "-Wstrict-overflow=5",
86         "-fvisibility=hidden",
87         "-Wall",
88         "-Wextra",
89         "-Wunused",
90         "-Werror",
91     ],
92
93     // TODO: split out the asflags.
94     asflags: [
95         "-fno-stack-protector",
96         "-Wstrict-overflow=5",
97         "-fvisibility=hidden",
98         "-Wall",
99         "-Wextra",
100         "-Wunused",
101         "-Werror",
102     ],
103
104     cppflags: ["-Wold-style-cast"],
105
106     // we are going to link libc++_static manually because
107     // when stl is not set to "none" build system adds libdl
108     // to the list of static libraries which needs to be
109     // avoided in the case of building loader.
110     stl: "none",
111
112     // we don't want crtbegin.o (because we have begin.o), so unset it
113     // just for this module
114     nocrt: true,
115
116     static_libs: [
117         "libc_nomalloc",
118         "libm",
119         "libziparchive",
120         "libutils",
121         "libbase",
122         "libz",
123
124         "libdebuggerd_handler_fallback",
125
126         "liblog",
127         "libc++_static",
128
129         // Important: The liblinker_malloc should be the last library in the list
130         // to overwrite any other malloc implementations by other static libraries.
131         "liblinker_malloc"
132     ],
133     static_executable: true,
134
135     name: "linker",
136     symlinks: ["linker_asan"],
137     multilib: {
138         lib64: {
139             suffix: "64",
140         },
141     },
142     target: {
143         android: {
144             static_libs: ["libdebuggerd_client"],
145         },
146         android64: {
147             cflags: ["-DTARGET_IS_64_BIT"],
148         },
149         linux_bionic: {
150             cflags: ["-DTARGET_IS_64_BIT"],
151         },
152     },
153     compile_multilib: "both",
154
155     // Leave the symbols in the shared library so that stack unwinders can produce
156     // meaningful name resolution.
157     strip: {
158         keep_symbols: true,
159     },
160
161     // Insert an extra objcopy step to add prefix to symbols. This is needed to prevent gdb
162     // looking up symbols in the linker by mistake.
163     prefix_symbols: "__dl_",
164 }