summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-10-01 16:49:19 +0000
committerEric Andersen <andersen@codepoet.org>2002-10-01 16:49:19 +0000
commita64f4d5b57c05822aa8c9267f7e25cf42d1856d4 (patch)
treed0ecd65c8a058daaaf696332bcd062c9ddc62d06
parentb58a631942341b6ccb62ab400e862f404e22dbbf (diff)
Patch from Stefan Allius <allius@atecom.com>:
----------------------------------- In extra/Configs/Config.sh I added the INCLUDE_PTHREADS statement and change the default values for BUILD_UCLIBC_LDSO and HAVE_SHARED. ----------------------------------- In extra/scripts/initfini.pl My last patch removes two labels, which migth be used by the .size statements. (Sorry, but I'm a perl beginner) I fixed it. ----------------------------------- In libc/sysdeps/linux/common/initfini.c I fixed two warnings "nested extern declaration of `i_am_not_a_leaf.. ----------------------------------- In libc/sysdeps/linux/sh/__init_brl.c brk.c sbrk.c I fixed some compiler warnings which comes from a wrong inclusion order. -----------------------------------
-rw-r--r--extra/Configs/Config.sh8
-rwxr-xr-xextra/scripts/initfini.pl7
-rw-r--r--libc/sysdeps/linux/common/initfini.c4
-rw-r--r--libc/sysdeps/linux/sh/__init_brk.c4
-rw-r--r--libc/sysdeps/linux/sh/brk.c4
-rw-r--r--libc/sysdeps/linux/sh/sbrk.c4
6 files changed, 16 insertions, 15 deletions
diff --git a/extra/Configs/Config.sh b/extra/Configs/Config.sh
index a88f9d601..87ad02c30 100644
--- a/extra/Configs/Config.sh
+++ b/extra/Configs/Config.sh
@@ -144,6 +144,10 @@ INCLUDE_FULL_RPC = false
# Protocol: IP version 6, enable this. This is off by default.
INCLUDE_IPV6 = false
+# If you want to include threads support, enable this. The C library will
+# be compiled thread-safe, and the libpthread library will be built.
+INCLUDE_THREADS = true
+
# If you want to support only Unix 98 PTYs enable this. Some older
# applications may need this disabled. For most current programs,
# you can generally leave this true.
@@ -162,10 +166,10 @@ DOPIC = false
# Enable support for shared libraries? If this is false, you can
# ignore all the rest of the options in this file...
-HAVE_SHARED = false
+HAVE_SHARED = true
# uClibc has a native shared library loader for some architectures.
-BUILD_UCLIBC_LDSO=false
+BUILD_UCLIBC_LDSO= true
# If you are using shared libraries, but do not want/have a native
# uClibc shared library loader, please specify the name of your
diff --git a/extra/scripts/initfini.pl b/extra/scripts/initfini.pl
index 41add5d88..3d62a2257 100755
--- a/extra/scripts/initfini.pl
+++ b/extra/scripts/initfini.pl
@@ -11,7 +11,6 @@ my($endp) = 0;
my($end) = 0;
my($omitcrti) = 0;
my($omitcrtn) = 0;
-my($discard) = 0;
my($line);
# Get commandline parameters
@@ -85,7 +84,6 @@ while(<INITFINI>) {
next;
}
if (/i_am_not_a_leaf/) {
- $discard = 1;
next;
}
if (/^_init:/ || /^_fini:/) {
@@ -145,13 +143,12 @@ while(<INITFINI>) {
s/ALIGN//;
}
}
- if (!$omitcrti && !$discard) {
+ if (!$omitcrti) {
print CRTI;
}
- if (!$omitcrtn && !$discard) {
+ if (!$omitcrtn) {
print CRTN;
}
- $discard = 0;
}
close(INITFINI);
close(CRTI);
diff --git a/libc/sysdeps/linux/common/initfini.c b/libc/sysdeps/linux/common/initfini.c
index c2e82d591..4a6ebee75 100644
--- a/libc/sysdeps/linux/common/initfini.c
+++ b/libc/sysdeps/linux/common/initfini.c
@@ -84,6 +84,7 @@ call_gmon_start(void)
SECTION (".init")
HIDDEN(_init)
+extern void i_am_not_a_leaf (void);
extern void _init (void);
void _init (void)
{
@@ -101,7 +102,6 @@ void _init (void)
/* Let GCC know that _init is not a leaf function by having a dummy
* function call here. We arrange for this call to be omitted from
* either crt file. */
- extern void i_am_not_a_leaf (void);
i_am_not_a_leaf ();
}
asm ("\n/*@_init_PROLOG_UNPAUSES*/");
@@ -121,6 +121,7 @@ asm ("\n/*@_fini_PROLOG_BEGINS*/");
SECTION (".fini")
HIDDEN(_fini)
+extern void i_am_not_a_leaf2 (void);
extern void _fini (void);
void _fini (void)
{
@@ -134,7 +135,6 @@ void _fini (void)
/* Let GCC know that _fini is not a leaf function by having a dummy
function call here. We arrange for this call to be omitted from
either crt file. */
- extern void i_am_not_a_leaf2 (void);
i_am_not_a_leaf2 ();
}
diff --git a/libc/sysdeps/linux/sh/__init_brk.c b/libc/sysdeps/linux/sh/__init_brk.c
index 93aa37d8e..7f9cd3c31 100644
--- a/libc/sysdeps/linux/sh/__init_brk.c
+++ b/libc/sysdeps/linux/sh/__init_brk.c
@@ -1,8 +1,8 @@
/* From libc-5.3.12 */
+#include <errno.h>
#include <unistd.h>
#include <sys/syscall.h>
-#include <errno.h>
void * ___brk_addr = 0;
@@ -10,7 +10,7 @@ void * ___brk_addr = 0;
_syscall1(void *, _brk, void *, ptr);
int
-__init_brk ()
+__init_brk (void)
{
if (___brk_addr == 0)
{
diff --git a/libc/sysdeps/linux/sh/brk.c b/libc/sysdeps/linux/sh/brk.c
index c7943c1fd..4f97fb084 100644
--- a/libc/sysdeps/linux/sh/brk.c
+++ b/libc/sysdeps/linux/sh/brk.c
@@ -1,12 +1,12 @@
/* From libc-5.3.12 */
+#include <errno.h>
#include <unistd.h>
#include <sys/syscall.h>
-#include <errno.h>
extern void * ___brk_addr;
-extern int __init_brk ();
+extern int __init_brk (void);
extern void *_brk(void *ptr);
int brk(void * end_data_seg)
diff --git a/libc/sysdeps/linux/sh/sbrk.c b/libc/sysdeps/linux/sh/sbrk.c
index 3dd5a46f0..c39d60063 100644
--- a/libc/sysdeps/linux/sh/sbrk.c
+++ b/libc/sysdeps/linux/sh/sbrk.c
@@ -1,8 +1,8 @@
/* From libc-5.3.12 */
+#include <errno.h>
#include <unistd.h>
#include <sys/syscall.h>
-#include <errno.h>
extern void * ___brk_addr;
@@ -14,7 +14,7 @@ sbrk(intptr_t increment)
{
if (__init_brk () == 0)
{
- void * tmp = ___brk_addr+increment;
+ char * tmp = (char*)___brk_addr+increment;
___brk_addr = _brk(tmp);
if (___brk_addr == tmp)
return tmp-increment;