Hello Martin,

On 23/03/2022 13:19, Martin Liška wrote:
On 3/23/22 10:34, Sebastian Huber wrote:

Hello.

Thanks for the patch. Note we're in stage4, so the patch can eventually go
in in the next stage1.

ok, good.


The gcov_profile_merge() already had code to deal with profile information which had no counterpart to merge with.  For profile information from files with no associated counterpart, the profile information is simply used as is with the weighting transformation applied.  Make sure that gcov_profile_merge()
works with an empty target profile list.  Return the merged profile list.

Can you please provide a simple demo with a pair of profiles
where I'll see what changes?

The background for this feature is that I would like to combine the gcov information obtained from several test executables. Each test executable will print something like this (log.txt):

*** BEGIN OF GCOV INFO ***

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/init.gcda
YWRjZ1IzMEKtLjW3AAAAAQMAAADcaps855EX05p4KUUAAKEBOgAAAAEAAAAAAAAAAQAAAAAAAAAB
AAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEA
AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAA
AAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAwAAACXn3k16
TDqmuIMwpAAAoQECAAAAAgAAAAAAAAAAAAABAwAAADzkvDcfSnvcuIMwpAAAoQH+////AAAAAQMA
AACnWNZaIM7GWZ9hiOIAAKEBBAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAwAAAPkGW3YHFUOO6Old
2wAAoQECAAAAAQAAAAAAAAAAAAABAwAAAIvy4CE9FxuM6Old2wAAoQECAAAAAQAAAAAAAAAAAAAB
AwAAANyvBDZiERlQ6Old2wAAoQECAAAAAQAAAAAAAAAAAAABAwAAACKQjCp2pYlIuIMwpAAAoQEC
AAAAAQAAAAAAAAAAAAABAwAAAKSSXEjQFDluuIMwpAAAoQH+////AAAAAA==

...

*** END OF GCOV INFO ***

The attached script reads the log file and creates the *.gcda files using gcov-tool. Initially, the target files do not exist.



gcc/
    * gcov-tool.cc (gcov_profile_merge): Adjust return type.
    (profile_merge): Allow merging of directories which contain no profile
    files.

libgcc/
    * libgcov-util.c (gcov_profile_merge): Return the list of merged
    profiles.  Accept empty target and source profile lists.
---
  gcc/gcov-tool.cc      | 27 ++++++++++-----------------
  libgcc/libgcov-util.c | 15 +++++++++------
  2 files changed, 19 insertions(+), 23 deletions(-)

diff --git a/gcc/gcov-tool.cc b/gcc/gcov-tool.cc
index f4e42ae763c..2e4083a664d 100644
--- a/gcc/gcov-tool.cc
+++ b/gcc/gcov-tool.cc
@@ -40,7 +40,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  #endif
  #include <getopt.h>
-extern int gcov_profile_merge (struct gcov_info*, struct gcov_info*, int, int);
+extern struct gcov_info *gcov_profile_merge (struct gcov_info*,
+                         struct gcov_info*, int, int);
  extern int gcov_profile_overlap (struct gcov_info*, struct gcov_info*);
  extern int gcov_profile_normalize (struct gcov_info*, gcov_type);
  extern int gcov_profile_scale (struct gcov_info*, float, int, int);
@@ -141,26 +142,18 @@ profile_merge (const char *d1, const char *d2, const char *out, int w1, int w2)
  {
    struct gcov_info *d1_profile;
    struct gcov_info *d2_profile;
-  int ret;
+  struct gcov_info *merged_profile;
    d1_profile = gcov_read_profile_dir (d1, 0);
-  if (!d1_profile)
-    return 1;
-
-  if (d2)
-    {
-      d2_profile = gcov_read_profile_dir (d2, 0);
-      if (!d2_profile)
-        return 1;
+  d2_profile = gcov_read_profile_dir (d2, 0);

Is it fine calling 'gcov_read_profile_dir (d2, 0)' without 'if (d2)'?

Yes, the caller ensures that d1 and d2 are both provided:

  if (argc - optind != 2)
    merge_usage ();

  return profile_merge (argv[optind], argv[optind+1], output_dir, w1, w2);

Maybe we should provide a better error message, if the user doesn't provide two directories instead of the general usage message.


-      /* The actual merge: we overwrite to d1_profile.  */
-      ret = gcov_profile_merge (d1_profile, d2_profile, w1, w2);
+  /* The actual merge: we overwrite to d1_profile.  */
+  merged_profile = gcov_profile_merge (d1_profile, d2_profile, w1, w2);
-      if (ret)
-        return ret;
-    }
-
-  gcov_output_files (out, d1_profile);
+  if (merged_profile)
+    gcov_output_files (out, merged_profile);
+  else if (verbose)
+    fnotice (stdout, "no profile files were merged\n");
    return 0;
  }
