Something about ELF auxiliary vectors
...mysterious carriers of information from kernelspace to userspace.
I hit upon them while writing my last paper on sysenter based system call mechanism. In one sentence, these vectors are the mechanism to transfer some OS specific information to the program interpreter (e.g. ld) and the process. Examples of such OS specific information are - page size, system call entry point, real and effective user ids etc. Linux 2.6 specifically uses an ELF auxiliary vector called AT_SYSINFO to pass the address of __kernel_vsyscall.
How these vectors are passed on? This work is done by the elf loader. Elf loader is responsible for loading elf binary files into the system. Elf loader puts these vectors on the process stack alongwith other information like argc, argv, envp. Isn't it new? Many programmers are unaware of these extra creatures on the stack (at least, I was one of them ;)). To make life easier for them (and for me too), I have written this article, nah a small writeup on elf auxiliary vectors.
http://articles.manugarg.com/aboutelfauxiliaryvectors.html
I am sure at least some of you will find it useful. If otherwise, then don't bother to mention that ;-). At least I'll refer to it in future (I have a short memory and new things keep pushing old things out, so these kind of writeups come handy for me).
-M
--
Manu Garg/http://www.manugarg.com/"Journey is the destination of life."
I hit upon them while writing my last paper on sysenter based system call mechanism. In one sentence, these vectors are the mechanism to transfer some OS specific information to the program interpreter (e.g. ld) and the process. Examples of such OS specific information are - page size, system call entry point, real and effective user ids etc. Linux 2.6 specifically uses an ELF auxiliary vector called AT_SYSINFO to pass the address of __kernel_vsyscall.
How these vectors are passed on? This work is done by the elf loader. Elf loader is responsible for loading elf binary files into the system. Elf loader puts these vectors on the process stack alongwith other information like argc, argv, envp. Isn't it new? Many programmers are unaware of these extra creatures on the stack (at least, I was one of them ;)). To make life easier for them (and for me too), I have written this article, nah a small writeup on elf auxiliary vectors.
http://articles.manugarg.com/aboutelfauxiliaryvectors.html
I am sure at least some of you will find it useful. If otherwise, then don't bother to mention that ;-). At least I'll refer to it in future (I have a short memory and new things keep pushing old things out, so these kind of writeups come handy for me).
-M
--
Manu Garg/http://www.manugarg.com/"Journey is the destination of life."
Really very cool info. 22222much.
ReplyDeleteThanks for sharing the knowledge.
keep up ur gud work.
Warm Regards
Esh...
I watch/view/read your blog daily. Today I saw, you have changed the template.By the by what are the updates from your side Middle Earth boy!!! Hope I will become big in knowledge like you guru.
ReplyDeleteHave Fun
Esh...
Thank you buddy. I respect your allegiance. May I know a bit more about you? There have been no updates for some time as I was busy with shifting the jobs. I'll have some update soon.
ReplyDeleteManu
what details you want from me Man(u). I am an "ant" and you are an eleph"ant". Plz dont mind, i am comparing in terms of knowledge. Actually I regularly read 2 blogs (one is urs).U dont believe, I get goose pimples when I am opening your blogs. you both are my inspiration and I am sure my confidence level has increased afer reading ur blogs. I am not praising you. By the by why you are shifting the jobs? Money matter? work satisfaction? Timings? burdens?, I think I have to stop here.
ReplyDeleteTake care.
Warm Regards
Esh...