From: Bruno Haible <bruno@clisp.org>
To: bug-gnulib@gnu.org
Cc: 9025@debbugs.gnu.org, Paul Eggert <eggert@cs.ucla.edu>
Subject: bug#9025: 24.0.50; gnulib defines intmax_t to int64_t on OSX, causes warnings and confusion.
Date: Sat, 9 Jul 2011 12:27:01 +0200 [thread overview]
Message-ID: <201107091227.03099.bruno__13448.363755788$1310207308$gmane$org@clisp.org> (raw)
In-Reply-To: <4E1826ED.9020602@cs.ucla.edu>
Jan Djärv writes:
> > Somewhere in gnulib, intmax_t gets defined to int64_t thus causing
> > compiler warnings and general confusion (the code says intmax_t but is
> > really int64_t). AFAIK, all versions of OSX have intmax_t.
Please provide a reproducible test case, preferrably outside Emacs.
Also, I don't understand what's the problem: intmax_t must be 64-bit on
MacOS X. No compiler supports 128-bit integers, AFAIK. Can you explain?
Paul Eggert wrote:
> Which compiler and OS version are you using?
>
> Does the following (untested) patch to lib/stdint.in.h fix your problem?
>
> diff --git a/lib/stdint.in.h b/lib/stdint.in.h
> index c44401f..0dd60b9 100644
> --- a/lib/stdint.in.h
> +++ b/lib/stdint.in.h
> @@ -270,6 +270,11 @@ typedef unsigned long int gl_uintptr_t;
> /* Note: These types are compiler dependent. It may be unwise to use them in
> public header files. */
>
> +/* If the system defines INTMAX_MAX, assume that intmax_t works, and
> + similarly for UINTMAX_MAX and uintmax_t. This avoids problems with
> + assuming one type where another is used by the system. */
> +
> +#ifndef INTMAX_MAX
> #undef intmax_t
> #if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
> typedef long long int gl_intmax_t;
> @@ -280,7 +285,9 @@ typedef long long int gl_intmax_t;
> typedef long int gl_intmax_t;
> # define intmax_t gl_intmax_t
> #endif
> +#endif
Untested patches are OK in simple areas. But in complex areas like stdint.in.h
I would really like to understand the problem before applying any patch. That
means, provide a reproducible sample (including all details about OS, compiler,
compiler options), and show the preprocessing result (output of "$CC -E" or
- even better - "$CC -E -dD") of the code that gives warnings.
Bruno
--
In memoriam Báb <http://en.wikipedia.org/wiki/Báb>
next parent reply other threads:[~2011-07-09 10:27 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4E1826ED.9020602@cs.ucla.edu>
2011-07-09 10:27 ` Bruno Haible [this message]
2011-07-09 11:18 ` bug#9025: 24.0.50; gnulib defines intmax_t to int64_t on OSX, causes warnings and confusion Jan Djärv
[not found] ` <201107091227.03099.bruno@clisp.org>
2011-07-09 11:25 ` Jan Djärv
2011-07-09 22:06 ` Paul Eggert
2011-07-08 10:17 Jan Djärv
2011-07-09 10:01 ` Paul Eggert
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='201107091227.03099.bruno__13448.363755788$1310207308$gmane$org@clisp.org' \
--to=bruno@clisp.org \
--cc=9025@debbugs.gnu.org \
--cc=bug-gnulib@gnu.org \
--cc=eggert@cs.ucla.edu \
/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.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).