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
(22) |
3
(15) |
4
(14) |
5
(8) |
6
(10) |
7
(14) |
|
8
(9) |
9
(10) |
10
(21) |
11
(16) |
12
(17) |
13
(15) |
14
(8) |
|
15
(12) |
16
(8) |
17
(44) |
18
(24) |
19
(29) |
20
(29) |
21
(17) |
|
22
(17) |
23
(16) |
24
(18) |
25
(16) |
26
(15) |
27
(16) |
28
(11) |
|
29
(11) |
30
(10) |
31
(12) |
|
|
|
|
|
From: <sv...@va...> - 2006-01-05 14:13:20
|
Author: sewardj
Date: 2006-01-05 14:13:14 +0000 (Thu, 05 Jan 2006)
New Revision: 5503
Log:
Even more ppc64-linux syscalls.
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2006-01-05 14:12:53 U=
TC (rev 5502)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2006-01-05 14:13:14 U=
TC (rev 5503)
@@ -1211,7 +1211,7 @@
LINX_(__NR_utime, sys_utime), // 30
// _____(__NR_stty, sys_stty), // 31
// _____(__NR_gtty, sys_gtty), // 32
-// _____(__NR_access, sys_access), // 33
+ GENX_(__NR_access, sys_access), // 33
// _____(__NR_nice, sys_nice), // 34
=20
// _____(__NR_ftime, sys_ftime), // 35
@@ -1350,7 +1350,7 @@
GENX_(__NR_writev, sys_writev), // 146
// _____(__NR_getsid, sys_getsid), // 147
// _____(__NR_fdatasync, sys_fdatasync), // 148
-// _____(__NR__sysctl, sys__sysctl), // 149
+ LINXY(__NR__sysctl, sys_sysctl), // 149
=20
// _____(__NR_mlock, sys_mlock), // 150
// _____(__NR_munlock, sys_munlock), // 151
|
|
From: <sv...@va...> - 2006-01-05 14:13:09
|
Author: sewardj
Date: 2006-01-05 14:12:53 +0000 (Thu, 05 Jan 2006)
New Revision: 5502
Log:
This is logically part of r5501 (ppc64-linux symbol reading fixes)
but got missed from 5501.
Modified:
trunk/coregrind/m_debuginfo/priv_symtab.h
Modified: trunk/coregrind/m_debuginfo/priv_symtab.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_debuginfo/priv_symtab.h 2006-01-05 14:11:31 UTC (re=
v 5501)
+++ trunk/coregrind/m_debuginfo/priv_symtab.h 2006-01-05 14:12:53 UTC (re=
v 5502)
@@ -212,15 +212,17 @@
*/
OffT offset;
=20
- /* Bounds of data, BSS, PLT and GOT, so that tools can see what
- section an address is in */
- Addr plt_start;
+ /* Bounds of data, BSS, PLT, GOT and OPD (for ppc64-linux) so that
+ tools can see what section an address is in. In the running image=
! */
+ Addr plt_start_vma;
UInt plt_size;
- Addr got_start;
+ Addr got_start_vma;
UInt got_size;
- Addr data_start;
+ Addr opd_start_vma;
+ UInt opd_size;
+ Addr data_start_vma;
UInt data_size;
- Addr bss_start;
+ Addr bss_start_vma;
UInt bss_size;
=20
/* data used by stabs parser */
|
|
From: <sv...@va...> - 2006-01-05 14:11:49
|
Author: sewardj
Date: 2006-01-05 14:11:31 +0000 (Thu, 05 Jan 2006)
New Revision: 5501
Log:
Make symbol table reading understand the .opd section conventions used
for ppc64-linux on gcc 4.0.0 and above.
As part of this, simplify the FIND macros and rename some fields in
SegInfo to be a bit clearer.
Modified:
trunk/coregrind/m_debuginfo/symtab.c
Modified: trunk/coregrind/m_debuginfo/symtab.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_debuginfo/symtab.c 2006-01-05 14:09:46 UTC (rev 550=
0)
+++ trunk/coregrind/m_debuginfo/symtab.c 2006-01-05 14:11:31 UTC (rev 550=
1)
@@ -1105,9 +1105,22 @@
return False;
}
=20
-static Bool is_interesting_symbol(SegInfo* si, ElfXX_Sym* sym,=20
- Char* sym_name, Addr sym_addr)
+/* Decide whether SYM is something we should collect. It may also
+ decide to change the stated address of the symbol, in which case a
+ different value is assigned to *SYM_ADDR_REALLY; otherwise SYM is
+ copied to *SYM_ADDR_REALLY. */
+
+static Bool is_interesting_symbol( SegInfo* si,=20
+ ElfXX_Sym* sym,=20
+ Char* sym_name,=20
+ Addr sym_addr,
+ UChar* opd_filea, /* oimage addr =
of .opd sec
+ (ppc64-linux=
only) */
+ /*OUT*/Addr* sym_addr_really )
{
+ /* Set default real address for the symbol. */
+ *sym_addr_really =3D sym_addr;
+
/* Figure out if we're interested in the symbol.
Firstly, is it of the right flavour? */
if ( ! ( (ELFXX_ST_BIND(sym->st_info) =3D=3D STB_GLOBAL ||
@@ -1123,15 +1136,15 @@
=20
/* Secondly, if it's apparently in a GOT or PLT, it's really
a reference to a symbol defined elsewhere, so ignore it. */
- if (si->got_start !=3D 0
- && sym_addr >=3D si->got_start=20
- && sym_addr < si->got_start + si->got_size) {
+ if (si->got_start_vma !=3D 0
+ && sym_addr >=3D si->got_start_vma=20
+ && sym_addr < si->got_start_vma + si->got_size) {
TRACE_SYMTAB("ignore -- in GOT: %s\n", sym_name);
return False;
}
- if (si->plt_start !=3D 0
- && sym_addr >=3D si->plt_start
- && sym_addr < si->plt_start + si->plt_size) {
+ if (si->plt_start_vma !=3D 0
+ && sym_addr >=3D si->plt_start_vma
+ && sym_addr < si->plt_start_vma + si->plt_size) {
TRACE_SYMTAB("ignore -- in PLT: %s\n", sym_name);
return False;
}
@@ -1154,6 +1167,67 @@
return False;
}
=20
+ /* ppc64-linux nasty hack: if the symbol is in a .opd section, then
+ really what we have is the address of a function descriptor. So
+ use the first word of that as the function's text.
+
+ See thread starting at
+ http://gcc.gnu.org/ml/gcc-patches/2004-08/msg00557.html
+ */
+ if (si->opd_start_vma !=3D 0
+ && sym_addr >=3D si->opd_start_vma
+ && sym_addr < si->opd_start_vma + si->opd_size) {
+# if !defined(VGP_ppc64_linux)
+ TRACE_SYMTAB("ignore -- in OPD: %s\n", sym_name);
+ return False;
+# else
+ Int offset_in_opd;
+ ULong* fn_descr;
+
+ if (0) VG_(printf)("opdXXX: si->offset %p, sym_addr %p\n",=20
+ (void*)(si->offset), (void*)sym_addr);
+
+ if (!VG_IS_8_ALIGNED(sym_addr))
+ return False;
+
+ /* sym_addr is a vma pointing into the .opd section. We know
+ the vma of the opd section start, so we can figure out how
+ far into the opd section this is. */
+
+ offset_in_opd =3D (Addr)sym_addr - (Addr)(si->opd_start_vma);
+ if (offset_in_opd < 0 || offset_in_opd >=3D si->opd_size)
+ return False;
+
+ /* Now we want to know what's at that offset in the .opd
+ section. We can't look in the running image since it won't
+ necessarily have been mapped. But we can consult the oimage.
+ opd_filea is the start address of the .opd in the oimage.
+ Hence: */
+
+ fn_descr =3D (ULong*)(opd_filea + offset_in_opd);
+
+ if (0) VG_(printf)("opdXXY: offset %d, fn_descr %p\n", offset_in_=
opd, fn_descr);
+ if (0) VG_(printf)("opdXXZ: *fn_descr %p\n", (void*)(fn_descr[0]))=
;
+
+ sym_addr =3D fn_descr[0];
+
+ /* Hopefully sym_addr is now an offset into the text section.
+ Problem is, where did the text section get mapped? Well,
+ this SegInfo (si) exists because a text section got mapped,
+ and it got mapped to si->start. Hence add si->start to the
+ sym_addr to get the real vma. */
+
+ sym_addr +=3D si->offset;
+ *sym_addr_really =3D sym_addr;
+
+ /* Do a final sanity check: if the symbol falls outside the
+ SegInfo's mapped range, ignore it. Since sym_addr has been
+ updated, that can be achieved simply by falling through to
+ the test below. */
+
+# endif /* ppc64-linux nasty hack */
+ }
+
/* If no part of the symbol falls within the mapped range,
ignore it. */
if (sym_addr+sym->st_size <=3D si->start
@@ -1170,10 +1244,11 @@
static
void read_symtab( SegInfo* si, Char* tab_name, Bool do_intercepts,
ElfXX_Sym* o_symtab, UInt o_symtab_sz,
- UChar* o_strtab, UInt o_strtab_sz )
+ UChar* o_strtab, UInt o_strtab_sz,
+ UChar* opd_filea /* ppc64-linux only */ )
{
Int i;
- Addr sym_addr;
+ Addr sym_addr, sym_addr_really;
Char* sym_name;
RiSym risym;
Char* name;
@@ -1224,9 +1299,18 @@
} =20
=20
// Record interesting symbols in our symtab.
- if ( is_interesting_symbol(si, sym, sym_name, sym_addr) ) {
+ if ( is_interesting_symbol(si, sym, sym_name, sym_addr, opd_filea,=
&sym_addr_really) ) {
vg_assert(sym->st_name !=3D 0);
vg_assert(sym_name[0] !=3D 0);
+# if defined(VGP_ppc64_linux)
+ /* It's crucial that we never add symbol addresses in the
+ .opd section. This would completely mess up function
+ redirection and intercepting. This assert ensures that
+ any symbols that make it into the symbol table on
+ ppc64-linux don't point into .opd. */
+ vg_assert(sym_addr_really + sym->st_size <=3D si->opd_start_vma
+ || sym_addr_really >=3D si->opd_start_vma + si->opd_s=
ize);
+# endif
name =3D ML_(addStr) ( si, sym_name, -1 );
vg_assert(name !=3D NULL);
=20
@@ -1238,10 +1322,10 @@
* the string table. Importantly, it never makes it bigger.
*/
if (do_intercepts) {
- VG_(maybe_redir_or_notify)( name, sym_addr );
+ VG_(maybe_redir_or_notify)( name, sym_addr_really );
}
=20
- risym.addr =3D sym_addr;
+ risym.addr =3D sym_addr_really;
risym.size =3D sym->st_size;
risym.name =3D name;
addSym ( si, &risym );
@@ -1531,11 +1615,11 @@
// Get the data and bss start/size if appropriate
mapped =3D o_phdr->p_vaddr + si->offset;
mapped_end =3D mapped + o_phdr->p_memsz;
- if (si->data_start =3D=3D 0 &&
+ if (si->data_start_vma =3D=3D 0 &&
(o_phdr->p_flags & (PF_R|PF_W|PF_X)) =3D=3D (PF_R|PF_W)) {
- si->data_start =3D mapped;
- si->data_size =3D o_phdr->p_filesz;
- si->bss_start =3D mapped + o_phdr->p_filesz;
+ si->data_start_vma =3D mapped;
+ si->data_size =3D o_phdr->p_filesz;
+ si->bss_start_vma =3D mapped + o_phdr->p_filesz;
if (o_phdr->p_memsz > o_phdr->p_filesz)
si->bss_size =3D o_phdr->p_memsz - o_phdr->p_filesz;
else
@@ -1575,7 +1659,8 @@
/* Find interesting sections, read the symbol table(s), read any debu=
g
information */
{
- /* Pointers to start of sections */
+ /* Pointers to start of sections (in the oimage, not in the
+ running image) */
UChar* o_strtab =3D NULL; /* .strtab */
ElfXX_Sym* o_symtab =3D NULL; /* .symtab */
UChar* o_dynstr =3D NULL; /* .dynstr */
@@ -1590,6 +1675,8 @@
UChar* dwarf1d =3D NULL; /* .debug (dwarf1) */
UChar* dwarf1l =3D NULL; /* .line (dwarf1) */
UChar* ehframe =3D NULL; /* .eh_frame (dwarf2) */
+ UChar* opd_filea =3D NULL; /* .opd (dwarf2, ppc64-=
linux) */
+ UChar* dummy_filea =3D NULL;
=20
/* Section sizes, in bytes */
UInt o_strtab_sz =3D 0;
@@ -1608,25 +1695,36 @@
UInt ehframe_sz =3D 0;
=20
/* Section virtual addresses */
- Addr dummy_addr =3D 0;
- Addr ehframe_addr =3D 0;
+ Addr dummy_vma =3D 0;
+ Addr ehframe_vma =3D 0;
=20
/* Find all interesting sections */
+
+ /* What FIND does: it finds the section called SEC_NAME. The
+ size of it is assigned to SEC_SIZE. The address that it will
+ appear in the running image is assigned to SEC_VMA (note,
+ this will be meaningless for sections which are not marked
+ loadable. Even for sections which are marked loadable, the
+ client's ld.so may not have loaded them yet, so there is no
+ guarantee that we can safely prod around in any such area)
+ The address of the section in the transiently loaded oimage
+ is assigned to SEC_FILEA. Because the entire object file is
+ transiently mapped aboard for inspection, it's always safe to
+ inspect that area. */
+
for (i =3D 0; i < ehdr->e_shnum; i++) {
-# define FIND(sec_name, sec_data, sec_size, sec_addr, in_exec, ty=
pe) \
+
+# define FIND(sec_name, sec_size, sec_filea, sec_vma) \
if (0 =3D=3D VG_(strcmp)(sec_name, sh_strtab + shdr[i].sh_name)=
) { \
Bool nobits; \
- if (0 !=3D sec_data) \
- VG_(core_panic)("repeated section!\n"); \
- if (in_exec) \
- sec_data =3D (type)(si->offset + shdr[i].sh_addr); \
- else \
- sec_data =3D (type)(oimage + shdr[i].sh_offset); \
- sec_size =3D shdr[i].sh_size; \
+ sec_vma =3D (Addr)(si->offset + shdr[i].sh_addr); \
+ sec_filea =3D (void*)(oimage + shdr[i].sh_offset); \
+ sec_size =3D shdr[i].sh_size; \
nobits =3D shdr[i].sh_type =3D=3D SHT_NOBITS; \
- sec_addr =3D si->offset + shdr[i].sh_addr; \
- TRACE_SYMTAB( "%18s: %p .. %p\n", \
- sec_name, sec_data, sec_data + sec_size - 1); =
\
+ TRACE_SYMTAB( "%18s: filea %p .. %p, vma %p .. %p\n", \
+ sec_name, (UChar*)sec_filea, \
+ ((UChar*)sec_filea) + sec_size - 1, =
\
+ sec_vma, sec_vma + sec_size - 1); \
/* SHT_NOBITS sections have zero size in the file. */ \
if ( shdr[i].sh_offset + (nobits ? 0 : sec_size) > n_oimage =
) { \
ML_(symerr)(" section beyond image end?!"); \
@@ -1636,27 +1734,29 @@
=20
/* Nb: must find where .got and .plt sections will be in the
* executable image, not in the object image transiently loaded=
. */
- FIND(".dynsym", o_dynsym, o_dynsym_sz, dummy_a=
ddr, 0, ElfXX_Sym*)
- else FIND(".dynstr", o_dynstr, o_dynstr_sz, dummy_a=
ddr, 0, UChar*)
- else FIND(".symtab", o_symtab, o_symtab_sz, dummy_a=
ddr, 0, ElfXX_Sym*)
- else FIND(".strtab", o_strtab, o_strtab_sz, dummy_a=
ddr, 0, UChar*)
+ /* NAME SIZE ADDR_IN_OIMAGE ADDR_WHEN=
_MAPPED */
+ FIND(".dynsym", o_dynsym_sz, o_dynsym, dummy_vma=
)
+ FIND(".dynstr", o_dynstr_sz, o_dynstr, dummy_vma=
)
+ FIND(".symtab", o_symtab_sz, o_symtab, dummy_vma=
)
+ FIND(".strtab", o_strtab_sz, o_strtab, dummy_vma=
)
=20
- else FIND(".gnu_debuglink", debuglink, debuglink_sz, dummy_a=
ddr, 0, Char*)
+ FIND(".gnu_debuglink", debuglink_sz, debuglink, dummy_vma=
)
=20
- else FIND(".stab", stab, stab_sz, dummy_a=
ddr, 0, UChar*)
- else FIND(".stabstr", stabstr, stabstr_sz, dummy_a=
ddr, 0, UChar*)
+ FIND(".stab", stab_sz, stab, dummy_vma=
)
+ FIND(".stabstr", stabstr_sz, stabstr, dummy_vma=
)
=20
- else FIND(".debug_line", debug_line, debug_line_sz, dummy_a=
ddr, 0, UChar*)
- else FIND(".debug_info", debug_info, debug_info_sz, dummy_a=
ddr, 0, UChar*)
- else FIND(".debug_abbrev", debug_abbv, debug_abbv_sz, dummy_a=
ddr, 0, UChar*)
- else FIND(".debug_str", debug_str, debug_str_sz, dummy_a=
ddr, 0, UChar*)
+ FIND(".debug_line", debug_line_sz, debug_line, dummy_vma=
)
+ FIND(".debug_info", debug_info_sz, debug_info, dummy_vma=
)
+ FIND(".debug_abbrev", debug_abbv_sz, debug_abbv, dummy_vma=
)
+ FIND(".debug_str", debug_str_sz, debug_str, dummy_vma=
)
=20
- else FIND(".debug", dwarf1d, dwarf1d_sz, dummy_a=
ddr, 0, UChar*)
- else FIND(".line", dwarf1l, dwarf1l_sz, dummy_a=
ddr, 0, UChar*)
- else FIND(".eh_frame", ehframe, ehframe_sz, ehframe=
_addr, 0, UChar*)
+ FIND(".debug", dwarf1d_sz, dwarf1d, dummy_vma=
)
+ FIND(".line", dwarf1l_sz, dwarf1l, dummy_vma=
)
+ FIND(".eh_frame", ehframe_sz, ehframe, ehframe_v=
ma)
=20
- else FIND(".got", si->got_start, si->got_size, dummy_a=
ddr, 1, Addr)
- else FIND(".plt", si->plt_start, si->plt_size, dummy_a=
ddr, 1, Addr)
+ FIND(".got", si->got_size, dummy_filea, si->got_s=
tart_vma)
+ FIND(".plt", si->plt_size, dummy_filea, si->plt_s=
tart_vma)
+ FIND(".opd", si->opd_size, opd_filea, si->opd_s=
tart_vma)
=20
# undef FIND
}
@@ -1679,23 +1779,27 @@
if ((dimage =3D find_debug_file(si->filename, debuglink, crc, &=
n_dimage)) !=3D 0) {
ehdr =3D (ElfXX_Ehdr*)dimage;
=20
- if (n_dimage >=3D sizeof(ElfXX_Ehdr) && is_elf_object_file(e=
hdr))
- {
+ if (n_dimage >=3D sizeof(ElfXX_Ehdr) && is_elf_object_file(e=
hdr)) {
shdr =3D (ElfXX_Shdr*)(dimage + ehdr->e_shoff);
sh_strtab =3D (UChar*)(dimage + shdr[ehdr->e_shstrndx].sh=
_offset);
=20
+ /* Same deal as previous FIND, except simpler - doesn't
+ look for vma, only oimage address. */
+
/* Find all interesting sections */
for (i =3D 0; i < ehdr->e_shnum; i++) {
-# define FIND(sec_name, sec_data, sec_size, type) \
+
+# define FIND(sec_name, sec_size, sec_filea) \
if (0 =3D=3D VG_(strcmp)(sec_name, sh_strtab + shdr[i]=
.sh_name)) { \
Bool nobits; \
- if (0 !=3D sec_data) \
+ if (0 !=3D sec_filea) \
VG_(core_panic)("repeated section!\n"); \
- sec_data =3D (type)(dimage + shdr[i].sh_offset); \
- sec_size =3D shdr[i].sh_size; \
+ sec_filea =3D (void*)(dimage + shdr[i].sh_offset); =
\
+ sec_size =3D shdr[i].sh_size; \
nobits =3D shdr[i].sh_type =3D=3D SHT_NOBITS; \
- TRACE_SYMTAB( "%18s: %p .. %p\n", \
- sec_name, sec_data, sec_data + sec_si=
ze - 1); \
+ TRACE_SYMTAB( "%18s: filea %p .. %p\n", \
+ sec_name, (UChar*)sec_filea, \
+ ((UChar*)sec_filea) + sec_s=
ize - 1); \
/* SHT_NOBITS sections have zero size in the file. =
*/ \
if ( shdr[i].sh_offset + (nobits ? 0 : sec_size) > =
n_dimage ) { \
ML_(symerr)(" section beyond image end?!"); \
@@ -1703,16 +1807,14 @@
} \
}
=20
- /* Nb: must find where .got and .plt sections will be =
in the
- * executable image, not in the object image transient=
ly loaded. */
- FIND(".stab", stab, stab_sz, =
UChar*)
- else FIND(".stabstr", stabstr, stabstr_sz, =
UChar*)
- else FIND(".debug_line", debug_line, debug_line_sz=
, UChar*)
- else FIND(".debug_info", debug_info, debug_info_sz=
, UChar*)
- else FIND(".debug_abbrev", debug_abbv, debug_abbv_sz=
, UChar*)
- else FIND(".debug_str", debug_str, debug_str_sz,=
UChar*)
- else FIND(".debug", dwarf1d, dwarf1d_sz, =
UChar*)
- else FIND(".line", dwarf1l, dwarf1l_sz, =
UChar*)
+ FIND(".stab", stab_sz, stab)
+ FIND(".stabstr", stabstr_sz, stabstr)
+ FIND(".debug_line", debug_line_sz, debug_line)
+ FIND(".debug_info", debug_info_sz, debug_info)
+ FIND(".debug_abbrev", debug_abbv_sz, debug_abbv)
+ FIND(".debug_str", debug_str_sz, debug_str)
+ FIND(".debug", dwarf1d_sz, dwarf1d)
+ FIND(".line", dwarf1l_sz, dwarf1l)
=20
# undef FIND
}
@@ -1723,15 +1825,15 @@
/* Read symbols */
read_symtab(si, "symbol table", False,
o_symtab, o_symtab_sz,
- o_strtab, o_strtab_sz);
+ o_strtab, o_strtab_sz, opd_filea);
=20
read_symtab(si, "dynamic symbol table", True,
o_dynsym, o_dynsym_sz,
- o_dynstr, o_dynstr_sz);
+ o_dynstr, o_dynstr_sz, opd_filea);
=20
/* Read .eh_frame (call-frame-info) if any */
if (ehframe) {
- ML_(read_callframe_info_dwarf2) ( si, ehframe, ehframe_sz, ehfr=
ame_addr );
+ ML_(read_callframe_info_dwarf2) ( si, ehframe, ehframe_sz, ehfr=
ame_vma );
}
=20
/* Read the stabs and/or dwarf2 debug information, if any. It
@@ -2748,19 +2850,22 @@
if (0)
VG_(printf)("addr=3D%p si=3D%p %s got=3D%p %d plt=3D%p %d data=3D%=
p %d bss=3D%p %d\n",
a, si, si->filename,=20
- si->got_start, si->got_size,
- si->plt_start, si->plt_size,
- si->data_start, si->data_size,
- si->bss_start, si->bss_size);
+ si->got_start_vma, si->got_size,
+ si->plt_start_vma, si->plt_size,
+ si->data_start_vma, si->data_size,
+ si->bss_start_vma, si->bss_size);
ret =3D Vg_SectText;
=20
- if (a >=3D si->data_start && a < (si->data_start + si->data_size))
+ if (a >=3D si->data_start_vma && a < (si->data_start_vma + si->data_si=
ze))
ret =3D Vg_SectData;
- else if (a >=3D si->bss_start && a < (si->bss_start + si->bss_size))
+ else=20
+ if (a >=3D si->bss_start_vma && a < (si->bss_start_vma + si->bs=
s_size))
ret =3D Vg_SectBSS;
- else if (a >=3D si->plt_start && a < (si->plt_start + si->plt_size))
+ else=20
+ if (a >=3D si->plt_start_vma && a < (si->plt_start_vma + si->pl=
t_size))
ret =3D Vg_SectPLT;
- else if (a >=3D si->got_start && a < (si->got_start + si->got_size))
+ else=20
+ if (a >=3D si->got_start_vma && a < (si->got_start_vma + si->go=
t_size))
ret =3D Vg_SectGOT;
}
}
|
|
From: <sv...@va...> - 2006-01-05 14:10:01
|
Author: sewardj
Date: 2006-01-05 14:09:46 +0000 (Thu, 05 Jan 2006)
New Revision: 5500
Log:
Fix a casting bug in the LOADV8 slow (misaligned) case spotted by Nick.
Modified:
trunk/docs/internals/3_1_BUGSTATUS.txt
trunk/memcheck/mc_main.c
Modified: trunk/docs/internals/3_1_BUGSTATUS.txt
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/internals/3_1_BUGSTATUS.txt 2006-01-05 14:07:04 UTC (rev 5=
499)
+++ trunk/docs/internals/3_1_BUGSTATUS.txt 2006-01-05 14:09:46 UTC (rev 5=
500)
@@ -36,3 +36,4 @@
v5445 pending n-i-bz VG_(getgroups) fix (Shinichi Noda)
vx1519 pending n-i-bz ppc32/64: allocate from callee-saved FP/VMX=
regs
vx1521/2 pending 119297 Incorrect error message for sse code
+v5500 pending n-i-bz misaligned path word-size bug in mc_main.c
Modified: trunk/memcheck/mc_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/mc_main.c 2006-01-05 14:07:04 UTC (rev 5499)
+++ trunk/memcheck/mc_main.c 2006-01-05 14:09:46 UTC (rev 5500)
@@ -1518,7 +1518,7 @@
/* slow-path case. */ \
if (EXPECTED_NOT_TAKEN(a & mask)) { \
PROF_EVENT(201, #nAME"-slow1"); \
- return (UWord)mc_LOADVn_slow( aA, 8, iS_BIGENDIAN ); \
+ return (ULong)mc_LOADVn_slow( aA, 8, iS_BIGENDIAN ); \
} \
\
sec_no =3D (UWord)(a >> 16); \
|
|
From: <sv...@va...> - 2006-01-05 14:07:15
|
Author: sewardj
Date: 2006-01-05 14:07:04 +0000 (Thu, 05 Jan 2006)
New Revision: 5499
Log:
Initial redirect stuff for ppc64-linux.
Modified:
trunk/coregrind/m_main.c
trunk/coregrind/m_redir.c
trunk/coregrind/m_trampoline.S
trunk/coregrind/pub_core_trampoline.h
Modified: trunk/coregrind/m_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_main.c 2006-01-04 15:40:16 UTC (rev 5498)
+++ trunk/coregrind/m_main.c 2006-01-05 14:07:04 UTC (rev 5499)
@@ -2398,8 +2398,12 @@
// p: aspacem
//--------------------------------------------------------------
{ Bool change_ownership_v_c_OK;
- Addr co_start =3D VG_PGROUNDDN( (Addr)&VG_(trampoline_stuff_start=
) );
- Addr co_endPlus =3D VG_PGROUNDUP( (Addr)&VG_(trampoline_stuff_end) =
);
+ Addr co_start =3D VG_PGROUNDDN(=20
+ (Addr)VG_(fnptr_to_fnentry)(=20
+ &VG_(trampoline_stuff_start) ) );
+ Addr co_endPlus =3D VG_PGROUNDUP(=20
+ (Addr)VG_(fnptr_to_fnentry)(=20
+ &VG_(trampoline_stuff_end) ) );
VG_(debugLog)(1,"redir",
"transfer ownership V -> C of 0x%llx .. 0x%llx\n",
(ULong)co_start, (ULong)co_endPlus-1 );
Modified: trunk/coregrind/m_redir.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_redir.c 2006-01-04 15:40:16 UTC (rev 5498)
+++ trunk/coregrind/m_redir.c 2006-01-05 14:07:04 UTC (rev 5499)
@@ -43,6 +43,7 @@
#include "pub_core_trampoline.h"
#include "pub_core_transtab.h"
#include "pub_core_tooliface.h" // VG_(needs).malloc_replacement
+#include "pub_tool_machine.h" // VG_(fnptr_to_fnentry)
=20
=20
/*------------------------------------------------------------*/
@@ -406,8 +407,17 @@
=20
#elif defined(VGP_ppc64_linux)
=20
- // we'll have to stick some godawful hacks in here, no doubt
+ /* If we're using memcheck, use these intercepts right from
+ the start, otherwise ld.so makes a lot of noise. */
+ if (0=3D=3DVG_(strcmp)("Memcheck", VG_(details).name)) {
=20
+ add_redirect_sym_to_addr(
+ "soname:ld64.so.1", "strlen",
+ (Addr)VG_(fnptr_to_fnentry)( &VG_(ppc64_linux_REDIR_FOR_strlen)=
)
+ ); =20
+
+ }
+
#else
# error Unknown platform
#endif
Modified: trunk/coregrind/m_trampoline.S
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_trampoline.S 2006-01-04 15:40:16 UTC (rev 5498)
+++ trunk/coregrind/m_trampoline.S 2006-01-05 14:07:04 UTC (rev 5499)
@@ -277,6 +277,9 @@
.global VG_(trampoline_stuff_end)
VG_(trampoline_stuff_end):
=20
+ /* and a trailing page of unexecutable code */
+ UD2_PAGE
+
# undef UD2_16
# undef UD2_64
# undef UD2_256
@@ -306,9 +309,34 @@
.type .VG_(trampoline_stuff_start),@function
.global .VG_(trampoline_stuff_start)
.VG_(trampoline_stuff_start):
-=09
=20
.align 2
+.globl VG_(ppc64_linux_REDIR_FOR_strlen)
+.section ".opd","aw"
+.align 3
+VG_(ppc64_linux_REDIR_FOR_strlen):
+.quad .L.VG_(ppc64_linux_REDIR_FOR_strlen),.TOC.@tocbase
+.previous
+.type VG_(ppc64_linux_REDIR_FOR_strlen), @function
+.L.VG_(ppc64_linux_REDIR_FOR_strlen):
+ mr 9,3
+ lbz 0,0(3)
+ li 3,0
+ cmpwi 7,0,0
+ beqlr 7
+ li 3,0
+.L5:
+ addi 0,3,1
+ extsw 3,0
+ lbzx 0,9,3
+ cmpwi 7,0,0
+ bne 7,.L5
+ blr
+ .long 0
+ .byte 0,0,0,0,0,0,0,0
+ .size VG_(ppc64_linux_REDIR_FOR_strlen),.-.L.VG_(ppc64_linux_R=
EDIR_FOR_strlen)
+
+.align 2
.global VG_(trampoline_stuff_end)
.section ".opd","aw"
.align 3
@@ -319,6 +347,9 @@
.global .VG_(trampoline_stuff_end)
.VG_(trampoline_stuff_end):
=20
+ /* and a trailing page of unexecutable code */
+ UD2_PAGE
+
# undef UD2_16
# undef UD2_64
# undef UD2_256
Modified: trunk/coregrind/pub_core_trampoline.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/pub_core_trampoline.h 2006-01-04 15:40:16 UTC (rev 54=
98)
+++ trunk/coregrind/pub_core_trampoline.h 2006-01-05 14:07:04 UTC (rev 54=
99)
@@ -65,6 +65,10 @@
extern UInt VG_(ppc32_linux_REDIR_FOR_strcmp)( void*, void* );
extern void* VG_(ppc32_linux_REDIR_FOR_strchr)( void*, Int );
#endif
+
+#if defined(VGP_ppc64_linux)
+extern UInt VG_(ppc64_linux_REDIR_FOR_strlen)( void* );
+#endif
=20
#endif // __PUB_CORE_TRAMPOLINE_H
=20
|
|
From: <sv...@va...> - 2006-01-05 13:12:21
|
Author: cerion
Date: 2006-01-05 13:11:59 +0000 (Thu, 05 Jan 2006)
New Revision: 1532
Log:
ppc: deal with L flag properly for different sync forms.
Modified:
trunk/priv/guest-ppc/toIR.c
Modified: trunk/priv/guest-ppc/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-ppc/toIR.c 2006-01-04 10:53:00 UTC (rev 1531)
+++ trunk/priv/guest-ppc/toIR.c 2006-01-05 13:11:59 UTC (rev 1532)
@@ -4428,6 +4428,8 @@
/* X-Form, XL-Form */
UChar opc1 =3D ifieldOPC(theInstr);
UInt b11to25 =3D IFIELD(theInstr, 11, 15);
+ UChar flag_L =3D ifieldRegDS(theInstr);
+ UInt b11to20 =3D IFIELD(theInstr, 11, 10);
UChar rD_addr =3D ifieldRegDS(theInstr);
UChar rS_addr =3D rD_addr;
UChar rA_addr =3D ifieldRegA(theInstr);
@@ -4522,7 +4524,7 @@
}
=20
case 0x256: // sync (Synchronize, PPC32 p543),=20
- // also lwsync, which appears to be undocumented
+ // also lwsync (L=3D=3D1), ptesync (L=3D=3D2)
/* http://sources.redhat.com/ml/binutils/2000-12/msg00311.html
=20
The PowerPC architecture used in IBM chips has expanded
@@ -4542,12 +4544,17 @@
=20
sync =3D sync 0
lwsync =3D sync 1
+ ptesync =3D sync 2 *** TODO - not implemented ***
*/
- if ((b11to25 !=3D 0/*sync*/ && b11to25 !=3D 1024/*lwsync*/) || =
b0 !=3D 0) {
- vex_printf("dis_memsync(ppc)(sync/lwsync,b11to25|b0)\n");
+ if (b11to20 !=3D 0 || b0 !=3D 0) {
+ vex_printf("dis_memsync(ppc)(sync/lwsync,b11to20|b0)\n");
return False;
}
- DIP("%ssync\n", b11to25 =3D=3D 1024 ? "lw" : "");
+ if (flag_L !=3D 0/*sync*/ && flag_L !=3D 1/*lwsync*/) {
+ vex_printf("dis_memsync(ppc)(sync/lwsync,flag_L)\n");
+ return False;
+ }
+ DIP("%ssync\n", flag_L =3D=3D 1 ? "lw" : "");
/* Insert a memory fence. It's sometimes important that these
are carried through to the generated code. */
stmt( IRStmt_MFence() );
|
|
From: <js...@ac...> - 2006-01-05 03:46:26
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2006-01-05 04:40:00 CET Results differ from 24 hours ago Checking out valgrind source tree ... failed Last 20 lines of verbose log follow echo Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2006-01-05T04:40:00} valgrind svn: Can't connect to host 'svn.valgrind.org': Connection timed out ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... failed Last 20 lines of verbose log follow echo Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2006-01-04T04:40:00} valgrind svn: Can't connect to host 'svn.valgrind.org': Connection timed out ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Jan 5 04:43:11 2006 --- new.short Thu Jan 5 04:46:20 2006 *************** *** 5,7 **** ! Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2006-01-04T04:40:00} valgrind svn: Can't connect to host 'svn.valgrind.org': Connection timed out --- 5,7 ---- ! Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2006-01-05T04:40:00} valgrind svn: Can't connect to host 'svn.valgrind.org': Connection timed out |
|
From: <js...@ac...> - 2006-01-05 03:36:04
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-01-05 03:30:01 GMT Checking out vex source tree ... failed Last 20 lines of verbose log follow echo Checking out vex source tree ... svn co svn://svn.valgrind.org/vex/trunk -r {2006-01-05T03:30:01} vex svn: Can't connect to host 'svn.valgrind.org': Connection timed out ================================================= == Results from 24 hours ago == ================================================= Checking out vex source tree ... failed Last 20 lines of verbose log follow echo Checking out vex source tree ... svn co svn://svn.valgrind.org/vex/trunk -r {2006-01-04T03:30:01} vex svn: Can't connect to host 'svn.valgrind.org': Connection timed out ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Jan 5 03:33:22 2006 --- new.short Thu Jan 5 03:36:31 2006 *************** *** 5,7 **** ! Checking out vex source tree ... svn co svn://svn.valgrind.org/vex/trunk -r {2006-01-04T03:30:01} vex svn: Can't connect to host 'svn.valgrind.org': Connection timed out --- 5,7 ---- ! Checking out vex source tree ... svn co svn://svn.valgrind.org/vex/trunk -r {2006-01-05T03:30:01} vex svn: Can't connect to host 'svn.valgrind.org': Connection timed out |