* [ppc64 help] Convert breakpoint's into addresses
@ 2003-09-19 19:41 Andrew Cagney
2003-09-22 22:17 ` Kevin Buettner
0 siblings, 1 reply; 2+ messages in thread
From: Andrew Cagney @ 2003-09-19 19:41 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 981 bytes --]
Hello,
I think the ppc64 ELF ABI is officially wierd.
For "main" the minimal symbol table contains two symbols vis:
main: points at descriptor in .opd sectoin
.main: points at main's code entry point
Consequently, given only a minimal symbol table, GDB, when given:
(gdb) break main
will try to insert the breakpoint in the descriptor, and not the
function. Trying to enter:
(gdb) break .main
gets you no where (syntax error :-/)
Adding to the fun, GCC's debug info contains the symbol "main" which
points at the code address (and not the descriptor) and consequently
debugging with symbols works. Yes, this means that "main" has two
different values, arrrghghgh!!
Attatched is a hack to breakpoint.c that applies "convert from func ptr
addr" to any address. This causing the breakpoint code to convert
"main" into ".main" and hence work.
I don't know if its a right fix, good fix, or of any other alternative
fix. However it does work ...
help!
Andrew
[-- Attachment #2: diffs --]
[-- Type: text/plain, Size: 1112 bytes --]
2003-09-17 Andrew Cagney <cagney@redhat.com>
* breakpoint.c (set_raw_breakpoint): Apply
CONVERT_FROM_FUNC_PTR_ADDR to the breakpoint address.
(breakpoint_re_set_one): Ditto.
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.129
diff -u -r1.129 breakpoint.c
--- breakpoint.c 14 Sep 2003 16:32:12 -0000 1.129
+++ breakpoint.c 19 Sep 2003 15:43:52 -0000
@@ -3866,7 +3866,7 @@
b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
memset (b, 0, sizeof (*b));
- b->address = sal.pc;
+ b->address = CONVERT_FROM_FUNC_PTR_ADDR (sal.pc);
if (sal.symtab == NULL)
b->source_file = NULL;
else
@@ -6838,7 +6838,7 @@
savestring (sals.sals[i].symtab->filename,
strlen (sals.sals[i].symtab->filename));
b->line_number = sals.sals[i].line;
- b->address = sals.sals[i].pc;
+ b->address = CONVERT_FROM_FUNC_PTR_ADDR (sals.sals[i].pc);
/* Used to check for duplicates here, but that can
cause trouble, as it doesn't check for disabled
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [ppc64 help] Convert breakpoint's into addresses
2003-09-19 19:41 [ppc64 help] Convert breakpoint's into addresses Andrew Cagney
@ 2003-09-22 22:17 ` Kevin Buettner
0 siblings, 0 replies; 2+ messages in thread
From: Kevin Buettner @ 2003-09-22 22:17 UTC (permalink / raw)
To: Andrew Cagney, gdb-patches
On Sep 19, 3:40pm, Andrew Cagney wrote:
> I think the ppc64 ELF ABI is officially wierd.
>
> For "main" the minimal symbol table contains two symbols vis:
>
> main: points at descriptor in .opd sectoin
> .main: points at main's code entry point
>
> Consequently, given only a minimal symbol table, GDB, when given:
>
> (gdb) break main
>
> will try to insert the breakpoint in the descriptor, and not the
> function. Trying to enter:
>
> (gdb) break .main
>
> gets you no where (syntax error :-/)
>
> Adding to the fun, GCC's debug info contains the symbol "main" which
> points at the code address (and not the descriptor) and consequently
> debugging with symbols works. Yes, this means that "main" has two
> different values, arrrghghgh!!
Yuck. Is gcc simply broken or is there a good reason to do things this
way?
> Attatched is a hack to breakpoint.c that applies "convert from func ptr
> addr" to any address. This causing the breakpoint code to convert
> "main" into ".main" and hence work.
>
> I don't know if its a right fix, good fix, or of any other alternative
> fix. However it does work ...
> help!
>
> 2003-09-17 Andrew Cagney <cagney@redhat.com>
>
> * breakpoint.c (set_raw_breakpoint): Apply
> CONVERT_FROM_FUNC_PTR_ADDR to the breakpoint address.
> (breakpoint_re_set_one): Ditto.
I can't think of anything better. If this goes in, I suggest adding
a nice fat comment explaining what's going on...
Kevin
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-09-22 22:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-09-19 19:41 [ppc64 help] Convert breakpoint's into addresses Andrew Cagney
2003-09-22 22:17 ` Kevin Buettner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox