mirror of
https://github.com/D4C1-Labs/Flipper-ARF.git
synced 2026-04-14 11:46:23 +00:00
46 lines
1.3 KiB
C
46 lines
1.3 KiB
C
#include <stdio.h>
|
|
|
|
#include "m-array.h"
|
|
#include "m-tuple.h"
|
|
#include "m-dict.h"
|
|
#include "m-string.h"
|
|
|
|
// Let's define a tuple composed of (offset, value) and register it
|
|
TUPLE_DEF2(symbol, (offset, long), (value, long))
|
|
#define M_OPL_symbol_t() TUPLE_OPLIST(symbol, M_DEFAULT_OPLIST, M_DEFAULT_OPLIST)
|
|
|
|
// Let's define an array of such tuple and register it
|
|
ARRAY_DEF(array_symbol, symbol_t)
|
|
#define M_OPL_array_symbol_t() ARRAY_OPLIST(array_symbol, M_OPL_symbol_t())
|
|
|
|
// Let's define a dictionnary associating a string_t to such an array and register it
|
|
DICT_DEF2(sections, string_t, array_symbol_t)
|
|
#define M_OPL_sections_t() DICT_OPLIST(sections, STRING_OPLIST, M_OPL_array_symbol_t())
|
|
|
|
int main(int argc, const char *argv[])
|
|
{
|
|
if (argc < 2) abort();
|
|
FILE *f = fopen(argv[1], "rt");
|
|
if (!f) {
|
|
fprintf(stderr, "ERROR: Cannot open %s\n", argv[1]);
|
|
return 2;
|
|
}
|
|
|
|
// Create & initialize sc as sections_t
|
|
M_LET(sc, sections_t) {
|
|
// Read the section from the FILE
|
|
sections_in_str(sc, f);
|
|
// Get the section named .text
|
|
array_symbol_t *a = sections_get(sc, STRING_CTE(".text"));
|
|
if (a == NULL) {
|
|
printf("There is no .text section.");
|
|
} else {
|
|
// Print its content
|
|
printf("Section .text is :");
|
|
array_symbol_out_str(stdout, *a);
|
|
printf("\n");
|
|
}
|
|
}
|
|
return 0;
|
|
}
|