6.2.9. Compiladores e ferramentas de desenvolvimento
O carregador dinâmico glibc
não falha mais enquanto carrega uma biblioteca compartilhada que usa DT_FILTER
e tem um construtor
Antes desta atualização, um defeito na implementação do carregador dinâmico de objetos compartilhados como filtros fez com que o carregador dinâmico falhasse ao carregar uma biblioteca compartilhada que usa um filtro e tem um construtor. Com este lançamento, a implementação do carregador dinâmico de filtros(DT_FILTER
) foi corrigida para lidar corretamente com tais bibliotecas compartilhadas. Como resultado, o carregador dinâmico agora funciona como esperado no cenário mencionado.
glibc
pode agora remover pseudo-montagens da lista getmntent()
O kernel inclui pseudo-entradas automáticas
nas tabelas expostas ao espaço do usuário. Consequentemente, os programas que utilizam o getmntent()
API vêem tanto as montagens regulares como estas pseudo-montagens na lista. As pseudo-montagens não correspondem a montagens reais, nem incluem informações válidas.
Com esta atualização, se a entrada de montagem tiver a opção ignorar
montagem presente na configuração automount(8
), a biblioteca glibc
agora remove estas pseudo-montagens da lista getmntent()
. Os programas que esperam o comportamento anterior têm que usar uma API diferente.
(BZ#1743445)
O padrão movv1qi
não causa mais erros de compilação no código auto-vetorizado no IBM Z
Antes desta atualização, foram emitidas instruções de carga erradas para o padrão movv1qi
. Como conseqüência, quando a auto-vetorização estava em vigor, uma miscompilação poderia ocorrer em sistemas IBM Z. Esta atualização corrige o padrão movv1qi
, e como resultado, o código compila e roda corretamente agora.
(BZ#1784758)
PAPI_event_name_to_code()
agora funciona corretamente em várias roscas
Antes desta atualização, o código interno do PAPI não tratava adequadamente da coordenação dos fios. Como conseqüência, quando múltiplas roscas usaram a operação PAPI_nome_do_código()
, ocorreu uma condição de corrida e a operação falhou. Esta atualização melhora o manuseio de múltiplas roscas no código interno do PAPI. Como resultado, o código multithreaded usando a operação PAPI_event_name_to_code()
agora funciona corretamente.
(BZ#1807346)
Melhor desempenho para as funções de matemática glibc
em sistemas IBM Power
Anteriormente, as funções matemáticas da glibc
realizavam atualizações desnecessárias do status do ponto flutuante e chamadas de sistema nos sistemas IBM Power Systems, o que afetava negativamente o desempenho. Esta atualização remove a atualização desnecessária do status do ponto flutuante e melhora as implementações de: ceil()
, ceilf()
, fegetmode()
, fesetmode()
, fesetenv()
, fegetexcept()
, feenableexcept()
, fedisablexcept()
, fegetround()
e fesetround()
. Como resultado, o desempenho da biblioteca matemática é melhorado nos sistemas IBM Power.
(BZ#1783303)
As chaves de proteção de memória são agora suportadas pela IBM Power
Na IBM Power Systems, as interfaces da chave de proteção de memória pkey_set
e pkey_get
eram funções anteriormente stub, e conseqüentemente sempre falharam. Esta atualização implementa as interfaces, e como resultado, a Biblioteca C GNU(glibc
) agora suporta chaves de proteção de memória em sistemas IBM Power.
Observe que as chaves de proteção de memória atualmente requerem a unidade de gerenciamento de memória baseada em hash (MMU), portanto você pode ter que inicializar certos sistemas com o parâmetro desabilitar_radix
kernel.
(BZ#1642150)
papi-testsuite
e papi-devel
instalam agora o pacote de papi-libs
necessário
Anteriormente, os pacotes papi-teste
e papi-devel
RPM não declaravam uma dependência do pacote papi-libs
correspondente. Consequentemente, os testes falharam e os desenvolvedores não tinham a versão necessária da biblioteca compartilhada papi
disponível para suas aplicações.
Com esta atualização, quando o usuário instala tanto a embalagem papi-teste
quanto a embalagem papi-devel
, a embalagem papi-libs
também é instalada. Como resultado, o papi-testsuite
agora tem a biblioteca correta permitindo que os testes sejam executados, e os desenvolvedores que usam o papi-devel
têm seus executáveis ligados com a versão apropriada da biblioteca compartilhada papi
.
A instalação dos pacotes lldb
para arquiteturas múltiplas não leva mais a conflitos de arquivos
Anteriormente, os pacotes lldb
instalavam arquivos dependentes de arquitetura em locais independentes da arquitetura. Como conseqüência, a instalação das versões 32-bit e 64-bit dos pacotes levou a conflitos de arquivos. Esta atualização empacota os arquivos em locais corretos dependentes da arquitetura. Como resultado, a instalação do lldb
no cenário descrito se completa com sucesso.
(BZ#1841073)
getaddrinfo
agora lida corretamente com uma falha na alocação de memória
Anteriormente, após uma falha na alocação de memória, a função getaddrinfo
da glibc
Biblioteca C GNU não liberava o contexto do resolvedor interno. Como conseqüência, getaddrinfo
não foi capaz de recarregar o arquivo /etc/resolv.conf
pelo resto da vida útil da linha de chamada, resultando em um possível vazamento de memória.
Esta atualização modifica o caminho de tratamento de erros com uma operação de liberação adicional para o contexto do resolvedor. Como resultado, getaddrinfo
reloads /etc/resolv.conf
com novos valores de configuração mesmo após uma falha intermitente na alocação de memória.
glibc
evita certas falhas causadas pela resolução de pedidos IFUNC
Anteriormente, a implementação das bibliotecas librt
e libpthread
da glibc
Biblioteca GNU C continha os resolvedores de funções indiretas (IFUNC) para as seguintes funções: clock_gettime
, clock_getcpuclockid
, clock_nanosleep
, clock_settime
, vfork
. Em alguns casos, os resolvedores IFUNC podiam executar antes que as bibliotecas librt
e libpthread
fossem realocadas. Conseqüentemente, as aplicações falhariam no carregador dinâmico glibc
durante a inicialização inicial do programa.
Com este lançamento, as implementações destas funções foram movidas para o componente libc
da glibc
, o que impede que o problema descrito ocorra.
As falhas de asserção não ocorrem mais durante a criação do pthread_create
Anteriormente, a carregadeira dinâmica glibc
não fazia roll back das mudanças no contador de identificação interno do módulo Thread Local Storage (TLS). Como conseqüência, uma falha de afirmação na função pthread_create
podia ocorrer após a função dlopen
ter falhado de certas maneiras. Com esta correção, o carregador dinâmico glibc
atualiza o contador de identificação do módulo TLS em um momento posterior, depois que certas falhas não podem mais acontecer. Como resultado, as falhas de asserção não ocorrem mais.
glibc
agora instala as dependências corretas para aplicações de 32 bits usando nss_db
Anteriormente, o pacote nss_db.x86_64
não declarava as dependências do pacote nss_db.i686
. Portanto, a instalação automatizada não instalava o nss_db.i686
no sistema, apesar de ter um glibc.i686
de 32 bits de ambiente instalado. Como conseqüência, aplicações de 32 bits usando o nss_db
falharam em realizar buscas precisas no banco de dados do usuário, enquanto aplicações de 64 bits na mesma configuração funcionaram corretamente.
Com esta atualização, os pacotes glibc
agora têm dependências fracas que acionam a instalação do pacote nss_db.i686
quando ambos glibc.i686
e nss_db
são instalados no sistema. Como resultado, aplicações de 32 bits usando o nss_db
agora funcionam corretamente, mesmo que o administrador do sistema não tenha instalado explicitamente o pacote nss_db.i686
.
glibc
locale informações atualizadas com o idioma Odia
O nome do estado indiano anteriormente conhecido como Orissa mudou para Odisha, e o nome de sua língua oficial mudou de Oriya para Odia. Com esta atualização, as informações da glibc
locale refletem o novo nome do idioma.
Os subpacotes LLVM agora instalam arquivos dependentes de arco em locais dependentes de arco
Anteriormente, os sub pacotes LLVM instalavam arquivos dependentes de arquivos em locais independentes de arquivos. Isto resultou em conflitos ao instalar versões de 32 e 64 bits da LLVM. Com esta atualização, os arquivos de pacotes agora são instalados corretamente em locais dependentes de arquivos, evitando conflitos de versão.
(BZ#1820319)
Senha e pesquisa de grupo não falham mais na glibc
Anteriormente, o módulo nss_compat
da biblioteca glibc
substituía o status errôneo
por códigos de erro incorretos durante o processamento das entradas de senha e grupo. Conseqüentemente, as aplicações não redimensionavam os buffers como esperado, fazendo com que as buscas por senha e grupo falhassem. Esta atualização corrige o problema, e as buscas agora são concluídas como esperado.