Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Delete -fms-extensions from coreclr native build #102834

Merged
merged 4 commits into from
Jun 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions eng/native/configurecompiler.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -520,11 +520,6 @@ if (CLR_CMAKE_HOST_UNIX)
# Disable frame pointer optimizations so profilers can get better call stacks
add_compile_options(-fno-omit-frame-pointer)

# The -fms-extensions enable the stuff like __declspec(uuid()), etc.
add_compile_options(-fms-extensions)
#-fms-compatibility Enable full Microsoft Visual C++ compatibility
#-fms-extensions Accept some non-standard constructs supported by the Microsoft compiler

# Make signed arithmetic overflow of addition, subtraction, and multiplication wrap around
# using twos-complement representation (this is normally undefined according to the C++ spec).
add_compile_options(-fwrapv)
Expand Down
8 changes: 4 additions & 4 deletions src/coreclr/binder/bindertracing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ namespace

void PopulateBindRequest(/*inout*/ BinderTracing::AssemblyBindOperation::BindRequest &request)
{
AssemblySpec *spec = request.AssemblySpec;
AssemblySpec *spec = request.AssemblySpecPtr;
_ASSERTE(spec != nullptr);

if (spec->GetName() != nullptr)
Expand Down Expand Up @@ -172,7 +172,7 @@ namespace BinderTracing

// ActivityTracker or EventSource may have triggered the system satellite load, or load of System.Private.CoreLib
// Don't track such bindings to avoid potential infinite recursion.
m_ignoreBind = t_AssemblyLoadStartInProgress && (m_bindRequest.AssemblySpec->IsCoreLib() || m_bindRequest.AssemblySpec->IsCoreLibSatellite());
m_ignoreBind = t_AssemblyLoadStartInProgress && (m_bindRequest.AssemblySpecPtr->IsCoreLib() || m_bindRequest.AssemblySpecPtr->IsCoreLibSatellite());
m_checkedIgnoreBind = true;
return m_ignoreBind;
}
Expand Down Expand Up @@ -234,12 +234,12 @@ namespace BinderTracing
bool isLastAttempt = appAssembliesAttempt == nullptr;
TraceStage(Stage::FindInLoadContext,
isLastAttempt && FAILED(m_hr) && SUCCEEDED(inContextAttempt->HResult) ? m_hr : inContextAttempt->HResult,
inContextAttempt->Assembly,
inContextAttempt->AssemblyHolder,
mvidMismatch && isLastAttempt ? errorMsg.GetUnicode() : nullptr);
}

if (appAssembliesAttempt != nullptr)
TraceStage(Stage::ApplicationAssemblies, FAILED(m_hr) && SUCCEEDED(appAssembliesAttempt->HResult) ? m_hr : appAssembliesAttempt->HResult, appAssembliesAttempt->Assembly, mvidMismatch ? errorMsg.GetUnicode() : nullptr);
TraceStage(Stage::ApplicationAssemblies, FAILED(m_hr) && SUCCEEDED(appAssembliesAttempt->HResult) ? m_hr : appAssembliesAttempt->HResult, appAssembliesAttempt->AssemblyHolder, mvidMismatch ? errorMsg.GetUnicode() : nullptr);
}

void ResolutionAttemptedOperation::TraceStage(Stage stage, HRESULT hr, BINDER_SPACE::Assembly *resultAssembly, const WCHAR *customError)
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/binder/inc/bindertracing.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ namespace BinderTracing

