1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-08 17:42:12 +03:00
2003-04-14  Ulrich Drepper  <drepper@redhat.com>

	* string/strxfrm.c (STRXFRM): Terminate rulearr at correct
	position.  Reported by jreiser@BitWagon.com.
This commit is contained in:
Ulrich Drepper
2003-04-14 07:03:40 +00:00
parent 4ae7142df2
commit 39a46c42f5
7 changed files with 284 additions and 226 deletions

View File

@@ -1,3 +1,8 @@
2003-04-14 Ulrich Drepper <drepper@redhat.com>
* string/strxfrm.c (STRXFRM): Terminate rulearr at correct
position. Reported by jreiser@BitWagon.com.
2003-04-13 Ulrich Drepper <drepper@redhat.com> 2003-04-13 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/unwind-dw2-fde.c: Update from recent gcc version. * sysdeps/generic/unwind-dw2-fde.c: Update from recent gcc version.

View File

@@ -345,103 +345,112 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
.section .eh_frame,"a",@progbits .section .eh_frame,"a",@progbits
.LSTARTFRAME: .LSTARTFRAME:
.long L(ENDCIE)-L(STARTCIE) # Length of the CIE. .long L(ENDCIE)-L(STARTCIE) # Length of the CIE.
.LSTARTCIE: .LSTARTCIE:
.long 0 # CIE ID. .long 0 # CIE ID.
.byte 1 # Version number. .byte 1 # Version number.
#ifdef SHARED #ifdef SHARED
.string "zR" # NUL-terminated augmentation string. .string "zR" # NUL-terminated augmentation
# string.
#else #else
.ascii "\0" # NUL-terminated augmentation string. .ascii "\0" # NUL-terminated augmentation
# string.
#endif #endif
.uleb128 1 # Code alignment factor. .uleb128 1 # Code alignment factor.
.sleb128 -4 # Data alignment factor. .sleb128 -4 # Data alignment factor.
.byte 8 # Return address register column. .byte 8 # Return address register
# column.
#ifdef SHARED #ifdef SHARED
.uleb128 1 # Augmentation value length. .uleb128 1 # Augmentation value length.
.byte 0x1b # Encoding: DW_EH_PE_pcrel .byte 0x1b # Encoding: DW_EH_PE_pcrel
# + DW_EH_PE_sdata4. # + DW_EH_PE_sdata4.
#endif #endif
.byte 0x0c # DW_CFA_def_cfa .byte 0x0c # DW_CFA_def_cfa
.uleb128 4 .uleb128 4
.uleb128 4 .uleb128 4
.byte 0x88 # DW_CFA_offset, column 0x8 .byte 0x88 # DW_CFA_offset, column 0x8
.uleb128 1 .uleb128 1
.align 4 .align 4
.LENDCIE: .LENDCIE:
.long .LENDFDE-.LSTARTFDE # Length of the FDE. .long .LENDFDE-.LSTARTFDE # Length of the FDE.
.LSTARTFDE: .LSTARTFDE:
.long .LSTARTFDE-.LSTARTFRAME # CIE pointer. .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
#ifdef SHARED #ifdef SHARED
.long .LSTARTCODE-. # PC-relative start address of the code .long .LSTARTCODE-. # PC-relative start address
# of the code
#else #else
.long .LSTARTCODE # Start address of the code. .long .LSTARTCODE # Start address of the code.
#endif #endif
.long .LENDCODE-.LSTARTCODE # Length of the code. .long .LENDCODE-.LSTARTCODE # Length of the code.
#ifdef SHARED #ifdef SHARED
.uleb128 0 # No augmentation data. .uleb128 0 # No augmentation data.
#endif #endif
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Lpush_ebp-.LSTARTCODE # DW_CFA_advance_loc+N
.long .Lpush_ebp-.LSTARTCODE .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 8 .uleb128 8
.byte 4 # DW_CFA_advance_loc4 .byte 0x85 # DW_CFA_offset %ebp
.long .Lpush_edi-.Lpush_ebp .uleb128 2
.byte 14 # DW_CFA_def_cfa_offset .byte 0x40+ .Lpush_edi-.Lpush_ebp # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 12 .uleb128 12
.byte 4 # DW_CFA_advance_loc4 .byte 0x87 # DW_CFA_offset %edi
.long .Lpush_esi-.Lpush_edi .uleb128 3
.byte 14 # DW_CFA_def_cfa_offset .byte 0x40+.Lpush_esi-.Lpush_edi # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16 .uleb128 16
.byte 4 # DW_CFA_advance_loc4 .byte 0x86 # DW_CFA_offset %esi
.long .Lpush_ebx-.Lpush_esi
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 20
.byte 4 # DW_CFA_advance_loc4
.long .Lpush4-.Lpush_ebx
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 24
.byte 4 # DW_CFA_advance_loc4
.long .Lsubl-.Lpush4
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 64
.byte 4 # DW_CFA_advance_loc4
.long .Laddl-.Lsubl
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 20
.byte 4 # DW_CFA_advance_loc4
.long .Lpop_ebx-.Laddl
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16
.byte 4 # DW_CFA_advance_loc4
.long .Lpop_esi-.Lpop_ebx
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 12
.byte 4 # DW_CFA_advance_loc4
.long .Lpop_edi-.Lpop_esi
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 8
.byte 4 # DW_CFA_advance_loc4
.long .Lpop_ebp-.Lpop_edi
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 4 .uleb128 4
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Lpush_ebx-.Lpush_esi # DW_CFA_advance_loc+N
.long .LSbl1-.Lpop_edi .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 20 .uleb128 20
.byte 4 # DW_CFA_advance_loc4 .byte 0x83 # DW_CFA_offset %ebx
.long .LSbl2-.LSbl1 .uleb128 5
.byte 14 # DW_CFA_def_cfa_offset .byte 0x40+.Lpush4-.Lpush_ebx # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 24
.byte 0x40+.Lsubl-.Lpush4 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 64 .uleb128 64
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Laddl-.Lsubl # DW_CFA_advance_loc+N
.long .LSbl3-.LSbl2 .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset .uleb128 20
.byte 0x40+.Lpop_ebx-.Laddl # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16
.byte 0xc3 # DW_CFA_restore %ebx
.byte 0x40+.Lpop_esi-.Lpop_ebx # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 12
.byte 0xc6 # DW_CFA_restore %esi
.byte 0x40+.Lpop_edi-.Lpop_esi # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 8
.byte 0xc7 # DW_CFA_restore %edi
.byte 0x40+.Lpop_ebp-.Lpop_edi # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 4
.byte 0xc5 # DW_CFA_restore %ebp
.byte 0x40+.LSbl1-.Lpop_edi # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 20
.byte 0x40+.LSbl2-.LSbl1 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 64
.byte 0x85 # DW_CFA_offset %ebp
.uleb128 2
.byte 0x87 # DW_CFA_offset %edi
.uleb128 3
.byte 0x86 # DW_CFA_offset %esi
.uleb128 4
.byte 0x83 # DW_CFA_offset %ebx
.uleb128 5
.byte 0x40+.LSbl3-.LSbl2 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 24 .uleb128 24
#if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS #if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.LSbl4-.LSbl3 # DW_CFA_advance_loc+N
.long .LSbl4-.LSbl3 .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 64 .uleb128 64
#endif #endif
.align 4 .align 4

