* Re: objdump -M for x86
[not found] <20011114134429.G6922@bubble.sa.bigpond.net.au>
@ 2001-11-02 12:10 ` Andrew Cagney
2001-11-02 15:12 ` Alan Modra
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Cagney @ 2001-11-02 12:10 UTC (permalink / raw)
To: Alan Modra; +Cc: binutils, gdb
> Applying to mainline. Note to gdb people: Some backwards compatibility
> stuff can be removed when i386-tdep.c and x86-64-tdep are updated to use
> the new (old!) print_insn_i386.
>
> binutils/ChangeLog
> * doc/binutils.texi (objdump): Document x86 -M options.
> include/ChangeLog
> * dis-asm.h (print_insn_i386): Declare.
> opcodes/ChangeLog
> * disassemble.c (disassembler): Call print_insn_i386.
> * i386-dis.c (SUFFIX_ALWAYS): Define.
> (struct dis_private): Add orig_sizeflag.
> (print_insn_i386): Make it a wrapper, calling..
> (print_insn): ..The old body of print_insn_i386. Avoid longjmp
> warning without using volatile by moving orig_sizeflag to priv,
> and removing inbuf. Parse disassembler_options.
> (print_insn_i386_att, print_insn_i386_intel): Move initialisation
> code to print_insn.
> (putop): Remove #ifdef SUFFIX_ALWAYS.
>
Hmm, I was wondering what you were talking about until I found this:
> + for (p = info->disassembler_options; p != NULL; )
> + {
> + if (strncmp (p, "x86_64", 6) == 0)
> + {
> + mode_64bit = 1;
> + priv.orig_sizeflag = AFLAG | DFLAG;
> + }
> + else if (strncmp (p, "i386", 4) == 0)
> + {
> + mode_64bit = 0;
> + priv.orig_sizeflag = AFLAG | DFLAG;
> + }
> + else if (strncmp (p, "i8086", 5) == 0)
> + {
> + mode_64bit = 0;
> + priv.orig_sizeflag = 0;
> + }
> + else if (strncmp (p, "intel", 5) == 0)
> + {
> + intel_syntax = 1;
> + }
> + else if (strncmp (p, "att", 3) == 0)
> + {
> + intel_syntax = 0;
> + }
>
(x86-64?)
Thanks!
Next problem ... If I understand things correctly, the set of possible
options, for a given ISA family, is finite. Could that finite list be
made available via a published interface? That way GDB could
incorporate them into its CLI so that things like ``set
disassembly-options <tab>'' worked.
To get the feel for what I'm talking about check gdb/arm-tdep.c which
queries opcodes for the ARM register naming conventions.
enjoy,
Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: objdump -M for x86
2001-11-02 12:10 ` objdump -M for x86 Andrew Cagney
@ 2001-11-02 15:12 ` Alan Modra
2001-11-02 23:08 ` Andrew Cagney
0 siblings, 1 reply; 6+ messages in thread
From: Alan Modra @ 2001-11-02 15:12 UTC (permalink / raw)
To: Andrew Cagney; +Cc: binutils, gdb
On Wed, Nov 14, 2001 at 12:28:25AM -0500, Andrew Cagney wrote:
> > Applying to mainline. Note to gdb people: Some backwards compatibility
> > stuff can be removed when i386-tdep.c and x86-64-tdep are updated to use
> > the new (old!) print_insn_i386.
>
> Hmm, I was wondering what you were talking about until I found this:
Actually, I was meaning that you don't need to call print_insn_i386_att
or ..._intel; Just call print_insn_i386 with info->mach set.
> (x86-64?)
Well, x86_64 follows the name used by -m
> Next problem ... If I understand things correctly, the set of possible
> options, for a given ISA family, is finite. Could that finite list be
> made available via a published interface?
Yes, good idea. Something like:
const char **opcodes_disasm_options (enum bfd_architecture arch)
returning a malloc'd list of strings for the given arch?
Alan
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: objdump -M for x86
2001-11-02 15:12 ` Alan Modra
@ 2001-11-02 23:08 ` Andrew Cagney
2001-11-03 1:01 ` Alan Modra
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Cagney @ 2001-11-02 23:08 UTC (permalink / raw)
To: Alan Modra; +Cc: binutils, gdb
>
> Actually, I was meaning that you don't need to call print_insn_i386_att
> or ..._intel; Just call print_insn_i386 with info->mach set.
Hmm, I didn't see that ....
> mode_64bit = (info->mach == bfd_mach_x86_64_intel_syntax
> || info->mach == bfd_mach_x86_64);
>
> + if (intel_syntax == -1)
> + intel_syntax = (info->mach == bfd_mach_i386_i386_intel_syntax
> + || info->mach == bfd_mach_x86_64_intel_syntax);
> +
See my other e-mail. I can't find anything that sets ->mach to
.._intel_syntax so, apart from backward compatibility, I can't think of
a reason to hang on to those ``machine'' variants. I don't expect GDB
to start using them again.
>> Next problem ... If I understand things correctly, the set of possible
>> options, for a given ISA family, is finite. Could that finite list be
>> made available via a published interface?
>
>
> Yes, good idea. Something like:
>
> const char **opcodes_disasm_options (enum bfd_architecture arch)
>
> returning a malloc'd list of strings for the given arch?
(if gdb is going to freeargv() it then I don't think you want the const).
Yes, anything like that. Could add it to bfd_arch_info_type, or ....
What ever BINUTILS is comfortable with I guess.
We'll need to do things like pin down the semantics. Which really means
agree on what something like ``x86-64 i386 i8086 intel att addr16 addr32
data32 data16 suffix'' actually means, and ensure that GDB doesn't find
it has accepted a set of options only to find them later rejected by the
disasssembler.
(May one day need to add pre-parsed disassembler-options to the
disassemble_info due to the overhead of constant re-parsing. However,
cross that bridge when someone notices a real problem :-)
Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: objdump -M for x86
2001-11-02 23:08 ` Andrew Cagney
@ 2001-11-03 1:01 ` Alan Modra
2001-11-27 22:37 ` Andrew Cagney
0 siblings, 1 reply; 6+ messages in thread
From: Alan Modra @ 2001-11-03 1:01 UTC (permalink / raw)
To: Andrew Cagney; +Cc: binutils, gdb
On Wed, Nov 14, 2001 at 03:49:52AM -0500, Andrew Cagney wrote:
>
> > mode_64bit = (info->mach == bfd_mach_x86_64_intel_syntax
> > || info->mach == bfd_mach_x86_64);
> >
> > + if (intel_syntax == -1)
> > + intel_syntax = (info->mach == bfd_mach_i386_i386_intel_syntax
> > + || info->mach == bfd_mach_x86_64_intel_syntax);
> > +
>
> See my other e-mail. I can't find anything that sets ->mach to
> .._intel_syntax so, apart from backward compatibility, I can't think of
> a reason to hang on to those ``machine'' variants. I don't expect GDB
> to start using them again.
"objdump -d -m i386:intel" sets it via bfd_default_scan from the entry
in bfd/cpu-i386.c
> We'll need to do things like pin down the semantics. Which really means
> agree on what something like ``x86-64 i386 i8086 intel att addr16 addr32
> data32 data16 suffix'' actually means, and ensure that GDB doesn't find
> it has accepted a set of options only to find them later rejected by the
> disasssembler.
Perhaps the thing to do is add a function to bfd_arch_info_type that
validates a -M string for the given arch. If a null string is passed in,
it could return an array of possible string components.
Alan
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: objdump -M for x86
2001-11-27 22:37 ` Andrew Cagney
@ 2001-11-18 12:47 ` Andrew Cagney
0 siblings, 0 replies; 6+ messages in thread
From: Andrew Cagney @ 2001-11-18 12:47 UTC (permalink / raw)
To: Alan Modra; +Cc: binutils, gdb
>> See my other e-mail. I can't find anything that sets ->mach to
>> .._intel_syntax so, apart from backward compatibility, I can't think of
>> a reason to hang on to those ``machine'' variants. I don't expect GDB
>> to start using them again.
>
>
> "objdump -d -m i386:intel" sets it via bfd_default_scan from the entry
> in bfd/cpu-i386.c
Ahh. (Sorry only just got back to this). Groan.
Can I suggest a comment on the test indicating that this can happen ->
stop me trying to delete ..._intel :-)
Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: objdump -M for x86
2001-11-03 1:01 ` Alan Modra
@ 2001-11-27 22:37 ` Andrew Cagney
2001-11-18 12:47 ` Andrew Cagney
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Cagney @ 2001-11-27 22:37 UTC (permalink / raw)
To: Alan Modra; +Cc: binutils, gdb
>> See my other e-mail. I can't find anything that sets ->mach to
>> .._intel_syntax so, apart from backward compatibility, I can't think of
>> a reason to hang on to those ``machine'' variants. I don't expect GDB
>> to start using them again.
>
>
> "objdump -d -m i386:intel" sets it via bfd_default_scan from the entry
> in bfd/cpu-i386.c
Ahh. (Sorry only just got back to this). Groan.
Can I suggest a comment on the test indicating that this can happen ->
stop me trying to delete ..._intel :-)
Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2001-11-28 6:37 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20011114134429.G6922@bubble.sa.bigpond.net.au>
2001-11-02 12:10 ` objdump -M for x86 Andrew Cagney
2001-11-02 15:12 ` Alan Modra
2001-11-02 23:08 ` Andrew Cagney
2001-11-03 1:01 ` Alan Modra
2001-11-27 22:37 ` Andrew Cagney
2001-11-18 12:47 ` Andrew Cagney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox