/branches/dynload/uspace/lib/rtld/arch/ia32/src/bootstrap.c |
---|
44,14 → 44,14 |
static void kputint(unsigned i) |
{ |
unsigned dummy; |
asm volatile ( |
"movl $32, %%eax;" |
"int $0x30" |
: "=d" (dummy) /* output - %edx clobbered */ |
: "d" (i) /* input */ |
: "%eax","%ecx" /* all scratch registers clobbered */ |
); |
// unsigned dummy; |
// asm volatile ( |
// "movl $32, %%eax;" |
// "int $0x30" |
// : "=d" (dummy) /* output - %edx clobbered */ |
// : "d" (i) /* input */ |
// : "%eax","%ecx" /* all scratch registers clobbered */ |
// ); |
} |
void __bootstrap(pcb_t *pcb) |
/branches/dynload/uspace/lib/libc-shared/Makefile |
---|
60,7 → 60,7 |
.PHONY: all clean |
all: $(OUTPUT) |
all: $(OUTPUT) arch/$(ARCH)/_link.ld |
inc: |
ln -sfn ../arch/$(ARCH)/include include/arch |
68,11 → 68,14 |
-include Makefile.depend |
clean: |
-rm -f $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm $(OUTPUT).sections Makefile.depend *.o arch/$(ARCH)/_link.ld include/arch |
-rm -f $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm $(OUTPUT).sections Makefile.depend *.o arch/$(ARCH)/_lib.ld include/arch |
find arch/$(ARCH)/ -name '*.o' -follow -exec rm \{\} \; |
$(OUTPUT): $(LIBS) arch/$(ARCH)/_link.ld |
$(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(LIBS) -o $@ -Map $(OUTPUT).map |
$(OUTPUT): $(LIBS) arch/$(ARCH)/_lib.ld |
$(LD) -T arch/$(ARCH)/_lib.ld $(LFLAGS) $(LIBS) -o $@ -Map $(OUTPUT).map |
arch/$(ARCH)/_lib.ld: arch/$(ARCH)/_lib.ld.in |
$(CC) $(DEFS) $(CFLAGS) -DLIBC_PREFIX=$(LIBC_PREFIX) -E -x c $< | grep -v "^\#" > $@ |
arch/$(ARCH)/_link.ld: arch/$(ARCH)/_link.ld.in |
$(CC) $(DEFS) $(CFLAGS) -DLIBC_PREFIX=$(LIBC_PREFIX) -E -x c $< | grep -v "^\#" > $@ |
/branches/dynload/uspace/lib/libc-shared/arch/ppc32/_link.ld.in |
---|
1,11 → 1,17 |
STARTUP(LIBC_PREFIX/arch/ARCH/src/entry.o) |
ENTRY(__entry) |
PHDRS { |
interp PT_INTERP; |
text PT_LOAD FLAGS(5); |
data PT_LOAD FLAGS(6); |
} |
SECTIONS { |
.interp : { |
*(.interp); |
} :interp |
. = 0x1000; |
.init ALIGN(0x1000) : SUBALIGN(0x1000) { |
19,7 → 25,7 |
.rel.plt ALIGN(0x1000) : { |
*(.rel.plt); |
} |
} :text |
/* |
*.rel.dyn MUST FOLLOW IMMEDIATELY after .rel.plt |
* without alignment gap or DT_REL will be broken |
56,7 → 62,7 |
*(.got.plt); |
} :data |
.tdata : { |
/* .tdata : { |
_tdata_start = .; |
*(.tdata); |
_tdata_end = .; |
67,6 → 73,7 |
_tbss_end = .; |
} :data |
_tls_alignment = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)); |
*/ |
.bss : { |
*(.sbss); |
*(COMMON); |
Property changes: |
Added: svn:mergeinfo |
/branches/dynload/uspace/lib/libc-shared/arch/ppc32/_lib.ld.in |
---|
0,0 → 1,82 |
ENTRY(__entry) |
PHDRS { |
text PT_LOAD FLAGS(5); |
data PT_LOAD FLAGS(6); |
} |
SECTIONS { |
. = 0x1000; |
.init ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.init); |
} :text |
.text : { |
*(.text); |
*(.text.*); |
*(.rodata*); |
} :text |
.rel.plt ALIGN(0x1000) : { |
*(.rel.plt); |
} |
/* |
*.rel.dyn MUST FOLLOW IMMEDIATELY after .rel.plt |
* without alignment gap or DT_REL will be broken |
*/ |
.rel.dyn : { |
*(.rel.*); |
} :text |
.dynamic ALIGN(0x1000) : { |
*(.dynamic); |
} :text |
.dynsym ALIGN(0x1000) : { |
*(.dynsym); |
} :text |
.dynstr ALIGN(0x1000) : { |
*(.dynstr); |
} :text |
.data ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.data); |
*(.sdata); |
} :data |
.data.rel ALIGN(0x1000) : { |
*(.data.rel); |
} :data |
.got ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.got); |
} :data |
.got.plt ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.got.plt); |
} :data |
.tdata : { |
_tdata_start = .; |
*(.tdata); |
_tdata_end = .; |
} :data |
.tbss : { |
_tbss_start = .; |
*(.tbss); |
_tbss_end = .; |
} :data |
_tls_alignment = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)); |
.bss : { |
*(.sbss); |
*(COMMON); |
*(.bss); |
} :data |
.plt ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.plt); |
} :data |
. = ALIGN(0x1000); |
_heap = .; |
} |
Property changes: |
Added: svn:mergeinfo |
/branches/dynload/uspace/lib/libc-shared/arch/ia32/_link.ld.in |
---|
1,11 → 1,17 |
STARTUP(LIBC_PREFIX/arch/ARCH/src/entry.o) |
ENTRY(__entry) |
PHDRS { |
interp PT_INTERP; |
text PT_LOAD FLAGS(5); |
data PT_LOAD FLAGS(6); |
} |
SECTIONS { |
.interp : { |
*(.interp); |
} :interp |
. = 0x1000; |
.init ALIGN(0x1000) : SUBALIGN(0x1000) { |
32,6 → 38,7 |
*(.plt); |
} :text |
.dynamic ALIGN(0x1000) : { |
*(.dynamic); |
} :text |
64,7 → 71,7 |
*(.bss); |
} :data |
.tdata : { |
/* .tdata : { |
_tdata_start = .; |
*(.tdata); |
_tdata_end = .; |
75,7 → 82,8 |
_tbss_end = .; |
} :data |
_tls_alignment = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)); |
*/ |
. = ALIGN(0x1000); |
_heap = .; |
} |
Property changes: |
Added: svn:mergeinfo |
/branches/dynload/uspace/lib/libc-shared/arch/ia32/_lib.ld.in |
---|
0,0 → 1,81 |
ENTRY(__entry) |
PHDRS { |
text PT_LOAD FLAGS(5); |
data PT_LOAD FLAGS(6); |
} |
SECTIONS { |
. = 0x1000; |
.init ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.init); |
} :text |
.text : { |
*(.text); |
*(.text.*); |
*(.rodata*); |
} :text |
.rel.plt ALIGN(0x1000) : { |
*(.rel.plt); |
} |
/* |
*.rel.dyn MUST FOLLOW IMMEDIATELY after .rel.plt |
* without alignment gap or DT_REL will be broken |
*/ |
.rel.dyn : { |
*(.rel.*); |
} :text |
.plt ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.plt); |
} :text |
.dynamic ALIGN(0x1000) : { |
*(.dynamic); |
} :text |
.dynsym ALIGN(0x1000) : { |
*(.dynsym); |
} :text |
.dynstr ALIGN(0x1000) : { |
*(.dynstr); |
} :text |
.data ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.data); |
} :data |
.data.rel ALIGN(0x1000) : { |
*(.data.rel); |
} :data |
.got ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.got); |
} :data |
.got.plt ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.got.plt); |
} :data |
.bss : { |
*(COMMON); |
*(.bss); |
} :data |
.tdata : { |
_tdata_start = .; |
*(.tdata); |
_tdata_end = .; |
} :data |
.tbss : { |
_tbss_start = .; |
*(.tbss); |
_tbss_end = .; |
} :data |
_tls_alignment = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)); |
. = ALIGN(0x1000); |
_heap = .; |
} |
Property changes: |
Added: svn:mergeinfo |