Bug 15500 - [arm] ARM __aeabi_localeconv incorrect
Summary: [arm] ARM __aeabi_localeconv incorrect
Status: NEW
Alias: None
Product: glibc
Classification: Unclassified
Component: locale (show other bugs)
Version: 2.17
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-05-20 15:23 UTC by Joseph Myers
Modified: 2015-08-27 22:14 UTC (History)
3 users (show)

See Also:
Host: arm*-*-*
Target:
Build:
Last reconfirmed:
fweimer: security-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Joseph Myers 2013-05-20 15:23:00 UTC
ARM glibc's __aeabi_localeconv does:

struct lconv *
__aeabi_localeconv (void)
{
  return __localeconv ();
}

However, glibc orders the C99 fields in struct lconv thus:

  char int_p_cs_precedes;
  char int_p_sep_by_space;
  char int_n_cs_precedes;
  char int_n_sep_by_space;
  char int_p_sign_posn;
  char int_n_sign_posn;

but the __aeabi_lconv structure (defined in CLIBABI, ARM IHI 0039) has them ordered thus:

  char int_p_cs_precedes;
  char int_n_cs_precedes;
  char int_p_sep_by_space;
  char int_n_sep_by_space;
  char int_p_sign_posn;
  char int_n_sign_posn;

and so a conversion layer is needed to swap int_p_sep_by_space and int_n_cs_precedes.