Fw: Suche Linux-Anschluss im Raum Bi-Sennestadt
Pfeiffer
familie_pfeiffer at arcor.de
Tue Apr 24 22:38:09 CEST 2007
> Jan 'RedBully' Seiffert wrote:
>> Pfeiffer wrote:
> [snip]
>>> Der Adressbereich wird 16MB betragen und sollte ab Adresse $00000000 bis
>>> $010000000 gemapped werden.
> [snip]
>> 6) Das kann der Emulator theoretisch auch an Addresse $00000..., da ist
>> nur ein Problem: dort ist normalerweise das Programm/der Emulatorcode
>> selbst (bzw. ein bischen oberhalb der Addresse)
>>
>
> Hmmm, OK, i korregiere mich:
>
> Nach Linux-ABI starten Programme ab der Addresse 0x08048000, das ist so
> in den Default-Linkerscripten hinterlegt (objdump -f -p
> /bin/irgendeinprogramm). Das ueberschneidet sich nur mit deinen 16 MB.
>
> Aber wer sagt, das man das nicht aendern koennte?
> Man nehme das default Linkerscript (bei mir unter
> /usr/lib/binutils/$VERSION/ldscripts/elf_i386.x), kopiere es zu seinem
> Source, aendere die Startadresse und:
>
> gcc -o hello hello.c -Wl,-T,hello.x
>
> man erhaelt:
>
> hello: file format elf32-i386
> architecture: i386, flags 0x00000112:
> EXEC_P, HAS_SYMS, D_PAGED
> start address 0x10000300
>
> Program Header:
> PHDR off 0x00000034 vaddr 0x10000034 paddr 0x10000034 align 2**2
> filesz 0x00000100 memsz 0x00000100 flags r-x
> INTERP off 0x00000134 vaddr 0x10000134 paddr 0x10000134 align 2**0
> filesz 0x00000013 memsz 0x00000013 flags r--
> LOAD off 0x00000000 vaddr 0x10000000 paddr 0x10000000 align 2**12
> filesz 0x0000049c memsz 0x0000049c flags r-x
> LOAD off 0x0000049c vaddr 0x1000149c paddr 0x1000149c align 2**12
> filesz 0x00000104 memsz 0x00000108 flags rw-
> DYNAMIC off 0x000004b0 vaddr 0x100014b0 paddr 0x100014b0 align 2**2
> filesz 0x000000c8 memsz 0x000000c8 flags rw-
> NOTE off 0x00000148 vaddr 0x10000148 paddr 0x10000148 align 2**2
> filesz 0x00000020 memsz 0x00000020 flags r--
> STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2
> filesz 0x00000000 memsz 0x00000000 flags rw-
> PAX_FLAGS off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2
> filesz 0x00000000 memsz 0x00000000 flags --- 2800
>
> Dynamic Section:
> NEEDED libc.so.6
> INIT 0x100002a0
> FINI 0x1000046c
> HASH 0x10000168
> STRTAB 0x100001f4
> SYMTAB 0x10000194
> STRSZ 0x5e
> SYMENT 0x10
> DEBUG 0x0
> PLTGOT 0x1000157c
> PLTRELSZ 0x18
> PLTREL 0x11
> JMPREL 0x10000288
> REL 0x10000280
> RELSZ 0x8
> RELENT 0x8
> VERNEED 0x10000260
> VERNEEDNUM 0x1
> VERSYM 0x10000252
>
> Aha, die untersten 16MB sind frei. Nun kann man sich was dahin mappen.
> Es laeuft sogar.
>
> Nur eins ist damit klar: man verlaesst alle Standard-Pfade, kann gut
> sein, das damit etwas/eine lib nicht klar kommt.
> Und nebenbei ist man nach dem mappen nicht mehr dagegen gefeit Unsinn
> mit einem NULL-Pointer zu machen...
>
Da geht es schon los.
Ich habe kein richtiges Linux installiert, noch ist mir bekannt welches für
das entwickeln das richtige ist.
Welche Entwicklerumgebung installiere ich und wie installiere ich Sie.
Deshalb wäre ein "über die Schulter schauen" mal ganz hilfreich, damit ich
überhaupt den Fuß in die Tür bekomme.
Für die Umgebung hatte ich mir überlegt VirtualPC5.2 auf meinem XP-System zu
verwenden.
Plattmachen, umpartitionieren kommt aus familiären Gründen nicht in Frage.
Mal eine generelle Verständnisfrage, wenn ich es richtig verstehe laufen die
kompilierten Programme nicht auf jeder x-beliebigen Distribution, oder liege
ich damit falsch?
Das installieren eines Programmes unter Linux erscheiont mir immer wie eine
auf die Umgebung angepasste neue Kompilierung.
Wobei der Beispielheader ziemlich Amigaähnlich vorkommt.
Gruß
Andre
More information about the Linux
mailing list