Can we please either commit this, or revert r369414 otherwise? Several of the sanitizer buildbots have been red since Tuesday due to r369414.
Wed, Aug 21
This broke several of the bots (eg). It seems any of the __has_cpp_attribute checks that have a namespace qualified attributes will need to be guarded by a if defined(__cplusplus) if we are including the header in a C file.
We were stretching the definition of an NFC patch by creating but not using the TOC-base on AIX. I've striped this down to the NFC part and will post a separate patch for the TOC base change that includes a test change to reflect the TOC-base being created.
Tue, Aug 20
Related to the 32-bit vs 64-bit naming and assertions: I can appreciate being defensive about this, but I think trying to disable being able to create the various types and having an assertion (or error) in every function is overkill. Too much defensiveness is just clutter. I've added an earlier fatal_error in executePostlayoutBinding which blocks the ObjectWriter from doing anything interesting. When we are ready to proceed with 64-bit support we can remove that error and either rename the types (and guard all the appropriate functions), or modify the types for both 64-bit and 32-bit support, whichever is appropriate for the way we intend to add 64-bit support.
- Addressed latest round of review comments.
- Replaced 'CSect' in code with 'Csect' and changed errors/comments to use 'CSECT'.
- Added a second fatal error related to emiting 64-bit objects, in executePostBindingLayout.
Mon, Aug 19
Addressed most review comments other then those related to 32-bit vs 64-bit.
Fri, Aug 16
Changed MCSymbolXCOFF StorageClass member to be an optional<StorageClass> and added asserts checking for redefineing the storage class and accessing an unset storage class.
Minor comment changes.
Wed, Aug 14
Rebased and addressed numerous review comments.
Tue, Aug 13
LGTM. (After either responding to or addressing Jason comment)
Mon, Aug 12
Rebased to reflect changes made in https://reviews.llvm.org/rL368584
Fri, Aug 9
Thu, Aug 8
Wed, Aug 7
Tue, Aug 6
Thu, Aug 1
Tue, Jul 30
Mon, Jul 29
Fri, Jul 26
A minor comment, but otherwise LGTM.
Jul 24 2019
We will need to add handling of Text SectionKind in TargetLoweringObjectFileXCOFF::getExplicitSectionGlobal in this because it blocks assembly generation for the test.
A couple minor comments, I think we are almost there.
I'll have to dig into the AIX ABI docs before I can review this more thoroughly but it looks good. I suggest we split out renaming of the hardcoded '8' to --> getCRSaveOffset() as a separate NFC patch and that we can land immediately.
Jul 23 2019
Jul 22 2019
Committed in https://reviews.llvm.org/rG942537d9fa50
Jul 16 2019
Jul 12 2019
Jul 9 2019
Maybe someone can enlighten me as to why the build bots aren't tripping up on this one, but our group is running into this when we pull this commit from the upstream:
In MCStreamer.h, the declaration of the pure virtual EmitSymbolAttribute is:virtual bool EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr AttrKind, StringRef AttrVal = StringRef()) = 0;
In this revision, in MCXCOFFStreamer.h, the declaration is:bool EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) override;
This is ill-formed, because the 'override' declaration hides the pure virtual member function. Apparently the clang-fast build bots are ok with this, but I'm not sure how. A similar code segment (Compiler Explorer) fails on every clang compiler I've tried.
I tried adding a dependency on TransformUtils to Analysis/LLVMBuild.txt but that generated:CMake Error at CMakeLists.txt:711 (message): Unexpected failure executing llvm-build: llvm-build: fatal error: found cycle to u'Analysis' after following: u'AArch64CodeGen' (required library) -> u'Analysis' (required library) -> u'TransformUtils' (required library) -> Analysis
Does this mean that this change violates the dependency graph? Assuming you can repro, with -DBUILD_SHARED_LIBS=ON then perhaps we can revert this while a solution is found?
Jul 8 2019
Jul 5 2019
- Various comment tweaks and spelling fixes.
- Some indentation fixes and formatting changes.
- Removed unreachable return statement.
- Fixed error messages related to unsupported assembler pseudo ops.
- Added some comments to test clarifying why we are checking for .text csect, and that the binary and text outputs don't represent the same XCOFF content.
- Perform address arithmetic on const char* before casting to a uintptr_t.
Jul 4 2019
- Lots of tweaks to comments and whitespace.
- Added assertion to 'getPointerToSymbolTable`
- Changed name of local variable in getSymbolSectionName to be more descriptive.
- Use checkOffset and getObject'in parseStringTable.
- Changed unreachables to report_fatal_error in 'printSectionHeaders`.
- Added TODO where overflow checking eventually needs to be done.
- Added comment about DWARF subsection types, & limited section flag printing to the section type flags.