61119586c3f9402dcda40dc55be0ff7d88899e43
[wraplinux.git] / segment.h
1 /* ----------------------------------------------------------------------- *
2  *
3  *   Copyright 2008 H. Peter Anvin - All Rights Reserved
4  *
5  *   This program is free software; you can redistribute it and/or modify
6  *   it under the terms of the GNU General Public License as published by
7  *   the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
8  *   Boston MA 02110-1301, USA; either version 2 of the License, or
9  *   (at your option) any later version; incorporated herein by reference.
10  *
11  * ----------------------------------------------------------------------- */
12
13 /*
14  * segment.h
15  *
16  * Descriptor for memory segments
17  */
18
19 #ifndef SEGMENT_H
20 #define SEGMENT_H
21
22 #include <stdio.h>
23 #include <inttypes.h>
24
25 typedef uint32_t addr_t;
26
27 struct segment {
28         struct segment *next;
29         addr_t address;
30         addr_t length;
31         uint32_t sh_type;       /* Uses ELF constants, in host byte order */
32         uint32_t sh_flags;      /* d:o */
33         uint32_t p_flags;
34         const char *name;
35         const void *data;
36 };
37
38 struct segment *sort_segments(struct segment *list);
39 int output_elf(struct segment *segs, addr_t entry, FILE *out);
40 int output_nbi(struct segment *segs, addr_t entry, FILE *out);
41
42 #endif /* SEGMENT_H */