This is sources Bugzilla
Bugzilla Version 2.17.5
Bugzilla Bug 316
  Compile error in argp-fmtstream.c due to bad macro in stdio.h Last modified: 2004-08-11 06:18:20
     Query page      Enter new bug
Bug#: 316   Hardware:   Reporter: Jan D. <jan.h.d@swipnet.se>
Host: Target: Build:
Product:     Add CC:
Component:   Version:   CC:
Remove selected CCs
Status: RESOLVED   Priority:  
Resolution: FIXED   Severity:  
Assigned To: GOTO Masanori <gotom@debian.or.jp>   Target Milestone:  
Flags: Requestee:
  backport ()
  examined ()
  testsuite ()
Summary:
Keywords:

Attachment Description Type Created Actions
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 316 depends on: Show dependency tree
Show dependency graph
Bug 316 blocks:

Additional Comments:


Leave as RESOLVED FIXED
Reopen bug
Mark bug as VERIFIED

View Bug Activity   |   Format For Printing


Description:   Last confirmed: 0000-00-00 00:00 Opened: 2004-08-10 10:09
Glibc CVS checked out at 12:02, 10 Aug, 2004.

Configure command:
% ../glibc-2.3.3/configure --prefix=/usr --enable-add-ons=nptl --with-tls

% gcc -v
Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/specs
Configured with: ../gcc-3.4.1/configure --prefix=/usr --enable-shared
--with-gnu-as --with-gnu-ld --enable-threads
Thread model: posix
gcc version 3.4.1

% ld -v
GNU ld version 2.15.90.0.1.1 20040303
Host type: i686-pc-linux-gnu
System: Linux gaffa 2.6.7 #11 Sat Jul 24 00:06:03 CEST 2004 i686 unknown unknown
GNU/Linux
Architecture: i686

% as -v
GNU assembler version 2.15.90.0.1.1 (i386-redhat-linux-gnu) using BFD version
2.15.90.0.1.1 20040303

% /lib/libc.so.6 
GNU C Library stable release version 2.3.2, by Roland McGrath et al.
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 3.2.2.
Compiled on a Linux 2.4.19 system on 2003-03-29.
Available extensions:
        GNU libio by Per Bothner
        crypt add-on version 2.1 by Michael Glad and others
        linuxthreads-0.10 by Xavier Leroy
        BIND-8.2.3-T5B
        libthread_db work sponsored by Alpha Processor Inc
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Report bugs using the `glibcbug' script to <bugs@gnu.org>.

Description:
	When compiling I get these errors:

gcc argp-fmtstream.c -c -std=gnu99 -O2 -Wall -Winline -Wstrict-prototypes -Wwrit
e-strings -g -mpreferred-stack-boundary=2  -fexceptions   -I../include -I. -I/ho
me/jhd/build/obj-cvs/argp -I.. -I../libio -I../nptl -I/home/jhd/build/obj-cvs -I
../sysdeps/i386/elf -I../nptl/sysdeps/unix/sysv/linux/i386/i686 -I../nptl/sysdep
s/unix/sysv/linux/i386 -I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthre
ad -I../sysdeps/pthread -I../nptl/sysdeps/unix/sysv -I../nptl/sysdeps/unix -I../
nptl/sysdeps/i386/i686 -I../nptl/sysdeps/i386 -I../sysdeps/unix/sysv/linux/i386/
i686 -I../sysdeps/unix/sysv/linux/i386 -I../sysdeps/unix/sysv/linux -I../sysdeps
/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I..
/sysdeps/unix/sysv/i386/i686 -I../sysdeps/unix/sysv/i386 -I../sysdeps/unix/sysv 
-I../sysdeps/unix/i386/i686 -I../sysdeps/unix/i386 -I../sysdeps/unix -I../sysdep
s/posix -I../sysdeps/i386/i686/fpu -I../sysdeps/i386/i686 -I../sysdeps/i386/i486
 -I../nptl/sysdeps/i386/i486 -I../sysdeps/i386/fpu -I../sysdeps/i386 -I../sysdep
s/wordsize-32 -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysd
eps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/ge
neric -I /lib/modules/2.6.7/build/include -D_LIBC_REENTRANT -D_LIBC_REENTRANT -i
nclude ../include/libc-symbols.h       -o /home/jhd/build/obj-cvs/argp/argp-fmts
tream.o -MD -MP -MF /home/jhd/build/obj-cvs/argp/argp-fmtstream.o.dt -MT /home/j
hd/build/obj-cvs/argp/argp-fmtstream.o
argp-fmtstream.c: In function `__argp_fmtstream_free':
argp-fmtstream.c:109: error: ogiltiga operander till binär -
argp-fmtstream.c: In function `__argp_fmtstream_update':
argp-fmtstream.c:302: error: ogiltiga operander till binär -
argp-fmtstream.c: In function `__argp_fmtstream_ensure':
argp-fmtstream.c:371: error: ogiltiga operander till binär -

The macro for fwrite_unlocked in libio/bits/stdio.h fails to put its argument n
within parantesis at the penultimate line:

...
                        /* Evaluate all parameters once.  */                  \
                     ? ((void) (ptr), (void) (stream), (void) (size),         \
                        (size_t) n)                                           \
                     : fwrite_unlocked (ptr, size, n, stream))))

so (size_t) n gets expanded to 
  (size_t) fs->p - fs->buf
which turns into a binary - with incompatible operands.

------- Additional Comment #1 From Jan D. 2004-08-10 10:18 -------
Sorry for the swedish error messages, "ogiltiga operander till binär -" means
"illegal operands to binary -"


------- Additional Comment #2 From Jakub Jelinek 2004-08-10 12:36 -------
http://sources.redhat.com/ml/libc-hacker/2004-08/msg00026.html

------- Additional Comment #3 From Jakub Jelinek 2004-08-10 17:24 -------
*** Bug 318 has been marked as a duplicate of this bug. ***

------- Additional Comment #4 From cvs-commit@gcc.gnu.org 2004-08-10 18:01 -------
Subject: Bug 316

CVSROOT:	/cvs/glibc
Module name:	libc
Changes by:	roland@sources.redhat.com	2004-08-10 18:01:29

Modified files:
	stdio-common   : Makefile 
	libio/bits     : stdio.h 
Added files:
	stdio-common   : tst-unlockedio.c 

Log message:
	2004-08-10  Jakub Jelinek  <jakub@redhat.com>
	
	* libio/bits/stdio.h (fread_unlocked): Cast 0 to (size_t).
	(fwrite_unlocked): When checking if size * n is <= 8, cast each
	argument to size_t individually.  Cast n to (void) instead of
	(size_t), surround with (), return (size_t) 0 if one of n or size
	is 0.  [BZ #316]
	* stdio-common/Makefile (tests): Add tst-unlockedio.
	* stdio-common/tst-unlockedio.c: New test.

Patches:
http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/stdio-common/tst-unlockedio.c.diff?cvsroot=glibc&r1=NONE&r2=1.1
http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/stdio-common/Makefile.diff?cvsroot=glibc&r1=1.89&r2=1.90
http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/libio/bits/stdio.h.diff?cvsroot=glibc&r1=1.10&r2=1.11


------- Additional Comment #5 From Jakub Jelinek 2004-08-11 06:07 -------
Fixed in CVS.

------- Additional Comment #6 From Jakub Jelinek 2004-08-11 06:18 -------
Argh, meant to close this right away.

     Query page      Enter new bug
Actions: New | Query | bug # | Reports | Requests   New Account | Log In