An interpreter of object-oriented scripting language
308b2c0ab2
Armv8.3+ capable CPUs might segfault with incorrect compilation options.
See related upstream report: https://bugs.ruby-lang.org/issues/20085
We have hit this on COPR which uses [0] c7g.xlarge AWS flavor for aarch64
architecture builds. This machine flavor seems to fall into the ARMv8.3+
range.
Fedora CFLAGS come with `-mbranch-protection=standard` which means that
both BTI and the PAC protections are used. The option is equivalent
to `-mbranch-protection=pac-ret+bti`.
However, since the upstream configure.ac automatically appends
`-mbranch-protection=pac-ret`, the BTI protection is not used
as the last used option seems to overwrite [1] the Fedora
default for this.
To resolve both of these issues, of BTI being skipped and the potential
segfaults a patch is applied.
To fix segfaults an upstream patch was applied [2].
To fix the issue of overridden option I have patched the
configure.ac file to check for the `=standard` first when searching for a usable
`-mbranch-protection` option.
The overriding of our options was reported upstream:
<https://bugs.ruby-lang.org/issues/20154>
In the same issue I provided the extension of compilation option as an
attachment, to showcase a workaround that fixes the situation in Fedora.
[0] <https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/Y4GPCGQAZT2LJ5CE7MTIEFKGAPP6O2DW/>
[1] <https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/QWLEBS4YQH73HJNNLKCCGIIOU3SSXAYK/>
[2] <
|
||
---|---|---|
.gitignore | ||
libruby.stp | ||
macros.ruby | ||
macros.rubygems | ||
operating_system.rb | ||
ruby-2.1.0-always-use-i386.patch | ||
ruby-2.1.0-custom-rubygems-location.patch | ||
ruby-2.1.0-Enable-configuration-of-archlibdir.patch | ||
ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch | ||
ruby-2.3.0-ruby_version.patch | ||
ruby-2.7.0-Initialize-ABRT-hook.patch | ||
ruby-3.3.0-Disable-syntax-suggest-test-case.patch | ||
ruby-3.3.0-Revert-Optimize-allocations-in-Hash-compare_by_identity.patch | ||
ruby-3.4.0-fix-branch-protection-compilation-for-arm.patch | ||
ruby-3.4.0-ruby-net-http-Renew-test-certificates.patch | ||
ruby-exercise.stp | ||
ruby.rpmlintrc | ||
ruby.spec | ||
rubygems.attr | ||
rubygems.con | ||
rubygems.prov | ||
rubygems.req | ||
sources | ||
test_abrt.rb | ||
test_openssl_fips.rb | ||
test_systemtap.rb |