This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [RFC/RFA] gdb extension for Harvard architectures


> We're also expected to make GDB user friendly.
>> 
>> In the above, if the user wanted to convert the function pointer into a
>> data pointer then they would enter:
>> 
>> (@data int *)foo
>> 
>> and who knows what the result would be.

Mild sarcasm :-)

> The result would be a data address corresponding to the 
> code address 'foo'.  For example, if code addresses have their
> 32nd bit set and data addresses do not, then the address of foo
> might be 0x80001234, and (@data int *) foo would be 0x1234.
> BTW, (int *) foo would also be 0x1234, because an int pointer
> is by default located in data space.

A specific combination of ISA and C language implementation will always 
give the above meaning.  However, each such combination will result in a 
different behavour.  On the d10v it is:

(*foo)() = 0x1234; // 0x010048d0
char *c = foo; // 0x2001234
The C language spec has nothing to say about how this should be 
interpreted.  As they say, ``we're making this up as we go along'' :-)

Going back to my point ``user friendly''.  When, if ever, would a user 
want to evaluate the expression:

	(@data int *@data) func

(aka ``(int*)func'') compared to a desire to evaluate the expression:

	(@code int *@data) func

(aka ``(@code int *) func'').

Andrew




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]