Versão da biblioteca do sistema Glibc 2.31

Após seis meses de desenvolvimento publicado lançamento da biblioteca do sistema Biblioteca GNU C (glibc) 2.31, que atende integralmente aos requisitos da ISO C11 e POSIX.1-2008. A nova versão inclui correções de 58 desenvolvedores.

Implementado em Glibc 2.31 melhorias você pode observar:

  • Adicionada macro _ISOC2X_SOURCE para habilitar recursos definidos no rascunho do futuro padrão ISO C2X. Esses recursos também são habilitados ao usar a macro _GNU_SOURCE ou ao construir no gcc com o sinalizador “-std=gnu2x”;
  • Para funções definidas no arquivo de cabeçalho "math.h" que arredondam seus resultados para um tipo menor, as macros de tipo genérico correspondentes são propostas no arquivo "tgmath.h", conforme exigido pelas especificações TS 18661-1:2014 e TS 18661-3: 2015;
  • Adicionada função pthread_clockjoin_np(), que aguarda a conclusão do thread, levando em consideração o tempo limite (se o tempo limite ocorrer antes da conclusão, a função retornará um erro). Diferente pthread_timedjoin_np(), em pthread_clockjoin_np() é possível definir o tipo de timer para cálculo do timeout - CLOCK_MONOTONIC (leva em conta o tempo gasto pelo sistema em modo sleep) ou CLOCK_REALTIME;
  • O resolvedor DNS agora suporta a opção trust-ad em /etc/resolv.conf e o sinalizador RES_TRUSTAD em _res.options, quando definido, o sinalizador DNSSEC é transmitido em solicitações DNS AD (dados autenticados). Neste modo, o sinalizador AD definido pelo servidor fica disponível para aplicativos que chamam funções como res_search(). Por padrão, se as opções sugeridas não estiverem definidas, a glibc não especifica o sinalizador AD nas solicitações e o limpa automaticamente nas respostas, indicando que as verificações de DNSSEC estão faltando;
  • A construção de ligações de chamadas de sistema funcionais para Glibc não requer mais a instalação dos arquivos de cabeçalho do kernel Linux. A exceção é a arquitetura RISC-V de 64 bits;
  • Eliminado vulnerabilidade CVE-2019-19126, o que permite ignorar a proteção
    ASLR em programas com o sinalizador setuid e determina o layout de endereço em bibliotecas carregadas por meio da manipulação da variável de ambiente LD_PREFER_MAP_32BIT_EXEC.

Mudanças que quebram a compatibilidade:

  • totalorder(), totalordermag() e funções semelhantes para outros tipos de ponto flutuante agora aceitam ponteiros como argumentos para eliminar avisos sobre a conversão de valores em estado NaN, de acordo com as recomendações do TS 18661-1 propostas para o futuro padrão C2X.
    Os executáveis ​​existentes que transmitem argumentos de ponto flutuante diretamente continuarão a ser executados sem modificação;

  • A função stime, há muito obsoleta, não está mais disponível para binários vinculados à glibc e sua definição foi removida de time.h. Para definir a hora do sistema, use a função clock_settime. No futuro, planejamos remover a função obsoleta ftime, bem como o arquivo de cabeçalho sys/timeb.h (gettimeofday ou clock_gettime devem ser usados ​​em vez de ftime);
  • A função gettimeofday não passa mais informações sobre o fuso horário de todo o sistema (esse recurso era relevante na época do 4.2-BSD e foi descontinuado por muitos anos). O argumento 'tzp' agora deve receber um ponteiro nulo e a função localtime() deve ser usada para obter informações de fuso horário com base na hora atual. Chamar gettimeofday com um argumento diferente de zero 'tzp' retornará os campos vazios tz_minutoswest e tz_dsttime na estrutura de fuso horário. A própria função gettimeofday está obsoleta no POSIX (clock_gettime é recomendado em vez de gettimeofday), mas não há planos para removê-la da glibc;
  • settimeofday não suporta mais a passagem simultânea de parâmetros para definir a hora e o deslocamento de correção de hora. Ao chamar settimeofday, um dos argumentos (hora ou deslocamento) deve agora ser definido como nulo, caso contrário a chamada da função falhará com um erro EINVAL. Assim como gettimeofday, a função settimeofday está obsoleta no POSIX e é recomendado ser substituída pela função clock_settime ou pela família de funções adjtime;
  • O suporte para a arquitetura SPARC ISA v7 foi descontinuado (o suporte v8 é mantido por enquanto, mas apenas para processadores que suportam instruções CAS, como processadores LEON, não processadores SuperSPARC).
  • Se o emparelhamento falhar em "preguiçoso", em que o vinculador não procura símbolos de uma função até a primeira chamada para essa função, a função dlopen agora força o encerramento do processo (anteriormente retornando NULL em caso de falha);
  • Para a ABI hard-float do MIPS, a pilha executável agora é usada, a menos que a compilação restrinja explicitamente o uso do kernel Linux 4.8+ por meio do parâmetro “-enable-kernel=4.8.0” (com kernels até 4.8, travamentos são observado para algumas configurações MIPS);
  • As ligações em torno das chamadas do sistema relacionadas à manipulação do tempo foram movidas para usar a chamada do sistema time64, se presente (em sistemas de 32 bits, a glibc primeiro tenta novas chamadas do sistema que manipulam o tipo de tempo de 64 bits e, se não houver nenhuma, cai de volta às antigas chamadas de 32 bits).

Fonte: opennet.ru

Adicionar um comentário