[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 01/10] Test Cases for adding -latomic (the access size (8
 bytes) exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee..de65597bcf5d91 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 02/10] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd..493983468b0bcf 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 03/10] Suppress -Watomic-alignment warnings by not treating
 them as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704..79eeb31c035a28 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 04/10] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d91..85e8ea1aded3e0 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 05/10] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e0..d18279e009c63e 100644
--- a/clang/tes

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 1/7] Test Cases for adding -latomic (the access size (8 bytes)
 exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee..de65597bcf5d91 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 2/7] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd..493983468b0bcf 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 3/7] Suppress -Watomic-alignment warnings by not treating them
 as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704..79eeb31c035a28 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 4/7] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d91..85e8ea1aded3e0 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 5/7] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e0..d18279e009c63e 100644
--- a/clang/test/Driver/a

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits


@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {

honeygoyal wrote:

Added Comments

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits


@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}

honeygoyal wrote:

Added Comments

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits


@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors

honeygoyal wrote:

added

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 1/9] Test Cases for adding -latomic (the access size (8 bytes)
 exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee..de65597bcf5d91 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 2/9] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd..493983468b0bcf 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 3/9] Suppress -Watomic-alignment warnings by not treating them
 as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704..79eeb31c035a28 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 4/9] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d91..85e8ea1aded3e0 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 5/9] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e0..d18279e009c63e 100644
--- a/clang/test/Driver/a

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits


@@ -239,6 +239,11 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+if (CMAKE_SIZEOF_VOID_P EQUAL 4 AND CMAKE_SYSTEM_NAME STREQUAL "AIX")

honeygoyal wrote:

Yes, more generalized pattern matching approach.

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 1/8] Test Cases for adding -latomic (the access size (8 bytes)
 exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee..de65597bcf5d91 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 2/8] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd..493983468b0bcf 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 3/8] Suppress -Watomic-alignment warnings by not treating them
 as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704..79eeb31c035a28 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 4/8] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d91..85e8ea1aded3e0 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 5/8] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e0..d18279e009c63e 100644
--- a/clang/test/Driver/a

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-04 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 01/13] Test Cases for adding -latomic (the access size (8
 bytes) exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee..de65597bcf5d91 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 02/13] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd..493983468b0bcf 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 03/13] Suppress -Watomic-alignment warnings by not treating
 them as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704..79eeb31c035a28 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 04/13] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d91..85e8ea1aded3e0 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 05/13] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e0..d18279e009c63e 100644
--- a/clang/tes

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-05 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 01/14] Test Cases for adding -latomic (the access size (8
 bytes) exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee5..de65597bcf5d914 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 02/14] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd8..493983468b0bcf9 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 03/14] Suppress -Watomic-alignment warnings by not treating
 them as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704b..79eeb31c035a282 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 04/14] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d914..85e8ea1aded3e09 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 05/14] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e09..d18279e009c63e1 100644
--- a

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-06 Thread Honey Goyal via cfe-commits


@@ -1120,3 +1120,19 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN: | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+
+// This test verifies that the linker doesn't include '-latomic' when no 
sanitizers are enabled 
+// FIXME: Running this test on non-AIX host will result in the following error:
+// LLVM ERROR: Sanitizer interface functions must be exported by export files 
on AIX
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// CHECK-LD32-ASAN: "-latomic"

honeygoyal wrote:

Hi @hubert-reinterpretcast,

Our focus on the 32‑bit AIX tests is intentional since the requirement to add 
`-latomic` applies exclusively to that configuration. For non‑32‑bit (e.g. 
64‑bit) targets, the flag isn’t needed—and its absence is verified by our 
broader sanitizer test suite (like in sanitizer‑ld.c) covering general 
sanitizer runtime behavior on non‑AIX platforms.

Thus, while a dedicated “sanitizer AND NOT 32‑bit” test might seem useful, it 
would duplicate coverage already ensured by our existing tests.

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-06 Thread Honey Goyal via cfe-commits


@@ -338,6 +338,13 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+
+// Required for 64-bit atomic operations used in sanitizer runtimes 
+// (e.g., sanitizer_common's atomic utilities). On 32-bit AIX, these 
+// are not natively supported, necessitating linkage with -latomic.
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");

honeygoyal wrote:

Thank you for the suggestion, @hubert-reinterpretcast. After careful 
consideration, I believe that keeping the -latomic handling directly in AIX.cpp 
is the more appropriate approach for the following reasons:

