IDAClang to TILIB Migration Guide
The three-line rule
Almost the whole migration is mechanical:
idaclang <clang args> file.hbecomestilib -c -TC -hfile.h out.tilEvery clang argument gets a
-CTprefix, one-CTper token:-isysroot /path->-CT-isysroot -CT/path. Exceptions: -I and -D are native TILIB switches already forwarded to clang, so those move over unchanged (drop nothing, add nothing).--idaclang-tilname Xbecomes the positional output argument,--idaclang-tildesc "X"becomes-t"X". Most other--idaclang-*options either vanish or became the default.
Option mapping table
<clang arg>
-CT<clang arg>
one -CT per token; unfiltered, same freedom as idaclang
-I dir, -Ddef
-Idir, -Ddef
native; TILIB appends them to the clang command line itself
-x c++
-P
-P only picks -xc++ over -xc in the language guess; a no-op if you pass -CT-x... yourself
--idaclang-tilname <path>
positional out.til
mandatory now, there is no <header>.til default
--idaclang-tildesc <desc>
-t<desc>
if omitted, the description defaults to the header filename
--idaclang-macros <path>
-m<path>
plus -M<path> to generate the .mac file, which idaclang could not do
--idaclang-mangle-format <f>
-G<f>
same underlying mangling-format mechanism
--idaclang-log-argv
-v
prints CLANG command line: ...
--idaclang-log-ast, -macros, -udts, -files, -target, -predefined, -warnings, -all
gone
no replacement; -v and -z are the debugging tools
--idaclang-parse-static
default
functions with internal linkage are always stored
--idaclang-opaqify-objc
default
in Objective-C modes id and Class become void *, SEL becomes const char *. NSString is no longer remapped
--idaclang-smptrs <list>
none
TILIB has no smart-pointer flattening switch, and does not read CLANG_SMART_POINTERS from idaclang.cfg
--idaclang-extra-c-mangling
none
removed together with the old parser API
Last updated
Was this helpful?
