473,396 Members | 1,871 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

CRT, Member Initialisation, static data, constant data, global objects

Tim
Please advise if you can.

Presumably initialisation of members in member initialisation lists is
perfomed by 'C' run-time startup. If the CRT was never started-up would
those members be garbage? Which of these fundamental language support
features could I expect to be absent (and anything else I might have
missed):

static data zeroing
global data zeroing

static data initialisation
constant data initialisation
global data initialisation
scoped satic data initialisation

static object construction
global object construction
scoped object construction

initialisation of members in member lists

new
delete
I'm having to fix an embedded PowerPC-based platform that I never worked on
and which has many thousands of lines of lamentable source; the only
function it calls from the assembly startup code is Init_CPP_Constructors
which, in-turn, calls each constructor in an array of constructors in a
'ctors' segment. I see no other CRT startup calls; in fact, I don't even
think this is CRT code; I think it's simply a hand-made 'bare-bones'
startup. If so, would I be correct in assuming that a hefty chunk of support
features will be absent? The firmware actually uses enums, not constant data
and only has a few static variables and global data. It also has one class
with members initialised in the list; the rest have members initialised in
the constructors. My assumption is that there are quite a few oppertunuties
for disaster here; would you agree?

If anyone's wondering why I don't simply have a look using a debugger...
there isn't one... nor any trace port; I't a question of downloading to
flash and using a red LED or a green LED for diagnostic 'messages'. However,
I've just got home so even that isn't an option right now. Your help will be
greatly appreciated; your sympathy more than welcome :-)

Regards
Tim
Jul 22 '05 #1
2 2203
Tim wrote:
Please advise if you can.

Presumably initialisation of members in member initialisation lists is
perfomed by 'C' run-time startup. If the CRT was never started-up would
those members be garbage? Depends on the hardware. Some memory initializes itself to zeros, some
to all ones. But then if the memory was used before this program was
executed, yes, there would be garbage (unknown, random values).
Which of these fundamental language support
features could I expect to be absent (and anything else I might have
missed):

static data zeroing
global data zeroing

static data initialisation
constant data initialisation
global data initialisation
scoped satic data initialisation

static object construction
global object construction
scoped object construction

initialisation of members in member lists All of the above would not happen if the C++ Run-Time Library
was not invoked (CRTL or CRT). The above takes executable code
to perform. Somehow, the variables must be initialized.

new
delete As for these, depends on the implementation.
I'm having to fix an embedded PowerPC-based platform that I never worked on
and which has many thousands of lines of lamentable source; the only
function it calls from the assembly startup code is Init_CPP_Constructors
which, in-turn, calls each constructor in an array of constructors in a
'ctors' segment. I see no other CRT startup calls; in fact, I don't even
think this is CRT code; I think it's simply a hand-made 'bare-bones'
startup. Sounds more like a hook that a compiler manuf. provides for more
flexibility. Sounds familiar, perhaps Metware High C/C++ compiler?
You may also want to post to news:comp.arch.embedded.

If so, would I be correct in assuming that a hefty chunk of support
features will be absent? Read your compiler documentation. You haven't specified which compiler
you are using.

The firmware actually uses enums, not constant data
and only has a few static variables and global data. It also has one class
with members initialised in the list; the rest have members initialised in
the constructors. My assumption is that there are quite a few oppertunuties
for disaster here; would you agree? Can't agree or disagree since you haven't posted the code.

If anyone's wondering why I don't simply have a look using a debugger...
there isn't one... nor any trace port; I't a question of downloading to
flash and using a red LED or a green LED for diagnostic 'messages'. However,
I've just got home so even that isn't an option right now. Your help will be
greatly appreciated; your sympathy more than welcome :-) If you don't have a debugger, you should have an emulator. Writing code
then "plugging it in" to see if it works is not the best or optimimum
process for developing quality code.

Search the web for:
In-Circuit Emulator (ICE)
Emulator (followed by your processor)

Regards
Tim


At my company, the hardware folk have designed a development board
that contains all of the components for the production version, but
also a JTAG port for a debugger and test-point pins. When the code
is working using this board, they place the code into a production
version. The production version has no method for debugging the
code.

--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.raos.demon.uk/acllc-c++/faq.html
Other sites:
http://www.josuttis.com -- C++ STL Library book

Jul 22 '05 #2
Tim
"Thomas Matthews" <Th****************************@sbcglobal.net> wrote in
message news:pi******************@newssvr31.news.prodigy.c om...
Tim wrote:
Please advise if you can.

