File: export_aggregate_symbols.d

package info (click to toggle)
ldc 1%3A1.40.0-5
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 63,308 kB
  • sloc: cpp: 85,368; ansic: 21,877; makefile: 1,705; sh: 1,018; asm: 584; objc: 135; exp: 48; python: 12
file content (57 lines) | stat: -rw-r--r-- 2,482 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Tests -fvisibility={default,hidden} for special symbols generated for
// aggregates on non-Windows targets.

// UNSUPPORTED: Windows

// RUN: %ldc %s -shared -fvisibility=default -of=lib%t_default%so
// RUN: nm -g lib%t_default%so | FileCheck -check-prefix=DEFAULT -check-prefix=BOTH %s

// RUN: %ldc %s -shared -fvisibility=hidden -of=lib%t_hidden%so
// RUN: nm -g lib%t_hidden%so | FileCheck -check-prefix=HIDDEN -check-prefix=BOTH %s


// DEFAULT:    _D24export_aggregate_symbols8DefaultC11__interface24export_aggregate_symbols8DefaultI{{.*}}__vtblZ
// HIDDEN-NOT: _D24export_aggregate_symbols8DefaultC11__interface24export_aggregate_symbols8DefaultI{{.*}}__vtblZ
// DEFAULT:    _D24export_aggregate_symbols8DefaultC16__interfaceInfosZ
// HIDDEN-NOT: _D24export_aggregate_symbols8DefaultC16__interfaceInfosZ
// DEFAULT:    _D24export_aggregate_symbols8DefaultC6__initZ
// HIDDEN-NOT: _D24export_aggregate_symbols8DefaultC6__initZ
// DEFAULT:    _D24export_aggregate_symbols8DefaultC6__vtblZ
// HIDDEN-NOT: _D24export_aggregate_symbols8DefaultC6__vtblZ
// DEFAULT:    _D24export_aggregate_symbols8DefaultC7__ClassZ
// HIDDEN-NOT: _D24export_aggregate_symbols8DefaultC7__ClassZ
class DefaultC : DefaultI { void foo() {} }

// DEFAULT:    _D24export_aggregate_symbols8DefaultI11__InterfaceZ
// HIDDEN-NOT: _D24export_aggregate_symbols8DefaultI11__InterfaceZ
interface DefaultI { void foo(); }

// DEFAULT:    _D24export_aggregate_symbols8DefaultS6__initZ
// HIDDEN-NOT: _D24export_aggregate_symbols8DefaultS6__initZ
struct DefaultS { int nonZero = 1; }



// BOTH: _D24export_aggregate_symbols9ExportedC11__interface24export_aggregate_symbols9ExportedI{{.*}}__vtblZ
// BOTH: _D24export_aggregate_symbols9ExportedC16__interfaceInfosZ
// BOTH: _D24export_aggregate_symbols9ExportedC6__initZ
// BOTH: _D24export_aggregate_symbols9ExportedC6__vtblZ
// BOTH: _D24export_aggregate_symbols9ExportedC7__ClassZ
export class ExportedC : ExportedI { void foo() {} }

// BOTH: _D24export_aggregate_symbols9ExportedI11__InterfaceZ
export interface ExportedI { void foo(); }

// BOTH: _D24export_aggregate_symbols9ExportedS6__initZ
export struct ExportedS { int nonZero = 1; }



// struct TypeInfos:

// DEFAULT:    _D45TypeInfo_S24export_aggregate_symbols8DefaultS6__initZ
// HIDDEN-NOT: _D45TypeInfo_S24export_aggregate_symbols8DefaultS6__initZ
auto ti_defaultS = typeid(DefaultS);

// BOTH: _D46TypeInfo_S24export_aggregate_symbols9ExportedS6__initZ
auto ti_exportedS = typeid(ExportedS);