This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] readline/util.c: use '%d' instead of 'ld' to avoid compiling warning
- From: Alan Modra <amodra at gmail dot com>
- To: Chen Gang <gang dot chen dot 5i5j at gmail dot com>
- Cc: jan dot kratochvil at redhat dot com, drow at false dot org, ezannoni at kwikemart dot cygnus dot com, brobecker at gnat dot com, muller at sourceware dot org, palves at redhat dot com, nickc at redhat dot com, macro at linux-mips dot org, binutils at sourceware dot org
- Date: Fri, 30 May 2014 11:45:07 +0930
- Subject: Re: [PATCH] readline/util.c: use '%d' instead of 'ld' to avoid compiling warning
- Authentication-results: sourceware.org; auth=none
- References: <5387CCBD dot 7070203 at gmail dot com>
On Fri, May 30, 2014 at 08:11:41AM +0800, Chen Gang wrote:
> getpid() will return 'pid_t' which is always 'int', so need use '%d'
> instead of '%ld' in sprintf().
Please do not copy many lists and/or maintainers. This patch should
have gone just to gdb-patches@sourceware.org, since readline belongs
to the gdb project.
Also, gdb and binutils generally require patches to be supplied with a
ChangeLog entry. See other posts on the mailing list.
Now, on to the substance of your patch. It's wrong to claim that
"pid_t" is always "int". I know of systems that use or used to use
"short". In fact
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html
says
"The implementation shall support one or more programming environments
in which the widths of blksize_t, pid_t, size_t, ssize_t, and
suseconds_t are no greater than the width of type long."
So the correct patch would be to cast the return of getpid() to long,
continuing to use '%ld' in the format string.
> The related warning (cross-compile aarch64):
>
> ../../binutils-gdb/readline/util.c: In function â_rl_tropenâ:
> ../../binutils-gdb/readline/util.c:510:3: warning: format â%ldâ expects argument of type âlong intâ, but argument 3 has type â__pid_tâ [-Wformat]
--
Alan Modra
Australia Development Lab, IBM