aboutsummaryrefslogtreecommitdiffhomepage
path: root/obj/elf.c
diff options
context:
space:
mode:
Diffstat (limited to 'obj/elf.c')
-rw-r--r--obj/elf.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/obj/elf.c b/obj/elf.c
index d889fdd..5578452 100644
--- a/obj/elf.c
+++ b/obj/elf.c
@@ -87,6 +87,20 @@ enum {
BSS_SHNDX = 4,
};
+enum section
+elfhassym(const char *nam)
+{
+ struct sym *sym = findsym(str2idx(nam));
+ if (sym) switch (sym->shndx) {
+ case SHN_UND: return Snone;
+ case TEXT_SHNDX: return Stext;
+ case RODATA_SHNDX: return Srodata;
+ case DATA_SHNDX: return Sdata;
+ case BSS_SHNDX: return Sbss;
+ }
+ return Snone;
+}
+
void
elfaddsym(const char *nam, int info, enum section sect, uvlong value, uvlong size)
{