diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-04-03 02:20:43 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-04-03 02:20:43 +0000 |
commit | 5091f93cddc8831d6248b51a30694cb4b37b9930 (patch) | |
tree | 0787f6c512d5b5d31f3dd548f6b97f38a1879fde | |
parent | 2a579bcc8e189a1047d96c9d80c3107606e616c8 (diff) | |
download | bcm5719-llvm-5091f93cddc8831d6248b51a30694cb4b37b9930.tar.gz bcm5719-llvm-5091f93cddc8831d6248b51a30694cb4b37b9930.zip |
Only clear the thumb bit from function addresses.
llvm-svn: 205500
-rw-r--r-- | llvm/include/llvm/Object/ELFObjectFile.h | 3 | ||||
-rw-r--r-- | llvm/test/Object/Inputs/thumb-symbols.elf.arm | bin | 0 -> 481 bytes | |||
-rw-r--r-- | llvm/test/Object/nm-trivial-object.test | 8 |
3 files changed, 10 insertions, 1 deletions
diff --git a/llvm/include/llvm/Object/ELFObjectFile.h b/llvm/include/llvm/Object/ELFObjectFile.h index e2c5fc77fc4..9bdee9f5694 100644 --- a/llvm/include/llvm/Object/ELFObjectFile.h +++ b/llvm/include/llvm/Object/ELFObjectFile.h @@ -292,7 +292,8 @@ error_code ELFObjectFile<ELFT>::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/llvm/test/Object/Inputs/thumb-symbols.elf.arm b/llvm/test/Object/Inputs/thumb-symbols.elf.arm Binary files differnew file mode 100644 index 00000000000..923eef6cede --- /dev/null +++ b/llvm/test/Object/Inputs/thumb-symbols.elf.arm diff --git a/llvm/test/Object/nm-trivial-object.test b/llvm/test/Object/nm-trivial-object.test index ee0c3ffd8e1..4e90f9609c6 100644 --- a/llvm/test/Object/nm-trivial-object.test +++ b/llvm/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 |