rumpkernel / rumprun

The Rumprun unikernel and toolchain for various platforms

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

build failed on libunwind.o with gcc 6.2.1

xniine opened this issue · comments

Hi, I recently hit a compile issue on gcc 6.2.1, put on the error message/walkround on myside.

#   compile  libunwind/libunwind.o
/var/tmp/rumprun/obj-amd64-hw/rumptools/bin/x86_64--netbsd-c++ -frandom-seed=100a4059 -O2 -g -mno-red-zone -Wall -Wextra -Wno-unused-parameter -fno-stack-protector -Werror  -D__NetBSD__ -Ulinux -U__linux -U__linux__ -U__gnu_linux__ --sysroot=/var/tmp/rumprun/obj-amd64-hw/rumptools/dest  -isystem /var/tmp/rumprun/obj-amd64-hw/rumptools/dest/usr/include/c++ -I/var/tmp/rumprun/./obj-amd64-hw/include  -c  -std=c++0x  -funwind-tables -fno-rtti -fno-exceptions -fvisibility=hidden -Wno-old-style-cast  -I/var/tmp/rumprun/src-netbsd/sys/lib/libunwind /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx -o libunwind.o
In file included from /usr/include/c++/6.2.1/stdlib.h:36:0,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/UnwindCursor.hpp:16,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx:18:
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:98:9: error: '::div_t' has not been declared
 using ::div_t;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:99:9: error: '::ldiv_t' has not been declared
 using ::ldiv_t;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:101:9: error: '::lldiv_t' has not been declared
 using ::lldiv_t;
         ^~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:103:9: error: '::atof' has not been declared
 using ::atof;
         ^~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:104:9: error: '::atoi' has not been declared
 using ::atoi;
         ^~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:105:9: error: '::atol' has not been declared
 using ::atol;
         ^~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:107:9: error: '::atoll' has not been declared
 using ::atoll;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:109:9: error: '::strtod' has not been declared
 using ::strtod;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:110:9: error: '::strtof' has not been declared
 using ::strtof;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:111:9: error: '::strtold' has not been declared
 using ::strtold;
         ^~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:112:9: error: '::strtol' has not been declared
 using ::strtol;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:114:9: error: '::strtoll' has not been declared
 using ::strtoll;
         ^~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:116:9: error: '::strtoul' has not been declared
 using ::strtoul;
         ^~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:118:9: error: '::strtoull' has not been declared
 using ::strtoull;
         ^~~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:120:9: error: '::rand' has not been declared
 using ::rand;
         ^~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:121:9: error: '::srand' has not been declared
 using ::srand;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:122:9: error: '::calloc' has not been declared
 using ::calloc;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:123:9: error: '::free' has not been declared
 using ::free;
         ^~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:124:9: error: '::malloc' has not been declared
 using ::malloc;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:125:9: error: '::realloc' has not been declared
 using ::realloc;
         ^~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:126:9: error: '::abort' has not been declared
 using ::abort;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:127:9: error: '::atexit' has not been declared
 using ::atexit;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:128:9: error: '::exit' has not been declared
 using ::exit;
         ^~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:129:9: error: '::_Exit' has not been declared
 using ::_Exit;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:130:9: error: '::getenv' has not been declared
 using ::getenv;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:131:9: error: '::system' has not been declared
 using ::system;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:132:9: error: '::bsearch' has not been declared
 using ::bsearch;
         ^~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:133:9: error: '::qsort' has not been declared
 using ::qsort;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:135:9: error: '::abs' has not been declared
 using ::abs;
         ^~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:137:9: error: '::labs' has not been declared
 using ::labs;
         ^~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:140:9: error: '::llabs' has not been declared
 using ::llabs;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:143:9: error: '::div' has not been declared
 using ::div;
         ^~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:145:9: error: '::ldiv' has not been declared
 using ::ldiv;
         ^~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:148:9: error: '::lldiv' has not been declared
 using ::lldiv;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:151:9: error: '::mblen' has not been declared
 using ::mblen;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:152:9: error: '::mbtowc' has not been declared
 using ::mbtowc;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:153:9: error: '::wctomb' has not been declared
 using ::wctomb;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:155:9: error: '::mbstowcs' has not been declared
 using ::mbstowcs;
         ^~~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:156:9: error: '::wcstombs' has not been declared
 using ::wcstombs;
         ^~~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:158:9: error: '::at_quick_exit' has not been declared
 using ::at_quick_exit;
         ^~~~~~~~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:159:9: error: '::quick_exit' has not been declared
 using ::quick_exit;
         ^~~~~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib: In function 'long int std::__1::abs(long int)':
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:167:90: error: 'labs' was not declared in this scope
 inline _LIBCPP_INLINE_VISIBILITY long      abs(     long __x) _NOEXCEPT {return  labs(__x);}
                                                                                          ^
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib: In function 'long long int std::__1::abs(long long int)':
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:169:90: error: 'llabs' was not declared in this scope
 inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);}
                                                                                          ^
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib: At global scope:
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:172:35: error: 'ldiv_t' does not name a type
 inline _LIBCPP_INLINE_VISIBILITY  ldiv_t div(     long __x,      long __y) _NOEXCEPT {return  ldiv(__x, __y);}
                                   ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:174:34: error: 'lldiv_t' does not name a type
 inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);}
                                  ^~~~~~~
