Facultad de Ingeniería Universidad de Buenos...

19
Facultad de Ingeniería Universidad de Buenos Aires 75-08 Sistemas Operativos Lic. Ing. Osvaldo Clúa 2008 Linkers Linkers

Transcript of Facultad de Ingeniería Universidad de Buenos...

Page 1: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

Facultad de IngenieríaUniversidad de Buenos Aires

75-08 Sistemas OperativosLic. Ing. Osvaldo Clúa

2008

LinkersLinkers

Page 2: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 2

Uso del Linker (a) TraducciónUso del Linker (a) Traducción

Programa Fuente 1

Programa Fuente 2

Traductor

Programa Objeto 1

Programa Objeto 2

Programa Fuente 3

Traductor

Programa Objeto 3

Page 3: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 3

Traducción - ensambladoTraducció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

Page 4: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 4

Traducción - CompilaciónTraducció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.

Page 5: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 5

Link-EditorLink-Editor

Programa EjecutablePrograma Objeto 2

Programa Objeto 3

Linker

Programa Objeto 1Mezcla las direcciones de cada módulo en un único espacio de direcciones.

Además de ejecutable la salida puede ser:● Otro programa objeto● Una biblioteca

La entrada puede ser también● Un ejecutable● Una biblioteca

Page 6: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 6

LoaderLoader

Programa Ejecutable

Memoria

Ejecutable

Bibliotecas

Bibliotecas

Bibliotecasya cargadas

Loader

Se llama binding al proceso de resolver las llamadas a funciones de biblioteca

El binding puede hacerse en ejecución

En algunos sistemas, el compilador llama al linker (gcc llama a ld)

Page 7: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 7

CompilandoCompilando

Procedure a()integer j;begin ....j=j+10;...b()...end;

00 Start a....20 LR 1,addr(j)24 ADD, 1,=1028 ST 1,addr(j)...60 CALL B...96 END

00 Data a04 DS (j)08 DC 10 #=10...76 End Data a

TXT

DATA

00 Start a....20 LR 1,0424 ADD, 1,0828 ST 1,04...60 CALL B

Paso 1Paso 2

Loc Symbol Pos23 j 0427 =10 0831 j 0463 B ?

Relocation DictionaryRLD

El código objeto contiene, entre otras cosas, TXT, DATA, RLD

Page 8: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 8

Compilando (2)Compilando (2)

Procedure b()integer j;begin ....j=34;...end;

00 Start b....36 LR 1,0840 ST 1,04...

00 Data b04 DS (j)08 DC 34 (=34)...

TXT

DATA

Loc Symbol Pos39 =34 0843 j 04

Relocation DictionaryRLD

Loc Symbol00 b

Exports TableExT

El espacio de direcciones de b( ) es distinto del de a( )

La ExT es otro componente del objeto

Page 9: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 9

LinkeandoLinkeando

00 Data a04 DS (j)08 DC 10 #=10...76 End Data a

Loc Symbol Pos23 j 0427 =10 0831 j 0463 B ?

Loc Symbol00 a

00 Start b....36 LR 1,0840 ST 1,04...

Loc Symbol Pos39 =34 0843 j 04

00 Data b04 DS (j)08 DC 34 (=34)...

Loc Symbol00 b

00 Start a....20 LR 1,0424 ADD, 1,0828 ST 1,04...60 CALL B...96 END

Link-editor

en el próximo slide

....

Page 10: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 10

Linkeando (2)Linkeando (2)

00 Start a....20 LR 1,0424 ADD, 1,0828 ST 1,04...60 CALL 100...96 END

100 Start b....136 LR 1,88140 ST 1,84...

Loc Symbol Pos23 j 0427 =10 0831 j 0463 B 100

00 Data a04 DS (j)08 DC 10 #=10...76 End Data a

80 Data b84 DS (j)88 DC 34 (=34)...

TXT DATA RLD

139 =34 88143 j 84

Loc Symbol00 a

100 b

ExTEl linker mezcló los espacios de direcciones de los dos procedimientos en uno solo(relocación)

Se puede resolver el llamado a B()

Page 11: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 11

Object file formats (OFF)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.

Page 12: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 12

DOS comDOS 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”

Page 13: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 13

DOS exeDOS exe

● Aparece en DOS 2.0.● Su primer byte o

(Magic number) es “MZ”, iniciales de Mark Zbikowski.

● Tiene previsión para relocación en memoria..

RLD

Imagen binaria del TXT

File Header

Page 14: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 14

Header del DOS .exeHeader del DOS .exe

char signature[2] = "MZ"; // magic number short lastsize; // # bytes used in last block short nblocks; // number of 512 byte blocksshort nreloc; // number of relocation entries short hdrsize; // size of file header in 16 byte paragraphs short minalloc; // minimum extra memory to allocateshort 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

Page 15: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 15

Common Object File FormatCOFF

Common Object File FormatCOFF

● 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.

Page 16: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 16

Windows Portable Executable (PE )

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).

Page 17: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 17

PE de Microsoft 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+

Page 18: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 18

Executable and Linkable Format(ELF)

Executable and Linkable Format(ELF)

● Sirve para ejecutables y bibliotecas.

● Un directorio permite agregar nuevas secciones.

● Tiene previsiones para emulación– Linux, Solaris, IRIX,

FreeBSD, NetBSD, OpenBSD, PlayStation

Referencias: La especificación y man elf(5).

Page 19: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Teoria-2007/Linker.pdf · ensamblador (assembler). ... del curso de Leonidas Fegaras. 75-08 Sistemas Operativos

75-08 Sistemas Operativos Prof. Lic. Ing. Osvaldo ClúaFIUBA 2008 19

Binarios UniversalesBinarios Universales● Mac usa la idea en 2005 para

facilitar el pase de PPC a Mactel. – Ya la había usado en 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