konan - the mechanism we have described doesn't let you do what you describe directly.
By providing an interrupt handler called, for example, __irq_adc(), there is no record of the previous interrupt handler; your definition of (in this example) __irq_adc() replaces it completely at link time.
As many of the handlers are dummy 'do nothing' handlers, this isn't a bad problem.
There are several ways, some quite involved, of getting an effect similar to the one you describe.
One involves copying the entire interrupt vector table, at run time into RAM, filling in the address of your handler in the copy, and choosing which interrupt vector table to allow the interrupt hardware to use.
What is it that you need to do? We might be able to suggest a way to get the result you need.