ARM dynamic linking

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

ARM dynamic linking



Can anyone point me to some info on how to build code that can be linked
Dynamically - I want to be able to control which procedures are built
dynamicaly i.e. which use GOTs and PLT code.
I can, using the compile option produce code with the correct linker
directives such as R_ARM_PLT but when I then do a normal link the linker
ignores the directives if it has the addresses in question and links
Next I tried linking with the "shared" linker option this seems to have
the affect that it produces the correct code with the static part
accessing the Dynamic part but does not actually link in the dynamic code.
I am sure that i am doing it wrong - here is what I tried
thanks in advance.

I am trying to create a dynamic linker/loader system that uses the minimum
memory so in fact only a few modules will be loadable dynamically the rest
will be static.==========================================================
echo "Building........"

arm-elf-gcc -c -fpic dyn.c -o dyn.o
arm-elf-gcc -c other.c    -o other.o
arm-elf-gcc -c system.c   -o system.o
arm-elf-gcc -c static.c   -o static.o
arm-elf-gcc -c main.c     -o main.o

echo "compiled........."

#arm-elf-objdump -dr --syms  dyn.o
#arm-elf-objdump -dr --syms  system.o
#arm-elf-objdump -dr --syms  other.o
#arm-elf-objdump -dr --syms  static.o
#arm-elf-objdump -dr --syms  main.o

arm-elf-ld  -shared dyn.o                            -o dyn.ld
arm-elf-ld -r  main.o  other.o system.o static.o     -o main.ld
arm-elf-ld  main.ld  dyn.ld                          -o out.a

#arm-elf-objdump -dr --syms  dyn.ld

#arm-elf-objdump -dr --syms  main.ld
arm-elf-objdump -dr --syms  out.a

echo "linked........."

echo "Finished........."


echo "Building........"

arm-elf-gcc -c -nostdlib calc_mean.c -o calc_mean.o
arm-elf-ar  rcs libmean.a      calc_mean.o

arm-elf-gcc -c -nostdlib -fPIC calc_mean.c -o calc_mean_dyn.o
arm-elf-gcc -shared -nostdlib --verbose -Wl,-soname, -o  calc_mean_dyn.o

arm-elf-gcc  -static -nostdlib --verbose main.c -L. -lmean -o
arm-elf-gcc main.c -nostdlib --verbose -o dynamically_linked -L. -lmean

echo" finished........"

Download this as a file