199 lines
9.6 KiB
HTML
199 lines
9.6 KiB
HTML
|
<html lang="en">
|
||
|
<head>
|
||
|
<title>Bug Reporting - Untitled</title>
|
||
|
<meta http-equiv="Content-Type" content="text/html">
|
||
|
<meta name="description" content="Untitled">
|
||
|
<meta name="generator" content="makeinfo 4.13">
|
||
|
<link title="Top" rel="start" href="index.html#Top">
|
||
|
<link rel="up" href="Reporting-Bugs.html#Reporting-Bugs" title="Reporting Bugs">
|
||
|
<link rel="prev" href="Bug-Criteria.html#Bug-Criteria" title="Bug Criteria">
|
||
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||
|
<!--
|
||
|
This file documents the GNU linker LD
|
||
|
(GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))
|
||
|
version 2.33.1.
|
||
|
|
||
|
Copyright (C) 1991-2019 Free Software Foundation, Inc.
|
||
|
|
||
|
Permission is granted to copy, distribute and/or modify this document
|
||
|
under the terms of the GNU Free Documentation License, Version 1.3
|
||
|
or any later version published by the Free Software Foundation;
|
||
|
with no Invariant Sections, with no Front-Cover Texts, and with no
|
||
|
Back-Cover Texts. A copy of the license is included in the
|
||
|
section entitled ``GNU Free Documentation License''.-->
|
||
|
<meta http-equiv="Content-Style-Type" content="text/css">
|
||
|
<style type="text/css"><!--
|
||
|
pre.display { font-family:inherit }
|
||
|
pre.format { font-family:inherit }
|
||
|
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
||
|
pre.smallformat { font-family:inherit; font-size:smaller }
|
||
|
pre.smallexample { font-size:smaller }
|
||
|
pre.smalllisp { font-size:smaller }
|
||
|
span.sc { font-variant:small-caps }
|
||
|
span.roman { font-family:serif; font-weight:normal; }
|
||
|
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
||
|
--></style>
|
||
|
</head>
|
||
|
<body>
|
||
|
<div class="node">
|
||
|
<a name="Bug-Reporting"></a>
|
||
|
<p>
|
||
|
Previous: <a rel="previous" accesskey="p" href="Bug-Criteria.html#Bug-Criteria">Bug Criteria</a>,
|
||
|
Up: <a rel="up" accesskey="u" href="Reporting-Bugs.html#Reporting-Bugs">Reporting Bugs</a>
|
||
|
<hr>
|
||
|
</div>
|
||
|
|
||
|
<h3 class="section">6.2 How to Report Bugs</h3>
|
||
|
|
||
|
<p><a name="index-bug-reports-804"></a><a name="index-g_t_0040command_007bld_007d-bugs_002c-reporting-805"></a>
|
||
|
A number of companies and individuals offer support for <span class="sc">gnu</span>
|
||
|
products. If you obtained <samp><span class="command">ld</span></samp> from a support organization, we
|
||
|
recommend you contact that organization first.
|
||
|
|
||
|
<p>You can find contact information for many support companies and
|
||
|
individuals in the file <samp><span class="file">etc/SERVICE</span></samp> in the <span class="sc">gnu</span> Emacs
|
||
|
distribution.
|
||
|
|
||
|
<p>Otherwise, send bug reports for <samp><span class="command">ld</span></samp> to
|
||
|
<a href="https://bugs.linaro.org/">https://bugs.linaro.org/</a>.
|
||
|
|
||
|
<p>The fundamental principle of reporting bugs usefully is this:
|
||
|
<strong>report all the facts</strong>. If you are not sure whether to state a
|
||
|
fact or leave it out, state it!
|
||
|
|
||
|
<p>Often people omit facts because they think they know what causes the
|
||
|
problem and assume that some details do not matter. Thus, you might
|
||
|
assume that the name of a symbol you use in an example does not
|
||
|
matter. Well, probably it does not, but one cannot be sure. Perhaps
|
||
|
the bug is a stray memory reference which happens to fetch from the
|
||
|
location where that name is stored in memory; perhaps, if the name
|
||
|
were different, the contents of that location would fool the linker
|
||
|
into doing the right thing despite the bug. Play it safe and give a
|
||
|
specific, complete example. That is the easiest thing for you to do,
|
||
|
and the most helpful.
|
||
|
|
||
|
<p>Keep in mind that the purpose of a bug report is to enable us to fix
|
||
|
the bug if it is new to us. Therefore, always write your bug reports
|
||
|
on the assumption that the bug has not been reported previously.
|
||
|
|
||
|
<p>Sometimes people give a few sketchy facts and ask, “Does this ring a
|
||
|
bell?” This cannot help us fix a bug, so it is basically useless. We
|
||
|
respond by asking for enough details to enable us to investigate.
|
||
|
You might as well expedite matters by sending them to begin with.
|
||
|
|
||
|
<p>To enable us to fix the bug, you should include all these things:
|
||
|
|
||
|
<ul>
|
||
|
<li>The version of <samp><span class="command">ld</span></samp>. <samp><span class="command">ld</span></samp> announces it if you start it with
|
||
|
the ‘<samp><span class="samp">--version</span></samp>’ argument.
|
||
|
|
||
|
<p>Without this, we will not know whether there is any point in looking for
|
||
|
the bug in the current version of <samp><span class="command">ld</span></samp>.
|
||
|
|
||
|
<li>Any patches you may have applied to the <samp><span class="command">ld</span></samp> source, including any
|
||
|
patches made to the <code>BFD</code> library.
|
||
|
|
||
|
<li>The type of machine you are using, and the operating system name and
|
||
|
version number.
|
||
|
|
||
|
<li>What compiler (and its version) was used to compile <samp><span class="command">ld</span></samp>—e.g.
|
||
|
“<code>gcc-2.7</code>”.
|
||
|
|
||
|
<li>The command arguments you gave the linker to link your example and
|
||
|
observe the bug. To guarantee you will not omit something important,
|
||
|
list them all. A copy of the Makefile (or the output from make) is
|
||
|
sufficient.
|
||
|
|
||
|
<p>If we were to try to guess the arguments, we would probably guess wrong
|
||
|
and then we might not encounter the bug.
|
||
|
|
||
|
<li>A complete input file, or set of input files, that will reproduce the
|
||
|
bug. It is generally most helpful to send the actual object files
|
||
|
provided that they are reasonably small. Say no more than 10K. For
|
||
|
bigger files you can either make them available by FTP or HTTP or else
|
||
|
state that you are willing to send the object file(s) to whomever
|
||
|
requests them. (Note - your email will be going to a mailing list, so
|
||
|
we do not want to clog it up with large attachments). But small
|
||
|
attachments are best.
|
||
|
|
||
|
<p>If the source files were assembled using <code>gas</code> or compiled using
|
||
|
<code>gcc</code>, then it may be OK to send the source files rather than the
|
||
|
object files. In this case, be sure to say exactly what version of
|
||
|
<code>gas</code> or <code>gcc</code> was used to produce the object files. Also say
|
||
|
how <code>gas</code> or <code>gcc</code> were configured.
|
||
|
|
||
|
<li>A description of what behavior you observe that you believe is
|
||
|
incorrect. For example, “It gets a fatal signal.”
|
||
|
|
||
|
<p>Of course, if the bug is that <samp><span class="command">ld</span></samp> gets a fatal signal, then we
|
||
|
will certainly notice it. But if the bug is incorrect output, we might
|
||
|
not notice unless it is glaringly wrong. You might as well not give us
|
||
|
a chance to make a mistake.
|
||
|
|
||
|
<p>Even if the problem you experience is a fatal signal, you should still
|
||
|
say so explicitly. Suppose something strange is going on, such as, your
|
||
|
copy of <samp><span class="command">ld</span></samp> is out of sync, or you have encountered a bug in the
|
||
|
C library on your system. (This has happened!) Your copy might crash
|
||
|
and ours would not. If you told us to expect a crash, then when ours
|
||
|
fails to crash, we would know that the bug was not happening for us. If
|
||
|
you had not told us to expect a crash, then we would not be able to draw
|
||
|
any conclusion from our observations.
|
||
|
|
||
|
<li>If you wish to suggest changes to the <samp><span class="command">ld</span></samp> source, send us context
|
||
|
diffs, as generated by <code>diff</code> with the ‘<samp><span class="samp">-u</span></samp>’, ‘<samp><span class="samp">-c</span></samp>’, or
|
||
|
‘<samp><span class="samp">-p</span></samp>’ option. Always send diffs from the old file to the new file.
|
||
|
If you even discuss something in the <samp><span class="command">ld</span></samp> source, refer to it by
|
||
|
context, not by line number.
|
||
|
|
||
|
<p>The line numbers in our development sources will not match those in your
|
||
|
sources. Your line numbers would convey no useful information to us.
|
||
|
</ul>
|
||
|
|
||
|
<p>Here are some things that are not necessary:
|
||
|
|
||
|
<ul>
|
||
|
<li>A description of the envelope of the bug.
|
||
|
|
||
|
<p>Often people who encounter a bug spend a lot of time investigating
|
||
|
which changes to the input file will make the bug go away and which
|
||
|
changes will not affect it.
|
||
|
|
||
|
<p>This is often time consuming and not very useful, because the way we
|
||
|
will find the bug is by running a single example under the debugger
|
||
|
with breakpoints, not by pure deduction from a series of examples.
|
||
|
We recommend that you save your time for something else.
|
||
|
|
||
|
<p>Of course, if you can find a simpler example to report <em>instead</em>
|
||
|
of the original one, that is a convenience for us. Errors in the
|
||
|
output will be easier to spot, running under the debugger will take
|
||
|
less time, and so on.
|
||
|
|
||
|
<p>However, simplification is not vital; if you do not want to do this,
|
||
|
report the bug anyway and send us the entire test case you used.
|
||
|
|
||
|
<li>A patch for the bug.
|
||
|
|
||
|
<p>A patch for the bug does help us if it is a good one. But do not omit
|
||
|
the necessary information, such as the test case, on the assumption that
|
||
|
a patch is all we need. We might see problems with your patch and decide
|
||
|
to fix the problem another way, or we might not understand it at all.
|
||
|
|
||
|
<p>Sometimes with a program as complicated as <samp><span class="command">ld</span></samp> it is very hard to
|
||
|
construct an example that will make the program follow a certain path
|
||
|
through the code. If you do not send us the example, we will not be
|
||
|
able to construct one, so we will not be able to verify that the bug is
|
||
|
fixed.
|
||
|
|
||
|
<p>And if we cannot understand what bug you are trying to fix, or why your
|
||
|
patch should be an improvement, we will not install it. A test case will
|
||
|
help us to understand.
|
||
|
|
||
|
<li>A guess about what the bug is or what it depends on.
|
||
|
|
||
|
<p>Such guesses are usually wrong. Even we cannot guess right about such
|
||
|
things without first using the debugger to find the facts.
|
||
|
</ul>
|
||
|
|
||
|
</body></html>
|
||
|
|