1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 4<title>7.�README_PACKAGERS</title> 5<link rel="stylesheet" type="text/css" href="vg_basic.css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="index.html" title="Valgrind Documentation"> 8<link rel="up" href="dist.html" title="Valgrind Distribution Documents"> 9<link rel="prev" href="dist.readme-developers.html" title="6.�README_DEVELOPERS"> 10<link rel="next" href="dist.readme-s390.html" title="8.�README.S390"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<div><table class="nav" width="100%" cellspacing="3" cellpadding="3" border="0" summary="Navigation header"><tr> 14<td width="22px" align="center" valign="middle"><a accesskey="p" href="dist.readme-developers.html"><img src="images/prev.png" width="18" height="21" border="0" alt="Prev"></a></td> 15<td width="25px" align="center" valign="middle"><a accesskey="u" href="dist.html"><img src="images/up.png" width="21" height="18" border="0" alt="Up"></a></td> 16<td width="31px" align="center" valign="middle"><a accesskey="h" href="index.html"><img src="images/home.png" width="27" height="20" border="0" alt="Up"></a></td> 17<th align="center" valign="middle">Valgrind Distribution Documents</th> 18<td width="22px" align="center" valign="middle"><a accesskey="n" href="dist.readme-s390.html"><img src="images/next.png" width="18" height="21" border="0" alt="Next"></a></td> 19</tr></table></div> 20<div class="chapter"> 21<div class="titlepage"><div><div><h1 class="title"> 22<a name="dist.readme-packagers"></a>7.�README_PACKAGERS</h1></div></div></div> 23<div class="literallayout"><p><br> 24������<br> 25Greetings,�packaging�person!��This�information�is�aimed�at�people<br> 26building�binary�distributions�of�Valgrind.<br> 27<br> 28Thanks�for�taking�the�time�and�effort�to�make�a�binary�distribution�of<br> 29Valgrind.��The�following�notes�may�save�you�some�trouble.<br> 30<br> 31<br> 32--�Do�not�ship�your�Linux�distro�with�a�completely�stripped<br> 33���/lib/ld.so.��At�least�leave�the�debugging�symbol�names�on�--�line<br> 34���number�info�isn't�necessary.��If�you�don't�want�to�leave�symbols�on<br> 35���ld.so,�alternatively�you�can�have�your�distro�install�ld.so's<br> 36���debuginfo�package�by�default,�or�make�ld.so.debuginfo�be�a<br> 37���requirement�of�your�Valgrind�RPM/DEB/whatever.<br> 38<br> 39���Reason�for�this�is�that�Valgrind's�Memcheck�tool�needs�to�intercept<br> 40���calls�to,�and�provide�replacements�for,�some�symbols�in�ld.so�at<br> 41���startup�(most�importantly�strlen).��If�it�cannot�do�that,�Memcheck<br> 42���shows�a�large�number�of�false�positives�due�to�the�highly�optimised<br> 43���strlen�(etc)�routines�in�ld.so.��This�has�caused�some�trouble�in<br> 44���the�past.��As�of�version�3.3.0,�on�some�targets�(ppc32-linux,<br> 45���ppc64-linux),�Memcheck�will�simply�stop�at�startup�(and�print�an<br> 46���error�message)�if�such�symbols�are�not�present,�because�it�is<br> 47���infeasible�to�continue.<br> 48<br> 49���It's�not�like�this�is�going�to�cost�you�much�space.��We�only�need<br> 50���the�symbols�for�ld.so�(a�few�K�at�most).��Not�the�debug�info�and<br> 51���not�any�debuginfo�or�extra�symbols�for�any�other�libraries.<br> 52<br> 53<br> 54--�(Unfortunate�but�true)�When�you�configure�to�build�with�the�<br> 55���--prefix=/foo/bar/xyzzy�option,�the�prefix�/foo/bar/xyzzy�gets<br> 56���baked�into�valgrind.��The�consequence�is�that�you�_must_�install<br> 57���valgrind�at�the�location�specified�in�the�prefix.��If�you�don't,<br> 58���it�may�appear�to�work,�but�will�break�doing�some�obscure�things,<br> 59���particularly�doing�fork()�and�exec().<br> 60<br> 61���So�you�can't�build�a�relocatable�RPM�/�whatever�from�Valgrind.<br> 62<br> 63<br> 64--�Don't�strip�the�debug�info�off�lib/valgrind/$platform/vgpreload*.so<br> 65���in�the�installation�tree.��Either�Valgrind�won't�work�at�all,�or�it<br> 66���will�still�work�if�you�do,�but�will�generate�less�helpful�error<br> 67���messages.��Here's�an�example:<br> 68<br> 69���Mismatched�free()�/�delete�/�delete�[]<br> 70������at�0x40043249:�free�(vg_clientfuncs.c:171)<br> 71������by�0x4102BB4E:�QGArray::~QGArray(void)�(tools/qgarray.cpp:149)<br> 72������by�0x4C261C41:�PptDoc::~PptDoc(void)�(include/qmemarray.h:60)<br> 73������by�0x4C261F0E:�PptXml::~PptXml(void)�(pptxml.cc:44)<br> 74������Address�0x4BB292A8�is�0�bytes�inside�a�block�of�size�64�alloc'd<br> 75������at�0x4004318C:�__builtin_vec_new�(vg_clientfuncs.c:152)<br> 76������by�0x4C21BC15:�KLaola::readSBStream(int)�const�(klaola.cc:314)<br> 77������by�0x4C21C155:�KLaola::stream(KLaola::OLENode�const�*)�(klaola.cc:416)<br> 78������by�0x4C21788F:�OLEFilter::convert(QCString�const�&)�(olefilter.cc:272)<br> 79<br> 80���This�tells�you�that�some�memory�allocated�with�new[]�was�freed�with<br> 81���free().<br> 82<br> 83���Mismatched�free()�/�delete�/�delete�[]<br> 84������at�0x40043249:�(inside�vgpreload_memcheck.so)<br> 85������by�0x4102BB4E:�QGArray::~QGArray(void)�(tools/qgarray.cpp:149)<br> 86������by�0x4C261C41:�PptDoc::~PptDoc(void)�(include/qmemarray.h:60)<br> 87������by�0x4C261F0E:�PptXml::~PptXml(void)�(pptxml.cc:44)<br> 88������Address�0x4BB292A8�is�0�bytes�inside�a�block�of�size�64�alloc'd<br> 89������at�0x4004318C:�(inside�vgpreload_memcheck.so)<br> 90������by�0x4C21BC15:�KLaola::readSBStream(int)�const�(klaola.cc:314)<br> 91������by�0x4C21C155:�KLaola::stream(KLaola::OLENode�const�*)�(klaola.cc:416)<br> 92������by�0x4C21788F:�OLEFilter::convert(QCString�const�&)�(olefilter.cc:272)<br> 93<br> 94���This�isn't�so�helpful.��Although�you�can�tell�there�is�a�mismatch,�<br> 95���the�names�of�the�allocating�and�deallocating�functions�are�no�longer<br> 96���visible.��The�same�kind�of�thing�occurs�in�various�other�messages�<br> 97���from�valgrind.<br> 98<br> 99<br> 100--�Don't�strip�symbols�from�lib/valgrind/*�in�the�installation�tree.<br> 101���Doing�so�will�likely�cause�problems.��Removing�the�line�number�info�is<br> 102���probably�OK�(at�least�for�some�of�the�files�in�that�directory),�although<br> 103���that�has�not�been�tested�by�the�Valgrind�developers.<br> 104<br> 105<br> 106--�Please�test�the�final�installation�works�by�running�it�on�something<br> 107���huge.��I�suggest�checking�that�it�can�start�and�exit�successfully<br> 108���both�Firefox�and�OpenOffice.org.��I�use�these�as�test�programs,�and�I<br> 109���know�they�fairly�thoroughly�exercise�Valgrind.��The�command�lines�to�use<br> 110���are:<br> 111<br> 112���valgrind�-v�--trace-children=yes�firefox<br> 113<br> 114���valgrind�-v�--trace-children=yes�soffice<br> 115<br> 116<br> 117If�you�find�any�more�hints/tips�for�packaging,�please�report<br> 118it�as�a�bugreport.�See�http://www.valgrind.org�for�details.<br> 119<br> 120����</p></div> 121</div> 122<div> 123<br><table class="nav" width="100%" cellspacing="3" cellpadding="2" border="0" summary="Navigation footer"> 124<tr> 125<td rowspan="2" width="40%" align="left"> 126<a accesskey="p" href="dist.readme-developers.html"><<�6.�README_DEVELOPERS</a>�</td> 127<td width="20%" align="center"><a accesskey="u" href="dist.html">Up</a></td> 128<td rowspan="2" width="40%" align="right">�<a accesskey="n" href="dist.readme-s390.html">8.�README.S390�>></a> 129</td> 130</tr> 131<tr><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td></tr> 132</table> 133</div> 134</body> 135</html> 136