genode-ehmry/repos/libports/lib/mk/libc.mk
Norman Feske 6894ced63b libc: execve
This patch implements 'execve' in Genode's libc.

The mechanism relies on the dynamic linker's ability to replace the
loaded binary while keeping crucial libraries - in particular the libc -
intact. The state outside the libc is wiped. For this reason, all libc
internal state needed beyond the 'execve' call must be allocated on a
heap separate from the application-owned malloc heap. E.g.,
libc-internal file-descriptor objects must not be allocated or refer to
any memory object allocated from the malloc heap.

Issue #3481
2019-08-28 14:19:45 +02:00

62 lines
1.6 KiB
Makefile

#
# C Library including string, locale
#
LIBS = libc-string libc-locale libc-stdlib libc-stdio libc-gen libc-gdtoa \
libc-inet libc-stdtime libc-regex libc-compat libc-setjmp libc-mem \
libc-resolv libc-isc libc-nameser libc-net libc-rpc libc-tzcode \
libc-libkern
LIBS += base vfs
#
# Back end
#
SRC_CC = atexit.cc dummies.cc rlimit.cc sysctl.cc \
issetugid.cc errno.cc gai_strerror.cc time.cc \
malloc.cc progname.cc fd_alloc.cc file_operations.cc \
plugin.cc plugin_registry.cc select.cc exit.cc environ.cc sleep.cc \
pread_pwrite.cc readv_writev.cc poll.cc \
vfs_plugin.cc dynamic_linker.cc signal.cc \
socket_operations.cc task.cc socket_fs_plugin.cc syscall.cc \
getpwent.cc getrandom.cc fork.cc execve.cc
#
# Pthreads
#
SRC_CC += semaphore.cc rwlock.cc \
thread.cc thread_create.cc
#
# FreeBSD headers use the C99 restrict keyword
#
CXX_DEF += -Drestrict=__restrict
#
# Extra include path for internal dummies
#
CC_OPT_dummies += -I$(LIBC_DIR)/sys
INC_DIR += $(REP_DIR)/src/lib/libc
INC_DIR += $(REP_DIR)/src/lib/libc/include
# needed for base/internal/unmanaged_singleton.h
INC_DIR += $(BASE_DIR)/src/include
INC_DIR += $(BASE_DIR)/sys
#
# Files from string library that are not included in libc-raw_string because
# they depend on the locale library.
#
SRC_C += strcoll.c strxfrm.c wcscoll.c wcsxfrm.c
include $(REP_DIR)/lib/mk/libc-common.inc
vpath % $(REP_DIR)/src/lib/libc
vpath % $(LIBC_DIR)/lib/libc/string
#
# Shared library, for libc we need symbol versioning
#
SHARED_LIB = yes
LD_OPT += --version-script=$(LIBC_DIR)/lib/libc/Versions.def