[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#203412: libc6-dev: _XOPEN_VERSION is never set to 600



Package: libc6-dev
Version: 2.3.2-1
Severity: normal

[ If I downgraded to sid, I am sure that I would find this bug there,
  too. Please don't just tag this experimental and forget about it. ]

Basically, the problem is, when compiling a program with the following
compiler flags

  -D_POSIX_SOURCE=200112L -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600
  -D_ISOC99_SOURCE -U_GNU_SOURCE

the program does not set _XOPEN_VERSION to 600. I have included
unistd.h, which includes features.h. In unistd.h, _POSIX_VERSION is set
to 200112L and _XOPEN_UNIX is set to 1. SUSv3 [0] states that:

  The following symbolic constant shall be defined only if the
  implementation supports the XSI option; see XSI Conformance.
  
    _XOPEN_VERSION
    [XSI] 
    Integer value indicating version of the X/Open Portability Guide to
	which the implementation conforms. The value shall be 600. 

It furthermore states [0]:

  _XOPEN_UNIX
    [XSI] 
     The implementation supports the XSI extension.

Therefore, if _XOPEN_UNIX is defined, as it is, unconditionally to 1,
then at least at some time _XOPEN_VERSION must be defined to 600.

The only place I can find that _XOPEN_VERSION is mentioned is unistd.h,
which has the following snippet of code:

  /* X/Open version number to which the library conforms.  It is selectable.  */
  #ifdef __USE_UNIX98
  # define _XOPEN_VERSION	500
  #else
  # define _XOPEN_VERSION	4
  #endif

There is a complicated set of preprocessor directives in features.h that
chooses appropriately; for _XOPEN_SOURCE=600, _XOPEN_VERSION=500, not
600. Oops.

If you actually want the code that caused this problem, I'll be happy to
post it somewhere.


[0] http://www.opengroup.org/onlinepubs/007904975/basedefs/unistd.h.html


-- System Information:
Debian Release: testing/unstable
Architecture: i386
Kernel: Linux stonewall 2.4.21-3-k7 #1 Sun Jul 20 19:23:36 EST 2003 i686
Locale: LANG=C, LC_CTYPE=C

Versions of packages libc6-dev depends on:
ii  libc6                         2.3.2-1    GNU C Library: Shared libraries an

-- no debconf information


-- 
Brian M. Carlson <sandals@crustytoothpaste.ath.cx> 0x560553e7
"Let us think the unthinkable, let us do the undoable. Let us prepare
 to grapple with the ineffable itself, and see if we may not eff it
 after all." --Douglas Adams

Attachment: pgpK9VjzRS_9v.pgp
Description: PGP signature


Reply to: