From a135658e83e4917b9a79c5e1337847c2a2bbdf90 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Sat, 2 Jan 2010 15:53:11 +0300 Subject: ELF: Explicitly point out SYM_GLOBAL, SYM_LOCAL binding Instead of implicit declaration of global symbols obtained by STB_GLOBAL << 4, and local symbols by STB_LOCAL << 4 use ELF32_ST_MKBIND helpers. Signed-off-by: Cyrill Gorcunov --- output/outelf.h | 6 +++++- output/outelf32.c | 3 +-- output/outelf64.c | 3 +-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/output/outelf.h b/output/outelf.h index 850f8fe..93a620c 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 52fb91c..0ce2113 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 acd79d4..fb373b7 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) -- cgit v1.2.3