O que h?? de novo no Solaris Express Developer Edition

Editor de link ld para arquivos de objeto

Este aprimoramento de ferramenta de desenvolvedor é novo na versão Solaris Express 8/06.

A partir desta versão, foi alterado o comportamento do comando ld ao criar uma nova versão de um arquivo de saída existente. Esta alteração aborda um problema a longo prazo na forma como novos arquivos de saída do vinculador interagem com programas em execução que usam simultaneamente versões antigas desses arquivos.

Se o arquivo que está sendo criado pelo ld já existir, o arquivo existente é desvinculado depois que todos os arquivos de entrada forem processados. Um novo arquivo com o nome especificado é, então, criado. Este comportamento possibilita que o comando ld crie uma nova versão do arquivo, permitindo, ao mesmo tempo, que os processos simultaneamente existentes que estão acessando o conteúdo do arquivo antigo continuem em execução. Se o arquivo antigo não possuir outros links, o espaço em disco do arquivo será liberado quando for concluído o último processo que faça referência a este arquivo.

Nas versões anteriores ao Solaris Express 8/06, o arquivo existente não era desvinculado, mas sim sobrescrito. No entanto, esta abordagem apresentava a possibilidade de corromper qualquer processo em execução que estivesse usando o arquivo.

Para obter mais informações, consulte a página do manual ld(1).


Observação –

A novo comportamento do comando ld apresenta uma conseqüência para os arquivos de saída que possuem vários links de disco rígido no sistema de arquivos. Anteriormente, todos os links permaneciam intactos, com todos os links com acesso ao conteúdo do novo arquivo. O novo comportamento do ld “quebra” tais links, com o resultado de que somente o nome do arquivo de saída especificado faz referência ao novo arquivo. Todos os outros links continuam fazendo referência ao arquivo antigo. Para garantir consistência no comportamento em qualquer versão do Solaris, os aplicativos que dependem de vários links de disco rígido para os arquivos de saída do vinculador deveriam remover e revincular explicitamente os outros nomes de arquivos.