diff options
author | raf <none@none> | 2007-03-02 12:14:51 -0800 |
---|---|---|
committer | raf <none@none> | 2007-03-02 12:14:51 -0800 |
commit | e127a3e717f822eb855235fa3bd08235b2cf533d (patch) | |
tree | 48f4ca21ce56f5c5987bc54f123027c5180d9969 /usr/src/lib/libc | |
parent | c8589f13ba961772dd5a0d699c5bb926f3006c33 (diff) | |
download | illumos-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.targ | 8 | ||||
-rw-r--r-- | usr/src/lib/libc/amd64/crt/_rtboot.s | 193 | ||||
-rw-r--r-- | usr/src/lib/libc/i386/Makefile.com | 15 | ||||
-rw-r--r-- | usr/src/lib/libc/req.flg | 8 | ||||
-rw-r--r-- | usr/src/lib/libc/sparc/Makefile | 15 |
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) \ |