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