In file included from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/UnwindCursor.hpp:16:0,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx:18:
/usr/include/c++/6.2.1/stdlib.h:38:12: error: 'std::abort' has not been declared
 using std::abort;
            ^~~~~
/usr/include/c++/6.2.1/stdlib.h:39:12: error: 'std::atexit' has not been declared
 using std::atexit;
            ^~~~~~
/usr/include/c++/6.2.1/stdlib.h:40:12: error: 'std::exit' has not been declared
 using std::exit;
            ^~~~
In file included from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/UnwindCursor.hpp:19:0,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx:18:
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp: In member function '__int64_t _Unwind::LocalAddressSpace::getSLEB128(_Unwind::LocalAddressSpace::pint_t&, _Unwind::LocalAddressSpace::pint_t)':
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp:143:27: error: left shift of negative value [-Werror=shift-negative-value]
       result |= (-1LL) << bit;
                           ^~~
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp: In member function 'bool _Unwind::LocalAddressSpace::addFDE(_Unwind::LocalAddressSpace::pint_t, _Unwind::LocalAddressSpace::pint_t, _Unwind::LocalAddressSpace::pint_t)':
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp:287:42: error: 'malloc' was not declared in this scope
     Range *n = (Range *)malloc(sizeof(*n));
                                          ^
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp:299:11: error: 'free' was not declared in this scope
     free(n);
           ^
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp: In member function 'bool _Unwind::LocalAddressSpace::removeFDE(_Unwind::LocalAddressSpace::pint_t, _Unwind::LocalAddressSpace::pint_t, _Unwind::LocalAddressSpace::pint_t)':
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp:319:11: error: 'free' was not declared in this scope
     free(n);
           ^
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp: In member function 'void _Unwind::LocalAddressSpace::removeDSO(_Unwind::LocalAddressSpace::pint_t)':
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp:334:11: error: 'free' was not declared in this scope
     free(n);
           ^
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp: In member function 'void _Unwind::LocalAddressSpace::addDSO(_Unwind::LocalAddressSpace::pint_t, _Unwind::LocalAddressSpace::pint_t)':
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp:391:42: error: 'malloc' was not declared in this scope
     Range *n = (Range *)malloc(sizeof(*n));
                                          ^
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/AddressSpace.hpp:404:13: error: 'free' was not declared in this scope
       free(n);
             ^
In file included from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfInstructions.hpp:22:0,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/UnwindCursor.hpp:20,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx:18:
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfParser.hpp: In static member function 'static bool _Unwind::CFI_Parser<A, R>::parseInstructions(A&, _Unwind::CFI_Parser<A, R>::pint_t, _Unwind::CFI_Parser<A, R>::pint_t, const _Unwind::CFI_Parser<A, R>::CIE_Info&, _Unwind::CFI_Parser<A, R>::pint_t, _Unwind::CFI_Parser<A, R>::PrologInfoStackEntry*&, _Unwind::CFI_Parser<A, R>::PrologInfo*, _Unwind::unw_proc_info_t*)':
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfParser.hpp:386:74: error: there are no arguments to 'malloc' that depend on a template parameter, so a declaration of 'malloc' must be available [-fpermissive]
       entry = (PrologInfoStackEntry *)malloc(sizeof(PrologInfoStackEntry));
                                                                          ^
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfParser.hpp:386:74: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfParser.hpp:401:25: error: there are no arguments to 'free' that depend on a template parameter, so a declaration of 'free' must be available [-fpermissive]
         free((char *)top);
                         ^
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx: In function 'void _Unwind_Resume(_Unwind_Exception*)':
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx:230:9: error: 'abort' was not declared in this scope
   abort();
         ^
