Warn if an STT_FUNC has zero size.

This commit is contained in:
angie 2024-05-21 10:27:50 -04:00
parent ba4aede49c
commit ce7402cf78

View file

@ -732,7 +732,7 @@ bool read_symbols(RecompPort::Context& context, const ELFIO::elfio& elf_file, EL
continue; continue;
} }
if (section_index < context.sections.size()) { if (section_index < context.sections.size()) {
// Check if this symbol is the entrypoint // Check if this symbol is the entrypoint
if (has_entrypoint && value == entrypoint && type == ELFIO::STT_FUNC) { if (has_entrypoint && value == entrypoint && type == ELFIO::STT_FUNC) {
if (found_entrypoint_func) { if (found_entrypoint_func) {
@ -795,13 +795,17 @@ bool read_symbols(RecompPort::Context& context, const ELFIO::elfio& elf_file, EL
} }
} }
if (!ignored && type == ELFIO::STT_FUNC && num_instructions == 0 && bind != ELFIO::STB_WEAK) {
fmt::print(stderr, "[WARN] Function '{}' has zero size.\n", name);
}
// Suffix local symbols to prevent name conflicts. // Suffix local symbols to prevent name conflicts.
if (bind == ELFIO::STB_LOCAL) { if (bind == ELFIO::STB_LOCAL) {
name = fmt::format("{}_{:08X}", name, rom_address); name = fmt::format("{}_{:08X}", name, rom_address);
} }
if (num_instructions > 0) { if (num_instructions > 0) {
context.section_functions[section_index].push_back(context.functions.size()); context.section_functions[section_index].push_back(context.functions.size());
recorded_symbol = true; recorded_symbol = true;
} }
context.functions_by_name[name] = context.functions.size(); context.functions_by_name[name] = context.functions.size();