summaryrefslogtreecommitdiffstats
path: root/libexec
diff options
context:
space:
mode:
authorpaul <paul@FreeBSD.org>1993-11-09 04:44:30 +0000
committerpaul <paul@FreeBSD.org>1993-11-09 04:44:30 +0000
commit7666248deac389d89c43c64f9e46c12ff3396b93 (patch)
treea5788ed4c0af262ba6f83173cf6c7713cc757141 /libexec
parentfe43b03bfb7b42dc633611ddb6d8340211e2e957 (diff)
downloadFreeBSD-src-7666248deac389d89c43c64f9e46c12ff3396b93.zip
FreeBSD-src-7666248deac389d89c43c64f9e46c12ff3396b93.tar.gz
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.
Diffstat (limited to 'libexec')
-rw-r--r--libexec/rtld-aout/Makefile4
-rw-r--r--libexec/rtld-aout/rtld.c27
2 files changed, 13 insertions, 18 deletions
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 <machine/vmparam.h>
#include <sys/param.h>
#include <stdio.h>
#include <stdlib.h>
@@ -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
OpenPOWER on IntegriCloud