Skip to content

Commit 3918165

Browse files
committed
AVR: fix build with older compilers.
Signed-off-by: Glenn Baker <[email protected]>
1 parent 9311139 commit 3918165

File tree

2 files changed

+38
-38
lines changed

2 files changed

+38
-38
lines changed

samples/sample_avr.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ static const uint8_t CODE[] =
1818
"\x01\x96" // adiw r24, 0x01
1919
"\x08\x95" // ret
2020
;
21-
static const uint32_t CODE_SIZE = sizeof(CODE) - 1;
22-
static const uint32_t CODE_SIZE_ALIGNED = (CODE_SIZE + 0xff) & -0x100;
21+
enum {
22+
CODE_SIZE = sizeof(CODE) - 1,
23+
CODE_SIZE_ALIGNED = (CODE_SIZE + 0xff) & -0x100,
24+
};
2325

2426
static void hook_block(uc_engine *uc, uint64_t address, uint32_t size,
2527
void *user_data)

tests/unit/test_avr.c

+34-36
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,26 @@
77
#define PAGE_ALIGN(x) (((x) + PAGE_SIZE - 1) & -PAGE_SIZE)
88

99
enum {
10-
ADDR__init__,
11-
ADDR_test_func,
12-
ADDR_test_1,
13-
ADDR_main,
14-
ADDR_abort,
15-
ADDR_exit,
16-
ADDR__stop_program,
17-
ADDR__data__,
10+
ADDR__init__ = 0x0000, // __init__
11+
ADDR_test_func = 0x001a, // test_func()
12+
ADDR_test_1 = 0x0030, // test_1()
13+
ADDR_main = 0x0058, // main()
14+
ADDR_abort = 0x0062, // abort()
15+
ADDR_exit = 0x006c, // _exit()
16+
ADDR__stop_program = 0x006e, // __stop_program()
17+
ADDR__data__ = 0x0070, // __data__
18+
ADDR__data__end = 0x0072,
1819
};
1920