diff --git a/libgcc/libgcov-util.c b/libgcc/libgcov-util.c
index ba7fb924b53..e5496f4ade2 100644
--- a/libgcc/libgcov-util.c
+++ b/libgcc/libgcov-util.c
@@ -677,13 +677,13 @@ find_match_gcov_info (struct gcov_info **array, int size,
     Return 0 on success: without mismatch.
     Reutrn 1 on error.  */

Please adjust the function comment.

Oh, yes.

--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
#!/usr/bin/env python
# SPDX-License-Identifier: BSD-2-Clause
""" Read log file and create *.gcda files. """

# Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

import base64
import os 
import subprocess
import sys 
import tempfile


def _longest_common_prefix(names):
    names = sorted(names)
    try:
        shortest = names[0]
    except KeyError:
        return ""
    prefix = ""
    longest = names[-1]
    for idx, char in enumerate(shortest):
        if longest[idx] == char:
            prefix += char
        else:
            break
    return prefix


gcov_info = {}
for name in sys.argv[1:]:
    with open(name, "r") as log:
        after = log.read().split("*** BEGIN OF GCOV INFO ***")[1]
        before = after.split("*** END OF GCOV INFO ***")[0]
        for block in before.split("\n\n"):
            if block:
                gcov_file, gcov_data = block.split("\n", 1)
                gcov_info[gcov_file] = base64.b64decode(gcov_data)
prefix = _longest_common_prefix(gcov_info.keys())
with tempfile.TemporaryDirectory() as tmp_dir:
    for gcov_file, gcov_data in gcov_info.items():
        name = os.path.join(tmp_dir, gcov_file[len(prefix):])
        print(name)
        os.makedirs(os.path.dirname(name), exist_ok=True)
        with open(name, "wb") as out:
            out.write(gcov_data)
    subprocess.run(["gcov-tool", "merge", "-v", "-o", prefix, prefix, tmp_dir])
*** BEGIN OF GCOV INFO ***

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/init.gcda
YWRjZ1IzMEKtLjW3AAAAAQMAAADcaps855EX05p4KUUAAKEBOgAAAAEAAAAAAAAAAQAAAAAAAAAB
AAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEA
AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAA
AAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAwAAACXn3k16
TDqmuIMwpAAAoQECAAAAAgAAAAAAAAAAAAABAwAAADzkvDcfSnvcuIMwpAAAoQH+////AAAAAQMA
AACnWNZaIM7GWZ9hiOIAAKEBBAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAwAAAPkGW3YHFUOO6Old
2wAAoQECAAAAAQAAAAAAAAAAAAABAwAAAIvy4CE9FxuM6Old2wAAoQECAAAAAQAAAAAAAAAAAAAB
AwAAANyvBDZiERlQ6Old2wAAoQECAAAAAQAAAAAAAAAAAAABAwAAACKQjCp2pYlIuIMwpAAAoQEC
AAAAAQAAAAAAAAAAAAABAwAAAKSSXEjQFDluuIMwpAAAoQH+////AAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/iodumpgcovinfo.gcda
YWRjZ1IzMEL5LjW3AAAAAQMAAAB/qf0pVHSQp+GsNm4AAKEBFAAAAAEAAAAAAAAAAQAAAAAAAAAC
AAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAQMAAABY4NpH6HrccejpXdsAAKEB/v///wAAAAEDAAAA76aYWABKTQgiKXSYAACh
AQgAAAC3AAAAAAAAAAwAAAAAAAAA4AIAAAAAAAC9AAAAAAAAAAAAAAEDAAAA3gCsEklz8o4+srvA
AAChAQQAAAACAAAAAAAAAAIAAAAAAAAAAAAAAQMAAACYmBQ1FTcE2j6yu8AAAKEBBAAAAAEAAAAA
AAAAAQAAAAAAAAAAAAABAwAAAEpH8UWiRiLQWXZT7QAAoQEIAAAAZAQAAAAAAABkBAAAAAAAAA4A
AAAAAAAADwAAAAAAAAAAAAABAwAAAAFn/1Ij+Pw56Old2wAAoQECAAAAAQAAAAAAAAAAAAAA

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/rtems/sys_arch.gcda
YWRjZ1IzMEIPLzW3AAAAAQMAAABjuoI41n6mx+jpXdsAAKEBAgAAAAMAAAAAAAAAAAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/inet_chksum.gcda
YWRjZ1IzMEI1LzW3AAAAAQMAAABstMtmN29P8sbKpG4AAKEB9v///wAAAAEDAAAAee2tYzGj4C75
SrN8AAChAQQAAAACAAAAAAAAAAIAAAAAAAAAAAAAAQMAAACGYbFXfPI+Wj6yu8AAAKEB/P///wAA
AAEDAAAAq4+3AVSigIw+srvAAAChAfz///8AAAABAwAAAPPRfieDH0YBqtAvWAAAoQHw////AAAA
AQMAAAB75nAXPKyrnT6yu8AAAKEBBAAAAAMAAAAAAAAAAwAAAAAAAAAAAAABAwAAAMSMeGl4ucAo
PrK7wAAAoQEEAAAAAwAAAAAAAAADAAAAAAAAAAAAAAEDAAAAZypNPJK/y4vGyqRuAAChAQoAAAAD
AAAAAAAAAAMAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAQMAAAA8U4JsaG3zzhrw
rwMAAKEBDAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAAAAAQAAAAAAAAAAAAAAAAAA
AAAAAAA=

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/init.gcda
YWRjZ1IzMEJhLzW3AAAAAQMAAAAe0i0z6EH2vmriwogAAKEBDAAAAAEAAAAAAAAAAQAAAAAAAAAB
AAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAA=

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/ipv4/etharp.gcda
YWRjZ1IzMEKZLzW3AAAAAQMAAADX4Zo9bHOgXz6yu8AAAKEBBAAAAAEAAAAAAAAAAQAAAAAAAAAA
AAABAwAAANqRGya85B7OPrK7wAAAoQEEAAAAAQAAAAAAAAABAAAAAAAAAAAAAAEDAAAAPBAzSHKo
eKiUhbn/AAChARAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAQMAAABcaC5/hBOuMEi7M8AAAKEBsv///wAAAAEDAAAA
44oUZkoowW25UUR1AAChAdb///8AAAABAwAAAE8TzhiXZbqh/FjAVAAAoQHs////AAAAAQMAAACV
d/FG7zvgBMx1fVIAAKEB4P///wAAAAEDAAAAjK9vJUzYdO1nYSBgAAChAfT///8AAAABAwAAAESK
ijFyFcuxPA58fQAAoQH0////AAAAAQMAAABKkQ9vx6lHV1KPQHAAAKEB9v///wAAAAEDAAAAlZ3U
dwMSDVl8bpjiAAChAeb///8AAAABAwAAAF2e3x1rQWpk+XPLZQAAoQHE////AAAAAQMAAACDNddC
PazDJ+88eV8AAKEB6v///wAAAAEDAAAA1m79Rh9sC7LiJBKcAAChAfr///8AAAABAwAAAAlfswh8
7DMcnSp+jAAAoQH0////AAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/ipv4/icmp.gcda
YWRjZ1IzMELiLzW3AAAAAQMAAACoJxFIQVt+c6iGsqcAAKEB6v///wAAAAEDAAAAF5i3F7FIZoM+
srvAAAChAfz///8AAAABAwAAAB/m+CztcV+KPrK7wAAAoQH8////AAAAAQMAAAD0VqZgaubyndH9
T6UAAKEBuv///wAAAAA=

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/ipv4/ip4_addr.gcda
YWRjZ1IzMEIGMDW3AAAAAQMAAABeW5Y6P1N6DYiNJeQAAKEB9P///wAAAAEDAAAAfSBNbLnvRnM+
srvAAAChAfz///8AAAABAwAAAEcxwGvOpkVb7lRjLwAAoQE8AAAAAgAAAAAAAAAAAAAAAAAAAAgA
AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAFAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAQMA
AAC9oTxoPpX2r9LLWqoAAKEBBgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAEDAAAAONaV
I6ps4AbechPOAAChAfb///8AAAABAwAAAP8g80g95y8jA06riQAAoQEOAAAABgAAAAAAAAAGAAAA
AAAAAAYAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/ipv4/ip4.gcda
YWRjZ1IzMEIxMDW3AAAAAQMAAADiTkk//OSWYNxPeR4AAKEB9v///wAAAAEDAAAAnLBJY1QiXObS
+lD5AAChARwAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEAAAAAAAAAAAAAAQMAAABGAjFbr4qfGhpl3mwAAKEB9v///wAAAAEDAAAA98z7b/5CNxpZ0HKo
AAChAWAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAC
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAA
AAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAABAwAA
AHdq/TYLEzFup0abZgAAoQEMAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAIAAAAAAAAAAAAAAQMAAABR9yJ2X9ru/9PaqHsAAKEB2v///wAAAAEDAAAAsZZOKBhA1q6N
1eAwAAChAfD///8AAAABAwAAAP89hwdoAlc2WRGhBQAAoQHm////AAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/ipv4/ip4_frag.gcda
YWRjZ1IzMEJqMDW3AAAAAQMAAAAJLHtV2G0zmeXhLUYAAKEBzv///wAAAAEDAAAA3iBYXgTjmYWQ
/oFwAAChAfT///8AAAABAwAAAKMzBTFYmi66FQzNAgAAoQH6////AAAAAQMAAABkV2wf3QCaej6y
u8AAAKEB/P///wAAAAEDAAAAZfcZLzO0wWu+sX/0AAChAbL///8AAAABAwAAANuuXGtIrkB1yEuF
oQAAoQHE////AAAAAQMAAADV8EpccqlPqUBr2gkAAKEB+P///wAAAAEDAAAAUiitFDeEM7/M1f9m
AAChAfL///8AAAABAwAAAKuI0h3kYrTMu7CRoAAAoQHo////AAAAAQMAAABzIB5P+kICf1mJzgIA
AKEB4v///wAAAAEDAAAAdzPYIADXN8Tm3RNiAAChAfj///8AAAAA

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/mem.gcda
YWRjZ1IzMEKpMDW3AAAAAQMAAABvgu1imfBVU4KVXnYAAKEB+P///wAAAAEDAAAAWJTmNkCSYW2B
0dbTAAChATIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAA
AAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAEDAAAAd9Mmd0BSXWEb
CwhhAAChAcz///8AAAABAwAAABeHAWV1thnVG3j3oQAAoQEUAAAAAgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAA
AAAAAAAAAAABAwAAAPccN31dGnshNgsDiQAAoQEUAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAA
AgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAA
AAABAwAAAELe72Y4qgJcN0Y1SwAAoQEEAAAAAQAAAAAAAAABAAAAAAAAAAAAAAEDAAAAeSG5Hwnw
MlrvtQoLAAChASgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA
AAAAAAACAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAQMAAAAuSXYZ16AkZ+jpXdsAAKEBAgAAAAUAAAAAAAAAAAAAAQMAAADrLvZqnDHSy+jp
XdsAAKEBAgAAABIAAAAAAAAAAAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/memp.gcda
YWRjZ1IzMELaMDW3AAAAAQMAAAAVF5AiQjz+me+hUEEAAKEB+P///wAAAAEDAAAAgayqEVjKh2q3
U5P9AAChAfb///8AAAABAwAAAI/gwW7kAg6DbLDwEwAAoQH8////AAAAAQMAAADfeD1zkY2UDGbM
GFAAAKEBBgAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAEDAAAAsg7Wak0/HhjlijldAACh
Afj///8AAAABAwAAADAmXEha66yIjQDyHAAAoQEGAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAA
AAAAAQMAAABATn4hUjZEQkIg/3MAAKEBBgAAAAEAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAED
AAAAXCUyTFYc1/WTV+q4AAChAQQAAAAIAAAAAAAAAA0BAAAAAAAAAAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/netif.gcda
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

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/pbuf.gcda
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
AAAAAAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/raw.gcda
YWRjZ1IzMEKcMTW3AAAAAQMAAACXieBYUmRO10/JWb8AAKEBDgAAAAIAAAAAAAAAAgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQMAAABFssM/HFFs7/lK
s3wAAKEB/P///wAAAAEDAAAAVeK8F1ml2hCNiYAYAAChAfr///8AAAABAwAAAHWpNRDJaEyJ98/E
LAAAoQH0////AAAAAQMAAACTqCwa/yqpwz6yu8AAAKEB/P///wAAAAEDAAAADBu2YV+PFxA4JSv9
AAChAdj///8AAAABAwAAAMTH4zRpLrevL44scwAAoQHo////AAAAAQMAAAChsP1rOH9ybbiDMKQA
AKEB/v///wAAAAEDAAAASXMSaz5jUCq4gzCkAAChAf7///8AAAABAwAAAFF6D0h5oLXSfccECwAA
oQH4////AAAAAQMAAAABS59y3tit2BzifMIAAKEB/P///wAAAAEDAAAAHRXsVUgzu319xwQLAACh
Afj///8AAAABAwAAAGLfT2oVhCPjfdXtKwAAoQEaAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwAAAPhO80jKTh3H6zHeDwAAoQHu////AAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/timeouts.gcda
YWRjZ1IzMELJMTW3AAAAAQMAAABTP8podw7hXWOK27IAAKEB9v///wAAAAEDAAAAT36kVfAZgyqW
tu2lAAChAfj///8AAAABAwAAAL/QK0/WtAJ61sRHFQAAoQEOAAAAAQAAAAAAAAAAAAAAAAAAAAEA
AAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwAAAJTv9yxJIXFxEEUV
tAAAoQHy////AAAAAQMAAAD+ZfxS3I/8aQOF34EAAKEBCAAAAAIAAAAAAAAAAAAAAAAAAAACAAAA
AAAAAAIAAAAAAAAAAAAAAQMAAADdx0Fe6E/5kEIg/3MAAKEBBgAAAAEAAAAAAAAAAgAAAAAAAAAC
AAAAAAAAAAAAAAEDAAAADATzVN3PnUbz40HPAAChAfT///8AAAABAwAAAMt2kzM6LWrkX/2/RQAA
oQESAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/core/udp.gcda
YWRjZ1IzMEL1MTW3AAAAAQMAAAAeN2kidg0ERk/JWb8AAKEBDgAAAAIAAAAAAAAAAgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQMAAABwuLAGqri6R/lK
s3wAAKEB/P///wAAAAEDAAAAHh4LJrk7dkmNiYAYAAChAQYAAAABAAAAAAAAAAEAAAAAAAAAAQAA
AAAAAAAAAAABAwAAAFhzISk35J7qEwtzSgAAoQHy////AAAAAQMAAABoa/5lEm3kWxzifMIAAKEB
BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAwAAAH6fqT9y771rHOJ8wgAAoQH8////AAAAAQMAAAAg
KiJD9ooiUGxA6bkAAKEB7v///wAAAAEDAAAANqckJgO1Xj8c4nzCAAChAQQAAAABAAAAAAAAAAEA
AAAAAAAAAAAAAQMAAADUzu9bQtiESBcepG4AAKEBJAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAB
AAAAAAAAAAAAAAEDAAAAEddbbEIoli20CpFLAAChATgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAA
AAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAEDAAAAXwcrXSY737B+kQWAAAChARQA
AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEDAAAA6R33DXRUGWFO+cBSAAChAe7///8AAAAB
AwAAAFpzLxTevR+476FQQQAAoQH4////AAAAAQMAAABothpVvaNdVFGNsq8AAKEBWAAAAAIAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAA
AAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAA
AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAC
AAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAA
AAAAAAAAAAABAwAAAK5kp2LCGHr5O1Na2wAAoQEaAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC
AAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAABAwAAABqa7Sl0CRZzc+0iVQAAoQH2////AAAAAQMA
AACoQ8lIznIe9biDMKQAAKEBAgAAAAEAAAAAAAAAAAAAAA==

/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/src/netif/ethernet.gcda
YWRjZ1IzMEIwMjW3AAAAAQMAAAC+EBQuXa7stuNAYTkAAKEBCgAAAAEAAAAAAAAAAQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAwAAAAQbGWmmhbpBJ5lR8AAAoQEmAAAAAQAAAAAA
AAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

*** END OF GCOV INFO ***

Reply via email to