summaryrefslogtreecommitdiffstats
path: root/backends/i386_symbol.c
diff options
context:
space:
mode:
authorJan Kratochvil <[email protected]>2013-07-25 11:05:35 +0200
committerJan Kratochvil <[email protected]>2013-07-25 11:05:35 +0200
commit10edf47b87e0b15459d8f74357e03c9440e3dcf3 (patch)
tree67a0affd058a0517e0b8dc52ff274c7ce1271bf5 /backends/i386_symbol.c
parent744fc6f97f1c32fbab0f2a124bfa053e88fc3697 (diff)
Fix run-unstrip-n.sh regression on CentOS-5 ppc.
last patch was a bit more heuristic than needed which was found on RHEL-5 ppc (32-bit): FAIL: run-unstrip-n.sh (exit: 1) ================================ --- unstrip.out 2013-07-23 23:23:49.000000000 +0200 +++ - 2013-07-23 23:23:49.434052534 +0200 @@ -4,4 +4,3 @@ 0xfdf0000+0x1c0000 edf3dd232e09d01b90683889bd16b9406c52d4de@0xfdf0184 - - libc.so.6 0xffb0000+0x50000 edec437a85026a1cf8cda94003706202733130c1@0xffb0124 - - ld.so.1 0x10000000+0x20000 979b7a26747cc09bd84a42b311b5288c704baea5@0x10000174 . - [exe] -0xf880000+0x201d4 - /lib/librt.so.1 /usr/lib/debug/lib/librt-2.5.so.debug librt.so.1 Therefore the new code generated this excessive line: 0xf880000+0x201d4 - /lib/librt.so.1 /usr/lib/debug/lib/librt-2.5.so.debug librt.so.1 The first part of debug dump is from DT_DEBUG, second part is from segments: start=0xf880000 end=0xf8a01d4 l_ld=0xfd6fe20 name=/lib/librt.so.1 start=0xfc60000 end=0xfe031e4 l_ld=0xff9e270 name=/lib/libc.so.6 start=0xfe10000 end=0xfe421dc l_ld=0xfddfd98 name=/lib/libpthread.so.0 start=0xffb0000 end=0xfff0668 l_ld=0xffef9ac name=/lib/ld.so.1 module_start=0x100000 module_end=0x110000 dyn_vaddr=0x100ee4 module_start=0xfd50000 module_end=0xfd80000 dyn_vaddr=0xfd6fe20 /lib/librt.so.1 module_start=0xfdb0000 module_end=0xfdf0000 dyn_vaddr=0xfddfd98 /lib/libpthread.so.0 module_start=0xfdf0000 module_end=0xffb0000 dyn_vaddr=0xff9e270 /lib/libc.so.6 module_start=0xffb0000 module_end=0x10000000 dyn_vaddr=0xffef9ac /lib/ld.so.1 module_start=0x10000000 module_end=0x10020000 dyn_vaddr=0x10010850 When comparing conflicts for (found in segments) module_start=0xfd50000 module_end=0xfd80000 dyn_vaddr=0xfd6fe20 /lib/librt.so.1 the code found this line conflicts (and discarded it): start=0xfc60000 end=0xfe031e4 l_ld=0xff9e270 name=/lib/libc.so.6 but it did not discard also conflicting: start=0xf880000 end=0xf8a01d4 l_ld=0xfd6fe20 name=/lib/librt.so.1 So I have changed/improved the algorithm - L_LD can be IMO compared exactly but otherwise the ranges should be compared for every module, not just the first one. Again I am not much happy from this code, it should be using NT_FILE instead, but when we keep compatibility with old OSes elfutils should not regress there. libdwfl/ 2013-07-25 Jan Kratochvil <[email protected]> * dwfl_segment_report_module.c (dwfl_segment_report_module): Check for conflicts all the modules, not just the first one. Compare L_LD if it is equal, not if it is in a module address range. Signed-off-by: Jan Kratochvil <[email protected]>
Diffstat (limited to 'backends/i386_symbol.c')
0 files changed, 0 insertions, 0 deletions