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.