Skip to content

Contribute changes to libobjc2 upstream to gnustep/libobjc2 #2848

Open

Description

  • max() -> __objc_max() (microsoft/libobjc2@9630cf1)
    • stdlib.h defines max as a macro in recent versions of Visual Studio
  • win32: Add/update a handful of defines for Win32 without MinGW/Cygwin. (microsoft/libobjc2@6cd94b7)
  • Replace extern with OBJC_HOOK in hooks.h (microsoft/libobjc2@b6099e5)
  • win32/uwp: Remove getenv, which caused applications to fail store certification (microsoft/libobjc2@14bfb02)
    • Maybe we want to gate this on the API family in use
  • Fix asmconstants for win64 (LLP64) (microsoft/libobjc2@54c0c83)
  • fix objc_msgSend.*.S for win64 (microsoft/libobjc2@acd3fcc)
  • Offer an objc_enumerationMutation hook for platforms without weak imports. (microsoft/libobjc2@6e4fa86)
    • This may be better served by a link line order fix to ensure that Foundation's objc_enumeration_mutation is found before libobjc2's.
    • Symbols cannot easily be defined weak in COFF. Doing so is a no-op in Clang/LLVM; CL will generate them, but they don't have the semantics we're hoping for.

In Review

Completed

Not Required

In Question

  • Introduce 2-stage Objective-C initialization (microsoft/libobjc2@44988ee)
    • New ABI, coupled with clang changes
  • Add a MSVC/VS2017-compatible objc_exception_{,re}throw (microsoft/libobjc2@375a009)
  • We've got a lot of selectors with the same name. Include the type in the hash (microsoft/libobjc2@6ae101d)
    • This was a workaround for our projections libraries having ~1000 selectors of the same name that differed only on argument types.
  • recognize selectors that have been pre-hashed by the compiler (microsoft/libobjc2@c8ecc35)
    • This is Microsoft ABI 11 -- it was committed to for performance reasons, but we don't know if those are better-fixed by better data folding compiler-side.
  • Working around a WinObjC regression that hit after switching to the libobjc2 runtime (microsoft/libobjc2@c2013dc)
    • (this is an ivar slide issue, it is fixed upstream)
  • Work around _NSConcreteGlobalBlock's linkage on win32 (microsoft/libobjc2@ef18759, microsoft/libobjc2@652be81)
    • win32: add an unpleasant workaround for _NSConcreteGlobalBlock's linkage
    • This is an unfortunate consequence of using dllimport on constants in the data section. The import cannot be resolved because it's in a read-only section without a dynamic initializer.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions