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/17266] Always defining __extern_always_inline may generate infinite recursion


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

--- Comment #7 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  d330b980e9ee2349492087a279a9c7bf294f6b47 (commit)
       via  02657da2cf4457804ed938ee08b8316249126444 (commit)
       via  653b1080fad02725ab66e504a7bfeecf4347d7aa (commit)
       via  602f80ec8b966cfad3b61914cbe14ee606cedf6e (commit)
      from  545583d664b64ff234b99aca0d85e99c8a55808f (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=d330b980e9ee2349492087a279a9c7bf294f6b47

commit d330b980e9ee2349492087a279a9c7bf294f6b47
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Tue Sep 16 22:20:45 2014 +0530

    Remove CFLAGS for interp.c

    Replace it with including an auto-generated linker-runtime.h.
    Build-tested on x86_64 and found that there was no change in the
    generated code.

        * elf/Makefile (CFLAGS-interp.c): Remove.
        ($(elf-objpfx)runtime-linker.h): Generate header with linker
        path string.
        * elf/interp.c: Include generated runtime-linker.h

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=02657da2cf4457804ed938ee08b8316249126444

commit 02657da2cf4457804ed938ee08b8316249126444
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Tue Sep 16 22:19:22 2014 +0530

    Include .interp section only for libc.so

    Barring libc.so and libdl.so, none of the libraries have any entry
    points, so it is pointless to add a .interp section for them.  The
    libdl.so entry point (in dlfcn/eval.c) is also defunct, so remove that
    file as well.

    Build tested for x86_64, ppc64 and s390x.  I have not moved
    CFLAGS-interp.c to CPPFLAGS-interp.c isnce I'll be removing it
    completely in a follow-up patch.

    Siddhesh

        * Makerules (lib%.so): Don't include $(+interp) in
        prerequisites.
        * elf/Makefile (CFLAGS-interp.c): Don't define NOT_IN_libc.
        * dlfcn/eval.c: Remove file.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=653b1080fad02725ab66e504a7bfeecf4347d7aa

commit 653b1080fad02725ab66e504a7bfeecf4347d7aa
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Tue Sep 16 22:18:20 2014 +0530

    Assume that all _[PS]C_* and _CS_* macros are always defined

    The macros in question are always defined in confname.h for all
    variants and there seems to be no reason to allow such variants to
    exist anyway.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=602f80ec8b966cfad3b61914cbe14ee606cedf6e

commit 602f80ec8b966cfad3b61914cbe14ee606cedf6e
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Tue Sep 16 22:16:01 2014 +0530

    Make __extern_always_inline usable on clang++ again

    The fix for BZ #17266 (884ddc5081278f488ef8cd49951f41cfdbb480ce)
    removed changes that had gone into cdefs.h to make
    __extern_always_inline usable with clang++.  This patch adds back
    support for clang to detect if GNU inlining semantics are available,
    this time without breaking the gcc use case.  The check put here is
    based on the earlier patch and assertion[1] that checking if
    __GNUC_STDC_INLINE__ or __GNUC_GNU_INLINE__ is defined is sufficient
    to determine that clang++ suports GNU inlining semantics.

    Tested with a simple program that builds with __extern_always_inline
    with the patch and fails compilation without it.

     #include <stdio.h>
     #include <sys/cdefs.h>

    extern void foo_alias (void) __asm ("foo");

    __extern_always_inline void
    foo (void)
    {
      puts ("hi oh world!");
      return foo_alias ();
    }

    void
    foo_alias (void)
    {
      puts ("hell oh world");
    }

    int
    main ()
    {
      foo ();
    }

    [1] https://sourceware.org/ml/libc-alpha/2012-12/msg00306.html

        [BZ #17266]
        * misc/sys/cdefs.h: Define __extern_always_inline for clang
        4.2 and newer.

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

Summary of changes:
 ChangeLog        |   17 ++
 Makerules        |    2 +-
 dlfcn/eval.c     |  200 -----------------
 elf/Makefile     |   14 +-
 elf/interp.c     |    2 +
 misc/sys/cdefs.h |   10 +-
 posix/getconf.c  |  628 ------------------------------------------------------
 7 files changed, 38 insertions(+), 835 deletions(-)
 delete mode 100644 dlfcn/eval.c

-- 
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]