34b6754f70
The tiny performance cost might as well be accepted now because this will be needed for Android Q. It's also quite possible that some apps make use of the features based on this including malloc_info.
60 lines
1.4 KiB
Plaintext
60 lines
1.4 KiB
Plaintext
common_cflags = [
|
|
"-O3",
|
|
//"-flto",
|
|
"-fPIC",
|
|
"-fvisibility=hidden",
|
|
//"-fno-plt",
|
|
"-pipe",
|
|
"-Wall",
|
|
"-Wextra",
|
|
"-Wcast-align",
|
|
"-Wcast-qual",
|
|
"-Wwrite-strings",
|
|
"-DH_MALLOC_PREFIX",
|
|
"-DZERO_ON_FREE=true",
|
|
"-DWRITE_AFTER_FREE_CHECK=true",
|
|
"-DSLOT_RANDOMIZE=true",
|
|
"-DSLAB_CANARY=true",
|
|
"-DSLAB_QUARANTINE_RANDOM_LENGTH=1",
|
|
"-DSLAB_QUARANTINE_QUEUE_LENGTH=1",
|
|
"-DCONFIG_EXTENDED_SIZE_CLASSES=true",
|
|
"-DCONFIG_LARGE_SIZE_CLASSES=true",
|
|
"-DGUARD_SLABS_INTERVAL=1",
|
|
"-DGUARD_SIZE_DIVISOR=2",
|
|
"-DREGION_QUARANTINE_RANDOM_LENGTH=128",
|
|
"-DREGION_QUARANTINE_QUEUE_LENGTH=1024",
|
|
"-DREGION_QUARANTINE_SKIP_THRESHOLD=33554432", // 32MiB
|
|
"-DFREE_SLABS_QUARANTINE_RANDOM_LENGTH=32",
|
|
"-DCONFIG_CLASS_REGION_SIZE=1073741824", // 1GiB
|
|
"-DN_ARENA=1",
|
|
"-DCONFIG_STATS=true",
|
|
]
|
|
|
|
cc_defaults {
|
|
name: "hardened_malloc_defaults",
|
|
defaults: ["linux_bionic_supported"],
|
|
cflags: common_cflags,
|
|
conlyflags: ["-std=c11", "-Wmissing-prototypes"],
|
|
stl: "none",
|
|
}
|
|
|
|
lib_src_files = [
|
|
"chacha.c",
|
|
"h_malloc.c",
|
|
"memory.c",
|
|
"pages.c",
|
|
"random.c",
|
|
"util.c",
|
|
]
|
|
|
|
cc_library_static {
|
|
name: "libhardened_malloc",
|
|
defaults: ["hardened_malloc_defaults"],
|
|
srcs: lib_src_files,
|
|
product_variables: {
|
|
debuggable: {
|
|
cflags: ["-DLABEL_MEMORY"],
|
|
},
|
|
},
|
|
}
|