# define FIND(_sec, _seg) \
do { \
ElfXX_Shdr a_shdr; \
ML_(img_get)(&a_shdr, dimg, \
INDEX_BIS(shdr_dioff, i, shdr_dent_szB), \
sizeof(a_shdr)); \
if (di->_sec##_present \
&& 0 == ML_(img_strcmp_c)(dimg, shdr_strtab_dioff \
+ a_shdr.sh_name, "." #_sec)) { \
vg_assert(di->_sec##_size == a_shdr.sh_size); \
/* JRS 2013-Jun-01: the following assert doesn't contain */ \
/* any ==s, which seems to me to be suspicious. */ \
vg_assert(di->_sec##_avma + a_shdr.sh_addr + _seg##_dbias); \
/* Assume we have a correct value for the main */ \
/* object's bias. Use that to derive the debuginfo */ \
/* object's bias, by adding the difference in SVMAs */ \
/* for the corresponding sections in the two files. */ \
/* That should take care of all prelinking effects. */ \
di->_sec##_debug_svma = a_shdr.sh_addr; \
di->_sec##_debug_bias \
= di->_sec##_bias + \
di->_sec##_svma - di->_sec##_debug_svma; \
TRACE_SYMTAB("acquiring ." #_sec \
" debug svma = %#lx .. %#lx\n", \
di->_sec##_debug_svma, \
di->_sec##_debug_svma + di->_sec##_size - 1); \
TRACE_SYMTAB("acquiring ." #_sec " debug bias = %#lx\n", \
(UWord)di->_sec##_debug_bias); \
} \
} while (0); /* SECTION SEGMENT */
FIND(text, rx)
FIND(data, rw)
FIND(sdata, rw)
FIND(rodata, rw)
FIND(bss, rw) <!-- Проблема тут
FIND(sbss, rw)
# undef FIND