View File

@@ -316,88 +316,95 @@ versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
.LSTARTFRAME: .LSTARTFRAME:
.long L(ENDCIE)-L(STARTCIE) # Length of the CIE. .long L(ENDCIE)-L(STARTCIE) # Length of the CIE.
.LSTARTCIE: .LSTARTCIE:
.long 0 # CIE ID. .long 0 # CIE ID.
.byte 1 # Version number. .byte 1 # Version number.
#ifdef SHARED #ifdef SHARED
.string "zR" # NUL-terminated augmentation string. .string "zR" # NUL-terminated augmentation
# string.
#else #else
.ascii "\0" # NUL-terminated augmentation string. .ascii "\0" # NUL-terminated augmentation
# string.
#endif #endif
.uleb128 1 # Code alignment factor. .uleb128 1 # Code alignment factor.
.sleb128 -4 # Data alignment factor. .sleb128 -4 # Data alignment factor.
.byte 8 # Return address register column. .byte 8 # Return address register
# column.
#ifdef SHARED #ifdef SHARED
.uleb128 1 # Augmentation value length. .uleb128 1 # Augmentation value length.
.byte 0x1b # Encoding: DW_EH_PE_pcrel .byte 0x1b # Encoding: DW_EH_PE_pcrel
# + DW_EH_PE_sdata4. # + DW_EH_PE_sdata4.
#endif #endif
.byte 0x0c # DW_CFA_def_cfa .byte 0x0c # DW_CFA_def_cfa
.uleb128 4 .uleb128 4
.uleb128 4 .uleb128 4
.byte 0x88 # DW_CFA_offset, column 0x8 .byte 0x88 # DW_CFA_offset, column 0x8
.uleb128 1 .uleb128 1
.align 4 .align 4
.LENDCIE: .LENDCIE:
.long .LENDFDE-.LSTARTFDE # Length of the FDE. .long .LENDFDE-.LSTARTFDE # Length of the FDE.
.LSTARTFDE: .LSTARTFDE:
.long .LSTARTFDE-.LSTARTFRAME # CIE pointer. .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
#ifdef SHARED #ifdef SHARED
.long .LSTARTCODE-. # PC-relative start address of the code .long .LSTARTCODE-. # PC-relative start address
# of the code.
#else #else
.long .LSTARTCODE # Start address of the code. .long .LSTARTCODE # Start address of the code.
#endif #endif
.long .LENDCODE-.LSTARTCODE # Length of the code. .long .LENDCODE-.LSTARTCODE # Length of the code.
#ifdef SHARED #ifdef SHARED
.uleb128 0 # No augmentation data. .uleb128 0 # No augmentation data.
#endif #endif
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Lpush_edi-.LSTARTCODE # DW_CFA_advance_loc+N
.long .Lpush_edi-.LSTARTCODE .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 8 .uleb128 8
.byte 4 # DW_CFA_advance_loc4 .byte 0x87 # DW_CFA_offset %edi
.long .Lpush_esi-.Lpush_edi .uleb128 2
.byte 14 # DW_CFA_def_cfa_offset .byte 0x40+.Lpush_esi-.Lpush_edi # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 12 .uleb128 12
.byte 4 # DW_CFA_advance_loc4 .byte 0x86 # DW_CFA_offset %esi
.long .Lpush_ebx-.Lpush_esi .uleb128 3
.byte 14 # DW_CFA_def_cfa_offset .byte 0x40+.Lpush_ebx-.Lpush_esi # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16 .uleb128 16
.byte 4 # DW_CFA_advance_loc4 .byte 0x83 # DW_CFA_offset %ebx
.long .Lpush4-.Lpush_ebx
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 20
.byte 4 # DW_CFA_advance_loc4
.long .Lsubl-.Lpush4
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 52
.byte 4 # DW_CFA_advance_loc4
.long .Laddl-.Lsubl
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16
.byte 4 # DW_CFA_advance_loc4
.long .Lpop_ebx-.Laddl
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 12
.byte 4 # DW_CFA_advance_loc4
.long .Lpop_esi-.Lpop_ebx
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 8
.byte 4 # DW_CFA_advance_loc4
.long .Lpop_edi-.Lpop_esi
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 4 .uleb128 4
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Lpush4-.Lpush_ebx # DW_CFA_advance_loc+N
.long .LSbl1-.Lpop_edi .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset .uleb128 20
.uleb128 16 .byte 0x40+.Lsubl-.Lpush4 # DW_CFA_advance_loc+N
.byte 4 # DW_CFA_advance_loc4 .byte 14 # DW_CFA_def_cfa_offset
.long .LSbl2-.LSbl1
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 52 .uleb128 52
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Laddl-.Lsubl # DW_CFA_advance_loc+N
.long .LSbl3-.LSbl2 .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset .uleb128 16
.byte 0x40+ .Lpop_ebx-.Laddl # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 12
.byte 0xc3 # DW_CFA_restore %ebx
.byte 0x40+.Lpop_esi-.Lpop_ebx # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 8
.byte 0xc6 # DW_CFA_restore %esi
.byte 0x40+.Lpop_edi-.Lpop_esi # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 4
.byte 0xc7 # DW_CFA_restore %edi
.byte 0x40+.LSbl1-.Lpop_edi # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16
.byte 0x87 # DW_CFA_offset %edi
.uleb128 2
.byte 0x86 # DW_CFA_offset %esi
.uleb128 3
.byte 0x83 # DW_CFA_offset %ebx
.uleb128 4
.byte 0x40+.LSbl2-.LSbl1 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 52
.byte 0x40+.LSbl3-.LSbl2 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 20 .uleb128 20
.align 4 .align 4
.LENDFDE: .LENDFDE:

