diff options
author | Simon Atanasyan <simon@atanasyan.com> | 2015-02-17 18:54:22 +0000 |
---|---|---|
committer | Simon Atanasyan <simon@atanasyan.com> | 2015-02-17 18:54:22 +0000 |
commit | 1d902b7cc7cfc2f08cd6ba52acd1cd44ac291b93 (patch) | |
tree | ea1f3197cbdde0da4496e0d3a8ab1795f827260f /llvm/test/Object | |
parent | 79df18703451f0445a1c5a2ccbc47597666e9d0c (diff) | |
download | bcm5719-llvm-1d902b7cc7cfc2f08cd6ba52acd1cd44ac291b93.tar.gz bcm5719-llvm-1d902b7cc7cfc2f08cd6ba52acd1cd44ac291b93.zip |
[Object] Support reading 64-bit MIPS ELF archives
The 64-bit MIPS ELF archive file format is used by MIPS64 targets.
The main difference from a regular archive file is the symbol table format:
1. ar_name is equal to "/SYM64/"
2. number of symbols and offsets are 64-bit integers
http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf
Page 96
The patch allows reading of such archive files by llvm-nm, llvm-objdump
and other tools. But it does not support archive files with number of symbols
and/or offsets exceed 2^32. I think it is a rather rare case requires more
significant modification of `Archive` class code.
http://reviews.llvm.org/D7546
llvm-svn: 229520
Diffstat (limited to 'llvm/test/Object')
-rw-r--r-- | llvm/test/Object/Inputs/archive-test.a-irix6-mips64el | bin | 0 -> 6608 bytes | |||
-rw-r--r-- | llvm/test/Object/nm-irix6.test | 27 |
2 files changed, 27 insertions, 0 deletions
diff --git a/llvm/test/Object/Inputs/archive-test.a-irix6-mips64el b/llvm/test/Object/Inputs/archive-test.a-irix6-mips64el Binary files differnew file mode 100644 index 00000000000..ccc2634be7a --- /dev/null +++ b/llvm/test/Object/Inputs/archive-test.a-irix6-mips64el diff --git a/llvm/test/Object/nm-irix6.test b/llvm/test/Object/nm-irix6.test new file mode 100644 index 00000000000..047665cbf32 --- /dev/null +++ b/llvm/test/Object/nm-irix6.test @@ -0,0 +1,27 @@ +# Check reading IRIX 6.0 64-bit archive file. +RUN: llvm-nm %p/Inputs/archive-test.a-irix6-mips64el | FileCheck %s + +CHECK: f1.o: +CHECK-NEXT: 00000028 T f1 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo + +CHECK: f2.o: +CHECK-NEXT: 00000028 T f2 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo + +CHECK: f3.o: +CHECK-NEXT: 00000028 T f3 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo + +CHECK: f4.o: +CHECK-NEXT: 00000028 T f4 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo + +CHECK: f5.o: +CHECK-NEXT: 00000028 T f5 +CHECK-NEXT: 00000000 d s_d +CHECK-NEXT: 00000000 t s_foo |