1
1
#include "elf_tools.h"
2
- #include "tiny_c/tiny_c.h"
2
+ #include "../tiny_c/tiny_c.h"
3
+ #include "loader_lib.h"
3
4
4
5
#define ELF_HEADER_LEN sizeof(ELF_HEADER)
5
6
@@ -12,7 +13,7 @@ const uint8_t ELF_MAGIC[] = {0x7f, 'E', 'L', 'F'};
12
13
#define EXAMPLE2 (fmt , ...) tiny_c_fprintf(STDERR, fmt, ##__VA_ARGS__)
13
14
14
15
bool get_elf_data (int fd , struct ElfData * elf_data ) {
15
- ELF_HEADER * elf_header = tinyc_malloc (ELF_HEADER_LEN );
16
+ ELF_HEADER * elf_header = loader_malloc_arena (ELF_HEADER_LEN );
16
17
ssize_t header_read_len = tiny_c_read (fd , elf_header , ELF_HEADER_LEN );
17
18
if (header_read_len != ELF_HEADER_LEN ) {
18
19
tiny_c_fprintf (STDERR , "read failed\n" );
@@ -29,14 +30,14 @@ bool get_elf_data(int fd, struct ElfData *elf_data) {
29
30
}
30
31
31
32
size_t program_headers_len = elf_header -> e_phnum * elf_header -> e_phentsize ;
32
- PROGRAM_HEADER * program_headers = tinyc_malloc (program_headers_len );
33
+ PROGRAM_HEADER * program_headers = loader_malloc_arena (program_headers_len );
33
34
ssize_t ph_read_len = tiny_c_read (fd , program_headers , program_headers_len );
34
35
if ((size_t )ph_read_len != program_headers_len ) {
35
36
BAIL ("read failed\n" )
36
37
}
37
38
38
39
struct MemoryRegion * memory_regions =
39
- tinyc_malloc (sizeof (struct MemoryRegion ) * elf_header -> e_phnum );
40
+ loader_malloc_arena (sizeof (struct MemoryRegion ) * elf_header -> e_phnum );
40
41
41
42
size_t j = 0 ;
42
43
for (size_t i = 0 ; i < elf_header -> e_phnum ; i ++ ) {
@@ -46,14 +47,13 @@ bool get_elf_data(int fd, struct ElfData *elf_data) {
46
47
}
47
48
48
49
uint32_t file_offset = program_header -> p_offset /
49
- program_header -> p_align *
50
- program_header -> p_align ;
50
+ program_header -> p_align * program_header -> p_align ;
51
51
uint32_t start = program_header -> p_vaddr / program_header -> p_align *
52
- program_header -> p_align ;
52
+ program_header -> p_align ;
53
53
uint32_t end = start +
54
- program_header -> p_memsz / program_header -> p_align *
55
- program_header -> p_align +
56
- program_header -> p_align ;
54
+ program_header -> p_memsz / program_header -> p_align *
55
+ program_header -> p_align +
56
+ program_header -> p_align ;
57
57
58
58
memory_regions [j ++ ] = (struct MemoryRegion ){
59
59
.start = start ,
0 commit comments