Project

General

Profile

Actions

Bug #7647

closed

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

Added by alanh (Alan Hourihane) over 9 years ago. Updated over 9 years ago.

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

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.

Actions #1

Updated by nobu (Nobuyoshi Nakada) over 9 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]
Actions

Also available in: Atom PDF