For most (all?) targets, there exists a breakpoint or other trap instruction which can be inserted at any point in the code stream, e.g. 0xcc (int3) on x86.
Currently, gcc aligns code by the default platform option, which is some kind of NOP, as the assembler can't know if a fallthrough is possible.
It would be preferable to pad with a trapping instruction *if* the padding area is unreachable and not subject to fallthrough.
This does not require any binutils changes, as the align directives already optionally support specifying the value of the padding bytes.
So there's cases where there is no padding - are you suggesting a way to reliably insert traps at unreachable () points or just taking advantage of existing padding?