[lld] r199556 - [Mips] Use explicit assembler instructions in the tests.

Simon Atanasyan simon at atanasyan.com
Sat Jan 18 08:59:20 PST 2014


Author: atanasyan
Date: Sat Jan 18 10:59:19 2014
New Revision: 199556

URL: http://llvm.org/viewvc/llvm-project?rev=199556&view=rev
Log:
[Mips] Use explicit assembler instructions in the tests.

Removed:
    lld/trunk/test/elf/Mips/Inputs/dynobj.c
    lld/trunk/test/elf/Mips/Inputs/dynobj.o
Modified:
    lld/trunk/test/elf/Mips/dynlib-dynamic.test
    lld/trunk/test/elf/Mips/dynlib-dynsym.test
    lld/trunk/test/elf/Mips/dynlib-fileheader.test

Removed: lld/trunk/test/elf/Mips/Inputs/dynobj.c
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/Inputs/dynobj.c?rev=199555&view=auto
==============================================================================
--- lld/trunk/test/elf/Mips/Inputs/dynobj.c (original)
+++ lld/trunk/test/elf/Mips/Inputs/dynobj.c (removed)
@@ -1,14 +0,0 @@
-// clang -O0 -EL -fPIC -target mipsel-linux-gnu -c dynobj.c -o dynobj.o
-int xyz(const char *);
-int abc(const char *);
-
-int bar(void)
-{
-  return 1;
-}
-
-int foo(void)
-{
-  bar();
-  return xyz("str1") + abc("str2");
-}

Removed: lld/trunk/test/elf/Mips/Inputs/dynobj.o
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/Inputs/dynobj.o?rev=199555&view=auto
==============================================================================
Binary files lld/trunk/test/elf/Mips/Inputs/dynobj.o (original) and lld/trunk/test/elf/Mips/Inputs/dynobj.o (removed) differ

Modified: lld/trunk/test/elf/Mips/dynlib-dynamic.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-dynamic.test?rev=199556&r1=199555&r2=199556&view=diff
==============================================================================
--- lld/trunk/test/elf/Mips/dynlib-dynamic.test (original)
+++ lld/trunk/test/elf/Mips/dynlib-dynamic.test Sat Jan 18 10:59:19 2014
@@ -1,27 +1,49 @@
 # Check MIPS specific tags in the dynamic table.
-RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec \
-RUN:     -o %t %p/Inputs/dynobj.o
-RUN: llvm-readobj -dynamic-table %t | FileCheck %s
 
