summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ipfilter/ip_fil.c3
-rw-r--r--contrib/ipfilter/ipf.h3
-rw-r--r--contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp2
-rw-r--r--contrib/llvm/patches/patch-08-llvm-r230058-indirectbrs-assert.diff55
-rw-r--r--contrib/netbsd-tests/lib/libc/gen/t_nice.c28
5 files changed, 60 insertions, 31 deletions
diff --git a/contrib/ipfilter/ip_fil.c b/contrib/ipfilter/ip_fil.c
index 9178bd3..03e4093 100644
--- a/contrib/ipfilter/ip_fil.c
+++ b/contrib/ipfilter/ip_fil.c
@@ -44,6 +44,9 @@ static int write_output __P((struct ifnet *, struct mbuf *,
# endif
#endif
+struct ifaddr {
+ struct sockaddr_storage ifa_addr;
+};
int
ipfattach(softc)
diff --git a/contrib/ipfilter/ipf.h b/contrib/ipfilter/ipf.h
index d4bd524..dfae008 100644
--- a/contrib/ipfilter/ipf.h
+++ b/contrib/ipfilter/ipf.h
@@ -43,9 +43,6 @@ struct file;
#include <sys/socket.h>
#include <net/if.h>
-#define _WANT_IFADDR
-#include <net/if_var.h>
-
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
diff --git a/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp b/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp
index 9164be2..267cb99 100644
--- a/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp
+++ b/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp
@@ -535,6 +535,8 @@ bool LoopRotate::rotateLoop(Loop *L, bool SimplifiedLatch) {
Loop *PredLoop = LI->getLoopFor(*PI);
if (!PredLoop || PredLoop->contains(Exit))
continue;
+ if (isa<IndirectBrInst>((*PI)->getTerminator()))
+ continue;
SplitLatchEdge |= L->getLoopLatch() == *PI;
BasicBlock *ExitSplit = SplitCriticalEdge(*PI, Exit, this);
ExitSplit->moveBefore(Exit);
diff --git a/contrib/llvm/patches/patch-08-llvm-r230058-indirectbrs-assert.diff b/contrib/llvm/patches/patch-08-llvm-r230058-indirectbrs-assert.diff
new file mode 100644
index 0000000..f3e0112
--- /dev/null
+++ b/contrib/llvm/patches/patch-08-llvm-r230058-indirectbrs-assert.diff
@@ -0,0 +1,55 @@
+Pull in r230058 from upstream llvm trunk (by Benjamin Kramer):
+
+ LoopRotate: When reconstructing loop simplify form don't split edges
+ from indirectbrs.
+
+ Yet another chapter in the endless story. While this looks like we
+ leave the loop in a non-canonical state this replicates the logic in
+ LoopSimplify so it doesn't diverge from the canonical form in any way.
+
+ PR21968
+
+This fixes a "Cannot split critical edge from IndirectBrInst" assertion
+failure when building the devel/radare2 port.
+
+Introduced here: https://svnweb.freebsd.org/changeset/base/279161
+
+Index: lib/Transforms/Scalar/LoopRotation.cpp
+===================================================================
+--- lib/Transforms/Scalar/LoopRotation.cpp
++++ lib/Transforms/Scalar/LoopRotation.cpp
+@@ -498,6 +498,8 @@ bool LoopRotate::rotateLoop(Loop *L, bool Simplifi
+ Loop *PredLoop = LI->getLoopFor(*PI);
+ if (!PredLoop || PredLoop->contains(Exit))
+ continue;
++ if (isa<IndirectBrInst>((*PI)->getTerminator()))
++ continue;
+ SplitLatchEdge |= L->getLoopLatch() == *PI;
+ BasicBlock *ExitSplit = SplitCriticalEdge(*PI, Exit, this);
+ ExitSplit->moveBefore(Exit);
+Index: test/Transforms/LoopRotate/crash.ll
+===================================================================
+--- test/Transforms/LoopRotate/crash.ll
++++ test/Transforms/LoopRotate/crash.ll
+@@ -153,3 +153,21 @@ entry:
+ "5": ; preds = %"3", %entry
+ ret void
+ }
++
++; PR21968
++define void @test8(i1 %C, i8* %P) #0 {
++entry:
++ br label %for.cond
++
++for.cond: ; preds = %for.inc, %entry
++ br i1 %C, label %l_bad, label %for.body
++
++for.body: ; preds = %for.cond
++ indirectbr i8* %P, [label %for.inc, label %l_bad]
++
++for.inc: ; preds = %for.body
++ br label %for.cond
++
++l_bad: ; preds = %for.body, %for.cond
++ ret void
++}
diff --git a/contrib/netbsd-tests/lib/libc/gen/t_nice.c b/contrib/netbsd-tests/lib/libc/gen/t_nice.c
index 10b8df7..f4a62e9 100644
--- a/contrib/netbsd-tests/lib/libc/gen/t_nice.c
+++ b/contrib/netbsd-tests/lib/libc/gen/t_nice.c
@@ -72,11 +72,6 @@ ATF_TC_BODY(nice_err, tc)
{
int i;
-#ifdef __FreeBSD__
- atf_tc_expect_fail("nice(incr) with incr < 0 fails with unprivileged "
- "users and sets errno == EPERM; see PR # 189821 for more details");
-#endif
-
/*
* The call should fail with EPERM if the
* supplied parameter is negative and the
@@ -98,11 +93,7 @@ ATF_TC_HEAD(nice_priority, tc)
ATF_TC_BODY(nice_priority, tc)
{
-#ifdef __FreeBSD__
- int i, pri, pri2, nic;
-#else
int i, pri, nic;
-#endif
pid_t pid;
int sta;
@@ -115,10 +106,8 @@ ATF_TC_BODY(nice_priority, tc)
pri = getpriority(PRIO_PROCESS, 0);
ATF_REQUIRE(errno == 0);
-#ifdef __NetBSD__
if (nic != pri)
atf_tc_fail("nice(3) and getpriority(2) conflict");
-#endif
/*
* Also verify that the nice(3) values
@@ -130,18 +119,10 @@ ATF_TC_BODY(nice_priority, tc)
if (pid == 0) {
errno = 0;
-#ifdef __FreeBSD__
pri = getpriority(PRIO_PROCESS, 0);
-#else
- pri2 = getpriority(PRIO_PROCESS, 0);
-#endif
ATF_REQUIRE(errno == 0);
-#ifdef __FreeBSD__
- if (pri != pri2)
-#else
if (nic != pri)
-#endif
_exit(EXIT_FAILURE);
_exit(EXIT_SUCCESS);
@@ -180,11 +161,7 @@ ATF_TC_HEAD(nice_thread, tc)
ATF_TC_BODY(nice_thread, tc)
{
pthread_t tid[5];
-#ifdef __FreeBSD__
- int pri, rv, val;
-#else
int rv, val;
-#endif
size_t i;
/*
@@ -196,12 +173,7 @@ ATF_TC_BODY(nice_thread, tc)
val = nice(i);
ATF_REQUIRE(val != -1);
-#ifdef __FreeBSD__
- pri = getpriority(PRIO_PROCESS, 0);
- rv = pthread_create(&tid[i], NULL, threadfunc, &pri);
-#else
rv = pthread_create(&tid[i], NULL, threadfunc, &val);
-#endif
ATF_REQUIRE(rv == 0);
rv = pthread_join(tid[i], NULL);
OpenPOWER on IntegriCloud