The readelf utility (already shipped with the solana tools) shows meta-information about ELF files, such as symbol tables. It is useful for investigating "unresolved symbol" errors that crop up at runtime. This commit also fixes the objdump flags (two dashes are required and there is no "color" option) as well as a few typos.
Development
Quick start
To get started create a makefile
containing:
include path/to/bpf.mk
and src/program.c
containing:
#include <solana_sdk.h>
bool entrypoint(const uint8_t *input) {
SolKeyedAccount ka[1];
uint8_t *data;
uint64_t data_len;
if (!sol_deserialize(buf, ka, SOL_ARRAY_SIZE(ka), NULL, &data, &data_len)) {
return false;
}
print_params(1, ka, data, data_len);
return true;
}
Then run make
to build out/program.o
.
Run make help
for more details.
Unit tests
Built-in support for unit testing is provided by the
Criterion test framework.
To get started create the file test/example.c
containing:
#include <criterion/criterion.h>
#include "../src/program.c"
Test(test_suite_name, test_case_name) {
cr_assert(true);
}
Then run make test
.
Limitations
- Programs must be fully contained within a single .c file
- No libc is available but
solana_sdk.h
provides a minimal set of primitives