O que é código independente de posição (PIC)?
Código independente de posição é código de máquina que executa corretamente não importa onde na memória seja colocado, porque referencia endereços de forma relativa ao contador de programa ou por meio de tabelas de indireção. Ele evita endereços absolutos codificados que quebrariam quando o local de carga mudasse. Bibliotecas compartilhadas são normalmente compiladas dessa forma para poderem ser mapeadas em qualquer endereço.
Por que isso importa
O PIC é o que permite que uma mesma biblioteca compartilhada seja carregada em endereços diferentes em processos diferentes e sustenta a randomização do layout do espaço de endereçamento. Sem ele, bibliotecas não poderiam ser relocadas livremente no momento da carga.
Guias relacionados
What Is a Shared Object?A shared object is a library file loaded into memory at runtime and shared by multiple programs, rather than…
What Is a Relocation Table?A relocation table lists the places in an object file whose addresses must be patched once the final load add…
What Is the Global Offset Table?The global offset table is a per-module table of addresses that position-independent code reads to reach glob…