[llvm-dev] Intermodule Program Analysis

Sean Bartell via llvm-dev llvm-dev at lists.llvm.org
Sat Apr 24 19:28:37 PDT 2021


Hi Ahmad,

llvm-link, as Jakub suggested, is the best option if it works. If it doesn't work, maybe because the binaries call dlopen or depend on the way dynamic linking works, you might be able to use a research tool I developed last year that helps analyze/optimize dynamically linked code as if it were statically linked. More info here: https://github.com/yotann/bcdb/tree/master/docs/guided-linking

Sean

On Sat, Apr 24, 2021, at 05:04, Ahmad Nouralizadeh Khorrami via llvm-dev wrote:
> Thank you both for the answers, I will try! 
> Regards.
> 
> On Saturday, 24 April 2021, pawel k. <pawel.kunio at gmail.com> wrote:
> 
>> True that. Compile everything to bitcode and analyze it ipo. Link libs way you want them in last stage. 
>> 
>> Br,
>> Pk
>> 
>> sob., 24.04.2021, 04:01 użytkownik Jakub (Kuba) Kuderski <kubakuderski at gmail.com> napisał:
>>> >  I have to analyze both binaries (i.e., main and gtk.so) in a single pass. How is it possible? 
>>> 
>>> You can compile each with gllvm, extract bitcode, and link those bitcode files together with llvm-link.
>>> 
>>> 
>>> On Fri, Apr 23, 2021 at 8:52 PM Ahmad Nouralizadeh Khorrami via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>>> Hi Pawel, 
>>>> Yes.
>>>> 
>>>> On Saturday, 24 April 2021, pawel k. <pawel.kunio at gmail.com> wrote:
>>>> 
>>>>> Hello, 
>>>>> Do You have sources for all the libraries that will be distributed as dlls?
>>>>> 
>>>>> Best regards,
>>>>> Pawel Kunio
>>>>> 
>>>>> pt., 23.04.2021, 22:02 użytkownik Ahmad Nouralizadeh Khorrami via llvm-dev <llvm-dev at lists.llvm.org> napisał:
>>>>>> Hi, 
>>>>>> Typical whole program IR level analyses are done by means of module passes. The modules should be linked before the analysis process.
>>>>>> In some rare cases, the analysis needs to be performed across the whole user level code. In other words, suppose that the bitcode files for the program and all shared libraries are available. Also, suppose that the libraries can not be linked, statically. Is it possible to run an analysis (e.g., taint analysis or constant propagation) on the whole user level software stack (at the IR level)? If not, is there any better approach?
>>>>>> Regards.
>>>>>> _______________________________________________
>>>>>> LLVM Developers mailing list
>>>>>> llvm-dev at lists.llvm.org
>>>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <https://urldefense.com/v3/__https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev__;!!DZ3fjg!u4VQPAnIiZn7aZ7cCB30yAsuwi4iG2eMe2cGZ5zGFYuMB1KV04QbMyHyE3rITRoX7Bs$>
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> llvm-dev at lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <https://urldefense.com/v3/__https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev__;!!DZ3fjg!u4VQPAnIiZn7aZ7cCB30yAsuwi4iG2eMe2cGZ5zGFYuMB1KV04QbMyHyE3rITRoX7Bs$>
>>> 
>>> 
>>> -- 
>>> 
>>> Jakub Kuderski
> 
> *Attachments:*
>  * ATT00001.txt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210424/e11f60b3/attachment-0001.html>


More information about the llvm-dev mailing list