This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

PATCH: misc little BP fixes


i686: no build time or runtime regressions.

OK?

2000-07-26  Greg McGary  <greg@mcgary.org>

	* sysdeps/i386/bits/string.h [!__BOUNDED_POINTERS__]: Disable inlines.
	* sysdeps/i386/i486/bits/string.h [!__BOUNDED_POINTERS__]: Likewise.

	* sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Copy
	bounds of copy_result to mount_proc.

Index: sysdeps/i386/bits/string.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/i386/bits/string.h,v
retrieving revision 1.18
diff -u -p -r1.18 string.h
--- string.h	2000/06/30 08:51:50	1.18
+++ string.h	2000/07/26 08:16:37
@@ -28,7 +28,7 @@
 /* We only provide optimizations if the user selects them and if
    GNU CC is used.  */
 #if !defined __NO_STRING_INLINES && defined __USE_STRING_INLINES \
-    && defined __GNUC__ && __GNUC__ >= 2
+    && defined __GNUC__ && __GNUC__ >= 2 && !__BOUNDED_POINTERS__
 
 #ifndef __STRING_INLINE
 # ifdef __cplusplus
Index: sysdeps/i386/i486/bits/string.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/i386/i486/bits/string.h,v
retrieving revision 1.35
diff -u -p -r1.35 string.h
--- string.h	1999/10/04 07:26:58	1.35
+++ string.h	2000/07/26 08:16:38
@@ -1,5 +1,5 @@
 /* Optimized, inlined string functions.  i486 version.
-   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000 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
@@ -28,7 +28,7 @@
 /* We only provide optimizations if the user selects them and if
    GNU CC is used.  */
 #if !defined __NO_STRING_INLINES && defined __USE_STRING_INLINES \
-    && defined __GNUC__ && __GNUC__ >= 2
+    && defined __GNUC__ && __GNUC__ >= 2 && !__BOUNDED_POINTERS__
 
 #ifndef __STRING_INLINE
 # ifdef __cplusplus
Index: sysdeps/unix/sysv/linux/getsysstats.c
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/getsysstats.c,v
retrieving revision 1.15
diff -u -p -r1.15 getsysstats.c
--- getsysstats.c	2000/07/17 22:30:16	1.15
+++ getsysstats.c	2000/07/26 08:16:38
@@ -85,6 +85,15 @@ get_proc_path (char *buffer, size_t bufs
     /* Replacing the value failed.  This means another thread was
        faster and we don't need the copy anymore.  */
     free (copy_result);
+#if __BOUNDED_POINTERS__
+  else
+    {
+      /* compare_and_swap only copied the pointer value, so we must
+	 now copy the bounds as well.  */
+      __ptrlow (mount_proc) = __ptrlow (copy_result);
+      __ptrhigh (mount_proc) = __ptrhigh (copy_result);
+    }
+#endif
 
   return mount_proc;
 }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]