Bug #7647

Ruby 1.9.3 doesn't build on m68k due to alignment of structs

Added by Alan Hourihane over 2 years ago. Updated over 2 years ago.

[ruby-core:51224]
Status:Closed
Priority:Normal
Assignee:-
ruby -v:0 Backport:

Description

I'd built Ruby 1.8 without any problems, but 1.9.3 shows up an issue with Ruby due to alignment checking.

When executing Init_var_tables(), we execute....

CONST_ID(autoload, "autoload");

We end up, in rb_intern3() and use the RString struct to pass into rb_enc_associate() which checks alignment with SPECIAL_CONST_P(x) via IMMEDIATE(x) and uses the RUBY_IMMEDIATE_MASK which is defined as 0x03.

This can fail on m68k as structs can be aligned on 16bit boundaries. I had to change....

struct RString fake_str;

to

struct RString fake_str attribute ((aligned (4)));

To get miniruby to build, but I'm not sure of other lurkers and whether this strict use of IMMEDIATE(x) is really valid.

Associated revisions

Revision 38741
Added by Nobuyoshi Nakada over 2 years ago

ruby.h: align

  • include/ruby/ruby.h (RBasic): to be aligned on a VALUE size boundary. [Bug #7647]

Revision 38741
Added by Nobuyoshi Nakada over 2 years ago

ruby.h: align

  • include/ruby/ruby.h (RBasic): to be aligned on a VALUE size boundary. [Bug #7647]

History

#1 Updated by Nobuyoshi Nakada over 2 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r38741.
Alan, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


ruby.h: align

  • include/ruby/ruby.h (RBasic): to be aligned on a VALUE size boundary. [Bug #7647]

Also available in: Atom PDF