From 7666248deac389d89c43c64f9e46c12ff3396b93 Mon Sep 17 00:00:00 2001 From: paul Date: Tue, 9 Nov 1993 04:44:30 +0000 Subject: Added -lgcc_pic to Makefile -- Why do we need this and NetBSD don't ?? Incorporated patch by Guido (inspired by Davidg) that fixes stack problem. May not be final fix but it works more than the current method. --- libexec/rtld-aout/Makefile | 4 ++-- libexec/rtld-aout/rtld.c | 27 +++++++++++---------------- 2 files changed, 13 insertions(+), 18 deletions(-) (limited to 'libexec') diff --git a/libexec/rtld-aout/Makefile b/libexec/rtld-aout/Makefile index a7975f6..06b215c 100644 --- a/libexec/rtld-aout/Makefile +++ b/libexec/rtld-aout/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.3 1993/11/08 13:20:39 pk Exp $ +# $Id: Makefile,v 1.3 1993/11/09 04:19:29 paul Exp $ PROG= ld.so SRCS= mdprologue.S rtld.c shlib.c etc.c md.c @@ -8,7 +8,7 @@ LDDIR?= $(.CURDIR)/.. PICFLAG=-fpic CFLAGS += -I$(LDDIR) -I$(.CURDIR) -I$(LDDIR)/$(MACHINE) -O $(PICFLAG) -DRTLD LDFLAGS = -Bshareable -Bsymbolic -assert nosymbolic -LIBS = -lc_pic +LIBS = -lc_pic -lgcc_pic BINDIR= /usr/libexec .PATH: $(LDDIR) $(LDDIR)/$(MACHINE) diff --git a/libexec/rtld-aout/rtld.c b/libexec/rtld-aout/rtld.c index e833787..9c4f0bc 100644 --- a/libexec/rtld-aout/rtld.c +++ b/libexec/rtld-aout/rtld.c @@ -27,9 +27,10 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: rtld.c,v 1.8 1993/11/08 13:20:40 pk Exp $ + * $Id: rtld.c,v 1.2 1993/11/09 04:19:31 paul Exp $ */ +#include #include #include #include @@ -888,11 +889,10 @@ int *usehints; if (ld_path != NULL) { /* Prefer paths from LD_LIBRARY_PATH */ - while ((cp = strsep(&ld_path, ":")) != NULL) { + while ((cp = strtok(ld_path, ":")) != NULL) { + ld_path = NULL; hint = findhint(name, major, minor, cp); - if (ld_path) - *(ld_path-1) = ':'; if (hint) return hint; } @@ -951,18 +951,13 @@ init_brk() _exit(1); } - /* - * Walk to the top of stack - */ - if (*cpp) { - while (*cpp) cpp++; - cp = *--cpp; - while (*cp) cp++; - } else - cp = (char *)&cp; - - curbrk = (caddr_t) - (((long)(cp - 1 - rlim.rlim_cur) + PAGSIZ) & ~(PAGSIZ - 1)); + if (environ < USRSTACK - MAXSSIZ) { + curbrk = (caddr_t) + (((long)(USRSTACK - MAXSSIZ - rlim.rlim_cur) + PAGSIZ) & ~(PAGSIZ - 1)); + } else { + curbrk = (caddr_t) + (((long)(USRSTACK - rlim.rlim_cur) + PAGSIZ) & ~(PAGSIZ - 1)) ; + } } void -- cgit v1.1