[clang] [llvm] [SystemZ] Do not extend integer arguments in z/OS XPLINK64 ABI (PR #206833)

Ulrich Weigand via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 22 09:00:30 PDT 2026


uweigand wrote:

> Two crash fixes added (follow-up to [c4b3d1d](https://github.com/llvm/llvm-project/commit/c4b3d1d51da2570de41fbfab9784ca31558641a8))
> 
> Found when running with WYVERN_DEFAULT_TARGET_TRIPLE=s390x-ibm-zos:
> 
> SystemZMCTargetDesc.cpp — createNullTargetStreamer was returning the base SystemZTargetStreamer whose createWordDiffExpr() returns nullptr. The new PPA1 prolog-length fields pass that directly to emitValue(), causing a SIGSEGV. Fix: return SystemZTargetGOFFStreamer for z/OS, same as createObjectTargetStreamer already does.

This looks fine, but really should go into a separate PR, it has nothing to do with the ABI.
 
> SystemZHLASMAsmStreamer.cpp — finishImpl() unconditionally calls getADA()->getParent() for any ESD_EXE_DATA symbol, but common/BSS globals get ESD_EXE_DATA set via MCSA_ELF_TypeObject without ever having their ADA assigned. Fix: guard with && Sym.getADA().

This doesn't look right to be - my understanding is that we *need* the ADA as we cannot use `EXTRN` for data symbols.  The ADA should have been set wherever the symbol was marked as data.  If that's not happening, we may need to fix it there.  In any case, that's also a separate PR.


https://github.com/llvm/llvm-project/pull/206833


More information about the cfe-commits mailing list