Ir para conteúdo
  • Binutils 2.40 lançado: Veja as novidades


    Fernando Mercês

    Quem segue o nosso fórum de releases já viu que o projeto GNU liberou a versão 3.40 do Binutils no último sábado. Baixei e compilei para ver o que tinha de diferente. Seguem os novos recursos direto do repositório oficial:

    Changes in 2.40:
    
    * Objdump has a new command line option --show-all-symbols which will make it
      display all symbols that match a given address when disassembling.  (Normally
      only the first symbol that matches an address is shown).
    
    * Add --enable-colored-disassembly configure time option to enable colored
      disassembly output by default, if the output device is a terminal.  Note,
      this configure option is disabled by default.
      
    * DCO signed contributions are now accepted.
    
    * objcopy --decompress-debug-sections now supports zstd compressed debug
      sections.  The new option --compress-debug-sections=zstd compresses debug
      sections with zstd.
    
    * addr2line and objdump --dwarf now support zstd compressed debug sections.
    
    * The dlltool program now accepts --deterministic-libraries and
      --non-deterministic-libraries as command line options to control whether or
      not it generates deterministic output libraries.  If neither of these options
      are used the default is whatever was set when the binutils were configured.
      
    * readelf and objdump now have a newly added option --sframe which dumps the
      SFrame section.

    A opção --show-all-symbols parece interessante de deixar sempre ativada, para o caso de qualquer endereço na saída do objdump coincidir com mais de um símbolo no binário. Não é comum, mas se acontecer, vale a pena saber. 🙂

    Habilitar o output colorido em tempo de configuração me parece uma boa ideia e vai servir para os mantenedores de pacotes das distribuições deixarem o output do objdump colorido por padrão. Veja a diferença:

    sem_cores.thumb.png.e435d503c1ca664f59d27c9d25cee072.png
    Disassembly normal

    com_cores.thumb.png.916823972d50f2d40ea7f224a7542220.png
    Disassembly colorido

    Lembrando que o objdump passou a suportar esse destaque de sintaxe em cores na versão 2.39 do Binutils. O que acontece agora é que existe uma opção em tempo de configuração (leia-se: ./configure) para deixá-la ativada por padrão. 😉

    Outro destaque é o suporte ao dump de seções SFrame tanto no readelf quanto no objdump. Como a opção --gsframe já havia sido adicionada no as, o GNU Assembler, dá pra usá-la com a opção -Xassembler do gcc assim:

    gcc -Xassembler --gsframe -o binario.elf hello.c

    E com o readelf (ou objdump), usar a nova opção:

    $ objdump --sframe binario.elf
    
    binario.elf:     file format elf64-x86-64
    
    Contents of the SFrame section .sframe:
      Header :
    
        Version: SFRAME_VERSION_1
        Flags: SFRAME_F_FDE_SORTED
        Num FDEs: 3
        Num FREs: 8
    
      Function Index :
    
        func idx [0]: pc = 0x1020, size = 16 bytes
        STARTPC         CFA       FP        RA
        0000000000001020  sp+16     u         u
        0000000000001026  sp+24     u         u
    
        func idx [1]: pc = 0x1030, size = 16 bytes
        STARTPC[m]      CFA       FP        RA
        0000000000000000  sp+8      u         u
        000000000000000b  sp+16     u         u
    
        func idx [2]: pc = 0x1139, size = 59 bytes
        STARTPC         CFA       FP        RA
        0000000000001139  sp+8      u         u
        000000000000113a  sp+16     c-16      u
        000000000000113d  fp+16     c-16      u
        0000000000001173  sp+8      c-16      u

    As distros levam um tempinho até subir o novo pacote pra você atualizar no seu Linux. Se não quiser esperar, baixa do repositório oficial e compila. Seguem as instruções:

    $ wget https://ftp.gnu.org/gnu/binutils/binutils-2.40.tar.xz
    $ sudo apt install texinfo flex bison libgmp-dev libmpfr-dev gcc make
    $ tar xf binutils-2.40.tar.xz
    $ cd binutils-2.40
    $ ./configure --enable-colored-disassembly # já testa a nova opção ;-)
    $ make
    $ ./binutils/objdump --version
    GNU objdump (GNU Binutils) 2.40
    Copyright (C) 2023 Free Software Foundation, Inc.
    This program is free software; you may redistribute it under the terms of
    the GNU General Public License version 3 or (at your option) any later version.
    This program has absolutely no warranty.

     

    • Curtir 3

    Feedback do Usuário

    Comentários Recomendados

    Não há comentários para mostrar.



    Participe da conversa

    Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

    Visitante
    Adicionar um comentário...

    ×   Você colou conteúdo com formatação.   Remover formatação

      Apenas 75 emojis são permitidos.

    ×   Seu link foi automaticamente incorporado.   Mostrar como link

    ×   Seu conteúdo anterior foi restaurado.   Limpar o editor

    ×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.


  • Conteúdo Similar

×
×
  • Criar Novo...