summaryrefslogtreecommitdiff
path: root/usr/src/lib/libc
diff options
context:
space:
mode:
authorraf <none@none>2007-03-02 12:14:51 -0800
committerraf <none@none>2007-03-02 12:14:51 -0800
commite127a3e717f822eb855235fa3bd08235b2cf533d (patch)
tree48f4ca21ce56f5c5987bc54f123027c5180d9969 /usr/src/lib/libc
parentc8589f13ba961772dd5a0d699c5bb926f3006c33 (diff)
downloadillumos-joyent-e127a3e717f822eb855235fa3bd08235b2cf533d.tar.gz
6524709 executables using /usr/lib/libc.so.1 as the ELF interpreter dump core
--HG-- rename : usr/src/cmd/sgs/rtld/amd64/dtrace_data.c => deleted_files/usr/src/cmd/sgs/rtld/amd64/dtrace_data.c rename : usr/src/cmd/sgs/rtld/i386/dtrace_data.c => deleted_files/usr/src/cmd/sgs/rtld/i386/dtrace_data.c rename : usr/src/lib/libc/amd64/crt/_rtboot.s => deleted_files/usr/src/lib/libc/amd64/crt/_rtboot.s rename : usr/src/cmd/sgs/rtld/sparc/dtrace_data.c => usr/src/common/dtrace/dtrace_data.c
Diffstat (limited to 'usr/src/lib/libc')
-rw-r--r--usr/src/lib/libc/Makefile.targ8
-rw-r--r--usr/src/lib/libc/amd64/crt/_rtboot.s193
-rw-r--r--usr/src/lib/libc/i386/Makefile.com15
-rw-r--r--usr/src/lib/libc/req.flg8
-rw-r--r--usr/src/lib/libc/sparc/Makefile15
5 files changed, 38 insertions, 201 deletions
diff --git a/usr/src/lib/libc/Makefile.targ b/usr/src/lib/libc/Makefile.targ
index 3f851a6230..38d73741c3 100644
--- a/usr/src/lib/libc/Makefile.targ
+++ b/usr/src/lib/libc/Makefile.targ
@@ -19,7 +19,7 @@
# CDDL HEADER END
#
#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "%Z%%M% %I% %E% SMI"
@@ -272,7 +272,11 @@ $(COMOBJS:%=pics/%): $(SRC)/common/util/$$(@F:.o=.c)
$(COMPILE.c) -o $@ $(SRC)/common/util/$(@F:.o=.c)
$(POST_PROCESS_O)
-# dtrace rules
+$(DTRACEOBJS:%=pics/%): $(SRC)/common/dtrace/$$(@F:.o=.c)
+ $(COMPILE.c) -o $@ $(SRC)/common/dtrace/$(@F:.o=.c)
+ $(POST_PROCESS_O)
+
+# DTrace rules
pics/%.o: ../port/threads/%.d $(THREADSOBJS:%=pics/%)
$(COMPILE.d) -C -xlazyload -s $< -o $@ $(THREADSOBJS:%=pics/%)
$(POST_PROCESS_O)
diff --git a/usr/src/lib/libc/amd64/crt/_rtboot.s b/usr/src/lib/libc/amd64/crt/_rtboot.s
deleted file mode 100644
index e5bf91a58c..0000000000
--- a/usr/src/lib/libc/amd64/crt/_rtboot.s
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
- .ident "%Z%%M% %I% %E% SMI"
-
- .file "%M%"
-
-/ bootstrap routine for run-time linker
-/ we get control from exec which has loaded our text and
-/ data into the process' address space and created the process
-/ stack
-/
-/ on entry, the process stack looks like this:
-/
-/ # <- %esp
-/_______________________# high addresses
-/ strings #
-/_______________________#
-/ 0 word #
-/_______________________#
-/ Auxiliary #
-/ entries #
-/ ... #
-/ (size varies) #
-/_______________________#
-/ 0 word #
-/_______________________#
-/ Environment #
-/ pointers #
-/ ... #
-/ (one word each) #
-/_______________________#
-/ 0 word #
-/_______________________#
-/ Argument # low addresses
-/ pointers #
-/ Argc words #
-/_______________________#
-/ argc #
-/_______________________# <- %ebp
-
-#include <SYS.h>
-
- .set EB_NULL,0
- .set EB_DYNAMIC,1
- .set EB_LDSO_BASE,2
- .set EB_ARGV,3
- .set EB_ENVP,4
- .set EB_AUXV,5
- .set EB_DEVZERO,6
- .set EB_PAGESIZE,7
- .set EB_MAX,8
- .set EB_MAX_SIZE32,64
-
- .text
- .globl __rtboot
- .globl __rtld
- .type __rtboot,@function
- .align 4
-__rtboot:
- movl %esp,%ebp
- subl $EB_MAX_SIZE32,%esp / make room for a max sized boot vector
- movl %esp,%esi / use esi as a pointer to &eb[0]
- movl $EB_ARGV,0(%esi) / set up tag for argv
- leal 4(%ebp),%eax / get address of argv
- movl %eax,4(%esi) / put after tag
- movl $EB_ENVP,8(%esi) / set up tag for envp
- movl (%ebp),%eax / get # of args
- addl $2,%eax / one for the zero & one for argc
- leal (%ebp,%eax,4),%edi / now points past args & @ envp
- movl %edi,12(%esi) / set envp
- addl $-4,%edi / start loop at &env[-1]
-.L00: addl $4,%edi / next
- cmpl $0,(%edi) / search for 0 at end of env
- jne .L00
- addl $4,%edi / advance past 0
- movl $EB_AUXV,16(%esi) / set up tag for auxv
- movl %edi,20(%esi) / point to auxv
- movl $EB_NULL,24(%esi) / set up NULL tag
- call .L01 / only way to get IP into a register
-.L01: popl %ebx / pop the IP we just "pushed"
- leal s.EMPTY - .L01(%ebx),%eax
- pushl %eax
- leal s.ZERO - .L01(%ebx),%eax
- pushl %eax
- leal s.LDSO - .L01(%ebx),%eax
- pushl %eax
- movl %esp,%edi / save pointer to strings
- leal f.MUNMAP - .L01(%ebx),%eax
- pushl %eax
- leal f.CLOSE - .L01(%ebx),%eax
- pushl %eax
- leal f.SYSCONFIG - .L01(%ebx),%eax
- pushl %eax
- leal f.FSTAT - .L01(%ebx),%eax
- pushl %eax
- leal f.MMAP - .L01(%ebx),%eax
- pushl %eax
- leal f.OPEN - .L01(%ebx),%eax
- pushl %eax
- leal f.PANIC - .L01(%ebx),%eax
- pushl %eax
- movl %esp,%ecx / save pointer to functions
-
- pushl %ecx / address of functions
- pushl %edi / address of strings
- pushl %esi / &eb[0]
- call __rtld / __rtld(&eb[0], strings, funcs)
- movl %esi,%esp / restore the stack (but leaving boot vector)
- jmp *%eax / transfer control to ld.so.1
- .size __rtboot,.-__rtboot
-
- .align 4
-s.LDSO: .string "/usr/lib/ld.so.1"
-s.ZERO: .string "/dev/zero"
-s.EMPTY: .string "(null)"
-s.ERROR: .string ": no (or bad) /usr/lib/ld.so.1\n"
-l.ERROR:
-
- .align 4
-f.PANIC:
- movl %esp,%ebp
-/ Add using of argument string
- pushl $l.ERROR - s.ERROR
- call .L02
-.L02: popl %ebx
- leal s.ERROR - .L02(%ebx),%eax
- pushl %eax
- pushl $2
- call f.WRITE
- jmp f.EXIT
-/ Not reached
-
-f.OPEN:
- movl $SYS_open,%eax
- jmp __syscall
-f.MMAP:
- movl $SYS_mmap,%eax
- jmp __syscall
-f.MUNMAP:
- movl $SYS_munmap,%eax
- jmp __syscall
-f.READ:
- movl $SYS_read,%eax
- jmp __syscall
-f.WRITE:
- movl $SYS_write,%eax
- jmp __syscall
-f.LSEEK:
- movl $SYS_lseek,%eax
- jmp __syscall
-f.CLOSE:
- movl $SYS_close,%eax
- jmp __syscall
-f.FSTAT:
- movl $SYS_fxstat,%eax / NEEDSWORK: temp kludge for G6
- jmp __syscall
-f.SYSCONFIG:
- movl $SYS_sysconfig,%eax
- jmp __syscall
-f.EXIT:
- movl $SYS_exit,%eax
-/ jmp __syscall
-__syscall:
- lcall $SYSCALL_TRAPNUM,$0
- jc __err_exit
- ret
-__err_exit:
- movl $-1,%eax
- ret
diff --git a/usr/src/lib/libc/i386/Makefile.com b/usr/src/lib/libc/i386/Makefile.com
index 17b3be0244..196c00b14e 100644
--- a/usr/src/lib/libc/i386/Makefile.com
+++ b/usr/src/lib/libc/i386/Makefile.com
@@ -19,7 +19,7 @@
# CDDL HEADER END
#
#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "%Z%%M% %I% %E% SMI"
@@ -93,6 +93,9 @@ COMOBJS= \
strtol.o \
strtoul.o
+DTRACEOBJS= \
+ dtrace_data.o
+
GENOBJS= \
_div64.o \
_divdi3.o \
@@ -874,6 +877,7 @@ MOSTOBJS= \
$(FPASMOBJS) \
$(ATOMICOBJS) \
$(COMOBJS) \
+ $(DTRACEOBJS) \
$(GENOBJS) \
$(PORTFP) \
$(PORTGEN) \
@@ -971,6 +975,14 @@ DYNFLAGS += $(RTLDINFO)
DYNFLAGS += -e __rtboot
DYNFLAGS += $(EXTN_DYNFLAGS)
+# Inform the kernel about the initial DTrace area (in case
+# libc is being used as the interpreter / runtime linker).
+DTRACE_DATA = -zdtrace=dtrace_data
+DYNFLAGS += $(DTRACE_DATA)
+
+# DTrace needs an executable data segment.
+NX_MAP=
+
BUILD.s= $(AS) $(ASFLAGS) $< -o $@
# Override this top level flag so the compiler builds in its native
@@ -1001,6 +1013,7 @@ CLOBBERFILES += $(LIB_PIC)
SRCS= \
$(ATOMICOBJS:%.o=$(SRC)/common/atomic/%.c) \
$(COMOBJS:%.o=$(SRC)/common/util/%.c) \
+ $(DTRACEOBJS:%.o=$(SRC)/common/dtrace/%.c) \
$(PORTFP:%.o=../port/fp/%.c) \
$(PORTGEN:%.o=../port/gen/%.c) \
$(PORTI18N:%.o=../port/i18n/%.c) \
diff --git a/usr/src/lib/libc/req.flg b/usr/src/lib/libc/req.flg
index c35743d94a..79170e532a 100644
--- a/usr/src/lib/libc/req.flg
+++ b/usr/src/lib/libc/req.flg
@@ -3,9 +3,8 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -21,11 +20,12 @@
# CDDL HEADER END
#
#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "%Z%%M% %I% %E% SMI"
find_files "s.*" usr/src/common/atomic
find_files "s.*" usr/src/common/util
+find_files "s.*" usr/src/common/dtrace
find_files "s.*" usr/src/lib/common
diff --git a/usr/src/lib/libc/sparc/Makefile b/usr/src/lib/libc/sparc/Makefile
index eced13c518..b041d26ac4 100644
--- a/usr/src/lib/libc/sparc/Makefile
+++ b/usr/src/lib/libc/sparc/Makefile
@@ -19,7 +19,7 @@
# CDDL HEADER END
#
#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "%Z%%M% %I% %E% SMI"
@@ -113,6 +113,9 @@ COMOBJS= \
strtol.o \
strtoul.o
+DTRACEOBJS= \
+ dtrace_data.o
+
GENOBJS= \
_getsp.o \
_xregs_clrptr.o \
@@ -901,6 +904,7 @@ MOSTOBJS= \
$(FPASMOBJS) \
$(ATOMICOBJS) \
$(COMOBJS) \
+ $(DTRACEOBJS) \
$(GENOBJS) \
$(PORTFP) \
$(PORTGEN) \
@@ -988,6 +992,14 @@ DYNFLAGS += $(RTLDINFO)
DYNFLAGS += -e __rtboot
DYNFLAGS += $(EXTN_DYNFLAGS)
+# Inform the kernel about the initial DTrace area (in case
+# libc is being used as the interpreter / runtime linker).
+DTRACE_DATA = -zdtrace=dtrace_data
+DYNFLAGS += $(DTRACE_DATA)
+
+# DTrace needs an executable data segment.
+NX_MAP=
+
BUILD.s= $(AS) $(ASFLAGS) $< -o $@
# Override this top level flag so the compiler builds in its native
@@ -1018,6 +1030,7 @@ CLOBBERFILES += $(LIB_PIC)
SRCS= \
$(ATOMICOBJS:%.o=$(SRC)/common/atomic/%.c) \
$(COMOBJS:%.o=$(SRC)/common/util/%.c) \
+ $(DTRACEOBJS:%.o=$(SRC)/common/dtrace/%.c) \
$(PORTFP:%.o=../port/fp/%.c) \
$(PORTGEN:%.o=../port/gen/%.c) \
$(PORTI18N:%.o=../port/i18n/%.c) \