mirror of
git://sourceware.org/git/glibc.git
synced 2025-02-17 13:00:43 +08:00
Update.
2001-02-06 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: First attempt to fix the broken code. Patch by Jes Sorensen.
This commit is contained in:
parent
5c0111e9aa
commit
672fd41bbc
@ -1,3 +1,8 @@
|
|||||||
|
2001-02-06 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/ia64/pt-initfini.c: First attempt to fix the
|
||||||
|
broken code. Patch by Jes Sorensen.
|
||||||
|
|
||||||
2001-02-06 Andreas Jaeger <aj@suse.de>
|
2001-02-06 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
* sysdeps/pthread/pthread.h: Move __pthread_initialize from here
|
* sysdeps/pthread/pthread.h: Move __pthread_initialize from here
|
||||||
|
@ -60,13 +60,11 @@ _init:
|
|||||||
st8 [r12] = gp, -16
|
st8 [r12] = gp, -16
|
||||||
br.call.sptk.many b0 = __pthread_initialize_minimal# ;;
|
br.call.sptk.many b0 = __pthread_initialize_minimal# ;;
|
||||||
;;
|
;;
|
||||||
cmp.eq p6, p7 = 0, r15
|
cmp.ne p6, p0 = 0, r15
|
||||||
(p6) br.cond.dptk .L5
|
|
||||||
|
|
||||||
br.call.sptk.many b0 = __gmon_start__# ;;
|
(p6) br.call.sptk.many b0 = __gmon_start__# ;;
|
||||||
adds r12 = 16, r12
|
adds r12 = 16, r12
|
||||||
;;
|
;;
|
||||||
.L5:
|
|
||||||
ld8 gp = [r12]
|
ld8 gp = [r12]
|
||||||
;;
|
;;
|
||||||
.align 16
|
.align 16
|
||||||
|
64
posix/bug-regex1.c
Normal file
64
posix/bug-regex1.c
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/* Test case by Jim Meyering <jim@meyering.net>. */
|
||||||
|
#include <locale.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <regex.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
struct re_pattern_buffer regex;
|
||||||
|
struct re_registers regs;
|
||||||
|
const char *s;
|
||||||
|
int match;
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
memset (®ex, '\0', sizeof (regex));
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "de_DE.ISO-8859-1");
|
||||||
|
fwide (stdout, -1);
|
||||||
|
|
||||||
|
re_set_syntax (RE_SYNTAX_POSIX_EGREP | RE_DEBUG);
|
||||||
|
|
||||||
|
puts ("in C locale");
|
||||||
|
setlocale (LC_ALL, "C");
|
||||||
|
s = re_compile_pattern ("[anù]*n", 7, ®ex);
|
||||||
|
if (s != NULL)
|
||||||
|
{
|
||||||
|
puts ("re_compile_pattern return non-NULL value");
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
match = re_match (®ex, "an", 2, 0, ®s);
|
||||||
|
if (match != 2)
|
||||||
|
{
|
||||||
|
printf ("re_match returned %d, expected 2\n", match);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
puts (" -> OK");
|
||||||
|
}
|
||||||
|
|
||||||
|
puts ("in de_DE.ISO-8859-1 locale");
|
||||||
|
setlocale (LC_ALL, "de_DE.ISO-8859-1");
|
||||||
|
s = re_compile_pattern ("[anù]*n", 7, ®ex);
|
||||||
|
if (s != NULL)
|
||||||
|
{
|
||||||
|
puts ("re_compile_pattern return non-NULL value");
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
match = re_match (®ex, "an", 2, 0, ®s);
|
||||||
|
if (match != 2)
|
||||||
|
{
|
||||||
|
printf ("re_match returned %d, expected 2\n", match);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
puts (" -> OK");
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
@ -62,7 +62,13 @@
|
|||||||
# define US_CHAR_TYPE wchar_t/* unsigned character type */
|
# define US_CHAR_TYPE wchar_t/* unsigned character type */
|
||||||
# define COMPILED_BUFFER_VAR wc_buffer
|
# define COMPILED_BUFFER_VAR wc_buffer
|
||||||
# define OFFSET_ADDRESS_SIZE 1 /* the size which STORE_NUMBER macro use */
|
# define OFFSET_ADDRESS_SIZE 1 /* the size which STORE_NUMBER macro use */
|
||||||
# define PUT_CHAR(c) printf ("%C", c) /* Should we use wide stream?? */
|
# define PUT_CHAR(c) \
|
||||||
|
do { \
|
||||||
|
if (MC_CUR_MAX == 1) \
|
||||||
|
putchar (c); \
|
||||||
|
else \
|
||||||
|
printf ("%C", (wint_t) c); /* Should we use wide stream?? */ \
|
||||||
|
} while (0)
|
||||||
# define TRUE 1
|
# define TRUE 1
|
||||||
# define FALSE 0
|
# define FALSE 0
|
||||||
#else
|
#else
|
||||||
@ -754,7 +760,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
while (p < pend)
|
while (p < pend)
|
||||||
{
|
{
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("%t:\t", p - start);
|
printf ("%td:\t", p - start);
|
||||||
#else
|
#else
|
||||||
printf ("%ld:\t", (long int) (p - start));
|
printf ("%ld:\t", (long int) (p - start));
|
||||||
#endif
|
#endif
|
||||||
@ -782,7 +788,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
printf ("/exactn_bin/%d", mcnt);
|
printf ("/exactn_bin/%d", mcnt);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
printf("/%x", *p++);
|
printf("/%lx", (long int) *p++);
|
||||||
}
|
}
|
||||||
while (--mcnt);
|
while (--mcnt);
|
||||||
break;
|
break;
|
||||||
@ -790,16 +796,16 @@ print_partial_compiled_pattern (start, end)
|
|||||||
|
|
||||||
case start_memory:
|
case start_memory:
|
||||||
mcnt = *p++;
|
mcnt = *p++;
|
||||||
printf ("/start_memory/%d/%d", mcnt, *p++);
|
printf ("/start_memory/%d/%ld", mcnt, (long int) *p++);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case stop_memory:
|
case stop_memory:
|
||||||
mcnt = *p++;
|
mcnt = *p++;
|
||||||
printf ("/stop_memory/%d/%d", mcnt, *p++);
|
printf ("/stop_memory/%d/%ld", mcnt, (long int) *p++);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case duplicate:
|
case duplicate:
|
||||||
printf ("/duplicate/%d", *p++);
|
printf ("/duplicate/%ld", (long int) *p++);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case anychar:
|
case anychar:
|
||||||
@ -817,7 +823,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
p += 5;
|
p += 5;
|
||||||
length = *workp++; /* the length of char_classes */
|
length = *workp++; /* the length of char_classes */
|
||||||
for (i=0 ; i<length ; i++)
|
for (i=0 ; i<length ; i++)
|
||||||
printf("[:%x:]", *p++);
|
printf("[:%lx:]", (long int) *p++);
|
||||||
length = *workp++; /* the length of collating_symbol */
|
length = *workp++; /* the length of collating_symbol */
|
||||||
for (i=0 ; i<length ;)
|
for (i=0 ; i<length ;)
|
||||||
{
|
{
|
||||||
@ -841,11 +847,17 @@ print_partial_compiled_pattern (start, end)
|
|||||||
{
|
{
|
||||||
wchar_t range_start = *p++;
|
wchar_t range_start = *p++;
|
||||||
wchar_t range_end = *p++;
|
wchar_t range_end = *p++;
|
||||||
printf("%C-%C", range_start, range_end);
|
if (MB_CUR_MAX == 1)
|
||||||
|
printf("%c-%c", (char) range_start, (char) range_end);
|
||||||
|
else
|
||||||
|
printf("%C-%C", (wint_t) range_start, (wint_t) range_end);
|
||||||
}
|
}
|
||||||
length = *workp++; /* the length of char */
|
length = *workp++; /* the length of char */
|
||||||
for (i=0 ; i<length ; i++)
|
for (i=0 ; i<length ; i++)
|
||||||
printf("%C", *p++);
|
if (MB_CUR_MAX == 1)
|
||||||
|
putchar (*p++);
|
||||||
|
else
|
||||||
|
printf("%C", (wint_t) *p++);
|
||||||
putchar (']');
|
putchar (']');
|
||||||
#else
|
#else
|
||||||
register int c, last = -100;
|
register int c, last = -100;
|
||||||
@ -900,7 +912,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
case on_failure_jump:
|
case on_failure_jump:
|
||||||
extract_number_and_incr (&mcnt, &p);
|
extract_number_and_incr (&mcnt, &p);
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("/on_failure_jump to %t", p + mcnt - start);
|
printf ("/on_failure_jump to %td", p + mcnt - start);
|
||||||
#else
|
#else
|
||||||
printf ("/on_failure_jump to %ld", (long int) (p + mcnt - start));
|
printf ("/on_failure_jump to %ld", (long int) (p + mcnt - start));
|
||||||
#endif
|
#endif
|
||||||
@ -909,7 +921,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
case on_failure_keep_string_jump:
|
case on_failure_keep_string_jump:
|
||||||
extract_number_and_incr (&mcnt, &p);
|
extract_number_and_incr (&mcnt, &p);
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("/on_failure_keep_string_jump to %t", p + mcnt - start);
|
printf ("/on_failure_keep_string_jump to %td", p + mcnt - start);
|
||||||
#else
|
#else
|
||||||
printf ("/on_failure_keep_string_jump to %ld",
|
printf ("/on_failure_keep_string_jump to %ld",
|
||||||
(long int) (p + mcnt - start));
|
(long int) (p + mcnt - start));
|
||||||
@ -919,7 +931,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
case dummy_failure_jump:
|
case dummy_failure_jump:
|
||||||
extract_number_and_incr (&mcnt, &p);
|
extract_number_and_incr (&mcnt, &p);
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("/dummy_failure_jump to %t", p + mcnt - start);
|
printf ("/dummy_failure_jump to %td", p + mcnt - start);
|
||||||
#else
|
#else
|
||||||
printf ("/dummy_failure_jump to %ld", (long int) (p + mcnt - start));
|
printf ("/dummy_failure_jump to %ld", (long int) (p + mcnt - start));
|
||||||
#endif
|
#endif
|
||||||
@ -932,7 +944,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
case maybe_pop_jump:
|
case maybe_pop_jump:
|
||||||
extract_number_and_incr (&mcnt, &p);
|
extract_number_and_incr (&mcnt, &p);
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("/maybe_pop_jump to %t", p + mcnt - start);
|
printf ("/maybe_pop_jump to %td", p + mcnt - start);
|
||||||
#else
|
#else
|
||||||
printf ("/maybe_pop_jump to %ld", (long int) (p + mcnt - start));
|
printf ("/maybe_pop_jump to %ld", (long int) (p + mcnt - start));
|
||||||
#endif
|
#endif
|
||||||
@ -941,7 +953,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
case pop_failure_jump:
|
case pop_failure_jump:
|
||||||
extract_number_and_incr (&mcnt, &p);
|
extract_number_and_incr (&mcnt, &p);
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("/pop_failure_jump to %t", p + mcnt - start);
|
printf ("/pop_failure_jump to %td", p + mcnt - start);
|
||||||
#else
|
#else
|
||||||
printf ("/pop_failure_jump to %ld", (long int) (p + mcnt - start));
|
printf ("/pop_failure_jump to %ld", (long int) (p + mcnt - start));
|
||||||
#endif
|
#endif
|
||||||
@ -950,7 +962,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
case jump_past_alt:
|
case jump_past_alt:
|
||||||
extract_number_and_incr (&mcnt, &p);
|
extract_number_and_incr (&mcnt, &p);
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("/jump_past_alt to %t", p + mcnt - start);
|
printf ("/jump_past_alt to %td", p + mcnt - start);
|
||||||
#else
|
#else
|
||||||
printf ("/jump_past_alt to %ld", (long int) (p + mcnt - start));
|
printf ("/jump_past_alt to %ld", (long int) (p + mcnt - start));
|
||||||
#endif
|
#endif
|
||||||
@ -959,7 +971,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
case jump:
|
case jump:
|
||||||
extract_number_and_incr (&mcnt, &p);
|
extract_number_and_incr (&mcnt, &p);
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("/jump to %t", p + mcnt - start);
|
printf ("/jump to %td", p + mcnt - start);
|
||||||
#else
|
#else
|
||||||
printf ("/jump to %ld", (long int) (p + mcnt - start));
|
printf ("/jump to %ld", (long int) (p + mcnt - start));
|
||||||
#endif
|
#endif
|
||||||
@ -970,7 +982,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
p1 = p + mcnt;
|
p1 = p + mcnt;
|
||||||
extract_number_and_incr (&mcnt2, &p);
|
extract_number_and_incr (&mcnt2, &p);
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("/succeed_n to %t, %d times", p1 - start, mcnt2);
|
printf ("/succeed_n to %td, %d times", p1 - start, mcnt2);
|
||||||
#else
|
#else
|
||||||
printf ("/succeed_n to %ld, %d times",
|
printf ("/succeed_n to %ld, %d times",
|
||||||
(long int) (p1 - start), mcnt2);
|
(long int) (p1 - start), mcnt2);
|
||||||
@ -989,7 +1001,7 @@ print_partial_compiled_pattern (start, end)
|
|||||||
p1 = p + mcnt;
|
p1 = p + mcnt;
|
||||||
extract_number_and_incr (&mcnt2, &p);
|
extract_number_and_incr (&mcnt2, &p);
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("/set_number_at location %t to %d", p1 - start, mcnt2);
|
printf ("/set_number_at location %td to %d", p1 - start, mcnt2);
|
||||||
#else
|
#else
|
||||||
printf ("/set_number_at location %ld to %d",
|
printf ("/set_number_at location %ld to %d",
|
||||||
(long int) (p1 - start), mcnt2);
|
(long int) (p1 - start), mcnt2);
|
||||||
@ -1055,14 +1067,14 @@ print_partial_compiled_pattern (start, end)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf ("?%d", *(p-1));
|
printf ("?%ld", (long int) *(p-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
putchar ('\n');
|
putchar ('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
printf ("%t:\tend of pattern.\n", p - start);
|
printf ("%td:\tend of pattern.\n", p - start);
|
||||||
#else
|
#else
|
||||||
printf ("%ld:\tend of pattern.\n", (long int) (p - start));
|
printf ("%ld:\tend of pattern.\n", (long int) (p - start));
|
||||||
#endif
|
#endif
|
||||||
@ -1909,7 +1921,7 @@ static reg_errcode_t compile_range _RE_ARGS ((unsigned int range_start,
|
|||||||
/* Make sure we have at least N more bytes of space in buffer. */
|
/* Make sure we have at least N more bytes of space in buffer. */
|
||||||
#ifdef MBS_SUPPORT
|
#ifdef MBS_SUPPORT
|
||||||
# define GET_BUFFER_SPACE(n) \
|
# define GET_BUFFER_SPACE(n) \
|
||||||
while (((unsigned long)b - (unsigned long)COMPILED_BUFFER_VAR \
|
while (((unsigned long)b - (unsigned long)COMPILED_BUFFER_VAR \
|
||||||
+ (n)*sizeof(CHAR_TYPE)) > bufp->allocated) \
|
+ (n)*sizeof(CHAR_TYPE)) > bufp->allocated) \
|
||||||
EXTEND_BUFFER ()
|
EXTEND_BUFFER ()
|
||||||
#else
|
#else
|
||||||
@ -1922,7 +1934,7 @@ static reg_errcode_t compile_range _RE_ARGS ((unsigned int range_start,
|
|||||||
#define BUF_PUSH(c) \
|
#define BUF_PUSH(c) \
|
||||||
do { \
|
do { \
|
||||||
GET_BUFFER_SPACE (1); \
|
GET_BUFFER_SPACE (1); \
|
||||||
*b++ = (US_CHAR_TYPE) (c); \
|
*b++ = (US_CHAR_TYPE) (c); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
@ -4153,7 +4165,7 @@ regex_compile (pattern, size, syntax, bufp)
|
|||||||
|
|
||||||
/* We have succeeded; set the length of the buffer. */
|
/* We have succeeded; set the length of the buffer. */
|
||||||
#ifdef MBS_SUPPORT
|
#ifdef MBS_SUPPORT
|
||||||
bufp->used = (int) b - (int) COMPILED_BUFFER_VAR;
|
bufp->used = (uintptr_t) b - (uintptr_t) COMPILED_BUFFER_VAR;
|
||||||
#else
|
#else
|
||||||
bufp->used = b - bufp->buffer;
|
bufp->used = b - bufp->buffer;
|
||||||
#endif
|
#endif
|
||||||
@ -5936,7 +5948,7 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
|
|||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
SET_REGS_MATCHED ();
|
SET_REGS_MATCHED ();
|
||||||
DEBUG_PRINT2 (" Matched `%d'.\n", *d);
|
DEBUG_PRINT2 (" Matched `%ld'.\n", (long int) *d);
|
||||||
d++;
|
d++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -6308,7 +6320,8 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
|
|||||||
matched within the group is recorded (in the internal
|
matched within the group is recorded (in the internal
|
||||||
registers data structure) under the register number. */
|
registers data structure) under the register number. */
|
||||||
case start_memory:
|
case start_memory:
|
||||||
DEBUG_PRINT3 ("EXECUTING start_memory %d (%d):\n", *p, p[1]);
|
DEBUG_PRINT3 ("EXECUTING start_memory %ld (%ld):\n",
|
||||||
|
(long int) *p, (long int) p[1]);
|
||||||
|
|
||||||
/* Find out if this group can match the empty string. */
|
/* Find out if this group can match the empty string. */
|
||||||
p1 = p; /* To send to group_match_null_string_p. */
|
p1 = p; /* To send to group_match_null_string_p. */
|
||||||
@ -6356,7 +6369,8 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
|
|||||||
arguments are the same as start_memory's: the register
|
arguments are the same as start_memory's: the register
|
||||||
number, and the number of inner groups. */
|
number, and the number of inner groups. */
|
||||||
case stop_memory:
|
case stop_memory:
|
||||||
DEBUG_PRINT3 ("EXECUTING stop_memory %d (%d):\n", *p, p[1]);
|
DEBUG_PRINT3 ("EXECUTING stop_memory %ld (%ld):\n",
|
||||||
|
(long int) *p, (long int) p[1]);
|
||||||
|
|
||||||
/* We need to save the string position the last time we were at
|
/* We need to save the string position the last time we were at
|
||||||
this close-group operator in case the group is operated
|
this close-group operator in case the group is operated
|
||||||
@ -6766,8 +6780,16 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
|
|||||||
{
|
{
|
||||||
p[-(1+OFFSET_ADDRESS_SIZE)] = (US_CHAR_TYPE)
|
p[-(1+OFFSET_ADDRESS_SIZE)] = (US_CHAR_TYPE)
|
||||||
pop_failure_jump;
|
pop_failure_jump;
|
||||||
DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n",
|
#ifdef MBS_SUPPORT
|
||||||
c, p1[3+OFFSET_ADDRESS_SIZE]);
|
if (MB_CUR_MAX != 1)
|
||||||
|
DEBUG_PRINT3 (" %C != %C => pop_failure_jump.\n",
|
||||||
|
(wint_t) c,
|
||||||
|
(wint_t) p1[3+OFFSET_ADDRESS_SIZE]);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n",
|
||||||
|
(char) c,
|
||||||
|
(char) p1[3+OFFSET_ADDRESS_SIZE]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef MBS_SUPPORT
|
#ifndef MBS_SUPPORT
|
||||||
@ -6776,7 +6798,7 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
|
|||||||
{
|
{
|
||||||
int not = (re_opcode_t) p1[3] == charset_not;
|
int not = (re_opcode_t) p1[3] == charset_not;
|
||||||
|
|
||||||
if (c < (unsigned char) (p1[4] * BYTEWIDTH)
|
if (c < (unsigned) (p1[4] * BYTEWIDTH)
|
||||||
&& p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
|
&& p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
|
||||||
not = !not;
|
not = !not;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user