This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: usage of disassemble_info variables
Ian Lance Taylor writes:
> Doug Evans <dje@transmeta.com> writes:
>
> > There seems to be an unwritten rule that a disassemble_info
> > variable can't be a (non-static) local variable.
> > Either that or INIT_DISASSEMBLE_mumble must initialize disassembler_options
> > or each caller to print_insn_i386* is responsible for setting it.
> >
> > We have various entry points into the x86 disassembler
> > and I'm seeing a segv'ing because disassembler_options has garbage.
> >
> > objdump initializes it.
> > gdb doesn't but gets away with it because tm_print_insn_info is a global.
> >
> > What's up?
>
> I think that INIT_DISASSEMBLE_* should always be called on an instance
> of disassembler_options before it is used. From dis-asm.h:
>
> /* Macro to initialize a disassemble_info struct. This should be called
> by all applications creating such a struct. */
>
> I think this applies whether the disassembler_options is global,
> static, or local. If gdb doesn't initialize it, it should.
I didn't think my message was worded THAT badly.
I know disassemble_info and disassembler_options are kinda similar, but still.
[It's the "it" that's ambiguous, but if you believe the message
is sensible going in, the answer will appear to you.]
And the fans go wild as he puts the ball back into Ian's court ... raahhh!!
[I'm in a whimsical mood today. :-)]