Нужно протестировать модули крипто-API в ядре. В доках kernel.org сказано было, что пример работы с ними для user-space - библиотека libkcapi.
Скачал «apt source libkcapi», все исходники там в подкаталоге lib. Скопировал lib себе в проект, чтобы слинковать статически. Makefile примитивный.
EXE = test
OBJS = lib/kcapi-asym.o lib/kcapi-kdf.o lib/kcapi-kernel-if.o lib/kcapi-kpp.o lib/kcapi-md.o lib/kcapi-rng.o lib/kcapi-sym.o lib/kcapi-utils.o lib/kcapi-aead.o
OBJS += main.o
CFLAGS = -g -O0
#CFLAGS += -enable-frame-pointer -fno-omit-frame-pointer
all: $(EXE)
$(EXE): $(OBJS)
gcc -o $(EXE) $(OBJS)
.o: .c
gcc -c $< $(CFLAGS)
clean:
rm $(EXE) $(OBJS)
Сам тест начал только писать с хелловорлда
#include <stdlib.h>
#include <stdio.h>
#include "lib/kcapi.h"
int main(int argc, char *argv[])
{
printf( "Hello world!" );
return 0;
}
Без либы собирается 17К, с либой 131К. Ничего из функций либы не используется так и так. Без либы дебаггер проходит main, билд с исходниками либы зависает и в консоли gdb следующее:
... bla-bla-bla ...
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) Cannot remove breakpoints because program is no longer writable.
Further execution is probably impossible.
Breakpoint 1, main (argc=<error reading variable: Cannot access memory at address 0x7fffffffdfcc>, argv=<error reading variable: Cannot access memory at address 0x7fffffffdfc0>) at main.c:8
8 printf( "Hello world!" );
Cannot remove breakpoints because program is no longer writable.
Further execution is probably impossible.
Breakpoint 1, main (argc=<error reading variable: Cannot access memory at address 0x7fffffffdfcc>, argv=<error reading variable: Cannot access memory at address 0x7fffffffdfc0>) at main.c:8
8 printf( "Hello world!" );
Как это может быть и что с этим делать? Чистый gdb без eclipse дает то же. Что-то с исходниками либы не так?