You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
1
(10) |
2
(3) |
3
(25) |
4
(8) |
|
5
(13) |
6
(8) |
7
(9) |
8
(10) |
9
(8) |
10
(13) |
11
(12) |
|
12
|
13
(7) |
14
(8) |
15
(11) |
16
(13) |
17
(13) |
18
(11) |
|
19
(13) |
20
(7) |
21
(1) |
22
(1) |
23
(1) |
24
(8) |
25
(15) |
|
26
(16) |
27
(20) |
28
(17) |
29
(10) |
30
(2) |
|
|
|
From: Christian B. <bor...@de...> - 2011-06-02 20:38:28
|
Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2011-06-02 22:10:01 CEST Ended at 2011-06-02 22:38:19 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 476 tests, 6 stderr failures, 0 stdout failures, 3 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mssnapshot (stderrB) none/tests/faultstatus (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) |
|
From: Christian B. <bor...@de...> - 2011-06-02 20:30:10
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-06-02 22:10:01 CEST Ended at 2011-06-02 22:29:23 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 476 tests, 6 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2011-06-02 10:11:17
|
Author: sewardj
Date: 2011-06-02 11:06:25 +0100 (Thu, 02 Jun 2011)
New Revision: 11794
Log:
ML_(read_elf_debug_info): when processing PT_LOAD entries from the
program header, don't make the following assumptions
- that there is only one r-x and one rw- entry
- that the r-x entry appears before the rw- entry
This makes it possible to handle ELF objects processed by Mike
Hommey's elfhack program.
Modified:
trunk/coregrind/m_debuginfo/readelf.c
Modified: trunk/coregrind/m_debuginfo/readelf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readelf.c 2011-05-31 07:17:54 UTC (rev 11793)
+++ trunk/coregrind/m_debuginfo/readelf.c 2011-06-02 10:06:25 UTC (rev 11794)
@@ -1150,6 +1150,13 @@
info) and anything else we want, into the tables within the
supplied DebugInfo.
*/
+
+/* Temporarily holds information copied out of PT_LOAD entries
+ in ML_(read_elf_debug_info. */
+typedef
+ struct { Addr svma_base; Addr svma_limit; PtrdiffT bias; }
+ RangeAndBias;
+
Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
{
Bool res, ok;
@@ -1182,14 +1189,21 @@
UWord shdr_ent_szB = 0;
UChar* shdr_strtab_img = NULL;
- /* SVMAs covered by rx and rw segments and corresponding bias. */
- Addr rx_svma_base = 0;
- Addr rx_svma_limit = 0;
- PtrdiffT rx_bias = 0;
- Addr rw_svma_base = 0;
- Addr rw_svma_limit = 0;
- PtrdiffT rw_bias = 0;
+ /* SVMAs covered by rx and rw segments and corresponding biases.
+ We keep separate lists of rx and rw areas. Each can have up to
+ N_RX_RW_AREAS entries. Normally each object would provide just
+ one rx and one rw area, but Mike Hommey's elfhack creates
+ objects with two rx PT_LOAD entries, hence the generality. */
+ const Int N_RX_RW_AREAS = 2;
+ RangeAndBias rx[N_RX_RW_AREAS];
+ RangeAndBias rw[N_RX_RW_AREAS];
+ Word n_rx = 0; /* 0 .. N_RX_RW_AREAS */
+ Word n_rw = 0; /* 0 .. N_RX_RW_AREAS */
+ /* Pointless paranoia: */
+ VG_(memset)( rx, 0, sizeof(rx) );
+ VG_(memset)( rw, 0, sizeof(rw) );
+
/* Build ID */
Char* buildid = NULL;
@@ -1222,8 +1236,8 @@
di->*rw_map* fields. First we examine the file's ELF Program
Header, and, by comparing that against the di->*r{w,x}_map*
info, try to figure out the AVMAs for the sections we care
- about, that should have been mapped: text, data, sdata, bss got,
- plt, and toc.
+ about, that should have been mapped: text, data, sdata, bss,
+ got, plt, and toc.
---------------------------------------------------------- */
res = False;
@@ -1338,9 +1352,11 @@
TRACE_SYMTAB("shdr: string table at %p\n", shdr_strtab_img );
- /* Do another amazingly tedious thing: find out the .soname for
- this object. Apparently requires looking through the program
- header table. */
+ /* Look through the program header table, and:
+ - copy information from suitable PT_LOAD entries into rx[] or
+ rw[]
+ - find (or fake up) the .soname for this object.
+ */
TRACE_SYMTAB("\n");
TRACE_SYMTAB("------ Looking for the soname ------\n");
vg_assert(di->soname == NULL);
@@ -1350,7 +1366,13 @@
for (i = 0; i < phdr_nent; i++) {
ElfXX_Phdr* phdr = INDEX_BIS( phdr_img, i, phdr_ent_szB );
- /* Make sure the PT_LOADable entries are in order */
+ /* Make sure the PT_LOADable entries are in order and
+ non-overlapping. This in turn means the address ranges
+ slurped into rx[] and rw[] are in order and
+ non-overlapping. */
+ vg_assert(n_rx >= 0 && n_rx <= N_RX_RW_AREAS);
+ vg_assert(n_rw >= 0 && n_rw <= N_RX_RW_AREAS);
+
if (phdr->p_type == PT_LOAD) {
TRACE_SYMTAB("PT_LOAD in order?: %#lx %#lx\n",
prev_svma + 0UL,
@@ -1361,21 +1383,36 @@
goto out;
}
prev_svma = phdr->p_vaddr;
- if (rx_svma_limit == 0
- && phdr->p_offset >= di->rx_map_foff
+ if (phdr->p_offset >= di->rx_map_foff
&& phdr->p_offset < di->rx_map_foff + di->rx_map_size
- && phdr->p_offset + phdr->p_filesz <= di->rx_map_foff + di->rx_map_size) {
- rx_svma_base = phdr->p_vaddr;
- rx_svma_limit = phdr->p_vaddr + phdr->p_memsz;
- rx_bias = di->rx_map_avma - di->rx_map_foff + phdr->p_offset - phdr->p_vaddr;
+ && phdr->p_offset + phdr->p_filesz <= di->rx_map_foff + di->rx_map_size
+ && (phdr->p_flags & (PF_R | PF_W | PF_X)) == (PF_R | PF_X)) {
+ if (n_rx == N_RX_RW_AREAS) {
+ ML_(symerr)(di, True,
+ "N_RX_RW_AREAS is too low; increase and recompile.");
+ goto out;
+ }
+ rx[n_rx].svma_base = phdr->p_vaddr;
+ rx[n_rx].svma_limit = phdr->p_vaddr + phdr->p_memsz;
+ rx[n_rx].bias = di->rx_map_avma - di->rx_map_foff
+ + phdr->p_offset - phdr->p_vaddr;
+ n_rx++;
}
- else if (rw_svma_limit == 0
- && phdr->p_offset >= di->rw_map_foff
- && phdr->p_offset < di->rw_map_foff + di->rw_map_size
- && phdr->p_offset + phdr->p_filesz <= di->rw_map_foff + di->rw_map_size) {
- rw_svma_base = phdr->p_vaddr;
- rw_svma_limit = phdr->p_vaddr + phdr->p_memsz;
- rw_bias = di->rw_map_avma - di->rw_map_foff + phdr->p_offset - phdr->p_vaddr;
+ else
+ if (phdr->p_offset >= di->rw_map_foff
+ && phdr->p_offset < di->rw_map_foff + di->rw_map_size
+ && phdr->p_offset + phdr->p_filesz <= di->rw_map_foff + di->rw_map_size
+ && (phdr->p_flags & (PF_R | PF_W | PF_X)) == (PF_R | PF_W)) {
+ if (n_rw == N_RX_RW_AREAS) {
+ ML_(symerr)(di, True,
+ "N_RX_RW_AREAS is too low; increase and recompile.");
+ goto out;
+ }
+ rw[n_rw].svma_base = phdr->p_vaddr;
+ rw[n_rw].svma_limit = phdr->p_vaddr + phdr->p_memsz;
+ rw[n_rw].bias = di->rw_map_avma - di->rw_map_foff
+ + phdr->p_offset - phdr->p_vaddr;
+ n_rw++;
}
}
@@ -1428,8 +1465,14 @@
di->soname = "NONE";
}
- vg_assert(rx_svma_limit != 0);
- vg_assert(rw_svma_limit != 0);
+ vg_assert(n_rx >= 0 && n_rx <= N_RX_RW_AREAS);
+ vg_assert(n_rw >= 0 && n_rw <= N_RX_RW_AREAS);
+ for (i = 0; i < n_rx; i++) {
+ vg_assert(rx[i].svma_limit != 0);
+ }
+ for (i = 0; i < n_rw; i++) {
+ vg_assert(rw[i].svma_limit != 0);
+ }
/* Now read the section table. */
TRACE_SYMTAB("\n");
@@ -1438,13 +1481,17 @@
TRACE_SYMTAB("rx: at %#lx are mapped foffsets %ld .. %ld\n",
di->rx_map_avma,
di->rx_map_foff, di->rx_map_foff + di->rx_map_size - 1 );
- TRACE_SYMTAB("rx: contains svmas %#lx .. %#lx with bias %#lx\n",
- rx_svma_base, rx_svma_limit - 1, rx_bias );
+ for (i = 0; i < n_rx; i++) {
+ TRACE_SYMTAB("rx[%ld]: contains svmas %#lx .. %#lx with bias %#lx\n",
+ i, rx[i].svma_base, rx[i].svma_limit - 1, rx[i].bias );
+ }
TRACE_SYMTAB("rw: at %#lx are mapped foffsets %ld .. %ld\n",
di->rw_map_avma,
di->rw_map_foff, di->rw_map_foff + di->rw_map_size - 1 );
- TRACE_SYMTAB("rw: contains svmas %#lx .. %#lx with bias %#lx\n",
- rw_svma_base, rw_svma_limit - 1, rw_bias );
+ for (i = 0; i < n_rw; i++) {
+ TRACE_SYMTAB("rw[%ld]: contains svmas %#lx .. %#lx with bias %#lx\n",
+ i, rw[i].svma_base, rw[i].svma_limit - 1, rw[i].bias );
+ }
/* Iterate over section headers */
for (i = 0; i < shdr_nent; i++) {
@@ -1455,8 +1502,26 @@
UWord size = shdr->sh_size;
UInt alyn = shdr->sh_addralign;
Bool bits = !(shdr->sh_type == SHT_NOBITS);
- Bool inrx = svma >= rx_svma_base && svma < rx_svma_limit;
- Bool inrw = svma >= rw_svma_base && svma < rw_svma_limit;
+ /* Look through our collection of info obtained from the PT_LOAD
+ headers, and make 'inrx' and 'inrw' point to the first entry
+ in each that intersects 'avma'. If in each case none is found,
+ leave the relevant pointer at NULL. */
+ RangeAndBias* inrx = NULL;
+ RangeAndBias* inrw = NULL;
+ { Word j;
+ for (j = 0; j < n_rx; j++) {
+ if (svma >= rx[j].svma_base && svma < rx[j].svma_limit) {
+ inrx = &rx[j];
+ break;
+ }
+ }
+ for (j = 0; j < n_rw; j++) {
+ if (svma >= rw[j].svma_base && svma < rw[j].svma_limit) {
+ inrw = &rw[j];
+ break;
+ }
+ }
+ }
TRACE_SYMTAB(" [sec %2ld] %s %s al%2u foff %6ld .. %6ld "
" svma %p name \"%s\"\n",
@@ -1492,11 +1557,11 @@
if (inrx && size >= 0 && !di->text_present) {
di->text_present = True;
di->text_svma = svma;
- di->text_avma = svma + rx_bias;
+ di->text_avma = svma + rx->bias;
di->text_size = size;
- di->text_bias = rx_bias;
+ di->text_bias = rx->bias;
di->text_debug_svma = svma;
- di->text_debug_bias = rx_bias;
+ di->text_debug_bias = rx->bias;
TRACE_SYMTAB("acquiring .text svma = %#lx .. %#lx\n",
di->text_svma,
di->text_svma + di->text_size - 1);
@@ -1514,11 +1579,11 @@
if (inrw && size >= 0 && !di->data_present) {
di->data_present = True;
di->data_svma = svma;
- di->data_avma = svma + rw_bias;
+ di->data_avma = svma + inrw->bias;
di->data_size = size;
- di->data_bias = rw_bias;
+ di->data_bias = inrw->bias;
di->data_debug_svma = svma;
- di->data_debug_bias = rw_bias;
+ di->data_debug_bias = inrw->bias;
TRACE_SYMTAB("acquiring .data svma = %#lx .. %#lx\n",
di->data_svma,
di->data_svma + di->data_size - 1);
@@ -1536,11 +1601,11 @@
if (inrw && size > 0 && !di->sdata_present) {
di->sdata_present = True;
di->sdata_svma = svma;
- di->sdata_avma = svma + rw_bias;
+ di->sdata_avma = svma + inrw->bias;
di->sdata_size = size;
- di->sdata_bias = rw_bias;
+ di->sdata_bias = inrw->bias;
di->sdata_debug_svma = svma;
- di->sdata_debug_bias = rw_bias;
+ di->sdata_debug_bias = inrw->bias;
TRACE_SYMTAB("acquiring .sdata svma = %#lx .. %#lx\n",
di->sdata_svma,
di->sdata_svma + di->sdata_size - 1);
@@ -1558,11 +1623,12 @@
if (inrx && size >= 0 && !di->rodata_present) {
di->rodata_present = True;
di->rodata_svma = svma;
- di->rodata_avma = svma + rx_bias;
+ di->rodata_avma = svma + rx->bias;
di->rodata_size = size;
- di->rodata_bias = rx_bias;
+ di->rodata_bias = rx->bias;
di->rodata_debug_svma = svma;
- di->rodata_debug_bias = rw_bias;
+ di->rodata_debug_bias = inrx->bias;
+ /* NB was 'inrw' prior to rXXXXX */
TRACE_SYMTAB("acquiring .rodata svma = %#lx .. %#lx\n",
di->rodata_svma,
di->rodata_svma + di->rodata_size - 1);
@@ -1580,11 +1646,11 @@
dynbss_present = True;
di->bss_present = True;
di->bss_svma = svma;
- di->bss_avma = svma + rw_bias;
+ di->bss_avma = svma + inrw->bias;
di->bss_size = size;
- di->bss_bias = rw_bias;
+ di->bss_bias = inrw->bias;
di->bss_debug_svma = svma;
- di->bss_debug_bias = rw_bias;
+ di->bss_debug_bias = inrw->bias;
TRACE_SYMTAB("acquiring .dynbss svma = %#lx .. %#lx\n",
di->bss_svma,
di->bss_svma + di->bss_size - 1);
@@ -1605,18 +1671,18 @@
TRACE_SYMTAB("acquiring .bss svma = %#lx .. %#lx\n",
svma, svma + size - 1);
TRACE_SYMTAB("acquiring .bss avma = %#lx .. %#lx\n",
- svma + rw_bias, svma + rw_bias + size - 1);
+ svma + inrw->bias, svma + inrw->bias + size - 1);
TRACE_SYMTAB("acquiring .bss bias = %#lx\n", di->bss_bias);
} else
if (inrw && size >= 0 && !di->bss_present) {
di->bss_present = True;
di->bss_svma = svma;
- di->bss_avma = svma + rw_bias;
+ di->bss_avma = svma + inrw->bias;
di->bss_size = size;
- di->bss_bias = rw_bias;
+ di->bss_bias = inrw->bias;
di->bss_debug_svma = svma;
- di->bss_debug_bias = rw_bias;
+ di->bss_debug_bias = inrw->bias;
TRACE_SYMTAB("acquiring .bss svma = %#lx .. %#lx\n",
di->bss_svma,
di->bss_svma + di->bss_size - 1);
@@ -1665,11 +1731,11 @@
sdynbss_present = True;
di->sbss_present = True;
di->sbss_svma = svma;
- di->sbss_avma = svma + rw_bias;
+ di->sbss_avma = svma + inrw->bias;
di->sbss_size = size;
- di->sbss_bias = rw_bias;
+ di->sbss_bias = inrw->bias;
di->sbss_debug_svma = svma;
- di->sbss_debug_bias = rw_bias;
+ di->sbss_debug_bias = inrw->bias;
TRACE_SYMTAB("acquiring .sdynbss svma = %#lx .. %#lx\n",
di->sbss_svma,
di->sbss_svma + di->sbss_size - 1);
@@ -1690,18 +1756,18 @@
TRACE_SYMTAB("acquiring .sbss svma = %#lx .. %#lx\n",
svma, svma + size - 1);
TRACE_SYMTAB("acquiring .sbss avma = %#lx .. %#lx\n",
- svma + rw_bias, svma + rw_bias + size - 1);
+ svma + inrw->bias, svma + inrw->bias + size - 1);
TRACE_SYMTAB("acquiring .sbss bias = %#lx\n", di->sbss_bias);
} else
if (inrw && size > 0 && !di->sbss_present) {
di->sbss_present = True;
di->sbss_svma = svma;
- di->sbss_avma = svma + rw_bias;
+ di->sbss_avma = svma + inrw->bias;
di->sbss_size = size;
- di->sbss_bias = rw_bias;
+ di->sbss_bias = inrw->bias;
di->sbss_debug_svma = svma;
- di->sbss_debug_bias = rw_bias;
+ di->sbss_debug_bias = inrw->bias;
TRACE_SYMTAB("acquiring .sbss svma = %#lx .. %#lx\n",
di->sbss_svma,
di->sbss_svma + di->sbss_size - 1);
@@ -1718,7 +1784,7 @@
if (0 == VG_(strcmp)(name, ".got")) {
if (inrw && size > 0 && !di->got_present) {
di->got_present = True;
- di->got_avma = svma + rw_bias;
+ di->got_avma = svma + inrw->bias;
di->got_size = size;
TRACE_SYMTAB("acquiring .got avma = %#lx\n", di->got_avma);
} else {
@@ -1730,7 +1796,7 @@
if (0 == VG_(strcmp)(name, ".got.plt")) {
if (inrw && size > 0 && !di->gotplt_present) {
di->gotplt_present = True;
- di->gotplt_avma = svma + rw_bias;
+ di->gotplt_avma = svma + inrw->bias;
di->gotplt_size = size;
TRACE_SYMTAB("acquiring .got.plt avma = %#lx\n", di->gotplt_avma);
} else if (size != 0) {
@@ -1745,7 +1811,7 @@
if (0 == VG_(strcmp)(name, ".plt")) {
if (inrx && size > 0 && !di->plt_present) {
di->plt_present = True;
- di->plt_avma = svma + rx_bias;
+ di->plt_avma = svma + rx->bias;
di->plt_size = size;
TRACE_SYMTAB("acquiring .plt avma = %#lx\n", di->plt_avma);
} else {
@@ -1757,7 +1823,7 @@
if (0 == VG_(strcmp)(name, ".plt")) {
if (inrw && size > 0 && !di->plt_present) {
di->plt_present = True;
- di->plt_avma = svma + rw_bias;
+ di->plt_avma = svma + inrw->bias;
di->plt_size = size;
TRACE_SYMTAB("acquiring .plt avma = %#lx\n", di->plt_avma);
} else {
@@ -1769,7 +1835,7 @@
if (0 == VG_(strcmp)(name, ".plt")) {
if (inrw && size > 0 && !di->plt_present) {
di->plt_present = True;
- di->plt_avma = svma + rw_bias;
+ di->plt_avma = svma + inrw->bias;
di->plt_size = size;
TRACE_SYMTAB("acquiring .plt avma = %#lx\n", di->plt_avma);
} else
@@ -1792,7 +1858,7 @@
if (0 == VG_(strcmp)(name, ".opd")) {
if (inrw && size > 0 && !di->opd_present) {
di->opd_present = True;
- di->opd_avma = svma + rw_bias;
+ di->opd_avma = svma + inrw->bias;
di->opd_size = size;
TRACE_SYMTAB("acquiring .opd avma = %#lx\n", di->opd_avma);
} else {
@@ -1806,14 +1872,14 @@
ELF object. */
if (0 == VG_(strcmp)(name, ".eh_frame")) {
if (inrx && size > 0 && di->n_ehframe < N_EHFRAME_SECTS) {
- di->ehframe_avma[di->n_ehframe] = svma + rx_bias;
+ di->ehframe_avma[di->n_ehframe] = svma + rx->bias;
di->ehframe_size[di->n_ehframe] = size;
TRACE_SYMTAB("acquiring .eh_frame avma = %#lx\n",
di->ehframe_avma[di->n_ehframe]);
di->n_ehframe++;
} else
if (inrw && size > 0 && di->n_ehframe < N_EHFRAME_SECTS) {
- di->ehframe_avma[di->n_ehframe] = svma + rw_bias;
+ di->ehframe_avma[di->n_ehframe] = svma + inrw->bias;
di->ehframe_size[di->n_ehframe] = size;
TRACE_SYMTAB("acquiring .eh_frame avma = %#lx\n",
di->ehframe_avma[di->n_ehframe]);
|