307 lines · plain
1; RUN: llc -mcpu=mvp -generate-arange-section -filetype=obj %s -o - | llvm-readobj -S -r --symbols - | FileCheck %s2 3; CHECK: Format: WASM4; CHECK-NEXT:Arch: wasm325; CHECK-NEXT:AddressSize: 32bit6; CHECK-NEXT:Sections [7; CHECK-NEXT: Section {8; CHECK-NEXT: Type: TYPE (0x1)9; CHECK-NEXT: Size: 410; CHECK-NEXT: Offset: 1411; CHECK-NEXT: }12; CHECK-NEXT: Section {13; CHECK-NEXT: Type: IMPORT (0x2)14; CHECK-NEXT: Size: 8115; CHECK-NEXT: Offset: 2416; CHECK-NEXT: }17; CHECK-NEXT: Section {18; CHECK-NEXT: Type: FUNCTION (0x3)19; CHECK-NEXT: Size: 220; CHECK-NEXT: Offset: 11121; CHECK-NEXT: }22; CHECK-NEXT: Section {23; CHECK-NEXT: Type: ELEM (0x9)24; CHECK-NEXT: Size: 725; CHECK-NEXT: Offset: 11926; CHECK-NEXT: }27; CHECK-NEXT: Section {28; CHECK-NEXT: Type: DATACOUNT (0xC)29; CHECK-NEXT: Size: 130; CHECK-NEXT: Offset: 13231; CHECK-NEXT: }32; CHECK-NEXT: Section {33; CHECK-NEXT: Type: CODE (0xA)34; CHECK-NEXT: Size: 435; CHECK-NEXT: Offset: 13936; CHECK-NEXT: }37; CHECK-NEXT: Section {38; CHECK-NEXT: Type: DATA (0xB)39; CHECK-NEXT: Size: 1940; CHECK-NEXT: Offset: 14941; CHECK-NEXT: Segments [42; CHECK-NEXT: Segment {43; CHECK-NEXT: Name: .data.foo44; CHECK-NEXT: Size: 445; CHECK-NEXT: Offset: 046; CHECK-NEXT: }47; CHECK-NEXT: Segment {48; CHECK-NEXT: Name: .data.ptr249; CHECK-NEXT: Size: 450; CHECK-NEXT: Offset: 451; CHECK-NEXT: }52; CHECK-NEXT: ]53; CHECK-NEXT: }54; CHECK-NEXT: Section {55; CHECK-NEXT: Type: CUSTOM (0x0)56; CHECK-NEXT: Size: 8657; CHECK-NEXT: Offset: 17458; CHECK-NEXT: Name: .debug_abbrev59; CHECK-NEXT: }60; CHECK-NEXT: Section {61; CHECK-NEXT: Type: CUSTOM (0x0)62; CHECK-NEXT: Size: 11463; CHECK-NEXT: Offset: 28064; CHECK-NEXT: Name: .debug_info65; CHECK-NEXT: }66; CHECK-NEXT: Section {67; CHECK-NEXT: Type: CUSTOM (0x0)68; CHECK-NEXT: Size: 4869; CHECK-NEXT: Offset: 41270; CHECK-NEXT: Name: .debug_aranges71; CHECK-NEXT: }72; CHECK-NEXT: Section {73; CHECK-NEXT: Type: CUSTOM (0x0)74; CHECK-NEXT: Size: 12175; CHECK-NEXT: Offset: 48176; CHECK-NEXT: Name: .debug_str77; CHECK-NEXT: }78; CHECK-NEXT: Section {79; CHECK-NEXT: Type: CUSTOM (0x0)80; CHECK-NEXT: Size: 4281; CHECK-NEXT: Offset: 61982; CHECK-NEXT: Name: .debug_pubnames83; CHECK-NEXT: }84; CHECK-NEXT: Section {85; CHECK-NEXT: Type: CUSTOM (0x0)86; CHECK-NEXT: Size: 2687; CHECK-NEXT: Offset: 68388; CHECK-NEXT: Name: .debug_pubtypes89; CHECK-NEXT: }90; CHECK-NEXT: Section {91; CHECK-NEXT: Type: CUSTOM (0x0)92; CHECK-NEXT: Size: 5693; CHECK-NEXT: Offset: 73194; CHECK-NEXT: Name: .debug_line95; CHECK-NEXT: }96; CHECK-NEXT: Section {97; CHECK-NEXT: Type: CUSTOM (0x0)98; CHECK-NEXT: Size: 9199; CHECK-NEXT: Offset: 805100; CHECK-NEXT: Name: linking101; CHECK-NEXT: }102; CHECK-NEXT: Section {103; CHECK-NEXT: Type: CUSTOM (0x0)104; CHECK-NEXT: Size: 9105; CHECK-NEXT: Offset: 910106; CHECK-NEXT: Name: reloc.DATA107; CHECK-NEXT: }108; CHECK-NEXT: Section {109; CHECK-NEXT: Type: CUSTOM (0x0)110; CHECK-NEXT: Size: 61111; CHECK-NEXT: Offset: 936112; CHECK-NEXT: Name: reloc..debug_info113; CHECK-NEXT: }114; CHECK-NEXT: Section {115; CHECK-NEXT: Type: CUSTOM (0x0)116; CHECK-NEXT: Size: 18117; CHECK-NEXT: Offset: 1021118; CHECK-NEXT: Name: reloc..debug_aranges119; CHECK-NEXT: }120; CHECK-NEXT: Section {121; CHECK-NEXT: Type: CUSTOM (0x0)122; CHECK-NEXT: Size: 6123; CHECK-NEXT: Offset: 1066124; CHECK-NEXT: Name: reloc..debug_pubnames125; CHECK-NEXT: }126; CHECK-NEXT: Section {127; CHECK-NEXT: Type: CUSTOM (0x0)128; CHECK-NEXT: Size: 6129; CHECK-NEXT: Offset: 1100130; CHECK-NEXT: Name: reloc..debug_pubtypes131; CHECK-NEXT: }132; CHECK-NEXT: Section {133; CHECK-NEXT: Type: CUSTOM (0x0)134; CHECK-NEXT: Size: 6135; CHECK-NEXT: Offset: 1134136; CHECK-NEXT: Name: reloc..debug_line137; CHECK-NEXT: }138; CHECK-NEXT: Section {139; CHECK-NEXT: Type: CUSTOM (0x0)140; CHECK-NEXT: Size: 77141; CHECK-NEXT: Offset: 1164142; CHECK-NEXT: Name: producers143; CHECK-NEXT: }144; CHECK-NEXT:]145; CHECK-NEXT:Relocations [146; CHECK-NEXT: Section (7) DATA {147; CHECK-NEXT: 0x6 R_WASM_MEMORY_ADDR_I32 myextern 0148; CHECK-NEXT: 0xF R_WASM_TABLE_INDEX_I32 f2149; CHECK-NEXT: }150; CHECK-NEXT: Section (9) .debug_info {151; CHECK-NEXT: 0x6 R_WASM_SECTION_OFFSET_I32 .debug_abbrev 0152; CHECK-NEXT: 0xC R_WASM_SECTION_OFFSET_I32 .debug_str 0153; CHECK-NEXT: 0x12 R_WASM_SECTION_OFFSET_I32 .debug_str 55154; CHECK-NEXT: 0x16 R_WASM_SECTION_OFFSET_I32 .debug_line 0155; CHECK-NEXT: 0x1A R_WASM_SECTION_OFFSET_I32 .debug_str 62156; CHECK-NEXT: 0x1E R_WASM_FUNCTION_OFFSET_I32 f2 0157; CHECK-NEXT: 0x27 R_WASM_SECTION_OFFSET_I32 .debug_str 105158; CHECK-NEXT: 0x33 R_WASM_MEMORY_ADDR_I32 foo 0159; CHECK-NEXT: 0x3D R_WASM_SECTION_OFFSET_I32 .debug_str 109160; CHECK-NEXT: 0x44 R_WASM_SECTION_OFFSET_I32 .debug_str 113161; CHECK-NEXT: 0x50 R_WASM_MEMORY_ADDR_I32 ptr2 0162; CHECK-NEXT: 0x5B R_WASM_FUNCTION_OFFSET_I32 f2 0163; CHECK-NEXT: 0x66 R_WASM_GLOBAL_INDEX_I32 __stack_pointer164; CHECK-NEXT: 0x6B R_WASM_SECTION_OFFSET_I32 .debug_str 118165; CHECK-NEXT: }166; CHECK-NEXT: Section (10) .debug_aranges {167; CHECK-NEXT: 0x6 R_WASM_SECTION_OFFSET_I32 .debug_info 0168; CHECK-NEXT: 0x10 R_WASM_MEMORY_ADDR_I32 foo 0169; CHECK-NEXT: 0x18 R_WASM_MEMORY_ADDR_I32 ptr2 0170; CHECK-NEXT: 0x20 R_WASM_FUNCTION_OFFSET_I32 f2 0171; CHECK-NEXT: }172; CHECK-NEXT: Section (12) .debug_pubnames {173; CHECK-NEXT: 0x6 R_WASM_SECTION_OFFSET_I32 .debug_info 0174; CHECK-NEXT: }175; CHECK-NEXT: Section (13) .debug_pubtypes {176; CHECK-NEXT: 0x6 R_WASM_SECTION_OFFSET_I32 .debug_info 0177; CHECK-NEXT: }178; CHECK-NEXT: Section (14) .debug_line {179; CHECK-NEXT: 0x2E R_WASM_FUNCTION_OFFSET_I32 f2 1180; CHECK-NEXT: }181; CHECK-NEXT:]182; CHECK-NEXT:Symbols [183; CHECK-NEXT: Symbol {184; CHECK-NEXT: Name: f2185; CHECK-NEXT: Type: FUNCTION (0x0)186; CHECK-NEXT: Flags [ (0x4)187; CHECK-NEXT: VISIBILITY_HIDDEN (0x4)188; CHECK-NEXT: ]189; CHECK-NEXT: ElementIndex: 0x0190; CHECK-NEXT: }191; CHECK-NEXT: Symbol {192; CHECK-NEXT: Name: foo193; CHECK-NEXT: Type: DATA (0x1)194; CHECK-NEXT: Flags [ (0x4)195; CHECK-NEXT: VISIBILITY_HIDDEN (0x4)196; CHECK-NEXT: ]197; CHECK-NEXT: Offset: 0x0198; CHECK-NEXT: Segment: 0x0199; CHECK-NEXT: Size: 0x4200; CHECK-NEXT: }201; CHECK-NEXT: Symbol {202; CHECK-NEXT: Name: myextern203; CHECK-NEXT: Type: DATA (0x1)204; CHECK-NEXT: Flags [ (0x10)205; CHECK-NEXT: UNDEFINED (0x10)206; CHECK-NEXT: ]207; CHECK-NEXT: }208; CHECK-NEXT: Symbol {209; CHECK-NEXT: Name: ptr2210; CHECK-NEXT: Type: DATA (0x1)211; CHECK-NEXT: Flags [ (0x4)212; CHECK-NEXT: VISIBILITY_HIDDEN (0x4)213; CHECK-NEXT: ]214; CHECK-NEXT: Offset: 0x0215; CHECK-NEXT: Segment: 0x1216; CHECK-NEXT: Size: 0x4217; CHECK-NEXT: }218; CHECK-NEXT: Symbol {219; CHECK-NEXT: Name: .debug_abbrev220; CHECK-NEXT: Type: SECTION (0x3)221; CHECK-NEXT: Flags [ (0x2)222; CHECK-NEXT: BINDING_LOCAL (0x2)223; CHECK-NEXT: ]224; CHECK-NEXT: ElementIndex: 0x7225; CHECK-NEXT: }226; CHECK-NEXT: Symbol {227; CHECK-NEXT: Name: .debug_info228; CHECK-NEXT: Type: SECTION (0x3)229; CHECK-NEXT: Flags [ (0x2)230; CHECK-NEXT: BINDING_LOCAL (0x2)231; CHECK-NEXT: ]232; CHECK-NEXT: ElementIndex: 0x8233; CHECK-NEXT: }234; CHECK-NEXT: Symbol {235; CHECK-NEXT: Name: __stack_pointer236; CHECK-NEXT: Type: GLOBAL (0x2)237; CHECK-NEXT: Flags [ (0x10)238; CHECK-NEXT: UNDEFINED (0x10)239; CHECK-NEXT: ]240; CHECK-NEXT: ImportModule: env241; CHECK-NEXT: ElementIndex: 0x0242; CHECK-NEXT: }243; CHECK-NEXT: Symbol {244; CHECK-NEXT: Name: .debug_str245; CHECK-NEXT: Type: SECTION (0x3)246; CHECK-NEXT: Flags [ (0x2)247; CHECK-NEXT: BINDING_LOCAL (0x2)248; CHECK-NEXT: ]249; CHECK-NEXT: ElementIndex: 0xA250; CHECK-NEXT: }251; CHECK-NEXT: Symbol {252; CHECK-NEXT: Name: .debug_line253; CHECK-NEXT: Type: SECTION (0x3)254; CHECK-NEXT: Flags [ (0x2)255; CHECK-NEXT: BINDING_LOCAL (0x2)256; CHECK-NEXT: ]257; CHECK-NEXT: ElementIndex: 0xD258; CHECK-NEXT: }259; CHECK-NEXT:]260 261; generated from the following C code using: clang --target=wasm32 -g -O0 -S -emit-llvm test.c262; extern int myextern;263; void f2(void) { return; }264;265; int* foo = &myextern;266; void (*ptr2)(void) = f2;267 268target triple = "wasm32-unknown-unknown"269 270source_filename = "test.c"271 272@myextern = external global i32, align 4273@foo = hidden global ptr @myextern, align 4, !dbg !0274@ptr2 = hidden global ptr @f2, align 4, !dbg !6275 276; Function Attrs: noinline nounwind optnone277define hidden void @f2() #0 !dbg !17 {278entry:279 ret void, !dbg !18280}281 282attributes #0 = { noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="mvp" "unsafe-fp-math"="false" "use-soft-float"="false" }283 284!llvm.dbg.cu = !{!2}285!llvm.module.flags = !{!13, !14, !15}286!llvm.ident = !{!16}287 288!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())289!1 = distinct !DIGlobalVariable(name: "foo", scope: !2, file: !3, line: 4, type: !11, isLocal: false, isDefinition: true)290!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 7.0.0 (trunk 332303) (llvm/trunk 332406)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5)291!3 = !DIFile(filename: "test.c", directory: "/usr/local/google/home/sbc/dev/wasm/simple")292!4 = !{}293!5 = !{!0, !6}294!6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression())295!7 = distinct !DIGlobalVariable(name: "ptr2", scope: !2, file: !3, line: 5, type: !8, isLocal: false, isDefinition: true)296!8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 32)297!9 = !DISubroutineType(types: !10)298!10 = !{null}299!11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !12, size: 32)300!12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)301!13 = !{i32 2, !"Dwarf Version", i32 4}302!14 = !{i32 2, !"Debug Info Version", i32 3}303!15 = !{i32 1, !"wchar_size", i32 4}304!16 = !{!"clang version 7.0.0 (trunk 332303) (llvm/trunk 332406)"}305!17 = distinct !DISubprogram(name: "f2", scope: !3, file: !3, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)306!18 = !DILocation(line: 2, column: 17, scope: !17)307