|
|
1.1 root 1: If you encounter a problem in GCC, what should you do?
2:
3: You should send a bug report.
4:
5: Here are some tips for how you can report problems in GCC effectively.
6: All of them follow from common sense together with the nature of the
7: purpose and the situation.
8:
9: * It is absolutely vital that you tell me about even the smallest
10: change or departure from the standard sources and procedure.
11:
12: Otherwise, you are not testing the same program that I asked you to
13: test. Testing a different program is usually of no use whatever. It
14: can even cause trouble if you fail to tell me that you tested some
15: other program instead of what I am about to release. I might think
16: that GCC works, when in fact it has not even been tried, and might
17: have a glaring fault.
18:
19: * Even changing the compilation options counts as a change in the
20: program. The GCC sources specify which compilation options to use.
21: Some of them are specified in machine-specific configuration files.
22: They also give you ways to override this--but if you do, then you are
23: not testing what ordinary users will do. Therefore, when pretesting,
24: it is vital to test with the default compilation options.
25:
26: (Testing with a different set of options can be useful *in addition*,
27: but not *instead of* the default options.)
28:
29: * The machine and system configuration files of GCC are parts of
30: GCC. So when you test GCC, you need to do it with the
31: configuration files that come with GCC.
32:
33: If GCC does not come with configuration files for a certain machine,
34: and you test it with configuration files that don't come with GCC,
35: this is effectively changing GCC. Because the crucial fact about
36: the planned release is that, without changes, it doesn't work on that
37: machine.
38:
39: To make GCC work on that machine, I would need to install new
40: configuration files. That is not out of the question, since it is
41: safe--it certainly won't break any other machines that already work.
42: But you will have to rush me the legal papers to give the FSF
43: permission to use such a large piece of text.
44:
45: * Look for recommendations for your system.
46:
47: You can find these recommendations in the Installation node of the
48: manual, and in the file INSTALL. (These two files have the same text.)
49:
50: These files say which configuration name to use for your machine, so
51: use the ones that are recommended. If you guess, you might guess
52: wrong and encounter spurious difficulties. What's more, if you don't
53: follow the recommendations then you aren't helping to test that its
54: recommendations are valid.
55:
56: These files may describe other things that you need to do to make GCC
57: work on your machine. If so, you should follow these recommendations
58: also, for the same reason.
59:
60: * Don't delay sending information.
61:
62: When you test on a system and encounter no problems, please tell me
63: about it right away. That way, I will know that someone has tested
64: GCC on that kind of system.
65:
66: Please don't wait for several days "to see if it really works before
67: you say anything." Tell me right away that GCC seems basically to
68: work; then, if you notice a problem a few days later, tell me
69: immediately about that when you see it.
70:
71: It is okay if you double check things before reporting a problem, such
72: as to see if you can easily fix it. But don't wait very long. A good
73: rule to use in pretesting is always to tell me about every problem on
74: the same day you encounter it, even if that means you can't find a
75: solution before you report the problem.
76:
77: I'd much rather hear about a problem today and a solution tomorrow
78: than get both of them tomorrow at the same time.
79:
80: * Make each bug report self-contained.
81:
82: If you refer back to another message, whether from you or from someone
83: else, then it will be necessary for anyone who wants to investigate
84: the bug to find the other message. This may be difficult, it is
85: probably time-consuming.
86:
87: To help me save time, simply copy the relevant parts of any previous
88: messages into your own bug report.
89:
90: In particular, if I ask you for more information because a bug report
91: was incomplete, it is best to send me the *entire* collection of
92: relevant information, all together. If you send just the additional
93: information, that makes me do extra work. There is even a risk that
94: I won't remember what question you are sending me the answer to.
95:
96: * Always be precise when talking about changes you have made. Show
97: things rather than describing them. Use exact filenames (relative to
98: the main directory of the distribution), not partial ones. For
99: example, say "I changed Makefile" rather than "I changed the
100: makefile". Instead of saying "I defined the MUMBLE macro", send a
101: diff.
102:
103: * Always use `diff -c' to make diffs. If you don't include context, it
104: may be hard for me to figure out where you propose to make the
105: changes. So I might have to ignore your patch.
106:
107: * When you write a fix, keep in mind that I can't install a change
108: that *might* break other systems without the risk that it will fail to
109: work and therefore require an additional cycle of pretesting.
110:
111: People often suggest fixing a problem by changing machine-independent
112: files such as toplev.c to do something special that a particular
113: system needs. Sometimes it is totally obvious that such changes would
114: break GCC for almost all users. I can't possibly make a change like
115: that. All I can do is send it back to you and ask you to find a fix
116: that is safe to install.
117:
118: Sometimes people send fixes that *might* be an improvement in
119: general--but it is hard to be sure of this. I can install such
120: changes some of the time, but not during pretest, when I am trying to
121: get a new version to work reliably as quickly as possible.
122:
123: The safest changes for me to install are changes to the configuration
124: files for a particular machine. At least I know those can't create
125: bugs on other machines.
126:
127: * Don't try changing GCC unless it fails to work if you don't change it.
128:
129: * In some cases, if you don't follow these guidelines, your
130: information might still be useful, but I might have to do more work to
131: make use of it. Unfortunately, I am so far behind in my work that I
132: just can't get the job done unless you help me to do it efficiently.
133:
134: Local Variables:
135: mode: text
136: End:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.