This is the mail archive of the cygwin-developers@cygwin.com mailing list for the Cygwin 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]

Re: Problems compiling cygwin from CVS - Undefined symbol


Brian Keener wrote:
> Brian Keener Wrote:
> >> Cannot export NOSIGFE: symbol not defined
> >> Cannot export longjmp: symbol not defined
> >> Cannot export longjmp: symbol not defined
> <snip>
> Christopher Faylor wrote:
> > So, this being a mailing list called "cygwin-developers", the question for
> > you is "What is incorrectly generating the cygwin.def file?"  You should
> > look at the makefile and figure this out.
> >
> Well that is a good question
>
Welp, still trying to figure this out and it is really hard for me to believe 
that I am the only person on W2k trying to compile Cygwin straight from the cvs 
that is having this problem but I've still been digging hoping I'll stumble 
over something. 

I'm really confused over this (not an unusual state of mind) and considering my 
level of experience - not surprising either but according to the ChangeLog 
longjmp.c was removed and subsumed by the output from gendef but I can not seem 
to find any indication where longjmp does come from for an i686 host.  It is 
marked in cygwin.din as NOSIGFE and from what I can see in Makefile.in:

DEF_FILE:=cygwin.def
<snip>
Makefile: cygwin.din

$(DEF_FILE): gendef cygwin.din $(srcdir)/tlsoffsets.h
        $^ $@ sigfe.s

$(srcdir)/tlsoffsets.h: gentls_offsets cygtls.h
        $^ $@ $(COMPILE_CXX)

sigfe.s: $(DEF_FILE)
        @touch $@

sigfe.o: sigfe.s
        $(CC) -c -o $@ $?

the output from gendef ultimately builds SIGFE.s and SIGFE.o and I am guessing 
based on the longjmp reference as NOSIGFE that it is not going to be part of 
SIGFE.  But if it is not part of SIGFE and all the other longjmp references in 
the source seen it be for other processors and machines - where does the i686 
longjmp come from.

Today I updated from cvs again since I saw several changes had been made 
(hoping maybe my problem got fixed) but the make errored during the gendef with 
the following error:

