Skip to content

Commit 98d2d53

Browse files
Copilotjkotas
andauthored
Define TARGET_LINUX for Android native builds and preserve Android-specific exclusions (#128826)
Android was treated as Linux in managed constants (`TargetsLinux`) but not consistently in native C/C++ compile-time defines. This change aligns the native side by defining `TARGET_LINUX` on Android and simplifying call sites that previously special-cased `TARGET_ANDROID`, while preserving Android-specific exclusions where Linux-only native behavior does not apply. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com> Co-authored-by: Jan Kotas <jkotas@microsoft.com>
1 parent 41a0abd commit 98d2d53

13 files changed

Lines changed: 33 additions & 31 deletions

File tree

eng/native/configurecompiler.cmake

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -818,13 +818,14 @@ if(CLR_CMAKE_TARGET_UNIX)
818818
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_TVOS>)
819819
elseif(CLR_CMAKE_TARGET_FREEBSD)
820820
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_FREEBSD>)
821-
elseif(CLR_CMAKE_TARGET_ANDROID)
822-
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_ANDROID>)
823821
elseif(CLR_CMAKE_TARGET_LINUX)
824822
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_LINUX>)
825823
if(CLR_CMAKE_TARGET_LINUX_MUSL)
826824
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_LINUX_MUSL>)
827825
endif()
826+
if(CLR_CMAKE_TARGET_ANDROID)
827+
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_ANDROID>)
828+
endif()
828829
elseif(CLR_CMAKE_TARGET_NETBSD)
829830
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_NETBSD>)
830831
elseif(CLR_CMAKE_TARGET_OPENBSD)

src/coreclr/gc/unix/cgroup.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Module Name:
1313
#include "cgroup.h"
1414
#include <cstddef>
1515

16-
#if defined(TARGET_LINUX) || defined(TARGET_ANDROID)
16+
#if defined(TARGET_LINUX)
1717

1818
#include <cstdint>
1919
#include <cassert>
@@ -646,7 +646,7 @@ bool GetPhysicalMemoryUsed(size_t* val)
646646
return result;
647647
}
648648

649-
#else // !(TARGET_LINUX || TARGET_ANDROID)
649+
#else // !TARGET_LINUX
650650

651651
void InitializeCGroup()
652652
{
@@ -666,4 +666,4 @@ bool GetPhysicalMemoryUsed(size_t* val)
666666
return false;
667667
}
668668

669-
#endif // TARGET_LINUX || TARGET_ANDROID
669+
#endif // TARGET_LINUX

src/coreclr/gc/unix/gcenv.unix.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ static bool VirtualCommitInner(void* address, size_t size, uint16_t node, bool n
463463
}
464464
#endif
465465

466-
#ifdef TARGET_LINUX
466+
#if defined(TARGET_LINUX) && !defined(TARGET_ANDROID)
467467
if (success && g_numaAvailable && (node != NUMA_NODE_UNDEFINED))
468468
{
469469
if ((int)node <= g_highestNumaNode)
@@ -481,7 +481,7 @@ static bool VirtualCommitInner(void* address, size_t size, uint16_t node, bool n
481481
// If the mbind fails, we still return the allocated memory since the node is just a hint
482482
}
483483
}
484-
#endif // TARGET_LINUX
484+
#endif // TARGET_LINUX && !TARGET_ANDROID
485485

