OSDN Git Service

2002-09-09 Jeff Johnston <jjohnstn@redhat.com>
authorjjohnstn <jjohnstn>
Tue, 10 Sep 2002 00:46:45 +0000 (00:46 +0000)
committerjjohnstn <jjohnstn>
Tue, 10 Sep 2002 00:46:45 +0000 (00:46 +0000)
        * libc/sys/linux/machine/i386/crt0.c (_start): Remove
        code that clears the .bss section.

newlib/ChangeLog
newlib/libc/sys/linux/machine/i386/crt0.c

index de3e80e..a0e0627 100644 (file)
@@ -1,5 +1,10 @@
 2002-09-09  Jeff Johnston  <jjohnstn@redhat.com>
 
+        * libc/sys/linux/machine/i386/crt0.c (_start): Remove
+        code that clears the .bss section.
+
+2002-09-09  Jeff Johnston  <jjohnstn@redhat.com>
+
         * libc/include/sys/_types.h (_mbstate_t): Changed to use
         unsigned char internally.
         * libc/sys/linux/sys/_types.h: Ditto.
index 84ea043..4364f61 100644 (file)
@@ -33,8 +33,12 @@ void _start(int args)
 
     environ = argv+argc+1;
 
-    /* clear bss */
-    memset(&__bss_start,0,(&_end - &__bss_start));
+    /* Note: do not clear the .bss section.  When running with shared
+     *       libraries, certain data items such __mb_cur_max or environ
+     *       may get placed in the .bss, even though they are initialized
+     *       to non-zero values.  Clearing the .bss will end up zeroing
+     *       out their initial values.  The .bss is already initialized
+     *       by this time by Linux.  */
 
     tzset(); /* initialize timezone info */
     exit(main(argc,argv,environ));