c - Multiple decorated/mangled versions from the same function in a single library -
when dump external symbols of library, may find there multiple versions of same function name; such case printf
function c library, find names like
__imp__printf _printf ___imp___printf_l
why there no 1 version of function?
when tried see obj member in library belong to, found belong same obj file (an import library) have 1 version, _printf
, , proc
name among these versions, , rest of them "data".
the library msvcrtd.lib , library member msvcr100d.dll, platform microsoft windows 7 , visual c++.
can explain me?
edit: adding of "printf's" in msvcrtd.lib library eye catch, , there more.
some of them belong same obj member in library( according it's offset number in pictures), , not . need understand why of these versions of printf's exist in c library ? exist support several compilers(with several mangling) might call printf function? because when called printf masm decorated _printf
, when called c compiler , decorated __imp__printf
, guessed these multiple versions might exist support different compilers might use library, correct or not?
please need understand linkers , how work , , answer question me lot. there 1 printf call time, why linker needs of these?
Comments
Post a Comment