View File

@@ -59,19 +59,16 @@
.long 0; \ .long 0; \
/* Version number. */ \ /* Version number. */ \
.byte 1; \ .byte 1; \
/* NUL-terminated augmentation string. Note "z" means there is an \ /* NUL-terminated augmentation string. */ \
augmentation value later on. */ \ AUGMENTATION_STRING; \
.string "zR"; \
/* Code alignment factor. */ \ /* Code alignment factor. */ \
.uleb128 1; \ .uleb128 1; \
/* Data alignment factor. */ \ /* Data alignment factor. */ \
.sleb128 -4; \ .sleb128 -4; \
/* Return address register column. */ \ /* Return address register column. */ \
.byte 8; \ .byte 8; \
/* Augmentation value length. */ \ /* Optional augmentation parameter. */ \
.uleb128 1; \ AUGMENTATION_PARAM \
/* Encoding: DW_EH_PE_pcrel + DW_EH_PE_sdata4. */ \
.byte 0x1b; \
/* Start of the table initialization. */ \ /* Start of the table initialization. */ \
.byte 0xc; /* DW_CFA_def_cfa */ \ .byte 0xc; /* DW_CFA_def_cfa */ \
.uleb128 4; \ .uleb128 4; \
@@ -85,12 +82,12 @@
L(STARTFDE): \ L(STARTFDE): \
/* CIE pointer. */ \ /* CIE pointer. */ \
.long L(STARTFDE)-L(STARTFRAME); \ .long L(STARTFDE)-L(STARTFRAME); \
/* PC-relative start address of the code. */ \ /* Start address of the code. */ \
.long L(name##START)-.; \ START_SYMBOL_REF (name); \
/* Length of the code. */ \ /* Length of the code. */ \
.long L(name##END)-L(name##START); \ .long L(name##END)-L(name##START); \
/* No augmentation data. */ \ /* Augmentation data. */ \
.uleb128 0; \ AUGMENTATION_PARAM_FDE \
/* The rest of the code depends on the number of parameters the syscall \ /* The rest of the code depends on the number of parameters the syscall \
takes. */ \ takes. */ \
EH_FRAME_##args(name); \ EH_FRAME_##args(name); \
@@ -98,6 +95,31 @@
L(ENDFDE): \ L(ENDFDE): \
.previous .previous
#ifdef SHARED
/* NUL-terminated augmentation string. Note "z" means there is an
augmentation value later on. */
# define AUGMENTATION_STRING .string "zR"
# define AUGMENTATION_PARAM \
/* Augmentation value length. */ \
.uleb128 1; \
/* Encoding: DW_EH_PE_pcrel + DW_EH_PE_sdata4. */ \
.byte 0x1b;
# define AUGMENTATION_PARAM_FDE \
/* No augmentation data. */ \
.uleb128 0;
# define START_SYMBOL_REF(name) \
/* PC-relative start address of the code. */ \
.long L(name##START)-.
#else
/* No augmentation. */
# define AUGMENTATION_STRING .ascii "\0"
# define AUGMENTATION_PARAM /* nothing */
# define AUGMENTATION_PARAM_FDE /* nothing */
# define START_SYMBOL_REF(name) \
/* Absolute start address of the code. */ \
.long L(name##START)
#endif
/* Callframe description for syscalls without parameters. This is very /* Callframe description for syscalls without parameters. This is very
simple. The only place the stack pointer is changed is when the old simple. The only place the stack pointer is changed is when the old
cancellation state value is saved. */ cancellation state value is saved. */

View File

@@ -329,78 +329,88 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
.section .eh_frame,"a",@progbits .section .eh_frame,"a",@progbits
.LSTARTFRAME: .LSTARTFRAME:
.long L(ENDCIE)-L(STARTCIE) # Length of the CIE. .long L(ENDCIE)-L(STARTCIE) # Length of the CIE.
.LSTARTCIE: .LSTARTCIE:
.long 0 # CIE ID. .long 0 # CIE ID.
.byte 1 # Version number. .byte 1 # Version number.
#ifdef SHARED #ifdef SHARED
.string "zR" # NUL-terminated augmentation string. .string "zR" # NUL-terminated augmentation
# string.
#else #else
.ascii "\0" # NUL-terminated augmentation string. .ascii "\0" # NUL-terminated augmentation
# string.
#endif #endif
.uleb128 1 # Code alignment factor. .uleb128 1 # Code alignment factor.
.sleb128 -8 # Data alignment factor. .sleb128 -8 # Data alignment factor.
.byte 16 # Return address register column. .byte 16 # Return address register
# column.
#ifdef SHARED #ifdef SHARED
.uleb128 1 # Augmentation value length. .uleb128 1 # Augmentation value length.
.byte 0x1b # Encoding: DW_EH_PE_pcrel .byte 0x1b # Encoding: DW_EH_PE_pcrel
# + DW_EH_PE_sdata4. # + DW_EH_PE_sdata4.
#endif #endif
.byte 0x0c # DW_CFA_def_cfa .byte 0x0c # DW_CFA_def_cfa
.uleb128 7 .uleb128 7
.uleb128 8 .uleb128 8
.byte 0x90 # DW_CFA_offset, column 0x8 .byte 0x90 # DW_CFA_offset, column 0x8
.uleb128 1 .uleb128 1
.align 8 .align 8
.LENDCIE: .LENDCIE:
.long .LENDFDE-.LSTARTFDE # Length of the FDE. .long .LENDFDE-.LSTARTFDE # Length of the FDE.
.LSTARTFDE: .LSTARTFDE:
.long .LSTARTFDE-.LSTARTFRAME # CIE pointer. .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
#ifdef SHARED #ifdef SHARED
.long .LSTARTCODE-. # PC-relative start address of the code .long .LSTARTCODE-. # PC-relative start address
# of the code
#else #else
.long .LSTARTCODE # Start address of the code. .long .LSTARTCODE # Start address of the code.
#endif #endif
.long .LENDCODE-.LSTARTCODE # Length of the code. .long .LENDCODE-.LSTARTCODE # Length of the code.
#ifdef SHARED #ifdef SHARED
.uleb128 0 # No augmentation data. .uleb128 0 # No augmentation data.
#endif #endif
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Lpush_r12-.LSTARTCODE # DW_CFA_advance_loc4
.long .Lpush_r12-.LSTARTCODE .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16 .uleb128 16
.byte 4 # DW_CFA_advance_loc4 .byte 0x8c # DW_CFA_offset %r12
.long .Lpush_r13-.Lpush_r12 .uleb128 2
.byte 14 # DW_CFA_def_cfa_offset .byte 0x40+.Lpush_r13-.Lpush_r12 # DW_CFA_advance_loc4
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 24 .uleb128 24
.byte 4 # DW_CFA_advance_loc4 .byte 0x8d # DW_CFA_offset %r13
.long .Lpush_r14-.Lpush_r13 .uleb128 3
.byte 14 # DW_CFA_def_cfa_offset .byte 0x40+.Lpush_r14-.Lpush_r13 # DW_CFA_advance_loc4
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 32 .uleb128 32
.byte 4 # DW_CFA_advance_loc4 .byte 0x84 # DW_CFA_offset %r14
.long .Lsubq-.Lpush_r14 .uleb128 4
.byte 14 # DW_CFA_def_cfa_offset .byte 0x40+.Lsubq-.Lpush_r14 # DW_CFA_advance_loc4
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 112 .uleb128 112
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Laddq-.Lsubq # DW_CFA_advance_loc4
.long .Laddq-.Lsubq .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 32 .uleb128 32
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Lpop_r14-.Laddq # DW_CFA_advance_loc4
.long .Lpop_r14-.Laddq .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 24 .uleb128 24
.byte 4 # DW_CFA_advance_loc4 .byte 0xce # DW_CFA_restore %r14
.long .Lpop_r13-.Lpop_r14 .byte 0x40+.Lpop_r13-.Lpop_r14 # DW_CFA_advance_loc4
.byte 14 # DW_CFA_def_cfa_offset .byte 14 # DW_CFA_def_cfa_offset
.uleb128 16 .uleb128 16
.byte 4 # DW_CFA_advance_loc4 .byte 0xcd # DW_CFA_restore %r13
.long .Lpop_r12-.Lpop_r13 .byte 0x40+.Lpop_r12-.Lpop_r13 # DW_CFA_advance_loc4
.byte 14 # DW_CFA_def_cfa_offset .byte 14 # DW_CFA_def_cfa_offset
.uleb128 8 .uleb128 8
.byte 4 # DW_CFA_advance_loc4 .byte 0xcc # DW_CFA_restore %r12
.long .LSbl1-.Lpop_r12 .byte 0x40+.LSbl1-.Lpop_r12 # DW_CFA_advance_loc4
.byte 14 # DW_CFA_def_cfa_offset .byte 14 # DW_CFA_def_cfa_offset
.uleb128 112 .uleb128 112
.byte 0x8c # DW_CFA_offset %r12
.uleb128 2
.byte 0x8d # DW_CFA_offset %r13
.uleb128 3
.byte 0x84 # DW_CFA_offset %r14
.uleb128 4
.align 8 .align 8
.LENDFDE: .LENDFDE:

View File

@@ -293,62 +293,66 @@ versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
.section .eh_frame,"a",@progbits .section .eh_frame,"a",@progbits
.LSTARTFRAME: .LSTARTFRAME:
.long L(ENDCIE)-L(STARTCIE) # Length of the CIE. .long L(ENDCIE)-L(STARTCIE) # Length of the CIE.
.LSTARTCIE: .LSTARTCIE:
.long 0 # CIE ID. .long 0 # CIE ID.
.byte 1 # Version number. .byte 1 # Version number.
#ifdef SHARED #ifdef SHARED
.string "zR" # NUL-terminated augmentation string. .string "zR" # NUL-terminated augmentation
# string.
#else #else
.ascii "\0" # NUL-terminated augmentation string. .ascii "\0" # NUL-terminated augmentation
# string.
#endif #endif
.uleb128 1 # Code alignment factor. .uleb128 1 # Code alignment factor.
.sleb128 -8 # Data alignment factor. .sleb128 -8 # Data alignment factor.
.byte 16 # Return address register column. .byte 16 # Return address register
# column.
#ifdef SHARED #ifdef SHARED
.uleb128 1 # Augmentation value length. .uleb128 1 # Augmentation value length.
.byte 0x1b # Encoding: DW_EH_PE_pcrel .byte 0x1b # Encoding: DW_EH_PE_pcrel
# + DW_EH_PE_sdata4. # + DW_EH_PE_sdata4.
#endif #endif
.byte 0x0c # DW_CFA_def_cfa .byte 0x0c # DW_CFA_def_cfa
.uleb128 7 .uleb128 7
.uleb128 8 .uleb128 8
.byte 0x90 # DW_CFA_offset, column 0x8 .byte 0x90 # DW_CFA_offset, column 0x8
.uleb128 1 .uleb128 1
.align 8 .align 8
.LENDCIE: .LENDCIE:
.long .LENDFDE-.LSTARTFDE # Length of the FDE. .long .LENDFDE-.LSTARTFDE # Length of the FDE.
.LSTARTFDE: .LSTARTFDE:
.long .LSTARTFDE-.LSTARTFRAME # CIE pointer. .long .LSTARTFDE-.LSTARTFRAME # CIE pointer.
#ifdef SHARED #ifdef SHARED
.long .LSTARTCODE-. # PC-relative start address of the code .long .LSTARTCODE-. # PC-relative start address
# of the code
#else #else
.long .LSTARTCODE # Start address of the code. .long .LSTARTCODE # Start address of the code.
#endif #endif
.long .LENDCODE-.LSTARTCODE # Length of the code. .long .LENDCODE-.LSTARTCODE # Length of the code.
#ifdef SHARED #ifdef SHARED
.uleb128 0 # No augmentation data. .uleb128 0 # No augmentation data.
#endif #endif
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Lpush_r12-.LSTARTCODE # DW_CFA_advance_loc+N
.long .Lpush_r12-.LSTARTCODE .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16 .uleb128 16
.byte 4 # DW_CFA_advance_loc4 .byte 0x8c # DW_CFA_offset %r12
.long .Lsubq-.Lpush_r12 .uleb128 2
.byte 14 # DW_CFA_def_cfa_offset .byte 0x40+.Lsubq-.Lpush_r12 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 80 .uleb128 80
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Laddq-.Lsubq # DW_CFA_advance_loc+N
.long .Laddq-.Lsubq .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 16 .uleb128 16
.byte 4 # DW_CFA_advance_loc4 .byte 0x40+.Lpop_r12-.Laddq # DW_CFA_advance_loc+N
.long .Lpop_r12-.Laddq .byte 14 # DW_CFA_def_cfa_offset
.byte 14 # DW_CFA_def_cfa_offset
.uleb128 8 .uleb128 8
.byte 4 # DW_CFA_advance_loc4 .byte 0xcc # DW_CFA_restore %r12
.long .LSbl1-.Lpop_r12 .byte 0x40+.LSbl1-.Lpop_r12 # DW_CFA_advance_loc+N
.byte 14 # DW_CFA_def_cfa_offset .byte 14 # DW_CFA_def_cfa_offset
.uleb128 80 .uleb128 80
.byte 0x8c # DW_CFA_offset %r12
.uleb128 2
.align 8 .align 8
.LENDFDE: .LENDFDE:

View File

@@ -1,4 +1,4 @@
/* Copyright (C) 1995-1999,2000,2001,2002 Free Software Foundation, Inc. /* Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Written by Ulrich Drepper <drepper@cygnus.com>, 1995. Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
@@ -196,9 +196,6 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
idxarr = (int32_t *) alloca (srclen * sizeof (int32_t)); idxarr = (int32_t *) alloca (srclen * sizeof (int32_t));
rulearr = (unsigned char *) alloca (srclen + 1); rulearr = (unsigned char *) alloca (srclen + 1);
} }
/* This element is only read, the value never used but to determine
another value which then is ignored. */
rulearr[srclen] = '\0';
idxmax = 0; idxmax = 0;
do do
@@ -211,6 +208,10 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
} }
while (*usrc != L('\0')); while (*usrc != L('\0'));
/* This element is only read, the value never used but to determine
another value which then is ignored. */
rulearr[idxmax] = '\0';
/* Now the passes over the weights. We now use the indeces we found /* Now the passes over the weights. We now use the indeces we found
before. */ before. */
needed = 0; needed = 0;