This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Crash in write_exp_msymbol for coff targets.
- From: Pedro Alves <pedro_alves at portugalmail dot pt>
- To: gdb-patches at sourceware dot org
- Date: Thu, 16 Nov 2006 20:53:01 +0000
- Subject: Crash in write_exp_msymbol for coff targets.
Hi all,
The TLS without debugging info support introduced a bug for coff based
targets.
While printing for example a global symbol's value I am getting a
segfault in parse.c:write_exp_msymbol,
at:
if (SYMBOL_BFD_SECTION (msymbol)->flags & SEC_THREAD_LOCAL)
The problem is that minimal symbols may not have a bfd section set.
The attached patch fixes it, but is it correct?
I see in coffread.c, that prim_record_minimal_symbol_and_info is always
called with a NULL
bfd section, whilst in elfread.c, is is not. Is this a limitation of the
coff format? Should coffread.c
be fixed instead?
I caught this while running the testsuite for the arm-wince gdbserver
port I am working on.
Cheers,
Pedro Alves
---
2006-11-16 Pedro Alves <pedro_alves@portugalmail.pt>
* parse.c (write_exp_msymbol): Check if SYMBOL_BFD_SECTION (msymbol)
is NULL
before dereferencing it.
--- parse.c.org 2006-11-16 20:37:10.000000000 +0000
+++ parse.c 2006-11-16 00:19:52.000000000 +0000
@@ -408,7 +408,8 @@ write_exp_msymbol (struct minimal_symbol
write_exp_elt_opcode (OP_LONG);
- if (SYMBOL_BFD_SECTION (msymbol)->flags & SEC_THREAD_LOCAL)
+ if (SYMBOL_BFD_SECTION (msymbol)
+ && (SYMBOL_BFD_SECTION (msymbol)->flags & SEC_THREAD_LOCAL))
{
bfd *bfd = SYMBOL_BFD_SECTION (msymbol)->owner;
struct objfile *ofp;