Skip to main content

Installing and Using LLVM Clang on Linux

Here are the specs (Hardware and software) of my machine
RAM: 8GB
Proc : Intel Core i7-4510U @ 2.00GHz
Linux mint 18 Cinnamon
word size - 64 bit
Kernel - 4.4.0-21-generic
swap Size - 10GB
HDD :  150GB

There are two ways of installing
1. Install from apt-get
2. Building from src files using tar.gz
Make sure to check this requirements.
GNU Make3.79, 3.79.1 Makefile/build processor
GCC >=4.8.0 C/C++ compiler
python >=2.7 Automated test suite
zlib >=1.2.3.4 Compression library //it worked without this

1. Install from apt-get

 $ sudo apt-get clang-3.9 llvm-3.9

Reference:  http://apt.llvm.org

2.  Building LLVM 3.9.1 from Source

  1. Download two tar file for llvm & clang from here
  2. Extract both the files inside some folder // say llvm
  3. Rename llvm-3.9.1.src folder as llvm-3.9 //LLVM_SRC
  4. Rename cfe-3.9.1.src folder as clang and move inside folder llvm-3.9/tools
  5. Create a folder llvm/llvm-build and cd llvm-build // LLVM_OBJ
  6. cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Release" -DLLVM_ENABLE_ASSERTIONS=On /home/rajz/install/llvm/llvm-3.9
  7. // after some time
  8. make -j2
  9. //after some more time
  10. sudo make install
  11. opt --version 
  12. clang --version 
  13. //Done
References: 
1. http://llvm.org/docs/GettingStarted.html
2. https://www.youtube.com/watch?v=4iVc204omI0
3. http://llvm.org/docs/CMake.html

Writing a Sample Pass using LLVM
1. Source folder for LLVM:
    ~/install/llvm/llvm-3.9
2. Build folder for LLVM:
    ~/install/llvm/llvm-build
3. Create a CMakeLists.txt file as below
   add_llvm_loadable_module( LLVMSample
        Sample.cpp
        PLUGIN_TOOL
        opt
        )
4. Create the Sample.cpp as below
#include "llvm/IR/Function.h"
#include "llvm/Pass.h"
#include "llvm/Support/raw_ostream.h"
using namespace llvm;
namespace {
struct Sample : public FunctionPass {
  static char ID;
  Sample() : FunctionPass(ID) {}

  bool runOnFunction(Function &F) override {
    errs() << "Sample: ";
    errs().write_escaped(F.getName()) << '\n';
    return false;
  }
}; // end of struct Sample
} // end of anonymous namespace

char Sample::ID = 0;
static RegisterPass X("sample", "Sample Hello World Pass ",
                              false /* Only looks at CFG */,
                              false /* Analysis Pass */);
5. Sample pass folders at:
    ~/install/llvm/llvm-3.9/lib/Analysis/Sample (contains Sample.cpp and CMakeLists.txt)
    ~/install/llvm/llvm-build/lib/Analysis/Sample (contains only the CMakeLists.txt)
6. Append a line in ~/install/llvm/llvm-3.9/lib/Analysis/CMakeLists.txt

       add_subdirectory(Sample)

7. Created shared library at ~/install/llvm/llvm-build/lib/LLVMSample.so

       $ cd ~/install/llvm/llvm-build
       $ make

8. To run analysis on a test1.c program:
    $ clang -S -O0 -emit-llvm test1.c -o test1.ll
    $ opt -load ~/install/llvm/llvm-build/lib/LLVMSample.so -disable-output -sample test1.ll

Reference
1. http://llvm.org/docs/WritingAnLLVMPass.html
2. AMR, PA TAs

Comments

Popular posts from this blog

Debian and it's love ...!

I have been using a lot of Linux/based distribution during my UG days. It all started with installing solaris on my 512MB RAM machine after an installation demo by CSE seniors(Krithika, Balachandran and others) . Then, I went on to Ubuntu, Fedora, OpenSUSE, Debian for reasons during my project work. Of all, my Favorite is Debian for their less memory or/and power consumption with simple neat looks. 

During my PG days I installed Ubuntu 14.04 and were using for the past 2 years (almost). Now that I wanted to get back to my fav Debian and went into so many issues which I haven't faced during those days. Moreover, hardware/software itself got too complicated with BIOS/UEFI/Legacy mode/Safeboot/Fastboot/Win8/Win10. 

Objective, I wanted to replace Ubuntu with Debian and still use it a dual boot alongside windows. Specs: Debian 8.4, Dell Inspiron 3000 series, I7, 8GB RAM

Initial steps 
0. To live boot F12 key at boot, I have to choose boot from pendrive under Legacy option in boot menu opti…

How to install themes on Ubuntu/Debian

Well well! This is my first Linux How TO.





If you get bored of looking at you default desktop theme and wallpaper then here is my suggestion. Now , I am going to demonstrate u how to change ur Linux(mostly all distros but i tried in Debian/Ubuntu) into a colorful looking one. As i have already installed my favorite collection (Slickness theme-MashupMaXo icons-minimalisticea wallpaper). I would demonstrate to you with a simple collection

For this tutorial i have used the following
Darker theme
Erectus icons
minimalisticea wallpaper

Download list
Download from here for Debian/Ubuntu (gnome-look.org/www.debian-art.org)
1.Download GTK themes (panel color & look of each window)
2.Download icons (for iconic view of folder/disks)
3.Download wallpapers (obvious)
4.Download GDM theme (for login screen)

Procedure
1.Downloaded GTK theme package.
2.Right click on desktop select change background. Select theme tab and click install select the downloaded theme pakage
3.After installation success.select the…

Configure IITM's CSE Department mail on Andriod

Going to follow K.I.S.S policy. DIY seeing snapshots below. That's it. Thanks! 
Caution: Don't change any default ports.. Just edit the server and security type alone as below. Email-ID = DCF_USERNAME@cse.iitm.ac.in
Step 1- Open Gmail App> Settings>Add account>  IMAP/POP3>Email-ID/Password > IMAP  (I have choosen IMAP. But it should naturally work  for both)
Step 2(In settings)- Email ID > Password>csemail.iitm.ac.in > SSL/TSL (Accept all cert).
Step 3(Out settings)- Email ID> Password>csemail.iitm.ac.in > STARTTLS (Accept all cert)

P.S.
K.I.S.S - (Keep It Simple Stupid) 
DIY - (Do It Yourself)