{
  "bundle": {
    "affected_versions": [
      "13.2.0",
      "14.2.0",
      "15.3.0",
      "16.1.0",
      "16.2.0"
    ],
    "application_command": "patch --fuzz=0 -p1 -i bundles/cxx-ada-virtual-inheritance-layout/patches/VARIANT.patch",
    "build_command": "PATH=/path/to/bootstrap/bin:$PATH ./scripts/build-gnat.sh SOURCE BUILD INSTALL",
    "directory": "bundles/cxx-ada-virtual-inheritance-layout",
    "expected_failure_before_patch": "The generated Ada object is too small and under-aligned, and both visible components have incorrect positions.",
    "expected_success_after_patch": "Ada and C++ agree on complete size, alignment, direct-member position, virtual-base position, and cross-language field values at -O0 and -O2.",
    "files_modified": [
      "gcc/c-family/c-ada-spec.cc",
      "gcc/c-family/c-ada-spec.h",
      "gcc/cp/decl2.cc",
      "gcc/testsuite/g++.dg/ada-spec/virtual-inheritance-layout.C"
    ],
    "fixture_sha256": "dd918bb69e1685c3080f20e8f5b0933ac5499009e14536543e4c4ad2b9fa7943",
    "id": "cxx-ada-virtual-inheritance-layout",
    "known_good_versions": [],
    "licensing": "GCC-derived compiler hunks remain GPL-3.0-or-later. The new test is proposed for the GCC testsuite under GCC project terms.",
    "patch_statistics": {
      "gcc-13": {
        "additions": 109,
        "deletions": 14,
        "files": 4
      },
      "gcc-14": {
        "additions": 109,
        "deletions": 14,
        "files": 4
      },
      "gcc-15-16": {
        "additions": 109,
        "deletions": 13,
        "files": 4
      }
    },
    "problem": "The C++ Ada mapper drops the size, alignment, and component positions of classes with virtual bases.",
    "readme_path": "bundles/cxx-ada-virtual-inheritance-layout/README.md",
    "regression_tests": [
      "gcc/testsuite/g++.dg/ada-spec/virtual-inheritance-layout.C"
    ],
    "repository_fixture": "bundles/cxx-ada-virtual-inheritance-layout/tests/virtual-inheritance-layout.C",
    "repository_test_runner": "bundles/cxx-ada-virtual-inheritance-layout/run-test.sh",
    "roles": {
      "1.0.0": {
        "13": {
          "role": "absent",
          "source_version": "13.2.0",
          "variant": null
        },
        "14": {
          "role": "absent",
          "source_version": "14.2.0",
          "variant": null
        },
        "15": {
          "role": "absent",
          "source_version": "15.3.0",
          "variant": null
        },
        "16": {
          "role": "absent",
          "source_version": "16.1.0",
          "variant": null
        }
      },
      "1.0.1": {
        "13": {
          "role": "absent",
          "source_version": "13.2.0",
          "variant": null
        },
        "14": {
          "role": "absent",
          "source_version": "14.2.0",
          "variant": null
        },
        "15": {
          "role": "absent",
          "source_version": "15.3.0",
          "variant": null
        },
        "16": {
          "role": "absent",
          "source_version": "16.1.0",
          "variant": null
        }
      },
      "1.1.0": {
        "13": {
          "role": "absent",
          "source_version": "13.2.0",
          "variant": null
        },
        "14": {
          "role": "absent",
          "source_version": "14.2.0",
          "variant": null
        },
        "15": {
          "role": "absent",
          "source_version": "15.3.0",
          "variant": null
        },
        "16": {
          "role": "absent",
          "source_version": "16.2.0",
          "variant": null
        }
      },
      "1.2.0": {
        "13": {
          "role": "staged",
          "source_version": "13.2.0",
          "variant": null
        },
        "14": {
          "role": "staged",
          "source_version": "14.2.0",
          "variant": null
        },
        "15": {
          "role": "staged",
          "source_version": "15.3.0",
          "variant": null
        },
        "16": {
          "role": "staged",
          "source_version": "16.2.0",
          "variant": null
        }
      }
    },
    "schema": 1,
    "source_provenance": "Repository-authored GCC patch and executable regression; exact application verified locally against the pinned Darwin patchset inputs. Pinned FSF release application is required by Linux CI.",
    "staged_depends_on": [],
    "staged_in_patchset": "1.2.0",
    "staged_reason": "Virtual-base layout is C++ ABI-coupled and cannot be expressed as native Ada inheritance; dynamic virtual-base conversion stays an explicit ABI-wrapper boundary. Held out of the published patchset for separate upstream review.",
    "standalone_patch": false,
    "status": "staged",
    "test_command": "./scripts/run-regressions.sh INSTALL 1.2.0 GCC_MAJOR patched",
    "tests": [
      "bundles/cxx-ada-virtual-inheritance-layout/tests/virtual-inheritance-layout.C",
      "bundles/cxx-ada-virtual-inheritance-layout/tests/virtual_inheritance_layout_consumer.adb"
    ],
    "title": "C++ Ada virtual-inheritance layout",
    "upstream_issue": "Pending GCC Bugzilla filing.",
    "upstream_submission_state": "Not yet filed or submitted upstream.",
    "variants": [
      {
        "id": "gcc-13",
        "patch": "bundles/cxx-ada-virtual-inheritance-layout/patches/gcc-13.patch",
        "sha256": "919cfe35481ec31d1bf47768f419043951b0bb8a1416e1d34cf1075c5fff76b0",
        "source_flavors": [
          "linux",
          "darwin_arm64"
        ],
        "versions": [
          "13.2.0"
        ]
      },
      {
        "id": "gcc-14",
        "patch": "bundles/cxx-ada-virtual-inheritance-layout/patches/gcc-14.patch",
        "sha256": "db832d2ab314145855a67e1c46d5bb1cff3a6cd4c3b04eb94d8665a0acec176e",
        "source_flavors": [
          "linux",
          "darwin_arm64"
        ],
        "versions": [
          "14.2.0"
        ]
      },
      {
        "id": "gcc-15-16",
        "patch": "bundles/cxx-ada-virtual-inheritance-layout/patches/gcc-15-16.patch",
        "sha256": "c833a38a4be5e984feb11ef253b34cbae120547e46732f1fb69954c8022472a5",
        "source_flavors": [
          "linux",
          "darwin_arm64"
        ],
        "versions": [
          "15.3.0",
          "16.1.0",
          "16.2.0"
        ]
      }
    ]
  },
  "canonical_url": "https://gnat-patches.flyology.org/",
  "generated_at": "2026-08-20T17:38:49Z",
  "latest_patchset": "1.2.0",
  "latest_published_patchset": "1.1.0",
  "publication_checked": true,
  "repository_url": "https://github.com/flyology-ada/gnat-patches",
  "schema_version": 1
}
