From ee2bf5b6077315359af175c7ee5ae580002637a3 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 3 Apr 2014 02:20:43 +0000 Subject: [PATCH] Only clear the thumb bit from function addresses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205500 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/ELFObjectFile.h | 3 ++- test/Object/Inputs/thumb-symbols.elf.arm | Bin 0 -> 481 bytes test/Object/nm-trivial-object.test | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 test/Object/Inputs/thumb-symbols.elf.arm diff --git a/include/llvm/Object/ELFObjectFile.h b/include/llvm/Object/ELFObjectFile.h index e2c5fc77fc4..9bdee9f5694 100644 --- a/include/llvm/Object/ELFObjectFile.h +++ b/include/llvm/Object/ELFObjectFile.h @@ -292,7 +292,8 @@ error_code ELFObjectFile::getSymbolAddress(DataRefImpl Symb, Result = ESym->st_value; // Clear the ARM/Thumb indicator flag. - if (Header->e_machine == ELF::EM_ARM) + if (EF.getHeader()->e_machine == ELF::EM_ARM && + ESym->getType() == ELF::STT_FUNC) Result &= ~1; if (Header->e_type == ELF::ET_REL) diff --git a/test/Object/Inputs/thumb-symbols.elf.arm b/test/Object/Inputs/thumb-symbols.elf.arm new file mode 100644 index 0000000000000000000000000000000000000000..923eef6cede2e62e896c9797958523c1955f5f02 GIT binary patch literal 481 zcma)0yAHxI40Kvb85o!t8Bqt6iGd%0iH{&vc`Pg>14u~xC?CUJ64Q>gWczHN&;IO> z2V+br*^D$|v_S3>uC_5ZQp+TDY&buI*w%Zo{^r9YxE4tB>mKXQ1(*0EBJa|tnai8` zTI?uZqashA-oqDh9Dbn(N^#xq7>d3oB;VRop%@TC0u_4lrMM{ gK{nOXS~L4PD}boc>*yr0%Rf`=;b+{#=0&dZ18m3@3IG5A literal 0 HcmV?d00001 diff --git a/test/Object/nm-trivial-object.test b/test/Object/nm-trivial-object.test index ee0c3ffd8e1..4e90f9609c6 100644 --- a/test/Object/nm-trivial-object.test +++ b/test/Object/nm-trivial-object.test @@ -18,6 +18,9 @@ RUN: llvm-nm %p/Inputs/common.coff-i386 \ RUN: | FileCheck %s -check-prefix COFF-COMMON RUN: llvm-nm %p/Inputs/relocatable-with-section-address.elf-x86-64 \ RUN: | FileCheck %s -check-prefix ELF-SEC-ADDR +RUN: llvm-nm %p/Inputs/thumb-symbols.elf.arm \ +RUN: | FileCheck %s -check-prefix ELF-THUMB + COFF: 00000000 d .data COFF: 00000000 t .text @@ -64,3 +67,8 @@ ELF-SEC-ADDR-NEXT: 0000005c D b ELF-SEC-ADDR-NEXT: 00000040 T f ELF-SEC-ADDR-NEXT: 00000050 T g ELF-SEC-ADDR-NEXT: 00000060 D p + + +Test that we drop the thumb bit only from function addresses. +ELF-THUMB: 00000000 t f +ELF-THUMB: 00000003 t g