# 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