Hello,

Building Ruby 3.2.2 on Solaris-Sparc 32-bit with Developer Studio 12.6.

Issues:
1) compilation of iseq.c fails due to variable definition in macro OPTION:
#define SET_COMPILE_OPTION(o, h, mem) \
  { VALUE flag = rb_hash_aref((h), ID2SYM(rb_intern(#mem))); \
      if (flag == Qtrue)  { (o)->mem = 1; } \
      else if (flag == Qfalse)  { (o)->mem = 0; } \
  }

    SET_COMPILE_OPTION(option, opt, inline_const_cache);
    SET_COMPILE_OPTION(option, opt, peephole_optimization);
    SET_COMPILE_OPTION(option, opt, tailcall_optimization);
    SET_COMPILE_OPTION(option, opt, specialized_instruction);
    SET_COMPILE_OPTION(option, opt, operands_unification);
    SET_COMPILE_OPTION(option, opt, instructions_unification);
    SET_COMPILE_OPTION(option, opt, stack_caching);
    SET_COMPILE_OPTION(option, opt, frozen_string_literal);
    SET_COMPILE_OPTION(option, opt, debug_frozen_string_literal);
    SET_COMPILE_OPTION(option, opt, coverage_enabled);

"iseq.c", line 812: identifier redefined: flag
        current : unsigned long
...

If the definition of flag is moved outside of the macro:

VALUE flag;
#define SET_COMPILE_OPTION(o, h, mem) \
  { flag = rb_hash_aref((h), ID2SYM(rb_intern(#mem))); \
      if (flag == Qtrue)  { (o)->mem = 1; } \
      else if (flag == Qfalse)  { (o)->mem = 0; } \
  }

then iseq.c gets compiled. What's the correct fix for this macro?

2) After fixing the above error, the build progresses but fails in linking miniruby

linking miniruby
Undefined                       first referenced
 symbol                             in file
.L13046                             iseq.o

It is not clear what .L13046 represents. Can any one please share how this issue can be resolved?

Thanks.