This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Limited success with 3.0 branch on AIX
- To: Matthew Conway <matt_conway at i2 dot com>, Zack Weinberg <zackw at stanford dot edu>
- Subject: Re: Limited success with 3.0 branch on AIX
- From: David Edelsohn <dje at watson dot ibm dot com>
- Date: Mon, 30 Apr 2001 17:16:49 -0400
- cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
>>>>> Matthew Conway writes:
Matthew> "ar -rc libFooBar.a Foo.o Bar.o"
Matthew> "BFD: Foo.o: Unrecognized storage class 60 for *ABS* symbol `gcc2_compiled.'"
Matthew> "BFD: Bar.o: Unrecognized storage class 60 for *ABS* symbol `gcc2_compiled.'"
Matthew> What does it mean? Can I safely ignore it? Should I get the latest
Matthew> binutils snapshot? If I do get the latest binutils, have the problems
Matthew> that forced me to use the gnupro assembler been fixed yet? Thanks,
Zack's STABS_GCC_MARKER change still is not fully correct for AIX,
despite his attempt at DBX_OUTPUT_GCC_MARKER in xcoffout.h:
/* .stabx has the type in a different place. */
#define DBX_OUTPUT_GCC_MARKER(FILE) \
fprintf ((FILE), "%s\"%s\",0,%d,0\n", ASM_STABS_OP, STABS_GCC_MARKER, N_OPT)
This directly emits a stabs type (N_OPT) in the AIX .stabx directive when
all stabs are suppose to be converted to AIX storage classes. N_OPT does
not have a corresponding storage class, xcoffout.c:stab_to_sclass()
specifically includes:
#ifdef N_OPT
case N_OPT:
UNKNOWN_STAB ("N_OPT");
#endif
and stab.def defines N_OPT based on Solaris's definition:
/* New stab from Solaris. I don't know what it means, but it
don't seem to contain useful information. Possibly related to the
optimization flags used in this module. */
__define_stab (N_OPT, 0x3c, "OPT")
I do not see anything in the AIX equivalent to N_OPT -- no comment
storage class. Would using N_GSYM (AIX's C_GSYM) be appropriate? It
seems to be a stab for which only the name is significant, not the value,
which matches the use of gcc2_compiled.
Does anyone see a problem with the following patch? I am not
enough of an expert about DBX Stabs to know the significance of this
choice of stab type.
* xcoffout.h (DBX_OUTPUT_GCC_MARKER): Use N_GSYM, not N_OPT.
Index: xcoffout.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/xcoffout.h,v
retrieving revision 1.10.4.1
diff -c -p -r1.10.4.1 xcoffout.h
*** xcoffout.h 2001/04/18 06:15:20 1.10.4.1
--- xcoffout.h 2001/04/30 21:11:18
*************** extern const char *xcoff_lastfile;
*** 174,180 ****
/* .stabx has the type in a different place. */
#define DBX_OUTPUT_GCC_MARKER(FILE) \
! fprintf ((FILE), "%s\"%s\",0,%d,0\n", ASM_STABS_OP, STABS_GCC_MARKER, N_OPT)
/* Do not break .stabs pseudos into continuations. */
#define DBX_CONTIN_LENGTH 0
--- 174,181 ----
/* .stabx has the type in a different place. */
#define DBX_OUTPUT_GCC_MARKER(FILE) \
! fprintf ((FILE), "%s\"%s\",0,%d,0\n", ASM_STABS_OP, STABS_GCC_MARKER, \
! stab_to_sclass (N_GSYM))
/* Do not break .stabs pseudos into continuations. */
#define DBX_CONTIN_LENGTH 0
David