mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-22 09:58:09 +00:00
Fixes: verify-elf: ERROR: ./usr/lib64/libcompel.so.1.0: undefined symbol: opts Acked-by: Cyrill Gorcunov <gorcunov@gmail.com> Reported-by: Alexey Shabalin <> Signed-off-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Andrei Vagin <avagin@gmail.com>
58 lines
1.3 KiB
C
58 lines
1.3 KiB
C
/*
|
|
* Test for handle_binary().
|
|
* In this test ELF binary file is constructed from
|
|
* header up to sections and relocations.
|
|
* On each stage it tests non-valid ELF binaries to be parsed.
|
|
* For passing test, handle_binary should return errors for all
|
|
* non-valid binaries and handle all relocations.
|
|
*
|
|
* Test author: Dmitry Safonov <dsafonov@virtuozzo.com>
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <stdarg.h>
|
|
|
|
#include "piegen.h"
|
|
#include "arch_test_handle_binary.h"
|
|
|
|
/* size of buffer with formed ELF file */
|
|
const size_t test_elf_buf_size = 4096;
|
|
|
|
extern int handle_binary(void *mem, size_t size);
|
|
extern void run_tests(void *mem);
|
|
|
|
int launch_test(void *mem, int expected_ret, const char *test_fmt, ...)
|
|
{
|
|
static unsigned test_nr = 1;
|
|
int ret = handle_binary(mem, test_elf_buf_size);
|
|
va_list params;
|
|
|
|
va_start(params, test_fmt);
|
|
if (ret != expected_ret) {
|
|
printf("not ok %u - ", test_nr);
|
|
vprintf(test_fmt, params);
|
|
printf(", expected %d but ret is %d\n", expected_ret, ret);
|
|
} else {
|
|
printf("ok %u - ", test_nr);
|
|
vprintf(test_fmt, params);
|
|
putchar('\n');
|
|
}
|
|
va_end(params);
|
|
test_nr++;
|
|
fflush(stdout);
|
|
|
|
return ret != expected_ret;
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
void *elf_buf = malloc(test_elf_buf_size);
|
|
int ret;
|
|
|
|
ret = arch_run_tests(elf_buf);
|
|
free(elf_buf);
|
|
return ret;
|
|
}
|