/usr/bin/c++ -L/usr/develop/obj/cygwin/i686-pc-cygwin/winsup 
-L/usr/develop/obj/
cygwin/i686-pc-cygwin/winsup/cygwin 
-L/usr/develop/obj/cygwin/i686-pc-cygwin/win
sup/w32api/lib -isystem /usr/develop/src/src/src/winsup/include -isystem 
/usr/de
velop/src/src/src/winsup/cygwin/include -isystem 
/usr/develop/src/src/src/winsup
/w32api/include -isystem /usr/develop/src/src/src/newlib/libc/sys/cygwin 
-isyste
m /usr/develop/src/src/src/newlib/libc/sys/cygwin32 
-B/usr/develop/obj/cygwin/i6
86-pc-cygwin/newlib/ -isystem 
/usr/develop/obj/cygwin/i686-pc-cygwin/newlib/targ
-include -isystem /usr/develop/src/src/src/newlib/libc/include -c -nostdinc++ 
-n
ostdinc -DHAVE_CONFIG_H  -g -O2 -Wall -Wwrite-strings -fno-common -pipe 
-fbuilti
n -fmessage-length=0  -I.  -I/usr/develop/src/src/src/winsup/cygwin   
-I/usr/dev
elop/src/src/src/winsup/cygwin/config/i386 
-I/usr/lib/gcc-lib/i686-pc-cygwin/3.3
1/include -fno-rtti -fno-exceptions -o ./shm.o 
/usr/develop/src/src/src/winsup/
cygwin/shm.cc
/usr/develop/src/src/src/winsup/cygwin/gentls_offsets 
/usr/develop/src/src/src/w
insup/cygwin/cygtls.h /usr/develop/src/src/src/winsup/cygwin/tlsoffsets.h 
/usr/b
in/c++ -L/usr/develop/obj/cygwin/i686-pc-cygwin/winsup 
-L/usr/develop/obj/cygwin
/i686-pc-cygwin/winsup/cygwin 
-L/usr/develop/obj/cygwin/i686-pc-cygwin/winsup/w3
2api/lib -isystem /usr/develop/src/src/src/winsup/include -isystem 
/usr/develop/
src/src/src/winsup/cygwin/include -isystem 
/usr/develop/src/src/src/winsup/w32ap
i/include -isystem /usr/develop/src/src/src/newlib/libc/sys/cygwin -isystem 
/usr
/develop/src/src/src/newlib/libc/sys/cygwin32 
-B/usr/develop/obj/cygwin/i686-pc-
cygwin/newlib/ -isystem 
/usr/develop/obj/cygwin/i686-pc-cygwin/newlib/targ-inclu
de -isystem /usr/develop/src/src/src/newlib/libc/include -c -nostdinc++ 
-nostdin
c -DHAVE_CONFIG_H  -g -O2 -Wall -Wwrite-strings -fno-common -pipe -fbuiltin 
-fme
ssage-length=0  -I.  -I/usr/develop/src/src/src/winsup/cygwin   
-I/usr/develop/s
rc/src/src/winsup/cygwin/config/i386 
-I/usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/inc
lude -fno-rtti -fno-exceptions
/tmp/1964.cc:116: error: syntax error before `*' token
/tmp/1964.cc:119: error: syntax error before `[' token
/tmp/1964.cc: In function `int main(int, char**)':
/tmp/1964.cc:134: error: 'struct _threadinfo' has no member named '
   typedef__uint32_t__stack_t'
/tmp/1964.cc:135: error: 'struct _threadinfo' has no member named '
   typedef__uint32_t__stack_t'
/tmp/1964.cc:136: error: syntax error before `func'
/tmp/1964.cc:136: error: `func' undeclared (first use this function)
/tmp/1964.cc:136: error: (Each undeclared identifier is reported only once for
   each function it appears in.)
/tmp/1964.cc:137: error: syntax error before `func'
/tmp/1964.cc:172: error: 'struct _threadinfo' has no member named 'stackptr'
/tmp/1964.cc:173: error: 'struct _threadinfo' has no member named 'stackptr'
/tmp/1964.cc:178: error: 'struct _threadinfo' has no member named 'stack'
/tmp/1964.cc:179: error: 'struct _threadinfo' has no member named 'stack'
/tmp/1964.cc:183: error: 'struct _threadinfo' has no member named '
   typedef__uint32_t__stack_t'
/tmp/1964.cc:184: error: 'struct _threadinfo' has no member named '
   typedef__uint32_t__stack_t'
/tmp/1964.cc:185: error: syntax error before `func'
/tmp/1964.cc:186: error: syntax error before `func'
/tmp/1964.cc:221: error: 'struct _threadinfo' has no member named 'stackptr'
/tmp/1964.cc:222: error: 'struct _threadinfo' has no member named 'stackptr'
/tmp/1964.cc:227: error: 'struct _threadinfo' has no member named 'stack'
/tmp/1964.cc:228: error: 'struct _threadinfo' has no member named 'stack'
/usr/develop/src/src/src/winsup/cygwin/gentls_offsets: couldn't run 
"/tmp/1964.a
out" - No such file or directory
make[2]: *** [/usr/develop/src/src/src/winsup/cygwin/tlsoffsets.h] Error 2
make[2]: Leaving directory 
`/usr/develop/obj/cygwin/i686-pc-cygwin/winsup/cygwin
'
make[1]: *** [cygwin] Error 1
make[1]: Leaving directory `/usr/develop/obj/cygwin/i686-pc-cygwin/winsup'
make: *** [all-target-winsup] Error 2
~
$

I finally got the gendef to continue by modifying cygtls.h and moving the 
typedef line in front of the comment about 'parsing starts here' and changing 
the (int) lines in void(*func) as follows:

----- except from cygtls.h --------

typedef __uint32_t __stack_t;

/* Please keep this file simple.  Changes to the below structure may require
   acompanying changes to the very simple parser in the perl script
   'gentls_offsets' (<<-- start parsing here).  */

struct _threadinfo
{
  void (*func)
    /*gentls_offsets*/
    (int)
    /*gentls_offsets*/;
  int saved_errno;
  int sa_flags;

---- end of excerpt -----

That change allowed my Make to continue, but alas I was right back to the error 
I originally reported as documented above.

Any pointers or insights into what I am missing, strong flames, kind words, 
whatever in the effort of solving this are greatly appreciated.

-- 
Brian Keener
bkeenerReMoVeAnTiSpAm@thesoftwaresource.com




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