-
Notifications
You must be signed in to change notification settings - Fork 156
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add debuginfod support #736
Conversation
Debuginfod is a lightweight web service that indexes ELF/DWARF debugging resources by build-id and serves them over HTTP. This patch enables dyninst to query debuginfod servers for a file's separate debuginfo when it otherwise cannot be found. This patch also adds a cmake option -DENABLE_DEBUGINFOD to control whether dyninst is built with debuginfod support. This requires having the debuginfod client library (libdebuginfod) and header installed. Debuginfod is distributed with elfutils, for more information see https://sourceware.org/elfutils/Debuginfod.html
Ping, just wondering if there's been any progress setting up a local debuginfod server to verify the patch. debuginfod should be built from elfutils 0.179. Just include the configure option '--enable-debuginfod'. This requires having libmicrohttpd, libcurl, sqlite3 and libarchive installed. Once installed, set the DEBUGINFOD_URLS environment variable to 'http://localhost:8002' (the server listens to port 8002 by default). A debuginfod server will start up and index a mutatee's separate debuginfo with the following command: $ debuginfod -F directory_ containing_separate_debuginfo If this debuginfo file is stored in a location that Elf_X::findDebugFile() cannot normally locate and dyninst is built with the -DENABLE_DEBUGINFOD option added in this patch, then the file should be acquired via debuginfod_find_debuginfo() within Elf_X::findDebugFile(). |
There are only three Dyninst developers, and we're all currently fixing bugs to try to push the 10.2 release out. We greatly appreciate folks contributing code, but we just don't have the cycles to test this right now. I will try to take a look at it next week sometime, but I can't make any promises right now. I'm assuming this PR is working for you in your local environment? |
Not a problem. The PR is working for me locally. |
https://bottle.cs.wisc.edu/search?dyninst_branch=PR736&status=OK LGTM. I ran it with and without debuginfod. We don't have any explicit test for that, but it didn't introduce any regressions. If things are working on your end, I'll merge. |
Great. Things are working on my end too. |
Debuginfod is a lightweight web service that indexes ELF/DWARF debugging
resources by build-id and serves them over HTTP.
This patch enables dyninst to query debuginfod servers for a file's
separate debuginfo when it otherwise cannot be found.
This patch also adds a cmake option -DENABLE_DEBUGINFOD to control
whether dyninst is built with debuginfod support.
This requires having the debuginfod client library (libdebuginfod)
and header installed.
Debuginfod is distributed with elfutils, for more information see
https://sourceware.org/elfutils/Debuginfod.html
Closes #734