486486
return success;
487487
}
@@ -1344,14 +1344,14 @@ bool GCToOSInterface::GetProcessorForHeap(uint16_t heap_number, uint16_t* proc_n
13441344
if (availableProcNumber == heap_number)
13451345
{
13461346
*proc_no = procNumber;
1347-
#ifdef TARGET_LINUX
1347+
#if defined(TARGET_LINUX) && !defined(TARGET_ANDROID)
13481348
if (GCToOSInterface::CanEnableGCNumaAware())
13491349
{
13501350
int result = GetNumaNodeNumByCpu(procNumber);
13511351
*node_no = (result >= 0) ? (uint16_t)result : NUMA_NODE_UNDEFINED;
13521352
}
13531353
else
1354-
#endif // TARGET_LINUX
1354+
#endif // TARGET_LINUX && !TARGET_ANDROID
13551355
{
13561356
*node_no = NUMA_NODE_UNDEFINED;
13571357
}

src/coreclr/gc/unix/numasupport.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include <limits.h>
1313
#include <minipal/utils.h>
1414

15-
#ifdef TARGET_LINUX
15+
#if defined(TARGET_LINUX) && !defined(TARGET_ANDROID)
1616
#include <sys/syscall.h>
1717
#endif
1818

@@ -21,7 +21,7 @@ int g_highestNumaNode = 0;
2121
// Is numa available
2222
bool g_numaAvailable = false;
2323

24-
#ifdef TARGET_LINUX
24+
#if defined(TARGET_LINUX) && !defined(TARGET_ANDROID)
2525
static int GetNodeNum(const char* path, bool firstOnly)
2626
{
2727
DIR *dir;
@@ -56,7 +56,7 @@ static int GetNodeNum(const char* path, bool firstOnly)
5656

5757
void NUMASupportInitialize()
5858
{
59-
#ifdef TARGET_LINUX
59+
#if defined(TARGET_LINUX) && !defined(TARGET_ANDROID)
6060
if (syscall(__NR_get_mempolicy, NULL, NULL, 0, 0, 0) < 0)
6161
return;
6262

@@ -72,7 +72,7 @@ void NUMASupportInitialize()
7272

7373
int GetNumaNodeNumByCpu(int cpu)
7474
{
75-
#ifdef TARGET_LINUX
75+
#if defined(TARGET_LINUX) && !defined(TARGET_ANDROID)
7676
char path[64];
7777
if (snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%d", cpu) < 0)
7878
return -1;
@@ -85,7 +85,7 @@ int GetNumaNodeNumByCpu(int cpu)
8585

8686
long BindMemoryPolicy(void* start, unsigned long len, const unsigned long* nodemask, unsigned long maxnode)
8787
{
88-
#ifdef TARGET_LINUX
88+
#if defined(TARGET_LINUX) && !defined(TARGET_ANDROID)
8989
return syscall(__NR_mbind, (long)start, len, 1, (long)nodemask, maxnode, 0);
9090
#else
9191
return -1;

src/coreclr/inc/crosscomp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,7 @@ typedef struct _KNONVOLATILE_CONTEXT_POINTERS_EX
729729
#define DAC_MUTEX_MAX_SIZE 96
730730
#elif defined(TARGET_FREEBSD)
731731
#define DAC_MUTEX_MAX_SIZE 16
732-
#elif defined(TARGET_LINUX) || defined(TARGET_ANDROID)
732+
#elif defined(TARGET_LINUX)
733733
#define DAC_MUTEX_MAX_SIZE 64
734734
#elif defined(TARGET_WINDOWS)
735735
#ifdef TARGET_64BIT

src/coreclr/minipal/Unix/doublemapping.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ bool VMToOSInterface::CreateDoubleMemoryMapper(void** pHandle, size_t *pMaxExecu
5858

5959
#ifdef TARGET_FREEBSD
6060
int fd = shm_open(SHM_ANON, O_RDWR | O_CREAT, S_IRWXU);
61-
#elif defined(TARGET_LINUX) || defined(TARGET_ANDROID)
61+
#elif defined(TARGET_LINUX)
6262
int fd = memfd_create("doublemapper", MFD_CLOEXEC);
6363
#else
6464
int fd = -1;
@@ -408,7 +408,7 @@ TemplateThunkMappingData *InitializeTemplateThunkMappingData(void* pTemplate)
408408

409409
#ifdef TARGET_FREEBSD
410410
int fd = shm_open(SHM_ANON, O_RDWR | O_CREAT, S_IRWXU);
411-
#elif defined(TARGET_LINUX) || defined(TARGET_ANDROID)
411+
#elif defined(TARGET_LINUX)
412412
int fd = memfd_create("doublemapper-template", MFD_CLOEXEC);
413413
#else
414414
int fd = -1;

src/coreclr/nativeaot/Runtime/unix/PalUnix.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ void InitializeCurrentProcessCpuCount()
505505
g_RhNumberOfProcessors = count;
506506
}
507507

508-
#if defined(TARGET_LINUX) || defined(TARGET_ANDROID)
508+
#if defined(TARGET_LINUX)
509509
static pthread_key_t key;
510510
#endif
511511

@@ -549,7 +549,7 @@ bool PalInit()
549549
}
550550
#endif
551551

552-
#if defined(TARGET_LINUX) || defined(TARGET_ANDROID)
552+
#if defined(TARGET_LINUX)
553553
if (pthread_key_create(&key, RuntimeThreadShutdown) != 0)
554554
{
555555
return false;
@@ -559,7 +559,7 @@ bool PalInit()
559559
return true;
560560
}
561561

562-
#if !defined(TARGET_LINUX) && !defined(TARGET_ANDROID)
562+
#if !defined(TARGET_LINUX)
563563
struct TlsDestructionMonitor
564564
{
565565
void* m_thread = nullptr;
@@ -605,7 +605,7 @@ FCIMPLEND
605605
// thread - thread to attach
606606
void PalAttachThread(void* thread)
607607
{
608-
#if defined(TARGET_LINUX) || defined(TARGET_ANDROID)
608+
#if defined(TARGET_LINUX)
609609
if (pthread_setspecific(key, thread) != 0)
610610
{
611611
_ASSERTE(!"pthread_setspecific failed");

src/coreclr/nativeaot/Runtime/unix/cgroupcpu.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Module Name:
1313
#include <cstdint>
1414
#include "cgroupcpu.h"
1515

16-
#if defined(TARGET_LINUX) || defined(TARGET_ANDROID)
16+
#if defined(TARGET_LINUX)
1717

1818
#include <cstddef>
1919
#include <cassert>
@@ -499,7 +499,7 @@ bool GetCpuLimit(uint32_t* val)
499499
return CGroup::GetCpuLimit(val);
500500
}
501501

502-
#else // !(TARGET_LINUX || TARGET_ANDROID)
502+
#else // !TARGET_LINUX
503503

504504
void InitializeCpuCGroup()
505505
{
@@ -510,4 +510,4 @@ bool GetCpuLimit(uint32_t* val)
510510
return false;
511511
}
512512

513-
#endif // TARGET_LINUX || TARGET_ANDROID
513+
#endif // TARGET_LINUX

src/coreclr/pal/src/misc/cgroup.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ SET_DEFAULT_DEBUG_CHANNEL(MISC);
2121
#include "pal/cgroup.h"
2222
#include <algorithm>
2323

24-
#if defined(TARGET_LINUX) || defined(TARGET_ANDROID)
24+
#if defined(TARGET_LINUX)
2525

2626
#include <sys/vfs.h>
2727

@@ -520,7 +520,7 @@ PAL_GetCpuLimit(UINT* val)
520520
return CGroup::GetCpuLimit(val);
521521
}
522522

523-
#else // !(TARGET_LINUX || TARGET_ANDROID)
523+
#else // !TARGET_LINUX
524524

525525
void InitializeCGroup()
526526
{
@@ -537,4 +537,4 @@ PAL_GetCpuLimit(UINT* val)
537537
return FALSE;
538538
}
539539

540-
#endif // TARGET_LINUX || TARGET_ANDROID
540+
#endif // TARGET_LINUX

src/mono/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ elseif(TARGET_SYSTEM_NAME STREQUAL "ios" OR TARGET_SYSTEM_NAME STREQUAL "tvos")
324324
endif()
325325
elseif(TARGET_SYSTEM_NAME STREQUAL "android")
326326
set(TARGET_UNIX 1)
327+
set(TARGET_LINUX 1)
327328
set(TARGET_LINUX_BIONIC 1)
328329
set(TARGET_ANDROID 1)
329330
if (CMAKE_BUILD_TYPE STREQUAL "Release")

0 commit comments

Comments
 (0)