I think rt_caller_id is used only for error messages, so maybe you could get away with replacing it with the version that simply returns -1.
Note that gregs used to be a member of mcontext_t, not ucontext_t, so maybe it's still there and has simply had underscores added to it? On Mon, Jul 20, 2015 at 12:16 PM, Chris Marshall <[email protected]> wrote: > ./configure yields: > >> ./configure 2>&1 | tee configure-log.txt >> Binary directory /usr/local/bin >> TinyCC directory /usr/local/lib/tcc >> Library directory /usr/local/lib64 >> Include directory /usr/local/include >> Manual directory /usr/local/share/man >> Info directory /usr/local/share/info >> Doc directory /usr/local/share/doc//usr/local/lib/tcc >> Target root prefix >> Source path /home/chm/pdl/git/tinycc >> C compiler gcc >> cross compilers no >> Target CPU x86-64 >> Host OS CYGWIN_NT-6.1 >> Target OS CYGWIN_NT-6.1 >> Big Endian no >> gprof enabled no >> use libgcc no >> Creating config.mak and config.h >> config.h is unchanged >> > > after which make yields: > >> gcc -o tcc.o -c tcc.c -DTCC_TARGET_X86_64 -I. -Wall -g -O0 >> -Wdeclaration-after-statement -Wno-deprecated-declarations >> -Wno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result >> -Wno-uninitialized -fno-strict-aliasing >> gcc -o libtcc.o -c libtcc.c -DTCC_TARGET_X86_64 -I. -Wall -g -O0 >> -Wdeclaration-after-statement -Wno-deprecated-declarations >> -Wno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result >> -Wno-uninitialized -fno-strict-aliasing >> gcc -o tccpp.o -c tccpp.c -DTCC_TARGET_X86_64 -I. -Wall -g -O0 >> -Wdeclaration-after-statement -Wno-deprecated-declarations >> -Wno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result >> -Wno-uninitialized -fno-strict-aliasing >> gcc -o tccgen.o -c tccgen.c -DTCC_TARGET_X86_64 -I. -Wall -g -O0 >> -Wdeclaration-after-statement -Wno-deprecated-declarations >> -Wno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result >> -Wno-uninitialized -fno-strict-aliasing >> gcc -o tccelf.o -c tccelf.c -DTCC_TARGET_X86_64 -I. -Wall -g -O0 >> -Wdeclaration-after-statement -Wno-deprecated-declarations >> -Wno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result >> -Wno-uninitialized -fno-strict-aliasing >> gcc -o tccasm.o -c tccasm.c -DTCC_TARGET_X86_64 -I. -Wall -g -O0 >> -Wdeclaration-after-statement -Wno-deprecated-declarations >> -Wno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result >> -Wno-uninitialized -fno-strict-aliasing >> gcc -o tccrun.o -c tccrun.c -DTCC_TARGET_X86_64 -I. -Wall -g -O0 >> -Wdeclaration-after-statement -Wno-deprecated-declarations >> -Wno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result >> -Wno-uninitialized -fno-strict-aliasing >> tccrun.c: In function 'rt_get_caller_pc': >> tccrun.c:544:33: error: 'mcontext_t' has no member named 'gregs' >> *paddr = uc->uc_mcontext.gregs[REG_RIP]; >> ^ >> tccrun.c:544:40: error: 'REG_RIP' undeclared (first use in this function) >> *paddr = uc->uc_mcontext.gregs[REG_RIP]; >> ^ >> tccrun.c:544:40: note: each undeclared identifier is reported only once >> for each function it appears in >> tccrun.c:555:29: error: 'mcontext_t' has no member named 'gregs' >> fp = uc->uc_mcontext.gregs[REG_RBP]; >> ^ >> tccrun.c:555:36: error: 'REG_RBP' undeclared (first use in this function) >> fp = uc->uc_mcontext.gregs[REG_RBP]; >> ^ >> Makefile:234: recipe for target 'tccrun.o' failed >> make: *** [tccrun.o] Error 1 >> > > where the ucontext.h for cygwin has this: > >> /* ucontext.h >> >> Copyright 2015 Red Hat, Inc. >> >> This file is part of Cygwin. >> >> This software is a copyrighted work licensed under the terms of the >> Cygwin license. Please consult the file "CYGWIN_LICENSE" for >> details. */ >> >> #ifndef _SYS_UCONTEXT_H_ >> #define _SYS_UCONTEXT_H_ >> >> #include <signal.h> >> >> typedef struct __mcontext mcontext_t; >> >> typedef __attribute__ ((aligned (16))) struct __ucontext { >> mcontext_t uc_mcontext; >> struct __ucontext *uc_link; >> sigset_t uc_sigmask; >> stack_t uc_stack; >> unsigned long int uc_flags; >> } ucontext_t; >> >> #endif /* !_SYS_UCONTEXT_H_ */ >> > > where I note the lack of the gregs[]. > > --Chris > > On Mon, Jul 20, 2015 at 12:25 AM, Jared Maddox <[email protected]> > wrote: >> >> > Date: Fri, 17 Jul 2015 09:11:02 -0400 >> > From: Chris Marshall <[email protected]> >> > To: [email protected] >> > Subject: Re: [Tinycc-devel] build perl5 with tcc? >> > Message-ID: >> > >> > <capttexlvcy8zchtqnfvw6rsrgpnoo3-vgtq9yqgeswsny2v...@mail.gmail.com> >> > Content-Type: text/plain; charset="utf-8" >> > >> > Hi David- >> > >> >> > I definitely plan to look at the C::TinyCompiler and XS::TCC >> > modules once I can get tcc and libtcc running on my cygwin >> > setup. Unfortunately, a direct cygwin build is not possible >> > since the needed access to the program counter is not supported. >> > >> >> If you're talking about the x86 instruction pointer, the hardware >> doesn't support direct access. If you're talking about something else, >> please clarify. >> >> The "standard" trick is to make a function call to some location, and >> grab the return address from the stack. I recall that in some cases >> the call is to literally the address immediately after the call, >> though writing a function that returns it's own return address is >> probably better if you think you'll do it twice or more. >> >> Example code here: >> http://stackoverflow.com/questions/599968/reading-program-counter-directly >> >> _______________________________________________ >> Tinycc-devel mailing list >> [email protected] >> https://lists.nongnu.org/mailman/listinfo/tinycc-devel > > > > _______________________________________________ > Tinycc-devel mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/tinycc-devel > _______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
