1 /*
2 * Copyright 2024 Intel Corporation
3 * SPDX-License-Identifier: MIT
4 */
5
6 #pragma once
7
8 #include <stdarg.h>
9 #include <stdint.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12
13 static inline void
_fail(const char * prefix,const char * format,...)14 _fail(const char *prefix, const char *format, ...)
15 {
16 va_list args;
17
18 va_start(args, format);
19 if (prefix)
20 fprintf(stderr, "%s: ", prefix);
21 vfprintf(stderr, format, args);
22 va_end(args);
23
24 abort();
25 }
26
27 #define _fail_if(cond, prefix, ...) do { \
28 if (cond) \
29 _fail(prefix, __VA_ARGS__); \
30 } while (0)
31
32 #define fail_if(cond, ...) _fail_if(cond, NULL, __VA_ARGS__)
33
34 #define fail(...) fail_if(true, __VA_ARGS__)
35
36 void write_header(FILE *f);
37 void write_buffer(FILE *f, uint64_t offset, const void *data, uint64_t size, const char *name);
38 void write_hw_image_buffer(FILE *f, const void *data, uint64_t size);
39 void write_exec(FILE *f, uint64_t offset);
40