Portál AbcLinuxu, 18. června 2025 20:09


Dotaz: luacrypto

dnes 08:59 MM
luacrypto
Přečteno: 66×
Odpovědět | Admin
Ahoj, řeším takový problém s risc-v procesorem (architektura rv32imafdc). Nejde mi na něm rozjet luacrypto knihovna, potřebuji to pro počítání nějakých hashů pro web atp. používá openssl knihovnu. Na PC to jde, na arm32 a arm64 mi to taky jde, na riscv to přeložím, ale při použití knihovny to háže tuto chybu:
[  614.587196] lua[1708]: unhandled signal 11 code 0x1 at 0x957a3710 in libcrypto.so.3[957a7000+233000]
[  614.587330] CPU: 1 PID: 1708 Comm: lua Not tainted 5.10.0 #4
[  614.591083] epc : 957a3712 ra : 958dcc0e sp : 9d860860
[  614.596119]  gp : 692ce8b0 tp : 95b08470 t0 : 00000000
[  614.601303]  t1 : 9582c0cc t2 : 00000000 s0 : 6931c5f8
[  614.606361]  s1 : 00000000 a0 : 6931c6f0 a1 : 00000002
[  614.611523]  a2 : 00000001 a3 : 00000002 a4 : 00000003
[  614.616605]  a5 : 00000008 a6 : 95aed500 a7 : 000000d7
[  614.621782]  s2 : 00000008 s3 : 6931c63c s4 : 6931c660
[  614.626848]  s5 : 00000007 s6 : 9d860868 s7 : 00000014
[  614.632021]  s8 : 00000002 s9 : 00008000 s10: 00000923
[  614.637090]  s11: 6936603c t3 : 957a3712 t4 : 2f333400
[  614.642283]  t5 : 333a2200 t6 : 00000008
[  614.646119] status: 80006020 badaddr: 957a3710 cause: 0000000c
gdb bohužel přeložený v destičce nemám. Našel jsem, že bych měl hledat, co se volá v knihovně (asi openssl) na adrese 0x957a3710, ale to by mělo být v rámci 0x957a7000 až 0x957a7000+0x233000, což není. Dokázal by mi někdo trochu poradit jak dál, proč je adresa chyby nižší než base adresa knihovny? Předpokládám, že kód úplně chybný není, když funguje na PC a armech, je možné, že by chyba mohla vzniknout špatnými bylo parametry při překladu, nebo tak něco?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

dnes 12:29 X
Rozbalit Rozbalit vše Re: luacrypto
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kompiloval jsi zdrojaky patchnute s podporou OpenSSLv3(libcrypto.so.3)?
dnes 13:44 MM
Rozbalit Rozbalit vše Re: luacrypto
Díky, ano snažil jsem se... Používá to API verze 1, které je deprecated a bude asi brzy odebráno (varuje při překladu), stejně jako při překladu na armech a PC, kde to ve výsledku funguje.

Funguje to stejně, dokonce i bez LIBCRYPTO_CFLAGS. Když odeberu -lcrypto, jde to přeložit také (a chová se to stejně), je pak trochu jiná velikost výsledného crypto.so

kus makefile:
CROSS_COMPILE=$(AGCCBIN)/riscv32-buildroot-linux-uclibc-
CC = $(CROSS_COMPILE)gcc -Os -pipe -march=rv32imafdc -lcrypto 
LUA_CFLAGS = -I../../buildroot/output/build/lua-5.1.5/src
LIBCRYPTO_CFLAGS = -I../../buildroot/output/build/libopenssl-3.4.1/include/crypto -L../../buildroot/output/build/libopenssl-3.4.1/
CFLAGS ?= -O2 -Wall
all: crypto.so

%.o: %.c
  $(CC) -c $(CFLAGS) $(LLDFLAGS) -fPIC $(LUA_CFLAGS) $(LIBCRYPTO_CFLAGS) -o $@ $<

lcrypto.o:

crypto.so: lcrypto.o
  $(CC) -shared lcrypto.o -o $@

clean:
  rm -f crypto.so lcrypto.o

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.