| # REQUIRES: mips |
| # Check MIPS specific .dynamic section entries. |
| |
| # RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o |
| # RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %p/Inputs/mips-dynamic.s -o %td.o |
| # RUN: ld.lld -shared %td.o -o %td.so |
| |
| # RUN: ld.lld %t.o %td.so -o %t.exe |
| # RUN: llvm-readobj -sections -dynamic-table %t.exe \ |
| # RUN: | FileCheck -check-prefixes=EXE,NOPIE %s |
| |
| # RUN: ld.lld -pie %t.o %td.so -o %t.so |
| # RUN: llvm-readobj -sections -dyn-symbols -dynamic-table %t.so \ |
| # RUN: | FileCheck -check-prefixes=EXE,PIE %s |
| |
| # RUN: ld.lld %t.o --image-base=0x123000 %td.so -o %t.exe |
| # RUN: llvm-readobj -sections -dynamic-table %t.exe \ |
| # RUN: | FileCheck -check-prefix=IMAGE_BASE %s |
| |
| # RUN: ld.lld -shared %t.o %td.so -o %t.so |
| # RUN: llvm-readobj -sections -dyn-symbols -dynamic-table %t.so \ |
| # RUN: | FileCheck -check-prefix=DSO %s |
| |
| # EXE: Sections [ |
| # EXE: Name: .dynamic |
| # EXE-NEXT: Type: SHT_DYNAMIC |
| # EXE-NEXT: Flags [ |
| # EXE-NEXT: SHF_ALLOC |
| # EXE-NEXT: ] |
| # EXE: Name: .rld_map |
| # EXE-NEXT: Type: SHT_PROGBITS |
| # EXE-NEXT: Flags [ |
| # EXE-NEXT: SHF_ALLOC |
| # EXE-NEXT: SHF_WRITE |
| # EXE-NEXT: ] |
| # EXE-NEXT: Address: [[RLDMAPADDR:0x[0-9a-f]+]] |
| # EXE-NEXT: Offset: |
| # EXE-NEXT: Size: 4 |
| # EXE: Name: .got |
| # EXE-NEXT: Type: SHT_PROGBITS |
| # EXE-NEXT: Flags [ (0x10000003) |
| # EXE-NEXT: SHF_ALLOC |
| # EXE-NEXT: SHF_MIPS_GPREL |
| # EXE-NEXT: SHF_WRITE |
| # EXE-NEXT: ] |
| # EXE-NEXT: Address: [[GOTADDR:0x[0-9a-f]+]] |
| # EXE-NEXT: Offset: |
| # EXE-NEXT: Size: 8 |
| # EXE: ] |
| |
| # PIE: DynamicSection [ |
| # PIE-NEXT: Tag Type Name/Value |
| # PIE: 0x00000004 HASH 0x{{[0-9A-F]+}} |
| # PIE-NEXT: 0x70000001 MIPS_RLD_VERSION 1 |
| # PIE-NEXT: 0x70000005 MIPS_FLAGS NOTPOT |
| # PIE-NEXT: 0x70000006 MIPS_BASE_ADDRESS 0x0 |
| # PIE-NEXT: 0x70000011 MIPS_SYMTABNO 2 |
| # PIE-NEXT: 0x7000000A MIPS_LOCAL_GOTNO 2 |
| # PIE-NEXT: 0x70000013 MIPS_GOTSYM 0x2 |
| # PIE-NEXT: 0x00000003 PLTGOT [[GOTADDR]] |
| # PIE-NEXT: 0x70000035 MIPS_RLD_MAP_REL 0x{{[0-9A-F]+}} |
| # PIE-NEXT: 0x00000000 NULL 0x0 |
| # PIE-NEXT: ] |
| |
| # NOPIE: DynamicSection [ |
| # NOPIE-NEXT: Tag Type Name/Value |
| # NOPIE: 0x00000004 HASH 0x{{[0-9A-F]+}} |
| # NOPIE-NEXT: 0x70000001 MIPS_RLD_VERSION 1 |
| # NOPIE-NEXT: 0x70000005 MIPS_FLAGS NOTPOT |
| # NOPIE-NEXT: 0x70000006 MIPS_BASE_ADDRESS 0x10000 |
| # NOPIE-NEXT: 0x70000011 MIPS_SYMTABNO 2 |
| # NOPIE-NEXT: 0x7000000A MIPS_LOCAL_GOTNO 2 |
| # NOPIE-NEXT: 0x70000013 MIPS_GOTSYM 0x2 |
| # NOPIE-NEXT: 0x00000003 PLTGOT [[GOTADDR]] |
| # NOPIE-NEXT: 0x70000016 MIPS_RLD_MAP [[RLDMAPADDR]] |
| # NOPIE-NEXT: 0x70000035 MIPS_RLD_MAP_REL 0x{{[0-9A-F]+}} |
| # NOPIE-NEXT: 0x00000000 NULL 0x0 |
| # NOPIE-NEXT: ] |
| |
| # IMAGE_BASE: 0x70000006 MIPS_BASE_ADDRESS 0x123000 |
| |
| # DSO: Sections [ |
| # DSO: Name: .dynamic |
| # DSO-NEXT: Type: SHT_DYNAMIC |
| # DSO-NEXT: Flags [ |
| # DSO-NEXT: SHF_ALLOC |
| # DSO-NEXT: ] |
| # DSO: Name: .got |
| # DSO-NEXT: Type: SHT_PROGBITS |
| # DSO-NEXT: Flags [ (0x10000003) |
| # DSO-NEXT: SHF_ALLOC |
| # DSO-NEXT: SHF_MIPS_GPREL |
| # DSO-NEXT: SHF_WRITE |
| # DSO-NEXT: ] |
| # DSO-NEXT: Address: [[GOTADDR:0x[0-9a-f]+]] |
| # DSO-NEXT: Offset: |
| # DSO-NEXT: Size: 8 |
| # DSO: ] |
| # DSO: DynamicSymbols [ |
| # DSO: Name: @ |
| # DSO: Name: __start@ |
| # DSO: Name: _foo@ |
| # DSO: ] |
| # DSO: DynamicSection [ |
| # DSO-NEXT: Tag Type Name/Value |
| # DSO-DAG: 0x00000003 PLTGOT [[GOTADDR]] |
| # DSO-DAG: 0x70000001 MIPS_RLD_VERSION 1 |
| # DSO-DAG: 0x70000005 MIPS_FLAGS NOTPOT |
| # DSO-DAG: 0x70000006 MIPS_BASE_ADDRESS 0x0 |
| # DSO-DAG: 0x7000000A MIPS_LOCAL_GOTNO 2 |
| # DSO-DAG: 0x70000011 MIPS_SYMTABNO 3 |
| # DSO-DAG: 0x70000013 MIPS_GOTSYM 0x3 |
| # DSO: ] |
| |
| .text |
| .globl __start,_foo |
| .type _foo,@function |
| __start: |
| nop |