* sysdeps/unix/sysv/linux/x86_64/ucontext_i.h: Fix values for
	oFPREGS, oSIGMASK, oFPREGSMEM, and oMXCSR.
	Patch by Nicholas Miell <nmiell@comcast.net>.
This commit is contained in:
Ulrich Drepper 2005-10-14 17:20:58 +00:00
parent ce982312e8
commit 3394d6320b
9 changed files with 320 additions and 7 deletions

View File

@ -1,5 +1,10 @@
2005-10-14 Ulrich Drepper <drepper@redhat.com>
[BZ #1468]
* sysdeps/unix/sysv/linux/x86_64/ucontext_i.h: Fix values for
oFPREGS, oSIGMASK, oFPREGSMEM, and oMXCSR.
Patch by Nicholas Miell <nmiell@comcast.net>.
[BZ #1460]
* time/asctime.c (asctime_internal): New function, derived from
asctime_r. Takes additional parameter which is the buffer length.

View File

@ -1,3 +1,10 @@
2005-10-14 Ulrich Drepper <drepper@redhat.com>
[BZ #870]
* locales/ku_TR: New file.
* SUPPORTED (SUPPORTED-LOCALES): Add ku_TR.ISO-8859-9 and
ku_TR.UTF-8.
2005-10-13 Ulrich Drepper <drepper@redhat.com>
[BZ #533]

View File

@ -226,6 +226,8 @@ km_KH/UTF-8 \
kn_IN/UTF-8 \
ko_KR.EUC-KR/EUC-KR \
ko_KR.UTF-8/UTF-8 \
ku_TR.UTF-8/UTF-8 \
ku_TR/ISO-8859-9 \
kw_GB.UTF-8/UTF-8 \
kw_GB/ISO-8859-1 \
ky_KG/UTF-8 \

215
localedata/locales/ku_TR Normal file
View File

@ -0,0 +1,215 @@
escape_char /
comment_char %
% Kurdish (latin) language locale for Turkey
% Source: Kader DILSIZ
% Contact: Kader DILSIZ, Pablo Saratxaga
% Email: kader@ikader.com, pablo@mandrakesoft.com
% Tel:
% Fax:
% Language: ku
% Territory: TR
% Revision: 0.1
% Date: 2003-07-27
% Users: general
% Charset: UTF-8
% Distribution and use is free, also
% for commercial purposes.
% History:
LC_IDENTIFICATION
title "Kurdish (latin) locale for Turkey"
source "Kader DILSIZ"
address ""
contact "Kader DILSIZ, Pablo Saratxaga"
email "kader@ikader.com, pablo@mandrakesoft.com"
tel ""
fax ""
language "Kurdish"
territory "Turkey"
revision "0.1"
date "2003-07-27"
%
category "ku_TR:2000";LC_IDENTIFICATION
category "ku_TR:2000";LC_CTYPE
category "ku_TR:2000";LC_COLLATE
category "ku_TR:2000";LC_TIME
category "ku_TR:2000";LC_NUMERIC
category "ku_TR:2000";LC_MONETARY
category "ku_TR:2000";LC_MESSAGES
category "ku_TR:2000";LC_PAPER
category "ku_TR:2000";LC_NAME
category "ku_TR:2000";LC_ADDRESS
category "ku_TR:2000";LC_TELEPHONE
category "ku_TR:2000";LC_MEASUREMENT
END LC_IDENTIFICATION
LC_CTYPE
copy "tr_TR"
END LC_CTYPE
LC_COLLATE
copy "iso14651_t1"
%% a b c c, d e e> f g h i i> j k l m n o p q r s s, t u u> v w x y z
collating-symbol <c,>
collating-symbol <e/>>
collating-symbol <i.>
collating-symbol <i/>>
collating-symbol <s,>
collating-symbol <u/>>
reorder-after <c>
<c,>
reorder-after <e>
<e/>>
reorder-after <h>
<i>
<i.>
<i/>>
reorder-after <s>
<s,>
reorder-after <u>
<u/>>
reorder-after <U0063>
<U00E7> <c,>;<CDI>;<MIN>;IGNORE
reorder-after <U0043>
<U00C7> <c,>;<CDI>;<CAP>;IGNORE
reorder-after <U0065>
<U00EA> <e/>>;<CIR>;<MIN>;IGNORE
reorder-after <U0045>
<U00CA> <e/>>;<CIR>;<CAP>;IGNORE
reorder-after <U0068>
<U0131> <i>;<BAS>;<MIN>;IGNORE
<U0069> <i.>;<PCT>;<MIN>;IGNORE
<U00EE> <i/>>;<CIR>;<MIN>;IGNORE
reorder-after <U0048>
<U0049> <i>;<BAS>;<CAP>;IGNORE
<U0130> <i.>;<PCT>;<CAP>;IGNORE
<U00CE> <i/>>;<CIR>;<CAP>;IGNORE
reorder-after <U0073>
<U015F> <s,>;<CDI>;<MIN>;IGNORE
reorder-after <U0053>
<U015E> <s,>;<CDI>;<CAP>;IGNORE
reorder-after <U0075>
<U00FB> <u/>>;<CIR>;<MIN>;IGNORE
reorder-after <U0055>
<U00DB> <u/>>;<CIR>;<CAP>;IGNORE
reorder-end
END LC_COLLATE
LC_MONETARY
copy "tr_TR"
END LC_MONETARY
LC_NUMERIC
copy "tr_TR"
END LC_NUMERIC
LC_TIME
abday "<U0079><U00EA><U006B>";"<U0064><U0075><U0073>";/
"<U0073><U00EA><U0073>";"<U00E7><U0061><U0072>";/
"<U0070><U00EA><U006E>";"<U00EE><U006E><U00EE>";/
"<U0073><U0065><U0070>"
day "<U0079><U00EA><U006B><U0073><U00EA><U006D>";/
"<U0064><U0075><U0073><U00EA><U006D>";/
"<U0073><U00EA><U0073><U00EA><U006D>";/
"<U00E7><U0061><U0072><U0073><U00EA><U006D>";/
"<U0070><U00EA><U006E><U0063><U0073><U00EA><U006D>";/
"<U00EE><U006E><U00EE>";/
"<U0073><U0065><U0070><U0074>"
abmon "<U00C7><U0069><U006C>";"<U0053><U0069><U0062>";/
"<U0041><U0064><U0061>";"<U004E><U00EE><U0073>";/
"<U0047><U0075><U006C>";"<U0048><U0065><U007A>";/
"<U0054><U00EE><U0072>";"<U0054><U0065><U0062>";/
"<U00CE><U006C><U006F>";"<U0043><U006F><U0074>";/
"<U004D><U0069><U006A>";"<U004B><U0061><U006E>"
mon "<U00C7><U0069><U006C><U0065>";/
"<U0053><U0069><U0062><U0061><U0074>";/
"<U0041><U0064><U0061><U0072>";/
"<U004E><U00EE><U0073><U0061><U006E>";/
"<U0047><U0075><U006C><U0061><U006E>";/
"<U0048><U0065><U007A><U00EE><U0072><U0061><U006E>";/
"<U0054><U00EE><U0072><U006D><U0065><U0068>";/
"<U0054><U0065><U0062><U0061><U0078>";/
"<U00CE><U006C><U006F><U006E>";/
"<U0043><U006F><U0074><U006D><U0065><U0068>";/
"<U004D><U0069><U006A><U0064><U0061><U0072>";/
"<U004B><U0061><U006E><U00FB><U006E>"
% format: %A %d %B %Y %T %Z
d_t_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
% format: %d/%m/%Y
d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
t_fmt "<U0025><U0054>"
am_pm "";""
t_fmt_ampm ""
% format: %A %d %B %Y
date_fmt "<U0025><U0041><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U0025><U0059>"
END LC_TIME
LC_MESSAGES
yesstr "<U0065><U0072><U00EA>"
nostr "<U006E><U00E2>"
% eEdDyY
yesexpr "<U005E><U005B><U0065><U0045><U0064><U0044><U0079><U0059><U005D><U002E><U002A>"
% nN
noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
END LC_MESSAGES
LC_PAPER
copy "tr_TR"
END LC_PAPER
LC_TELEPHONE
copy "tr_TR"
END LC_TELEPHONE
LC_MEASUREMENT
copy "tr_TR"
END LC_MEASUREMENT
LC_NAME
% format: %d%t%g%t%m%t%f
name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
<U0025><U006D><U0025><U0074><U0025><U0066>"
% TODO
% Sayýn
name_gen "<U0053><U0061><U0079><U0131><U006E>"
% "M."
name_mr "<U004D><U002E>"
% "Jne"
name_mrs "<U004A><U006E><U0065>"
name_ms "<U004A><U006E><U0065>"
% "Kc,k"
name_miss "<U004B><U00E7><U006B>"
END LC_NAME
LC_ADDRESS
postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
<U004E><U0025><U0063><U0025><U004E>"
% TODO
country_name "<U0054><U0075><U0072><U006B><U0065><U0079>"
country_post "TR"
country_ab2 "TR"
country_ab3 "TUR"
country_num 792
country_isbn 975
country_car "TR"
% "kurdi"
lang_name "<U006B><U0075><U0072><U0064><U0069>"
lang_ab "ku"
lang_term "kur"
lang_lib "kur"
END LC_ADDRESS

View File

@ -63,7 +63,8 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \
test-canon test-canon2 tst-strtoll tst-environ \
tst-xpg-basename tst-random tst-random2 tst-bsearch \
tst-limits tst-rand48 bug-strtod tst-setcontext \
test-a64l tst-qsort tst-system testmb2 bug-strtod2
test-a64l tst-qsort tst-system testmb2 bug-strtod2 \
tst-ucontext-off
include ../Makeconfig

35
stdlib/tst-ucontext-off.c Normal file
View File

@ -0,0 +1,35 @@
#include <stddef.h>
#include <stdio.h>
#include <sys/ucontext.h>
#include <ucontext_i.h>
static int
do_test (void)
{
int nerrors = 0;
int ntests = 0;
#define TEST(member, val) \
do { \
if (offsetof (struct ucontext, member) != val) \
{ \
printf ("offsetof(%s) = %zu, %s = %zu\n", \
#member, offsetof (struct ucontext, member), \
#val, (size_t) val); \
++nerrors; \
} \
++ntests; \
} while (0)
#ifdef TESTS
TESTS
#endif
printf ("%d errors in %d tests\n", nerrors, ntests);
return nerrors != 0;
}
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"

View File

@ -1,6 +1,6 @@
/* Offsets and other constants needed in the *context() function
implementation.
Copyright (C) 2001 Free Software Foundation, Inc.
Copyright (C) 2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -39,3 +39,23 @@
#define oFPREGS 96
#define oSIGMASK 108
#define oFPREGSMEM 236
/* Tests run in stdlib/tst-ucontext-off. */
#define TESTS \
TEST (uc_link, oLINK); \
TEST (uc_stack.ss_sp, oSS_SP); \
TEST (uc_stack.ss_size, oSS_SIZE); \
TEST (uc_mcontext.gregs[REG_GS], oGS); \
TEST (uc_mcontext.gregs[REG_FS], oFS); \
TEST (uc_mcontext.gregs[REG_EDI], oEDI); \
TEST (uc_mcontext.gregs[REG_ESI], oESI); \
TEST (uc_mcontext.gregs[REG_EBP], oEBP); \
TEST (uc_mcontext.gregs[REG_ESP], oESP); \
TEST (uc_mcontext.gregs[REG_EBX], oEBX); \
TEST (uc_mcontext.gregs[REG_EDX], oEDX); \
TEST (uc_mcontext.gregs[REG_ECX], oECX); \
TEST (uc_mcontext.gregs[REG_EAX], oEAX); \
TEST (uc_mcontext.gregs[REG_EIP], oEIP); \
TEST (uc_mcontext.fpregs, oFPREGS); \
TEST (uc_sigmask, oSIGMASK); \
TEST (__fpregs_mem, oFPREGSMEM);

View File

@ -1,6 +1,6 @@
/* Offsets and other constants needed in the *context() function
implementation for Linux/x86-64.
Copyright (C) 2002 Free Software Foundation, Inc.
Copyright (C) 2002, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -41,7 +41,29 @@
#define oRAX 144
#define oRCX 152
#define oRIP 168
#define oFPREGS 208
#define oSIGMASK 280
#define oFPREGSMEM 408
#define oMXCSR 432
#define oFPREGS 224
#define oSIGMASK 296
#define oFPREGSMEM 424
#define oMXCSR 448
/* Tests run in stdlib/tst-ucontext-off. */
#define TESTS \
TEST (uc_mcontext.gregs[REG_RBP], oRBP); \
TEST (uc_mcontext.gregs[REG_RSP], oRSP); \
TEST (uc_mcontext.gregs[REG_RBX], oRBX); \
TEST (uc_mcontext.gregs[REG_R8], oR8); \
TEST (uc_mcontext.gregs[REG_R9], oR9); \
TEST (uc_mcontext.gregs[REG_R12], oR12); \
TEST (uc_mcontext.gregs[REG_R13], oR13); \
TEST (uc_mcontext.gregs[REG_R14], oR14); \
TEST (uc_mcontext.gregs[REG_R15], oR15); \
TEST (uc_mcontext.gregs[REG_RDI], oRDI); \
TEST (uc_mcontext.gregs[REG_RSI], oRSI); \
TEST (uc_mcontext.gregs[REG_RDX], oRDX); \
TEST (uc_mcontext.gregs[REG_RAX], oRAX); \
TEST (uc_mcontext.gregs[REG_RCX], oRCX); \
TEST (uc_mcontext.gregs[REG_RIP], oRIP); \
TEST (uc_mcontext.fpregs, oFPREGS); \
TEST (uc_sigmask, oSIGMASK); \
TEST (__fpregs_mem, oFPREGSMEM); \
TEST (__fpregs_mem.mxcsr, oMXCSR);

View File

@ -13,12 +13,18 @@ do_test (void)
tp->tm_year = 10000 - 1900;
char buf[1000];
errno = 0;
buf[26] = '\xff';
char *s = asctime_r (tp, buf);
if (s != NULL || errno != EOVERFLOW)
{
puts ("asctime_r did not fail correctly");
result = 1;
}
if (buf[26] != '\xff')
{
puts ("asctime_r overwrote 27th byte in buffer");
result = 1;
}
return result;
}