Issue #18026 has been reported by tenderlovemaking (Aaron Patterson).

----------------------------------------
Feature #18026: Add global variables for instruction information
https://bugs.ruby-lang.org/issues/18026

* Author: tenderlovemaking (Aaron Patterson)
* Status: Open
* Priority: Normal
----------------------------------------
When I am debugging crashes in Ruby, sometimes it is very convenient to disassemble iseqs in a core file.  For example in Bug #17984, I had a core file from a dead process.  Disassembling the iseqs where the crash occurred helped me to find the cause of the crash.

However, since 72e318f118d5cfde0e66a41acd3a2070fcaf4348, YARV instruction information tables that I need to disassemble the iseqs became static, function local constants.  The problem with function local statics is that the symbol names generated depend on the compiler we use.  For example, [this constant](https://github.com/ruby/ruby/blob/b1b7f997aeb8a09e863f4d6271ab38da179e246d/tool/ruby_vm/views/_insn_name_info.erb#L21-L23), the `x` variable inside the `insn_name` function.  On clang the symbol name is `insn_name.x`:

```
$ nm ./miniruby | grep insn_name.x
00000001002cc7c0 s _insn_name.x
00000001002ce350 s _insn_name.x
00000001002cf310 s _insn_name.x
```

But with gcc the symbol name is `x.SOMENUMBER`:

```
aaron@whiteclaw ~/g/ruby (master)> nm ./miniruby | grep ' x\.'
00000000003016a0 r x.19369
00000000002f9820 r x.51289
00000000002fa520 r x.51305
00000000002ee4e0 r x.51499
00000000002ef2c0 r x.51515
```

Even more complicated is that we have other static variables named `x`, so I have to hunt for the right symbol name via trial and error.

Can we change these symbols to be globals so that debuggers can look for a consistent name?

Thank you!



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>