diff options
author | Stephen Hines <srhines@google.com> | 2014-07-21 00:45:20 -0700 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2014-07-21 00:45:20 -0700 |
commit | c6a4f5e819217e1e12c458aed8e7b122e23a3a58 (patch) | |
tree | 81b7dd2bb4370a392f31d332a566c903b5744764 /test/Object | |
parent | 19c6fbb3e8aaf74093afa08013134b61fa08f245 (diff) | |
download | external_llvm-c6a4f5e819217e1e12c458aed8e7b122e23a3a58.zip external_llvm-c6a4f5e819217e1e12c458aed8e7b122e23a3a58.tar.gz external_llvm-c6a4f5e819217e1e12c458aed8e7b122e23a3a58.tar.bz2 |
Update LLVM for rebase to r212749.
Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls
Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
Diffstat (limited to 'test/Object')
31 files changed, 544 insertions, 35 deletions
diff --git a/test/Object/ARM/lit.local.cfg b/test/Object/ARM/lit.local.cfg index 5fc35d8..236e1d3 100644 --- a/test/Object/ARM/lit.local.cfg +++ b/test/Object/ARM/lit.local.cfg @@ -1,3 +1,2 @@ -targets = set(config.root.targets_to_build.split()) -if not 'ARM' in targets: +if not 'ARM' in config.root.targets: config.unsupported = True diff --git a/test/Object/Inputs/corrupt-archive.a b/test/Object/Inputs/corrupt-archive.a Binary files differnew file mode 100644 index 0000000..f8940ff --- /dev/null +++ b/test/Object/Inputs/corrupt-archive.a diff --git a/test/Object/Inputs/darwin-m-test1.mach0-armv7 b/test/Object/Inputs/darwin-m-test1.mach0-armv7 Binary files differnew file mode 100644 index 0000000..2ce3a18 --- /dev/null +++ b/test/Object/Inputs/darwin-m-test1.mach0-armv7 diff --git a/test/Object/Inputs/darwin-m-test2.macho-i386 b/test/Object/Inputs/darwin-m-test2.macho-i386 Binary files differnew file mode 100644 index 0000000..dc0e865 --- /dev/null +++ b/test/Object/Inputs/darwin-m-test2.macho-i386 diff --git a/test/Object/Inputs/darwin-m-test3.macho-x86-64 b/test/Object/Inputs/darwin-m-test3.macho-x86-64 Binary files differnew file mode 100755 index 0000000..18960c4 --- /dev/null +++ b/test/Object/Inputs/darwin-m-test3.macho-x86-64 diff --git a/test/Object/Inputs/hello-world.macho-x86_64 b/test/Object/Inputs/hello-world.macho-x86_64 Binary files differnew file mode 100755 index 0000000..d004bed --- /dev/null +++ b/test/Object/Inputs/hello-world.macho-x86_64 diff --git a/test/Object/Inputs/macho-archive-x86_64.a b/test/Object/Inputs/macho-archive-x86_64.a Binary files differnew file mode 100644 index 0000000..9979ba9 --- /dev/null +++ b/test/Object/Inputs/macho-archive-x86_64.a diff --git a/test/Object/Inputs/no-sections.elf-x86-64 b/test/Object/Inputs/no-sections.elf-x86-64 Binary files differnew file mode 100755 index 0000000..9b8ca2e --- /dev/null +++ b/test/Object/Inputs/no-sections.elf-x86-64 diff --git a/test/Object/Inputs/program-headers.mips64 b/test/Object/Inputs/program-headers.mips64 Binary files differnew file mode 100644 index 0000000..ad21c7d --- /dev/null +++ b/test/Object/Inputs/program-headers.mips64 diff --git a/test/Object/Inputs/trivial.ll b/test/Object/Inputs/trivial.ll index 25ece76..463442e 100644 --- a/test/Object/Inputs/trivial.ll +++ b/test/Object/Inputs/trivial.ll @@ -10,3 +10,7 @@ entry: declare i32 @puts(i8* nocapture) nounwind declare void @SomeOtherFunction(...) + +@var = global i32 0 +@llvm.used = appending global [1 x i8*] [i8* bitcast (i32* @var to i8*)], section "llvm.metadata" +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* null, i8* null }] diff --git a/test/Object/Mips/lit.local.cfg b/test/Object/Mips/lit.local.cfg index 88262fb..7d12f7a 100644 --- a/test/Object/Mips/lit.local.cfg +++ b/test/Object/Mips/lit.local.cfg @@ -1,3 +1,2 @@ -targets = set(config.root.targets_to_build.split()) -if not 'Mips' in targets: +if not 'Mips' in config.root.targets: config.unsupported = True diff --git a/test/Object/X86/archive-ir-asm.ll b/test/Object/X86/archive-ir-asm.ll new file mode 100644 index 0000000..560ac17 --- /dev/null +++ b/test/Object/X86/archive-ir-asm.ll @@ -0,0 +1,20 @@ +; RUN: llvm-as %s -o=%t1 +; RUN: rm -f %t2 +; RUN: llvm-ar rcs %t2 %t1 +; RUN: llvm-nm -M %t2 | FileCheck %s + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +module asm ".global global_asm_sym" +module asm "global_asm_sym:" +module asm "local_asm_sym:" +module asm ".long undef_asm_sym" + +; CHECK: Archive map +; CHECK-NEXT: global_asm_sym in archive-ir-asm.ll + +; CHECK: archive-ir-asm.ll +; CHECK-NEXT: T global_asm_sym +; CHECK-NEXT: t local_asm_sym +; CHECK-NEXT: U undef_asm_sym diff --git a/test/Object/X86/lit.local.cfg b/test/Object/X86/lit.local.cfg index ba763cf..e71f3cc 100644 --- a/test/Object/X86/lit.local.cfg +++ b/test/Object/X86/lit.local.cfg @@ -1,4 +1,3 @@ -targets = set(config.root.targets_to_build.split()) -if not 'X86' in targets: +if not 'X86' in config.root.targets: config.unsupported = True diff --git a/test/Object/nm-ir.ll b/test/Object/X86/nm-ir.ll index ddf4125..6bb7e23 100644 --- a/test/Object/nm-ir.ll +++ b/test/Object/X86/nm-ir.ll @@ -10,6 +10,17 @@ ; CHECK-NEXT: d g2 ; CHECK-NEXT: C g3 ; CHECK-NOT: g4 +; CHECK-NEXT: T global_asm_sym +; CHECK-NEXT: t local_asm_sym +; CHECK-NEXT: U undef_asm_sy + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +module asm ".global global_asm_sym" +module asm "global_asm_sym:" +module asm "local_asm_sym:" +module asm ".long undef_asm_sym" @g1 = global i32 42 @g2 = internal global i32 42 diff --git a/test/Object/archive-long-index.test b/test/Object/archive-long-index.test index f2f4df6..6feb69e 100644 --- a/test/Object/archive-long-index.test +++ b/test/Object/archive-long-index.test @@ -1,7 +1,7 @@ # # Check if the index is appearing properly in the output file # -RUN: llvm-nm -s %p/Inputs/liblong_filenames.a | FileCheck -check-prefix=CHECKIDX %s +RUN: llvm-nm -M %p/Inputs/liblong_filenames.a | FileCheck -check-prefix=CHECKIDX %s CHECKIDX: Archive map CHECKIDX: abcdefghijklmnopqrstuvwxyz12345678 in 1.o diff --git a/test/Object/archive-symtab.test b/test/Object/archive-symtab.test index 88c9c98..0899828 100644 --- a/test/Object/archive-symtab.test +++ b/test/Object/archive-symtab.test @@ -1,6 +1,6 @@ RUN: rm -f %t.a RUN: llvm-ar rcs %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64 -RUN: llvm-nm -s %t.a | FileCheck %s +RUN: llvm-nm -M %t.a | FileCheck %s CHECK: Archive map CHECK-NEXT: main in trivial-object-test.elf-x86-64 @@ -12,24 +12,25 @@ CHECK: trivial-object-test.elf-x86-64: CHECK-NEXT: U SomeOtherFunction CHECK-NEXT: 0000000000000000 T main CHECK-NEXT: U puts -CHECK-NEXT: trivial-object-test2.elf-x86-64: + +CHECK: trivial-object-test2.elf-x86-64: CHECK-NEXT: 0000000000000000 t bar CHECK-NEXT: 0000000000000006 T foo CHECK-NEXT: 0000000000000016 T main RUN: rm -f %t.a RUN: llvm-ar rcS %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64 -RUN: llvm-nm -s %t.a | FileCheck %s --check-prefix=NOMAP +RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=NOMAP NOMAP-NOT: Archive map RUN: llvm-ar s %t.a -RUN: llvm-nm -s %t.a | FileCheck %s +RUN: llvm-nm -M %t.a | FileCheck %s check that the archive does have a corrupt symbol table. RUN: rm -f %t.a RUN: cp %p/Inputs/archive-test.a-corrupt-symbol-table %t.a -RUN: llvm-nm -s %t.a | FileCheck %s --check-prefix=CORRUPT +RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=CORRUPT CORRUPT: Archive map CORRUPT-NEXT: mbin in trivial-object-test.elf-x86-64 @@ -40,20 +41,27 @@ CORRUPT: trivial-object-test.elf-x86-64: CORRUPT-NEXT: U SomeOtherFunction CORRUPT-NEXT: 0000000000000000 T main CORRUPT-NEXT: U puts -CORRUPT-NEXT: trivial-object-test2.elf-x86-64: + +CORRUPT: trivial-object-test2.elf-x86-64: CORRUPT-NEXT: 0000000000000000 t bar CORRUPT-NEXT: 0000000000000006 T foo CORRUPT-NEXT: 0000000000000016 T main check that the we *don't* update the symbol table. RUN: llvm-ar s %t.a -RUN: llvm-nm -s %t.a | FileCheck %s --check-prefix=CORRUPT +RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=CORRUPT repeate the test with llvm-ranlib RUN: rm -f %t.a RUN: llvm-ar rcS %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64 -RUN: llvm-nm -s %t.a | FileCheck %s --check-prefix=NOMAP +RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=NOMAP RUN: llvm-ranlib %t.a -RUN: llvm-nm -s %t.a | FileCheck %s +RUN: llvm-nm -M %t.a | FileCheck %s + +RUN: llvm-nm -M %p/Inputs/macho-archive-x86_64.a | FileCheck %s --check-prefix=BSD-MachO + +BSD-MachO: Archive map +BSD-MachO: _bar in bar.o +BSD-MachO: _foo in foo.o diff --git a/test/Object/coff-archive-short.test b/test/Object/coff-archive-short.test index fa531b3..2aee956 100644 --- a/test/Object/coff-archive-short.test +++ b/test/Object/coff-archive-short.test @@ -5,7 +5,7 @@ # than 15 characters, thus, unlike coff_archive.lib, it has no string # table as the third member. # -RUN: llvm-nm --numeric-sort -s %p/Inputs/coff_archive_short.lib | FileCheck -check-prefix=CHECKIDX %s +RUN: llvm-nm --numeric-sort -M %p/Inputs/coff_archive_short.lib | FileCheck -check-prefix=CHECKIDX %s CHECKIDX: Archive map CHECKIDX: _shortfn1 in short1.obj diff --git a/test/Object/coff-archive.test b/test/Object/coff-archive.test index 768fe1c..3b0aa0c 100644 --- a/test/Object/coff-archive.test +++ b/test/Object/coff-archive.test @@ -1,7 +1,7 @@ # # Check if the index is appearing properly in the output file # -RUN: llvm-nm --numeric-sort -s %p/Inputs/coff_archive.lib | FileCheck -check-prefix=CHECKIDX %s +RUN: llvm-nm --numeric-sort -M %p/Inputs/coff_archive.lib | FileCheck -check-prefix=CHECKIDX %s CHECKIDX: Archive map CHECKIDX: ??0invalid_argument@std@@QAE@PBD@Z in Debug\mymath.obj diff --git a/test/Object/directory.ll b/test/Object/directory.ll index 48eefcb..c4b0bbf 100644 --- a/test/Object/directory.ll +++ b/test/Object/directory.ll @@ -1,6 +1,6 @@ ;RUN: rm -f %T/test.a ;RUN: not llvm-ar r %T/test.a . 2>&1 | FileCheck %s -;CHECK: .: Is a directory +;CHECK: .: {{I|i}}s a directory ;RUN: rm -f %T/test.a ;RUN: touch %T/a-very-long-file-name diff --git a/test/Object/mangle-ir.ll b/test/Object/mangle-ir.ll index 725d788..5b3cd09 100644 --- a/test/Object/mangle-ir.ll +++ b/test/Object/mangle-ir.ll @@ -2,7 +2,13 @@ target datalayout = "m:o" +; CHECK-NOT: memcpy ; CHECK: T _f +; CHECK-NOT: memcpy + define void @f() { + tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* null, i8* null, i64 0, i32 1, i1 false) ret void } + +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) diff --git a/test/Object/nm-archive.test b/test/Object/nm-archive.test index fbbf051..7dbc22a 100644 --- a/test/Object/nm-archive.test +++ b/test/Object/nm-archive.test @@ -18,6 +18,7 @@ RUN: llvm-nm %t2 | FileCheck %s -check-prefix BITCODE BITCODE: U SomeOtherFunction BITCODE-NEXT: T main BITCODE-NEXT: U puts +BITCODE-NEXT: D var Test we don't error with an archive with no symtab. @@ -29,7 +30,13 @@ RUN: llvm-nm %p/Inputs/archive-test.a-gnu-minimal And don't crash when asked to print a non-existing symtab. -RUN: llvm-nm -s %p/Inputs/archive-test.a-gnu-minimal +RUN: llvm-nm -M %p/Inputs/archive-test.a-gnu-minimal Don't reject an empty archive. RUN: llvm-nm %p/Inputs/archive-test.a-empty + +This archive has an unaligned member and a unknown format member. +GNU AR is able to parse the unaligned member and warns about the member with +the unknown format. We should probably simply warn on both. For now just check +that we don't produce an error. +RUN: llvm-nm %p/Inputs/corrupt-archive.a diff --git a/test/Object/nm-darwin-m.test b/test/Object/nm-darwin-m.test new file mode 100644 index 0000000..5bb19dc --- /dev/null +++ b/test/Object/nm-darwin-m.test @@ -0,0 +1,53 @@ +RUN: llvm-nm -format darwin %p/Inputs/darwin-m-test1.mach0-armv7 \ +RUN: | FileCheck %s -check-prefix test1 +RUN: llvm-nm -format darwin %p/Inputs/darwin-m-test2.macho-i386 \ +RUN: | FileCheck %s -check-prefix test2 +RUN: llvm-nm -m %p/Inputs/darwin-m-test3.macho-x86-64 \ +RUN: | FileCheck %s -check-prefix test3 + +# This is testing that the various bits in the n_desc feild are correct +test1: 00000001 (absolute) non-external _a +test1: 00000008 (common) (alignment 2^2) external _c +test1: 0000000a (__DATA,__data) non-external [no dead strip] _d +test1: 00000004 (__TEXT,__text) non-external [alt entry] _e +test1: 00000000 (__TEXT,__text) non-external [symbol resolver] _r +test1: 00000008 (__TEXT,__text) non-external [Thumb] _t + +# This is testing that an N_INDR symbol gets its alias name, the "(for ...)" +test2: (undefined) external __i +test2: (indirect) external _i (for __i) + +# This is testing is using darwin-m-test3.macho-x86-64 that is linked with +# dylibs that have the follow set of -install_names: +# Foo.framework/Foo +# /System/Library/Frameworks/FooPath.framework/FooPath +# FooSuffix.framework/FooSuffix_debug +# /System/Library/Frameworks/FooPathSuffix.framework/FooPathSuffix_profile +# FooVers.framework/Versions/A/FooVers +# /System/Library/Frameworks/FooPathVers.framework/Versions/B/FooPathVers +# libx.dylib +# libxSuffix_profile.dylib +# /usr/local/lib/libxPathSuffix_debug.dylib +# libATS.A_profile.dylib +# /usr/lib/libPathATS.A_profile.dylib +# QT.A.qtx +# /lib/QTPath.qtx +# /usr/lib/libSystem.B.dylib +# to test that MachOObjectFile::guessLibraryShortName() is correctly parsing +# them into their short names. +test3: 0000000100000000 (__TEXT,__text) [referenced dynamically] external __mh_execute_header +test3: (undefined) external _atsPathVersSuffix (from libPathATS) +test3: (undefined) external _atsVersSuffix (from libATS) +test3: (undefined) external _foo (from Foo) +test3: (undefined) external _fooPath (from FooPath) +test3: (undefined) external _fooPathSuffix (from FooPathSuffix) +test3: (undefined) external _fooPathVers (from FooPathVers) +test3: (undefined) external _fooSuffix (from FooSuffix) +test3: (undefined) external _fooVers (from FooVers) +test3: 0000000100000e60 (__TEXT,__text) external _main +test3: (undefined) external _qt (from QT) +test3: (undefined) external _qtPath (from QTPath) +test3: (undefined) external _x (from libx) +test3: (undefined) external _xPathSuffix (from libxPathSuffix) +test3: (undefined) external _xSuffix (from libxSuffix) +test3: (undefined) external dyld_stub_binder (from libSystem) diff --git a/test/Object/nm-trivial-object.test b/test/Object/nm-trivial-object.test index 20ac662..656d6b0 100644 --- a/test/Object/nm-trivial-object.test +++ b/test/Object/nm-trivial-object.test @@ -1,6 +1,6 @@ -RUN: yaml2obj %p/Inputs/COFF/i386.yaml | llvm-nm \ +RUN: yaml2obj %p/Inputs/COFF/i386.yaml | llvm-nm - \ RUN: | FileCheck %s -check-prefix COFF -RUN: yaml2obj %p/Inputs/COFF/x86-64.yaml | llvm-nm \ +RUN: yaml2obj %p/Inputs/COFF/x86-64.yaml | llvm-nm - \ RUN: | FileCheck %s -check-prefix COFF RUN: llvm-nm %p/Inputs/trivial-object-test.elf-i386 \ RUN: | FileCheck %s -check-prefix ELF @@ -12,14 +12,27 @@ RUN: llvm-nm %p/Inputs/absolute.elf-x86-64 \ RUN: | FileCheck %s -check-prefix ABSOLUTE-ELF64 RUN: llvm-nm %p/Inputs/trivial-object-test.macho-i386 \ RUN: | FileCheck %s -check-prefix macho +RUN: llvm-nm -U %p/Inputs/trivial-object-test.macho-i386 \ +RUN: | FileCheck %s -check-prefix macho-U RUN: llvm-nm %p/Inputs/trivial-object-test.macho-x86-64 \ RUN: | FileCheck %s -check-prefix macho64 +RUN: llvm-nm %p/Inputs/macho-text-data-bss.macho-x86_64 \ +RUN: | FileCheck %s -check-prefix macho-tdb +RUN: llvm-nm -j %p/Inputs/macho-text-data-bss.macho-x86_64 \ +RUN: | FileCheck %s -check-prefix macho-j +RUN: llvm-nm -r %p/Inputs/macho-text-data-bss.macho-x86_64 \ +RUN: | FileCheck %s -check-prefix macho-r 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-ADDR64 RUN: llvm-nm %p/Inputs/thumb-symbols.elf.arm \ RUN: | FileCheck %s -check-prefix ELF-THUMB +RUN: mkdir -p %t +RUN: cd %t +RUN: cp %p/Inputs/trivial-object-test.macho-i386 a.out +RUN: llvm-nm | FileCheck %s -check-prefix A-OUT +REQUIRES: shell COFF: 00000000 d .data @@ -59,11 +72,32 @@ macho: U _SomeOtherFunction macho: 00000000 T _main macho: U _puts +macho-U-NOT: U _SomeOtherFunction +macho-U: 00000000 T _main +macho-U-NOT: U _puts + macho64: 0000000000000028 s L_.str macho64: U _SomeOtherFunction macho64: 0000000000000000 T _main macho64: U _puts +macho-tdb: 0000000000000030 s EH_frame0 +macho-tdb: 0000000000000070 b _b +macho-tdb: 000000000000000c D _d +macho-tdb: 0000000000000000 T _t +macho-tdb: 0000000000000048 S _t.eh + +macho-j: EH_frame0 +macho-j: _b +macho-j: _d +macho-j: _t +macho-j: _t.eh + +macho-r: 0000000000000048 S _t.eh +macho-r-NEXT: 0000000000000000 T _t +macho-r-NEXT: 000000000000000c D _d +macho-r-NEXT: 0000000000000070 b _b +macho-r-NEXT: 0000000000000030 s EH_frame0 Test that nm uses addresses even with ELF .o files. ELF-SEC-ADDR64: 0000000000000058 D a @@ -76,3 +110,7 @@ ELF-SEC-ADDR64-NEXT: 0000000000000060 D p Test that we drop the thumb bit only from function addresses. ELF-THUMB: 00000000 t f ELF-THUMB: 00000003 t g + +A-OUT: U _SomeOtherFunction +A-OUT: 00000000 T _main +A-OUT: U _puts diff --git a/test/Object/nm-universal-binary.test b/test/Object/nm-universal-binary.test index c20c733..889377b 100644 --- a/test/Object/nm-universal-binary.test +++ b/test/Object/nm-universal-binary.test @@ -1,19 +1,31 @@ -RUN: llvm-nm %p/Inputs/macho-universal.x86_64.i386 \ +RUN: llvm-nm -arch all %p/Inputs/macho-universal.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-OBJ -RUN: llvm-nm %p/Inputs/macho-universal-archive.x86_64.i386 \ +RUN: llvm-nm -arch x86_64 %p/Inputs/macho-universal.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix CHECK-OBJ-x86_64 +RUN: llvm-nm -arch all %p/Inputs/macho-universal-archive.x86_64.i386 \ RUN: | FileCheck %s -check-prefix CHECK-AR +RUN: llvm-nm -arch i386 %p/Inputs/macho-universal-archive.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix CHECK-AR-i386 -CHECK-OBJ: macho-universal.x86_64.i386:x86_64 +CHECK-OBJ: macho-universal.x86_64.i386 (for architecture x86_64): CHECK-OBJ: 0000000100000f60 T _main -CHECK-OBJ: macho-universal.x86_64.i386:i386 +CHECK-OBJ: macho-universal.x86_64.i386 (for architecture i386): CHECK-OBJ: 00001fa0 T _main -CHECK-AR: macho-universal-archive.x86_64.i386:x86_64:hello.o: +CHECK-OBJ-x86_64: 0000000100000000 T __mh_execute_header +CHECK-OBJ-x86_64: 0000000100000f60 T _main +CHECK-OBJ-x86_64: U dyld_stub_binder + +CHECK-AR: macho-universal-archive.x86_64.i386(hello.o) (for architecture x86_64): CHECK-AR: 0000000000000068 s EH_frame0 CHECK-AR: 000000000000003b s L_.str CHECK-AR: 0000000000000000 T _main CHECK-AR: 0000000000000080 S _main.eh CHECK-AR: U _printf -CHECK-AR: macho-universal-archive.x86_64.i386:i386:foo.o: -CHECK-AR: 00000008 S _bar +CHECK-AR: macho-universal-archive.x86_64.i386(foo.o) (for architecture i386): +CHECK-AR: 00000008 D _bar CHECK-AR: 00000000 T _foo + +CHECK-AR-i386: macho-universal-archive.x86_64.i386(foo.o): +CHECK-AR-i386: 00000008 D _bar +CHECK-AR-i386: 00000000 T _foo diff --git a/test/Object/obj2yaml.test b/test/Object/obj2yaml.test index 1c15263..98b40d5 100644 --- a/test/Object/obj2yaml.test +++ b/test/Object/obj2yaml.test @@ -201,8 +201,8 @@ ELF-MIPSEL-NEXT: Content: 0000023C00004224E8FFBD271400BFAF1000B0AF21 ELF-MIPSEL-NEXT: - Name: .rel.text ELF-MIPSEL-NEXT: Type: SHT_REL ELF-MIPSEL-NEXT: Link: .symtab -ELF-MIPSEL-NEXT: Info: .text ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000004 +ELF-MIPSEL-NEXT: Info: .text ELF-MIPSEL-NEXT: Relocations: ELF-MIPSEL-NEXT: - Offset: 0 ELF-MIPSEL-NEXT: Symbol: _gp_disp @@ -300,8 +300,8 @@ ELF-MIPS64EL-NEXT: Content: '00000000000000000000000000000000' ELF-MIPS64EL-NEXT: - Name: .rela.data ELF-MIPS64EL-NEXT: Type: SHT_RELA ELF-MIPS64EL-NEXT: Link: .symtab -ELF-MIPS64EL-NEXT: Info: .data ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000008 +ELF-MIPS64EL-NEXT: Info: .data ELF-MIPS64EL-NEXT: Relocations: ELF-MIPS64EL-NEXT: - Offset: 0 ELF-MIPS64EL-NEXT: Symbol: zed @@ -370,8 +370,8 @@ ELF-X86-64-NEXT: - Name: .rela.text ELF-X86-64-NEXT: Type: SHT_RELA ELF-X86-64-NEXT: Address: 0x0000000000000038 ELF-X86-64-NEXT: Link: .symtab -ELF-X86-64-NEXT: Info: .text ELF-X86-64-NEXT: AddressAlign: 0x0000000000000008 +ELF-X86-64-NEXT: Info: .text ELF-X86-64-NEXT: Relocations: ELF-X86-64-NEXT: - Offset: 0x000000000000000D ELF-X86-64-NEXT: Symbol: .rodata.str1.1 diff --git a/test/Object/objdump-no-sectionheaders.test b/test/Object/objdump-no-sectionheaders.test new file mode 100644 index 0000000..5130100 --- /dev/null +++ b/test/Object/objdump-no-sectionheaders.test @@ -0,0 +1,6 @@ +; RUN: llvm-objdump -h %p/Inputs/no-sections.elf-x86-64 \ +; RUN: | FileCheck %s + +; CHECK: Sections: +; CHECK: Idx Name Size Address Type +; CHECK-NOT: {{.}} diff --git a/test/Object/simple-archive.test b/test/Object/simple-archive.test index 3e6760e..085a91e 100644 --- a/test/Object/simple-archive.test +++ b/test/Object/simple-archive.test @@ -1,7 +1,7 @@ # # Check if the index is appearing properly in the output file # -RUN: llvm-nm -s %p/Inputs/libsimple_archive.a | FileCheck -check-prefix=CHECKIDX %s +RUN: llvm-nm -M %p/Inputs/libsimple_archive.a | FileCheck -check-prefix=CHECKIDX %s CHECKIDX: Archive map CHECKIDX: abcdefghijklmnopqrstuvwxyz12345678 in 1.o diff --git a/test/Object/size-trivial-macho.test b/test/Object/size-trivial-macho.test index 6ecdf5c..a6d3d1c 100644 --- a/test/Object/size-trivial-macho.test +++ b/test/Object/size-trivial-macho.test @@ -2,6 +2,22 @@ RUN: llvm-size -A %p/Inputs/macho-text-data-bss.macho-x86_64 \ RUN: | FileCheck %s -check-prefix A RUN: llvm-size -B %p/Inputs/macho-text-data-bss.macho-x86_64 \ RUN: | FileCheck %s -check-prefix B +RUN: llvm-size -format darwin %p/Inputs/macho-text-data-bss.macho-x86_64 \ +RUN: | FileCheck %s -check-prefix m +RUN: llvm-size %p/Inputs/macho-archive-x86_64.a \ +RUN: | FileCheck %s -check-prefix AR +RUN: llvm-size -format darwin %p/Inputs/macho-archive-x86_64.a \ +RUN: | FileCheck %s -check-prefix mAR +RUN: llvm-size -m -x -l %p/Inputs/hello-world.macho-x86_64 \ +RUN: | FileCheck %s -check-prefix mxl +RUN: llvm-size -arch all %p/Inputs/macho-universal.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix u +RUN: llvm-size -arch i386 %p/Inputs/macho-universal.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix u-i386 +RUN: llvm-size -arch all %p/Inputs/macho-universal-archive.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix uAR +RUN: llvm-size -arch x86_64 %p/Inputs/macho-universal-archive.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix uAR-x86_64 A: section size addr A: __text 12 0 @@ -11,5 +27,63 @@ A: __compact_unwind 32 16 A: __eh_frame 64 48 A: Total 116 -B: text data bss dec hex filename -B: 12 100 4 116 74 +B: __TEXT __DATA __OBJC others dec hex +B: 76 8 0 32 116 74 + +m: Segment : 116 +m: Section (__TEXT, __text): 12 +m: Section (__DATA, __data): 4 +m: Section (__DATA, __bss): 4 +m: Section (__LD, __compact_unwind): 32 +m: Section (__TEXT, __eh_frame): 64 +m: total 116 +m: total 116 + +AR: __TEXT __DATA __OBJC others dec hex +AR: 70 0 0 32 102 66 {{.*}}/macho-archive-x86_64.a(foo.o) +AR: 0 4 0 0 4 4 {{.*}}/macho-archive-x86_64.a(bar.o) + +mAR: {{.*}}/macho-archive-x86_64.a(foo.o): +mAR: Segment : 104 +mAR: Section (__TEXT, __text): 6 +mAR: Section (__LD, __compact_unwind): 32 +mAR: Section (__TEXT, __eh_frame): 64 +mAR: total 102 +mAR: total 104 +mAR: {{.*}}/macho-archive-x86_64.a(bar.o): +mAR: Segment : 4 +mAR: Section (__TEXT, __text): 0 +mAR: Section (__DATA, __data): 4 +mAR: total 4 +mAR: total 4 + + +mxl: Segment __PAGEZERO: 0x100000000 (vmaddr 0x0 fileoff 0) +mxl: Segment __TEXT: 0x1000 (vmaddr 0x100000000 fileoff 0) +mxl: Section __text: 0x3b (addr 0x100000f30 offset 3888) +mxl: Section __stubs: 0x6 (addr 0x100000f6c offset 3948) +mxl: Section __stub_helper: 0x1a (addr 0x100000f74 offset 3956) +mxl: Section __cstring: 0xd (addr 0x100000f8e offset 3982) +mxl: Section __unwind_info: 0x48 (addr 0x100000f9b offset 3995) +mxl: Section __eh_frame: 0x18 (addr 0x100000fe8 offset 4072) +mxl: total 0xc8 +mxl: Segment __DATA: 0x1000 (vmaddr 0x100001000 fileoff 4096) +mxl: Section __nl_symbol_ptr: 0x10 (addr 0x100001000 offset 4096) +mxl: Section __la_symbol_ptr: 0x8 (addr 0x100001010 offset 4112) +mxl: total 0x18 +mxl: Segment __LINKEDIT: 0x1000 (vmaddr 0x100002000 fileoff 8192) +mxl: total 0x100003000 + +u: __TEXT __DATA __OBJC others dec hex +u: 4096 0 0 4294971392 4294975488 100002000 {{.*}}/macho-universal.x86_64.i386 (for architecture x86_64) +u: 4096 0 0 8192 12288 3000 {{.*}}/macho-universal.x86_64.i386 (for architecture i386) + +u-i386: __TEXT __DATA __OBJC others dec hex +u-i386: 4096 0 0 8192 12288 3000 + +uAR: __TEXT __DATA __OBJC others dec hex +uAR: 136 0 0 32 168 a8 {{.*}}/macho-universal-archive.x86_64.i386(hello.o) (for architecture x86_64) +uAR: 5 4 0 0 9 9 {{.*}}/macho-universal-archive.x86_64.i386(foo.o) (for architecture i386) + +uAR-x86_64: __TEXT __DATA __OBJC others dec hex +uAR-x86_64: 136 0 0 32 168 a8 {{.*}}/macho-universal-archive.x86_64.i386(hello.o) diff --git a/test/Object/yaml2obj-coff-multi-doc.test b/test/Object/yaml2obj-coff-multi-doc.test new file mode 100644 index 0000000..1cf7203 --- /dev/null +++ b/test/Object/yaml2obj-coff-multi-doc.test @@ -0,0 +1,91 @@ +# RUN: yaml2obj -format=coff -docnum=1 %s \ +# RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC1 %s +# RUN: yaml2obj -format=coff -docnum=2 %s \ +# RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC2 %s +# RUN: not yaml2obj -format=coff -docnum=3 %s 2>&1 \ +# RUN: | FileCheck -check-prefix=DOC3 %s + +# DOC1: Name: _sym1 +# DOC2: Name: _sym2 +# DOC3: yaml2obj: Cannot find the 3rd document + +--- +header: + Machine: IMAGE_FILE_MACHINE_I386 + Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ] + +sections: + - Name: .text + Alignment: 16 + Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, + IMAGE_SCN_MEM_READ ] + SectionData: "00000000" + +symbols: + - Name: .text + Value: 0 + SectionNumber: 1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 36 + NumberOfRelocations: 3 + NumberOfLinenumbers: 0 + CheckSum: 0 + Number: 1 + + - Name: _main + Value: 0 + SectionNumber: 1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_FUNCTION + StorageClass: IMAGE_SYM_CLASS_EXTERNAL + + - Name: _sym1 + Value: 0 + SectionNumber: 0 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_EXTERNAL + +--- +header: + Machine: IMAGE_FILE_MACHINE_I386 + Characteristics: [ IMAGE_FILE_DEBUG_STRIPPED ] + +sections: + - Name: .text + Alignment: 16 + Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, + IMAGE_SCN_MEM_READ ] + SectionData: "00000000" + +symbols: + - Name: .text + Value: 0 + SectionNumber: 1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 36 + NumberOfRelocations: 3 + NumberOfLinenumbers: 0 + CheckSum: 0 + Number: 1 + + - Name: _main + Value: 0 + SectionNumber: 1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_FUNCTION + StorageClass: IMAGE_SYM_CLASS_EXTERNAL + + - Name: _sym2 + Value: 0 + SectionNumber: 0 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_EXTERNAL +... diff --git a/test/Object/yaml2obj-elf-multi-doc.test b/test/Object/yaml2obj-elf-multi-doc.test new file mode 100644 index 0000000..c51f803 --- /dev/null +++ b/test/Object/yaml2obj-elf-multi-doc.test @@ -0,0 +1,56 @@ +# RUN: yaml2obj -format=elf -docnum=1 %s \ +# RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC1 %s +# RUN: yaml2obj -format=elf -docnum=2 %s \ +# RUN: | llvm-readobj -symbols - | FileCheck -check-prefix=DOC2 %s +# RUN: not yaml2obj -format=elf -docnum=3 %s 2>&1 \ +# RUN: | FileCheck -check-prefix=DOC3 %s + +# DOC1: Name: T1 (1) +# DOC2: Name: T2 (1) +# DOC3: yaml2obj: Cannot find the 3rd document + +--- !ELF +FileHeader: !FileHeader + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [EF_MIPS_CPIC] + +Sections: +- Name: .text + Type: SHT_PROGBITS + Content: "0000000000000000" + AddressAlign: 16 + Flags: [SHF_EXECINSTR, SHF_ALLOC] + +Symbols: + Global: + - Name: T1 + Section: .text + Type: STT_FUNC + Value: 0x0 + Size: 8 + +--- !ELF +FileHeader: !FileHeader + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + +Sections: +- Name: .text + Type: SHT_PROGBITS + Content: "00000000" + AddressAlign: 16 + Flags: [SHF_EXECINSTR, SHF_ALLOC] + +Symbols: + Global: + - Name: T2 + Section: .text + Type: STT_FUNC + Value: 0x0 + Size: 4 +... diff --git a/test/Object/yaml2obj-elf-symbol-visibility.yaml b/test/Object/yaml2obj-elf-symbol-visibility.yaml new file mode 100644 index 0000000..113354a --- /dev/null +++ b/test/Object/yaml2obj-elf-symbol-visibility.yaml @@ -0,0 +1,126 @@ +# RUN: yaml2obj -format=elf %s | llvm-readobj -symbols - | \ +# RUN: FileCheck --check-prefix OBJ %s +# RUN: yaml2obj -format=elf %s | obj2yaml - | FileCheck --check-prefix YAML %s + +# OBJ: Symbol { +# OBJ: Name: default1 (36) +# OBJ-NEXT: Value: 0x0 +# OBJ-NEXT: Size: 4 +# OBJ-NEXT: Binding: Global (0x1) +# OBJ-NEXT: Type: Object (0x1) +# OBJ-NEXT: Other: 0 +# OBJ-NEXT: Section: .data (0x1) +# OBJ-NEXT: } +# OBJ-NEXT: Symbol { +# OBJ-NEXT: Name: default2 (27) +# OBJ-NEXT: Value: 0x4 +# OBJ-NEXT: Size: 4 +# OBJ-NEXT: Binding: Global (0x1) +# OBJ-NEXT: Type: Object (0x1) +# OBJ-NEXT: Other: 0 +# OBJ-NEXT: Section: .data (0x1) +# OBJ-NEXT: } +# OBJ-NEXT: Symbol { +# OBJ-NEXT: Name: internal (8) +# OBJ-NEXT: Value: 0x8 +# OBJ-NEXT: Size: 4 +# OBJ-NEXT: Binding: Global (0x1) +# OBJ-NEXT: Type: Object (0x1) +# OBJ-NEXT: Other: 1 +# OBJ-NEXT: Section: .data (0x1) +# OBJ-NEXT: } +# OBJ-NEXT: Symbol { +# OBJ-NEXT: Name: hidden (1) +# OBJ-NEXT: Value: 0xC +# OBJ-NEXT: Size: 4 +# OBJ-NEXT: Binding: Global (0x1) +# OBJ-NEXT: Type: Object (0x1) +# OBJ-NEXT: Other: 2 +# OBJ-NEXT: Section: .data (0x1) +# OBJ-NEXT: } +# OBJ-NEXT: Symbol { +# OBJ-NEXT: Name: protected (17) +# OBJ-NEXT: Value: 0x10 +# OBJ-NEXT: Size: 4 +# OBJ-NEXT: Binding: Global (0x1) +# OBJ-NEXT: Type: Object (0x1) +# OBJ-NEXT: Other: 3 +# OBJ-NEXT: Section: .data (0x1) +# OBJ-NEXT: } + +# YAML: Symbols: +# YAML-NEXT: Global: +# YAML-NEXT: - Name: default1 +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: - Name: default2 +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Value: 0x0000000000000004 +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: - Name: internal +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Value: 0x0000000000000008 +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: Visibility: STV_INTERNAL +# YAML-NEXT: - Name: hidden +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Value: 0x000000000000000C +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: Visibility: STV_HIDDEN +# YAML-NEXT: - Name: protected +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Value: 0x0000000000000010 +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: Visibility: STV_PROTECTED + +--- +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS + Flags: [ EF_MIPS_ABI_O32, EF_MIPS_ARCH_32 ] + +Sections: + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_WRITE ] + AddressAlign: 0x04 + Size: 0x14 + +Symbols: + Global: + - Name: default1 + Type: STT_OBJECT + Visibility: STV_DEFAULT + Section: .data + Value: 0x00 + Size: 0x04 + - Name: default2 + Type: STT_OBJECT + Section: .data + Value: 0x04 + Size: 0x04 + - Name: internal + Type: STT_OBJECT + Visibility: STV_INTERNAL + Section: .data + Value: 0x08 + Size: 0x04 + - Name: hidden + Type: STT_OBJECT + Visibility: STV_HIDDEN + Section: .data + Value: 0x0C + Size: 0x04 + - Name: protected + Type: STT_OBJECT + Visibility: STV_PROTECTED + Section: .data + Value: 0x10 + Size: 0x04 |