Hi Anton!<br><br>Thanks for the hint! You're right: it is "callq    __isoc99_fscanf" in .s file. My mistake is that I'm taking a function name directly from CallInst and trying to dlsym it from the running executable. Now I'm using mangler.getNameWithPrefix method to get the actual name, and it works.<br>
<br>Best regards,<br>- D.<br>
<br><div class="gmail_quote">2012/12/25 Anton Korobeynikov <span dir="ltr"><<a href="mailto:anton@korobeynikov.info" target="_blank">anton@korobeynikov.info</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div>> While testing a File I/O sample program, I've encountered a link failure due<br>
> to missing implementation of "\01__isoc99_fscanf" function. I think this<br>
> function should be named "__isoc99_fscanf" instead. Please see the program<br>
> code and LLVM IR generated by DragonEgg and clang below. It shows that clang<br>
> generates "__isoc99_fscanf", while DragonEgg gives "\01__isoc99_fscanf". We<br>
> generally use DragonEgg as our compiler frontend, so it is more important.<br>
> What could be the reason of "\01" issue?<br>
</div>\01 is the magic prefix from asm("") thing in C sources. Basically<br>
this is the instruction to mangler not to change the name in any way,<br>
so, it should be emitted to assembler / binary code as<br>
"__isoc99_fscanf".<br>
<br>
How does .s / .o look like?<br>
<br>
--<br>
With best regards, Anton Korobeynikov<br>
Faculty of Mathematics and Mechanics, Saint Petersburg State University<br>
</blockquote></div><br>