From b0d4dea89d92dd48f98bc652bb919b5ff5032e74 Mon Sep 17 00:00:00 2001 From: Rabin Vincent Date: Wed, 11 May 2011 22:53:51 +0530 Subject: [PATCH] --- yaml --- r: 252653 b: refs/heads/master c: 9905ce8ad7b79dddd23c7b4753d0b2cdb65bde3c h: refs/heads/master i: 252651: 178bd3a427a9af33597cc086f555b2c1591d9e37 v: v3 --- [refs] | 2 +- trunk/scripts/recordmcount.h | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index ecc78668e44b..7728a4da8f37 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4d7a2fa876d1a615649761dc465708d0a062249a +refs/heads/master: 9905ce8ad7b79dddd23c7b4753d0b2cdb65bde3c diff --git a/trunk/scripts/recordmcount.h b/trunk/scripts/recordmcount.h index 4be60364a405..f40a6af6bf40 100644 --- a/trunk/scripts/recordmcount.h +++ b/trunk/scripts/recordmcount.h @@ -43,6 +43,7 @@ #undef ELF_R_INFO #undef Elf_r_info #undef ELF_ST_BIND +#undef ELF_ST_TYPE #undef fn_ELF_R_SYM #undef fn_ELF_R_INFO #undef uint_t @@ -76,6 +77,7 @@ # define ELF_R_INFO ELF64_R_INFO # define Elf_r_info Elf64_r_info # define ELF_ST_BIND ELF64_ST_BIND +# define ELF_ST_TYPE ELF64_ST_TYPE # define fn_ELF_R_SYM fn_ELF64_R_SYM # define fn_ELF_R_INFO fn_ELF64_R_INFO # define uint_t uint64_t @@ -108,6 +110,7 @@ # define ELF_R_INFO ELF32_R_INFO # define Elf_r_info Elf32_r_info # define ELF_ST_BIND ELF32_ST_BIND +# define ELF_ST_TYPE ELF32_ST_TYPE # define fn_ELF_R_SYM fn_ELF32_R_SYM # define fn_ELF_R_INFO fn_ELF32_R_INFO # define uint_t uint32_t @@ -427,6 +430,11 @@ static unsigned find_secsym_ndx(unsigned const txtndx, if (txtndx == w2(symp->st_shndx) /* avoid STB_WEAK */ && (STB_LOCAL == st_bind || STB_GLOBAL == st_bind)) { + /* function symbols on ARM have quirks, avoid them */ + if (w2(ehdr->e_machine) == EM_ARM + && ELF_ST_TYPE(symp->st_info) == STT_FUNC) + continue; + *recvalp = _w(symp->st_value); return symp - sym0; }