diff options
author | fergus.henderson <fergushenderson@users.noreply.github.com> | 2011-04-06 14:11:00 +0000 |
---|---|---|
committer | fergus.henderson <fergushenderson@users.noreply.github.com> | 2011-04-06 14:11:00 +0000 |
commit | 2749b015a9bf591432b479c001aa9fb8ee416694 (patch) | |
tree | ac83ae19a90f9b33f94e38369a653d65539b5761 | |
parent | a17914221af9bb13fbcfcf46469ac5c2f8f2cb3f (diff) | |
download | distcc-git-2749b015a9bf591432b479c001aa9fb8ee416694.tar.gz |
Fix some issues that caused the gdb-related tests to fail:
1. Recent gcc versions want us to use -Wl,--build-id
rather than --build-id.
2. We had missed one of the places where we need to be passing
that flag in.
3. With recent gcc/gdb versions, "break main; run"
will sometimes stop at the first statement inside of main
rather than on the function declaration.
So "break main; run; step" may end up inside the code to
puts() rather than in the code for main().
My fix was to use "break main; run; next" instead.
It is inderminate (varies based on whether you use "-O", for example)
whether we end up at the call to puts() or after the call to puts(),
but either way the call to puts() should be in the gdb output log.
Reviewed by Craig Silverstein.
-rwxr-xr-x | test/testdistcc.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/test/testdistcc.py b/test/testdistcc.py index 26a65cf..86f2a6c 100755 --- a/test/testdistcc.py +++ b/test/testdistcc.py @@ -1246,7 +1246,8 @@ class Gdb_Case(CompileHello_Case): value set by the compilation. """ os.mkdir('link') - cmd = self.distcc() + self.compiler() + " -o link/testtmp obj/testtmp.o" + cmd = self.distcc() + self.compiler() + self.build_id + + " -o link/testtmp obj/testtmp.o" out, err = self.runcmd(cmd) if out != '': self.fail("command %s produced output:\n%s" % (`cmd`, `out`)) @@ -1261,10 +1262,15 @@ class Gdb_Case(CompileHello_Case): # Test if the compiler supports --build-id=0xNNN. # If so, we need to use it for this test. + # If not, try the alternative syntax -Wl,--build-id=0xNNN instead. self.build_id = " --build-id=0x12345678 " error_rc, _, _ = self.runcmd_unchecked(self.compiler() + - (self.build_id + " -o junk %s" % self.sourceFilename())) + (self.build_id + " -o junk -I. %s" % self.sourceFilename())) if error_rc != 0: + self.build_id = " -Wl,--build-id=0x12345678 " + error_rc, _, _ = self.runcmd_unchecked(self.compiler() + + (self.build_id + " -o junk -I. %s" % self.sourceFilename())) + if error_rc != 0: self.build_id = "" CompileHello_Case.runtest (self) @@ -1282,7 +1288,7 @@ class Gdb_Case(CompileHello_Case): # the gdb commands directly on the commandline using gdb --ex, # is not as portable since only newer gdb's support it.) f = open('gdb_commands', 'w') - f.write('break main\nrun\nstep\n') + f.write('break main\nrun\nnext\n') f.close() out, errs = self.runcmd("gdb --batch --command=gdb_commands " "link/%s </dev/null" % testtmp_exe) @@ -1333,9 +1339,9 @@ class Gdb_Case(CompileHello_Case): # generated by distcc. This is just to double-check # that we didn't modify anything other than the ".debug_info" # section. - self.runcmd(self.compiler() + " -o obj/testtmp.o -I. -c %s" % + self.runcmd(self.compiler() + self.build_id + " -o obj/testtmp.o -I. -c %s" % self.sourceFilename()) - self.runcmd(self.compiler() + " -o link/testtmp obj/testtmp.o") + self.runcmd(self.compiler() + self.build_id + " -o link/testtmp obj/testtmp.o") self.runcmd("strip link/%s && strip run/%s" % (testtmp_exe, testtmp_exe)) # On newer versions of Linux, this works only because we pass # --build-id=0x12345678. |