|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v2 2/3] build: isolate symbols inside libraries
The aim is to avoid symbol name conflicts between different
libraries.
Every lib have to have a file 'export.syms', which is simply a flat
file, with one symbol name per line. All symbols not listed there will
become local to the library.
Signed-off-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx>
---
lib/nolibc/export.syms | 43 +++++++++++++++++++++++++++++++++++
lib/ukalloc/export.syms | 8 +++++++
lib/ukallocbbuddy/export.syms | 1 +
lib/ukargparse/export.syms | 1 +
lib/ukboot/export.syms | 2 ++
lib/ukdebug/export.syms | 3 +++
lib/uksched/export.syms | 11 +++++++++
lib/ukschedcoop/export.syms | 3 +++
lib/uktimeconv/export.syms | 3 +++
plat/kvm/export.syms | 22 ++++++++++++++++++
plat/xen/export.syms | 22 ++++++++++++++++++
support/build/Makefile.rules | 7 ++++--
12 files changed, 124 insertions(+), 2 deletions(-)
create mode 100644 lib/nolibc/export.syms
create mode 100644 lib/ukalloc/export.syms
create mode 100644 lib/ukallocbbuddy/export.syms
create mode 100644 lib/ukargparse/export.syms
create mode 100644 lib/ukboot/export.syms
create mode 100644 lib/ukdebug/export.syms
create mode 100644 lib/uksched/export.syms
create mode 100644 lib/ukschedcoop/export.syms
create mode 100644 lib/uktimeconv/export.syms
create mode 100644 plat/kvm/export.syms
create mode 100644 plat/xen/export.syms
diff --git a/lib/nolibc/export.syms b/lib/nolibc/export.syms
new file mode 100644
index 0000000..afe42b2
--- /dev/null
+++ b/lib/nolibc/export.syms
@@ -0,0 +1,43 @@
+_nolibc_errno
+getopt_long
+getopt_long_only
+getopt
+optarg
+optind
+opterr
+optopt
+stdin
+stdout
+stderr
+snprintf
+printf
+vsnprintf
+vfprintf
+fprintf
+fflush
+strtoul
+strtoll
+strtoull
+atoi
+malloc
+free
+calloc
+realloc
+posix_memalign
+memalign
+memcpy
+memset
+memchr
+memcmp
+memmove
+strncpy
+strcpy
+strnlen
+strlen
+strchr
+strncmp
+strcmp
+close
+write
+read
+gettimeofday
diff --git a/lib/ukalloc/export.syms b/lib/ukalloc/export.syms
new file mode 100644
index 0000000..66a9948
--- /dev/null
+++ b/lib/ukalloc/export.syms
@@ -0,0 +1,8 @@
+uk_alloc_get_default
+uk_malloc_ifpages
+uk_calloc_compat
+uk_realloc_ifpages
+uk_posix_memalign_ifpages
+uk_memalign_compat
+uk_free_ifpages
+uk_alloc_register
diff --git a/lib/ukallocbbuddy/export.syms b/lib/ukallocbbuddy/export.syms
new file mode 100644
index 0000000..6c871e3
--- /dev/null
+++ b/lib/ukallocbbuddy/export.syms
@@ -0,0 +1 @@
+uk_allocbbuddy_init
diff --git a/lib/ukargparse/export.syms b/lib/ukargparse/export.syms
new file mode 100644
index 0000000..8995cb1
--- /dev/null
+++ b/lib/ukargparse/export.syms
@@ -0,0 +1 @@
+uk_argnparse
diff --git a/lib/ukboot/export.syms b/lib/ukboot/export.syms
new file mode 100644
index 0000000..08b8999
--- /dev/null
+++ b/lib/ukboot/export.syms
@@ -0,0 +1,2 @@
+ukplat_entry_argp
+main
diff --git a/lib/ukdebug/export.syms b/lib/ukdebug/export.syms
new file mode 100644
index 0000000..4f8faba
--- /dev/null
+++ b/lib/ukdebug/export.syms
@@ -0,0 +1,3 @@
+_uk_printd
+_uk_printk
+uk_printk
diff --git a/lib/uksched/export.syms b/lib/uksched/export.syms
new file mode 100644
index 0000000..c3e0aa4
--- /dev/null
+++ b/lib/uksched/export.syms
@@ -0,0 +1,11 @@
+uk_sched_thread_create
+uk_sched_start
+uk_sched_thread_exit
+uk_thread_fini
+uk_thread_wake
+uk_sched_default_init
+uk_sched_get_default
+uk_sched_thread_destroy
+uk_thread_block
+uk_sched_idle_init
+uk_sched_register
diff --git a/lib/ukschedcoop/export.syms b/lib/ukschedcoop/export.syms
new file mode 100644
index 0000000..8895f9e
--- /dev/null
+++ b/lib/ukschedcoop/export.syms
@@ -0,0 +1,3 @@
+uk_schedcoop_init
+schedcoop_schedule
+ukplat_thread_ctx_destroy
diff --git a/lib/uktimeconv/export.syms b/lib/uktimeconv/export.syms
new file mode 100644
index 0000000..c882c20
--- /dev/null
+++ b/lib/uktimeconv/export.syms
@@ -0,0 +1,3 @@
+uktimeconv_is_leap_year
+uktimeconv_days_in_month
+uktimeconv_bmkclock_to_nsec
diff --git a/plat/kvm/export.syms b/plat/kvm/export.syms
new file mode 100644
index 0000000..ee1711b
--- /dev/null
+++ b/plat/kvm/export.syms
@@ -0,0 +1,22 @@
+# common
+ukplat_memallocator_set
+ukplat_thread_ctx_destroy
+ukplat_lcpu_halt_to
+ukplat_ctx_callbacks_init
+
+# kvm
+_libkvmplat_entry
+ukplat_terminate
+ukplat_virt_to_phys
+ukplat_memregion_count
+ukplat_memregion_get
+ukplat_irq_init
+ukplat_monotonic_clock
+ukplat_time_init
+ukplat_coutd
+ukplat_coutk
+ukplat_lcpu_save_irqf
+ukplat_lcpu_restore_irqf
+ukplat_lcpu_irqs_disabled
+ukplat_lcpu_irqs_handle_pending
+ukplat_lcpu_enable_irq
diff --git a/plat/xen/export.syms b/plat/xen/export.syms
new file mode 100644
index 0000000..15e70b0
--- /dev/null
+++ b/plat/xen/export.syms
@@ -0,0 +1,22 @@
+# common
+ukplat_memallocator_set
+ukplat_ctx_callbacks_init
+ukplat_thread_ctx_destroy
+
+# xen
+_libxenplat_start
+_libxenplat_x86entry
+ukplat_coutk
+ukplat_coutd
+ukplat_time_init
+ukplat_memregion_count
+ukplat_memregion_get
+ukplat_irq_init
+ukplat_terminate
+ukplat_lcpu_enable_irq
+ukplat_monotonic_clock
+ukplat_lcpu_save_irqf
+ukplat_lcpu_restore_irqf
+ukplat_lcpu_irqs_disabled
+ukplat_lcpu_halt_to
+ukplat_lcpu_irqs_handle_pending
diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
index e317e3d..844cb4b 100644
--- a/support/build/Makefile.rules
+++ b/support/build/Makefile.rules
@@ -49,6 +49,8 @@ libname2olib = $(addprefix $(BUILD_DIR)/,$(addsuffix .o,$(1)))
libname2preolib = $(addprefix $(BUILD_DIR)/,$(addsuffix .ld.o,$(1)))
+libname2exports = $($(call vprefix_lib,$1,BASE))/export.syms
+
# converts a list of sources to paths pointing to their corresponding object
file
# src2obj $libname,$source(s),$variant(optional)
define src2obj =
@@ -419,11 +421,12 @@ $(call libname2preolib,$(1)): $($(call
vprefix_lib,$(1),OBJS)) $($(call vprefix_
$($(call vprefix_lib,$(1),OBJS)) $($(call
vprefix_lib,$(1),OBJS-y)) \
-o $(call libname2preolib,$(1)))
-$(call libname2olib,$(1)): $(call libname2preolib,$(1))
+$(call libname2olib,$(1)): $(call libname2preolib,$(1)) $(call
libname2exports,$1)
$(call build_cmd,OBJCOPY,,$(call libname2olib,$(1)),\
$(OBJCOPY) $(OBJCFLAGS) $(OBJCFLAGS-y) \
$($(call vprefix_lib,$(1),OBJCFLAGS)) $($(call
vprefix_lib,$(1),OBJCFLAGS-y)) \
- $(call libname2preolib,$(1)) $(call
libname2olib,$(1)))
+ $(call libname2preolib,$(1)) $(call
libname2olib,$(1))) \
+ --keep-global-symbols=$(call libname2exports,$1)
$(eval $(call vprefix_lib,$(1),CLEAN-y) += $(call build_clean,$(call
libname2preolib,$(1))))
$(eval $(call vprefix_lib,$(1),CLEAN-y) += $(call build_clean,$(call
libname2olib,$(1))))
--
2.17.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |