This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
I am trying to understand the effect of the -init/-fini command line options. I was thinking that these options create an .init section/.fini section and call the functions specified in the command line when the binary is initialized / atexit time. Below is an example that I am working with :- 1.c ---- int fn() { printf("Hello world\n"); return 0; } int main() { return 0; } $gcc --version gcc (Ubuntu 4.8.1-2ubuntu1~10.04.1) 4.8.1 Case (1) ------------ $gcc 1.c -Wl,-init,fn -o out $./out ==> Expect to print "Hello World" (Nothing is printed) Case (2) ----------- $cat 1.c int fn() { return 0; } int main() { return 0; } $gcc -c 1.c $ld 1.o -init fn -fini fn -o out $readelf -S -W out | grep -E 'init|fini' (Nothing is printed) I expected to see the linker to create init/fini sections. Case (3) ----------- $cat 1.c int fn() { return 0; } $gcc -c 1.c && ar cr lib1.a 1.o $ld -init fn lib1.a -o out -t (Nothing is printed) Expected 1.o to be pulled in from the archive and the linker to create init/fini sections. Case (4) ----------- What is the difference between .init section and .init_array section ? When does the linker try to create either of them ? Similiar is the question of the difference between the .fini section and the .fini_array section ? Case (5) ------------- Is there a difference when a shared object is created for the above cases as I see the linker is setting DT_INIT/DT_FINI to point to the functions that I specify for -init/-fini respectively. Thanks Shankar Easwaran
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |