diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | linuxthreads/ChangeLog | 5 | ||||
-rw-r--r-- | linuxthreads/sysdeps/i386/tls.h | 16 | ||||
-rw-r--r-- | locale/loadarchive.c | 2 |
4 files changed, 20 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog index e54d2609b0..addf8f2a8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-08-16 Jakub Jelinek <jakub@redhat.com> + + * locale/loadarchive.c (_nl_load_locale_from_archive): Braino fix + in change before last: MAX -> MIN. + 2002-08-15 Roland McGrath <roland@redhat.com> * libio/fileops.c (_IO_file_seekoff_mmap): Leave read pointers at EOF diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 67be250bd1..cd529e89f6 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,8 @@ +2002-08-15 Roland McGrath <roland@redhat.com> + + * sysdeps/i386/tls.h (TLS_INIT_TP): Use statement expression and + return a value as callers now expect. + 2002-08-11 Roland McGrath <roland@redhat.com> * pthread.c (__pthread_initialize_manager): Initialize diff --git a/linuxthreads/sysdeps/i386/tls.h b/linuxthreads/sysdeps/i386/tls.h index 03d36de486..3e7e4c3302 100644 --- a/linuxthreads/sysdeps/i386/tls.h +++ b/linuxthreads/sysdeps/i386/tls.h @@ -122,8 +122,8 @@ typedef struct /* Code to initially initialize the thread pointer. This might need special attention since 'errno' is not yet available and if the operation can cause a failure 'errno' must not be touched. */ -# define TLS_INIT_TP(descr) \ - do { \ +# define TLS_INIT_TP(descr) \ + ({ \ void *_descr = (descr); \ tcbhead_t *head = _descr; \ int __gs; \ @@ -133,11 +133,13 @@ typedef struct head->self = _descr; \ \ __gs = TLS_SETUP_GS_SEGMENT (_descr); \ - if (__builtin_expect (__gs, 7) == -1) \ - /* Nothing else we can do. */ \ - asm ("hlt"); \ - asm ("movw %w0, %%gs" : : "q" (__gs)); \ - } while (0) + if (__builtin_expect (__gs, 7) != -1) \ + { \ + asm ("movw %w0, %%gs" : : "q" (__gs)); \ + __gs = 0; \ + } \ + __gs; \ + }) /* Return the address of the dtv for the current thread. */ diff --git a/locale/loadarchive.c b/locale/loadarchive.c index d71ec88e8c..c795971894 100644 --- a/locale/loadarchive.c +++ b/locale/loadarchive.c @@ -206,7 +206,7 @@ _nl_load_locale_from_archive (int category, const char **namep) just map the whole file and be sure everything is covered. */ mapsize = (sizeof (void *) > 4 ? archive_stat.st_size - : MAX (archive_stat.st_size, ARCHIVE_MAPPING_WINDOW)); + : MIN (archive_stat.st_size, ARCHIVE_MAPPING_WINDOW)); result = __mmap64 (NULL, mapsize, PROT_READ, MAP_SHARED, fd, 0); if (result == MAP_FAILED) |