Hi and thanks for your replies.
Changing the build order sounds as a really good hint, but didn't change anything
Its almost the same error, although the Bootloader.h/.c is linked first now, the assembler code jumps to application segment using _LLSL and _ENTER_UNARY_L. That behavior doesn't make sense for me... perhaps the compiler do so, because the app is located on lower address?!
The only way to make this work is to either write the bootloader so it does not use any library functions
mhn.. but the error causing code is just a shifting operation. Its not really a libary function, isn't it? The linker/compiler just recognizes that the code line "id_var <<= 8;" is present in Bootloader.c and App.c and so he decide to bring this function in only once and jumps back by second call of the same code. The only linked library function in bootloader.c is the standard function for the register defines #include <MC9S08DV32.h> and that one i will never change... could this cause such a problem?
or write it in assembler. (or write it in C, and use the compiler output to make an assembler version of the bootloader).
puh.. that would be time expensive and error prone. I think i am now on that point, where i really have to devide bootloader and app project because of unpredictable behavior 
I mean i only recognize this error because a small part of the bootloader wants to jump in a app-sector that i incidentally delete before. I am quite certain that there are more jumps to app which i don't recognize till now... and which i will recognize perhaps in 2 years by changing a liitle thing in the code.
So i see there is no way to 100% devide bootloader code from app code in one project, although by using seperated segments and the #pragma CODE_SEG instructions! Linker and/or compiler can generate code, that jumps to unpredictable code segments... which bypasses the #pragma instructions.