20-
static const uint16_t ADDR[] = {
21-
0x0000, // __init__
22-
0x001a, // test_func()
23-
0x0030, // test_1()
24-
0x0058, // main()
25-
0x0062, // abort()
26-
0x006c, // _exit()
27-
0x006e, // __stop_program()
28-
0x0070, // __data__
29-
0x0072, // __size__
21+
enum {
22+
SIZE__init__ = ADDR_test_func - ADDR__init__,
23+
SIZE_test_func = ADDR_test_1 - ADDR_test_func,
24+
SIZE_test_1 = ADDR_main - ADDR_test_1,
25+
SIZE_main = ADDR_abort - ADDR_main,
26+
SIZE_abort = ADDR_exit - ADDR_abort,
27+
SIZE_exit = ADDR__stop_program - ADDR_exit,
28+
SIZE__stop_program = ADDR__data__ - ADDR__stop_program,
29+
SIZE__data__ = ADDR__data__end - ADDR__data__,
3030
};
3131

3232
static const uint8_t FLASH[] =
@@ -128,7 +128,7 @@ static void test_avr_basic_alu(void)
128128
OK(uc_reg_write(uc, UC_AVR_REG_R24W, &r_func_arg0));
129129
OK(uc_reg_write(uc, UC_AVR_REG_R22W, &r_func_arg1));
130130

131-
const uint64_t code_start = ADDR[ADDR_test_func] + 8;
131+
const uint64_t code_start = ADDR_test_func + 8;
132132
OK(uc_emu_start(uc, code_start, code_start + 4, 0, 0));
133133

134134
OK(uc_reg_read(uc, UC_AVR_REG_PC, &r_pc));
@@ -186,10 +186,8 @@ static void test_avr_basic_mem(void)
186186
uc_hook eventmem_hook;
187187
MEM_HOOK_RESULTS eventmem_trace = {0};
188188

189-
const uint16_t DATA_BASE = ADDR[ADDR__data__];
190-
const uint16_t DATA_SIZE = ADDR[ADDR__data__+1] - DATA_BASE;
191-
const uint8_t *const DATA = &FLASH[ADDR[ADDR__data__]];
192-
uint8_t mem[DATA_SIZE];
189+
const uint8_t *const DATA = &FLASH[ADDR__data__];
190+
uint8_t mem[SIZE__data__];
193191

194192
uint32_t r_pc;
195193
int i;
@@ -198,21 +196,21 @@ static void test_avr_basic_mem(void)
198196
OK(uc_hook_add(uc, &eventmem_hook, UC_HOOK_MEM_VALID,
199197
test_avr_basic_mem_cb_eventmem, &eventmem_trace, 1, 0));
200198

201-
const uint64_t code_start = ADDR[ADDR__init__];
202-
OK(uc_emu_start(uc, code_start, ADDR[ADDR__init__+1], 0, 0));
199+
const uint64_t code_start = ADDR__init__;
200+
OK(uc_emu_start(uc, code_start, ADDR__init__ + SIZE__init__, 0, 0));
203201

204202
OK(uc_reg_read(uc, UC_AVR_REG_PC, &r_pc));
205-
TEST_CHECK(r_pc == ADDR[ADDR__init__+1]);
203+
TEST_CHECK(r_pc == ADDR__init__ + SIZE__init__);
206204

207205
// Check SRAM was correctly initialized with data from Flash program memory
208206
OK(uc_mem_read(uc, MEM_BASE, mem, sizeof(mem)));
209-
TEST_CHECK(memcmp(mem, DATA, DATA_SIZE) == 0);
207+
TEST_CHECK(memcmp(mem, DATA, SIZE__data__) == 0);
210208

211-
TEST_CHECK(eventmem_trace.count == 2*DATA_SIZE);
212-
for (i = 0; i < DATA_SIZE; i++) {
209+
TEST_CHECK(eventmem_trace.count == 2*SIZE__data__);
210+
for (i = 0; i < SIZE__data__; i++) {
213211
const MEM_HOOK_RESULT *const mr = &eventmem_trace.results[2*i];
214212
TEST_CHECK(mr->type == UC_MEM_READ);
215-
TEST_CHECK(mr->address == (UC_AVR_MEM_FLASH|(DATA_BASE+i)));
213+
TEST_CHECK(mr->address == (UC_AVR_MEM_FLASH|(ADDR__data__+i)));
216214
TEST_CHECK(mr->size == 1);
217215
TEST_CHECK(mr->value == 0);
218216

@@ -236,23 +234,23 @@ static void test_avr_full_exec(void)
236234

237235
uc_common_setup(&uc, 0, FLASH, FLASH_SIZE);
238236

239-
const uint64_t code_start = ADDR[ADDR__init__];
240-
OK(uc_emu_start(uc, code_start, ADDR[ADDR__init__+1], 0, 0));
237+
const uint64_t code_start = ADDR__init__;
238+
OK(uc_emu_start(uc, code_start, ADDR__init__ + SIZE__init__, 0, 0));
241239

242240
OK(uc_reg_read(uc, UC_AVR_REG_PC, &r_pc));
243-
TEST_CHECK(r_pc == ADDR[ADDR__init__+1]);
241+
TEST_CHECK(r_pc == ADDR__init__ + SIZE__init__);
244242

245243
r_sp = MEM_BASE + MEM_SIZE - 1;
246244
OK(uc_reg_write(uc, UC_AVR_REG_SP, &r_sp));
247245

248246
const uint64_t exits[] = {
249-
ADDR[ADDR_main],
250-
ADDR[ADDR__stop_program]
247+
ADDR_main,
248+
ADDR__stop_program
251249
};
252250
OK(uc_ctl_exits_enable(uc));
253251
OK(uc_ctl_set_exits(uc, exits, ARRAY_ELEMS(exits)));
254252

255-
const uint64_t code_main = ADDR[ADDR_main];
253+
const uint64_t code_main = ADDR_main;
256254
OK(uc_emu_start(uc, code_main, 0, 0, 0));
257255

258256
OK(uc_reg_read(uc, UC_AVR_REG_R25, &r[25]));

0 commit comments

Comments
 (0)