This series implements the changes proposed in #5153 . All changes are implemented in a way that is fully backward compatible, i.E. the current install tree is kept as default. Also drrun / drfrondenlib and the DynamoRIOConfig cmake scripts are fully backward compatible and can handle both layouts.
The new install layout can be activated by setting -DUSE_GNU_DIR_LAYOUT=ON.
A sample debianization (packaging for Debian ) is also provided (that could either live here in the project, or in a dedicated debian-only project). Sample Debian packages can be build using:
# assuming we are in the DR root
mk-build-deps -i -t "apt-get -y"
dpkg-buildpackage -us -uc -b
When installing these packages, also a find_package(DynamoRIO) properly works.
For further details, have a look at the commit messages.
Open aspects:
- Injection via drrun / drfrondendlib: Currently, we specialize on
-root /and hard-coded path. This works well, but path for all architectures have to be hard-coded into the binaries. It would be better to first look in the provided DR root. If it is no DR root, continue by searching well-known library install paths. This would simplify packaging for other distributions as well. - Cross-compiling for armhf:
undefined symbol: GLOBAL DEFAULT UND __aeabi_ldiv0 - conf.d style client registering: Instead of using the drrun32 / drrun64 lists, client registration should happen by placing the
<tool>.drrun<XX>in/etc/DynamoRIO/tools.d/, so DR clients can also easily be packaged and are automatically detected by drrun. A client would then just drop aclient.drrun64in this folder.