In file included from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfInstructions.hpp:22:0,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/UnwindCursor.hpp:20,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx:18:
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfParser.hpp: In instantiation of 'static bool _Unwind::CFI_Parser<A, R>::parseInstructions(A&, _Unwind::CFI_Parser<A, R>::pint_t, _Unwind::CFI_Parser<A, R>::pint_t, const _Unwind::CFI_Parser<A, R>::CIE_Info&, _Unwind::CFI_Parser<A, R>::pint_t, _Unwind::CFI_Parser<A, R>::PrologInfoStackEntry*&, _Unwind::CFI_Parser<A, R>::PrologInfo*, _Unwind::unw_proc_info_t*) [with A = _Unwind::LocalAddressSpace; R = _Unwind::Registers_x86_64; _Unwind::CFI_Parser<A, R>::pint_t = long unsigned int]':
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfParser.hpp:293:25:   required from 'static bool _Unwind::CFI_Parser<A, R>::parseFDEInstructions(A&, const _Unwind::CFI_Parser<A, R>::FDE_Info&, const _Unwind::CFI_Parser<A, R>::CIE_Info&, _Unwind::CFI_Parser<A, R>::pint_t, _Unwind::CFI_Parser<A, R>::PrologInfo*, _Unwind::unw_proc_info_t*) [with A = _Unwind::LocalAddressSpace; R = _Unwind::Registers_x86_64; _Unwind::CFI_Parser<A, R>::pint_t = long unsigned int]'
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/UnwindCursor.hpp:127:46:   required from 'void _Unwind::UnwindCursor<A, R>::setInfoBasedOnIPRegister(bool) [with A = _Unwind::LocalAddressSpace; R = _Unwind::Registers_x86_64]'
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx:31:35:   required from here
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfParser.hpp:386:45: error: 'malloc' was not declared in this scope
       entry = (PrologInfoStackEntry *)malloc(sizeof(PrologInfoStackEntry));
                                       ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/DwarfParser.hpp:401:13: error: 'free' was not declared in this scope
         free((char *)top);
         ~~~~^~~~~~~~~~~~~
/var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx:231:1: error: 'noreturn' function does return [-Werror]
 }
 ^
cc1plus: all warnings being treated as errors

*** Failed target:  libunwind.o
*** Failed command: /var/tmp/rumprun/obj-amd64-hw/rumptools/bin/x86_64--netbsd-c++ -frandom-seed=100a4059 -O2 -g -mno-red-zone -Wall -Wextra -Wno-unused-parameter -fno-stack-protector -Werror -D__NetBSD__ -Ulinux -U__linux -U__linux__ -U__gnu_linux__ --sysroot=/var/tmp/rumprun/obj-amd64-hw/rumptools/dest -isystem /var/tmp/rumprun/obj-amd64-hw/rumptools/dest/usr/include/c++ -I/var/tmp/rumprun/./obj-amd64-hw/include -c -std=c++0x -funwind-tables -fno-rtti -fno-exceptions -fvisibility=hidden -Wno-old-style-cast -I/var/tmp/rumprun/src-netbsd/sys/lib/libunwind /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx -o libunwind.o
*** Error code 1

Stop.
nbmake[2]: stopped in /var/tmp/rumprun/lib/libunwind

*** Failed target:  dependall
*** Failed command: cd "/var/tmp/rumprun/lib/libunwind"; /var/tmp/rumprun/obj-amd64-hw/rumptools/bin/nbmake realall
*** Error code 1

Stop.
nbmake[1]: stopped in /var/tmp/rumprun/lib/libunwind
make: *** [../Makefile.inc:80: /var/tmp/rumprun/./obj-amd64-hw/lib/libunwind/libunwind.a] Error 1
diff --git a/lib/libunwind/Makefile b/lib/libunwind/Makefile
index 5ca9cb6..3cf5ef7 100644
--- a/lib/libunwind/Makefile
+++ b/lib/libunwind/Makefile
@@ -5,7 +5,7 @@ RUMPTOP= ${TOPRUMP}
 LIB=   unwind
 INCSDIR=/usr/include
 
