mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-28 01:28:53 +00:00
6894ced63b
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
62 lines
1.6 KiB
Makefile
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
|