Linkers Linkers

Linkers Linkers

75-08 Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Facultad de Ingeniería Universidad de Buenos Aires LinkersLinkers Uso del Linker (a) Traducción Programa Fuente 1 Programa Objeto 1 Traductor Programa Fuente 2 Programa Objeto 2 Traductor Programa Fuente 3 Programa Objeto 3 75-08 Sistemas Operativos 2 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Traducción - ensamblado ● Si el lenguaje es un assembler, la traducción es un ensamblado (assembly) hecho por un programa ensamblador (assembler). – Convierte código de lenguaje ensamblador memotécnico a códigos de operación. – Resuelve identificadores a posiciones de memoria. – Algunos proveen abstracciones de programación avanzadas. – Existe un assembler distinto para cada arquitectura, incluso hay assemblers generales 75-08 Sistemas Operativos 3 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Traducción - Compilación ● Si se trata de un lenguaje de alto o mediano nivel, la traducción es una compilación. ● Un Libro online sobre compiladores del curso de Leonidas Fegaras. 75-08 Sistemas Operativos 4 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Link-Editor Mezcla las direcciones de cada módulo Programa Objeto 1 en un único espacio de direcciones. Programa Objeto 2 Linker Programa Ejecutable Además de ejecutable la salida puede ser: ● Programa Objeto 3 Otro programa objeto ● Una biblioteca La entrada puede ser también ● Un ejecutable ● Una biblioteca 75-08 Sistemas Operativos 5 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Loader Memoria Programa Ejecutable Loader Ejecutable Se llama binding al proceso de resolver El binding Bibliotecas las llamadas a puede hacerse en Bibliotecas funciones de biblioteca ejecución Bibliotecas En algunos sistemas, el compilador llama ya cargadas al linker (gcc llama a ld) 75-08 Sistemas Operativos 6 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Compilando Paso 1 TXT Paso 2 00 Start a .... 00 Start a Procedure a() 20 LR 1,addr(j) .... integer j; 24 ADD, 1,=10 20 LR 1,04 begin 28 ST 1,addr(j) 24 ADD, 1,08 .... ... 28 ST 1,04 j=j+10; 60 CALL B ... ... ... 60 CALL B b() 96 END ... end; DATA Relocation Dictionary RLD 00 Data a El código objeto 04 DS (j) Loc Symbol Pos contiene, entre otras 08 DC 10 #=10 23 j 04 ... cosas, TXT, DATA, 76 End Data a 27 =10 08 RLD 31 j 04 63 B ? 75-08 Sistemas Operativos 7 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Compilando (2) TXT 00 Start b Relocation Dictionary .... RLD Procedure b() 36 LR 1,08 integer j; Loc Symbol Pos begin 40 ST 1,04 .... ... 39 =34 08 j=34; 43 j 04 ... end; Exports Table ExT DATA Loc Symbol El espacio de direcciones de 00 Data b 00 b b( ) es distinto del de a( ) 04 DS (j) 08 DC 34 (=34) ... La ExT es otro componente del objeto 75-08 Sistemas Operativos 8 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio 00 Start a .... Linkeando 20 LR 1,04 00 Start b 24 ADD, 1,08 .... 28 ST 1,04... 36 LR 1,08 60 CALL B 40 ST 1,04 ... ... 96 END 00 Data b 00 Data a 04 DS (j) 04 DS (j) 08 DC 34 (=34) 08 DC 10 #=10 Link-editor ... ... 76 End Data a Loc Symbol Pos 39 =34 08 Loc Symbol Pos 43 j 04 23 j 04 Loc Symbol 27 =10 08 00 b 31 j 04 en el próximo 63 B ? slide .... Loc Symbol 00 a 75-08 Sistemas Operativos 9 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Linkeando (2) TXT DATA RLD 00 Data a Loc Symbol Pos 00 Start a 04 DS (j) 23 j 04 .... 08 DC 10 #=10 27 =10 08 20 LR 1,04 ... 31 j 04 24 ADD, 1,08 76 End Data a 63 B 100 28 ST 1,04... Se 60 CALL 100 80 Data b 139 =34 88 puede ... 84 DS (j) 143 j 84 resolver 96 END 88 DC 34 (=34) el ... llamado ExT 100 Start b El linker mezcló los a B() .... espacios de Loc Symbol 136 LR 1,88 00 a 140 ST 1,84 direcciones de los ... dos procedimientos 100 b en uno solo (relocación) 75-08 Sistemas Operativos 10 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Object file formats (OFF) ● Es clave para la performance del sistema. ● Algunos preveen su interacción con el paginado. ● Se suele utilizar el mismo formato para: – Ejecutables – Objetos – Bibliotecas ● Que dos Sistemas Operativos tengan el mismo OFF no significa que los programas de uno puedan correr en el otro. 75-08 Sistemas Operativos 11 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio DOS com ● Son los que tienen extensión .com. Microsoft los llama bin o binary file ● Se hacen con exe2bin. ● Se cargan en una dirección fija de memoria (0x100). ● Datos y código estan en el mismo segmento. ● Su tamaño máximo es de 65,280 (0xFF00) bytes ● Se puede decir que es un “null file format” 75-08 Sistemas Operativos 12 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio DOS exe File Header ● Aparece en DOS 2.0. RLD ● Su primer byte o (Magic number) es Imagen binaria del TXT “MZ”, iniciales de Mark Zbikowski. ● Tiene previsión para relocación en memoria.. 75-08 Sistemas Operativos 13 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Header del DOS .exe char signature[2] = "MZ"; // magic number short lastsize; // # bytes used in last block short nblocks; // number of 512 byte blocks short nreloc; // number of relocation entries short hdrsize; // size of file header in 16 byte paragraphs short minalloc; // minimum extra memory to allocate short maxalloc; // maximum extra memory to allocate void far *sp; // initial stack pointer short checksum; // ones complement of file sum void far *ip; // initial instruction pointer short relocpos; // location of relocation fixup table short noverlay; // Overlay number, 0 for program char extra[]; // extra material for overlays, etc. void far *relocs[]; // relocation entries, starts at relocpos 75-08 Sistemas Operativos 14 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Common Object File Format COFF ● Aparece en Unix pero se usa en otros ambientes. ● Se compone de varias secciones separadas por headers (con limitación de longitud). ● Se usa para bibliotecas. – Aunque no de enlace dinámico. AIX usa XCOFF ● Soporta debug (pero solo de C). ● nm(1) lo puede inspeccionar. 75-08 Sistemas Operativos 15 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Windows Portable Executable (PE ) ● Es una adaptación del COFF. El Windows hace un wrapping del COFF. ● Se usa en Intel, ARM y SuperH (Windows CE). ● Además Intel lo adoptó para EFI. ● Microsoft también lo usa en .net para la máquina virtual Common Language Runtime . ● Mono lo debió adoptar (quiere ser compatible a nivel binario con .net). 75-08 Sistemas Operativos 16 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio PE de Microsoft ● Su magic es “PE” pero comienza con un “MZ” por “compatibilidad”. ● Tiene definido espacio para resources. ● Tiene definido tablas para el uso de bibliotecas compartidas. ● Hay herramientas de análisis. ● En 64 bits se lo conoce como PE+ o PE32+ 75-08 Sistemas Operativos 17 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio PE de Microsoft ● No tiene PIC (Position-Independent Code) ● Todas las direcciones se fijan en referencia a una dirección base. ● Si esa dirección ya lo uso “otro” se deben recalcular todas las direcciones. ● Las DLLs de Microsoft tiene una dirección base predefinida para que no colisionen entre sí. 75-08 Sistemas Operativos 18 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Executable and Linkable Format (ELF) ● Sirve para ejecutables y bibliotecas. ● Un directorio permite agregar nuevas secciones. ● Tiene previsiones para emulación – Linux, Solaris, IRIX, Referencias: La especificación FreeBSD, NetBSD, y man elf(5). OpenBSD, PlayStation 75-08 Sistemas Operativos 19 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Binarios Universales ● Mac usa la idea en 2005 para facilitar el pase de PPC a Mactel. – Ya la había usado al pasar de 68k a PPC. ● Se basa en el concepto de fat binary. El formato es Mach-O. – Puede usar un emulador: Rosetta – Puede tener código ppc-32,ppc-64 y x86-64 EM64T 75-08 Sistemas Operativos 20 FIUBA Prof. Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    20 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us