<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/2a75847e31836e9a2520b63d46de1a6dc3e8b91a">https://github.com/macports/macports-ports/commit/2a75847e31836e9a2520b63d46de1a6dc3e8b91a</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 2a75847e31836e9a2520b63d46de1a6dc3e8b91a
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Thu Apr 20 22:28:29 2023 +0800

<span style='display:block; white-space:pre;color:#404040;'>    R-winch: new port
</span>---
 R/R-winch/Portfile                                 |  36 ++++
 ...-macho.c-update-to-a-more-complete-source.patch | 240 +++++++++++++++++++++
 2 files changed, 276 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/R/R-winch/Portfile b/R/R-winch/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ab1acb7ae6b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/R/R-winch/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,36 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           R 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+R.setup             github r-prof winch 0.1.0.9000 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories-append   devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@barracuda156 gmail.com:vital.had} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Portable native and joint stack traces
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    {*}${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://r-prof.github.io/winch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  3dbe40742a19729d051d4690c8e69456f55b13e4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  acc1fd24a2615579ba288db4c2708d1e1babbdd753ad8ecb686dd479457949f7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    671095
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  port:R-lifecycle \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:R-procmaps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Use these sources: https://github.com/ianlancetaylor/libbacktrace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args      -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          0001-macho.c-update-to-a-more-complete-source.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_test-append port:R-DBI \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:R-knitr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:R-magrittr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:R-purrr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:R-rlang \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:R-rmarkdown \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:R-RSQLite \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:R-testthat \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:R-vctrs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Tests may not work: https://github.com/r-prof/winch/issues/67
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run            yes
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/R/R-winch/files/0001-macho.c-update-to-a-more-complete-source.patch b/R/R-winch/files/0001-macho.c-update-to-a-more-complete-source.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..e6b566d2eee
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/R/R-winch/files/0001-macho.c-update-to-a-more-complete-source.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,240 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 5c29e3b3f342885f6f6a80a7c3b8af6951c3d359 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 20 Apr 2023 18:08:13 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] macho.c: update to a more complete source
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Borrowed from: https://github.com/ianlancetaylor/libbacktrace/blob/master/macho.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/vendor/libbacktrace/macho.c | 100 +++++++++++++++++++++++---------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 73 insertions(+), 27 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/vendor/libbacktrace/macho.c b/src/vendor/libbacktrace/macho.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3aea70c..d00aea9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/vendor/libbacktrace/macho.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/vendor/libbacktrace/macho.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* elf.c -- Get debug data from a Mach-O file for backtraces.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-   Copyright (C) 2020 Free Software Foundation, Inc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   Copyright (C) 2020-2021 Free Software Foundation, Inc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Written by Ian Lance Taylor, Google.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Redistribution and use in source and binary forms, with or without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -75,7 +75,7 @@ struct macho_header_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct macho_header_fat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  uint32_t magic; /* Magic number (MACH_O_MH_MAGIC_FAT) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint32_t magic; /* Magic number (MACH_O_MH_(MAGIC|CIGAM)_FAT(_64)?) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t nfat_arch;   /* Number of components */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -85,6 +85,8 @@ struct macho_header_fat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MACH_O_MH_MAGIC_64        0xfeedfacf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MACH_O_MH_MAGIC_FAT       0xcafebabe
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MACH_O_MH_CIGAM_FAT       0xbebafeca
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MACH_O_MH_MAGIC_FAT_64    0xcafebabf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MACH_O_MH_CIGAM_FAT_64    0xbfbafeca
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Value for the header filetype field.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -105,6 +107,20 @@ struct macho_fat_arch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t align; /* Alignment of this entry */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* A component of a 64-bit fat file.  This is used if the magic field
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   is MAGIC_FAT_64.  This is only used when some file size or file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   offset is too large to represent in the 32-bit format.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct macho_fat_arch_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint32_t cputype;       /* CPU type */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint32_t cpusubtype;    /* CPU subtype */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint64_t offset;        /* File offset of this entry */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint64_t size;  /* Size of this entry */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint32_t align; /* Alignment of this entry */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint32_t reserved;      /* Reserved */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Values for the fat_arch cputype field (and the header cputype
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    field).  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -112,9 +128,11 @@ struct macho_fat_arch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MACH_O_CPU_TYPE_X86 7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MACH_O_CPU_TYPE_ARM 12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MACH_O_CPU_TYPE_PPC 18
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MACH_O_CPU_TYPE_X86_64 (MACH_O_CPU_TYPE_X86 | MACH_O_CPU_ARCH_ABI64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MACH_O_CPU_TYPE_ARM64  (MACH_O_CPU_TYPE_ARM | MACH_O_CPU_ARCH_ABI64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MACH_O_CPU_TYPE_PPC64  (MACH_O_CPU_TYPE_PPC | MACH_O_CPU_ARCH_ABI64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* The header of a load command.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -740,14 +758,14 @@ static int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ macho_add_fat (struct backtrace_state *state, const char *filename,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          int descriptor, int swapped, off_t offset,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          const unsigned char *match_uuid, uintptr_t base_address,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-         int skip_symtab, uint32_t nfat_arch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         int skip_symtab, uint32_t nfat_arch, int is_64,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          backtrace_error_callback error_callback, void *data,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+          fileline *fileline_fn, int *found_sym)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int arch_view_valid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   unsigned int cputype;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t arch_size;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   struct backtrace_view arch_view;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  size_t archoffset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   unsigned int i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   arch_view_valid = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -760,46 +778,69 @@ macho_add_fat (struct backtrace_state *state, const char *filename,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   cputype = MACH_O_CPU_TYPE_ARM64;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined (__arm__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   cputype = MACH_O_CPU_TYPE_ARM;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined (__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  cputype = MACH_O_CPU_TYPE_PPC;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined (__ppc64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  cputype = MACH_O_CPU_TYPE_PPC64;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   error_callback (data, "unknown Mach-O architecture", 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   goto fail;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (is_64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    arch_size = sizeof (struct macho_fat_arch_64);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    arch_size = sizeof (struct macho_fat_arch);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!backtrace_get_view (state, descriptor, offset,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                     nfat_arch * sizeof (struct macho_fat_arch),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                     nfat_arch * arch_size,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                      error_callback, data, &arch_view))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     goto fail;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  archoffset = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (i = 0; i < nfat_arch; ++i)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      struct macho_fat_arch fat_arch;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       uint32_t fcputype;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      uint64_t foffset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if (is_64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    struct macho_fat_arch_64 fat_arch_64;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      memcpy (&fat_arch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ((const char *) arch_view.data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-         + i * sizeof (struct macho_fat_arch)),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        sizeof fat_arch);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    memcpy (&fat_arch_64,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            (const char *) arch_view.data + i * arch_size,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            arch_size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fcputype = fat_arch_64.cputype;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    foffset = fat_arch_64.offset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (swapped)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        fcputype = __builtin_bswap32 (fcputype);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        foffset = __builtin_bswap64 (foffset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    struct macho_fat_arch fat_arch_32;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      fcputype = fat_arch.cputype;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      if (swapped)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  fcputype = __builtin_bswap32 (fcputype);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    memcpy (&fat_arch_32,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            (const char *) arch_view.data + i * arch_size,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            arch_size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fcputype = fat_arch_32.cputype;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    foffset = (uint64_t) fat_arch_32.offset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (swapped)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        fcputype = __builtin_bswap32 (fcputype);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        foffset = (uint64_t) __builtin_bswap32 ((uint32_t) foffset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (fcputype == cputype)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    uint32_t foffset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* FIXME: What about cpusubtype?  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    foffset = fat_arch.offset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (swapped)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      foffset = __builtin_bswap32 (foffset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     backtrace_release_view (state, &arch_view, error_callback, data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return macho_add (state, filename, descriptor, foffset, match_uuid,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       base_address, skip_symtab, error_callback, data,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       fileline_fn, found_sym);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      archoffset += sizeof (struct macho_fat_arch);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   error_callback (data, "could not find executable in fat file", 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -868,6 +909,7 @@ macho_add_dsym (struct backtrace_state *state, const char *filename,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   dsymsuffixdirlen = strlen (dsymsuffixdir);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   dsymlen = (dirnamelen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       + 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        + basenamelen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        + dsymsuffixdirlen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        + basenamelen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -890,7 +932,7 @@ macho_add_dsym (struct backtrace_state *state, const char *filename,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (diralc != NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      backtrace_free (state, diralc, dirnamelen, error_callback, data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      backtrace_free (state, diralc, dirnamelen + 1, error_callback, data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       diralc = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -980,6 +1022,7 @@ macho_add (struct backtrace_state *state, const char *filename, int descriptor,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       hdroffset = offset + sizeof (struct macho_header_64);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case MACH_O_MH_MAGIC_FAT:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case MACH_O_MH_MAGIC_FAT_64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   struct macho_header_fat fat_header;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -987,10 +1030,12 @@ macho_add (struct backtrace_state *state, const char *filename, int descriptor,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   memcpy (&fat_header, &header, sizeof fat_header);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return macho_add_fat (state, filename, descriptor, 0, hdroffset,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                         match_uuid, base_address, skip_symtab,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                        fat_header.nfat_arch, error_callback, data,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                        fileline_fn, found_sym);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        fat_header.nfat_arch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        header.magic == MACH_O_MH_MAGIC_FAT_64,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        error_callback, data, fileline_fn, found_sym);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case MACH_O_MH_CIGAM_FAT:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case MACH_O_MH_CIGAM_FAT_64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   struct macho_header_fat fat_header;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t nfat_arch;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1000,8 +1045,9 @@ macho_add (struct backtrace_state *state, const char *filename, int descriptor,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   nfat_arch = __builtin_bswap32 (fat_header.nfat_arch);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return macho_add_fat (state, filename, descriptor, 1, hdroffset,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                         match_uuid, base_address, skip_symtab,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                        nfat_arch, error_callback, data,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                        fileline_fn, found_sym);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        nfat_arch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        header.magic == MACH_O_MH_CIGAM_FAT_64,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        error_callback, data, fileline_fn, found_sym);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       error_callback (data, "executable file is not in Mach-O format", 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1222,7 +1268,7 @@ backtrace_initialize (struct backtrace_state *state, const char *filename,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       mff = macho_nodebug;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (!macho_add (state, name, d, 0, NULL, base_address, 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 error_callback, data, &mff, &mfs))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (mff != macho_nodebug)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   macho_fileline_fn = mff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.40.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>

</pre>