Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/include/prevent_bss_reordering.h
7854 views
1
#ifndef PREVENT_BSS_REORDERING_H
2
#define PREVENT_BSS_REORDERING_H
3
4
/**
5
* To determine variable order for .bss, the compiler sorts variables by their
6
* "name index" mod 256, where name index is something that, with -g, gets
7
* incremented by struct and variable declarations, typedefs, and file markers,
8
* among else. (Without -g, only variable declarations affects the index.)
9
* This file contains enough dummy declarations to bump the index by 128.
10
* Including it, or removing the include, should fix bss reordering problems
11
* for a file, assuming the name index distance between its first and last bss
12
* variable is at most 128.
13
* Note that if a variable is declared "extern" within a header file, the name
14
* index is taken at that point of the extern declaration. Thus, this include
15
* must come before any such header.
16
*/
17
18
struct Dummy0 { int x; };
19
struct Dummy1 { int x; };
20
struct Dummy2 { int x; };
21
struct Dummy3 { int x; };
22
struct Dummy4 { int x; };
23
struct Dummy5 { int x; };
24
struct Dummy6 { int x; };
25
struct Dummy7 { int x; };
26
struct Dummy8 { int x; };
27
struct Dummy9 { int x; };
28
struct Dummy10 { int x; };
29
struct Dummy11 { int x; };
30
struct Dummy12 { int x; };
31
struct Dummy13 { int x; };
32
struct Dummy14 { int x; };
33
struct Dummy15 { int x; };
34
struct Dummy16 { int x; };
35
struct Dummy17 { int x; };
36
struct Dummy18 { int x; };
37
struct Dummy19 { int x; };
38
struct Dummy20 { int x; };
39
struct Dummy21 { int x; };
40
struct Dummy22 { int x; };
41
struct Dummy23 { int x; };
42
struct Dummy24 { int x; };
43
struct Dummy25 { int x; };
44
struct Dummy26 { int x; };
45
struct Dummy27 { int x; };
46
struct Dummy28 { int x; };
47
struct Dummy29 { int x; };
48
struct Dummy30 { int x; };
49
struct Dummy31 { int x; };
50
struct Dummy32 { int x; };
51
struct Dummy33 { int x; };
52
struct Dummy34 { int x; };
53
struct Dummy35 { int x; };
54
struct Dummy36 { int x; };
55
struct Dummy37 { int x; };
56
struct Dummy38 { int x; };
57
struct Dummy39 { int x; };
58
struct Dummy40 { int x; };
59
struct Dummy41 { int x; };
60
struct Dummy42 { int x; };
61
struct Dummy43 { int x; };
62
struct Dummy44 { int x; };
63
struct Dummy45 { int x; };
64
struct Dummy46 { int x; };
65
struct Dummy47 { int x; };
66
struct Dummy48 { int x; };
67
struct Dummy49 { int x; };
68
struct Dummy50 { int x; };
69
struct Dummy51 { int x; };
70
struct Dummy52 { int x; };
71
struct Dummy53 { int x; };
72
struct Dummy54 { int x; };
73
struct Dummy55 { int x; };
74
struct Dummy56 { int x; };
75
struct Dummy57 { int x; };
76
struct Dummy58 { int x; };
77
struct Dummy59 { int x; };
78
struct Dummy60 { int x; };
79
struct Dummy61 { int x; };
80
struct Dummy62 { int x; };
81
typedef int Dummy63;
82
83
#endif // PREVENT_BSS_REORDERING_H
84
85