[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: --disable-ldbm won't build (ITS#586)



Logged as a Sun compiler bug, #4345304.  A reasonable work around
is to include -xildoff with any compiler flags that ask for optimization.


From: ARSystem@es.net
To: helm@fionn.es.net
Subject: NT/UNIX 00877 - Opened - Sun c compiler bug
Message-Id: <E132GcX-0003wq-00@netdb4.es.net>
Date: Wed, 14 Jun 2000 10:06:29 -0700

NT/UNIX 00877 - Opened

Ticket ID           : 00877
Opened By           : Helm
Created             : 06/14/00 10:06:28
Status              : Opened
Customer            : Helm
User Priority       : MEDIUM
Request Type        : Software
Platform            : SUN
Host Name           : all solaris
Host Location       : 
Customers Email     : helm@fionn.es.net
Group               : NISG
Problem Summary     : Sun c compiler bug
Problem Description : 

   06/14/00 10:06:28     ARWeb User

      From: Fatema Arzoughi
      The bugid is 4345304 and I will let you know if there is any work on that .. or 
      you check it in sunsolve for resolution.  It will take a while to go to sunsolve 
      
      .Initial testing on this reveals that the link will succeed if either
      - you turn off the incremental linker (-xildoff) or
       remove -g from the link command line.
      
      here is another workaround:
      
      adding a file zippo.c that is also compiled -O to the archive, but having a
      non-zero text section, fixes the problem for ILD.
      
      Fatema Arzoughi writes:
      > Can you send me a small test case or small program that I can test it with our 
      > system here.  If I see the same result I will report a bug.  Thanks.
      
      Sure; I didn't have time to assemble make file & wrap but this
      should do:
      
      hello.c:
      #include <stdio.h>
      main() {
        printf( "Hello!\n");
      }
      ===
      version.c:
      /*
       * Copyright (c) 1995 Regents of the University of Michigan.
       * All rights reserved.
       *
       * Redistribution and use in source and binary forms are permitted
       * provided that this notice is preserved and that due credit is given
       * to the University of Michigan at Ann Arbor. The name of the University
       * may not be used to endorse or promote products derived from this
       * software without specific prior written permission. This software
       * is provided ``as is'' without express or implied warranty.
       */
      
      static char Version[] = "  libldbm.a v1.2.7-Release (Mon Jun 12 15:13:40 PDT 2000
      )\n\thelm@surya:/export/home/helm/project/openldap/SunOS.5.7-globus/libraries/lib
      ldbm\n";
      ===
      ldbm.c:
      #ident  "@(#)stddef.h   1.15    97/12/22 SMI"
      #ident  "@(#)isa_defs.h 1.16    99/05/25 SMI"
      typedef int     ptrdiff_t;               
      typedef unsigned int    size_t;          
      typedef long    wchar_t;
               
      #ident  "@(#)syslog.h   1.11    96/05/17 SMI"
      #ident  "@(#)feature_tests.h    1.17    97/12/04 SMI"
      #ident  "@(#)syslog.h   1.10    92/07/14 SMI"
               
      #ident  "@(#)va_list.h  1.11    97/11/22 SMI"
      typedef void *__va_list;
      void openlog(const char *, int, int);
      void syslog(int, const char *, ...);
      void closelog(void);
      int setlogmask(int);
      void vsyslog(int, const char *, __va_list);
      #ident "acomp: WorkShop Compilers 4.2 01 Oct 1997 C 4.2 patch 104668-05"
      ===
      Then do this:
      cc -g -O -c hello.c
      cc -g -O -c ldbm.c
      cc -g -O -c version.c
      ar ru libldbm.a ldbm.o version.o
      
      cc -g -O -o hello hello.o libldbm.a
      ild: (bad file) garbled symbol table in archive libldbm.a
      
      Then try this:
      cc -g -c version.c
      ar ru libldbm.a ldbm.o version.o
      cc -g -o hello hello.o libldbm.a
      % hello
      Hello!
      
      Thanks, let me know how it goes. ==mwh
      Michael Helm (510 486 7248)
      ESnet/Berkeley Lab