1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
From nicoslocalrepo Mon Sep 17 00:00:00 2001
From: Nico Roeser
Date: Sat, 13 Sep 2025 13:23:33 +0200
Subject: [PATCH] Backport fix for C2Y uabs() naming collision
Make the code build with glibc 2.42 or later, which include an
implementation of uabs (for C2Y).
Original patch:
8354941: Build failure with glibc 2.42 due to uabs() name collision
Backport-of: 38bb8adf4f632b08af15f2d8530b35f05f86a020
---
hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp | 2 +-
hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp | 2 +-
hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp | 2 +-
hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp | 4 ++--
hotspot/src/share/vm/opto/mulnode.cpp | 4 ++--
hotspot/src/share/vm/utilities/globalDefinitions.hpp | 8 ++++----
6 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp
--- a/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/assembler_aarch64.cpp
@@ -1445,7 +1445,7 @@ void Assembler::add_sub_immediate(Register Rd, Register Rn, unsigned uimm, int o
bool Assembler::operand_valid_for_add_sub_immediate(long imm) {
bool shift = false;
- unsigned long uimm = uabs(imm);
+ unsigned long uimm = g_uabs(imm);
if (uimm < (1 << 12))
return true;
if (uimm < (1 << 24)
diff --git a/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp
--- a/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp
@@ -825,7 +825,7 @@ public:
static const unsigned long branch_range = NOT_DEBUG(128 * M) DEBUG_ONLY(2 * M);
static bool reachable_from_branch_at(address branch, address target) {
- return uabs(target - branch) < branch_range;
+ return g_uabs(target - branch) < branch_range;
}
// Unconditional branch (immediate)
diff --git a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
@@ -2023,7 +2023,7 @@ void MacroAssembler::wrap_add_sub_imm_insn(Register Rd, Register Rn, unsigned im
if (operand_valid_for_add_sub_immediate((int)imm)) {
(this->*insn1)(Rd, Rn, imm);
} else {
- if (uabs(imm) < (1 << 24)) {
+ if (g_uabs(imm) < (1 << 24)) {
(this->*insn1)(Rd, Rn, imm & -(1 << 12));
(this->*insn1)(Rd, Rd, imm & ((1 << 12)-1));
} else {
diff --git a/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp
--- a/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp
@@ -1093,7 +1093,7 @@ class StubGenerator: public StubCodeGenerator {
void copy_memory_small(Register s, Register d, Register count, Register tmp, int step) {
bool is_backwards = step < 0;
- size_t granularity = uabs(step);
+ size_t granularity = g_uabs(step);
int direction = is_backwards ? -1 : 1;
int unit = wordSize * direction;
@@ -1149,7 +1149,7 @@ class StubGenerator: public StubCodeGenerator {
Register count, Register tmp, int step) {
copy_direction direction = step < 0 ? copy_backwards : copy_forwards;
bool is_backwards = step < 0;
- int granularity = uabs(step);
+ int granularity = g_uabs(step);
const Register t0 = r3, t1 = r4;
// <= 96 bytes do inline. Direction doesn't matter because we always
diff --git a/hotspot/src/share/vm/opto/mulnode.cpp b/hotspot/src/share/vm/opto/mulnode.cpp
--- a/hotspot/src/share/vm/opto/mulnode.cpp
+++ b/hotspot/src/share/vm/opto/mulnode.cpp
@@ -189,7 +189,7 @@ Node *MulINode::Ideal(PhaseGVN *phase, bool can_reshape) {
// Check for negative constant; if so negate the final result
bool sign_flip = false;
- unsigned int abs_con = uabs(con);
+ unsigned int abs_con = g_uabs(con);
if (abs_con != (unsigned int)con) {
sign_flip = true;
}
@@ -285,7 +285,7 @@ Node *MulLNode::Ideal(PhaseGVN *phase, bool can_reshape) {
// Check for negative constant; if so negate the final result
bool sign_flip = false;
- julong abs_con = uabs(con);
+ julong abs_con = g_uabs(con);
if (abs_con != (julong)con) {
sign_flip = true;
}
diff --git a/hotspot/src/share/vm/utilities/globalDefinitions.hpp b/hotspot/src/share/vm/utilities/globalDefinitions.hpp
--- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp
@@ -1254,7 +1254,7 @@ inline bool is_even(intx x) { return !is_odd(x); }
// abs methods which cannot overflow and so are well-defined across
// the entire domain of integer types.
-static inline unsigned int uabs(unsigned int n) {
+static inline unsigned int g_uabs(unsigned int n) {
union {
unsigned int result;
int value;
@@ -1263,7 +1263,7 @@ static inline unsigned int uabs(unsigned int n) {
if (value < 0) result = 0-result;
return result;
}
-static inline julong uabs(julong n) {
+static inline julong g_uabs(julong n) {
union {
julong result;
jlong value;
@@ -1272,8 +1272,8 @@ static inline julong uabs(julong n) {
if (value < 0) result = 0-result;
return result;
}
-static inline julong uabs(jlong n) { return uabs((julong)n); }
-static inline unsigned int uabs(int n) { return uabs((unsigned int)n); }
+static inline julong g_uabs(jlong n) { return g_uabs((julong)n); }
+static inline unsigned int g_uabs(int n) { return g_uabs((unsigned int)n); }
// "to" should be greater than "from."
inline intx byte_size(void* from, void* to) {
--
2.51.0
|