120 lines · plain
1# REQUIRES: mips2# Check MIPS specific .dynamic section entries.3 4# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o5# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %p/Inputs/mips-dynamic.s -o %td.o6# RUN: ld.lld -shared %td.o -o %td.so7 8# RUN: ld.lld %t.o %td.so -o %t.exe9# RUN: llvm-readobj --sections --dynamic-table %t.exe \10# RUN: | FileCheck -check-prefixes=EXE,NOPIE %s11 12# RUN: ld.lld -pie %t.o %td.so -o %t.so13# RUN: llvm-readobj --sections --dyn-syms --dynamic-table %t.so \14# RUN: | FileCheck -check-prefixes=EXE,PIE %s15 16# RUN: ld.lld %t.o --image-base=0x123000 %td.so -o %t.exe17# RUN: llvm-readobj --sections --dynamic-table %t.exe \18# RUN: | FileCheck -check-prefix=IMAGE_BASE %s19 20# RUN: ld.lld -shared %t.o %td.so -o %t.so21# RUN: llvm-readobj --sections --dyn-syms --dynamic-table %t.so \22# RUN: | FileCheck -check-prefix=DSO %s23 24# EXE: Sections [25# EXE: Name: .dynamic26# EXE-NEXT: Type: SHT_DYNAMIC27# EXE-NEXT: Flags [28# EXE-NEXT: SHF_ALLOC29# EXE-NEXT: ]30# EXE: Name: .rld_map31# EXE-NEXT: Type: SHT_PROGBITS32# EXE-NEXT: Flags [33# EXE-NEXT: SHF_ALLOC34# EXE-NEXT: SHF_WRITE35# EXE-NEXT: ]36# EXE-NEXT: Address: [[RLDMAPADDR:0x[0-9a-f]+]]37# EXE-NEXT: Offset:38# EXE-NEXT: Size: 439# EXE: Name: .got40# EXE-NEXT: Type: SHT_PROGBITS41# EXE-NEXT: Flags [ (0x10000003)42# EXE-NEXT: SHF_ALLOC43# EXE-NEXT: SHF_MIPS_GPREL44# EXE-NEXT: SHF_WRITE45# EXE-NEXT: ]46# EXE-NEXT: Address: [[GOTADDR:0x[0-9a-f]+]]47# EXE-NEXT: Offset:48# EXE-NEXT: Size: 849# EXE: ]50 51# PIE: DynamicSection [52# PIE-NEXT: Tag Type Name/Value53# PIE: 0x00000004 HASH 0x{{[0-9A-F]+}}54# PIE-NEXT: 0x70000001 MIPS_RLD_VERSION 155# PIE-NEXT: 0x70000005 MIPS_FLAGS NOTPOT56# PIE-NEXT: 0x70000006 MIPS_BASE_ADDRESS 0x057# PIE-NEXT: 0x70000011 MIPS_SYMTABNO 258# PIE-NEXT: 0x7000000A MIPS_LOCAL_GOTNO 259# PIE-NEXT: 0x70000013 MIPS_GOTSYM 0x260# PIE-NEXT: 0x00000003 PLTGOT [[GOTADDR]]61# PIE-NEXT: 0x70000035 MIPS_RLD_MAP_REL 0x{{[0-9A-F]+}}62# PIE-NEXT: 0x00000000 NULL 0x063# PIE-NEXT: ]64 65# NOPIE: DynamicSection [66# NOPIE-NEXT: Tag Type Name/Value67# NOPIE: 0x00000004 HASH 0x{{[0-9A-F]+}}68# NOPIE-NEXT: 0x70000001 MIPS_RLD_VERSION 169# NOPIE-NEXT: 0x70000005 MIPS_FLAGS NOTPOT70# NOPIE-NEXT: 0x70000006 MIPS_BASE_ADDRESS 0x1000071# NOPIE-NEXT: 0x70000011 MIPS_SYMTABNO 272# NOPIE-NEXT: 0x7000000A MIPS_LOCAL_GOTNO 273# NOPIE-NEXT: 0x70000013 MIPS_GOTSYM 0x274# NOPIE-NEXT: 0x00000003 PLTGOT [[GOTADDR]]75# NOPIE-NEXT: 0x70000016 MIPS_RLD_MAP [[RLDMAPADDR]]76# NOPIE-NEXT: 0x70000035 MIPS_RLD_MAP_REL 0x{{[0-9A-F]+}}77# NOPIE-NEXT: 0x00000000 NULL 0x078# NOPIE-NEXT: ]79 80# IMAGE_BASE: 0x70000006 MIPS_BASE_ADDRESS 0x12300081 82# DSO: Sections [83# DSO: Name: .dynamic84# DSO-NEXT: Type: SHT_DYNAMIC85# DSO-NEXT: Flags [86# DSO-NEXT: SHF_ALLOC87# DSO-NEXT: ]88# DSO: Name: .got89# DSO-NEXT: Type: SHT_PROGBITS90# DSO-NEXT: Flags [ (0x10000003)91# DSO-NEXT: SHF_ALLOC92# DSO-NEXT: SHF_MIPS_GPREL93# DSO-NEXT: SHF_WRITE94# DSO-NEXT: ]95# DSO-NEXT: Address: [[GOTADDR:0x[0-9a-f]+]]96# DSO-NEXT: Offset:97# DSO-NEXT: Size: 898# DSO: ]99# DSO: DynamicSection [100# DSO-NEXT: Tag Type Name/Value101# DSO-DAG: 0x00000003 PLTGOT [[GOTADDR]]102# DSO-DAG: 0x70000001 MIPS_RLD_VERSION 1103# DSO-DAG: 0x70000005 MIPS_FLAGS NOTPOT104# DSO-DAG: 0x70000006 MIPS_BASE_ADDRESS 0x0105# DSO-DAG: 0x7000000A MIPS_LOCAL_GOTNO 2106# DSO-DAG: 0x70000011 MIPS_SYMTABNO 3107# DSO-DAG: 0x70000013 MIPS_GOTSYM 0x3108# DSO: ]109# DSO-NEXT: DynamicSymbols [110# DSO: Name:111# DSO: Name: __start112# DSO: Name: _foo113# DSO: ]114 115 .text116 .globl __start,_foo117 .type _foo,@function118__start:119 nop120