regarding Sculpt on virt_qemu_riscv

Martin Stein martin.stein at genode-labs.com
Thu Feb 23 10:13:25 CET 2023


Hi Pranab,

These errors indicate that your version of jitterentropy declares
jitterentropy_init and jent_entropy_collector_alloc but doesn't
implement them. I'd suggest you to lookup the where the other versions
(arm, x86) implement the functions and whether the implementations are
generic or platform specific. If the latter is the case, you either find
an existing riscv implementation in the contrib code
(contrib/jitterentropy*) or you have to implement the functions for
riscv yourself. If the former is the case, you're probably just missed
to add the corresponding compilation unit to your makefile (SRC_C variable).

PS: Please don't re-use the file headers (brief, author, copyright) of
Genode Labs.

Cheers,
Martin

On 22.02.23 12:27, Pranab Kumar Rout cs21m045 wrote:
> Hi Martin,
> Following your suggestion, I added these 2 files.
> 1.
> *repos/libports/src/lib/jitterentropy/spec/riscv/jitterentropy-base-genode-nstime.h**
> *
> Its contents are:
> 
>     /*
>      * \brief  Time backend for jitterentropy library
>      * \author Josef Soentgen
>      * \date   2014-08-18
>      */
>     /*
>      * Copyright (C) 2014-2017 Genode Labs GmbH
>      *
>      * This file is part of the Genode OS framework, which is distributed
>      * under the terms of the GNU Affero General Public License version 3.
>      */
>     #ifndef _JITTERENTROPY_RISCV_BASE_GENODE_NSTIME_H_
>     #define _JITTERENTROPY_RISCV_BASE_GENODE_NSTIME_H_
>     static inline void jent_get_nstime(__u64 *out)
>     {
>     uint32_t t;
>     asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(t));
>     *out = t;
>     }
> 
>     #endif
> 
> 
> 2.  *repos/libports/lib/mk/spec/riscv/jitterentropy.mk
> <http://jitterentropy.mk>*
> Its contents:
> 
>     INC_DIR += $(REP_DIR)/src/lib/jitterentropy/spec/riscv
> 
>     include $(REP_DIR)/lib/mk/jitterentropy.inc
> 
>     CC_CXX_WARN_STRICT =
> 
> 
> And I updated the jitterentropy jitterentropy import file at
> *repos/libports/lib/import/import-jitterentropy.mk
> <http://import-jitterentropy.mk>
> *
> Its contents are:
> 
>     ifeq ($(filter-out $(SPECS),x86_32),)
>     TARGET_CPUARCH=x86_32
>     else ifeq ($(filter-out $(SPECS),x86_64),)
>     TARGET_CPUARCH=x86_64
>     else ifeq ($(filter-out $(SPECS),arm_v6),)
>     TARGET_CPUARCH=arm_v6
>     else ifeq ($(filter-out $(SPECS),arm_v7),)
>     TARGET_CPUARCH=arm_v7
>     else ifeq ($(filter-out $(SPECS),arm_v8),)
>     TARGET_CPUARCH=arm_v8
>     else ifeq ($(filter-out $(SPECS),riscv),)
>     TARGET_CPUARCH=riscv
>     endif
> 
>     JITTERENTROPY_DIR := $(call select_from_ports,jitterentropy)
> 
>     ifeq ($(CONTRIB_DIR),)
>     REP_INC_DIR += include/jitterentropy
>     else
>     INC_DIR += $(JITTERENTROPY_DIR)/include/jitterentropy
>     endif
> 
>     INC_DIR += $(call select_from_repositories,src/lib/jitterentropy)these
>     INC_DIR += $(call
>     select_from_repositories,src/lib/jitterentropy/spec/$(TARGET_CPUARCH))
> 
>     CC_OPT += -DJITTERENTROPY_GENODE
> 
> 
> After running
>>  /make run/sculpt KERNEL=hw BOARD=virt_qemu_riscv/
> I am getting such error:
> 
>     checking library dependencies...
>       Library ldso_so_support
>         COMPILE  so_support.o
>         MERGE    ldso_so_support.lib.a
>       Library ld
>         CONVERT  ld.symbols.s
>         ASSEMBLE ld.symbols.o
>         MERGE    ld.abi.so <http://ld.abi.so>
>       Library base
>         MERGE    base.lib.a
>       Library block_session
>         MERGE    block_session.lib.a
>       Library config
>         MERGE    config.lib.a
>       Library jitterentropy
>         MERGE    jitterentropy.lib.a
>       Library os
>         MERGE    os.lib.a
>       Program app/gpt_write/gpt_write
>         COMPILE  main.o
>         COMPILE  util.o
>         LINK     gpt_write
>     /usr/local/genode/tool/21.05/bin/../lib/gcc/riscv64-unknown-elf/10.3.0/../../../../riscv64-unknown-elf/bin/ld:
>     util.o: in function `Util::init_random(Genode::Allocator&)':
>     /home/pranab/MTP/r5/genode/depot/genodelabs/src/gpt_write/2023-02-22-c/src/app/gpt_write/util.cc:39:
>     *undefined reference* to `jitterentropy_init(Genode::Allocator&)'
>     /usr/local/genode/tool/21.05/bin/../lib/gcc/riscv64-unknown-elf/10.3.0/../../../../riscv64-unknown-elf/bin/ld:
>     /home/pranab/MTP/r5/genode/depot/genodelabs/src/gpt_write/2023-02-22-c/src/app/gpt_write/util.cc:41:
>     *undefined reference* to `jent_entropy_init'
>     /usr/local/genode/tool/21.05/bin/../lib/gcc/riscv64-unknown-elf/10.3.0/../../../../riscv64-unknown-elf/bin/ld:
>     /home/pranab/MTP/r5/genode/depot/genodelabs/src/gpt_write/2023-02-22-c/src/app/gpt_write/util.cc:48:
>     *undefined reference* to `jent_entropy_collector_alloc'
>     /usr/local/genode/tool/21.05/bin/../lib/gcc/riscv64-unknown-elf/10.3.0/../../../../riscv64-unknown-elf/bin/ld:
>     util.o: in function `void Genode::Log::output<char const (&)
>     [52]>(Genode::Log::Type, char const (&) [52])':
>     /home/pranab/MTP/r5/genode/depot/genodelabs/api/base/2022-11-28/include/base/log.h:70:
>     *undefined reference* to `jent_read_entropy'
>     collect2: error: ld returned 1 exit status
>     make[7]: *** [/home/pranab/MTP/r5/genode/repos/base/mk/prg.mk:218
>     <http://prg.mk:218>: gpt_write] Error 1
>     make[6]: *** [var/libdeps:151: gpt_write.prg] Error 2
>     make[5]: *** [Makefile:336: gen_deps_and_build_targets] Error 2
>     make[4]: ***
>     [/home/pranab/MTP/r5/genode/tool/depot/mk/build_bin_archive:208:
>     /home/pranab/MTP/r5/genode/depot/genodelabs/bin/riscv/gpt_write/2023-02-22-c.build/bin]
>     Error 1
>     make[3]: *** [/home/pranab/MTP/r5/genode/depot/var/build.mk:264
>     <http://build.mk:264>: genodelabs/bin/riscv/gpt_write/2023-02-22-c]
>     Error 2
>     make[2]: *** [/home/pranab/MTP/r5/genode/tool/depot/build:136:
>     execute_generated_build_mk_file] Error 2
>     make[1]: *** [/home/pranab/MTP/r5/genode/tool/depot/create:59:
>     build] Error 2
>     make[1]: Leaving directory '/home/pranab/MTP/r5/genode/build/riscv'
> 
> 
> I am not able to fix this. Please help me understand the issues.
> 
> Thanks & Regards,
> Pranab



More information about the users mailing list