This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/17266] Always defining __extern_always_inline may generate infinite recursion
- From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Tue, 16 Sep 2014 16:56:04 +0000
- Subject: [Bug libc/17266] Always defining __extern_always_inline may generate infinite recursion
- Auto-submitted: auto-generated
- References: <bug-17266-131 at http dot sourceware dot org/bugzilla/>
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.