[PATCH 0/2] Remove some i386 system call optimizations

H.J. Lu hjl.tools@gmail.com
Tue Jan 11 22:20:29 GMT 2022


On Tue, Jan 11, 2022 at 12:37 PM Florian Weimer <fweimer@redhat.com> wrote:
>
> * H. J. Lu:
>
> > On Tue, Jan 11, 2022 at 6:00 AM H.J. Lu <hjl.tools@gmail.com> wrote:
> >>
> >> On Tue, Jan 11, 2022 at 2:05 AM Florian Weimer <fweimer@redhat.com> wrote:
> >> >
> >> > The configure check for CAN_USE_REGISTER_ASM_EBP is unreliable.  And we
> >> > used it to switch away from using %ebx in assembler constraints, but
> >> > this appears to be no longer necessary.
> >>
> >> This GCC bug has been fixed in GCC 5 as seen in
> >>
> >> commit 021478683cc091de9902d297a7b161f8343ffb6a
> >> Author: Uros Bizjak <uros@gcc.gnu.org>
> >> Date:   Fri Oct 17 08:00:58 2014 +0200
> >>
> >>     cpuid.h (__cpuid): Remove definitions that handle %ebx register in
> >> a special way.
> >>
> >>             * config/i386/cpuid.h (__cpuid): Remove definitions that handle %ebx
> >>             register in a special way.
> >>             (__cpuid_count): Ditto.
> >>             * config/i386/driver-i386.h: Protect with
> >>             "#if defined(__GNUC__) && (__GNUC__ >= 5 || !defined(__PIC__))".
> >>             (host_detect_local_cpu): Mention that GCC with non-fixed %ebx
> >>             is required to compile the function.
> >>
> >>     From-SVN: r216362
> >>
> >> Since GCC 6.2 or above is required to build glibc, please
> >> remove the !OPTIMIZE_FOR_GCC_5 path and this issue
> >> will be resolved automatically.
> >
> > There are
> >
> > /* Since GCC 5 and above can properly spill %ebx with PIC when needed,
> >    we can inline syscalls with 6 arguments if GCC 5 or above is used
> >    to compile glibc.  Disable GCC 5 optimization when compiling for
> >    profiling or when -fno-omit-frame-pointer is used since asm ("ebp")
> >    can't be used to put the 6th argument in %ebp for syscall.  */
> > #if !defined PROF && CAN_USE_REGISTER_ASM_EBP
> > # define OPTIMIZE_FOR_GCC_5
> > #endif
> >
> > If we want to support profiling or -fno-omit-frame-pointer,
> > we need to keep these codes.
>
> This is strictly for %ebp, I think, as indicated by the comment.  %ebx
> does not need to be special-cased for profiling.
>
> I assume that building glibc (with profiling) is proof enough that this
> works?

You need to test glibc build with -fno-omit-frame-pointer.

-- 
H.J.


More information about the Libc-alpha mailing list