From 2294d3e82e986894c0645840d01ddd6b2cb08523 Mon Sep 17 00:00:00 2001 From: Oxore Date: Sun, 24 Mar 2024 02:37:54 +0300 Subject: Move some GAS specific behavior to gnu.cpp --- src/gnu.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/gnu.cpp (limited to 'src/gnu.cpp') diff --git a/src/gnu.cpp b/src/gnu.cpp new file mode 100644 index 0000000..7f8ebe1 --- /dev/null +++ b/src/gnu.cpp @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: Unlicense + */ + +#include "gnu.h" + +using namespace Gnu; + +static constexpr const char *SymbolTypeToElfTypeString(SymbolType t) +{ + switch (t) { + case SymbolType::kNone: return nullptr; + case SymbolType::kFunction: return "function"; + case SymbolType::kObject: return "object"; + } + return nullptr; +} + +void Gnu::EmitSymbolMetadata(FILE *out, const char *indent, const Symbol &symbol) +{ + const char *const type = SymbolTypeToElfTypeString(symbol.type); + if (type) { + fprintf(out, "%s.type\t%s, @%s\n", indent, symbol.name, type); + } +} + +void Gnu::EmitSymbolSize(FILE *out, const char *indent, const char *sym_name) +{ + fprintf(out, "%s.size\t%s,.-%s\n", indent, sym_name, sym_name); +} -- cgit v1.2.3