183322Speter$FreeBSD$
283322Speter
3186824Sluigilinker.hints file consists from the one or more records,
4186824Sluigiand is processed by sys/kern/kern_linker.c::linker_hints_lookup()
583322Speter
6186824SluigiFirst record of file is special and determines its version:
7186824Sluigi
883322Speterint	version;
983322Speter
1083322Speter    All subsequent records have following format:
1183322Speter    
1283322Speterstruct record {
1383322Speter	int	length;		/* length of following data */
1483322Speter	char	data[length];
1583322Speter};
1683322Speter
1783322Speter    Each record is aligned on sizeof(int) boundary. First integer of the field
1883322Speter'data' determines its type:
1983322Speter
2083322Speterstruct data {
21186824Sluigi	int	type;		/* type of data. currently MDT_* values */
2283322Speter};
2383322Speter
2483322Speter    The rest of record depends on the type.
2583322Speter
2683322Speterstruct string {
27186824Sluigi	uint8_t	length;		/* length of string */
2883322Speter	char	val[];		/* string itself (no terminating zero) */
2983322Speter};
3083322Speter
3183322Speterstruct data_mdt_version {
3283322Speter	int	type = MDT_VERSION;
3383322Speter	struct string	modname;
34186824Sluigi	/* padding */
3583322Speter	int	version;
3683322Speter	struct string	kldname;
37186824Sluigi	/* padding */
3883322Speter};
3983322Speter
4083322Speterstruct data_mdt_module {
41186824Sluigi	int	type = MDT_MODULE;
4283322Speter	struct string	modname;
4383322Speter	struct string	kldname;
44186824Sluigi	/* padding */
4583322Speter};
46