[rtems-tools commit] coverage: Fix option processing on FreeBSD
Joel Sherrill
joel at rtems.org
Tue Mar 30 18:20:47 UTC 2021
Module: rtems-tools
Branch: master
Commit: 8ce2cfc917ad385459d8d1570d12c7b753c9926d
Changeset: http://git.rtems.org/rtems-tools/commit/?id=8ce2cfc917ad385459d8d1570d12c7b753c9926d
Author: Alex White <alex.white at oarcorp.com>
Date: Sun Mar 7 22:14:29 2021 -0600
coverage: Fix option processing on FreeBSD
Covoar uses getopt() to process the command line options. If getopt() is
POSIX-compliant, it will return -1 when it encounters the first
non-option command line argument. It appears that it behaves this way on
FreeBSD, but on Linux getopt() continues to process arguments while
skipping any non-options. This changes the order of arguments passed to
covoar by coverage.py to group all options at the beginning. This allows
hosts with POSIX-compliant getopt() implementations to correctly process
all command line options.
---
tester/rt/coverage.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/tester/rt/coverage.py b/tester/rt/coverage.py
index a561d26..d88fe04 100644
--- a/tester/rt/coverage.py
+++ b/tester/rt/coverage.py
@@ -359,10 +359,13 @@ class covoar(object):
if not path.exists(symbol_file):
raise error.general('coverage: no symbol set file: %s'% (symbol_file))
exe = self._find_covoar()
+ # The order of these arguments matters. Command line options must come
+ # before the executable path arguments because covoar uses getopt() to
+ # process the command line options.
command = exe + ' -O ' + covoar_result_dir + \
' -p ' + self.project_name + \
- ' ' + self.executables + ' '
- command += self.covoar_cmd
+ ' ' + self.covoar_cmd + ' '
+ command += self.executables
log.notice()
log.notice('Running coverage analysis: %s (%s)' % (set_name, covoar_result_dir))
More information about the vc
mailing list