Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2955 → Rev 2956

/branches/dynload/uspace/lib/rtld/ulibc.c
File deleted
/branches/dynload/uspace/lib/rtld/Makefile
32,7 → 32,7
## Setup toolchain
#
 
LIBC_PREFIX = ../../lib/libc-shared
LIBC_PREFIX = ../../lib/libc
SOFTINT_PREFIX = ../../lib/softint
include $(LIBC_PREFIX)/Makefile.toolchain
include arch/$(ARCH)/Makefile.inc
40,8 → 40,7
CFLAGS += -I../../srv/kbd/include -I../../srv/console -fPIC -O0
LFLAGS = -shared --no-undefined
 
# LIBS = $(LIBC_PREFIX)/libc-pic.a
LIBS =
LIBS = $(LIBC_PREFIX)/libc.pic.a
DEFS += -DRELEASE=\"$(RELEASE)\"
 
ifdef REVISION
57,9 → 56,7
 
OUTPUT = rtld.so
GENERIC_SOURCES = \
rtld.c \
ulibc.c \
syscall.S
rtld.c
 
GENERIC_OBJECTS := $(addsuffix .o,$(basename $(GENERIC_SOURCES)))
ARCH_OBJECTS := $(addsuffix .o,$(basename $(ARCH_SOURCES)))
78,11 → 75,9
$(CC) $(DEFS) $(CFLAGS) -M $(ARCH_SOURCES) $(GENERIC_SOURCES)> Makefile.depend
 
$(OUTPUT): $(ARCH_OBJECTS) $(GENERIC_OBJECTS) $(LIBS) arch/$(ARCH)/_link.ld
# $(LD) -T $(LIBC_PREFIX)/arch/$(ARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
$(LD) -T arch/$(ARCH)/_link.ld $(ARCH_OBJECTS) $(GENERIC_OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
 
disasm:
# $(OBJDUMP) -h -r -R -t -T -D -z -s $(OUTPUT) >$(OUTPUT).disasm
$(OBJDUMP) -d -S -s $(OUTPUT) >$(OUTPUT).disasm
 
sections:
/branches/dynload/uspace/lib/rtld/arch/ia32/runtime.c
0,0 → 1,98
/*
* Copyright (c) 2008 Jiri Svoboda
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* - The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
/** @addtogroup rtld rtld
* @brief
* @{
*/
/**
* @file
*/
 
#include <sys/types.h>
#include <align.h>
#include <tls.h>
 
void _putint(int i);
/* FIXME */
void __udivdi3(void);
void __umoddi3(void);
 
static void kputint(unsigned i)
{
unsigned dummy;
asm volatile (
"movl $30, %%eax;"
"int $0x30"
: "=d" (dummy) /* output - %edx clobbered */
: "d" (i) /* input */
: "%eax","%ecx" /* all scratch registers clobbered */
);
}
 
typedef struct {
unsigned long int ti_module;
unsigned long int ti_offset;
} tls_index;
 
void __attribute__ ((__regparm__ (1)))
*___tls_get_addr(tls_index *ti);
 
void __attribute__ ((__regparm__ (1)))
*___tls_get_addr(tls_index *ti)
{
size_t tls_size;
uint8_t *tls;
 
/* Calculate size of TLS block */
tls_size = ALIGN_UP(&_tbss_end - &_tdata_start, &_tls_alignment);
 
/* The TLS block is just before TCB */
tls = (uint8_t *)__tcb_get() - tls_size;
 
return tls + ti->ti_offset;
}
 
void __umoddi3(void)
{
kputint(0x101);
*(int *)0 = 0; /* cause a page fault */
}
 
void __udivdi3(void)
{
kputint(0x102);
*(int *)0 = 0; /* cause a page fault */
}
 
void _putint(int i)
{
}
 
/** @}
*/
/branches/dynload/uspace/lib/rtld/arch/ia32/Makefile.inc
28,4 → 28,6
 
ARCH_SOURCES := \
arch/$(ARCH)/entry.s \
arch/$(ARCH)/bootstrap.c
arch/$(ARCH)/bootstrap.c \
arch/$(ARCH)/runtime.c