about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog30
-rw-r--r--locale/programs/charmap.c14
-rw-r--r--locale/programs/charmap.h7
-rw-r--r--locale/programs/ld-ctype.c3
4 files changed, 48 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 6fee041d5d..7a2bc976b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,35 @@
 2003-11-21  Ulrich Drepper  <drepper@redhat.com>
 
+	* locale/programs/charmap.c (charmap_read): If encoding is found
+	not ASCII compatible, set enc_not_ascii_compatible.
+	* locale/programs/charmap.h: Declare enc_not_ascii_compatible.
+	* locale/programs/ld-ctype.c (ctype_startup): If
+	enc_not_ascii_compatible is set, initialize to_nonascii to 1.
+
+2003-11-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/rtld.c (process_envvars): Only honor LD_USE_LOAD_BIAS
+	if !__libc_enable_secure.
+
+	* sysdeps/generic/ldsodefs.h (_dl_use_load_bias): New _rtld_global
+	field.
+	* elf/rtld.c (_rtld_global): Initialize _dl_use_load_bias field.
+	(dl_main): Set GL(dl_use_load_bias) default.
+	(process_envvars): Set GL(dl_use_load_bias) from LD_USE_LOAD_BIAS.
+	Add EXTRA_LD_ENVVARS_13.
+	* elf/dl-support.c (_dl_use_load_bias): New variable.
+	* elf/dl-load.c (_dl_map_object_from_fd): Mask c->mapstart
+	with GL(dl_use_load_bias).
+	* sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add
+	LD_USE_LOAD_BIAS.
+	* sysdeps/unix/sysv/linux/dl-librecon.h (EXTRA_LD_ENVVARS): Remove.
+	(EXTRA_LD_ENVVARS_LINUX): Renamed to...
+	(EXTRA_LD_ENVVARS_13): ... this.  Remove case at the beginning.
+	* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
+	Don't undefine first.  Remove EXTRA_LD_ENVVARS_LINUX.
+
+2003-11-21  Ulrich Drepper  <drepper@redhat.com>
+
 	* posix/regcomp.c (duplicate_node): Remove unnecessary local variable.
 
 	* posix/regcomp.c (re_dfa_add_tree_node): Make fourth parameter a
diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c
index 8612d99688..8c9e4e9abb 100644
--- a/locale/programs/charmap.c
+++ b/locale/programs/charmap.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1998-2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -25,7 +25,6 @@
 #include <errno.h>
 #include <libintl.h>
 #include <limits.h>
-#include <obstack.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -35,7 +34,6 @@
 #include "linereader.h"
 #include "charmap.h"
 #include "charmap-dir.h"
-#include "repertoire.h"
 
 #include <assert.h>
 
@@ -55,6 +53,9 @@ static void charmap_new_char (struct linereader *lr, struct charmap_t *cm,
 			      const char *to, int decimal_ellipsis, int step);
 
 
+bool enc_not_ascii_compatible;
+
+
 #ifdef NEED_NULL_POINTER
 static const char *null_pointer;
 #endif
@@ -252,9 +253,12 @@ default character map file `%s' not found"), DEFAULT_CHARMAP));
       while (*p++ != '\0');
 
       if (failed)
-	WITH_CUR_LOCALE (fprintf (stderr, _("\
+	{
+	  WITH_CUR_LOCALE (fprintf (stderr, _("\
 character map `%s' is not ASCII compatible, locale not ISO C compliant\n"),
-				  result->code_set_name));
+				    result->code_set_name));
+	  enc_not_ascii_compatible = true;
+	}
     }
 
   return result;
diff --git a/locale/programs/charmap.h b/locale/programs/charmap.h
index f4ca3abe6c..a4a6d3833b 100644
--- a/locale/programs/charmap.h
+++ b/locale/programs/charmap.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1999, 2001, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
@@ -21,6 +21,7 @@
 #define _CHARMAP_H
 
 #include <obstack.h>
+#include <stdbool.h>
 
 #include "repertoire.h"
 #include "simple-hash.h"
@@ -64,6 +65,10 @@ struct charseq
 };
 
 
+/* True if the encoding is not ASCII compatible.  */
+extern bool enc_not_ascii_compatible;
+
+
 /* Prototypes for charmap handling functions.  */
 extern struct charmap_t *charmap_read (const char *filename, int verbose,
 				       int be_quiet, int use_default);
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index 499868237b..ca2ca1eaca 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -340,6 +340,9 @@ ctype_startup (struct linereader *lr, struct localedef_t *locale,
 	      ctype->map256_collection[1][cnt] = cnt;
 	    }
 
+	  if (enc_not_ascii_compatible)
+	    ctype->to_nonascii = 1;
+
 	  obstack_init (&ctype->mempool);
 	}
       else