This is the mail archive of the gdb-patches@sourceware.org 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]
Other format: [Raw text]

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;

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