I've been working on a run time linking system for C++ in windows x86 which uses clang and llvm. As part of the run time linking system some system libraries like printf are linked into code which is loaded into memory dynamically at run time (the address of the external function is written in at the call site as you would expect for function relocations). I ran into a problem where printf stopped working correctly in the dynamically linked code. I recently updated llvm to the latest repo version and printf has somehow started working again. I don't understand how this is possible. Because as far as I know, the system function printf has nothing to do with the version of llvm or clang being used and I didn't change anything else. printf is imported from msvcrt.lib. How can the integrity of this function in the library msvcrt be affected by updating the llvm/clang code? I'm sure that it isn't possible. Anyone have any ideas or theories about how this could have happened?