diff options
Diffstat (limited to 'usr.sbin/kldxref/fileformat')
-rw-r--r-- | usr.sbin/kldxref/fileformat | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/usr.sbin/kldxref/fileformat b/usr.sbin/kldxref/fileformat new file mode 100644 index 0000000..81d115c --- /dev/null +++ b/usr.sbin/kldxref/fileformat @@ -0,0 +1,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 */ +}; |