Build and Installation¶
Fetching Sources¶
The source code can be cloned from the git repository upstream with the git clone command.
$ git clone https://gitlab.freedesktop.org/tomstdenis/umr.git
Cloning into 'umr'...
remote: Counting objects: 1208, done.
remote: Compressing objects: 100% (1082/1082), done.
remote: Total 1208 (delta 897), reused 138 (delta 117)
Receiving objects: 100% (1208/1208), 2.31 MiB | 872.00 KiB/s, done.
Resolving deltas: 100% (897/897), done.
At this point a umr directory should contain the public master branch.
Dependencies¶
- The umr build depends on the following additional libraries:
pthreads
ncurses
pciaccess
libdrm
llvm
These can both be found in Fedora and Ubuntu (as well as other Linux distributions).
- In Fedora they are called:
(pthreads is typically included with glibc)
ncurses-devel
libpciaccess-devel
libdrm-devel
llvm-devel
- In Ubuntu they are called:
(pthreads is typically included with glibc)
libncurses-dev
libpciaccess-dev
libdrm-dev
- As well as requires the following tools:
cmake (v3.0.1 or higher)
gcc
Finally, umr requires typically a new Linux kernel as of this writing 4.14 or higher will work. This is because umr relies on debugfs entries that newer kernels provide. Very limited functionality may be possible with older kernels but is not supported by the development team.
Compiling and Installation¶
With umr cloned and the libraries installed you can build the tool with the following commands run from inside the umr directory.
$ cmake .
$ make -j install
After which you can also make umr executable as a normal user with
$ chmod +s `which umr`
Though keep in mind that this introduces a security vulnerability so you should only do this on test and development machines and not deployed machines.
At this point umr should be installed and can be invoked by running the command ‘umr’.
Optional Packages¶
The GUI mode and its serverside counterpart can be disabled or build individually using the UMR_NO_GUI and UMR_NO_SERVER options, e.g.:
$ cmake -DUMR_NO_GUI=ON .
You may disable LLVM dependencies by adding UMR_NO_LLVM to your shell environment:
$ cmake -DUMR_NO_LLVM=ON .
This will disable shader disassembly and result in “…” being printed for all opcode decodes.
You may disable libDRM dependencies by adding UMR_NO_DRM to your shell environment:
$ cmake -DUMR_NO_DRM=ON .
This will disable libdrm support which will render some “–top” output nonsensical.