Most of compilers support optimization level in which each level has special significance to optimize the source in terms of size, performance etc. This can be enabled by specified command line arguments, mostly known as options.
Moreover GCC compiler has a special characteristic additionally – declaring attributes of a function. The source can be optimized at programming level. While writing the source, the programmer has a chance to instruct the compiler to what should be taken care.
__attribute__ keyword is used when a function (declared only) is a declared and the corresponding instruction/s is/are mentioned with it. There are many ways to do nasty things with it found here.
In the embedded system, the code is nicely put together in different sections according to the design/requirements. The code goes into the text section. It happens that while starting the OS, it is so better to gather the initialization code together that as soon as the initialization is over, the related code can be removed from the main memory. This can be achieved by combining initialization code into init section i.e __attribute__ section(“.init”). This is where my journey has started for attribute feature.
This function attibute has been widely used in L4 micro-kernel, which provides a secured approach for embedded systems facilitating the hardware manufactures to protect their patents/innovation without exposing to the outside world.
There are many things can be done using Linux and GCC pair, but today this is enough to start with.