1 // RUN: %clang_cc1 -fsyntax-only -verify %s -triple arm-none-eabi
2 #pragma clang section bss = "mybss.1" data = "mydata.1" rodata = "myrodata.1" text = "mytext.1" // expected-note 2 {{#pragma entered here}}
3 #pragma clang section bss="" data="" rodata="" text=""
4 #pragma clang section
5 
6 #pragma clang section dss="mybss.2" // expected-error {{expected one of [bss|data|rodata|text|relro] section kind in '#pragma clang section'}}
7 #pragma clang section deta="mydata.2" // expected-error {{expected one of [bss|data|rodata|text|relro] section kind in '#pragma clang section'}}
8 #pragma clang section rodeta="rodata.2" // expected-error {{expected one of [bss|data|rodata|text|relro] section kind in '#pragma clang section'}}
9 #pragma clang section taxt="text.2" // expected-error {{expected one of [bss|data|rodata|text|relro] section kind in '#pragma clang section'}}
10 
11 #pragma clang section section bss="mybss.2"  // expected-error {{expected one of [bss|data|rodata|text|relro] section kind in '#pragma clang section'}}
12 
13 #pragma clang section bss "mybss.2"   // expected-error {{expected '=' following '#pragma clang section bss'}}
14 #pragma clang section data "mydata.2"   // expected-error {{expected '=' following '#pragma clang section data'}}
15 #pragma clang section rodata "myrodata.2"   // expected-error {{expected '=' following '#pragma clang section rodata'}}
16 #pragma clang section text "text.2"   // expected-error {{expected '=' following '#pragma clang section text'}}
17 #pragma clang section relro "relro.2"   // expected-error {{expected '=' following '#pragma clang section relro'}}
18 #pragma clang section bss="" data="" rodata="" text="" more //expected-error {{expected one of [bss|data|rodata|text|relro] section kind in '#pragma clang section'}}
19 
20 #pragma clang section bss = "mybss.3" data = "mybss.3" // expected-error {{this causes a section type conflict with a prior #pragma section}} expected-note {{#pragma entered here}} expected-note {{#pragma entered here}}
21 #pragma clang section rodata = "mydata.1"              // expected-error {{this causes a section type conflict with a prior #pragma section}}
22 #pragma clang section bss = "myrodata.1"               // expected-error {{this causes a section type conflict with a prior #pragma section}}
23 #pragma clang section text = "mybss.3"                 // expected-error {{this causes a section type conflict with a prior #pragma section}}
24 
25 #pragma clang section rodata = "myrodata.4"              // expected-note {{#pragma entered here}}
26 int x __attribute__((section("myrodata.4")));            // expected-error {{'x' causes a section type conflict with a prior #pragma section}}
27 const int y __attribute__((section("myrodata.5"))) = 10; // expected-note {{declared here}}
28 #pragma clang section data = "myrodata.5"                // expected-error {{this causes a section type conflict with 'y'}}
29 const int z __attribute__((section("myrodata.6"))) = 11;
30 
31 int a;
32