-CHECK: Format: ELF32-mips
-CHECK: Arch: mipsel
-CHECK: AddressSize: 32bit
-CHECK: LoadName: 
-CHECK: DynamicSection [ (15 entries)
-CHECK:   Tag        Type                 Name/Value
-CHECK:   0x00000004 HASH                 0xE0
-CHECK:   0x00000005 STRTAB               0x158
-CHECK:   0x00000006 SYMTAB               0x108
-CHECK:   0x0000000A STRSZ                17 (bytes)
-CHECK:   0x0000000B SYMENT               16 (bytes)
-CHECK:   0x0000001A FINI_ARRAY           0x0
-CHECK:   0x0000001C FINI_ARRAYSZ         0 (bytes)
-CHECK:   0x70000001 MIPS_RLD_VERSION     1
-CHECK:   0x70000005 MIPS_FLAGS           0x2
-CHECK:   0x70000006 MIPS_BASE_ADDRESS    0x0
-CHECK:   0x7000000A MIPS_LOCAL_GOTNO     4
-CHECK:   0x70000011 MIPS_SYMTABNO        5
-CHECK:   0x70000013 MIPS_GOTSYM          0x2
-CHECK:   0x00000003 PLTGOT               0x1000
-CHECK:   0x00000000 NULL                 0x0
-CHECK: ]
+# Build shared library
+# RUN: llvm-mc -triple=mipsel -filetype=obj -relocation-model=pic -o=%t-obj %s
+# RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec -o %t-so %t-obj
+# RUN: llvm-readobj -dynamic-table %t-so | FileCheck %s
+
+# CHECK: Format: ELF32-mips
+# CHECK: Arch: mipsel
+# CHECK: AddressSize: 32bit
+# CHECK: LoadName: 
+# CHECK: DynamicSection [ (15 entries)
+# CHECK:   Tag        Type                 Name/Value
+# CHECK:   0x00000004 HASH                 0xD4
+# CHECK:   0x00000005 STRTAB               0x138
+# CHECK:   0x00000006 SYMTAB               0xF8
+# CHECK:   0x0000000A STRSZ                17 (bytes)
+# CHECK:   0x0000000B SYMENT               16 (bytes)
+# CHECK:   0x0000001A FINI_ARRAY           0x0
+# CHECK:   0x0000001C FINI_ARRAYSZ         0 (bytes)
+# CHECK:   0x70000001 MIPS_RLD_VERSION     1
+# CHECK:   0x70000005 MIPS_FLAGS           0x2
+# CHECK:   0x70000006 MIPS_BASE_ADDRESS    0x0
+# CHECK:   0x7000000A MIPS_LOCAL_GOTNO     4
+# CHECK:   0x70000011 MIPS_SYMTABNO        4
+# CHECK:   0x70000013 MIPS_GOTSYM          0x2
+# CHECK:   0x00000003 PLTGOT               0x1000
+# CHECK:   0x00000000 NULL                 0x0
+# CHECK: ]
+
+    .abicalls
+    .global glob
+    .ent    glob
+glob:
+    lw      $gp, %got($.str1)($1)
+    addiu   $4, $gp, %lo($.str1)
+    lw      $4, %got($.str2)($1)
+    addiu   $4, $4, %lo($.str2)
+    lw      $25, %call16(glob2)($1)
+    lw      $25, %call16(ext1)($1)
+    .end    glob
+
+    .section  .rodata.str1
+$.str1:
+    .asciz  "str1"
+
+    .section  .rodata.str2
+$.str2:
+    .asciz  "str2"

Modified: lld/trunk/test/elf/Mips/dynlib-dynsym.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-dynsym.test?rev=199556&r1=199555&r2=199556&view=diff
==============================================================================
--- lld/trunk/test/elf/Mips/dynlib-dynsym.test (original)
+++ lld/trunk/test/elf/Mips/dynlib-dynsym.test Sat Jan 18 10:59:19 2014
@@ -1,118 +1,158 @@
 # Check sorting of .dynsym content accordingly to .got section.
-RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec \
-RUN:     -o %t %p/Inputs/dynobj.o
-RUN: llvm-readobj -dyn-symbols %t | FileCheck -check-prefix=CHECK-DYN %s
-
-RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec \
-RUN:     --output-filetype=yaml -o %t %p/Inputs/dynobj.o
-RUN: FileCheck -check-prefix=CHECK-GOT %s < %t
-
-CHECK-DYN: Format: ELF32-mips
-CHECK-DYN: Arch: mipsel
-CHECK-DYN: AddressSize: 32bit
-CHECK-DYN: LoadName: 
-CHECK-DYN: DynamicSymbols [
-CHECK-DYN:   Symbol {
-CHECK-DYN:     Name: @ (0)
-CHECK-DYN:     Value: 0x0
-CHECK-DYN:     Size: 0
-CHECK-DYN:     Binding: Local (0x0)
-CHECK-DYN:     Type: None (0x0)
-CHECK-DYN:     Other: 0
-CHECK-DYN:     Section:  (0x0)
-CHECK-DYN:   }
-CHECK-DYN:   Symbol {
-CHECK-DYN:     Name: foo@ (5)
-CHECK-DYN:     Value: 0x194
-CHECK-DYN:     Size: 156
-CHECK-DYN:     Binding: Global (0x1)
-CHECK-DYN:     Type: Function (0x2)
-CHECK-DYN:     Other: 0
-CHECK-DYN:     Section: .text (0x4)
-CHECK-DYN:   }
-CHECK-DYN:   Symbol {
-CHECK-DYN:     Name: bar@ (1)
-CHECK-DYN:     Value: 0x170
-CHECK-DYN:     Size: 36
-CHECK-DYN:     Binding: Global (0x1)
-CHECK-DYN:     Type: Function (0x2)
-CHECK-DYN:     Other: 0
-CHECK-DYN:     Section: .text (0x4)
-CHECK-DYN:   }
-CHECK-DYN:   Symbol {
-CHECK-DYN:     Name: xyz@ (9)
-CHECK-DYN:     Value: 0x0
-CHECK-DYN:     Size: 0
-CHECK-DYN:     Binding: Global (0x1)
-CHECK-DYN:     Type: None (0x0)
-CHECK-DYN:     Other: 0
-CHECK-DYN:     Section:  (0x0)
-CHECK-DYN:   }
-CHECK-DYN:   Symbol {
-CHECK-DYN:     Name: abc@ (13)
-CHECK-DYN:     Value: 0x0
-CHECK-DYN:     Size: 0
-CHECK-DYN:     Binding: Global (0x1)
-CHECK-DYN:     Type: None (0x0)
-CHECK-DYN:     Other: 0
-CHECK-DYN:     Section:  (0x0)
-CHECK-DYN:   }
-CHECK-DYN: ]
-
-CHECK-GOT:   - type:            got
-CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
-CHECK-GOT:     alignment:       2^2
-CHECK-GOT:     section-choice:  custom-required
-CHECK-GOT:     section-name:    .got
-CHECK-GOT:     permissions:     rw-
-CHECK-GOT:   - type:            got
-CHECK-GOT:     content:         [ 00, 00, 00, 80 ]
-CHECK-GOT:     alignment:       2^2
-CHECK-GOT:     section-choice:  custom-required
-CHECK-GOT:     section-name:    .got
-CHECK-GOT:     permissions:     rw-
-CHECK-GOT:   - ref-name:        L004
-CHECK-GOT:     type:            got
-CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
-CHECK-GOT:     alignment:       2^2
-CHECK-GOT:     section-choice:  custom-required
-CHECK-GOT:     section-name:    .got
-CHECK-GOT:     permissions:     rw-
-CHECK-GOT:   - ref-name:        L006
-CHECK-GOT:     type:            got
-CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
-CHECK-GOT:     alignment:       2^2
-CHECK-GOT:     section-choice:  custom-required
-CHECK-GOT:     section-name:    .got
-CHECK-GOT:     permissions:     rw-
-CHECK-GOT:   - ref-name:        L003
-CHECK-GOT:     type:            got
-CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
-CHECK-GOT:     alignment:       2^2
-CHECK-GOT:     section-choice:  custom-required
-CHECK-GOT:     section-name:    .got
-CHECK-GOT:     permissions:     rw-
-CHECK-GOT:     references:
-CHECK-GOT:       - kind:            R_MIPS_32
-CHECK-GOT:         offset:          0
-CHECK-GOT:         target:          bar
-CHECK-GOT:   - ref-name:        L005
-CHECK-GOT:     type:            got
-CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
-CHECK-GOT:     alignment:       2^2
-CHECK-GOT:     section-choice:  custom-required
-CHECK-GOT:     section-name:    .got
-CHECK-GOT:     permissions:     rw-
-CHECK-GOT:   - ref-name:        L007
-CHECK-GOT:     type:            got
-CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
-CHECK-GOT:     alignment:       2^2
-CHECK-GOT:     section-choice:  custom-required
-CHECK-GOT:     section-name:    .got
-CHECK-GOT:     permissions:     rw-
-CHECK-GOT:   - ref-name:        L002
-CHECK-GOT:     alignment:       2^4
-CHECK-GOT:     references:
-CHECK-GOT:       - kind:            layout-after
-CHECK-GOT:         offset:          0
-CHECK-GOT:         target:          bar
+
+# Build shared library
+# RUN: llvm-mc -triple=mipsel -filetype=obj -relocation-model=pic -o=%t-obj %s
+# RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec -o %t-so %t-obj
+# RUN: llvm-readobj -dyn-symbols %t-so | FileCheck -check-prefix=CHECK-DYN %s
+
+# Build shared library (yaml format)
+# RUN: llvm-mc -triple=mipsel -filetype=obj -relocation-model=pic -o=%t-obj %s
+# RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec \
+# RUN:     --output-filetype=yaml -o %t-yaml %t-obj
+# RUN: FileCheck -check-prefix=CHECK-GOT %s < %t-yaml
+
+# CHECK-DYN: Format: ELF32-mips
+# CHECK-DYN: Arch: mipsel
+# CHECK-DYN: AddressSize: 32bit
+# CHECK-DYN: LoadName: 
+# CHECK-DYN: DynamicSymbols [
+# CHECK-DYN:   Symbol {
+# CHECK-DYN:     Name: @ (0)
+# CHECK-DYN:     Value: 0x0
+# CHECK-DYN:     Size: 0
+# CHECK-DYN:     Binding: Local (0x0)
+# CHECK-DYN:     Type: None (0x0)
+# CHECK-DYN:     Other: 0
+# CHECK-DYN:     Section:  (0x0)
+# CHECK-DYN:   }
+# CHECK-DYN:   Symbol {
+# CHECK-DYN:     Name: bar@ (5)
+# CHECK-DYN:     Value: 0x178
+# CHECK-DYN:     Size: 4
+# CHECK-DYN:     Binding: Global (0x1)
+# CHECK-DYN:     Type: Function (0x2)
+# CHECK-DYN:     Other: 0
+# CHECK-DYN:     Section: .text (0x4)
+# CHECK-DYN:   }
+# CHECK-DYN:   Symbol {
+# CHECK-DYN:     Name: foo@ (1)
+# CHECK-DYN:     Value: 0x160
+# CHECK-DYN:     Size: 24
+# CHECK-DYN:     Binding: Global (0x1)
+# CHECK-DYN:     Type: Function (0x2)
+# CHECK-DYN:     Other: 0
+# CHECK-DYN:     Section: .text (0x4)
+# CHECK-DYN:   }
+# CHECK-DYN:   Symbol {
+# CHECK-DYN:     Name: ext1@ (9)
+# CHECK-DYN:     Value: 0x0
+# CHECK-DYN:     Size: 0
+# CHECK-DYN:     Binding: Global (0x1)
+# CHECK-DYN:     Type: None (0x0)
+# CHECK-DYN:     Other: 0
+# CHECK-DYN:     Section:  (0x0)
+# CHECK-DYN:   }
+# CHECK-DYN:   Symbol {
+# CHECK-DYN:     Name: ext2@ (14)
+# CHECK-DYN:     Value: 0x0
+# CHECK-DYN:     Size: 0
+# CHECK-DYN:     Binding: Global (0x1)
+# CHECK-DYN:     Type: None (0x0)
+# CHECK-DYN:     Other: 0
+# CHECK-DYN:     Section:  (0x0)
+# CHECK-DYN:   }
+# CHECK-DYN: ]
+
+# CHECK-GOT:   - type:            got
+# CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
+# CHECK-GOT:     alignment:       2^2
+# CHECK-GOT:     section-choice:  custom-required
+# CHECK-GOT:     section-name:    .got
+# CHECK-GOT:     permissions:     rw-
+# CHECK-GOT:   - type:            got
+# CHECK-GOT:     content:         [ 00, 00, 00, 80 ]
+# CHECK-GOT:     alignment:       2^2
+# CHECK-GOT:     section-choice:  custom-required
+# CHECK-GOT:     section-name:    .got
+# CHECK-GOT:     permissions:     rw-
+# CHECK-GOT:   - ref-name:        L002
+# CHECK-GOT:     type:            got
+# CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
+# CHECK-GOT:     alignment:       2^2
+# CHECK-GOT:     section-choice:  custom-required
+# CHECK-GOT:     section-name:    .got
+# CHECK-GOT:     permissions:     rw-
+# CHECK-GOT:     references:
+# CHECK-GOT:       - kind:            R_MIPS_32
+# CHECK-GOT:         offset:          0
+# CHECK-GOT:         target:          L003
+# CHECK-GOT:   - ref-name:        L004
+# CHECK-GOT:     type:            got
+# CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
+# CHECK-GOT:     alignment:       2^2
+# CHECK-GOT:     section-choice:  custom-required
+# CHECK-GOT:     section-name:    .got
+# CHECK-GOT:     permissions:     rw-
+# CHECK-GOT:     references:
+# CHECK-GOT:       - kind:            R_MIPS_32
+# CHECK-GOT:         offset:          0
+# CHECK-GOT:         target:          L005
+# CHECK-GOT:   - ref-name:        L006
+# CHECK-GOT:     type:            got
+# CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
+# CHECK-GOT:     alignment:       2^2
+# CHECK-GOT:     section-choice:  custom-required
+# CHECK-GOT:     section-name:    .got
+# CHECK-GOT:     permissions:     rw-
+# CHECK-GOT:     references:
+# CHECK-GOT:       - kind:            LLD_R_MIPS_GLOBAL_GOT
+# CHECK-GOT:         offset:          0
+# CHECK-GOT:         target:          foo
+# CHECK-GOT:   - ref-name:        L007
+# CHECK-GOT:     type:            got
+# CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
+# CHECK-GOT:     alignment:       2^2
+# CHECK-GOT:     section-choice:  custom-required
+# CHECK-GOT:     section-name:    .got
+# CHECK-GOT:     permissions:     rw-
+# CHECK-GOT:     references:
+# CHECK-GOT:       - kind:            LLD_R_MIPS_GLOBAL_GOT
+# CHECK-GOT:         offset:          0
+# CHECK-GOT:         target:          ext1
+# CHECK-GOT:   - ref-name:        L009
+# CHECK-GOT:     type:            got
+# CHECK-GOT:     content:         [ 00, 00, 00, 00 ]
+# CHECK-GOT:     alignment:       2^2
+# CHECK-GOT:     section-choice:  custom-required
+# CHECK-GOT:     section-name:    .got
+# CHECK-GOT:     permissions:     rw-
+# CHECK-GOT:     references:
+# CHECK-GOT:       - kind:            LLD_R_MIPS_GLOBAL_GOT
+# CHECK-GOT:         offset:          0
+# CHECK-GOT:         target:          ext2
+
+    .abicalls
+    .global foo
+    .ent    foo
+foo:
+    lw      $gp, %got($.str1)($1)
+    addiu   $4, $gp, %lo($.str1)
+    lw      $4, %got($.str2)($1)
+    addiu   $4, $4, %lo($.str2)
+    lw      $25, %call16(foo)($1)
+    lw      $25, %call16(ext1)($1)
+    .end    foo
+
+    .global bar
+    .ent    brar
+bar:
+    lw      $25, %call16(ext2)($1)
+    .end    bar
+
+    .section  .rodata.str1
+$.str1:
+    .asciz  "str1"
+
+    .section  .rodata.str2
+$.str2:
+    .asciz  "str2"

