15 extern void die(char *fmt, ...);
16 extern void usage(void);
17 extern void error(char *fmt, ...);
18 extern uint16_t ipchksum(const void *data, unsigned long length);
19 extern uint16_t add_ipchksums(unsigned long offset, uint16_t sum, uint16_t new);
20 extern void *xmalloc(size_t size, const char *name);
21 extern void *xrealloc(void *ptr, size_t size, const char *name);
22 extern char *slurp_file(const char *filename, off_t *r_size);
23 extern char *slurp_decompress_file(const char *filename, off_t *r_size);
24 extern struct memelfphdr *add_program_headers(struct memelfheader *ehdr, int count);
25 extern struct memelfnote *add_notes(struct memelfheader *ehdr, int count);
27 typedef char *(probe_t)(char *kernel_buf, off_t kernel_size);
28 typedef int (mkelf_t)(int argc, char **argv,
29 struct memelfheader *hdr, char *kernel_buf, off_t kernel_size);
30 typedef void (usage_t)(void);
38 #if BYTE_ORDER == LITTLE_ENDIAN
39 #define cpu_to_le16(val) (val)
40 #define cpu_to_le32(val) (val)
41 #define cpu_to_le64(val) (val)
42 #define cpu_to_be16(val) bswap_16(val)
43 #define cpu_to_be32(val) bswap_32(val)
44 #define cpu_to_be64(val) bswap_64(val)
45 #define le16_to_cpu(val) (val)
46 #define le32_to_cpu(val) (val)
47 #define le64_to_cpu(val) (val)
48 #define be16_to_cpu(val) bswap_16(val)
49 #define be32_to_cpu(val) bswap_32(val)
50 #define be64_to_cpu(val) bswap_64(val)
52 #if BYTE_ORDER == BIG_ENDIAN
53 #define cpu_to_le16(val) bswap_16(val)
54 #define cpu_to_le32(val) bswap_32(val)
55 #define cpu_to_le64(val) bswap_64(val)
56 #define cpu_to_be16(val) (val)
57 #define cpu_to_be32(val) (val)
58 #define cpu_to_be64(val) (val)
59 #define le16_to_cpu(val) bswap_16(val)
60 #define le32_to_cpu(val) bswap_32(val)
61 #define le64_to_cpu(val) bswap_64(val)
62 #define be16_to_cpu(val) (val)
63 #define be32_to_cpu(val) (val)
64 #define be64_to_cpu(val) (val)
67 #define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
77 unsigned long e_entry;
78 struct memelfphdr *e_phdr;
79 struct memelfnote *e_notes;
100 #define OPT_VERSION 'v'
102 #define OPT_KERNEL 256
103 #define OPT_OUTPUT 257
106 #define MKELF_OPTIONS \
107 { "help", 0, 0, OPT_HELP }, \
108 { "version", 0, 0, OPT_VERSION }, \
109 { "kernel", 1, 0, OPT_KERNEL }, \
110 { "output", 1, 0, OPT_OUTPUT }, \
111 { "type", 1, 0, OPT_TYPE },
113 #define MKELF_OPT_STR "hvt:"
115 extern probe_t vmlinux_i386_probe;
116 extern probe_t bzImage_i386_probe;
117 extern probe_t linux_i386_probe;
118 extern mkelf_t linux_i386_mkelf;
119 extern usage_t linux_i386_usage;
121 extern probe_t linux_ia64_probe;
122 extern mkelf_t linux_ia64_mkelf;
123 extern usage_t linux_ia64_usage;
125 #endif /* MKELFIMAGE_H */