Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

154
Visualizações
-gc-sections descarta los datos usados

Usando avr-gcc, avr-ld

Estoy intentando reducir severamente el tamaño del archivo de salida usando fdata-sections -ffunction-sections y gc-sections. Cuando se compila sin estas opciones, tengo una salida de ~ 63 KB, y con estas opciones son ~ 30 KB, por lo que parece genial.

Desafortunadamente, después de cargar y probar la salida, noto que no funciona correctamente. La recolección de basura parece haber eliminado mucho más de lo que esperaba, y al examinar el .map noté que algunos datos clave no existen.

¿Alguna idea de qué en el momento del enlace está causando que estos datos/funciones se descarten? (Me doy cuenta de que esta puede ser una pregunta demasiado esperanzadora con los pocos detalles que proporcioné, si necesita alguna información, por favor pregunte y haré todo lo posible para brindársela)

¿Hay alguna manera de rastrear qué símbolos fueron arrojados por la recolección de basura como si estuvieran "sin usar"?

Sin usar -fdata-sections -ffunction-sections -gc-sections, ¿puedo rastrear las dependencias de un símbolo? (Para verificar que las secciones gc solo recopilaron lo que debería) - Lo noté como una opción, pero sería muy doloroso para mí usar el método sugerido por Verax

EDITAR: líneas de compilador y enlazador

avr-ld -mavrxmega6 -gc-sections -T archivos linkerscript libgcc.a -o firmware.elf

avr-gcc -Wall -Wstrict-prototypes -g -ffunction-sections -fdata-sections -Os -mmcu=atxmega256a3 -fno-jump-tables -std=gnu99 -fpack-struct -fno-common -mcall-prologues -c - o archivo.o archivo.c

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Había una opción ld bastante obvia llamada -print-gc-sections para revisar lo que se descarta.

Nunca encontré una manera de rastrear las dependencias en un símbolo, pero terminé sin necesidad de revisar -print-gc-sections.

Encontré esto que describía "secciones mágicas" e imagino que esto es similar a lo que estaba viendo. Hubo muchas secciones personalizadas del enlazador que se descartaron incorrectamente, usé KEEP para evitar el gc de estas, aunque estoy seguro de que ahora no se elimina el código muerto, pero esto puede ser lo mejor que puedo hacer.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda