<div>Hi John,</div><div><br></div><div>Thank you for your advice.</div><div>LIBS and LDFLAGS work for the configure script,</div><div>but they gave errors in the make stage for apache and mysql.</div><div><br></div><div>I used either of the following ones with other flags:</div>

<div>- export LIBS="-L/home/sangmin/Dropbox/Falcon/bin/ -ldummy"</div><div>- export LDFLAGS="-L/home/sangmin/Dropbox/Falcon/bin/ -ldummy"</div><div><br></div><div>Here are the error messages:</div><div>

<br></div><div>Compile error (apache): </div><div>make[3]: Entering directory `/home/sangmin/Concurrency/apache/srclib/apr'</div><div>/bin/bash /home/sangmin/Concurrency/apache/srclib/apr/libtool --silent --mode=link llvm-gcc -use-gold-plugin -pthread -O4 -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -I./include -I../include -version-info 9:5:9 -L/home/sangmin/Dropbox/Falcon/bin/ -ldummy -o <a href="http://libapr-0.la">libapr-0.la</a> -rpath /home/sangmin/Concurrency/apache-25520-llvm//lib strings/apr_cpystrn.lo strings/apr_fnmatch.lo strings/apr_snprintf.lo <skip></div>

<div>collect2: ld terminated with signal 6 [Aborted]</div><div>ld: /home/sangmin/Dropbox/Falcon/src/llvm-2.7/include/llvm/Support/Casting.h:200: typename llvm::cast_retty<To, From>::ret_type llvm::cast(const Y&) [with X = llvm::Instruction, Y = llvm::Value*]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed.</div>

<div>Stack dump:</div><div>0.<span class="Apple-tab-span" style="white-space:pre">  </span>Running pass 'Function Pass Manager' on module 'ld-temp.o'.</div><div>1.<span class="Apple-tab-span" style="white-space:pre">        </span>Running pass 'Function pass' on function '@apr_proc_other_child_refresh_all'</div>

<div><br></div><div>Compile error (mysql): </div><div>ake[2]: Entering directory `/home/sangmin/Concurrency/mysql/libmysql'</div><div>/bin/bash ../libtool --mode=link llvm-gcc -use-gold-plugin  -O3 -DDBUG_OFF -O4   -L/home/sangmin/Dropbox/Falcon/bin/ -ldummy -rdynamic  -o conf_to_src  conf_to_src.o  -lz -lcrypt -lnsl -lm  </div>

<div>llvm-gcc -use-gold-plugin -O3 -DDBUG_OFF -O4 -rdynamic -o conf_to_src conf_to_src.o  -L/home/sangmin/Dropbox/Falcon/bin/ -ldummy -lz -lcrypt -lnsl -lm</div><div>collect2: ld terminated with signal 6 [Aborted]</div><div>

ld: /home/sangmin/Dropbox/Falcon/src/llvm-2.7/include/llvm/Support/Casting.h:200: typename llvm::cast_retty<To, From>::ret_type llvm::cast(const Y&) [with X = llvm::Instruction, Y = llvm::Value*]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed.</div>

<div>Stack dump:</div><div>0.<span class="Apple-tab-span" style="white-space:pre">  </span>Running pass 'Function Pass Manager' on module 'ld-temp.o'.</div><div>1.<span class="Apple-tab-span" style="white-space:pre">        </span>Running pass 'Function pass' on function '@print_arrays_for'</div>

<div><br></div><div>Any thoughts?</div><div><br></div><div>Thanks,</div><div>Sangmin</div><br><div class="gmail_quote">On Thu, Mar 24, 2011 at 7:26 PM, John Criswell <span dir="ltr"><<a href="mailto:criswell@illinois.edu">criswell@illinois.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">On 3/24/11 6:23 PM, Sangmin Park wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I need advice in instrumenting programs using liblto and gold plugin.<br>
Specifically, I added my pass in tools/lto/LTOCodeGenerator.cpp.<br>
My pass inserts functions (myLoad and myStore) for some load and store instructions.<br>
The functions exist in a library file.<br>
<br>
I found that the approach works for the example in the link:<br>
<a href="http://llvm.org/docs/GoldPlugin.html" target="_blank">http://llvm.org/docs/GoldPlugin.html</a><br>
$ llvm-gcc -flto a.c -c -o a.o<br>
$ ar q a.a a.o<br>
$ llvm-gcc b.c -c -o b.o<br>
$ llvm-gcc -use-gold-plugin a.a b.o -L<path_to_my_lib> -l<my_lib> -o main<br>
<br>
I also found that I can compile large programs (apache and mysql) with gold plugin.<br>
Here is the command:<br>
$ export CC="llvm-gcc -use-gold-plugin"; export CXX="llvm-g++ -use-gold-plugin"; export RANLIB=/bin/true; export CFLAGS="-O4";<br>
$ ./configure<br>
$ make<br>
$ make install<br>
<br>
However, I cannot compile large programs with modified liblto and gold plugin.<br>
That is because I have to specify the path to my library containing myLoad and myStore in configure and makefile.<br>
<br>
Is there any fancy way to handle this problem?<br>
</blockquote>
<br></div></div>
The configure scripts might recognize the LIBS and LDFLAGS variables and add them to the linker options as it does for CFLAGS above.<br>
<br>
-- John T.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks in advance.<br>
<br>
Sangmin<br>
</blockquote>
<br>
</blockquote></div><br>