From: tenderlove@... Date: 2021-07-07T02:33:51+00:00 Subject: [ruby-core:104526] [Ruby master Feature#18026] Add global variables for instruction information 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: