Eu estava lendo o Rust Unstable Book e vi um novo recurso para emit-stack-sizes
,
O sinalizador rustc
-Z emit-stack-sizes
faz com que o LLVM emita metadados de tamanho de pilha.
Passa a dizer
NOTA: Este recurso LLVM suporta apenas o formato de objeto ELF a partir do LLVM 8.0. Usar esse sinalizador com destinos que usam outros formatos de objeto (por exemplo, macOS e Windows) resultará em sua ignorância.
O recurso LLVM que parece estar usando é a EmitStackSizeSection
opção. Qual é o propósito de saber o tamanho da pilha? As ferramentas usam isso? Este é um recurso oficial do ELF e, em caso afirmativo, o kernel faz uso disso? Isso parece ser registrado nos metadados ELF nas seções .stack_sizes
, .rel.stack_sizes
e.rela.stack_sizes
Isso um pouco descrito aqui no RFC original, "[eRFC] add
-Z emit-stack-sizes
"E mais adiante nesta entrada de blog, "Implementando uma ferramenta de análise de uso de pilha estática" . O ferramental para isso, com ferrugem, está disponível aqui