[OB] Fix xcoffread.c build error

Hui Zhu teawater@gmail.com
Fri May 20 05:13:00 GMT 2011


On Thu, May 19, 2011 at 17:59, Pedro Alves <pedro@codesourcery.com> wrote:
> On Thursday 19 May 2011 07:56:00, Hui Zhu wrote:
>> gcc -g -O2   -I. -I../../src/gdb -I../../src/gdb/common
>> -I../../src/gdb/config -DLOCALEDIR="\"/usr/local/share/locale\""
>> -DHAVE_CONFIG_H -I../../src/gdb/../include/opcode
>> -I../../src/gdb/../opcodes/.. -I../../src/gdb/../readline/.. -I../bfd
>> -I../../src/gdb/../bfd -I../../src/gdb/../include -I../libdecnumber
>> -I../../src/gdb/../libdecnumber  -I../../src/gdb/gnulib -Ignulib
>> -DMI_OUT=1 -DTUI=1 -DGDBTK  -Wall -Wdeclaration-after-statement
>> -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused
>> -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts
>> -Werror -c -o xcoffread.o -MT xcoffread.o -MMD -MP -MF
>> .deps/xcoffread.Tpo ../../src/gdb/xcoffread.c
>> cc1: warnings being treated as errors
>> ../../src/gdb/xcoffread.c: In function 'xcoff_psymtab_to_symtab_1':
>> ../../src/gdb/xcoffread.c:964:25: error:
>> 'fcn_aux_saved$x_sym$x_misc$x_fsize' may be used uninitialized in this
>> function
>> make[2]: *** [xcoffread.o] Error 1
>> make[2]: Leaving directory `/home/teawater/gdb/cvs/ba/gdb'
>> make[1]: *** [all-gdb] Error 2
>> make[1]: Leaving directory `/home/teawater/gdb/cvs/ba'
>> make: *** [all] Error 2
>>
>> 2011-05-19  Hui Zhu  <teawater@gmail.com>
>>
>>       * xcoffread.c (read_xcoff_symtab): Initialize fcn_aux_saved.
>> ===================================================================
>> RCS file: /cvs/src/src/gdb/xcoffread.c,v
>> retrieving revision 1.87
>> retrieving revision 1.88
>> diff -u -r1.87 -r1.88
>> --- src/gdb/xcoffread.c       2011/04/19 14:33:09     1.87
>> +++ src/gdb/xcoffread.c       2011/05/19 06:54:30     1.88
>> @@ -961,7 +961,7 @@
>>    struct coff_symbol fcn_stab_saved = { 0 };
>>
>>    /* fcn_cs_saved is global because process_xcoff_symbol needs it.  */
>> -  union internal_auxent fcn_aux_saved;
>> +  union internal_auxent fcn_aux_saved = main_aux;
>
> Hmm?  Initializing fcn_aux_saved with the also uninitialized
> main_aux makes the warning go away?
>
> This appears to be hiding a real bug.
>
>>    struct context_stack *new;
>>
>>    char *filestring = " _start_ ";    /* Name of the current file.  */
>>
>
> --
> Pedro Alves
>

I am sorry that I just make it can be build but looks didn't fix it.

I checked all of this function:
  while (symnum < max_symnum)
    {
      if ((cs->c_sclass == C_EXT || cs->c_sclass == C_HIDEXT)
	  && cs->c_naux == 1)
	{
	  bfd_coff_swap_aux_in (abfd, raw_auxptr, cs->c_type, cs->c_sclass,
				0, cs->c_naux, &main_aux);

	    case XTY_LD:
		case XMC_PR:
		  fcn_aux_saved = main_aux;


	case C_FCN:
	  else if (strcmp (cs->c_name, ".ef") == 0)
	      finish_block (new->name, &local_symbols, new->old_blocks,
			    new->start_addr,
			    (fcn_cs_saved.c_value
			     + fcn_aux_saved.x_sym.x_misc.x_fsize
			     + ANOFFSET (objfile->section_offsets,
					 SECT_OFF_TEXT (objfile))),
			    objfile);


Not sure I can fixed it or not.  What about add a "fcn_aux_saved =
main_aux;" after "bfd_coff_swap_aux_in"?

Thanks,
Hui



More information about the Gdb-patches mailing list