git: ff9319692d9e - main - security/masscan: fix build on powerpc*

Piotr Kubaj pkubaj at FreeBSD.org
Sun Sep 12 21:12:43 UTC 2021


The branch main has been updated by pkubaj:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ff9319692d9e5399bc446413b48c01a60dc07db9

commit ff9319692d9e5399bc446413b48c01a60dc07db9
Author:     Piotr Kubaj <pkubaj at FreeBSD.org>
AuthorDate: 2021-09-12 21:06:06 +0000
Commit:     Piotr Kubaj <pkubaj at FreeBSD.org>
CommitDate: 2021-09-12 21:06:06 +0000

    security/masscan: fix build on powerpc*
    
    Implement rdtsc, similar to ARM. Builds fine with clang.
---
 security/masscan/Makefile                 |  6 ------
 security/masscan/files/patch-src_smack1.c | 27 +++++++++++++++++++++++++--
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/security/masscan/Makefile b/security/masscan/Makefile
index 85aaa246e53d..8eb1c1fcf037 100644
--- a/security/masscan/Makefile
+++ b/security/masscan/Makefile
@@ -17,12 +17,6 @@ CFLAGS+=	-Wno-format
 
 PLIST_FILES=	bin/masscan man/man8/masscan.8.gz
 
-.include <bsd.port.options.mk>
-
-.if ${ARCH} == powerpc64 || ${ARCH} == powerpc
-USE_GCC=	yes
-.endif
-
 do-install:
 	${INSTALL_PROGRAM} ${WRKSRC}/bin/masscan ${STAGEDIR}${PREFIX}/bin
 	${INSTALL_MAN} ${WRKSRC}/doc/masscan.8 ${STAGEDIR}${MANPREFIX}/man/man8
diff --git a/security/masscan/files/patch-src_smack1.c b/security/masscan/files/patch-src_smack1.c
index 8a5448fd62dc..909d256435cf 100644
--- a/security/masscan/files/patch-src_smack1.c
+++ b/security/masscan/files/patch-src_smack1.c
@@ -1,6 +1,6 @@
 --- src/smack1.c.orig	2021-01-31 09:13:30 UTC
 +++ src/smack1.c
-@@ -119,8 +119,7 @@
+@@ -119,9 +119,8 @@
  #elif defined(__FreeBSD__)
  #include <sys/types.h>
  #include <machine/cpufunc.h>
@@ -10,12 +10,35 @@
  unsigned long long rdtsc(void)
  {
    uint32_t pmccntr;
-@@ -138,6 +137,10 @@ unsigned long long rdtsc(void)
+   uint32_t pmuseren;
+@@ -138,6 +137,32 @@ unsigned long long rdtsc(void)
    }
    return 0;
  }
 +#elif defined(__aarch64__)
 +#define __rdtsc() 0
++#elif defined(__powerpc64__)
++unsigned long long __rdtsc(void)
++{
++  unsigned long long rval;
++  __asm__ __volatile__("mfspr %%r3, 268": "=r" (rval));
++  return rval;
++}
++#elif defined(__powerpc__)
++unsigned long long __rdtsc(void)
++{
++  unsigned int tmp;
++  union { unsigned long long complete; unsigned int part[2]; } ticks;
++  __asm__ ("0:"
++            "mftbu %[hi32]\n"
++            "mftb %[lo32]\n"
++            "mftbu %[tmp]\n"
++            "cmpw %[tmp],%[hi32]\n"
++            "bne 0b\n"
++            : [hi32] "=r"(ticks.part[0]), [lo32] "=r"(ticks.part[1]),
++            [tmp] "=r"(tmp));
++  return ticks.complete;
++}
 +#else
 +#define __rdtsc rdtsc
  #endif


More information about the dev-commits-ports-main mailing list