Re: x86_64-bsd patches for gprolog
Daniel Diaz <[email protected]> Thu, 11 Sep 2008 15:23:55 +0200
| Newsgroups | gmane.comp.gnu.prolog.bugs |
|---|---|
| Message-ID | <[email protected]> |
Thank you very much David for this port !
David Holland a écrit :
> Here's patches to add support for x86_64 on BSD systems. I've tested
> this on NetBSD; it passes 'make check', except for the test in Ma2Asm,
> which doesn't seem to be able to be run without fast call support
> regardless of how FC is set invoking it. (I don't think this is
> because of anything I did... and it doesn't look like x86_64 is
> expected to have fast call support, although I might have misread.)
>
> I didn't see anything that ought to be different between NetBSD,
> FreeBSD, OpenBSD, or DragonFly, so there should be no need to
> distinguish them.
>
> Patches are against 1.3.0, which appears to be current.
>
> The first patch makes "make check" work properly. :-)
>
>
> --- src/Makefile.in.orig 2007-01-04 05:21:49.000000000 -0500
> +++ src/Makefile.in 2008-09-07 00:32:35.000000000 -0400
> @@ -148,10 +148,11 @@
> # --- CHECKS --- #
>
> check:
> - (cd EnginePl; make check) && \
> - (cd Ma2Asm; make check) && \
> - (cd Pl2Wam; make check) && \
> - (cd BipsPl; make check) && \
> + . ./SETVARS; \
> + (cd EnginePl; $(MAKE) check) && \
> + (cd Ma2Asm; $(MAKE) check) && \
> + (cd Pl2Wam; $(MAKE) check) && \
> + (cd BipsPl; $(MAKE) check) && \
> echo All tests succeeded
>
>
> --- src/configure.in~ 2007-01-04 05:21:52.000000000 -0500
> +++ src/configure.in 2008-09-06 23:58:31.000000000 -0400
> @@ -328,6 +328,7 @@ else
> alpha*osf*) AC_DEFINE(M_alpha_osf);;
> alpha*linux*) AC_DEFINE(M_alpha_linux);;
> x86_64*linux*) AC_DEFINE(M_x86_64_linux);;
> + x86_64*bsd*) AC_DEFINE(M_x86_64_bsd);;
> i*86*linux*) AC_DEFINE(M_ix86_linux);;
> i*86*solaris*) AC_DEFINE(M_ix86_solaris);;
> i*86*sco*) AC_DEFINE(M_ix86_sco);;
> --- src/configure~ 2007-01-05 07:13:28.000000000 -0500
> +++ src/configure 2008-09-06 23:58:51.000000000 -0400
> @@ -3554,6 +3554,10 @@ _ACEOF
> #define M_x86_64_linux 1
> _ACEOF
> ;;
> + x86_64*bsd*) cat >>confdefs.h <<\_ACEOF
> +#define M_x86_64_bsd 1
> +_ACEOF
> +;;
> i*86*linux*) cat >>confdefs.h <<\_ACEOF
> #define M_ix86_linux 1
> _ACEOF
> --- src/Ma2Asm/FromC/mach.h~ 2007-01-04 05:21:48.000000000 -0500
> +++ src/Ma2Asm/FromC/mach.h 2008-09-07 00:03:37.000000000 -0400
> @@ -13,7 +13,7 @@
>
> #if defined(M_sony_news) || defined(M_ultrix_dec) || defined(M_alpha_osf) ||\
> defined(M_ix86_linux) || defined(M_ix86_sco) || defined(M_ix86_bsd) ||\
> - defined(M_x86_64_linux) || \
> + defined(M_x86_64_linux) || defined(m_x86_64_bsd) || \
> defined(M_powerpc_bsd) || defined(M_sparc_bsd) || defined(__ELF__)
>
> # define M_Asm_Symbol1(name) #name
> @@ -64,7 +64,7 @@
>
> # define M_Direct_Goto(lab) {_asm {jmp M_Asm_Symbol(lab)}; return;}
>
> -#elif defined(M_x86_64_linux)
> +#elif defined(M_x86_64)
>
> # define M_Direct_Goto(lab) {asm("jmp " M_Asm_Symbol(lab)); return;}
>
> --- src/EnginePl/gp_config.h.in~ 2007-01-04 05:21:49.000000000 -0500
> +++ src/EnginePl/gp_config.h.in 2008-09-07 00:04:54.000000000 -0400
> @@ -177,6 +177,8 @@
> /* Define if the system is a x86-64/linux */
> #undef M_x86_64_linux
>
> +/* Define if the system is a x86-64/bsd */
> +#undef M_x86_64_bsd
>
>
> /* Constant definitions */
> --- src/EnginePl/engine1.c~ 2007-01-04 05:35:13.000000000 -0500
> +++ src/EnginePl/engine1.c 2008-09-07 00:09:12.000000000 -0400
> @@ -100,7 +100,7 @@ Call_Compiled(CodePtr codep)
> register WamWord *rb asm("%l0") = reg_bank;
> ensure_reserved = (WamWord *) rb; /* to avoid gcc warning */
>
> -#elif defined(M_x86_64_linux)
> +#elif defined(M_x86_64)
>
> register WamWord *rb asm("%r12") = reg_bank;
> ensure_reserved = (WamWord *) rb; /* to avoid gcc warning */
> @@ -113,7 +113,7 @@ Call_Compiled(CodePtr codep)
> #if defined(M_ix86_darwin) /* see comment in Ma2Asm/ix86_any.c */
> asm("andl $0xfffffff0,%esp");
> asm("addl $4,%esp");
> -#elif defined(M_x86_64_linux) /* see comment in Ma2Asm/x86_64_any.c */
> +#elif defined(M_x86_64) /* see comment in Ma2Asm/x86_64_any.c */
> asm("andq $0xfffffffffffffff0,%rsp");
> asm("addq $8,%rsp");
> #endif
> --- src/EnginePl/engine.c~ 2007-01-04 05:35:13.000000000 -0500
> +++ src/EnginePl/engine.c 2008-09-07 00:10:33.000000000 -0400
> @@ -455,7 +455,7 @@ Call_Prolog_Fail(void)
> {
> #ifdef M_ix86_darwin /* see comment in Ma2Asm/ix86_any.c */
> asm("subl $4,%esp");
> -#elif defined(M_x86_64_linux) /* see comment in Ma2Asm/x86_64_any.c */
> +#elif defined(M_x86_64) /* see comment in Ma2Asm/x86_64_any.c */
> asm("subq $8,%rsp");
> #endif
> Save_Machine_Regs(p_buff_save);
> @@ -475,7 +475,7 @@ Call_Prolog_Success(void)
> {
> #ifdef M_ix86_darwin /* see comment in Ma2Asm/ix86_any.c */
> asm("subl $4,%esp");
> -#elif defined(M_x86_64_linux) /* see comment in Ma2Asm/x86_64_any.c */
> +#elif defined(M_x86_64) /* see comment in Ma2Asm/x86_64_any.c */
> asm("subq $8,%rsp");
> #endif
> Save_Machine_Regs(p_buff_save);
> --- src/EnginePl/machine.c.orig 2007-01-04 05:35:13.000000000 -0500
> +++ src/EnginePl/machine.c 2008-09-07 00:07:29.000000000 -0400
> @@ -482,7 +482,7 @@ SIGSEGV_Handler(WamWord *addr)
> void
> SIGSEGV_Handler(int sig, int code, struct sigcontext *scp)
>
> -#elif defined(M_x86_64_linux)
> +#elif defined(M_x86_64_linux) || defined(M_x86_64_bsd)
> void
> SIGSEGV_Handler(int sig, siginfo_t *sip, void *scp)
>
> @@ -509,7 +509,7 @@ SIGSEGV_Handler(int sig)
>
> WamWord *addr = (WamWord *) scp.cr2;
>
> -#elif defined(M_x86_64_linux)
> +#elif defined(M_x86_64_linux) || defined(M_x86_64_bsd)
>
> WamWord *addr = (WamWord *) sip->si_addr;
>
>
--
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.