]>
Commit | Line | Data |
---|---|---|
359ef529 JR |
1 | Description: random pre-main initialization: prioritize |
2 | Clarify C++ pre-main initialization with the help of the gcc specific | |
3 | attribute init_priority; closes RC bug #759696. | |
4 | Origin: debian | |
5 | Author: Jerome Benoit <calculus@rezozer.net> | |
6 | Last-Update: 2015-11-23 | |
7 | ||
8 | --- a/src/points.web | |
9 | +++ b/src/points.web | |
10 | @@ -704,18 +704,16 @@ | |
11 | ||
12 | @<Global constants@>= | |
13 | ||
14 | -extern const Point INVALID_POINT(INVALID_REAL, INVALID_REAL, INVALID_REAL); | |
15 | -extern const Point ORIGIN(0, 0, 0); | |
16 | -extern const Point_Pair INVALID_POINT_PAIR(INVALID_POINT, INVALID_POINT); | |
17 | +extern const Point __attribute__((init_priority(500))) INVALID_POINT(INVALID_REAL, INVALID_REAL, INVALID_REAL); | |
18 | +extern const Point __attribute__((init_priority(500))) ORIGIN(0, 0, 0); | |
19 | +extern const Point_Pair __attribute__((init_priority(1000))) INVALID_POINT_PAIR(INVALID_POINT, INVALID_POINT); | |
20 | ||
21 | -extern const Bool_Point INVALID_BOOL_POINT(false, INVALID_POINT); | |
22 | -extern const Bool_Point_Pair INVALID_BOOL_POINT_PAIR(INVALID_BOOL_POINT, | |
23 | - INVALID_BOOL_POINT); | |
24 | +extern const Bool_Point __attribute__((init_priority(1000))) INVALID_BOOL_POINT(false, INVALID_POINT); | |
25 | +extern const Bool_Point_Pair __attribute__((init_priority(2000))) INVALID_BOOL_POINT_PAIR(INVALID_BOOL_POINT, INVALID_BOOL_POINT); | |
26 | ||
27 | ||
28 | -extern const Bool_Real_Point INVALID_BOOL_REAL_POINT(false, INVALID_REAL, | |
29 | - INVALID_POINT); | |
30 | -extern const Bool_Point_Quadruple | |
31 | +extern const Bool_Real_Point __attribute__((init_priority(1000))) INVALID_BOOL_REAL_POINT(false, INVALID_REAL, INVALID_POINT); | |
32 | +extern const Bool_Point_Quadruple __attribute__((init_priority(2000))) | |
33 | INVALID_BOOL_POINT_QUADRUPLE(INVALID_BOOL_POINT, | |
34 | INVALID_BOOL_POINT, | |
35 | INVALID_BOOL_POINT, | |
36 | --- a/src/lines.web | |
37 | +++ b/src/lines.web | |
38 | @@ -1032,7 +1032,7 @@ | |
39 | @q * Global constants for Line.@> | |
40 | @ Global constants for {\bf Line}. | |
41 | @<|Line| global constants@>= | |
42 | -extern const Line INVALID_LINE(INVALID_POINT, INVALID_POINT); | |
43 | +extern const Line __attribute__((init_priority(1000))) INVALID_LINE(INVALID_POINT, INVALID_POINT); | |
44 | ||
45 | @ | |
46 | @<Declarations for the header file@>= | |
47 | --- a/src/planes.web | |
48 | +++ b/src/planes.web | |
49 | @@ -1617,8 +1617,7 @@ | |
50 | @q * (1) Global constants for Plane.@> | |
51 | @* Global constants for {\bf Plane}. | |
52 | @<|Plane| global constants@>= | |
53 | -extern const Plane INVALID_PLANE(INVALID_POINT, | |
54 | - INVALID_POINT); | |
55 | +extern const Plane __attribute__((init_priority(1000))) INVALID_PLANE(INVALID_POINT, INVALID_POINT); | |
56 | ||
57 | @ | |
58 | @<Declarations for the header file@>= | |
59 | --- a/src/complex.web | |
60 | +++ b/src/complex.web | |
61 | @@ -143,7 +143,7 @@ | |
62 | ||
63 | @<Global constants@>= | |
64 | ||
65 | -extern const Complex INVALID_COMPLEX(INVALID_REAL, INVALID_REAL); | |
66 | +extern const Complex __attribute__((init_priority(500))) INVALID_COMPLEX(INVALID_REAL, INVALID_REAL); | |
67 | ||
68 | @q *** (3)@> | |
69 | @ | |
70 | --- a/src/transfor.web | |
71 | +++ b/src/transfor.web | |
72 | @@ -1517,7 +1517,7 @@ | |
73 | @q * Global constants. @> | |
74 | @ Global constants. | |
75 | @<Global constants@>= | |
76 | -extern const Transform INVALID_TRANSFORM(INVALID_REAL); | |
77 | +extern const Transform __attribute__((init_priority(500))) INVALID_TRANSFORM(INVALID_REAL); | |
78 | extern const Transform IDENTITY_TRANSFORM; | |
79 | ||
80 | @ |