Modified: lld/trunk/test/elf/Mips/dynlib-fileheader.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-fileheader.test?rev=199556&r1=199555&r2=199556&view=diff
==============================================================================
--- lld/trunk/test/elf/Mips/dynlib-fileheader.test (original)
+++ lld/trunk/test/elf/Mips/dynlib-fileheader.test Sat Jan 18 10:59:19 2014
@@ -1,39 +1,49 @@
-RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec \
-RUN:     -o %t %p/Inputs/dynobj.o
-RUN: llvm-readobj -file-headers %t | FileCheck %s
+# Check ELF Header for shared library.
 
-CHECK: Format: ELF32-mips
-CHECK: Arch: mipsel
-CHECK: AddressSize: 32bit
-CHECK: LoadName: 
-CHECK: ElfHeader {
-CHECK:   Ident {
-CHECK:    Magic: (7F 45 4C 46)
-CHECK:    Class: 32-bit (0x1)
-CHECK:    DataEncoding: LittleEndian (0x1)
-CHECK:    FileVersion: 1
-CHECK:    OS/ABI: SystemV (0x0)
-CHECK:    ABIVersion: 0
-CHECK:    Unused: (00 00 00 00 00 00 00)
-CHECK:  }
-CHECK:  Type: SharedObject (0x3)
-CHECK:  Machine: EM_MIPS (0x8)
-CHECK:  Version: 1
-CHECK:  Entry: 0x170
-CHECK:  ProgramHeaderOffset: 0x34
-CHECK:  SectionHeaderOffset: 0x21D8
-CHECK:  Flags [ (0x70001007)
-CHECK:    0x1
-CHECK:    0x2
-CHECK:    0x1000
-CHECK:    0x10000000
-CHECK:    0x20000000
-CHECK:    0x40000000
-CHECK:  ]
-CHECK:  HeaderSize: 52
-CHECK:  ProgramHeaderEntrySize: 32
-CHECK:  ProgramHeaderCount: 5
-CHECK:  SectionHeaderEntrySize: 40
-CHECK:  SectionHeaderCount: 16
-CHECK:  StringTableSectionIndex: 13
-CHECK:}
+# Build shared library
+# RUN: llvm-mc -triple=mipsel -filetype=obj -relocation-model=pic -o=%t-obj %s
+# RUN: lld -flavor gnu -target mipsel -shared -o %t-so %t-obj
+# RUN: llvm-readobj -file-headers %t-so | FileCheck %s
+
+# CHECK: Format: ELF32-mips
+# CHECK: Arch: mipsel
+# CHECK: AddressSize: 32bit
+# CHECK: LoadName: 
+# CHECK: ElfHeader {
+# CHECK:   Ident {
+# CHECK:    Magic: (7F 45 4C 46)
+# CHECK:    Class: 32-bit (0x1)
+# CHECK:    DataEncoding: LittleEndian (0x1)
+# CHECK:    FileVersion: 1
+# CHECK:    OS/ABI: SystemV (0x0)
+# CHECK:    ABIVersion: 0
+# CHECK:    Unused: (00 00 00 00 00 00 00)
+# CHECK:  }
+# CHECK:  Type: SharedObject (0x3)
+# CHECK:  Machine: EM_MIPS (0x8)
+# CHECK:  Version: 1
+# CHECK:  Entry: 0x110
+# CHECK:  ProgramHeaderOffset: 0x34
+# CHECK:  SectionHeaderOffset: 0x20E0
+# CHECK:  Flags [ (0x70001007)
+# CHECK:    0x1
+# CHECK:    0x2
+# CHECK:    0x1000
+# CHECK:    0x10000000
+# CHECK:    0x20000000
+# CHECK:    0x40000000
+# CHECK:  ]
+# CHECK:  HeaderSize: 52
+# CHECK:  ProgramHeaderEntrySize: 32
+# CHECK:  ProgramHeaderCount: 5
+# CHECK:  SectionHeaderEntrySize: 40
+# CHECK:  SectionHeaderCount: 12
+# CHECK:  StringTableSectionIndex: 9
+# CHECK:}
+
+    .abicalls
+    .global glob
+    .ent    glob
+glob:
+    nop
+    .end    glob





More information about the llvm-commits mailing list