]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 14 Apr 2003 07:03:40 +0000 (07:03 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 14 Apr 2003 07:03:40 +0000 (07:03 +0000)
2003-04-14  Ulrich Drepper  <drepper@redhat.com>

* string/strxfrm.c (STRXFRM): Terminate rulearr at correct
position.  Reported by jreiser@BitWagon.com.

ChangeLog
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
string/strxfrm.c

index d45faaca8c99c4d1c3ad91733291e6ebc63fc54b..0c22f0f124e526116f42835713ea678f3c41f29a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        * sysdeps/generic/unwind-dw2-fde.c: Update from recent gcc version.
index cd80099406ad6bb6aa340966bb5f6886141afff1..9e7fff7e6a98055c6524efa1f09f52bb7d1d0cf5 100644 (file)
@@ -345,103 +345,112 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
 
        .section .eh_frame,"a",@progbits
 .LSTARTFRAME:
-       .long   L(ENDCIE)-L(STARTCIE)   # Length of the CIE.
+       .long   L(ENDCIE)-L(STARTCIE)           # Length of the CIE.
 .LSTARTCIE:
-       .long   0                       # CIE ID.
-       .byte   1                       # Version number.
+       .long   0                               # CIE ID.
+       .byte   1                               # Version number.
 #ifdef SHARED
-       .string "zR"                    # NUL-terminated augmentation string.
+       .string "zR"                            # NUL-terminated augmentation
+                                               # string.
 #else
-       .ascii  "\0"                    # NUL-terminated augmentation string.
+       .ascii  "\0"                            # NUL-terminated augmentation
+                                               # string.
 #endif
-       .uleb128 1                      # Code alignment factor.
-       .sleb128 -4                     # Data alignment factor.
-       .byte   8                       # Return address register column.
+       .uleb128 1                              # Code alignment factor.
+       .sleb128 -4                             # Data alignment factor.
+       .byte   8                               # Return address register
+                                               # column.
 #ifdef SHARED
-       .uleb128 1                      # Augmentation value length.
-       .byte   0x1b                    # Encoding: DW_EH_PE_pcrel
-                                       # + DW_EH_PE_sdata4.
+       .uleb128 1                              # Augmentation value length.
+       .byte   0x1b                            # Encoding: DW_EH_PE_pcrel
+                                               # + DW_EH_PE_sdata4.
 #endif
-       .byte 0x0c                      # DW_CFA_def_cfa
+       .byte 0x0c                              # DW_CFA_def_cfa
        .uleb128 4
        .uleb128 4
-       .byte   0x88                    # DW_CFA_offset, column 0x8
+       .byte   0x88                            # DW_CFA_offset, column 0x8
        .uleb128 1
        .align 4
 .LENDCIE:
 
-       .long   .LENDFDE-.LSTARTFDE     # Length of the FDE.
+       .long   .LENDFDE-.LSTARTFDE             # Length of the FDE.
 .LSTARTFDE:
-       .long   .LSTARTFDE-.LSTARTFRAME # CIE pointer.
+       .long   .LSTARTFDE-.LSTARTFRAME         # CIE pointer.
 #ifdef SHARED
-       .long   .LSTARTCODE-.           # PC-relative start address of the code
+       .long   .LSTARTCODE-.                   # PC-relative start address
+                                               # of the code
 #else
-       .long   .LSTARTCODE             # Start address of the code.
+       .long   .LSTARTCODE                     # Start address of the code.
 #endif
-       .long   .LENDCODE-.LSTARTCODE   # Length of the code.
+       .long   .LENDCODE-.LSTARTCODE           # Length of the code.
 #ifdef SHARED
-       .uleb128 0                      # No augmentation data.
+       .uleb128 0                              # No augmentation data.
 #endif
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_ebp-.LSTARTCODE
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.Lpush_ebp-.LSTARTCODE     # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 8
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_edi-.Lpush_ebp
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x85                            # DW_CFA_offset %ebp
+       .uleb128 2
+       .byte   0x40+ .Lpush_edi-.Lpush_ebp     # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 12
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_esi-.Lpush_edi
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x87                            # DW_CFA_offset %edi
+       .uleb128 3
+       .byte   0x40+.Lpush_esi-.Lpush_edi      # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_ebx-.Lpush_esi
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x86                            # DW_CFA_offset %esi
+       .uleb128 4
+       .byte   0x40+.Lpush_ebx-.Lpush_esi      # DW_CFA_advance_loc+N
+       .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
+       .byte   0x83                            # DW_CFA_offset %ebx
+       .uleb128 5
+       .byte   0x40+.Lpush4-.Lpush_ebx         # DW_CFA_advance_loc+N
+       .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
+       .byte   0x40+.Lsubl-.Lpush4             # DW_CFA_advance_loc+N
+       .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
+       .byte   0x40+.Laddl-.Lsubl              # DW_CFA_advance_loc+N
+       .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
+       .byte   0x40+.Lpop_ebx-.Laddl           # DW_CFA_advance_loc+N
+       .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
+       .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   4                       # DW_CFA_advance_loc4
-       .long   .Lpop_edi-.Lpop_esi
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .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   4                       # DW_CFA_advance_loc4
-       .long   .Lpop_ebp-.Lpop_edi
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .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   4                       # DW_CFA_advance_loc4
-       .long   .LSbl1-.Lpop_edi
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .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   4                       # DW_CFA_advance_loc4
-       .long   .LSbl2-.LSbl1
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.LSbl2-.LSbl1              # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 64
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .LSbl3-.LSbl2
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .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
 #if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .LSbl4-.LSbl3
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.LSbl4-.LSbl3              # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 64
 #endif
        .align  4
index 89bd4a66f0f9d9def18b0a2d6329a86f93837326..d701d77fe4ca2e2d45d7f8047fc0521485339383 100644 (file)
@@ -316,88 +316,95 @@ versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
 .LSTARTFRAME:
        .long   L(ENDCIE)-L(STARTCIE)   # Length of the CIE.
 .LSTARTCIE:
-       .long   0                       # CIE ID.
-       .byte   1                       # Version number.
+       .long   0                               # CIE ID.
+       .byte   1                               # Version number.
 #ifdef SHARED
-       .string "zR"                    # NUL-terminated augmentation string.
+       .string "zR"                            # NUL-terminated augmentation
+                                               # string.
 #else
-       .ascii  "\0"                    # NUL-terminated augmentation string.
+       .ascii  "\0"                            # NUL-terminated augmentation
+                                               # string.
 #endif
-       .uleb128 1                      # Code alignment factor.
-       .sleb128 -4                     # Data alignment factor.
-       .byte   8                       # Return address register column.
+       .uleb128 1                              # Code alignment factor.
+       .sleb128 -4                             # Data alignment factor.
+       .byte   8                               # Return address register
+                                               # column.
 #ifdef SHARED
-       .uleb128 1                      # Augmentation value length.
-       .byte   0x1b                    # Encoding: DW_EH_PE_pcrel
-                                       # + DW_EH_PE_sdata4.
+       .uleb128 1                              # Augmentation value length.
+       .byte   0x1b                            # Encoding: DW_EH_PE_pcrel
+                                               # + DW_EH_PE_sdata4.
 #endif
-       .byte 0x0c                      # DW_CFA_def_cfa
+       .byte 0x0c                              # DW_CFA_def_cfa
        .uleb128 4
        .uleb128 4
-       .byte   0x88                    # DW_CFA_offset, column 0x8
+       .byte   0x88                            # DW_CFA_offset, column 0x8
        .uleb128 1
        .align 4
 .LENDCIE:
 
-       .long   .LENDFDE-.LSTARTFDE     # Length of the FDE.
+       .long   .LENDFDE-.LSTARTFDE             # Length of the FDE.
 .LSTARTFDE:
-       .long   .LSTARTFDE-.LSTARTFRAME # CIE pointer.
+       .long   .LSTARTFDE-.LSTARTFRAME         # CIE pointer.
 #ifdef SHARED
-       .long   .LSTARTCODE-.           # PC-relative start address of the code
+       .long   .LSTARTCODE-.                   # PC-relative start address
+                                               # of the code.
 #else
-       .long   .LSTARTCODE             # Start address of the code.
+       .long   .LSTARTCODE                     # Start address of the code.
 #endif
-       .long   .LENDCODE-.LSTARTCODE   # Length of the code.
+       .long   .LENDCODE-.LSTARTCODE           # Length of the code.
 #ifdef SHARED
-       .uleb128 0                      # No augmentation data.
+       .uleb128 0                              # No augmentation data.
 #endif
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_edi-.LSTARTCODE
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.Lpush_edi-.LSTARTCODE     # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 8
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_esi-.Lpush_edi
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x87                            # DW_CFA_offset %edi
+       .uleb128 2
+       .byte   0x40+.Lpush_esi-.Lpush_edi      # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 12
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_ebx-.Lpush_esi
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x86                            # DW_CFA_offset %esi
+       .uleb128 3
+       .byte   0x40+.Lpush_ebx-.Lpush_esi      # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush4-.Lpush_ebx
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x83                            # DW_CFA_offset %ebx
+       .uleb128 4
+       .byte   0x40+.Lpush4-.Lpush_ebx         # DW_CFA_advance_loc+N
+       .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
+       .byte   0x40+.Lsubl-.Lpush4             # DW_CFA_advance_loc+N
+       .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
+       .byte   0x40+.Laddl-.Lsubl              # DW_CFA_advance_loc+N
+       .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
+       .byte   0x40+ .Lpop_ebx-.Laddl          # DW_CFA_advance_loc+N
+       .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
+       .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   4                       # DW_CFA_advance_loc4
-       .long   .Lpop_edi-.Lpop_esi
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .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   4                       # DW_CFA_advance_loc4
-       .long   .LSbl1-.Lpop_edi
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .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   4                       # DW_CFA_advance_loc4
-       .long   .LSbl2-.LSbl1
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .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   4                       # DW_CFA_advance_loc4
-       .long   .LSbl3-.LSbl2
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.LSbl3-.LSbl2              # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 20
        .align  4
 .LENDFDE:
index 2f80654b5ba9cccaeb26b825916aff1d9767ad8e..22fdc9421b043a6192a846e9ee147f20b7bf8753 100644 (file)
     .long 0;                                                                 \
     /* Version number.  */                                                   \
     .byte 1;                                                                 \
-    /* NUL-terminated augmentation string.  Note "z" means there is an       \
-       augmentation value later on.  */                                              \
-    .string "zR";                                                            \
+    /* NUL-terminated augmentation string.  */                               \
+    AUGMENTATION_STRING;                                                     \
     /* Code alignment factor.  */                                            \
     .uleb128 1;                                                                      \
     /* Data alignment factor.  */                                            \
     .sleb128 -4;                                                             \
     /* Return address register column.  */                                   \
     .byte 8;                                                                 \
-    /* Augmentation value length.  */                                        \
-    .uleb128 1;                                                                      \
-    /* Encoding: DW_EH_PE_pcrel + DW_EH_PE_sdata4.  */                       \
-    .byte 0x1b;                                                                      \
+    /* Optional augmentation parameter.  */                                  \
+    AUGMENTATION_PARAM                                                       \
     /* Start of the table initialization.  */                                \
     .byte 0xc;                 /* DW_CFA_def_cfa */                          \
     .uleb128 4;                                                                      \
   L(STARTFDE):                                                               \
     /* CIE pointer.  */                                                              \
     .long L(STARTFDE)-L(STARTFRAME);                                         \
-    /* PC-relative start address of the code.  */                            \
-    .long L(name##START)-.;                                                  \
+    /* Start address of the code.  */                                        \
+    START_SYMBOL_REF (name);                                                 \
     /* Length of the code.  */                                               \
     .long L(name##END)-L(name##START);                                       \
-    /* No augmentation data.  */                                             \
-    .uleb128 0;                                                                      \
+    /* Augmentation data.  */                                                \
+    AUGMENTATION_PARAM_FDE                                                   \
     /* The rest of the code depends on the number of parameters the syscall   \
        takes.  */                                                            \
     EH_FRAME_##args(name);                                                   \
   L(ENDFDE):                                                                 \
   .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
    simple.  The only place the stack pointer is changed is when the old
    cancellation state value is saved.  */
index 79d8a2aebea6ff1c0b1a77b737f7bdf6905519ab..a099b2b8f3e93e34b71a143b9d8f1b02d821925a 100644 (file)
@@ -329,78 +329,88 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
 
        .section .eh_frame,"a",@progbits
 .LSTARTFRAME:
-       .long   L(ENDCIE)-L(STARTCIE)   # Length of the CIE.
+       .long   L(ENDCIE)-L(STARTCIE)           # Length of the CIE.
 .LSTARTCIE:
-       .long   0                       # CIE ID.
-       .byte   1                       # Version number.
+       .long   0                               # CIE ID.
+       .byte   1                               # Version number.
 #ifdef SHARED
-       .string "zR"                    # NUL-terminated augmentation string.
+       .string "zR"                            # NUL-terminated augmentation
+                                               # string.
 #else
-       .ascii  "\0"                    # NUL-terminated augmentation string.
+       .ascii  "\0"                            # NUL-terminated augmentation
+                                               # string.
 #endif
-       .uleb128 1                      # Code alignment factor.
-       .sleb128 -8                     # Data alignment factor.
-       .byte   16                      # Return address register column.
+       .uleb128 1                              # Code alignment factor.
+       .sleb128 -8                             # Data alignment factor.
+       .byte   16                              # Return address register
+                                               # column.
 #ifdef SHARED
-       .uleb128 1                      # Augmentation value length.
-       .byte   0x1b                    # Encoding: DW_EH_PE_pcrel
-                                       # + DW_EH_PE_sdata4.
+       .uleb128 1                              # Augmentation value length.
+       .byte   0x1b                            # Encoding: DW_EH_PE_pcrel
+                                               # + DW_EH_PE_sdata4.
 #endif
-       .byte 0x0c                      # DW_CFA_def_cfa
+       .byte 0x0c                              # DW_CFA_def_cfa
        .uleb128 7
        .uleb128 8
-       .byte   0x90                    # DW_CFA_offset, column 0x8
+       .byte   0x90                            # DW_CFA_offset, column 0x8
        .uleb128 1
        .align 8
 .LENDCIE:
 
-       .long   .LENDFDE-.LSTARTFDE     # Length of the FDE.
+       .long   .LENDFDE-.LSTARTFDE             # Length of the FDE.
 .LSTARTFDE:
-       .long   .LSTARTFDE-.LSTARTFRAME # CIE pointer.
+       .long   .LSTARTFDE-.LSTARTFRAME         # CIE pointer.
 #ifdef SHARED
-       .long   .LSTARTCODE-.           # PC-relative start address of the code
+       .long   .LSTARTCODE-.                   # PC-relative start address
+                                               # of the code
 #else
-       .long   .LSTARTCODE             # Start address of the code.
+       .long   .LSTARTCODE                     # Start address of the code.
 #endif
-       .long   .LENDCODE-.LSTARTCODE   # Length of the code.
+       .long   .LENDCODE-.LSTARTCODE           # Length of the code.
 #ifdef SHARED
-       .uleb128 0                      # No augmentation data.
+       .uleb128 0                              # No augmentation data.
 #endif
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_r12-.LSTARTCODE
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.Lpush_r12-.LSTARTCODE     # DW_CFA_advance_loc4
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_r13-.Lpush_r12
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x8c                            # DW_CFA_offset %r12
+       .uleb128 2
+       .byte   0x40+.Lpush_r13-.Lpush_r12      # DW_CFA_advance_loc4
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 24
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_r14-.Lpush_r13
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x8d                            # DW_CFA_offset %r13
+       .uleb128 3
+       .byte   0x40+.Lpush_r14-.Lpush_r13      # DW_CFA_advance_loc4
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 32
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lsubq-.Lpush_r14
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x84                            # DW_CFA_offset %r14
+       .uleb128 4
+       .byte   0x40+.Lsubq-.Lpush_r14          # DW_CFA_advance_loc4
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 112
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Laddq-.Lsubq
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.Laddq-.Lsubq              # DW_CFA_advance_loc4
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 32
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpop_r14-.Laddq
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.Lpop_r14-.Laddq           # DW_CFA_advance_loc4
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 24
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpop_r13-.Lpop_r14
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0xce                            # DW_CFA_restore %r14
+       .byte   0x40+.Lpop_r13-.Lpop_r14        # DW_CFA_advance_loc4
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpop_r12-.Lpop_r13
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0xcd                            # DW_CFA_restore %r13
+       .byte   0x40+.Lpop_r12-.Lpop_r13        # DW_CFA_advance_loc4
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 8
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .LSbl1-.Lpop_r12
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0xcc                            # DW_CFA_restore %r12
+       .byte   0x40+.LSbl1-.Lpop_r12           # DW_CFA_advance_loc4
+       .byte   14                              # DW_CFA_def_cfa_offset
        .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
 .LENDFDE:
index a7fcc8c8fc66d8a3fc0737adc27a70e4dbd98607..916a388fbd44f1969883cbfc6a399dea06e0e580 100644 (file)
@@ -293,62 +293,66 @@ versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
 
        .section .eh_frame,"a",@progbits
 .LSTARTFRAME:
-       .long   L(ENDCIE)-L(STARTCIE)   # Length of the CIE.
+       .long   L(ENDCIE)-L(STARTCIE)           # Length of the CIE.
 .LSTARTCIE:
-       .long   0                       # CIE ID.
-       .byte   1                       # Version number.
+       .long   0                               # CIE ID.
+       .byte   1                               # Version number.
 #ifdef SHARED
-       .string "zR"                    # NUL-terminated augmentation string.
+       .string "zR"                            # NUL-terminated augmentation
+                                               # string.
 #else
-       .ascii  "\0"                    # NUL-terminated augmentation string.
+       .ascii  "\0"                            # NUL-terminated augmentation
+                                               # string.
 #endif
-       .uleb128 1                      # Code alignment factor.
-       .sleb128 -8                     # Data alignment factor.
-       .byte   16                      # Return address register column.
+       .uleb128 1                              # Code alignment factor.
+       .sleb128 -8                             # Data alignment factor.
+       .byte   16                              # Return address register
+                                               # column.
 #ifdef SHARED
-       .uleb128 1                      # Augmentation value length.
-       .byte   0x1b                    # Encoding: DW_EH_PE_pcrel
-                                       # + DW_EH_PE_sdata4.
+       .uleb128 1                              # Augmentation value length.
+       .byte   0x1b                            # Encoding: DW_EH_PE_pcrel
+                                               # + DW_EH_PE_sdata4.
 #endif
-       .byte 0x0c                      # DW_CFA_def_cfa
+       .byte 0x0c                              # DW_CFA_def_cfa
        .uleb128 7
        .uleb128 8
-       .byte   0x90                    # DW_CFA_offset, column 0x8
+       .byte   0x90                            # DW_CFA_offset, column 0x8
        .uleb128 1
        .align 8
 .LENDCIE:
 
-       .long   .LENDFDE-.LSTARTFDE     # Length of the FDE.
+       .long   .LENDFDE-.LSTARTFDE             # Length of the FDE.
 .LSTARTFDE:
-       .long   .LSTARTFDE-.LSTARTFRAME # CIE pointer.
+       .long   .LSTARTFDE-.LSTARTFRAME         # CIE pointer.
 #ifdef SHARED
-       .long   .LSTARTCODE-.           # PC-relative start address of the code
+       .long   .LSTARTCODE-.                   # PC-relative start address
+                                               # of the code
 #else
-       .long   .LSTARTCODE             # Start address of the code.
+       .long   .LSTARTCODE                     # Start address of the code.
 #endif
-       .long   .LENDCODE-.LSTARTCODE   # Length of the code.
+       .long   .LENDCODE-.LSTARTCODE           # Length of the code.
 #ifdef SHARED
-       .uleb128 0                      # No augmentation data.
+       .uleb128 0                              # No augmentation data.
 #endif
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpush_r12-.LSTARTCODE
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.Lpush_r12-.LSTARTCODE     # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lsubq-.Lpush_r12
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x8c                            # DW_CFA_offset %r12
+       .uleb128 2
+       .byte   0x40+.Lsubq-.Lpush_r12          # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 80
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Laddq-.Lsubq
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.Laddq-.Lsubq              # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .Lpop_r12-.Laddq
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0x40+.Lpop_r12-.Laddq           # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 8
-       .byte   4                       # DW_CFA_advance_loc4
-       .long   .LSbl1-.Lpop_r12
-       .byte   14                      # DW_CFA_def_cfa_offset
+       .byte   0xcc                            # DW_CFA_restore %r12
+       .byte   0x40+.LSbl1-.Lpop_r12           # DW_CFA_advance_loc+N
+       .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 80
+       .byte   0x8c                            # DW_CFA_offset %r12
+       .uleb128 2
        .align  8
 .LENDFDE:
index 6475fa9206d924f5e1b17510fd348fe360f14f44..9db57829d9522d956c363a14cdf72971925d5b00 100644 (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.
    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));
       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;
   do
@@ -211,6 +208,10 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
     }
   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
      before.  */
   needed = 0;