1. Target-Specific Clarity:
The logic for appending -latomic is very specific to the 32-bit AIX 
environment. By keeping it in AIX.cpp, we maintain a clear separation between 
platform-specific behavior and the more general sanitizer runtime dependency 
logic. This makes it immediately obvious to developers reviewing AIX-specific 
code that this flag is required solely for this target.

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-06 Thread Honey Goyal via cfe-commits


@@ -338,6 +338,13 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+
+// Required for 64-bit atomic operations used in sanitizer runtimes 
+// (e.g., sanitizer_common's atomic utilities). On 32-bit AIX, these 
+// are not natively supported, necessitating linkage with -latomic.
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");

honeygoyal wrote:

**2. Consistency with Community LLVM Behavior:**
Our implementation in AIX.cpp follows the established behavior in the LLVM 
community codebase. While IBM’s downstream has opted to centralize similar 
logic in clang::tools::driver::linkSanitizerRuntimeDeps, our approach isolates 
the AIX-specific behavior. This minimizes the risk of inadvertently impacting 
sanitizer handling on non-AIX targets.

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-06 Thread Honey Goyal via cfe-commits


@@ -338,6 +338,13 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+
+// Required for 64-bit atomic operations used in sanitizer runtimes 
+// (e.g., sanitizer_common's atomic utilities). On 32-bit AIX, these 
+// are not natively supported, necessitating linkage with -latomic.
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");

honeygoyal wrote:

**3. Testing and Maintainability:** The tests in clang/test/Driver/aix-ld.c are 
designed around this implementation. Moving the logic would complicate our test 
setup and risk unintended side effects.

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-06 Thread Honey Goyal via cfe-commits


@@ -338,6 +338,13 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+
+// Required for 64-bit atomic operations used in sanitizer runtimes 
+// (e.g., sanitizer_common's atomic utilities). On 32-bit AIX, these 
+// are not natively supported, necessitating linkage with -latomic.
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");

honeygoyal wrote:

while I appreciate the suggestion and understand the merits of aligning with 
IBM’s downstream practices, I believe that maintaining the target-specific 
logic in `AIX.cpp` is the best course for now. This decision is based on 
ensuring clarity, minimizing risk, and preserving consistency with the 
community’s expected behavior.

Please let me know if there are additional points to consider.

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-06 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 01/16] Test Cases for adding -latomic (the access size (8
 bytes) exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee5..de65597bcf5d914 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 02/16] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd8..493983468b0bcf9 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 03/16] Suppress -Watomic-alignment warnings by not treating
 them as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704b..79eeb31c035a282 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 04/16] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d914..85e8ea1aded3e09 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 05/16] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e09..d18279e009c63e1 100644
--- a

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-06 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 01/17] Test Cases for adding -latomic (the access size (8
 bytes) exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee5..de65597bcf5d914 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 02/17] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd8..493983468b0bcf9 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 03/17] Suppress -Watomic-alignment warnings by not treating
 them as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704b..79eeb31c035a282 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 04/17] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d914..85e8ea1aded3e09 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 05/17] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e09..d18279e009c63e1 100644
--- a

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-06 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 01/18] Test Cases for adding -latomic (the access size (8
 bytes) exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee5..de65597bcf5d914 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 02/18] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd8..493983468b0bcf9 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 03/18] Suppress -Watomic-alignment warnings by not treating
 them as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704b..79eeb31c035a282 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 04/18] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d914..85e8ea1aded3e09 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 05/18] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e09..d18279e009c63e1 100644
--- a

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-06 Thread Honey Goyal via cfe-commits


@@ -1120,3 +1120,23 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+
+// This test verifies that the linker doesn't include '-latomic' when no 
sanitizers are enabled 
+// Running this test on non-AIX host will result in an unrelated error 
+// FIXME: Sanitizer interface functions must be exported by export files on AIX

honeygoyal wrote:

done

https://github.com/llvm/llvm-project/pull/125388
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 1/5] Test Cases for adding -latomic (the access size (8 bytes)
 exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee5..de65597bcf5d914 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 2/5] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd8..493983468b0bcf9 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 3/5] Suppress -Watomic-alignment warnings by not treating them
 as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704b..79eeb31c035a282 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 4/5] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d914..85e8ea1aded3e09 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