struct BindRequest
{
AssemblySpec *AssemblySpec;
AssemblySpec *AssemblySpecPtr;
SString AssemblyName;
SString AssemblyPath;
SString RequestingAssembly;
Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/binder/inc/bindresult.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ namespace BINDER_SPACE
struct AttemptResult
{
HRESULT HResult;
ReleaseHolder<Assembly> Assembly;
ReleaseHolder<Assembly> AssemblyHolder;
bool Attempted = false;

void Set(const AttemptResult *result);

void Reset()
{
Assembly = nullptr;
AssemblyHolder = nullptr;
Attempted = false;
}
};
Expand Down
6 changes: 3 additions & 3 deletions src/coreclr/binder/inc/bindresult.inl
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ void BindResult::SetAttemptResult(HRESULT hr, Assembly *pAssembly, bool isInCont
pAssembly->AddRef();

BindResult::AttemptResult &result = isInContext ? m_inContextAttempt : m_applicationAssembliesAttempt;
result.Assembly = pAssembly;
result.AssemblyHolder = pAssembly;
result.HResult = hr;
result.Attempted = true;
}
Expand All @@ -112,11 +112,11 @@ const BindResult::AttemptResult* BindResult::GetAttempt(bool foundInContext) con

void BindResult::AttemptResult::Set(const BindResult::AttemptResult *result)
{
BINDER_SPACE::Assembly *assembly = result->Assembly;
BINDER_SPACE::Assembly *assembly = result->AssemblyHolder;
if (assembly != nullptr)
assembly->AddRef();

Assembly = assembly;
AssemblyHolder = assembly;
HResult = result->HResult;
Attempted = result->Attempted;
}
Expand Down
8 changes: 4 additions & 4 deletions src/coreclr/debug/createdump/dumpwritermacho.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ DumpWriter::BuildSegmentLoadCommands()
for (const MemoryRegion& memoryRegion : m_crashInfo.MemoryRegions())
{
uint64_t size = memoryRegion.Size();
uint32_t prot = ConvertFlags(memoryRegion.Permissions());
int32_t prot = ConvertFlags(memoryRegion.Permissions());

segment_command_64 segment = {
LC_SEGMENT_64, // uint32_t cmd;
Expand Down Expand Up @@ -240,8 +240,8 @@ DumpWriter::WriteSegments()
// Write the header
SpecialThreadInfoHeader header = {
{SPECIAL_THREADINFO_SIGNATURE},
m_crashInfo.Pid(),
m_crashInfo.Threads().size()
static_cast<uint32_t>(m_crashInfo.Pid()),
static_cast<uint32_t>(m_crashInfo.Threads().size())
};

if (!WriteData(&header, sizeof(header))) {
Expand All @@ -252,7 +252,7 @@ DumpWriter::WriteSegments()
for (const ThreadInfo* thread : m_crashInfo.Threads())
{
SpecialThreadInfoEntry entry = {
thread->Tid(),
static_cast<uint32_t>(thread->Tid()),
thread->GetStackPointer()
};

Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/debug/daccess/daccess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7913,7 +7913,7 @@ void DacStackReferenceWalker::WalkStack()
// Setup GCCONTEXT structs for the stackwalk.
GCCONTEXT gcctx = {0};
DacScanContext dsc(this, &mList, mResolvePointers);
dsc.pEnumFunc = DacStackReferenceWalker::GCEnumCallback;
dsc.pEnumFunc = DacStackReferenceWalker::GCEnumCallbackFunc;
gcctx.f = DacStackReferenceWalker::GCReportCallback;
gcctx.sc = &dsc;

Expand Down Expand Up @@ -7960,7 +7960,7 @@ CLRDATA_ADDRESS DacStackReferenceWalker::ReadPointer(TADDR addr)
}


void DacStackReferenceWalker::GCEnumCallback(LPVOID hCallback, OBJECTREF *pObject, uint32_t flags, DacSlotLocation loc)
void DacStackReferenceWalker::GCEnumCallbackFunc(LPVOID hCallback, OBJECTREF *pObject, uint32_t flags, DacSlotLocation loc)
{
GCCONTEXT *gcctx = (GCCONTEXT *)hCallback;
DacScanContext *dsc = (DacScanContext*)gcctx->sc;
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/debug/daccess/dacimpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -2057,7 +2057,7 @@ class DacStackReferenceWalker : public DefaultCOMImpl<ISOSStackRefEnum, IID_ISOS

private:
static StackWalkAction Callback(CrawlFrame *pCF, VOID *pData);
static void GCEnumCallback(LPVOID hCallback, OBJECTREF *pObject, uint32_t flags, DacSlotLocation loc);
static void GCEnumCallbackFunc(LPVOID hCallback, OBJECTREF *pObject, uint32_t flags, DacSlotLocation loc);
static void GCReportCallback(PTR_PTR_Object ppObj, ScanContext *sc, uint32_t flags);

CLRDATA_ADDRESS ReadPointer(TADDR addr);
Expand Down
4 changes: 4 additions & 0 deletions src/coreclr/debug/di/rsthread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1503,7 +1503,11 @@ void CordbThread::Get32bitFPRegisters(CONTEXT * pContext)
for (i = 0; i <= floatStackTop; i++)
{
double td = 0.0;
#ifdef _MSC_VER
__asm fstp td // copy out the double
#else
__asm("fstpl %0" : "=m" (td));
#endif
m_floatValues[i] = td;
}

Expand Down
12 changes: 12 additions & 0 deletions src/coreclr/debug/di/valuehome.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -518,11 +518,19 @@ void FloatRegValueHome::SetEnregisteredValue(MemoryRange newValue,

while (i <= m_floatIndex)
{
#ifdef _MSC_VER
__asm fstp td
#else
__asm("fstpl %0" : "=m" (td));
#endif
popArea[i++] = td;
}

#ifdef _MSC_VER
__asm fld newVal; // push on the new value.
#else
__asm("fldl %0" : "=m" (newVal));
#endif

// Push any values that we popled off back onto the stack,
// _except_ the last one, which was the one we changed.
Expand All @@ -531,7 +539,11 @@ void FloatRegValueHome::SetEnregisteredValue(MemoryRange newValue,
while (i > 0)
{
td = popArea[--i];
#ifdef _MSC_VER
__asm fld td
#else
__asm("fldl %0" : "=m" (td));
#endif
}

// Save out the modified float area.
Expand Down
4 changes: 4 additions & 0 deletions src/coreclr/debug/ee/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13962,7 +13962,11 @@ void GenericHijackFuncHelper()
// must be naked.
//
#if defined(TARGET_X86)
#ifdef TARGET_WINDOWS
__declspec(naked)
#else
__attribute__((naked))
#endif
#endif // defined (_x86_)
void Debugger::GenericHijackFunc(void)
{
Expand Down
1 change: 0 additions & 1 deletion src/coreclr/debug/ee/stdafx.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,3 @@
#include "frameinfo.h"
#include <corerror.h>
#include "../inc/common.h"

27 changes: 10 additions & 17 deletions src/coreclr/inc/check.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,6 @@ class CHECK
#endif
};


//--------------------------------------------------------------------------------
// These CHECK macros are the correct way to propagate an assertion. These
// routines are designed for use inside "Check" routines. Such routines may
Expand Down Expand Up @@ -535,11 +534,9 @@ CHECK CheckValue(TYPENAME &val)

#endif // _PREFAST_ || _PREFIX_


#define COMPILER_ASSUME(_condition) \
COMPILER_ASSUME_MSG(_condition, "")


//--------------------------------------------------------------------------------
// PREFIX_ASSUME_MSG and PREFAST_ASSUME_MSG are just another name
// for COMPILER_ASSUME_MSG
Expand Down Expand Up @@ -576,18 +573,17 @@ CHECK CheckValue(TYPENAME &val)
#define UNREACHABLE() \
UNREACHABLE_MSG("")

#ifdef __llvm__

// LLVM complains if a function does not return what it says.
#define UNREACHABLE_RET() do { UNREACHABLE(); return 0; } while (0)
#define UNREACHABLE_MSG_RET(_message) UNREACHABLE_MSG(_message); return 0;

#else // __llvm__
#define UNREACHABLE_RET() \
do { \
UNREACHABLE(); \
return 0; \
} while (0)

#define UNREACHABLE_RET() UNREACHABLE()
#define UNREACHABLE_MSG_RET(_message) UNREACHABLE_MSG(_message)

#endif // __llvm__ else
#define UNREACHABLE_MSG_RET(_message) \
do { \
UNREACHABLE_MSG(_message); \
return 0; \
} while (0)

#ifdef _DEBUG_IMPL

Expand All @@ -606,7 +602,6 @@ CHECK CheckValue(TYPENAME &val)

#endif


//--------------------------------------------------------------------------------
// STRESS_CHECK represents a check which is included in a free build
// @todo: behavior on trigger
Expand Down Expand Up @@ -704,8 +699,6 @@ CHECK CheckValue(TYPENAME &val)

#endif



//--------------------------------------------------------------------------------
// Common base level checks
//--------------------------------------------------------------------------------
Expand Down
18 changes: 9 additions & 9 deletions src/coreclr/jit/codegenarmarch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2120,10 +2120,10 @@ class ProducingStreamBaseInstrs
}

private:
const regNumber intReg1;
const regNumber intReg2;
const regNumber addrReg;
emitter* const emitter;
const regNumber intReg1;
const regNumber intReg2;
const regNumber addrReg;
class emitter* const emitter;
};

class ProducingStream
Expand Down Expand Up @@ -2213,11 +2213,11 @@ class ProducingStream
}

private:
const regNumber intReg1;
const regNumber simdReg1;
const regNumber simdReg2;
const regNumber addrReg;
emitter* const emitter;
const regNumber intReg1;
const regNumber simdReg1;
const regNumber simdReg2;
const regNumber addrReg;
class emitter* const emitter;
};

class BlockUnrollHelper
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/jit/gentree.h
Original file line number Diff line number Diff line change
Expand Up @@ -4668,7 +4668,7 @@ struct NewCallArg
// The class handle if SignatureType == TYP_STRUCT.
CORINFO_CLASS_HANDLE SignatureClsHnd = NO_CLASS_HANDLE;
// The type of well known arg
WellKnownArg WellKnownArg = ::WellKnownArg::None;
enum class WellKnownArg WellKnownArg = ::WellKnownArg::None;

NewCallArg WellKnown(::WellKnownArg type) const
{
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/jit/inductionvariableopts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class LoopLocalOccurrences
struct Occurrence
{
BasicBlock* Block;
Statement* Statement;
struct Statement* Statement;
GenTreeLclVarCommon* Node;
Occurrence* Next;
};
Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/jit/jitstd/allocator.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class allocator<void>
template <typename U>
struct rebind
{
typedef allocator<U> allocator;
typedef class allocator<U> allocator;
};

private:
Expand Down Expand Up @@ -105,7 +105,7 @@ class allocator
template <typename U>
struct rebind
{
typedef allocator<U> allocator;
typedef class allocator<U> allocator;
};

private:
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/jit/lclmorph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2115,7 +2115,7 @@ bool Compiler::fgExposeUnpropagatedLocals(bool propagatedAny, LocalEqualsLocalAd

struct Store
{
Statement* Statement;
struct Statement* Statement;
GenTreeLclVarCommon* Tree;
};

Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/jit/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1216,8 +1216,8 @@ void NodeCounts::record(genTreeOps oper)

struct DumpOnShutdownEntry
{
const char* Name;
Dumpable* Dumpable;
const char* Name;
class Dumpable* Dumpable;
};

static DumpOnShutdownEntry s_dumpOnShutdown[16];
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/nativeaot/Runtime/eventpipe/ds-rt-aot.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ aot_ipc_get_process_id_disambiguation_key(
// since the start of the Unix epoch).
struct kinfo_proc info = {};
size_t size = sizeof (info);
int mib [4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_id };
int mib [4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, (int)process_id };

const int result_sysctl = sysctl (mib, sizeof(mib)/sizeof(*mib), &info, &size, NULL, 0);
if (result_sysctl == 0) {
Expand Down
10 changes: 9 additions & 1 deletion src/coreclr/nativeaot/Runtime/stressLog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,15 @@ GPTR_IMPL(StressLog, g_pStressLog /*, &StressLog::theLog*/);
variable-speed CPUs (for power management), this is not accurate, but may
be good enough.
*/
inline __declspec(naked) uint64_t getTimeStamp() {

inline
#ifdef TARGET_WINDOWS
__declspec(naked)
#else
__attribute__((naked))
#endif
uint64_t getTimeStamp()
{

__asm {
RDTSC // read time stamp counter
Expand Down
Loading
Loading