GCC - Como impedir que o malloc seja vinculado?

Estou lutando para reduzir meu código ao mínimo tamanho possível! Estou usando um STM32F0 com apenas 32k flash e preciso de uma boa parte do flash para armazenamento de dados. Meu código já está com aproximadamente 20k de tamanho de flash! Parte disso se deve ao uso das funções STM32 HAL, que eu posso explicar e otimizar mais tarde, se necessário.

No entanto, meu maior consumidor de flash são todas as rotinas de biblioteca implicitamente incluídas. Não consigo remover essas funções. Eles não são chamados em nenhum lugar do meu código ou de qualquer código HAL. Funções como _malloc_r (1,3k bytes) e __vfiprintf_r (3kB) e muitas outras estão usando grande parte do meu flash. Eu acho que essas são todas as funções libc. Eu não os uso e gostaria que eles sumissem!

Alguém sabe como removê-los?

Eu tentei diferentes opções de otimização, níveis e vinculador, mas sem sorte até agora. Eu tentei -nostdlib e --specs = nosys.specs sem alterações. Se eu remover meu arquivo com definições para funções como _exit, recebo um erro de vinculador sugerindo que a biblioteca ainda está incluída e precisa delas. O linker map também confirma a presença de muitas funções indesejadas!

Alguma sugestão?

questionAnswers(2)

yourAnswerToTheQuestion