>From b0b9c5ab175d64002440b3b50e99e696d29b6b39 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:35 +0530
Subject: [PATCH 5/5] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 85e8ea1aded3e09..d18279e009c63e1 100644
--- a/clang/tes

[clang] [compiler-rt] [Sanitizers] the access size (8 bytes) exceeds the max lock-free size (4 bytes) for 32-bit (PR #125388)

2025-02-03 Thread Honey Goyal via cfe-commits

https://github.com/honeygoyal updated 
https://github.com/llvm/llvm-project/pull/125388

>From f9d8e7f9c0df6beb8b4a63a01ebbc3b3ab93d091 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:27:01 +0530
Subject: [PATCH 1/4] Test Cases for adding -latomic (the access size (8 bytes)
 exceeds the max lock-free size

---
 clang/test/Driver/aix-ld.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index 7e0f2bf91e06ee5..de65597bcf5d914 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1120,3 +1120,21 @@
 // RUN:-c \
 // RUN:   | FileCheck --check-prefixes=CHECK-K-UNUSED %s
 // CHECK-K-UNUSED: clang: warning: -K: 'linker' input unused 
[-Wunused-command-line-argument]
+
+// Check No Sanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
+// %}
+
+// Check enable AddressSanitizer on 32-bit AIX
+// RUN: %if target={{.*aix.*}} %{ \
+// RUN:   %clang -target powerpc-ibm-aix -m32 -fsanitize=address %s -### 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-LD32-ASAN %s \
+// RUN: %}
+// %if target={{.*aix.*}} %{ 
+// CHECK-LD32-ASAN: "-latomic"
+// %}

>From 1b7439e43798c8a1663e9cb72d61a1625b391cec Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:37:11 +0530
Subject: [PATCH 2/4] Added -latomic when sanitizer flag is enabled and
 processor is 32-bit

---
 clang/lib/Driver/ToolChains/AIX.cpp | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/AIX.cpp 
b/clang/lib/Driver/ToolChains/AIX.cpp
index 09a8dc2f4fa5dd8..493983468b0bcf9 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -232,7 +232,7 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
   if (D.isUsingLTO()) {
 assert(!Inputs.empty() && "Must have at least one input.");
 // Find the first filename InputInfo object.
@@ -338,6 +338,10 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
 CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+  
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+CmdArgs.push_back("-latomic");
+  }
   C.addCommand(std::make_unique(JA, *this, 
ResponseFileSupport::None(),
  Exec, CmdArgs, Inputs, Output));
 }

>From 84d973a841ce1069c941b26f7466330e813797e3 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Sun, 2 Feb 2025 14:38:49 +0530
Subject: [PATCH 3/4] Suppress -Watomic-alignment warnings by not treating them
 as errors

---
 compiler-rt/lib/sanitizer_common/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt 
b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
index 09391e4f5f3704b..79eeb31c035a282 100644
--- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt
+++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt
@@ -239,6 +239,9 @@ append_list_if(SANITIZER_LIMIT_FRAME_SIZE 
-Wframe-larger-than=570
 append_list_if(COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG -Wglobal-constructors
SANITIZER_CFLAGS)
 
+# Suppress -Watomic-alignment warnings by not treating them as errors
+list(APPEND SANITIZER_CFLAGS "-Wno-error=atomic-alignment")
+
 if(APPLE)
   set(OS_OPTION OS ${SANITIZER_COMMON_SUPPORTED_OS})
 endif()

>From 3addb864505ae401c9be99eee6031dea2908f949 Mon Sep 17 00:00:00 2001
From: Honey Goyal 
Date: Mon, 3 Feb 2025 14:06:24 +0530
Subject: [PATCH 4/4] Update clang/test/Driver/aix-ld.c

Co-authored-by: Hubert Tong 
---
 clang/test/Driver/aix-ld.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang/test/Driver/aix-ld.c b/clang/test/Driver/aix-ld.c
index de65597bcf5d914..85e8ea1aded3e09 100644
--- a/clang/test/Driver/aix-ld.c
+++ b/clang/test/Driver/aix-ld.c
@@ -1126,9 +1126,7 @@
 // RUN:   %clang -target powerpc-ibm-aix -m32 %s -### 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD32-NO-SANITIZER %s \
 // RUN: %}
-// %if target={{.*aix.*}} %{ 
 // CHECK-LD32-NO-SANITIZER-NOT: "-latomic"
-// %}
 
 // Check enable AddressSanitizer on 32-bit AIX
 // RUN: %if target={{.*aix.*}} %{ \

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits