./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