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.

(BZ#1812756)

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.

(BZ#1664056)

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.

(BZ#1810146)

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.

(BZ#1748197)

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.

(BZ#1774115)

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.

(BZ#1807824)

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.

(BZ#1757354)

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.

(BZ#1836867)