diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/ipfilter/ip_fil.c | 3 | ||||
-rw-r--r-- | contrib/ipfilter/ipf.h | 3 | ||||
-rw-r--r-- | contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp | 2 | ||||
-rw-r--r-- | contrib/llvm/patches/patch-08-llvm-r230058-indirectbrs-assert.diff | 55 | ||||
-rw-r--r-- | contrib/netbsd-tests/lib/libc/gen/t_nice.c | 28 |
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); |