This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/19463] linknamespace failures when compiled with -Os


https://sourceware.org/bugzilla/show_bug.cgi?id=19463

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  8b4a118222c7ed41bc653943b542915946dff1dd (commit)
      from  ce999220903ae5ad027a2a7df722acaf2cecf4bf (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8b4a118222c7ed41bc653943b542915946dff1dd

commit 8b4a118222c7ed41bc653943b542915946dff1dd
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Wed Feb 7 14:57:31 2018 +0000

    Fix -Os gnu_dev_* linknamespace, localplt issues (bug 15105, bug 19463).

    Building with -Os produces linknamespace and localplt failures for,
    among other functions, gnu_dev_major, gnu_dev_minor and
    gnu_dev_makedev.

    The issue is that those functions are not inlined when building with
    -Os.  While one could force them to be inlined in that case, it seems
    more natural to fix this issue similarly to other namespace issues.
    Thus, this patch makes gnu_dev_* into weak aliases for hidden symbols
    __gnu_dev_*; __gnu_dev_* are then defined as inlines in the internal
    include/sys/sysmacros.h, and uses of gnu_dev_* (often via the macros
    major, minor and makedev) for which there are namespace issues are
    changed to use __gnu_dev_*; where there are no namespace issues, use
    of libc_hidden_proto serves to avoid unnecessary local PLT entry use.

    Tested for x86_64, (a) without -Os, to verify the testsuite continues
    to pass without problems and that the functions called under their new
    names continue to be inlined as expected in that case; (b) with -Os,
    to verify that the linknamespace and localplt failures in question go
    away (but because of other such failures present, neither of the
    relevant bugs can yet be closed).

        [BZ #15105]
        [BZ #19463]
        * include/sys/sysmacros.h [!_ISOMAC]
        (__SYSMACROS_NEED_IMPLEMENTATION): Define macro.
        [!_SYS_SYSMACROS_H_WRAPPER && !_ISOMAC]
        (_SYS_SYSMACROS_H_WRAPPER): Likewise.
        [!_SYS_SYSMACROS_H_WRAPPER && !_ISOMAC] (gnu_dev_major): Use
        libc_hidden_proto.
        [!_SYS_SYSMACROS_H_WRAPPER && !_ISOMAC] (gnu_dev_minor): Likewise.
        [!_SYS_SYSMACROS_H_WRAPPER && !_ISOMAC] (gnu_dev_makedev):
        Likewise.
        [!_SYS_SYSMACROS_H_WRAPPER && !_ISOMAC] (__SYSMACROS_DECL_TEMPL):
        Undefine and redefine to add use __gnu_dev_ prefix.
        [!_SYS_SYSMACROS_H_WRAPPER && !_ISOMAC] (__SYSMACROS_IMPL_TEMPL):
        Likewise.
        [!_SYS_SYSMACROS_H_WRAPPER && !_ISOMAC] (__gnu_dev_major): Declare
        and define as hidden inline function.
        [!_SYS_SYSMACROS_H_WRAPPER && !_ISOMAC] (__gnu_dev_minor):
        Likewise.
        [!_SYS_SYSMACROS_H_WRAPPER && !_ISOMAC] (__gnu_dev_makedev):
        Likewise.
        * misc/makedev.c (OUT_OF_LINE_IMPL_TEMPL): Use __gnu_dev_ prefix.
        (gnu_dev_major): Use weak_alias and libc_hidden_weak.
        (gnu_dev_minor): Likewise.
        (gnu_dev_makedev): Likewise.
        * csu/check_fds.c (check_one_fd): Use __gnu_dev_makedev instead of
        makedev.
        * posix/wordexp.c (exec_comm_child): Likewise.
        * sysdeps/mach/hurd/xmknodat.c (__xmknodat): Use __gnu_dev_minor
        instead of minor and __gnu_dev_major instead of major.
        * sysdeps/unix/sysv/linux/device-nrs.h (DEV_TTY_P): Use
        __gnu_dev_major instead of major.
        * sysdeps/unix/sysv/linux/pathconf.c (distinguish_extX): Use
        __gnu_dev_major instead of gnu_dev_major and __gnu_dev_minor
        instead of gnu_dev_minor.
        * sysdeps/unix/sysv/linux/ptsname.c (MASTER_P): Likewise.
        (SLAVE_P): Likewise.
        (__ptsname_internal): Use __gnu_dev_minor instead of minor.
        * sysdeps/unix/sysv/linux/ttyname.h (is_pty): Use __gnu_dev_major
        instead of major.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                            |   41 +++++++++++++++++++++++++++
 csu/check_fds.c                      |    4 +-
 include/sys/sysmacros.h              |   51 ++++++++++++++++++++++++++++++++++
 misc/makedev.c                       |    8 ++++-
 posix/wordexp.c                      |    2 +-
 sysdeps/mach/hurd/xmknodat.c         |    4 +-
 sysdeps/unix/sysv/linux/device-nrs.h |    2 +-
 sysdeps/unix/sysv/linux/pathconf.c   |    2 +-
 sysdeps/unix/sysv/linux/ptsname.c    |   20 +++++++------
 sysdeps/unix/sysv/linux/ttyname.h    |    2 +-
 10 files changed, 118 insertions(+), 18 deletions(-)

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]