By this change, nexthop caches (IP-MAC address pair) are not stored
in the routing table anymore. Instead nexthop caches are stored in
each network interface; we already have lltable/llentry data structure
for this purpose. This change also obsoletes the concept of cloning/cloned
routes. Cloned routes no longer exist while cloning routes still exist
with renamed to connected routes.
Noticeable changes are:
- Nexthop caches aren't listed in route show/netstat -r
- sysctl(NET_RT_DUMP) doesn't return them
- If RTF_LLDATA is specified, it returns nexthop caches
- Several definitions of routing flags and messages are removed
- RTF_CLONING, RTF_XRESOLVE, RTF_LLINFO, RTF_CLONED and RTM_RESOLVE
- RTF_CONNECTED is added
- It has the same value of RTF_CLONING for backward compatibility
- route's -xresolve, -[no]cloned and -llinfo options are removed
- -[no]cloning remains because it seems there are users
- -[no]connected is introduced and recommended
to be used instead of -[no]cloning
- route show/netstat -r drops some flags
- 'L' and 'c' are not seen anymore
- 'C' now indicates a connected route
- Gateway value of a route of an interface address is now not
a L2 address but "link#N" like a connected (cloning) route
- Proxy ARP: "arp -s ... pub" doesn't create a route
You can know details of behavior changes by seeing diffs under tests/.
Proposed on tech-net and tech-kern:
http://mail-index.netbsd.org/tech-net/2016/03/11/msg005701.html
- earmv4 works (atf has one new failure, that seems common)
- mipsel run
- sparc runs
- sparc64 mostly works in UP mode
- add list of actual machines tested on
For several years I've been eager to find the time to fix the bugs
in C++ exceptions on VAX to get them working on NetBSD, because
theyâve been broken for many years and it looked like only a few
changes were needed to get them working. Without C++ exceptions,
the NetBSD test suite canât be run. The good news is that I was
able to fix all the bugs in the VAX machine description to make
C++ exceptions work in GCC 4.8.5 (version unimportant). I wrote a
blog post explaining the bugs, with patches:
Here's a short summary, with the diffs in text form at the end of this email.
1) Replace #define FRAME_POINTER_CFA_OFFSET(FNDECL) 0 with #define
ARG_POINTER_CFA_OFFSET(FNDECL) 0 in gcc/config/vax/elf.h and
gcc/config/vax/vax.h. This changes the definition of __builtin_dwarf_cfa()
to return %ap instead of %fp, which correctly points to CFA.
Previously, the stack unwinder was crashing in _Unwind_RaiseException()
trying to follow bad pointers from the initial CFA.
2) Define EH_RETURN_DATA_REGNO(N) to include only R2 and R3 (instead
of R2-R5) and add code to vax_expand_prologue() in gcc/config/vax/vax.c
to add R2-R3 to the procedure entry mask but only if crtl->calls_eh_return
is set. This fixes a crash when the stack unwinder tried to write
values to R2 and R3 in the previous stack frame via
__builtin_eh_return_data_regno (0) and __builtin_eh_return_data_regno (1).
3) Removed definitions of EH_RETURN_STACKADJ_RTX and STARTING_FRAME_OFFSET
from gcc/config/vax/elf.h. It's not necessary to remember the stack
adjustment or to waste four bytes on every stack frame for a value
that's not needed. Also remove the suspicious changes in
gcc/config/vax/vax.md to the definitions of call_pop and call_value
regarding DW_CFA_GNU_args_size and EH unwinding. I reverted to the
previous versions from an older version of GCC, adding a few useful
comments that had been removed.
4) The last bug is the one I understand the least. I'm hoping
someone reading this can implement a correct fix. What I was seeing
after making all the previous changes to fix the other bugs is that
my test program failed to catch any exceptions, but instead returned
normally to the original return path.
Investigation revealed that GCC was correctly generating the
necessary move instruction to copy the second parameter passed to
__builtin_eh_return() into the return address, because
EH_RETURN_HANDLER_RTX had been defined correctly in config/vax/elf.h.
Hereâs what the call looks like in gcc/except.c:
#ifdef EH_RETURN_HANDLER_RTX
rtx insn = emit_move_insn (EH_RETURN_HANDLER_RTX, crtl->eh.ehr_handler);
#else
error ("__builtin_eh_return not supported on this target");
#endif
The problem was that the optimizer is deleting the final move
instruction when I compile with -O or higher. The assembly code at
-O0 (no optimization) generated for the __builtin_eh_return() call
at the end of _Unwind_RaiseException() looked like:
calls $2,_Unwind_DebugHook
movl -12(%fp),%r1
movl %r1,16(%fp)
ret
.cfi_endproc
But then when I compiled with -O1 or -O2, all I saw was:
calls $2,_Unwind_DebugHook
ret
.cfi_endproc
This was a mystery for me and I donât know enough about how the
final peephole optimizer works to really track down why it thinks
it can remove the move call to store the previous return address.
My workaround was to add a call to RTX_FRAME_RELATED_P (insn) = 1;
after the emit_move_insn() in gcc/except.c, which was used in
vax_expand_prologue() to mark the procedure entry mask.
By making this change, the optimizer no longer removes the call to
write the value to the previous stack pointer, but it adds an extra
line of .cfi exception info, which seems unnecessary since the code
is immediately going to return from the call and any adjustment
made by the DWARF stack unwinder will already have been done. Hereâs
what the optimized code looks like with the patch (%r6 had been
loaded earlier):
calls $2,_Unwind_DebugHook
movl %r6,16(%fp)
.cfi_offset 6, -36
ret
.cfi_endproc
With that final change, C++ exception handling now finally works
on NetBSD/vax, and I was able to successfully run the vast majority
of the tests in the ATF testsuite, which had been completely
inaccessible when I started due to both atf-run and atf-report
immediately dumping core due to the bad pointers that I fixed. Now
I have a bunch of new bugs to track down fixes for, but I think
this was the hardest set of problems that needed to be solved to
bring NetBSD on VAX up to the level of the other NetBSD ports.
Here are the diffs I have so far. They should apply to any recent
version of GCC (tested on GCC 4.8.5). With the exception of the
hack to gcc/except.c, the other diffs are ready to submit to NetBSD
as well as to upstream GCC. The fix Iâd like to see for the final
problem I discovered of the emit_move_insn() being deleted by the
optimizer would be another patch to one of the files in the
gcc/config/vax directory to explain to the optimizer that writing
to 16(%fp) is important and not something to be deleted from the
epilogue (perhaps it thinks itâs writing to a local variable in
the frame that's about to be destroyed?).
I didn't see any indication that any other GCC ports required
anything special to tell the optimizer not to delete the move
instruction to EH_RETURN_HANDLER_RTX, so the other suspicion I have
is that there may be a bug specific to VAX's peephole optimizer or
related functions. Any ideas?
/usr/src/lib/csu/common/crt0-common.c: In function '___start':
/usr/src/lib/csu/common/crt0-common.c:184:1: internal compiler error: in dwf_regno, at dwarf2cfi.c:988
}
^
The new wpa_supplicant command line argument -M can be used to describe
matching rules with a wildcard name (e.g., "wlan*").
This is very useful for systems without uev (Linux) or devd (FreeBSD).
listening to kernel events. As such, send the events to
wpa_supplicant_event_global() which can then pick the correct interface
registered with wpa_supplicant to send the event to.
- explain the columns
- update arm status:
- MKCOMPAT problems with oabi
- coldfire builds as much as GCC 4.8
- sun2, m68k builds
- most mips builds now (mips64 has generic build issues)
- update sparc64 and ppc problems (sshd)
- there is something very very odd in linking libldap.so.4.3 where
using the GCC 4.8 compiler to link the GCC 5.3 compiled objects
works, or using GCC 5.3 compiler to link the 4.8 compiled objects
fails -- ie, the compiler output seems fine, but the interactions
between GCC and ld(1) are broken.
- add or1k, riscv*, ia64 and ppc64 columns:
- or1k and riscv* both fail, they need to have their support
ported to GCC 5.x (i understand that at least one of them
has a GCC 5.x tree.)
- expand the list of actually tested to complete "build.sh release"
to include machines, not just cpus.
- sshd problem is libldap.so.4.3, at least on sparc64. placing with 4.8 one works
- alpha mostly works fine, 7 new failures in atf, plus sshd problem
- update release build info for many *earm*, hppa, i386, amd64, mipsel, sh3*
- *mips* now at least completes mknative-gcc
- sh3eb has a mknative-gcc problem
since they want it now.
XXX: super ugly, probably can be fixed by rearranging a bunch of what
XXX: is currently in ../usr.bin/backend/ that builds insn-modes.h.
- handle wide-int{,-print}.cc with a hack
- clean up CLEANFILES
- build gengtype{-lex,-parse,-state,}.c properly
- build genmatch and its outputs
- build pass-instances.def
Summary of changes in tzdata2016b (2016-03-12 17:30:14 -0800):
* New zones Europe/Astrakhan and Europe/Ulyanovsk for Astrakhan and
Ulyanovsk Oblasts, Russia, both of which will switch from +03 to +04 on
2016-03-27 at 02:00 local time.
* As a trial of a new system that needs less information to be made up,
the new zones use numeric time zone abbreviations like "+04"
instead of invented abbreviations like "ASTT".
* Haiti will not observe DST in 2016.
* Palestine's spring-forward transition on 2016-03-26 is at 01:00, not 00:00.
* Europe/Chisinau observed DST during 1990, and switched from +04 to
+03 at 1990-05-06 02:00, instead of switching from +03 to +02.
* 1991 abbreviations in Europe/Samara should be SAMT/SAMST, not
KUYT/KUYST.
* tzselect's diagnostics and checking, and checktab.awk's checking,
have been improved.
* tzcode now builds under MinGW.
* tzselect now tests Julian-date TZ settings more accurately.
* Comments in zone tables have been improved.
* tzselect again limits its menu comments so that menus fit on a
24x80 alphanumeric display.
* A new web page tz-how-to.html.
* In the Theory file, the description of possible time zone abbreviations in
tzdata has been cleaned up, as the old description was unclear and
inconsistent.
Summary of changes in tzdata2016a (2016-01-26 23:28:02 -0800):
* America/Cayman will not observe daylight saving this year after all.
* Asia/Chita switches from +0800 to +0900 on 2016-03-27 at 02:00.
* Asia/Tehran now has DST predictions for the year 2038 and later,
to be March 21 00:00 to September 21 00:00.
* America/Metlakatla switched from PST all year to AKST/AKDT on
2015-11-01 at 02:00.
* America/Santa_Isabel has been removed, and replaced with a
backward compatibility link to America/Tijuana.
* Asia/Karachi's two transition times in 2002 were off by a minute.
* Changes affecting documentation and commentary.
Summary of changes in tzdata2015g (2015-10-01 00:39:51 -0700):
* Turkey's 2015 fall-back transition is scheduled for Nov.
* Norfolk moves from +1130 to +1100 on 2015-10-04 at 02:00 local time.
* Fiji's 2016 fall-back transition is scheduled for January 17, not 24.
* Fort Nelson, British Columbia will not fall back on 2015-11-01.
* Norfolk observed DST from 1974-10-27 02:00 to 1975-03-02 02:00.
* Changes affecting documentation.
commit a192a05bc8ca597249e5a36875ce382c572ddc97
Author: popcornmix <popcornmix@gmail.com>
Date: Mon Mar 7 17:21:57 2016 +0000
Raspberry Pi 3 should now boot the armv7.img produced in the
evbarm-earmv7hf builds
4322. [security] Duplicate EDNS COOKIE options in a response could
trigger an assertion failure. (CVE-2016-2088)
[RT #41809]
4319. [security] Fix resolver assertion failure due to improper
DNAME handling when parsing fetch reply messages.
(CVE-2016-1286) [RT #41753]
4318. [security] Malformed control messages can trigger assertions
in named and rndc. (CVE-2016-1285) [RT #41666]
Fix a couple of bugs around the handling of structs and unions of size zero.
These would cause ctfconvert(1) to return an error when attempting to
resolve valid C types.
If MKDTRACE=yes MKCTF=no makes no sense, we can express that
somewhere else, not as a confusing set lists error at the end -- as
far as I know, there's no way to express MKDTRACE *or* MKCTF as a
condition for set list entries.
No idea what the host's atomic ops will be but we don't need them
because this tool is not multithreaded.
Fixes harmless warnings like
all ===> external/mit/xorg/tools/mkfontscale
/home/source/ab/HEAD-llvm/xsrc/external/mit/fontconfig/dist/src/fcinit.c:29:2: warning: #warning Could not find any system to define atomic_int macros, library may NOT be thread-safe. [-Wcpp]
#warning Could not find any system to define atomic_int macros, library may NOT be thread-safe.
^
instruction and a floating point branch. SPARCv8 requires a nop only
immediately after FPop2 (fcmp*) instructions. Adjust the logic to
properly implement the v8 rules when targetting a less ancient
architecture.
* Save the initial working directory and change to it just before
running any scripts.
This avoids scripts putting files accidently where they shouldn't.
* Strip trailing dot from search and domain names.
* man page improvements.
-gcc: internal compiler error: Killed (program cc1plus)
+gcc: internal compiler error: Killed (program cc1plus received signal 9)
which was lost in an update somewhere after netbsd-6.
This clarification was found in the past to significantly reduce the
number of bug reports caused by people running out of swap, such as
(most likely) seen again today in PR 50802.
XXX: pullup-7
list of changes, they can be found at
http://pcc.ludd.ltu.se/fisheye/changelog/pcc
Along with numerous bug fixes, the highlights might be a rewrite
of the CPP parser, updated backends for arm, pdp11, m68k, vax and
mips along with new backend for 8086. PCC now builds itself as a
2-pass compiler. There have been fixes for use with musl, C11
support added and use of UTF8 internally. PE/COFF target was fixed,
and Minix target added.