Presumably initialisation of members in member initialisation lists is
perfomed by 'C' run-time startup. If the CRT was never started-up would
those members be garbage?

Depends on the hardware. Some memory initializes itself to zeros, some
to all ones. But then if the memory was used before this program was
executed, yes, there would be garbage (unknown, random values).
Which of these fundamental language support
features could I expect to be absent (and anything else I might have
missed):

static data zeroing
global data zeroing

static data initialisation
constant data initialisation
global data initialisation
scoped satic data initialisation

static object construction
global object construction
scoped object construction

initialisation of members in member lists

All of the above would not happen if the C++ Run-Time Library
was not invoked (CRTL or CRT). The above takes executable code
to perform. Somehow, the variables must be initialized.

new
delete

As for these, depends on the implementation.
I'm having to fix an embedded PowerPC-based platform that I never worked on and which has many thousands of lines of lamentable source; the only
function it calls from the assembly startup code is Init_CPP_Constructors which, in-turn, calls each constructor in an array of constructors in a
'ctors' segment. I see no other CRT startup calls; in fact, I don't even
think this is CRT code; I think it's simply a hand-made 'bare-bones'
startup.

Sounds more like a hook that a compiler manuf. provides for more
flexibility. Sounds familiar, perhaps Metware High C/C++ compiler?
You may also want to post to news:comp.arch.embedded.

If so, would I be correct in assuming that a hefty chunk of support
features will be absent?

Read your compiler documentation. You haven't specified which compiler
you are using.

The firmware actually uses enums, not constant data
and only has a few static variables and global data. It also has one class with members initialised in the list; the rest have members initialised in the constructors. My assumption is that there are quite a few oppertunuties for disaster here; would you agree?

Can't agree or disagree since you haven't posted the code.

If anyone's wondering why I don't simply have a look using a debugger...
there isn't one... nor any trace port; I't a question of downloading to
flash and using a red LED or a green LED for diagnostic 'messages'. However, I've just got home so even that isn't an option right now. Your help will be greatly appreciated; your sympathy more than welcome :-)

If you don't have a debugger, you should have an emulator. Writing code
then "plugging it in" to see if it works is not the best or optimimum
process for developing quality code.

Search the web for:
In-Circuit Emulator (ICE)
Emulator (followed by your processor)

Regards
Tim


At my company, the hardware folk have designed a development board
that contains all of the components for the production version, but
also a JTAG port for a debugger and test-point pins. When the code
is working using this board, they place the code into a production
version. The production version has no method for debugging the
code.


Yes, unfortunately this is not a new product and the particular flavour of
PowerPC used is discontinued and no longer supported. Thanks for your input.
Tim
Jul 22 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: CoolPint | last post by:
It seems to me that I cannot assign objects of a class which has a constant data member since the data member cannot be changed once the constructor calls are completed. Is this the way it is meant...
8
by: Scott J. McCaughrin | last post by:
The following program compiles fine but elicits this message from the linker: "undefined reference to VarArray::funct" and thus fails. It seems to behave as if the static data-member:...
7
by: ank | last post by:
Hi, I was curious about how to define static data member of template class. Should I put the definition in a separate source file or in the same header file as its template class? And when this...
11
by: Enquiries, Hopkins Research | last post by:
Hi all I have a conundrum that is puzzling me. I have a large codebase in C that I am converting to C++ as fast as possible (i.e. slowly because I keep learning new idioms and stumbling with...
3
by: Mike - EMAIL IGNORED | last post by:
MyClass { //I have a static member method: void static myMethod(); //and a static data member: static MyType myData; }; //In the .cpp file: void MyClass::myMethod()
11
by: ziman137 | last post by:
Hi all, I have a question here. What is the rationale behind ISO C++ for Static Member Definition? * ISO C++ forbids in-class definition/initialization of non-constant static member...
10
by: n.torrey.pines | last post by:
Are global variables (and const's) guaranteed to be initialized before static class members (and methods) ? const int x = 19907; int get_x() { return x; } // another compilation unit: ...
10
by: stonny | last post by:
I read the following sentence from a c++ website, but can not understand why. can anyone help me with it? " An important detail to keep in mind when debugging or implementing a program using a...
2
by: .rhavin grobert | last post by:
i have (do try to have?) the following... & = breakpoints in debugger // ---------------------------------------------------------------- // cx.h class CX { public: CX(CX* pcx = NULL);...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.