-CPPFLAGS+= -isystem ${DESTDIR}/usr/include/c++
+CPPFLAGS+= -isystem ${DESTDIR}/usr/include -isystem ${DESTDIR}/usr/include/c++ -Wno-error=shift-negative-value
 
 LIBC_MACHINE_CPU?= ${MACHINE_CPU}
 .include "${RUMPTOP}/../lib/libunwind/Makefile.inc"

That's a bit weird, considering that there's a --sysroot there already. Might be worthwhile to consulting the docs or ask the gcc list if ignoring --sysroot is an intended change in gcc 6.

With your proposed change, does everything work as expected (including being able to compile and run C++ programs from rumprun-packages)?

I tried on complie + reumprun-bake/rumprun, but not full test, so far it seems ok.

Also I did some check on the failed g++ command again
Some how in my environment, the /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include and <sysroot>/usr/include are both included.

I guess:

  • This one from gcc /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include takes more precedence than <sysroot>/usr/include and shadows the <sysroot>/usr/include/stdlib.h .

  • The include sequence becomes /var/tmp/rumprun/obj-amd64-hw/rumptools/dest/usr/include/c++ then <some system path> then /var/tmp/rumprun/obj-amd64-hw/rumptools/dest/usr/include. Which caused this issue.

#include "..." search starts here:
#include <...> search starts here:
 /var/tmp/rumprun/./obj-amd64-hw/include
 /var/tmp/rumprun/src-netbsd/sys/lib/libunwind
 /var/tmp/rumprun/obj-amd64-hw/rumptools/dest/usr/include/c++
 /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/../../../../include/c++/6.2.1
 /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/../../../../include/c++/6.2.1/x86_64-pc-linux-gnu
 /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/../../../../include/c++/6.2.1/backward
 /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include
 /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include-fixed
 /var/tmp/rumprun/obj-amd64-hw/rumptools/dest/usr/include
End of search list.
GNU C++11 (GCC) version 6.2.1 20160830 (x86_64-pc-linux-gnu)
	compiled by GNU C version 6.2.1 20160830, GMP version 6.1.1, MPFR version 3.1.4-p1, MPC version 1.0.3, isl version 0.15
warning: MPFR header version 3.1.4-p1 differs from library version 3.1.5.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: bfb50e0547e830f092456a1b04cf4850
In file included from /usr/include/c++/6.2.1/stdlib.h:36:0,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/UnwindCursor.hpp:16,
                 from /var/tmp/rumprun/src-netbsd/sys/lib/libunwind/libunwind.cxx:18:
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:98:9: error: ‘::div_t’ has not been declared
 using ::div_t;
         ^~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:99:9: error: ‘::ldiv_t’ has not been declared
 using ::ldiv_t;
         ^~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:101:9: error: ‘::lldiv_t’ has not been declared
 using ::lldiv_t;
         ^~~~~~~
/var/tmp/rumprun/obj-amd64-hw/dest.stage/include/c++/cstdlib:103:9: error: ‘::atof’ has not been declared
 using ::atof;
         ^~~~

Ah, so the new thing with gcc 6.2.1 is probably that it ships with stdlib.h.

Bah, the sysroot stuff is really horrible, because apparently it's really no longer a sysroot at all.

Anyway, I think your patch is ok. Please submit a pull request for it. Also, I encourage you to submit the shift-negative-value problem upstream to llvm/libunwind.

Failed on gcc 4.8.4 with this -Wno-error=shift-negative-value. I think I need a better fix.

Currently, the canonical way to deal with compiler flag differences is to test for them in buildrump.sh and add them to CCWRAPPER_MANGLE if necessary.

oh, and add yourself to AUTHORS if you like. (yes, it's a "one-liner" fix, but as you've probably no doubt noticed, these "one-liners" for maintaining toolchain support take quite a bit of time, and can easily shadow implementing new features)

See also discussion in PR #87

The llvm/libunwind bug seems to be fixed now, what needs to be done to use the fixed version?

The fix is also now merged into NetBSD HEAD. I'm guessing rumpkernel/netbsd-src would need to be bumped on the next release?