xref: /freebsd/usr.sbin/kldxref/fileformat (revision 9c6f92408c29a8980e7aec26a2590087c3b3d8ed)
19c6f9240SPeter Wemm$FreeBSD$
29c6f9240SPeter Wemm
39c6f9240SPeter Wemm    linker.hints file consists from the one or more records. First record of
49c6f9240SPeter Wemmfile is special and determines its version:
59c6f9240SPeter Wemm
69c6f9240SPeter Wemmint	version;
79c6f9240SPeter Wemm
89c6f9240SPeter Wemm    All subsequent records have following format:
99c6f9240SPeter Wemm
109c6f9240SPeter Wemmstruct record {
119c6f9240SPeter Wemm	int	length;		/* length of following data */
129c6f9240SPeter Wemm	char	data[length];
139c6f9240SPeter Wemm};
149c6f9240SPeter Wemm
159c6f9240SPeter Wemm    Each record is aligned on sizeof(int) boundary. First integer of the field
169c6f9240SPeter Wemm'data' determines its type:
179c6f9240SPeter Wemm
189c6f9240SPeter Wemmstruct data {
199c6f9240SPeter Wemm	int	type;		/* type of data. currently MTD_* values */
209c6f9240SPeter Wemm};
219c6f9240SPeter Wemm
229c6f9240SPeter Wemm    The rest of record depends on the type.
239c6f9240SPeter Wemm
249c6f9240SPeter Wemmstruct string {
259c6f9240SPeter Wemm	int	length;		/* length of string */
269c6f9240SPeter Wemm	char	val[];		/* string itself (no terminating zero) */
279c6f9240SPeter Wemm};
289c6f9240SPeter Wemm
299c6f9240SPeter Wemmstruct data_mdt_version {
309c6f9240SPeter Wemm	int	type = MDT_VERSION;
319c6f9240SPeter Wemm	struct string	modname;
329c6f9240SPeter Wemm	int	version;
339c6f9240SPeter Wemm	struct string	kldname;
349c6f9240SPeter Wemm};
359c6f9240SPeter Wemm
369c6f9240SPeter Wemmstruct data_mdt_module {
379c6f9240SPeter Wemm	int	type = MDT_VERSION;
389c6f9240SPeter Wemm	struct string	modname;
399c6f9240SPeter Wemm	struct string	kldname;
409c6f9240SPeter Wemm};
41