82 lines
3.2 KiB
Text
82 lines
3.2 KiB
Text
# Makefile for hardened_malloc UOS static library (T8-1.2e)
|
|
#
|
|
# Builds a static library (libhardened_malloc_uos.a) that can be linked
|
|
# directly into a UOS musl personality binary.
|
|
#
|
|
# Uses the UOS memory backend (memory_uos.c) instead of Linux syscalls.
|
|
|
|
CROSS_COMPILE ?= aarch64-linux-gnu-
|
|
CC := $(CROSS_COMPILE)gcc
|
|
AR := $(CROSS_COMPILE)ar
|
|
|
|
VARIANT := default
|
|
CONFIG_FILE := config/$(VARIANT).mk
|
|
include config/$(VARIANT).mk
|
|
|
|
OUT := out-uos
|
|
|
|
CPPFLAGS := -D_GNU_SOURCE -I include -I include/uos_freestanding
|
|
CPPFLAGS += \
|
|
-DCONFIG_SEAL_METADATA=$(CONFIG_SEAL_METADATA) \
|
|
-DZERO_ON_FREE=$(CONFIG_ZERO_ON_FREE) \
|
|
-DWRITE_AFTER_FREE_CHECK=$(CONFIG_WRITE_AFTER_FREE_CHECK) \
|
|
-DSLOT_RANDOMIZE=$(CONFIG_SLOT_RANDOMIZE) \
|
|
-DSLAB_CANARY=$(CONFIG_SLAB_CANARY) \
|
|
-DSLAB_QUARANTINE_RANDOM_LENGTH=$(CONFIG_SLAB_QUARANTINE_RANDOM_LENGTH) \
|
|
-DSLAB_QUARANTINE_QUEUE_LENGTH=$(CONFIG_SLAB_QUARANTINE_QUEUE_LENGTH) \
|
|
-DCONFIG_EXTENDED_SIZE_CLASSES=$(CONFIG_EXTENDED_SIZE_CLASSES) \
|
|
-DCONFIG_LARGE_SIZE_CLASSES=$(CONFIG_LARGE_SIZE_CLASSES) \
|
|
-DGUARD_SLABS_INTERVAL=$(CONFIG_GUARD_SLABS_INTERVAL) \
|
|
-DGUARD_SIZE_DIVISOR=$(CONFIG_GUARD_SIZE_DIVISOR) \
|
|
-DREGION_QUARANTINE_RANDOM_LENGTH=$(CONFIG_REGION_QUARANTINE_RANDOM_LENGTH) \
|
|
-DREGION_QUARANTINE_QUEUE_LENGTH=$(CONFIG_REGION_QUARANTINE_QUEUE_LENGTH) \
|
|
-DREGION_QUARANTINE_SKIP_THRESHOLD=$(CONFIG_REGION_QUARANTINE_SKIP_THRESHOLD) \
|
|
-DFREE_SLABS_QUARANTINE_RANDOM_LENGTH=$(CONFIG_FREE_SLABS_QUARANTINE_RANDOM_LENGTH) \
|
|
-DCONFIG_CLASS_REGION_SIZE=$(CONFIG_CLASS_REGION_SIZE) \
|
|
-DN_ARENA=$(CONFIG_N_ARENA) \
|
|
-DCONFIG_STATS=$(CONFIG_STATS) \
|
|
-DCONFIG_SELF_INIT=$(CONFIG_SELF_INIT) \
|
|
-DCONFIG_LABEL_MEMORY=$(CONFIG_LABEL_MEMORY)
|
|
|
|
CFLAGS := -mcpu=cortex-a53 -ffreestanding -fno-builtin -fno-stack-protector \
|
|
-fno-tree-vectorize -fno-strict-aliasing -nostdlib -O2 -Wall -Wextra \
|
|
-fno-omit-frame-pointer -std=c23 -fPIC -fvisibility=hidden \
|
|
-fno-plt -fstack-clash-protection -fstack-protector-strong \
|
|
-Wcast-align=strict -Wcast-qual -Wwrite-strings -Wundef \
|
|
-Wmissing-prototypes -Wstrict-prototypes
|
|
|
|
# UOS-specific sources: use memory_uos.c instead of memory.c
|
|
SOURCES := chacha.c h_malloc.c memory_uos.c pages.c random.c util.c
|
|
OBJECTS := $(SOURCES:.c=.o)
|
|
OBJECTS := $(addprefix $(OUT)/,$(OBJECTS))
|
|
|
|
all: $(OUT)/libhardened_malloc_uos.a
|
|
|
|
$(OUT)/libhardened_malloc_uos.a: $(OBJECTS) | $(OUT)
|
|
$(AR) rcs $@ $^
|
|
|
|
$(OUT):
|
|
mkdir -p $(OUT)
|
|
|
|
$(OUT)/chacha.o: chacha.c chacha.h util.h $(CONFIG_FILE) | $(OUT)
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
|
|
$(OUT)/h_malloc.o: h_malloc.c include/h_malloc.h mutex.h memory.h pages.h random.h util.h $(CONFIG_FILE) | $(OUT)
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
|
|
$(OUT)/memory_uos.o: memory_uos.c memory.h util.h $(CONFIG_FILE) | $(OUT)
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
|
|
$(OUT)/pages.o: pages.c pages.h memory.h util.h $(CONFIG_FILE) | $(OUT)
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
|
|
$(OUT)/random.o: random.c random.h chacha.h util.h $(CONFIG_FILE) | $(OUT)
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
|
|
$(OUT)/util.o: util.c util.h $(CONFIG_FILE) | $(OUT)
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
|
|
|
clean:
|
|
rm -rf $(OUT)
|
|
|
|
.PHONY: all clean
|