AVR-GCC can't call function located on fixed address
I've tried this code with arduino and it worked (i taught, of course, i can't add the "-Wl,--section-start=.app_start=0xFA0" flag to the compilation process so the function not gonna be moved to other section)
So i set the arudino IDE to show every command from the compilation to the end of the upload process.

The problem lies in the usage of avr-objdump, whose i found somewhere and used witouth overview the CLI switches.

I've also made a mistake when i wrote the question. To disassemble the object file, the right command is:

avr-objdump -S --disassemble  ubb.o &gt; ubb.asm


THe command i've used to create hex file:

avr-objcopy -j .text -j .data -O ihex ubb.o ubb.hex


The working one (extracted from arduino):

avr-objcopy -O ihex -R .eeprom ubb.o ubb.hex


-j means keep only the given section(s)

while

-R means, remove only the given section(s)