[DRE-maint] Bug#934315: ruby2.5: FTBFS on sparc64 due to alignment issues

John Paul Adrian Glaubitz glaubitz at physik.fu-berlin.de
Fri Aug 9 16:38:54 BST 2019


Source: ruby2.5
Version: 2.5.5-4
Severity: normal
Tags: patch upstream
User: debian-sparc at lists.debian.org
Usertags: sparc64

Hi!

ruby2.5 currently fails to build from source on sparc64 due to alignment
issues in the code that have already been fixed upstream [1].

Would it be possible to backport the patch for the Debian package to
fix this issue for ruby2.5? [2] Attaching the patch as well.

Thanks,
Adrian

> [1] https://bugs.ruby-lang.org/issues/14689
> [2] https://bugs.ruby-lang.org/projects/ruby-trunk/repository/git/revisions/58a2084483ce8baaf90d7b1cb00e3fa9570fbc79/diff

--
-------------- next part --------------
commit 58a2084483ce8baaf90d7b1cb00e3fa9570fbc79
Author: nobu <nobu at b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date:   Mon Apr 16 12:46:08 2018 +0000

    compile.c: align range
    
    * compile.c (ibf_dump_object_struct): align range elements.
      [ruby-core:86548] [Bug #14689]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63167 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

diff --git a/compile.c b/compile.c
index 5d37c730ef..f1cd30fe5f 100644
--- a/compile.c
+++ b/compile.c
@@ -9259,6 +9259,7 @@ ibf_dump_object_struct(struct ibf_dump *dump, VALUE obj)
 	range.beg = (long)ibf_dump_object(dump, beg);
 	range.end = (long)ibf_dump_object(dump, end);
 
+	IBF_W_ALIGN(struct ibf_object_struct_range);
 	IBF_WV(range);
     }
     else {
@@ -9425,7 +9426,7 @@ ibf_dump_object_object(struct ibf_dump *dump, VALUE obj)
     IBF_ZERO(obj_header);
     obj_header.type = TYPE(obj);
 
-    ibf_dump_align(dump, sizeof(ibf_offset_t));
+    IBF_W_ALIGN(ibf_offset_t);
     current_offset = ibf_dump_pos(dump);
 
     if (SPECIAL_CONST_P(obj)) {
diff --git a/test/ruby/test_iseq.rb b/test/ruby/test_iseq.rb
index 2ef344741b..86aad2da69 100644
--- a/test/ruby/test_iseq.rb
+++ b/test/ruby/test_iseq.rb
@@ -423,6 +423,7 @@ class TestISeq < Test::Unit::TestCase
 
   def test_to_binary_with_objects
     assert_iseq_to_binary("[]"+100.times.map{|i|"<</#{i}/"}.join)
+    assert_iseq_to_binary("@x ||= (1..2)")
   end
 
   def test_to_binary_line_info


More information about the Pkg-ruby-extras-maintainers mailing list