[clang] [llvm] [GOFF][z/OS] Change PrivateGlobalPrefix and PrivateLabelPrefix to be L# (PR #85730)
https://github.com/Everybody0523 updated https://github.com/llvm/llvm-project/pull/85730 >From 37ab123e23e140ee6534804ea22b62f2cc47aa20 Mon Sep 17 00:00:00 2001 From: Neumann Hon Date: Mon, 18 Mar 2024 23:16:26 -0400 Subject: [PATCH 1/4] Change prefix from @/@@ to L# --- llvm/lib/MC/MCAsmInfoGOFF.cpp| 4 ++-- llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll | 6 +++--- llvm/test/CodeGen/SystemZ/zos-landingpad.ll | 2 +- llvm/test/CodeGen/SystemZ/zos-ppa2.ll| 14 +++--- llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll | 14 +++--- llvm/test/MC/GOFF/ppa1.ll| 10 +- llvm/unittests/IR/ManglerTest.cpp| 2 +- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/llvm/lib/MC/MCAsmInfoGOFF.cpp b/llvm/lib/MC/MCAsmInfoGOFF.cpp index 81704ffe4b2460..3c81a466e82e79 100644 --- a/llvm/lib/MC/MCAsmInfoGOFF.cpp +++ b/llvm/lib/MC/MCAsmInfoGOFF.cpp @@ -21,7 +21,7 @@ void MCAsmInfoGOFF::anchor() {} MCAsmInfoGOFF::MCAsmInfoGOFF() { Data64bitsDirective = "\t.quad\t"; HasDotTypeDotSizeDirective = false; - PrivateGlobalPrefix = "@@"; - PrivateLabelPrefix = "@"; + PrivateGlobalPrefix = "L#"; + PrivateLabelPrefix = "L#"; ZeroDirective = "\t.space\t"; } diff --git a/llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll b/llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll index e25246917ec099..db67ac57818680 100644 --- a/llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll +++ b/llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll @@ -56,9 +56,9 @@ entry: declare signext i32 @callout(i32 signext) ; CHECK: .section".ada" -; CHECK: .set @@DoFunc@indirect0, DoFunc -; CHECK: .indirect_symbol @@DoFunc@indirect0 -; CHECK: .quad V(@@DoFunc@indirect0) * Offset 0 pointer to function descriptor DoFunc +; CHECK: .set L#DoFunc@indirect0, DoFunc +; CHECK: .indirect_symbol L#DoFunc@indirect0 +; CHECK: .quad V(L#DoFunc@indirect0) * Offset 0 pointer to function descriptor DoFunc ; CHECK: .quad R(Caller) * Offset 8 function descriptor of Caller ; CHECK: .quad V(Caller) ; CHECK: .quad A(i2) * Offset 24 pointer to data symbol i2 diff --git a/llvm/test/CodeGen/SystemZ/zos-landingpad.ll b/llvm/test/CodeGen/SystemZ/zos-landingpad.ll index 7f3214d574242b..9db10114e9795f 100644 --- a/llvm/test/CodeGen/SystemZ/zos-landingpad.ll +++ b/llvm/test/CodeGen/SystemZ/zos-landingpad.ll @@ -19,7 +19,7 @@ done: lpad: %0 = landingpad { ptr, i32 } cleanup ; The Exception Pointer is %r1; the Exception Selector, %r2. -; CHECK: @BB{{[^%]*}} %lpad +; CHECK: L#BB{{[^%]*}} %lpad ; CHECK-DAG: stg 1, {{.*}} ; CHECK-DAG: st 2, {{.*}} %1 = extractvalue { ptr, i32 } %0, 0 diff --git a/llvm/test/CodeGen/SystemZ/zos-ppa2.ll b/llvm/test/CodeGen/SystemZ/zos-ppa2.ll index 60580aeb6d83cc..189b5a3757ee07 100644 --- a/llvm/test/CodeGen/SystemZ/zos-ppa2.ll +++ b/llvm/test/CodeGen/SystemZ/zos-ppa2.ll @@ -2,24 +2,24 @@ ; REQUIRES: systemz-registered-target ; CHECK:.section".ppa2" -; CHECK: @@PPA2: +; CHECK: L#PPA2: ; CHECK:.byte 3 ; CHECK:.byte 231 ; CHECK:.byte 34 ; CHECK:.byte 4 -; CHECK:.long CELQSTRT-@@PPA2 +; CHECK:.long CELQSTRT-L#PPA2 ; CHECK:.long 0 -; CHECK:.long @@DVS-@@PPA2 +; CHECK:.long L#DVS-L#PPA2 ; CHECK:.long 0 ; CHECK:.byte 129 ; CHECK:.byte 0 ; CHECK:.short 0 -; CHECK: @@DVS: +; CHECK: L#DVS: ; CHECK:.ascii "\361\371\367\360\360\361\360\361\360\360\360\360\360\360" ; CHECK:.short 0 -; CHECK:.quad @@PPA2-CELQSTRT * A(PPA2-CELQSTRT) -; CHECK: @@PPA1_void_test_0: -; CHECK:.long @@PPA2-@@PPA1_void_test_0 * Offset to PPA2 +; CHECK:.quad L#PPA2-CELQSTRT * A(PPA2-CELQSTRT) +; CHECK: L#PPA1_void_test_0: +; CHECK:.long L#PPA2-L#PPA1_void_test_0 * Offset to PPA2 ; CHECK:.section"B_IDRL" ; CHECK:.byte 0 ; CHECK:.byte 3 diff --git a/llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll b/llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll index 8c0411629da7d2..d3e5823fcb1fe7 100644 --- a/llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll +++ b/llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll @@ -15,7 +15,7 @@ ; CHECK64: aghi 4, 192 ; CHECK64: b 2(7) -; CHECK64: @@PPA1_func0_0: +; CHECK64: L#PPA1_func0_0: ; CHECK64: .short 0 * Length/4 of Parms define void @func0() { call i64 (i64) @fun(i64 10) @@ -31,7 +31,7 @@ define void @func0() { ; CHECK64: aghi 4, 160 ; CHECK64: b 2(7) -; CHECK64: @@PPA1_func1_0: +; CHECK64: L#PPA1_func1_0: ; CHECK64: .short 2 * Length/4 of Parms define void @func1(ptr %ptr) { %l01 = load volatile i64, ptr %ptr @@ -336,16 +336,16 @@ define void @large_stack0() { ; CHECK64: lgr 0, 3 ; CHECK64: llgt 3, 1208 ; CHECK64: cg 4, 64(3) -; CHECK64: jhe @BB7_2 +; CHECK64: jhe L#BB7_2 ; CHECK64: %bb.1: ; CHECK6
[clang] [llvm] [GOFF][z/OS] Change PrivateGlobalPrefix and PrivateLabelPrefix to be L# (PR #85730)
https://github.com/Everybody0523 closed https://github.com/llvm/llvm-project/pull/85730 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libclc] [SystemZ][z/OS] Implement executePostLayoutBinding for GOFFObjectWriter (PR #67868)
https://github.com/Everybody0523 updated https://github.com/llvm/llvm-project/pull/67868 >From 80073957d9adf8d107515d49a741df2b2130f82d Mon Sep 17 00:00:00 2001 From: Neumann Hon Date: Fri, 29 Sep 2023 19:52:27 -0400 Subject: [PATCH] [SystemZ][z/OS] Implement executePostLayoutBinding for GOFFObjectWriter Implement executePostLayoutBinding() for the GOFFObjectWriter. With this patch, we can now emit the ESD/TXT Records that are required by global variables and functions. --- llvm/include/llvm/BinaryFormat/GOFF.h | 13 +- llvm/include/llvm/MC/MCAssembler.h| 7 + llvm/include/llvm/MC/MCContext.h | 3 +- llvm/include/llvm/MC/MCGOFFObjectWriter.h | 1 + llvm/include/llvm/MC/MCGOFFStreamer.h | 10 +- llvm/include/llvm/MC/MCSymbolGOFF.h | 40 + .../CodeGen/TargetLoweringObjectFileImpl.cpp | 4 + llvm/lib/MC/GOFFObjectWriter.cpp | 709 +- llvm/lib/MC/MCGOFFStreamer.cpp| 50 ++ llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp | 37 + llvm/lib/Target/SystemZ/SystemZAsmPrinter.h | 2 + llvm/test/MC/GOFF/basic-goff-64.ll| 242 ++ llvm/test/MC/GOFF/empty-goff.s| 18 +- 13 files changed, 1116 insertions(+), 20 deletions(-) create mode 100644 llvm/test/MC/GOFF/basic-goff-64.ll diff --git a/llvm/include/llvm/BinaryFormat/GOFF.h b/llvm/include/llvm/BinaryFormat/GOFF.h index f1a30e41b736bda..e53f0fd421fbdb1 100644 --- a/llvm/include/llvm/BinaryFormat/GOFF.h +++ b/llvm/include/llvm/BinaryFormat/GOFF.h @@ -65,12 +65,7 @@ enum ESDNameSpaceId : uint8_t { ESD_NS_Parts = 3 }; -enum ESDReserveQwords : uint8_t { - ESD_RQ_0 = 0, - ESD_RQ_1 = 1, - ESD_RQ_2 = 2, - ESD_RQ_3 = 3 -}; +enum ESDReserveQwords : uint8_t { ESD_RQ_0 = 0, ESD_RQ_1 = 1 }; enum ESDAmode : uint8_t { ESD_AMODE_None = 0, @@ -157,6 +152,12 @@ enum ESDAlignment : uint8_t { ESD_ALIGN_4Kpage = 12, }; +enum TXTRecordStyle : uint8_t { + TXT_RS_Byte = 0, + TXT_RS_Structured = 1, + TXT_RS_Unstructured = 2, +}; + enum ENDEntryPointRequest : uint8_t { END_EPR_None = 0, END_EPR_EsdidOffset = 1, diff --git a/llvm/include/llvm/MC/MCAssembler.h b/llvm/include/llvm/MC/MCAssembler.h index 5e1fc738b1dab4b..2b7b62e29722146 100644 --- a/llvm/include/llvm/MC/MCAssembler.h +++ b/llvm/include/llvm/MC/MCAssembler.h @@ -134,6 +134,9 @@ class MCAssembler { /// List of declared file names std::vector> FileNames; + /// GOFF Csect names. + std::pair CsectNames; + MCDwarfLineTableParams LTParams; /// The set of function symbols for which a .thumb_func directive has @@ -483,6 +486,10 @@ class MCAssembler { FileNames.emplace_back(std::string(FileName), Symbols.size()); } + std::pair const &getCsectNames() { +return CsectNames; + } + /// Write the necessary bundle padding to \p OS. /// Expects a fragment \p F containing instructions and its size \p FSize. void writeFragmentPadding(raw_ostream &OS, const MCEncodedFragment &F, diff --git a/llvm/include/llvm/MC/MCContext.h b/llvm/include/llvm/MC/MCContext.h index 68d6f3e59d2d41a..dd5709d3be14c7f 100644 --- a/llvm/include/llvm/MC/MCContext.h +++ b/llvm/include/llvm/MC/MCContext.h @@ -621,7 +621,8 @@ class MCContext { unsigned EntrySize); MCSectionGOFF *getGOFFSection(StringRef Section, SectionKind Kind, -MCSection *Parent, const MCExpr *SubsectionId); +MCSection *Parent = nullptr, +const MCExpr *SubsectionId = nullptr); MCSectionCOFF *getCOFFSection(StringRef Section, unsigned Characteristics, SectionKind Kind, StringRef COMDATSymName, diff --git a/llvm/include/llvm/MC/MCGOFFObjectWriter.h b/llvm/include/llvm/MC/MCGOFFObjectWriter.h index 85316a6fd5d0e17..26bddde706dc601 100644 --- a/llvm/include/llvm/MC/MCGOFFObjectWriter.h +++ b/llvm/include/llvm/MC/MCGOFFObjectWriter.h @@ -10,6 +10,7 @@ #define LLVM_MC_MCGOFFOBJECTWRITER_H #include "llvm/MC/MCObjectWriter.h" +#include "llvm/Support/Casting.h" namespace llvm { class MCObjectWriter; diff --git a/llvm/include/llvm/MC/MCGOFFStreamer.h b/llvm/include/llvm/MC/MCGOFFStreamer.h index 2345509b161da5b..235edc01e88d5a5 100644 --- a/llvm/include/llvm/MC/MCGOFFStreamer.h +++ b/llvm/include/llvm/MC/MCGOFFStreamer.h @@ -24,9 +24,13 @@ class MCGOFFStreamer : public MCObjectStreamer { ~MCGOFFStreamer() override; - bool emitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) override { -return false; - } + // state management + void initSections(bool NoExecStack, const MCSubtargetInfo &STI) override; + + void switchSection(MCSection *Section, + const MCExpr *Subsection = nullptr) override; + + bool emitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) override; void emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,