What exactly is the -Warray-bounds option to the GCC compiler supposed to warn about?
I am not sure about how basic you need an explanation because the man page is pretty self-explanatory. So just give me some feedback if this doesn't make you get it:
Consider a "normal" variable first: a variable is of a certain data type and hence represents a certain amount of (allocated) memory somewhere in RAM. I.e. when you write a declaration like:
then the compiler sets aside a certain amount of bytes (depends on how "int" is defined, but nowadays usually 4 bytes ^= 32 bits) and you can address this 4-byte space by using the name "myvar".
Now arrays: arrays are basically lists of elements where each element is a variable like above. If you i.e. create an array of 7 elements of the type int the compiler will set aside the same 4 bytes as above - not once but seven times. These seven 4-byte-spaces will be placed one after the other. If you now adress the third element with some operation the compiler "knows" that the elements are 4-byte-blocks and therefore will translate that to byte 9-12 following the base address.
So far so good, but what would happen if you would request the eighth element, hmm? If the compiler doesn't "remember" that your element only has seven elements it would eventually give you the content of byte 29-32 - which holds some other data! What would happen if you'd requested the -2nd element? You might get data which aren't even part of the program (but maybe some OS data!).
These method of accessing array elements which don't even exist have been used historically to get access to memory parts the program would normally not have access to. Modern OSes have all sorts of security measures to make this impossible, but you can still accidentally access (and hence modify) your own program in memory for some probably unwanted effects.
To avoid this there is bounds checking: basically it is the complier making sure whatever array elements you access are being defined before.
:confused: I have a question concerning gcc. IŽd like to install the gcc on my Mac OS X, but when I try to run the configure command I get the following message:
floriant% ./configure
./configure: read-only variable: PWD
Configuring for a powerpc-apple-darwin5.4 host.
*** This configuration... (2 Replies)
i write c++ code it run perfectely with g++ compiler but same code when i compile with
GCC compiler it gives linker error , followed these linker error
/tmp/ccfZtXOQ.o(.text+0x22): In function `main':
conf_system.cpp: undefined reference to `operator new(unsigned int)'... (5 Replies)
Hi,
we are converting from IBM-AIX(xl c/c++ compiler) to Linux(GCC complier).
As a part of this i need to change the CFLAGS.
The xl c/c++ complier CFLAGS is
CFLAGS := $(CDEBUG) $(PROJECT_INCLUDE_DIRS) $(COBJECT_MODE) -qcpluscmt -qmakedep -qcheck=all \
-qalign=bit_packed $(LINT_FLAGS)... (0 Replies)
Hi there
I've got a problem getting my mysql libraries to work.
every time I compile my source code it gives my a compiler error.
Cannot find a rule to create target /usr/include/mysql/mysql.h
AND
/usr/include/mysql/mysql.h: Permission denied
Is anyone fimiliar with this error, and can... (1 Reply)
where to download gcc compiler for ubuntu?
how to install?
how to build and run "c programs"?
screen shots if possible.....:b::D
tutorials too:cool: (5 Replies)
I am using open suse linux. I want to install gcc compiler in my machine. I ahve checked man gcc and man cc. But it's not there. Can someone help me (4 Replies)
Which gcc compiler release had the Arm 9 multicore support?Whether the compiler that used for the single Arm 9 core can be used for its multicore systems ?
If gcc not support,please tell me which are the compilers that are available for Arm 9 multicore systems (including commerical).Whether... (0 Replies)
hi,
can we install gcc compiler in unix based OS(sun solar,IBM AIX,HP,etc) and also
can we install sun cc compiler in AIX environment and vice versa.
and more ..is linux support cc compiler
regards
Ajay (3 Replies)
It might be a simple one but I have this question bothering me for sometime.
When we do a symbol search inside the library directory (i.e. /usr/lib/*) via tools like nm; it takes a while to give us the results. However, its very quick when gcc is invoked to compile a program with the very same... (11 Replies)
Discussion started by: Praveen_218
11 Replies
LEARN ABOUT NETBSD
__builtin_object_size
__BUILTIN_OBJECT_SIZE(3) BSD Library Functions Manual __BUILTIN_OBJECT_SIZE(3)NAME
__builtin_object_size -- return the size of the given object
SYNOPSIS
size_t
__builtin_object_size(void *ptr, int type);
DESCRIPTION
The __builtin_object_size() function is a gcc(1) built-in function that returns the size of the ptr object if known at compile time and the
object does not have any side effects.
RETURN VALUES
If the size of the object is not known or it has side effects the __builtin_object_size() function returns:
(size_t)-1 for type 0 and 1.
(size_t)0 for type 2 and 3.
If the size of the object is known, then the __builtin_object_size() function returns the maximum size of all the objects that the compiler
knows that they can be pointed to by ptr when type & 2 == 0, and the minimum size when type & 2 != 0.
SEE ALSO gcc(1), __builtin_return_address(3), attribute(3), ssp(3)HISTORY
The __builtin_object_size() appeared in GCC 4.1.
CAVEATS
This is a non-standard, compiler-specific extension.
BSD December 19, 2010 BSD