Bug 2034662
| Summary: | _r_debug is not constructed for a dyninst mutated executable | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Stan Cox <scox> | ||||
| Component: | dyninst | Assignee: | Stan Cox <scox> | ||||
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
| Severity: | unspecified | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 36 | CC: | aoliva, arjun.is, codonell, dj, fche, fweimer, law, lberk, mcermak, mfabian, orion, pfrankli, rth, scox, sipoyare, wcohen | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2023-03-28 17:36:15 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Attachments: |
|
||||||
|
Description
Stan Cox
2021-12-21 16:09:29 UTC
I implemented copy relocation support for _r_debug in glibc.
I was very disappointed when it did not fix the test case for this bug. But it turns out that it does not involve a copy relocation at all. The issue is that dyninst provides its own definition of _r_debug, which used to interpose glibc's own definition, but does not anymore.
I applied this patch:
diff -ur dyninst-11.0.1.orig/dyninst-11.0.1/dyninstAPI_RT/src/RTlinux.c dyninst-11.0.1/dyninst-11.0.1/dyninstAPI_RT/src/RTlinux.c
--- dyninst-11.0.1.orig/dyninst-11.0.1/dyninstAPI_RT/src/RTlinux.c 2021-06-15 04:23:43.000000000 +0200
+++ dyninst-11.0.1/dyninst-11.0.1/dyninstAPI_RT/src/RTlinux.c 2021-12-23 18:11:27.342260986 +0100
@@ -406,7 +406,6 @@
#if defined(cap_binary_rewriter)
extern struct r_debug _r_debug;
-DLLEXPORT struct r_debug _r_debug __attribute__ ((weak));
/* Verify that the r_debug variable is visible */
void r_debugCheck() { assert(_r_debug.r_map); }
And with it, the reproducer passes.
This bug appears to have been reported against 'rawhide' during the Fedora 36 development cycle. Changing version to 36. fixed in dyninst-12.1.0-4.fc37 |