[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