brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · fc9eb13 Raw
66 lines · plain
1; Tests that data and relro are correctly placed in sections2; specified by "#pragma clang section"3; RUN: llc -filetype=obj -mtriple x86_64-unknown-linux %s -o - | llvm-readobj -S --syms - | FileCheck %s4 5target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"6target triple = "x86_64-unknown-linux"7 8@funcs_relro = hidden constant [2 x ptr] [ptr @func1, ptr @func2], align 16 #09@var_data = hidden global i32 33, align 4 #010 11declare i32 @func1(...)12declare i32 @func2(...)13 14; Function Attrs: noinline nounwind optnone sspstrong uwtable15define hidden i32 @foo(i32 %i) {16entry:17  %i.addr = alloca i32, align 418  store i32 %i, ptr %i.addr, align 419  %0 = load i32, ptr %i.addr, align 420  %idxprom = sext i32 %0 to i6421  %arrayidx = getelementptr inbounds [2 x ptr], ptr @funcs_relro, i64 0, i64 %idxprom22  %1 = load ptr, ptr %arrayidx, align 823  %call = call i32 %1()24  %2 = load i32, ptr @var_data, align 425  %add = add nsw i32 %call, %226  ret i32 %add27}28 29attributes #0 = { "data-section"=".my_data" "relro-section"=".my_relro" "rodata-section"=".my_rodata" }30 31; CHECK:  Section {32; CHECK:    Index:33; CHECK:    Name: .my_rodata34; CHECK:    Type: SHT_PROGBITS (0x1)35; CHECK:    Flags [ (0x2)36; CHECK:      SHF_ALLOC (0x2)37; CHECK:    ]38; CHECK:    Size: 1639; CHECK:  }40; CHECK:  Section {41; CHECK:    Index:42; CHECK:    Name: .my_data43; CHECK:    Type: SHT_PROGBITS (0x1)44; CHECK:    Flags [ (0x3)45; CHECK:      SHF_ALLOC (0x2)46; CHECK:      SHF_WRITE (0x1)47; CHECK:    ]48; CHECK:    Size: 449; CHECK:  }50; CHECK:   Symbol {51; CHECK:    Name: funcs_relro52; CHECK:    Value: 0x053; CHECK:    Size: 1654; CHECK:    Binding: Global (0x1)55; CHECK:    Type: Object (0x1)56; CHECK:    Section: .my_rodata57; CHECK:  }58; CHECK:  Symbol {59; CHECK:    Name: var_data60; CHECK:    Value: 0x061; CHECK:    Size: 462; CHECK:    Binding: Global (0x1)63; CHECK:    Type: Object (0x1)64; CHECK:    Section: .my_data65; CHECK:  }66