From a77e509283bab5d889768b58fe829458fa681855 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Sun, 26 Feb 2017 01:17:22 +0100 Subject: [PATCH] cpu_sampler: kernel-agnostic build support Fixes #2293 --- .../lib/mk/cpu_sampler_platform-generic.mk | 7 +++ repos/gems/lib/mk/cpu_sampler_platform.mk | 1 + .../mk/spec/foc/cpu_sampler_platform-foc.mk | 11 ++++ repos/gems/lib/symbols/cpu_sampler_platform | 60 +++++++++++++++++++ repos/gems/run/cpu_sampler.run | 29 ++++++++- repos/gems/run/cpu_sampler_noux.run | 17 +++++- .../cpu_sampler_platform-foc}/native_cpu.cc | 0 .../lib/cpu_sampler_platform-foc/target.mk | 2 + .../native_cpu.cc | 0 .../cpu_sampler_platform-generic/target.mk | 2 + .../src/server/cpu_sampler/spec/foc/target.mk | 7 --- .../src/server/cpu_sampler/spec/hw/target.mk | 7 --- .../server/cpu_sampler/spec/nova/target.mk | 7 --- .../server/cpu_sampler/spec/okl4/target.mk | 7 --- .../server/cpu_sampler/spec/sel4/target.mk | 7 --- .../cpu_sampler/{target.inc => target.mk} | 2 +- 16 files changed, 127 insertions(+), 39 deletions(-) create mode 100644 repos/gems/lib/mk/cpu_sampler_platform-generic.mk create mode 100644 repos/gems/lib/mk/cpu_sampler_platform.mk create mode 100644 repos/gems/lib/mk/spec/foc/cpu_sampler_platform-foc.mk create mode 100644 repos/gems/lib/symbols/cpu_sampler_platform rename repos/gems/src/{server/cpu_sampler/spec/foc => lib/cpu_sampler_platform-foc}/native_cpu.cc (100%) create mode 100644 repos/gems/src/lib/cpu_sampler_platform-foc/target.mk rename repos/gems/src/{server/cpu_sampler => lib/cpu_sampler_platform-generic}/native_cpu.cc (100%) create mode 100644 repos/gems/src/lib/cpu_sampler_platform-generic/target.mk delete mode 100644 repos/gems/src/server/cpu_sampler/spec/foc/target.mk delete mode 100644 repos/gems/src/server/cpu_sampler/spec/hw/target.mk delete mode 100644 repos/gems/src/server/cpu_sampler/spec/nova/target.mk delete mode 100644 repos/gems/src/server/cpu_sampler/spec/okl4/target.mk delete mode 100644 repos/gems/src/server/cpu_sampler/spec/sel4/target.mk rename repos/gems/src/server/cpu_sampler/{target.inc => target.mk} (85%) diff --git a/repos/gems/lib/mk/cpu_sampler_platform-generic.mk b/repos/gems/lib/mk/cpu_sampler_platform-generic.mk new file mode 100644 index 000000000..b29294088 --- /dev/null +++ b/repos/gems/lib/mk/cpu_sampler_platform-generic.mk @@ -0,0 +1,7 @@ +INC_DIR = $(REP_DIR)/src/server/cpu_sampler + +SRC_CC = native_cpu.cc + +SHARED_LIB = yes + +vpath %.cc $(REP_DIR)/src/lib/cpu_sampler_platform-generic diff --git a/repos/gems/lib/mk/cpu_sampler_platform.mk b/repos/gems/lib/mk/cpu_sampler_platform.mk new file mode 100644 index 000000000..943d2e762 --- /dev/null +++ b/repos/gems/lib/mk/cpu_sampler_platform.mk @@ -0,0 +1 @@ +SHARED_LIB = yes diff --git a/repos/gems/lib/mk/spec/foc/cpu_sampler_platform-foc.mk b/repos/gems/lib/mk/spec/foc/cpu_sampler_platform-foc.mk new file mode 100644 index 000000000..ce8c1c12e --- /dev/null +++ b/repos/gems/lib/mk/spec/foc/cpu_sampler_platform-foc.mk @@ -0,0 +1,11 @@ +REQUIRES = foc + +INC_DIR = $(REP_DIR)/src/server/cpu_sampler + +SRC_CC = native_cpu.cc + +LIBS = syscall-foc + +SHARED_LIB = yes + +vpath %.cc $(REP_DIR)/src/lib/cpu_sampler_platform-foc diff --git a/repos/gems/lib/symbols/cpu_sampler_platform b/repos/gems/lib/symbols/cpu_sampler_platform new file mode 100644 index 000000000..d318ebd40 --- /dev/null +++ b/repos/gems/lib/symbols/cpu_sampler_platform @@ -0,0 +1,60 @@ +__aeabi_unwind_cpp_pr0 U +__aeabi_unwind_cpp_pr1 U +_ctors_end D 0 +_ctors_start D 0 +__cxa_allocate_exception U +__cxa_begin_catch U +__cxa_end_catch U +__cxa_end_cleanup U +__cxa_get_exception_ptr U +__cxa_pure_virtual U +__cxa_throw U +dl_unwind_find_exidx W +__dynamic_cast U +__eh_frame_start__ D 0 +__gnu_Unwind_Find_exidx T +__gxx_personality_v0 U +_init T +l4_atomic_add T +l4_atomic_cmpxchg T +l4_atomic_xchg T +__l4sys_invoke_indirect D 0 +l4_utcb_wrap W +memcpy U +_parent_cap D 0 +_parent_cap_local_name D 0 +_parent_cap_thread_id D 0 +_Unwind_Resume U +_ZdlPvRN6Genode11DeallocatorE U +_ZdlPv U +_ZN11Cpu_sampler21Cpu_session_component17_setup_native_cpuEv T +_ZN11Cpu_sampler21Cpu_session_component19_cleanup_native_cpuEv T +_ZN6Genode13Avl_node_baseC2Ev U +_ZN6Genode14Rpc_entrypoint7_manageEPNS_15Rpc_object_baseE U +_ZN6Genode14Rpc_entrypoint9_dissolveEPNS_15Rpc_object_baseE U +_ZN6Genode15Cancelable_lock4lockEv U +_ZN6Genode15Cancelable_lock6unlockEv U +_ZN6Genode15Cancelable_lockC2ENS0_5StateE U +_ZN6Genode17Native_capability4_decEv U +_ZN6Genode17Native_capability4_incEv U +_ZN6Genode17Native_capabilityC1Ev U +_ZN6Genode3Log3logEv U +_ZN6Genode3Log8_acquireENS0_4TypeE U +_ZN6Genode3Log8_releaseEv U +_ZN6Genode3Raw7_outputEv U +_ZN6Genode3Raw8_acquireEv U +_ZN6Genode3Raw8_releaseEv U +_ZN6Genode5printERNS_6OutputEl U +_ZN6Genode5printERNS_6OutputEPKc U +_ZN6Genode5printERNS_6OutputEPKv U +_ZN6Genode5Trace6Logger17_evaluate_controlEv U +_ZN6Genode6Thread7_loggerEv U +_ZN6Genode8ipc_callENS_17Native_capabilityERNS_11Msgbuf_baseES2_m U +_ZNK6Genode17Native_capability10local_nameEv U +_ZnwjRN6Genode9AllocatorE U +_ZnwmRN6Genode9AllocatorE U +_ZSt9terminatev U +_ZTIN11Cpu_sampler20Cpu_thread_componentE U +_ZTVN10__cxxabiv117__class_type_infoE U +_ZTVN10__cxxabiv120__si_class_type_infoE U +_ZTVN10__cxxabiv121__vmi_class_type_infoE U diff --git a/repos/gems/run/cpu_sampler.run b/repos/gems/run/cpu_sampler.run index e3212536f..99a49ef24 100644 --- a/repos/gems/run/cpu_sampler.run +++ b/repos/gems/run/cpu_sampler.run @@ -4,7 +4,7 @@ if { ![have_spec foc] && ![have_spec hw] && ![have_spec nova] && exit 0 } -build { +set build_components { core init drivers/timer @@ -12,6 +12,14 @@ build { test/cpu_sampler } +if {[have_spec foc]} { + lappend build_components lib/cpu_sampler_platform-foc +} else { + lappend build_components lib/cpu_sampler_platform-generic +} + +build $build_components + create_boot_directory install_config { @@ -69,7 +77,24 @@ install_config { } -build_boot_image { core ld.lib.so init timer cpu_sampler test-cpu_sampler } +# +# Boot modules +# + +# evaluated by the run tool +proc binary_name_cpu_sampler_platform_lib_so { } { + if {[have_spec foc]} { + return "cpu_sampler_platform-foc.lib.so" + } else { + return "cpu_sampler_platform-generic.lib.so" + } +} + +build_boot_image { + core ld.lib.so init timer + cpu_sampler cpu_sampler_platform.lib.so + test-cpu_sampler +} append qemu_args "-nographic -m 128" diff --git a/repos/gems/run/cpu_sampler_noux.run b/repos/gems/run/cpu_sampler_noux.run index 5b0b8f10a..138f43d7a 100644 --- a/repos/gems/run/cpu_sampler_noux.run +++ b/repos/gems/run/cpu_sampler_noux.run @@ -15,6 +15,12 @@ set build_components { test/cpu_sampler } +if {[have_spec foc]} { + lappend build_components lib/cpu_sampler_platform-foc +} else { + lappend build_components lib/cpu_sampler_platform-generic +} + source ${genode_dir}/repos/base/run/platform_drv.inc lappend_if [need_usb_hid] build_components drivers/usb @@ -229,12 +235,21 @@ install_config $config # Boot modules # +# evaluated by the run tool +proc binary_name_cpu_sampler_platform_lib_so { } { + if {[have_spec foc]} { + return "cpu_sampler_platform-foc.lib.so" + } else { + return "cpu_sampler_platform-generic.lib.so" + } +} + # generic modules set boot_modules { core ld.lib.so init timer noux terminal ram_fs log_terminal libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so bash.tar coreutils.tar diffutils.tar vim.tar - fs_log cpu_sampler test-cpu_sampler + fs_log cpu_sampler cpu_sampler_platform.lib.so test-cpu_sampler } # platform-specific modules diff --git a/repos/gems/src/server/cpu_sampler/spec/foc/native_cpu.cc b/repos/gems/src/lib/cpu_sampler_platform-foc/native_cpu.cc similarity index 100% rename from repos/gems/src/server/cpu_sampler/spec/foc/native_cpu.cc rename to repos/gems/src/lib/cpu_sampler_platform-foc/native_cpu.cc diff --git a/repos/gems/src/lib/cpu_sampler_platform-foc/target.mk b/repos/gems/src/lib/cpu_sampler_platform-foc/target.mk new file mode 100644 index 000000000..5ecced80a --- /dev/null +++ b/repos/gems/src/lib/cpu_sampler_platform-foc/target.mk @@ -0,0 +1,2 @@ +TARGET = cpu_sampler_platform-foc +LIBS = cpu_sampler_platform-foc diff --git a/repos/gems/src/server/cpu_sampler/native_cpu.cc b/repos/gems/src/lib/cpu_sampler_platform-generic/native_cpu.cc similarity index 100% rename from repos/gems/src/server/cpu_sampler/native_cpu.cc rename to repos/gems/src/lib/cpu_sampler_platform-generic/native_cpu.cc diff --git a/repos/gems/src/lib/cpu_sampler_platform-generic/target.mk b/repos/gems/src/lib/cpu_sampler_platform-generic/target.mk new file mode 100644 index 000000000..ca4e44ce2 --- /dev/null +++ b/repos/gems/src/lib/cpu_sampler_platform-generic/target.mk @@ -0,0 +1,2 @@ +TARGET = cpu_sampler_platform-generic +LIBS = cpu_sampler_platform-generic diff --git a/repos/gems/src/server/cpu_sampler/spec/foc/target.mk b/repos/gems/src/server/cpu_sampler/spec/foc/target.mk deleted file mode 100644 index 4b857735d..000000000 --- a/repos/gems/src/server/cpu_sampler/spec/foc/target.mk +++ /dev/null @@ -1,7 +0,0 @@ -REQUIRES += foc -LIBS += syscall-foc -SRC_CC += native_cpu.cc - -vpath native_cpu.cc $(PRG_DIR) - -include $(PRG_DIR)/../../target.inc diff --git a/repos/gems/src/server/cpu_sampler/spec/hw/target.mk b/repos/gems/src/server/cpu_sampler/spec/hw/target.mk deleted file mode 100644 index a167e50b4..000000000 --- a/repos/gems/src/server/cpu_sampler/spec/hw/target.mk +++ /dev/null @@ -1,7 +0,0 @@ -REQUIRES += hw - -SRC_CC += native_cpu.cc - -vpath native_cpu.cc $(PRG_DIR)/../.. - -include $(PRG_DIR)/../../target.inc diff --git a/repos/gems/src/server/cpu_sampler/spec/nova/target.mk b/repos/gems/src/server/cpu_sampler/spec/nova/target.mk deleted file mode 100644 index 68334fceb..000000000 --- a/repos/gems/src/server/cpu_sampler/spec/nova/target.mk +++ /dev/null @@ -1,7 +0,0 @@ -REQUIRES += nova - -SRC_CC += native_cpu.cc - -vpath native_cpu.cc $(PRG_DIR)/../.. - -include $(PRG_DIR)/../../target.inc diff --git a/repos/gems/src/server/cpu_sampler/spec/okl4/target.mk b/repos/gems/src/server/cpu_sampler/spec/okl4/target.mk deleted file mode 100644 index 8c8aa47d0..000000000 --- a/repos/gems/src/server/cpu_sampler/spec/okl4/target.mk +++ /dev/null @@ -1,7 +0,0 @@ -REQUIRES += okl4 - -SRC_CC += native_cpu.cc - -vpath native_cpu.cc $(PRG_DIR)/../.. - -include $(PRG_DIR)/../../target.inc diff --git a/repos/gems/src/server/cpu_sampler/spec/sel4/target.mk b/repos/gems/src/server/cpu_sampler/spec/sel4/target.mk deleted file mode 100644 index e070cd029..000000000 --- a/repos/gems/src/server/cpu_sampler/spec/sel4/target.mk +++ /dev/null @@ -1,7 +0,0 @@ -REQUIRES += sel4 - -SRC_CC += native_cpu.cc - -vpath native_cpu.cc $(PRG_DIR)/../.. - -include $(PRG_DIR)/../../target.inc diff --git a/repos/gems/src/server/cpu_sampler/target.inc b/repos/gems/src/server/cpu_sampler/target.mk similarity index 85% rename from repos/gems/src/server/cpu_sampler/target.inc rename to repos/gems/src/server/cpu_sampler/target.mk index 1dff366c2..a67053d87 100644 --- a/repos/gems/src/server/cpu_sampler/target.inc +++ b/repos/gems/src/server/cpu_sampler/target.mk @@ -6,6 +6,6 @@ SRC_CC += main.cc \ INC_DIR = $(REP_DIR)/src/server/cpu_sampler -LIBS += base +LIBS += base cpu_sampler_platform vpath %.cc $(REP_DIR)/src/server/cpu_sampler