← Back to team overview

touch-packages team mailing list archive

[Bug 1438797] [NEW] [ARM] stdint.h should not rely on wchar_t being defined

 

Public bug reported:

This patch to eglibc from debian (which is applied for Ubuntu 12.04):
  ( https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=arm-eabi-wchar.patch;att=1;bug=444580  )

Gives this definition for __WCHAR_MAX in bits/wchar.h

#define __WCHAR_MAX     ( (wchar_t) - 1 )

This then propagates to WCHAR_MAX from stdint.h:

#  define WCHAR_MAX             __WCHAR_MAX

The problem is that this introduces a requirement that stddef.h must be
included before stdint.h in order to make the definition of wchar_t
available.

In a conforming C implimentation, this should be valid:

#include "stdint.h"
#include "stdio.h"

unsigned int
foo (void)
{
  return (unsigned int) WCHAR_MAX;
}

Currently this will report:

gcc foo.c 
foo.c: In function ‘foo’:
foo.c:7:25: error: ‘wchar_t’ undeclared (first use in this function)
foo.c:7:25: note: each undeclared identifier is reported only once for each function it appears in

The easiest fix would be to take the more modern, portable definition of
WCHAR_MAX/__WCHAR_MAX from Ubuntu 14.04's glibc.

** Affects: eglibc (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to eglibc in Ubuntu.
https://bugs.launchpad.net/bugs/1438797

Title:
  [ARM] stdint.h should not rely on wchar_t being defined

Status in eglibc package in Ubuntu:
  New

Bug description:
  This patch to eglibc from debian (which is applied for Ubuntu 12.04):
    ( https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=arm-eabi-wchar.patch;att=1;bug=444580  )

  Gives this definition for __WCHAR_MAX in bits/wchar.h

  #define __WCHAR_MAX     ( (wchar_t) - 1 )

  This then propagates to WCHAR_MAX from stdint.h:

  #  define WCHAR_MAX             __WCHAR_MAX

  The problem is that this introduces a requirement that stddef.h must
  be included before stdint.h in order to make the definition of wchar_t
  available.

  In a conforming C implimentation, this should be valid:

  #include "stdint.h"
  #include "stdio.h"

  unsigned int
  foo (void)
  {
    return (unsigned int) WCHAR_MAX;
  }

  Currently this will report:

  gcc foo.c 
  foo.c: In function ‘foo’:
  foo.c:7:25: error: ‘wchar_t’ undeclared (first use in this function)
  foo.c:7:25: note: each undeclared identifier is reported only once for each function it appears in

  The easiest fix would be to take the more modern, portable definition
  of WCHAR_MAX/__WCHAR_MAX from Ubuntu 14.04's glibc.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/1438797/+subscriptions


Follow ups

References