summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--output/outelf.h6
-rw-r--r--output/outelf32.c3
-rw-r--r--output/outelf64.c3
3 files changed, 7 insertions, 5 deletions
diff --git a/output/outelf.h b/output/outelf.h
index 850f8fe2..93a620c3 100644
--- a/output/outelf.h
+++ b/output/outelf.h
@@ -37,7 +37,11 @@
#ifndef OUTPUT_OUTELF_H
#define OUTPUT_OUTELF_H
-#define SYM_GLOBAL 0x10
+#include "output/elf.h"
+
+/* symbol binding */
+#define SYM_GLOBAL ELF32_ST_MKBIND(STB_GLOBAL)
+#define SYM_LOCAL ELF32_ST_MKBIND(STB_LOCAL)
#define GLOBAL_TEMP_BASE 0x40000000 /* bigger than any sane symbol index */
diff --git a/output/outelf32.c b/output/outelf32.c
index 52fb91c2..0ce21135 100644
--- a/output/outelf32.c
+++ b/output/outelf32.c
@@ -56,7 +56,6 @@
#include "output/dwarf.h"
#include "output/stabs.h"
-#include "output/elf.h"
#include "output/outelf.h"
#ifdef OF_ELF32
@@ -516,7 +515,7 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset,
memset(&sym->symv, 0, sizeof(struct rbtree));
sym->strpos = pos;
- sym->type = is_global ? SYM_GLOBAL : 0;
+ sym->type = is_global ? SYM_GLOBAL : SYM_LOCAL;
sym->other = STV_DEFAULT;
sym->size = 0;
if (segment == NO_SEG)
diff --git a/output/outelf64.c b/output/outelf64.c
index acd79d40..fb373b78 100644
--- a/output/outelf64.c
+++ b/output/outelf64.c
@@ -56,7 +56,6 @@
#include "output/dwarf.h"
#include "output/stabs.h"
-#include "output/elf.h"
#include "output/outelf.h"
#ifdef OF_ELF64
@@ -514,7 +513,7 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset,
memset(&sym->symv, 0, sizeof(struct rbtree));
sym->strpos = pos;
- sym->type = is_global ? SYM_GLOBAL : 0;
+ sym->type = is_global ? SYM_GLOBAL : SYM_LOCAL;
sym->other = STV_DEFAULT;
sym->size = 0;
if (segment == NO_SEG)