/branches/dynload/uspace/app/dltest/_link.ld.in |
---|
File deleted |
/branches/dynload/uspace/app/dltest/dltest.c |
---|
38,16 → 38,20 |
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 */ |
); |
// unsigned dummy; |
// asm volatile ( |
// "movl $30, %%eax;" |
// "int $0x30" |
// : "=d" (dummy) /* output - %edx clobbered */ |
// : "d" (i) /* input */ |
// : "%eax","%ecx" /* all scratch registers clobbered */ |
// ); |
} |
void __tls_get_addr(void) |
{ |
} |
int main(int argc, char *argv[]) |
{ |
kputint(-1); |
/branches/dynload/uspace/app/dltest/Makefile |
---|
68,18 → 68,18 |
-include Makefile.depend |
clean: |
-rm -f $(OUTPUT) $(OBJECTS) $(OUTPUT).map $(OUTPUT).disasm Makefile.depend _link.ld |
-rm -f $(OUTPUT) $(OBJECTS) $(OUTPUT).map $(OUTPUT).disasm Makefile.depend arch/$(ARCH)/_link.ld |
depend: |
$(CC) $(DEFS) $(CFLAGS) -M $(SOURCES) > Makefile.depend |
$(OUTPUT): $(OBJECTS) $(LIBS) _link.ld |
$(LD) -T _link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map |
$(OUTPUT): $(OBJECTS) $(LIBS) arch/$(ARCH)/_link.ld |
$(LD) -T arch/$(ARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map |
disasm: |
$(OBJDUMP) -d $(OUTPUT) >$(OUTPUT).disasm |
_link.ld: _link.ld.in |
arch/$(ARCH)/_link.ld: arch/$(ARCH)/_link.ld.in |
$(CC) $(DEFS) $(CFLAGS) -DLIBC_PREFIX=$(LIBC_PREFIX) -E -x c $< | grep -v "^\#" > $@ |
%.o: %.S |
/branches/dynload/uspace/app/dltest/arch/ppc32/_link.ld.in |
---|
0,0 → 1,88 |
STARTUP(LIBC_PREFIX/arch/ARCH/src/entry.o) |
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 |
.interp : { |
*(.interp); |
} |
.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 = .; |
} |
/branches/dynload/uspace/app/dltest/arch/ia32/_link.ld.in |
---|
0,0 → 1,87 |
STARTUP(LIBC_PREFIX/arch/ARCH/src/entry.o) |
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 |
.interp : { |
*(.interp); |
} :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 = .; |
} |