Joerg Sonnenberger writes: > On Tue, Feb 12, 2019 at 10:16:58AM +0000, matthew green wrote: > > Module Name: src > > Committed By: mrg > > Date: Tue Feb 12 10:16:58 UTC 2019 > > > > Modified Files: > > src/usr.bin/crunch/crunchgen: crunchgen.c > > > > Log Message: > > hack alert time: > > > > on sparc and sparc64, don't remove .eh_frame section. it leads > > to failure as something is referenced, and objcopy ends up > > emitting a broken binary that can't be run -- it attempts to > > load at va=0, beyond having missing referenced data. > > > > also, on sparc64 also don't remove .note.netbsd.mcmodel. > > > > the former should be revised when we can avoid it. > > The real bug is the reverted varasm.c change. GCC creates the .eh_frame > section with the wrong permissions.
yes - putting your varasm.c back fixes the crtbegin.o build, but it breaks the libstdc++ one: In file included from /usr/src4/external/gpl3/gcc/dist/libstdc++-v3/src/c++98/pool_allocator.cc:31:0: /usr/src4/external/gpl3/gcc/dist/libstdc++-v3/include/ext/pool_allocator.h:210:5: error: only zero initializers are allowed in section '.bss._ZN9__gnu_cxx12__pool_allocIwE12_S_force_newE' __pool_alloc<_Tp>::_S_force_new; ^~~~~~~~~~~~~~~~~ i'm not sure how to solve this -- we apparently want both behaviours with GCC 7. uwe@ suggested an explicit asm() or .S file for the crtbegin issue. .mrg.