mixing PIC/static with exception handling

I was having problems with my exception handling due to mixing PIC and
non-PIC code into my executable. Now I'm confused as to how I'm supposed
to do this correctly when I do have to mix different code types.

The basic setup:
- shared library which throws and catches exceptions, some exceptions
leave it's library bounds
- main executable which throws and catches exceptions, exceptions cross
library bounds

Do I need to have two different personality routines for each of the
PIC/non-PIC components? Is the some linker flag I can set which allows
me to just use PIC everywhere?

I can narrow down my problem to handling the type_table pointer from the
LSDA. If the code is compiled with PIC then my type_table pointer is not
valid. I'm not clear is this can come from a parsing issue, or is it a
linker issue?

Platform is Linux x86_64.