Question concerning comment in symtab.h

Paul N. Hilfinger hilfingr@otisco.mckusick.com
Wed May 9 17:04:00 GMT 2001


The definition of struct block contains:

    /* Version of GCC used to compile the function corresponding
       to this block, or 0 if not compiled with GCC.  When possible,
       GCC should be compatible with the native compiler, or if that
       is not feasible, the differences should be fixed during symbol
       reading.  As of 16 Apr 93, this flag is never used to distinguish
       between gcc2 and the native compiler.

       If there is no function corresponding to this block, this meaning
       of this flag is undefined.  */

    unsigned char gcc_compile_flag;

Am I correct that this comment is wrong?  For example, in valops.c 
(hand_function_call), we find 

  {
    struct block *b = block_for_pc (funaddr);
    /* If compiled without -g, assume GCC 2.  */
    using_gcc = (b == NULL ? 2 : BLOCK_GCC_COMPILED (b));
  }

  ... and later ...

      if (using_gcc == 0)
	if (param_type)
	  /* if this parameter is a pointer to function */
	  if (TYPE_CODE (param_type) == TYPE_CODE_PTR)
	    if (TYPE_CODE (param_type->target_type) == TYPE_CODE_FUNC)
	      /* elz: FIXME here should go the test about the compiler used
	         to compile the target. We want to issue the error
	         message only if the compiler used was HP's aCC.

which looks to me as if it handles GCC 2 and native compilers differently.

[I ask because we may have another use for BLOCK_GCC_COMPILED, which simply
returns gcc_compile_flag, and I want to understand whether anything DEPENDS
on the assertion in this comment.]

Paul Hilfinger



More information about the Gdb-patches mailing list