[PATCH] benchtests: Building benchmarks as static executables

H.J. Lu hjl.tools@gmail.com
Mon Aug 9 14:18:19 GMT 2021


On Mon, Aug 9, 2021 at 6:01 AM Carlos O'Donell <carlos@redhat.com> wrote:
>
> On 7/30/21 5:22 PM, H.J. Lu via Libc-alpha wrote:
> > Building benchmarks as static executables:
> > =========================================
> >
> > To build benchmarks as static executables, on the build system, run:
> >
> >   $ make STATIC-BENCHTESTS=yes bench-build
> >
> > You can copy benchmark executables to another machine and run them
> > without copying the source nor build directories.
>
> Looking forward to a v2.
>
> Fails to build for i686 with binutils 2.35, the README should mention
> architecture and minimum binutils required.

I sent out the v2 patch with

On i686, there is no multiarch memove in libc.a, don't include multiarch
memove in ifunc-impl-list.c in libc.a.

> Looks good on x86_64 which has has this feature for longer.
>
> > ---
> >  benchtests/Makefile | 26 +++++++++++++++++++-------
> >  benchtests/README   | 10 ++++++++++
> >  2 files changed, 29 insertions(+), 7 deletions(-)
> >
> > diff --git a/benchtests/Makefile b/benchtests/Makefile
> > index 1530939a8c..4fcd73131a 100644
> > --- a/benchtests/Makefile
> > +++ b/benchtests/Makefile
> > @@ -110,11 +110,23 @@ else
> >  bench-malloc := $(filter malloc-%,${BENCHSET})
> >  endif
> >
> > -$(addprefix $(objpfx)bench-,$(bench-math)): $(libm)
> > -$(addprefix $(objpfx)bench-,$(math-benchset)): $(libm)
> > -$(addprefix $(objpfx)bench-,$(bench-pthread)): $(shared-thread-library)
> > -$(addprefix $(objpfx)bench-,$(bench-malloc)): $(shared-thread-library)
> > -$(addprefix $(objpfx)bench-,pthread-locks): $(libm)
> > +ifeq (${STATIC-BENCHTESTS},yes)
> > ++link-benchtests = $(+link-static-tests)
> > +link-libc-benchtests = $(link-libc-static)
> > +libm-benchtests = $(common-objpfx)math/libm.a
> > +thread-library-benchtests = $(static-thread-library)
> > +else
> > +link-libc-benchtests = $(link-libc)
> > ++link-benchtests = $(+link-tests)
> > +thread-library-benchtests = $(shared-thread-library)
> > +libm-benchtests = $(libm)
> > +endif
> > +
> > +$(addprefix $(objpfx)bench-,$(bench-math)): $(libm-benchtests)
> > +$(addprefix $(objpfx)bench-,$(math-benchset)): $(libm-benchtests)
> > +$(addprefix $(objpfx)bench-,$(bench-pthread)): $(thread-library-benchtests)
> > +$(addprefix $(objpfx)bench-,$(bench-malloc)): $(thread-library-benchtests)
> > +$(addprefix $(objpfx)bench-,pthread-locks): $(libm-benchtests)
> >
> >
> >
> > @@ -270,9 +282,9 @@ bench-link-targets = $(timing-type) $(binaries-bench) $(binaries-benchset) \
> >
> >  $(bench-link-targets): %: %.o $(objpfx)json-lib.o \
> >       $(link-extra-libs-tests) \
> > -  $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
> > +  $(sort $(filter $(common-objpfx)lib%,$(link-libc-benchtests))) \
> >    $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
> > -     $(+link-tests)
> > +     $(+link-benchtests)
> >
> >  $(bench-link-targets): LDFLAGS += $(link-bench-bind-now)
> >
> > diff --git a/benchtests/README b/benchtests/README
> > index 44736d7e63..4d83a05b4b 100644
> > --- a/benchtests/README
> > +++ b/benchtests/README
> > @@ -62,6 +62,16 @@ otherwise the above command may try to build the benchmark again.  Benchmarks
> >  that require generated code to be executed during the build are skipped when
> >  cross-building.
> >
> > +Building benchmarks as static executables:
> > +=========================================
> > +
> > +To build benchmarks as static executables, on the build system, run:
> > +
> > +  $ make STATIC-BENCHTESTS=yes bench-build
> > +
> > +You can copy benchmark executables to another machine and run them
> > +without copying the source nor build directories.
> > +
> >  Running subsets of benchmarks:
> >  ==============================
> >
> >
>
>
> --
> Cheers,
> Carlos.
>

Thanks.

-- 
H.J.


More information about the Libc-alpha mailing list