<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[wolfSSL - Embedded SSL Library — Cross compile for bare-metal RISC-V [Undefined reference problem]]]></title>
		<link>https://www.wolfssl.com/forums/topic2046-cross-compile-for-baremetal-riscv-undefined-reference-problem.html</link>
		<atom:link href="https://www.wolfssl.com/forums/feed-rss-topic2046.xml" rel="self" type="application/rss+xml" />
		<description><![CDATA[The most recent posts in Cross compile for bare-metal RISC-V [Undefined reference problem].]]></description>
		<lastBuildDate>Tue, 17 Oct 2023 13:01:13 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Cross compile for bare-metal RISC-V [Undefined reference problem]]]></title>
			<link>https://www.wolfssl.com/forums/post7284.html#p7284</link>
			<description><![CDATA[<p>Hello tuankiet,</p><p>Welcome to the wolfSSL Forums. The linker is complaining about system calls (&quot;inet_pton&quot;, &quot;__errno_location&quot;, etc)</p><p>Could this be related to order the libraries are included?</p><div class="codebox"><pre><code>-L/home/tuankiet/Documents/tools/riscv-32imac/lib -L/home/tuankiet/Documents/tools/riscv-32imac/riscv32-unknown-elf/lib -L/home/tuankiet/Documents/tools/riscv-32imac/sysroot/lib -L/home/tuankiet/Documents/tools/riscv-32imac/sysroot/usr/lib /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a -lm</code></pre></div><p>Kind regards,<br />Eric - wolfSSL Support</p>]]></description>
			<author><![CDATA[null@example.com (embhorn)]]></author>
			<pubDate>Tue, 17 Oct 2023 13:01:13 +0000</pubDate>
			<guid>https://www.wolfssl.com/forums/post7284.html#p7284</guid>
		</item>
		<item>
			<title><![CDATA[Cross compile for bare-metal RISC-V [Undefined reference problem]]]></title>
			<link>https://www.wolfssl.com/forums/post7282.html#p7282</link>
			<description><![CDATA[<p>Hello everyone,</p><p>My objective is to use the feature &quot;openssl compatibility&quot; of woflssl on rv32-imac. I built a static library and linked it to some test programs.</p><p>Here is my configuration options used to create the static library:<br /></p><div class="codebox"><pre><code>./configure --host=riscv32 \
--prefix=/home/tuankiet/Documents/tools/wolfssl-build-riscv32/ \
CC=riscv32-unknown-elf-gcc \
AR=riscv32-unknown-elf-ar RANLIB=riscv32-unknown-elf-ranlib \
CPPFLAGS=&quot;-I./&quot; \
CFLAGS=&quot;-DHAVE_ECC_KOBLITZ -DNO_WOLFSSL_DIR -mabi=ilp32 -march=rv32imac -I$RISCV/sysroot/usr/include -I$RISCV/riscv32-unknown-elf/include&quot; \
LDFLAGS=&quot;-L$RISCV/riscv32-unknown-elf/lib&quot; \
--with-sysroot=&quot;$RISCV/sysroot/&quot; \
--disable-filesystem --enable-singlethreaded \
--enable-static --disable-shared --disable-examples --disable-crypttests --disable-asm --disable-rsa \
--disable-dh --disable-oldtls --disable-tlsv12 \
--enable-opensslextra --enable-opensslall \
--enable-ecc --enable-ecccustcurves</code></pre></div><p>The static library was built successfully, and I was able to run a test program with SHA256 on the platform.<br />However, when I tried to run a program with ECC using openssl compatible function (I have coded a more complicated program on linux before migrating everything to RISCV platform):</p><div class="codebox"><pre><code>#include &lt;wolfssl/options.h&gt;
#include &lt;wolfssl/wolfcrypt/settings.h&gt;
#include &lt;wolfssl/ssl.h&gt;
#include &lt;wolfssl/openssl/ssl.h&gt;
#include &lt;wolfssl/openssl/ec.h&gt;

int main(){
   WOLFSSL_EC_GROUP *group = EC_GROUP_new_by_curve_name(NID_secp256k1);
   return 0;
}</code></pre></div><p>After this, I think I have a linker problem, I tried to rebuild the library several times (with different configuration) but have not yet solved the problem. I am not sure the reason why.</p><p>Here is the &quot;make&quot;: <br /></p><div class="codebox"><pre><code>tuankiet@ubuntu:wolfssl-riscv$ make demo
riscv32-unknown-elf-gcc -Wall -static -std=c11 -g -march=rv32imac -mabi=ilp32 -I/home/tuankiet/Documents/tools/wolfssl-build-riscv32/include -I/home/tuankiet/Documents/tools/riscv-32imac/sysroot/usr/include -I/home/tuankiet/Documents/tools/riscv-32imac/riscv32-unknown-elf/include -c demo.c -o demo.o
demo.c: In function &#039;main&#039;:
demo.c:28:23: warning: unused variable &#039;group&#039; [-Wunused-variable]
28 | WOLFSSL_EC_GROUP *group = EC_GROUP_new_by_curve_name(NID_secp256k1);
| ^~~~~
riscv32-unknown-elf-gcc -Wall -static -std=c11 -g -march=rv32imac -mabi=ilp32 -I/home/tuankiet/Documents/tools/wolfssl-build-riscv32/include -I/home/tuankiet/Documents/tools/riscv-32imac/sysroot/usr/include -I/home/tuankiet/Documents/tools/riscv-32imac/riscv32-unknown-elf/include -o demo demo.o -L/home/tuankiet/Documents/tools/riscv-32imac/lib -L/home/tuankiet/Documents/tools/riscv-32imac/riscv32-unknown-elf/lib -L/home/tuankiet/Documents/tools/riscv-32imac/sysroot/lib -L/home/tuankiet/Documents/tools/riscv-32imac/sysroot/usr/lib /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a -lm
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L199&#039;:
ssl.c:(.text+0x870): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L1247&#039;:
ssl.c:(.text+0x2a72): undefined reference to `__ctype_toupper_loc&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L1872&#039;:
ssl.c:(.text+0x3ebe): undefined reference to `__ctype_toupper_loc&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `wolfSSL_ASN1_OBJECT_dup&#039;:
ssl.c:(.text+0x5ef4): undefined reference to `__ctype_b_loc&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: ssl.c:(.text+0x5f80): undefined reference to `__ctype_tolower_loc&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L4938&#039;:
ssl.c:(.text+0x9690): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L4942&#039;:
ssl.c:(.text+0x9724): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L6047&#039;:
ssl.c:(.text+0xb6ca): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L8195&#039;:
ssl.c:(.text+0x102f0): undefined reference to `inet_pton&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L14187&#039;:
ssl.c:(.text+0x1c516): undefined reference to `socket&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L14011&#039;:
ssl.c:(.text+0x1c544): undefined reference to `connect&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L14026&#039;:
ssl.c:(.text+0x1c592): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-ssl.o): in function `.L14077&#039;:
ssl.c:(.text+0x1c664): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-tls13.o): in function `.L1026&#039;:
tls13.c:(.text+0x420c): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-tls13.o): in function `.L1274&#039;:
tls13.c:(.text+0x49fe): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(src_libwolfssl_la-asn.o): in function `.L26&#039;:
asn.c:(.text+0x10e): undefined reference to `__ctype_tolower_loc&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-internal.o): in function `GetSesionFromCacheOrExt&#039;:
internal.c:(.text+0x2fa): undefined reference to `TlsSessionCacheGetAndRdLock&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-internal.o): in function `.L68&#039;:
internal.c:(.text+0x3ae): undefined reference to `__ctype_tolower_loc&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-internal.o): in function `.L146&#039;:
internal.c:(.text+0x8e2): undefined reference to `TlsSessionCacheUnlockRow&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-internal.o): in function `.L3090&#039;:
internal.c:(.text+0x7a1c): undefined reference to `TlsSessionCacheUnlockRow&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-internal.o): in function `.L3125&#039;:
internal.c:(.text+0x7b00): undefined reference to `TlsSessionCacheUnlockRow&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `.L106&#039;:
wolfio.c:(.text+0x25e): undefined reference to `recv&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `.L115&#039;:
wolfio.c:(.text+0x31a): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `.L154&#039;:
wolfio.c:(.text+0x3d2): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `.L155&#039;:
wolfio.c:(.text+0x41e): undefined reference to `recv&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: wolfio.c:(.text+0x432): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `.L167&#039;:
wolfio.c:(.text+0x486): undefined reference to `send&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: wolfio.c:(.text+0x498): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `.L176&#039;:
wolfio.c:(.text+0x4e0): undefined reference to `recv&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: wolfio.c:(.text+0x4e8): undefined reference to `send&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `wolfIO_Recv&#039;:
wolfio.c:(.text+0x512): undefined reference to `gethostbyname&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `wolfIO_TcpConnect&#039;:
wolfio.c:(.text+0x540): undefined reference to `socket&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: wolfio.c:(.text+0x552): undefined reference to `connect&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: wolfio.c:(.text+0x5b8): undefined reference to `socket&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `wolfIO_TcpBind&#039;:
wolfio.c:(.text+0x5d2): undefined reference to `setsockopt&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: wolfio.c:(.text+0x5f8): undefined reference to `bind&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: wolfio.c:(.text+0x606): undefined reference to `listen&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: wolfio.c:(.text+0x622): undefined reference to `accept&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `.L239&#039;:
wolfio.c:(.text+0x78a): undefined reference to `recv&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `.L251&#039;:
wolfio.c:(.text+0x848): undefined reference to `recv&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `.L274&#039;:
wolfio.c:(.text+0x854): undefined reference to `__errno_location&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: /home/tuankiet/Documents/tools/wolfssl-build-riscv32/lib/libwolfssl.a(libwolfssl_la-wolfio.o): in function `wolfIO_HttpBuildRequestOcsp&#039;:
wolfio.c:(.text+0xe2e): undefined reference to `send&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: wolfio.c:(.text+0xe42): undefined reference to `send&#039;
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: demo: hidden symbol `TlsSessionCacheGetAndRdLock&#039; isn&#039;t defined
/home/tuankiet/Documents/tools/riscv-32imac/bin/../lib/gcc/riscv32-unknown-elf/11.1.0/../../../../riscv32-unknown-elf/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make: *** [Makefile:34: demo] Error 1</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (tuankiet)]]></author>
			<pubDate>Tue, 17 Oct 2023 08:52:20 +0000</pubDate>
			<guid>https://www.wolfssl.com/forums/post7282.html#p7282</guid>
		</item>
	</channel>
</rss>
