This is the mail archive of the
cygwin-developers@cygwin.com
mailing list for the Cygwin project.
Re: Problems compiling cygwin from CVS - Undefined symbol
- From: Brian Keener <bkeener at thesoftwaresource dot com>
- To: cygwin-developers at cygwin dot com
- Date: Tue, 10 Feb 2004 17:06:48 EST
- Subject: Re: Problems compiling cygwin from CVS - Undefined symbol
- References: <VA.00000eba.00c9c632@thesoftwaresource.com> <VA.00000ece.01105df6@thesoftwaresource.com> <20040110051408.GA11815@redhat.com> <VA.00000ed3.00da5cbb@thesoftwaresource.com> <20040113202359.GB7919@redhat.com> <VA.00000ee0.01d99d97@thesoftwaresource.com>
- Reply-to: Cygwin Developers <cygwin-developers at cygwin dot com>
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