IBM Z: Fix pcrel relocs for symA-symB expressions

The code in md_apply_fix which tries to deduce from the operand type
which reloc to apply currently does the wrong thing for absolute
relocs which have been re-written by fixup_segment as pc-relative to
implement a subtraction of a local and an external symbol.

In all these cases we wrongly emit an absolute reloc because we ignore
the fx_pcrel flag in md_apply_fix. However, only for the last one we
actually support a pc relative relocation of the proper size and can
implement it accordingly. For the other 3 we have to issue an error.

foo:
  cli	0(%r2),undef-foo
  la	%r2,undef-foo(%r2)
  lay	%r2,undef-foo(%r2)
  lhi	%r2,undef-foo
2 files changed