Message ID | 20210723022530.268766-1-siddhesh@sourceware.org |
---|---|
State | New |
Headers | show |
Series | Fix build and tests with --disable-tunables | expand |
On 7/22/21 10:25 PM, Siddhesh Poyarekar wrote: > Remove unused code and declare __libc_mallopt when !IS_IN (libc) to > allow the debug hook to build with --disable-tunables. > > Also, run tst-ifunc-isa-2* tests only when tunables are enabled since > the result depends on it. > > Tested on x86_64. LGTM. Reviewed-by: Carlos O'Donell <carlos@redhat.com> > Reported-by: Matheus Castanho <msc@linux.ibm.com> > --- > > It's a trivial non-ABI change that is needed to get --disable-tunables > working correctly, so I'll push this if there are no objections. > > malloc/arena.c | 5 ----- > malloc/malloc-check.c | 2 ++ > malloc/malloc.c | 51 ++++++++++++++++++++++--------------------- > sysdeps/x86/Makefile | 8 +++++-- > 4 files changed, 34 insertions(+), 32 deletions(-) > > diff --git a/malloc/arena.c b/malloc/arena.c > index edcaa8816d..667484630e 100644 > --- a/malloc/arena.c > +++ b/malloc/arena.c > @@ -332,7 +332,6 @@ ptmalloc_init (void) > # endif > TUNABLE_GET (mxfast, size_t, TUNABLE_CALLBACK (set_mxfast)); > #else > - const char *s = NULL; OK. > if (__glibc_likely (_environ != NULL)) > { > char **runp = _environ; > @@ -351,10 +350,6 @@ ptmalloc_init (void) > > switch (len) > { > - case 6: > - if (memcmp (envline, "CHECK_", 6) == 0) > - s = &envline[7]; > - break; OK. > case 8: > if (!__builtin_expect (__libc_enable_secure, 0)) > { > diff --git a/malloc/malloc-check.c b/malloc/malloc-check.c > index a444c7478e..8ed67de3ff 100644 > --- a/malloc/malloc-check.c > +++ b/malloc/malloc-check.c > @@ -376,6 +376,7 @@ memalign_check (size_t alignment, size_t bytes) > return mem2mem_check (tag_new_usable (mem), bytes); > } > > +#if HAVE_TUNABLES > static void > TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp) > { > @@ -383,6 +384,7 @@ TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp) > if (value != 0) > __malloc_debug_enable (MALLOC_CHECK_HOOK); > } > +#endif OK. > > static bool > initialize_malloc_check (void) > diff --git a/malloc/malloc.c b/malloc/malloc.c > index 38b649fcba..e065785af7 100644 > --- a/malloc/malloc.c > +++ b/malloc/malloc.c > @@ -687,31 +687,6 @@ void* __libc_valloc(size_t); > > > > -/* > - mallopt(int parameter_number, int parameter_value) > - Sets tunable parameters The format is to provide a > - (parameter-number, parameter-value) pair. mallopt then sets the > - corresponding parameter to the argument value if it can (i.e., so > - long as the value is meaningful), and returns 1 if successful else > - 0. SVID/XPG/ANSI defines four standard param numbers for mallopt, > - normally defined in malloc.h. Only one of these (M_MXFAST) is used > - in this malloc. The others (M_NLBLKS, M_GRAIN, M_KEEP) don't apply, > - so setting them has no effect. But this malloc also supports four > - other options in mallopt. See below for details. Briefly, supported > - parameters are as follows (listed defaults are for "typical" > - configurations). > - > - Symbol param # default allowed param values > - M_MXFAST 1 64 0-80 (0 disables fastbins) > - M_TRIM_THRESHOLD -1 128*1024 any (-1U disables trimming) > - M_TOP_PAD -2 0 any > - M_MMAP_THRESHOLD -3 128*1024 any (or 0 if no MMAP support) > - M_MMAP_MAX -4 65536 any (0 disables use of mmap) > -*/ > -int __libc_mallopt(int, int); > -libc_hidden_proto (__libc_mallopt) > - > - > /* > mallinfo() > Returns (by copy) a struct containing various summary statistics: > @@ -820,6 +795,32 @@ void __malloc_stats(void); > int __posix_memalign(void **, size_t, size_t); > #endif /* IS_IN (libc) */ > > +/* > + mallopt(int parameter_number, int parameter_value) > + Sets tunable parameters The format is to provide a > + (parameter-number, parameter-value) pair. mallopt then sets the > + corresponding parameter to the argument value if it can (i.e., so > + long as the value is meaningful), and returns 1 if successful else > + 0. SVID/XPG/ANSI defines four standard param numbers for mallopt, > + normally defined in malloc.h. Only one of these (M_MXFAST) is used > + in this malloc. The others (M_NLBLKS, M_GRAIN, M_KEEP) don't apply, > + so setting them has no effect. But this malloc also supports four > + other options in mallopt. See below for details. Briefly, supported > + parameters are as follows (listed defaults are for "typical" > + configurations). > + > + Symbol param # default allowed param values > + M_MXFAST 1 64 0-80 (0 disables fastbins) > + M_TRIM_THRESHOLD -1 128*1024 any (-1U disables trimming) > + M_TOP_PAD -2 0 any > + M_MMAP_THRESHOLD -3 128*1024 any (or 0 if no MMAP support) > + M_MMAP_MAX -4 65536 any (0 disables use of mmap) > +*/ > +int __libc_mallopt(int, int); > +#if IS_IN (libc) > +libc_hidden_proto (__libc_mallopt) > +#endif > + > /* mallopt tuning options */ > > /* > diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile > index 346ec491b3..bd4f6a13b9 100644 > --- a/sysdeps/x86/Makefile > +++ b/sysdeps/x86/Makefile > @@ -19,14 +19,18 @@ ifeq (yes,$(have-ifunc)) > ifeq (yes,$(have-gcc-ifunc)) > tests += \ > tst-ifunc-isa-1 \ > - tst-ifunc-isa-1-static \ > + tst-ifunc-isa-1-static > +tests-static += \ > + tst-ifunc-isa-1-static > +ifneq ($(have-tunables),no) > +tests += \ > tst-ifunc-isa-2 \ > tst-ifunc-isa-2-static > tests-static += \ > - tst-ifunc-isa-1-static \ > tst-ifunc-isa-2-static > endif > endif > +endif OK. > ifeq (yes,$(enable-x86-isa-level)) > tests += tst-isa-level-1 > modules-names += tst-isa-level-mod-1-baseline \ >
diff --git a/malloc/arena.c b/malloc/arena.c index edcaa8816d..667484630e 100644 --- a/malloc/arena.c +++ b/malloc/arena.c @@ -332,7 +332,6 @@ ptmalloc_init (void) # endif TUNABLE_GET (mxfast, size_t, TUNABLE_CALLBACK (set_mxfast)); #else - const char *s = NULL; if (__glibc_likely (_environ != NULL)) { char **runp = _environ; @@ -351,10 +350,6 @@ ptmalloc_init (void) switch (len) { - case 6: - if (memcmp (envline, "CHECK_", 6) == 0) - s = &envline[7]; - break; case 8: if (!__builtin_expect (__libc_enable_secure, 0)) { diff --git a/malloc/malloc-check.c b/malloc/malloc-check.c index a444c7478e..8ed67de3ff 100644 --- a/malloc/malloc-check.c +++ b/malloc/malloc-check.c @@ -376,6 +376,7 @@ memalign_check (size_t alignment, size_t bytes) return mem2mem_check (tag_new_usable (mem), bytes); } +#if HAVE_TUNABLES static void TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp) { @@ -383,6 +384,7 @@ TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp) if (value != 0) __malloc_debug_enable (MALLOC_CHECK_HOOK); } +#endif static bool initialize_malloc_check (void) diff --git a/malloc/malloc.c b/malloc/malloc.c index 38b649fcba..e065785af7 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -687,31 +687,6 @@ void* __libc_valloc(size_t); -/* - mallopt(int parameter_number, int parameter_value) - Sets tunable parameters The format is to provide a - (parameter-number, parameter-value) pair. mallopt then sets the - corresponding parameter to the argument value if it can (i.e., so - long as the value is meaningful), and returns 1 if successful else - 0. SVID/XPG/ANSI defines four standard param numbers for mallopt, - normally defined in malloc.h. Only one of these (M_MXFAST) is used - in this malloc. The others (M_NLBLKS, M_GRAIN, M_KEEP) don't apply, - so setting them has no effect. But this malloc also supports four - other options in mallopt. See below for details. Briefly, supported - parameters are as follows (listed defaults are for "typical" - configurations). - - Symbol param # default allowed param values - M_MXFAST 1 64 0-80 (0 disables fastbins) - M_TRIM_THRESHOLD -1 128*1024 any (-1U disables trimming) - M_TOP_PAD -2 0 any - M_MMAP_THRESHOLD -3 128*1024 any (or 0 if no MMAP support) - M_MMAP_MAX -4 65536 any (0 disables use of mmap) -*/ -int __libc_mallopt(int, int); -libc_hidden_proto (__libc_mallopt) - - /* mallinfo() Returns (by copy) a struct containing various summary statistics: @@ -820,6 +795,32 @@ void __malloc_stats(void); int __posix_memalign(void **, size_t, size_t); #endif /* IS_IN (libc) */ +/* + mallopt(int parameter_number, int parameter_value) + Sets tunable parameters The format is to provide a + (parameter-number, parameter-value) pair. mallopt then sets the + corresponding parameter to the argument value if it can (i.e., so + long as the value is meaningful), and returns 1 if successful else + 0. SVID/XPG/ANSI defines four standard param numbers for mallopt, + normally defined in malloc.h. Only one of these (M_MXFAST) is used + in this malloc. The others (M_NLBLKS, M_GRAIN, M_KEEP) don't apply, + so setting them has no effect. But this malloc also supports four + other options in mallopt. See below for details. Briefly, supported + parameters are as follows (listed defaults are for "typical" + configurations). + + Symbol param # default allowed param values + M_MXFAST 1 64 0-80 (0 disables fastbins) + M_TRIM_THRESHOLD -1 128*1024 any (-1U disables trimming) + M_TOP_PAD -2 0 any + M_MMAP_THRESHOLD -3 128*1024 any (or 0 if no MMAP support) + M_MMAP_MAX -4 65536 any (0 disables use of mmap) +*/ +int __libc_mallopt(int, int); +#if IS_IN (libc) +libc_hidden_proto (__libc_mallopt) +#endif + /* mallopt tuning options */ /* diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile index 346ec491b3..bd4f6a13b9 100644 --- a/sysdeps/x86/Makefile +++ b/sysdeps/x86/Makefile @@ -19,14 +19,18 @@ ifeq (yes,$(have-ifunc)) ifeq (yes,$(have-gcc-ifunc)) tests += \ tst-ifunc-isa-1 \ - tst-ifunc-isa-1-static \ + tst-ifunc-isa-1-static +tests-static += \ + tst-ifunc-isa-1-static +ifneq ($(have-tunables),no) +tests += \ tst-ifunc-isa-2 \ tst-ifunc-isa-2-static tests-static += \ - tst-ifunc-isa-1-static \ tst-ifunc-isa-2-static endif endif +endif ifeq (yes,$(enable-x86-isa-level)) tests += tst-isa-level-1 modules-names += tst-isa-level-mod-1-baseline \