aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/kldxref/fileformat
blob: 81d115c73bb613ce9fd32308cf7b62ae3f9831e5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$FreeBSD$

linker.hints file consists from the one or more records,
and is processed by sys/kern/kern_linker.c::linker_hints_lookup()

First record of file is special and determines its version:

int	version;

    All subsequent records have following format:
    
struct record {
	int	length;		/* length of following data */
	char	data[length];
};

    Each record is aligned on sizeof(int) boundary. First integer of the field
'data' determines its type:

struct data {
	int	type;		/* type of data. currently MDT_* values */
};

    The rest of record depends on the type.

struct string {
	uint8_t	length;		/* length of string */
	char	val[];		/* string itself (no terminating zero) */
};

struct data_mdt_version {
	int	type = MDT_VERSION;
	struct string	modname;
	/* padding */
	int	version;
	struct string	kldname;
	/* padding */
};

struct data_mdt_module {
	int	type = MDT_MODULE;
	struct string	modname;
	struct string	kldname;
	/* padding */
};