brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 954ea8f Raw
61 lines · plain
1; RUN: llc -relocation-model=pic -data-sections -o - %s | FileCheck %s2 3target triple = "x86_64-unknown-linux-gnu"4 5@hidden = external hidden global i86@default = external global i87 8; CHECK: .section .rodata.rodata9; CHECK: rodata:10; CHECK: .long hidden-rodata11@rodata = hidden constant i32 trunc (i64 sub (i64 ptrtoint (ptr @hidden to i64), i64 ptrtoint (ptr @rodata to i64)) to i32)12 13; CHECK: .section .rodata.rodata_ptrtoaddr14; CHECK: rodata_ptrtoaddr:15; CHECK: .long hidden-rodata_ptrtoaddr16@rodata_ptrtoaddr = hidden constant i32 trunc (i64 sub (i64 ptrtoaddr (ptr @hidden to i64), i64 ptrtoaddr (ptr @rodata_ptrtoaddr to i64)) to i32)17 18; CHECK: .section .data.rel.ro.relro119; CHECK: relro1:20; CHECK: .long default-relro121@relro1 = hidden constant i32 trunc (i64 sub (i64 ptrtoint (ptr @default to i64), i64 ptrtoint (ptr @relro1 to i64)) to i32)22 23; CHECK: .section .data.rel.ro.relro1_ptrtoaddr24; CHECK: relro1_ptrtoaddr:25; CHECK: .long default-relro1_ptrtoaddr26@relro1_ptrtoaddr = hidden constant i32 trunc (i64 sub (i64 ptrtoaddr (ptr @default to i64), i64 ptrtoaddr (ptr @relro1_ptrtoaddr to i64)) to i32)27 28; CHECK: .section .data.rel.ro.relro229; CHECK: relro2:30; CHECK: .long hidden-relro231@relro2 = constant i32 trunc (i64 sub (i64 ptrtoint (ptr @hidden to i64), i64 ptrtoint (ptr @relro2 to i64)) to i32)32 33; CHECK: .section .data.rel.ro.relro2_ptrtoaddr34; CHECK: relro2_ptrtoaddr:35; CHECK: .long hidden-relro2_ptrtoaddr36@relro2_ptrtoaddr = constant i32 trunc (i64 sub (i64 ptrtoaddr (ptr @hidden to i64), i64 ptrtoaddr (ptr @relro2_ptrtoaddr to i64)) to i32)37 38; CHECK:      .section .rodata.obj39; CHECK-NEXT: .globl obj40; CHECK:      obj:41; CHECK:      .long 042; CHECK:      .long hidden_func@PLT-obj-443 44declare hidden void @hidden_func()45 46; Ensure that inbound GEPs with constant offsets are also resolved.47@obj = dso_local unnamed_addr constant { { i32, i32 } } {48  { i32, i32 } {49    i32 0,50    i32 trunc (i64 sub (i64 ptrtoint (ptr dso_local_equivalent @hidden_func to i64), i64 ptrtoint (ptr getelementptr inbounds ({ { i32, i32 } }, ptr @obj, i32 0, i32 0, i32 1) to i64)) to i32)51  } }, align 452 53; CHECK:      .section .rodata.rodata254; CHECK-NEXT: .globl rodata255; CHECK:      rodata2:56; CHECK:      .long extern_func@PLT-rodata257 58declare void @extern_func()59 60@rodata2 = dso_local constant i32 trunc (i64 sub (i64 ptrtoint (ptr dso_local_equivalent @extern_func to i64), i64 ptrtoint (ptr @rodata2 to i64)) to i32)61