From: Vineet Gupta <Vineet.Gupta1@synopsys.com>
To: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
Cc: "devel@uclibc-ng.org" <devel@uclibc-ng.org>,
"linux-perf-users@vger.kernel.org"
<linux-perf-users@vger.kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
lkml <linux-kernel@vger.kernel.org>,
arcml <linux-snps-arc@lists.infradead.org>,
Arnd Bergmann <arnd@arndb.de>, Jiri Olsa <jolsa@kernel.org>,
Namhyung Kim <namhyung@kernel.org>, Rich Felker <dalias@libc.org>
Subject: Detecting libc in perf (was Re: perf tools build broken after v5.1-rc1)
Date: Tue, 30 Apr 2019 15:53:18 +0000 [thread overview]
Message-ID: <C2D7FE5348E1B147BCA15975FBA2307501A250601B@us01wembx1.internal.synopsys.com> (raw)
In-Reply-To: 20190430011818.GE7857@kernel.org
On 4/29/19 6:18 PM, Arnaldo Carvalho de Melo wrote:
>>> Auto-detecting system features:
>>> ... dwarf: [ OFF ]
>>> ... dwarf_getlocations: [ OFF ]
>>> ... glibc: [ on ]
>> Not related to current issue, this run uses a uClibc toolchain and yet it is
>> detecting glibc - doesn't seem right to me.
> Ok, I'll improve that, I think it just tries to detect a libc, yeah,
> see:
>
> [acme@quaco linux]$ cat tools/build/feature/test-glibc.c
> // SPDX-License-Identifier: GPL-2.0
> #include <stdlib.h>
>
> #if !defined(__UCLIBC__)
> #include <gnu/libc-version.h>
> #else
> #define XSTR(s) STR(s)
> #define STR(s) #s
> #endif
>
> int main(void)
> {
> #if !defined(__UCLIBC__)
> const char *version = gnu_get_libc_version();
> #else
> const char *version = XSTR(__GLIBC__) "." XSTR(__GLIBC_MINOR__);
> #endif
>
> return (long)version;
> }
> [acme@quaco linux]$
>
> [perfbuilder@59ca4b424ded /]$ grep __GLIBC__ /arc_gnu_2017.09-rc2_prebuilt_uclibc_le_arc700_linux_install/arc-snps-linux-uclibc/sysroot/usr/include/*.h
> /arc_gnu_2017.09-rc2_prebuilt_uclibc_le_arc700_linux_install/arc-snps-linux-uclibc/sysroot/usr/include/features.h: The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
> /arc_gnu_2017.09-rc2_prebuilt_uclibc_le_arc700_linux_install/arc-snps-linux-uclibc/sysroot/usr/include/features.h:#define __GLIBC__ 2
> /arc_gnu_2017.09-rc2_prebuilt_uclibc_le_arc700_linux_install/arc-snps-linux-uclibc/sysroot/usr/include/features.h: ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
> [perfbuilder@59ca4b424ded /]$
>
> Isn't that part of uClibc?
Right you are. Per the big fat comment right above that code, this gross hack in
uclibc is unavoidable as applications tend to rely on that define.
So a better fix would be to check for various !GLIBC libs explicitly.
#ifdef __UCLIBC__
#elseif defined __MUSL__
...
Not pretty from app usage pov, but that seems to be the only sane way of doing it.
-Vineet
WARNING: multiple messages have this Message-ID (diff)
From: Vineet.Gupta1@synopsys.com (Vineet Gupta)
To: linux-snps-arc@lists.infradead.org
Subject: Detecting libc in perf (was Re: perf tools build broken after v5.1-rc1)
Date: Tue, 30 Apr 2019 15:53:18 +0000 [thread overview]
Message-ID: <C2D7FE5348E1B147BCA15975FBA2307501A250601B@us01wembx1.internal.synopsys.com> (raw)
In-Reply-To: 20190430011818.GE7857@kernel.org
On 4/29/19 6:18 PM, Arnaldo Carvalho de Melo wrote:
>>> Auto-detecting system features:
>>> ... dwarf: [ OFF ]
>>> ... dwarf_getlocations: [ OFF ]
>>> ... glibc: [ on ]
>> Not related to current issue, this run uses a uClibc toolchain and yet it is
>> detecting glibc - doesn't seem right to me.
> Ok, I'll improve that, I think it just tries to detect a libc, yeah,
> see:
>
> [acme at quaco linux]$ cat tools/build/feature/test-glibc.c
> // SPDX-License-Identifier: GPL-2.0
> #include <stdlib.h>
>
> #if !defined(__UCLIBC__)
> #include <gnu/libc-version.h>
> #else
> #define XSTR(s) STR(s)
> #define STR(s) #s
> #endif
>
> int main(void)
> {
> #if !defined(__UCLIBC__)
> const char *version = gnu_get_libc_version();
> #else
> const char *version = XSTR(__GLIBC__) "." XSTR(__GLIBC_MINOR__);
> #endif
>
> return (long)version;
> }
> [acme at quaco linux]$
>
> [perfbuilder at 59ca4b424ded /]$ grep __GLIBC__ /arc_gnu_2017.09-rc2_prebuilt_uclibc_le_arc700_linux_install/arc-snps-linux-uclibc/sysroot/usr/include/*.h
> /arc_gnu_2017.09-rc2_prebuilt_uclibc_le_arc700_linux_install/arc-snps-linux-uclibc/sysroot/usr/include/features.h: The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
> /arc_gnu_2017.09-rc2_prebuilt_uclibc_le_arc700_linux_install/arc-snps-linux-uclibc/sysroot/usr/include/features.h:#define __GLIBC__ 2
> /arc_gnu_2017.09-rc2_prebuilt_uclibc_le_arc700_linux_install/arc-snps-linux-uclibc/sysroot/usr/include/features.h: ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
> [perfbuilder at 59ca4b424ded /]$
>
> Isn't that part of uClibc?
Right you are. Per the big fat comment right above that code, this gross hack in
uclibc is unavoidable as applications tend to rely on that define.
So a better fix would be to check for various !GLIBC libs explicitly.
#ifdef __UCLIBC__
#elseif defined __MUSL__
...
Not pretty from app usage pov, but that seems to be the only sane way of doing it.
-Vineet
next prev parent reply other threads:[~2019-04-30 15:54 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-19 23:32 perf tools build broken after v5.1-rc1 Vineet Gupta
2019-04-19 23:32 ` Vineet Gupta
2019-04-22 15:20 ` Arnaldo Carvalho de Melo
2019-04-22 15:20 ` Arnaldo Carvalho de Melo
2019-04-25 21:48 ` Arnaldo Carvalho de Melo
2019-04-25 21:48 ` Arnaldo Carvalho de Melo
2019-04-26 19:28 ` Arnaldo Carvalho de Melo
2019-04-26 19:28 ` Arnaldo Carvalho de Melo
2019-04-26 19:35 ` Arnaldo Carvalho de Melo
2019-04-26 19:35 ` Arnaldo Carvalho de Melo
2019-04-26 19:35 ` Arnaldo Carvalho de Melo
2019-04-29 17:23 ` Vineet Gupta
2019-04-29 17:23 ` Vineet Gupta
2019-05-03 5:58 ` [tip:perf/urgent] tools arch uapi: Copy missing unistd.h headers for arc, hexagon and riscv tip-bot for Arnaldo Carvalho de Melo
2019-04-29 17:14 ` perf tools build broken after v5.1-rc1 Vineet Gupta
2019-04-29 17:14 ` Vineet Gupta
2019-04-30 1:18 ` Arnaldo Carvalho de Melo
2019-04-30 1:18 ` Arnaldo Carvalho de Melo
2019-04-30 1:18 ` Arnaldo Carvalho de Melo
2019-04-30 15:53 ` Vineet Gupta [this message]
2019-04-30 15:53 ` Detecting libc in perf (was Re: perf tools build broken after v5.1-rc1) Vineet Gupta
2019-04-30 17:04 ` Rich Felker
2019-04-30 17:04 ` Rich Felker
2019-04-30 17:13 ` Vineet Gupta
2019-04-30 17:13 ` Vineet Gupta
2019-05-01 3:12 ` Rich Felker
2019-05-01 3:12 ` Rich Felker
2019-05-02 16:55 ` Vineet Gupta
2019-05-02 16:55 ` Vineet Gupta
2019-05-02 16:55 ` Vineet Gupta
2019-05-02 20:09 ` Arnaldo Carvalho de Melo
2019-05-02 20:09 ` Arnaldo Carvalho de Melo
2019-05-02 20:09 ` Arnaldo Carvalho de Melo
2019-05-02 16:53 ` perf tools build broken after v5.1-rc1 Vineet Gupta
2019-05-02 16:53 ` Vineet Gupta
2019-04-29 17:17 ` Vineet Gupta
2019-04-29 17:17 ` Vineet Gupta
2019-04-30 16:12 ` Arnd Bergmann
2019-04-30 16:12 ` Arnd Bergmann
2019-05-01 20:41 ` Arnaldo Carvalho de Melo
2019-05-01 20:41 ` Arnaldo Carvalho de Melo
2019-05-01 21:17 ` Vineet Gupta
2019-05-01 21:17 ` Vineet Gupta
2019-05-02 14:36 ` Arnaldo Carvalho de Melo
2019-05-02 14:36 ` Arnaldo Carvalho de Melo
2019-05-02 14:36 ` Arnaldo Carvalho de Melo
2019-05-02 15:41 ` Arnaldo Carvalho de Melo
2019-05-02 15:41 ` Arnaldo Carvalho de Melo
2019-05-02 16:09 ` Vineet Gupta
2019-05-02 16:09 ` Vineet Gupta
2019-05-02 16:09 ` Vineet Gupta
2019-05-02 16:41 ` Arnaldo Carvalho de Melo
2019-05-02 16:41 ` Arnaldo Carvalho de Melo
2019-05-02 17:10 ` Vineet Gupta
2019-05-02 17:10 ` Vineet Gupta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=C2D7FE5348E1B147BCA15975FBA2307501A250601B@us01wembx1.internal.synopsys.com \
--to=vineet.gupta1@synopsys.com \
--cc=acme@redhat.com \
--cc=arnaldo.melo@gmail.com \
--cc=arnd@arndb.de \
--cc=dalias@libc.org \
--cc=devel@uclibc-ng.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-snps-arc@lists.infradead.org \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.