* [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility
@ 2023-04-06 21:54 Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 01/11] tools/nolibc: use standard __asm__ statements Thomas Weißschuh
` (11 more replies)
0 siblings, 12 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
This series replaces the C99 compatibility patch. (See v1 link below).
After the discussion about support C99 and/or GNU89 I came to the
conclusion supporting straight C89 is not very hard.
Instead of validating both C99 and GNU89 in some awkward way only for
somebody requesting true C89 support let's just do it this way.
Feel free to squash all the comment syntax patches together if you
prefer.
All changes in this series are cosmetic only.
To: Willy Tarreau <w@1wt.eu>
To: Shuah Khan <shuah@kernel.org>
Cc: linux-kernel@vger.kernel.org
Cc: linux-kselftest@vger.kernel.org
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
This series is based on the "dev" branch of the RCU tree.
---
Changes in v2:
- Target C89 instead of C99
- Link to v1: https://lore.kernel.org/r/20230328-nolibc-c99-v1-1-a8302fb19f19@weissschuh.net
---
Thomas Weißschuh (11):
tools/nolibc: use standard __asm__ statements
tools/nolibc: use __inline__ syntax
tools/nolibc: i386: use C89 comment syntax
tools/nolibc: x86_64: use C89 comment syntax
tools/nolibc: riscv: use C89 comment syntax
tools/nolibc: aarch64: use C89 comment syntax
tools/nolibc: arm: use C89 comment syntax
tools/nolibc: mips: use C89 comment syntax
tools/nolibc: loongarch: use C89 comment syntax
tools/nolibc: use C89 comment syntax
tools/nolibc: validate C89 compatibility
tools/include/nolibc/arch-aarch64.h | 32 ++++++++--------
tools/include/nolibc/arch-arm.h | 42 ++++++++++-----------
tools/include/nolibc/arch-i386.h | 40 ++++++++++----------
tools/include/nolibc/arch-loongarch.h | 38 +++++++++----------
tools/include/nolibc/arch-mips.h | 56 ++++++++++++++--------------
tools/include/nolibc/arch-riscv.h | 40 ++++++++++----------
tools/include/nolibc/arch-x86_64.h | 34 ++++++++---------
tools/include/nolibc/stackprotector.h | 4 +-
tools/include/nolibc/stdlib.h | 18 ++++-----
tools/include/nolibc/string.h | 4 +-
tools/include/nolibc/sys.h | 8 ++--
tools/testing/selftests/nolibc/Makefile | 2 +-
tools/testing/selftests/nolibc/nolibc-test.c | 14 +++----
13 files changed, 166 insertions(+), 166 deletions(-)
---
base-commit: bd5b341f0f69eb4c958ffd48699213c5b9af8145
change-id: 20230328-nolibc-c99-59f44ea45636
Best regards,
--
Thomas Weißschuh <linux@weissschuh.net>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v2 01/11] tools/nolibc: use standard __asm__ statements
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 02/11] tools/nolibc: use __inline__ syntax Thomas Weißschuh
` (10 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Most of the code was migrated to C99-conformant __asm__ statements
before. It seems string.h was missed.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/string.h | 4 ++--
tools/testing/selftests/nolibc/nolibc-test.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/include/nolibc/string.h b/tools/include/nolibc/string.h
index fffdaf6ff467..0c2e06c7c477 100644
--- a/tools/include/nolibc/string.h
+++ b/tools/include/nolibc/string.h
@@ -90,7 +90,7 @@ void *memset(void *dst, int b, size_t len)
while (len--) {
/* prevent gcc from recognizing memset() here */
- asm volatile("");
+ __asm__ volatile("");
*(p++) = b;
}
return dst;
@@ -139,7 +139,7 @@ size_t strlen(const char *str)
size_t len;
for (len = 0; str[len]; len++)
- asm("");
+ __asm__("");
return len;
}
diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
index 888da60eb5ba..e692be98973a 100644
--- a/tools/testing/selftests/nolibc/nolibc-test.c
+++ b/tools/testing/selftests/nolibc/nolibc-test.c
@@ -984,7 +984,7 @@ int main(int argc, char **argv, char **envp)
#else
else if (ioperm(0x501, 1, 1) == 0)
#endif
- asm volatile ("outb %%al, %%dx" :: "d"(0x501), "a"(0));
+ __asm__ volatile ("outb %%al, %%dx" :: "d"(0x501), "a"(0));
/* if it does nothing, fall back to the regular panic */
#endif
}
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 02/11] tools/nolibc: use __inline__ syntax
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 01/11] tools/nolibc: use standard __asm__ statements Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 03/11] tools/nolibc: i386: use C89 comment syntax Thomas Weißschuh
` (9 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
When building in strict C89 mode the "inline" keyword is unknown.
While "__inline__" is non-standard it is used by the kernel headers
themselves.
So the used compilers would have to support it or the users shim it with
a #define.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/stdlib.h | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/tools/include/nolibc/stdlib.h b/tools/include/nolibc/stdlib.h
index 894c955d027e..902162f80337 100644
--- a/tools/include/nolibc/stdlib.h
+++ b/tools/include/nolibc/stdlib.h
@@ -102,7 +102,7 @@ char *_getenv(const char *name, char **environ)
return NULL;
}
-static inline __attribute__((unused,always_inline))
+static __inline__ __attribute__((unused,always_inline))
char *getenv(const char *name)
{
extern char **environ;
@@ -231,7 +231,7 @@ int utoh_r(unsigned long in, char *buffer)
/* converts unsigned long <in> to an hex string using the static itoa_buffer
* and returns the pointer to that string.
*/
-static inline __attribute__((unused))
+static __inline__ __attribute__((unused))
char *utoh(unsigned long in)
{
utoh_r(in, itoa_buffer);
@@ -293,7 +293,7 @@ int itoa_r(long in, char *buffer)
/* for historical compatibility, same as above but returns the pointer to the
* buffer.
*/
-static inline __attribute__((unused))
+static __inline__ __attribute__((unused))
char *ltoa_r(long in, char *buffer)
{
itoa_r(in, buffer);
@@ -303,7 +303,7 @@ char *ltoa_r(long in, char *buffer)
/* converts long integer <in> to a string using the static itoa_buffer and
* returns the pointer to that string.
*/
-static inline __attribute__((unused))
+static __inline__ __attribute__((unused))
char *itoa(long in)
{
itoa_r(in, itoa_buffer);
@@ -313,7 +313,7 @@ char *itoa(long in)
/* converts long integer <in> to a string using the static itoa_buffer and
* returns the pointer to that string. Same as above, for compatibility.
*/
-static inline __attribute__((unused))
+static __inline__ __attribute__((unused))
char *ltoa(long in)
{
itoa_r(in, itoa_buffer);
@@ -323,7 +323,7 @@ char *ltoa(long in)
/* converts unsigned long integer <in> to a string using the static itoa_buffer
* and returns the pointer to that string.
*/
-static inline __attribute__((unused))
+static __inline__ __attribute__((unused))
char *utoa(unsigned long in)
{
utoa_r(in, itoa_buffer);
@@ -367,7 +367,7 @@ int u64toh_r(uint64_t in, char *buffer)
/* converts uint64_t <in> to an hex string using the static itoa_buffer and
* returns the pointer to that string.
*/
-static inline __attribute__((unused))
+static __inline__ __attribute__((unused))
char *u64toh(uint64_t in)
{
u64toh_r(in, itoa_buffer);
@@ -429,7 +429,7 @@ int i64toa_r(int64_t in, char *buffer)
/* converts int64_t <in> to a string using the static itoa_buffer and returns
* the pointer to that string.
*/
-static inline __attribute__((unused))
+static __inline__ __attribute__((unused))
char *i64toa(int64_t in)
{
i64toa_r(in, itoa_buffer);
@@ -439,7 +439,7 @@ char *i64toa(int64_t in)
/* converts uint64_t <in> to a string using the static itoa_buffer and returns
* the pointer to that string.
*/
-static inline __attribute__((unused))
+static __inline__ __attribute__((unused))
char *u64toa(uint64_t in)
{
u64toa_r(in, itoa_buffer);
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 03/11] tools/nolibc: i386: use C89 comment syntax
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 01/11] tools/nolibc: use standard __asm__ statements Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 02/11] tools/nolibc: use __inline__ syntax Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 04/11] tools/nolibc: x86_64: " Thomas Weißschuh
` (8 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Most of nolibc is already using C89 comments.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/arch-i386.h | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/tools/include/nolibc/arch-i386.h b/tools/include/nolibc/arch-i386.h
index 2d98d78fd3f3..7c41897a08ce 100644
--- a/tools/include/nolibc/arch-i386.h
+++ b/tools/include/nolibc/arch-i386.h
@@ -194,31 +194,31 @@ void __attribute__((weak,noreturn,optimize("omit-frame-pointer"),no_stack_protec
{
__asm__ volatile (
#ifdef NOLIBC_STACKPROTECTOR
- "call __stack_chk_init\n" // initialize stack protector
+ "call __stack_chk_init\n" /* initialize stack protector */
#endif
- "pop %eax\n" // argc (first arg, %eax)
- "mov %esp, %ebx\n" // argv[] (second arg, %ebx)
- "lea 4(%ebx,%eax,4),%ecx\n" // then a NULL then envp (third arg, %ecx)
- "mov %ecx, environ\n" // save environ
- "xor %ebp, %ebp\n" // zero the stack frame
- "mov %ecx, %edx\n" // search for auxv (follows NULL after last env)
+ "pop %eax\n" /* argc (first arg, %eax) */
+ "mov %esp, %ebx\n" /* argv[] (second arg, %ebx) */
+ "lea 4(%ebx,%eax,4),%ecx\n" /* then a NULL then envp (third arg, %ecx) */
+ "mov %ecx, environ\n" /* save environ */
+ "xor %ebp, %ebp\n" /* zero the stack frame */
+ "mov %ecx, %edx\n" /* search for auxv (follows NULL after last env) */
"0:\n"
- "add $4, %edx\n" // search for auxv using edx, it follows the
- "cmp -4(%edx), %ebp\n" // ... NULL after last env (ebp is zero here)
+ "add $4, %edx\n" /* search for auxv using edx, it follows the */
+ "cmp -4(%edx), %ebp\n" /* ... NULL after last env (ebp is zero here) */
"jnz 0b\n"
- "mov %edx, _auxv\n" // save it into _auxv
- "and $-16, %esp\n" // x86 ABI : esp must be 16-byte aligned before
- "sub $4, %esp\n" // the call instruction (args are aligned)
- "push %ecx\n" // push all registers on the stack so that we
- "push %ebx\n" // support both regparm and plain stack modes
+ "mov %edx, _auxv\n" /* save it into _auxv */
+ "and $-16, %esp\n" /* x86 ABI : esp must be 16-byte aligned before */
+ "sub $4, %esp\n" /* the call instruction (args are aligned) */
+ "push %ecx\n" /* push all registers on the stack so that we */
+ "push %ebx\n" /* support both regparm and plain stack modes */
"push %eax\n"
- "call main\n" // main() returns the status code in %eax
- "mov %eax, %ebx\n" // retrieve exit code (32-bit int)
- "movl $1, %eax\n" // NR_exit == 1
- "int $0x80\n" // exit now
- "hlt\n" // ensure it does not
+ "call main\n" /* main() returns the status code in %eax */
+ "mov %eax, %ebx\n" /* retrieve exit code (32-bit int) */
+ "movl $1, %eax\n" /* NR_exit == 1 */
+ "int $0x80\n" /* exit now */
+ "hlt\n" /* ensure it does not */
);
__builtin_unreachable();
}
-#endif // _NOLIBC_ARCH_I386_H
+#endif /* _NOLIBC_ARCH_I386_H */
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 04/11] tools/nolibc: x86_64: use C89 comment syntax
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
` (2 preceding siblings ...)
2023-04-06 21:54 ` [PATCH v2 03/11] tools/nolibc: i386: use C89 comment syntax Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 05/11] tools/nolibc: riscv: " Thomas Weißschuh
` (7 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Most of nolibc is already using C89 comments.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/arch-x86_64.h | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/tools/include/nolibc/arch-x86_64.h b/tools/include/nolibc/arch-x86_64.h
index f7f2a11d4c3b..d98f6c89d143 100644
--- a/tools/include/nolibc/arch-x86_64.h
+++ b/tools/include/nolibc/arch-x86_64.h
@@ -194,27 +194,27 @@ void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) _start(void)
{
__asm__ volatile (
#ifdef NOLIBC_STACKPROTECTOR
- "call __stack_chk_init\n" // initialize stack protector
+ "call __stack_chk_init\n" /* initialize stack protector */
#endif
- "pop %rdi\n" // argc (first arg, %rdi)
- "mov %rsp, %rsi\n" // argv[] (second arg, %rsi)
- "lea 8(%rsi,%rdi,8),%rdx\n" // then a NULL then envp (third arg, %rdx)
- "mov %rdx, environ\n" // save environ
- "xor %ebp, %ebp\n" // zero the stack frame
- "mov %rdx, %rax\n" // search for auxv (follows NULL after last env)
+ "pop %rdi\n" /* argc (first arg, %rdi) */
+ "mov %rsp, %rsi\n" /* argv[] (second arg, %rsi) */
+ "lea 8(%rsi,%rdi,8),%rdx\n" /* then a NULL then envp (third arg, %rdx) */
+ "mov %rdx, environ\n" /* save environ */
+ "xor %ebp, %ebp\n" /* zero the stack frame */
+ "mov %rdx, %rax\n" /* search for auxv (follows NULL after last env) */
"0:\n"
- "add $8, %rax\n" // search for auxv using rax, it follows the
- "cmp -8(%rax), %rbp\n" // ... NULL after last env (rbp is zero here)
+ "add $8, %rax\n" /* search for auxv using rax, it follows the */
+ "cmp -8(%rax), %rbp\n" /* ... NULL after last env (rbp is zero here) */
"jnz 0b\n"
- "mov %rax, _auxv\n" // save it into _auxv
- "and $-16, %rsp\n" // x86 ABI : esp must be 16-byte aligned before call
- "call main\n" // main() returns the status code, we'll exit with it.
- "mov %eax, %edi\n" // retrieve exit code (32 bit)
- "mov $60, %eax\n" // NR_exit == 60
- "syscall\n" // really exit
- "hlt\n" // ensure it does not return
+ "mov %rax, _auxv\n" /* save it into _auxv */
+ "and $-16, %rsp\n" /* x86 ABI : esp must be 16-byte aligned before call */
+ "call main\n" /* main() returns the status code, we'll exit with it. */
+ "mov %eax, %edi\n" /* retrieve exit code (32 bit) */
+ "mov $60, %eax\n" /* NR_exit == 60 */
+ "syscall\n" /* really exit */
+ "hlt\n" /* ensure it does not return */
);
__builtin_unreachable();
}
-#endif // _NOLIBC_ARCH_X86_64_H
+#endif /* _NOLIBC_ARCH_X86_64_H */
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 05/11] tools/nolibc: riscv: use C89 comment syntax
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
` (3 preceding siblings ...)
2023-04-06 21:54 ` [PATCH v2 04/11] tools/nolibc: x86_64: " Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 06/11] tools/nolibc: aarch64: " Thomas Weißschuh
` (6 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Most of nolibc is already using C89 comments.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/arch-riscv.h | 40 +++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/tools/include/nolibc/arch-riscv.h b/tools/include/nolibc/arch-riscv.h
index e197fcb10ac0..0d5f15fdedc4 100644
--- a/tools/include/nolibc/arch-riscv.h
+++ b/tools/include/nolibc/arch-riscv.h
@@ -181,28 +181,28 @@ void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) _start(void)
".option norelax\n"
"lla gp, __global_pointer$\n"
".option pop\n"
- "lw a0, 0(sp)\n" // argc (a0) was in the stack
- "add a1, sp, "SZREG"\n" // argv (a1) = sp
- "slli a2, a0, "PTRLOG"\n" // envp (a2) = SZREG*argc ...
- "add a2, a2, "SZREG"\n" // + SZREG (skip null)
- "add a2,a2,a1\n" // + argv
-
- "add a3, a2, zero\n" // iterate a3 over envp to find auxv (after NULL)
- "0:\n" // do {
- "ld a4, 0(a3)\n" // a4 = *a3;
- "add a3, a3, "SZREG"\n" // a3 += sizeof(void*);
- "bne a4, zero, 0b\n" // } while (a4);
- "lui a4, %hi(_auxv)\n" // a4 = &_auxv (high bits)
- "sd a3, %lo(_auxv)(a4)\n" // store a3 into _auxv
-
- "lui a3, %hi(environ)\n" // a3 = &environ (high bits)
- "sd a2,%lo(environ)(a3)\n" // store envp(a2) into environ
- "andi sp,a1,-16\n" // sp must be 16-byte aligned
- "call main\n" // main() returns the status code, we'll exit with it.
- "li a7, 93\n" // NR_exit == 93
+ "lw a0, 0(sp)\n" /* argc (a0) was in the stack */
+ "add a1, sp, "SZREG"\n" /* argv (a1) = sp */
+ "slli a2, a0, "PTRLOG"\n" /* envp (a2) = SZREG*argc ... */
+ "add a2, a2, "SZREG"\n" /* + SZREG (skip null) */
+ "add a2,a2,a1\n" /* + argv */
+
+ "add a3, a2, zero\n" /* iterate a3 over envp to find auxv (after NULL) */
+ "0:\n" /* do { */
+ "ld a4, 0(a3)\n" /* a4 = *a3; */
+ "add a3, a3, "SZREG"\n" /* a3 += sizeof(void*); */
+ "bne a4, zero, 0b\n" /* } while (a4); */
+ "lui a4, %hi(_auxv)\n" /* a4 = &_auxv (high bits) */
+ "sd a3, %lo(_auxv)(a4)\n" /* store a3 into _auxv */
+
+ "lui a3, %hi(environ)\n" /* a3 = &environ (high bits) */
+ "sd a2,%lo(environ)(a3)\n" /* store envp(a2) into environ */
+ "andi sp,a1,-16\n" /* sp must be 16-byte aligned */
+ "call main\n" /* main() returns the status code, we'll exit with it. */
+ "li a7, 93\n" /* NR_exit == 93 */
"ecall\n"
);
__builtin_unreachable();
}
-#endif // _NOLIBC_ARCH_RISCV_H
+#endif /* _NOLIBC_ARCH_RISCV_H */
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 06/11] tools/nolibc: aarch64: use C89 comment syntax
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
` (4 preceding siblings ...)
2023-04-06 21:54 ` [PATCH v2 05/11] tools/nolibc: riscv: " Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 07/11] tools/nolibc: arm: " Thomas Weißschuh
` (5 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Most of nolibc is already using C89 comments.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/arch-aarch64.h | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/tools/include/nolibc/arch-aarch64.h b/tools/include/nolibc/arch-aarch64.h
index 383baddef701..76ef26520c85 100644
--- a/tools/include/nolibc/arch-aarch64.h
+++ b/tools/include/nolibc/arch-aarch64.h
@@ -176,24 +176,24 @@ const unsigned long *_auxv __attribute__((weak));
void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) _start(void)
{
__asm__ volatile (
- "ldr x0, [sp]\n" // argc (x0) was in the stack
- "add x1, sp, 8\n" // argv (x1) = sp
- "lsl x2, x0, 3\n" // envp (x2) = 8*argc ...
- "add x2, x2, 8\n" // + 8 (skip null)
- "add x2, x2, x1\n" // + argv
- "adrp x3, environ\n" // x3 = &environ (high bits)
- "str x2, [x3, #:lo12:environ]\n" // store envp into environ
- "mov x4, x2\n" // search for auxv (follows NULL after last env)
+ "ldr x0, [sp]\n" /* argc (x0) was in the stack */
+ "add x1, sp, 8\n" /* argv (x1) = sp */
+ "lsl x2, x0, 3\n" /* envp (x2) = 8*argc ... */
+ "add x2, x2, 8\n" /* + 8 (skip null) */
+ "add x2, x2, x1\n" /* + argv */
+ "adrp x3, environ\n" /* x3 = &environ (high bits) */
+ "str x2, [x3, #:lo12:environ]\n" /* store envp into environ */
+ "mov x4, x2\n" /* search for auxv (follows NULL after last env) */
"0:\n"
- "ldr x5, [x4], 8\n" // x5 = *x4; x4 += 8
- "cbnz x5, 0b\n" // and stop at NULL after last env
- "adrp x3, _auxv\n" // x3 = &_auxv (high bits)
- "str x4, [x3, #:lo12:_auxv]\n" // store x4 into _auxv
- "and sp, x1, -16\n" // sp must be 16-byte aligned in the callee
- "bl main\n" // main() returns the status code, we'll exit with it.
- "mov x8, 93\n" // NR_exit == 93
+ "ldr x5, [x4], 8\n" /* x5 = *x4; x4 += 8 */
+ "cbnz x5, 0b\n" /* and stop at NULL after last env */
+ "adrp x3, _auxv\n" /* x3 = &_auxv (high bits) */
+ "str x4, [x3, #:lo12:_auxv]\n" /* store x4 into _auxv */
+ "and sp, x1, -16\n" /* sp must be 16-byte aligned in the callee */
+ "bl main\n" /* main() returns the status code, we'll exit with it. */
+ "mov x8, 93\n" /* NR_exit == 93 */
"svc #0\n"
);
__builtin_unreachable();
}
-#endif // _NOLIBC_ARCH_AARCH64_H
+#endif /* _NOLIBC_ARCH_AARCH64_H */
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 07/11] tools/nolibc: arm: use C89 comment syntax
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
` (5 preceding siblings ...)
2023-04-06 21:54 ` [PATCH v2 06/11] tools/nolibc: aarch64: " Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 08/11] tools/nolibc: mips: " Thomas Weißschuh
` (4 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Most of nolibc is already using C89 comments.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/arch-arm.h | 42 ++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/tools/include/nolibc/arch-arm.h b/tools/include/nolibc/arch-arm.h
index 42499f23e73c..9fc926f5fbae 100644
--- a/tools/include/nolibc/arch-arm.h
+++ b/tools/include/nolibc/arch-arm.h
@@ -203,34 +203,34 @@ const unsigned long *_auxv __attribute__((weak));
void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) _start(void)
{
__asm__ volatile (
- "pop {%r0}\n" // argc was in the stack
- "mov %r1, %sp\n" // argv = sp
+ "pop {%r0}\n" /* argc was in the stack */
+ "mov %r1, %sp\n" /* argv = sp */
- "add %r2, %r0, $1\n" // envp = (argc + 1) ...
- "lsl %r2, %r2, $2\n" // * 4 ...
- "add %r2, %r2, %r1\n" // + argv
- "ldr %r3, 1f\n" // r3 = &environ (see below)
- "str %r2, [r3]\n" // store envp into environ
+ "add %r2, %r0, $1\n" /* envp = (argc + 1) ... */
+ "lsl %r2, %r2, $2\n" /* * 4 ... */
+ "add %r2, %r2, %r1\n" /* + argv */
+ "ldr %r3, 1f\n" /* r3 = &environ (see below) */
+ "str %r2, [r3]\n" /* store envp into environ */
- "mov r4, r2\n" // search for auxv (follows NULL after last env)
+ "mov r4, r2\n" /* search for auxv (follows NULL after last env) */
"0:\n"
- "mov r5, r4\n" // r5 = r4
- "add r4, r4, #4\n" // r4 += 4
- "ldr r5,[r5]\n" // r5 = *r5 = *(r4-4)
- "cmp r5, #0\n" // and stop at NULL after last env
+ "mov r5, r4\n" /* r5 = r4 */
+ "add r4, r4, #4\n" /* r4 += 4 */
+ "ldr r5,[r5]\n" /* r5 = *r5 = *(r4-4) */
+ "cmp r5, #0\n" /* and stop at NULL after last env */
"bne 0b\n"
- "ldr %r3, 2f\n" // r3 = &_auxv (low bits)
- "str r4, [r3]\n" // store r4 into _auxv
+ "ldr %r3, 2f\n" /* r3 = &_auxv (low bits) */
+ "str r4, [r3]\n" /* store r4 into _auxv */
- "mov %r3, $8\n" // AAPCS : sp must be 8-byte aligned in the
- "neg %r3, %r3\n" // callee, and bl doesn't push (lr=pc)
- "and %r3, %r3, %r1\n" // so we do sp = r1(=sp) & r3(=-8);
- "mov %sp, %r3\n" //
+ "mov %r3, $8\n" /* AAPCS : sp must be 8-byte aligned in the */
+ "neg %r3, %r3\n" /* callee, and bl doesn't push (lr=pc) */
+ "and %r3, %r3, %r1\n" /* so we do sp = r1(=sp) & r3(=-8); */
+ "mov %sp, %r3\n"
- "bl main\n" // main() returns the status code, we'll exit with it.
- "movs r7, $1\n" // NR_exit == 1
+ "bl main\n" /* main() returns the status code, we'll exit with it. */
+ "movs r7, $1\n" /* NR_exit == 1 */
"svc $0x00\n"
- ".align 2\n" // below are the pointers to a few variables
+ ".align 2\n" /* below are the pointers to a few variables */
"1:\n"
".word environ\n"
"2:\n"
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 08/11] tools/nolibc: mips: use C89 comment syntax
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
` (6 preceding siblings ...)
2023-04-06 21:54 ` [PATCH v2 07/11] tools/nolibc: arm: " Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 09/11] tools/nolibc: loongarch: " Thomas Weißschuh
` (3 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Most of nolibc is already using C89 comments.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/arch-mips.h | 56 ++++++++++++++++++++--------------------
1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/tools/include/nolibc/arch-mips.h b/tools/include/nolibc/arch-mips.h
index bf83432d23ed..8822f150e72f 100644
--- a/tools/include/nolibc/arch-mips.h
+++ b/tools/include/nolibc/arch-mips.h
@@ -183,42 +183,42 @@ const unsigned long *_auxv __attribute__((weak));
void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __start(void)
{
__asm__ volatile (
- //".set nomips16\n"
+ /*".set nomips16\n"*/
".set push\n"
".set noreorder\n"
".option pic0\n"
- //".ent __start\n"
- //"__start:\n"
- "lw $a0,($sp)\n" // argc was in the stack
- "addiu $a1, $sp, 4\n" // argv = sp + 4
- "sll $a2, $a0, 2\n" // a2 = argc * 4
- "add $a2, $a2, $a1\n" // envp = argv + 4*argc ...
- "addiu $a2, $a2, 4\n" // ... + 4
- "lui $a3, %hi(environ)\n" // load environ into a3 (hi)
- "addiu $a3, %lo(environ)\n" // load environ into a3 (lo)
- "sw $a2,($a3)\n" // store envp(a2) into environ
-
- "move $t0, $a2\n" // iterate t0 over envp, look for NULL
- "0:" // do {
- "lw $a3, ($t0)\n" // a3=*(t0);
- "bne $a3, $0, 0b\n" // } while (a3);
- "addiu $t0, $t0, 4\n" // delayed slot: t0+=4;
- "lui $a3, %hi(_auxv)\n" // load _auxv into a3 (hi)
- "addiu $a3, %lo(_auxv)\n" // load _auxv into a3 (lo)
- "sw $t0, ($a3)\n" // store t0 into _auxv
+ /*".ent __start\n"*/
+ /*"__start:\n"*/
+ "lw $a0,($sp)\n" /* argc was in the stack */
+ "addiu $a1, $sp, 4\n" /* argv = sp + 4 */
+ "sll $a2, $a0, 2\n" /* a2 = argc * 4 */
+ "add $a2, $a2, $a1\n" /* envp = argv + 4*argc ... */
+ "addiu $a2, $a2, 4\n" /* ... + 4 */
+ "lui $a3, %hi(environ)\n" /* load environ into a3 (hi) */
+ "addiu $a3, %lo(environ)\n" /* load environ into a3 (lo) */
+ "sw $a2,($a3)\n" /* store envp(a2) into environ */
+
+ "move $t0, $a2\n" /* iterate t0 over envp, look for NULL */
+ "0:" /* do { */
+ "lw $a3, ($t0)\n" /* a3=*(t0); */
+ "bne $a3, $0, 0b\n" /* } while (a3); */
+ "addiu $t0, $t0, 4\n" /* delayed slot: t0+=4; */
+ "lui $a3, %hi(_auxv)\n" /* load _auxv into a3 (hi) */
+ "addiu $a3, %lo(_auxv)\n" /* load _auxv into a3 (lo) */
+ "sw $t0, ($a3)\n" /* store t0 into _auxv */
"li $t0, -8\n"
- "and $sp, $sp, $t0\n" // sp must be 8-byte aligned
- "addiu $sp,$sp,-16\n" // the callee expects to save a0..a3 there!
- "jal main\n" // main() returns the status code, we'll exit with it.
- "nop\n" // delayed slot
- "move $a0, $v0\n" // retrieve 32-bit exit code from v0
- "li $v0, 4001\n" // NR_exit == 4001
+ "and $sp, $sp, $t0\n" /* sp must be 8-byte aligned */
+ "addiu $sp,$sp,-16\n" /* the callee expects to save a0..a3 there! */
+ "jal main\n" /* main() returns the status code, we'll exit with it. */
+ "nop\n" /* delayed slot */
+ "move $a0, $v0\n" /* retrieve 32-bit exit code from v0 */
+ "li $v0, 4001\n" /* NR_exit == 4001 */
"syscall\n"
- //".end __start\n"
+ /*".end __start\n"*/
".set pop\n"
);
__builtin_unreachable();
}
-#endif // _NOLIBC_ARCH_MIPS_H
+#endif /* _NOLIBC_ARCH_MIPS_H */
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 09/11] tools/nolibc: loongarch: use C89 comment syntax
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
` (7 preceding siblings ...)
2023-04-06 21:54 ` [PATCH v2 08/11] tools/nolibc: mips: " Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 10/11] tools/nolibc: " Thomas Weißschuh
` (2 subsequent siblings)
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Most of nolibc is already using C89 comments.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/arch-loongarch.h | 38 +++++++++++++++++------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/tools/include/nolibc/arch-loongarch.h b/tools/include/nolibc/arch-loongarch.h
index 029ee3cd6baf..ec3b46a991a9 100644
--- a/tools/include/nolibc/arch-loongarch.h
+++ b/tools/include/nolibc/arch-loongarch.h
@@ -158,7 +158,7 @@ const unsigned long *_auxv __attribute__((weak));
#define LONG_ADDI "addi.w"
#define LONG_SLL "slli.w"
#define LONG_BSTRINS "bstrins.w"
-#else // __loongarch_grlen == 64
+#else /* __loongarch_grlen == 64 */
#define LONGLOG "3"
#define SZREG "8"
#define REG_L "ld.d"
@@ -173,28 +173,28 @@ const unsigned long *_auxv __attribute__((weak));
void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) _start(void)
{
__asm__ volatile (
- REG_L " $a0, $sp, 0\n" // argc (a0) was in the stack
- LONG_ADDI " $a1, $sp, "SZREG"\n" // argv (a1) = sp + SZREG
- LONG_SLL " $a2, $a0, "LONGLOG"\n" // envp (a2) = SZREG*argc ...
- LONG_ADDI " $a2, $a2, "SZREG"\n" // + SZREG (skip null)
- LONG_ADD " $a2, $a2, $a1\n" // + argv
+ REG_L " $a0, $sp, 0\n" /* argc (a0) was in the stack */
+ LONG_ADDI " $a1, $sp, "SZREG"\n" /* argv (a1) = sp + SZREG */
+ LONG_SLL " $a2, $a0, "LONGLOG"\n" /* envp (a2) = SZREG*argc ... */
+ LONG_ADDI " $a2, $a2, "SZREG"\n" /* + SZREG (skip null) */
+ LONG_ADD " $a2, $a2, $a1\n" /* + argv */
- "move $a3, $a2\n" // iterate a3 over envp to find auxv (after NULL)
- "0:\n" // do {
- REG_L " $a4, $a3, 0\n" // a4 = *a3;
- LONG_ADDI " $a3, $a3, "SZREG"\n" // a3 += sizeof(void*);
- "bne $a4, $zero, 0b\n" // } while (a4);
- "la.pcrel $a4, _auxv\n" // a4 = &_auxv
- LONG_S " $a3, $a4, 0\n" // store a3 into _auxv
+ "move $a3, $a2\n" /* iterate a3 over envp to find auxv (after NULL) */
+ "0:\n" /* do { */
+ REG_L " $a4, $a3, 0\n" /* a4 = *a3; */
+ LONG_ADDI " $a3, $a3, "SZREG"\n" /* a3 += sizeof(void*); */
+ "bne $a4, $zero, 0b\n" /* } while (a4); */
+ "la.pcrel $a4, _auxv\n" /* a4 = &_auxv */
+ LONG_S " $a3, $a4, 0\n" /* store a3 into _auxv */
- "la.pcrel $a3, environ\n" // a3 = &environ
- LONG_S " $a2, $a3, 0\n" // store envp(a2) into environ
- LONG_BSTRINS " $sp, $zero, 3, 0\n" // sp must be 16-byte aligned
- "bl main\n" // main() returns the status code, we'll exit with it.
- "li.w $a7, 93\n" // NR_exit == 93
+ "la.pcrel $a3, environ\n" /* a3 = &environ */
+ LONG_S " $a2, $a3, 0\n" /* store envp(a2) into environ */
+ LONG_BSTRINS " $sp, $zero, 3, 0\n" /* sp must be 16-byte aligned */
+ "bl main\n" /* main() returns the status code, we'll exit with it. */
+ "li.w $a7, 93\n" /* NR_exit == 93 */
"syscall 0\n"
);
__builtin_unreachable();
}
-#endif // _NOLIBC_ARCH_LOONGARCH_H
+#endif /* _NOLIBC_ARCH_LOONGARCH_H */
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 10/11] tools/nolibc: use C89 comment syntax
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
` (8 preceding siblings ...)
2023-04-06 21:54 ` [PATCH v2 09/11] tools/nolibc: loongarch: " Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 11/11] tools/nolibc: validate C89 compatibility Thomas Weißschuh
2023-04-09 9:28 ` [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Willy Tarreau
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Most of nolibc is already using C89 comments.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/include/nolibc/stackprotector.h | 4 ++--
tools/include/nolibc/sys.h | 8 ++++----
tools/testing/selftests/nolibc/nolibc-test.c | 12 ++++++------
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/tools/include/nolibc/stackprotector.h b/tools/include/nolibc/stackprotector.h
index d119cbbbc256..77e5251c4490 100644
--- a/tools/include/nolibc/stackprotector.h
+++ b/tools/include/nolibc/stackprotector.h
@@ -48,6 +48,6 @@ void __stack_chk_init(void)
/* a bit more randomness in case getrandom() fails */
__stack_chk_guard ^= (uintptr_t) &__stack_chk_guard;
}
-#endif // defined(NOLIBC_STACKPROTECTOR)
+#endif /* defined(NOLIBC_STACKPROTECTOR) */
-#endif // _NOLIBC_STACKPROTECTOR_H
+#endif /* _NOLIBC_STACKPROTECTOR_H */
diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h
index bea9760dbd16..1b9b91cd8b57 100644
--- a/tools/include/nolibc/sys.h
+++ b/tools/include/nolibc/sys.h
@@ -12,15 +12,15 @@
/* system includes */
#include <asm/unistd.h>
-#include <asm/signal.h> // for SIGCHLD
+#include <asm/signal.h> /* for SIGCHLD */
#include <asm/ioctls.h>
#include <asm/mman.h>
#include <linux/fs.h>
#include <linux/loop.h>
#include <linux/time.h>
#include <linux/auxvec.h>
-#include <linux/fcntl.h> // for O_* and AT_*
-#include <linux/stat.h> // for statx()
+#include <linux/fcntl.h> /* for O_* and AT_* */
+#include <linux/stat.h> /* for statx() */
#include "arch.h"
#include "errno.h"
@@ -322,7 +322,7 @@ static __attribute__((noreturn,unused))
void sys_exit(int status)
{
my_syscall1(__NR_exit, status & 255);
- while(1); // shut the "noreturn" warnings.
+ while(1); /* shut the "noreturn" warnings. */
}
static __attribute__((noreturn,unused))
diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
index e692be98973a..f06b38cfe38a 100644
--- a/tools/testing/selftests/nolibc/nolibc-test.c
+++ b/tools/testing/selftests/nolibc/nolibc-test.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0
+/* SPDX-License-Identifier: GPL-2.0 */
#define _GNU_SOURCE
@@ -46,8 +46,8 @@ char **environ;
/* definition of a series of tests */
struct test {
- const char *name; // test name
- int (*func)(int min, int max); // handler
+ const char *name; /* test name */
+ int (*func)(int min, int max); /* handler */
};
#ifndef _NOLIBC_STDLIB_H
@@ -494,7 +494,7 @@ int run_syscall(int min, int max)
euid0 = geteuid() == 0;
for (test = min; test >= 0 && test <= max; test++) {
- int llen = 0; // line length
+ int llen = 0; /* line length */
/* avoid leaving empty lines below, this will insert holes into
* test numbers.
@@ -584,7 +584,7 @@ int run_stdlib(int min, int max)
void *p1, *p2;
for (test = min; test >= 0 && test <= max; test++) {
- int llen = 0; // line length
+ int llen = 0; /* line length */
/* avoid leaving empty lines below, this will insert holes into
* test numbers.
@@ -731,7 +731,7 @@ static int run_vfprintf(int min, int max)
void *p1, *p2;
for (test = min; test >= 0 && test <= max; test++) {
- int llen = 0; // line length
+ int llen = 0; /* line length */
/* avoid leaving empty lines below, this will insert holes into
* test numbers.
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 11/11] tools/nolibc: validate C89 compatibility
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
` (9 preceding siblings ...)
2023-04-06 21:54 ` [PATCH v2 10/11] tools/nolibc: " Thomas Weißschuh
@ 2023-04-06 21:54 ` Thomas Weißschuh
2023-04-09 9:28 ` [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Willy Tarreau
11 siblings, 0 replies; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-06 21:54 UTC (permalink / raw)
To: Willy Tarreau, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
To make sure no non-compatible changes are introduced accidentally
validate the language standard when building the tests.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
tools/testing/selftests/nolibc/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 0cbe13809b37..423d22f353a0 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -83,7 +83,7 @@ CFLAGS_STKP_i386 = $(CFLAGS_STACKPROTECTOR)
CFLAGS_STKP_x86_64 = $(CFLAGS_STACKPROTECTOR)
CFLAGS_STKP_x86 = $(CFLAGS_STACKPROTECTOR)
CFLAGS_s390 = -m64
-CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables \
+CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables -std=c89 \
$(call cc-option,-fno-stack-protector) \
$(CFLAGS_STKP_$(ARCH)) $(CFLAGS_$(ARCH))
LDFLAGS := -s
--
2.40.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
` (10 preceding siblings ...)
2023-04-06 21:54 ` [PATCH v2 11/11] tools/nolibc: validate C89 compatibility Thomas Weißschuh
@ 2023-04-09 9:28 ` Willy Tarreau
2023-04-15 14:47 ` Willy Tarreau
11 siblings, 1 reply; 16+ messages in thread
From: Willy Tarreau @ 2023-04-09 9:28 UTC (permalink / raw)
To: Thomas Weißschuh; +Cc: Shuah Khan, linux-kernel, linux-kselftest
Hi Thomas,
On Thu, Apr 06, 2023 at 09:54:46PM +0000, Thomas Weißschuh wrote:
> This series replaces the C99 compatibility patch. (See v1 link below).
> After the discussion about support C99 and/or GNU89 I came to the
> conclusion supporting straight C89 is not very hard.
>
> Instead of validating both C99 and GNU89 in some awkward way only for
> somebody requesting true C89 support let's just do it this way.
>
> Feel free to squash all the comment syntax patches together if you
> prefer.
I gave it some thought, at first considering that going lower than GNU89
was possibly not very useful, but given that the changes are very small
in the end (mostly comments formating), I think that you're right. The
cost of reaching this level of portability is basically zero once the
patch is applied so I think it's worth doing it now. However I think I
will indeed squash all the comments patch together as you suggest.
Thank you!
Willy
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility
2023-04-09 9:28 ` [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Willy Tarreau
@ 2023-04-15 14:47 ` Willy Tarreau
2023-04-15 15:15 ` Thomas Weißschuh
0 siblings, 1 reply; 16+ messages in thread
From: Willy Tarreau @ 2023-04-15 14:47 UTC (permalink / raw)
To: Thomas Weißschuh; +Cc: Shuah Khan, linux-kernel, linux-kselftest
Hi Thomas,
On Sun, Apr 09, 2023 at 11:28:46AM +0200, Willy Tarreau wrote:
> Hi Thomas,
>
> On Thu, Apr 06, 2023 at 09:54:46PM +0000, Thomas Weißschuh wrote:
> > This series replaces the C99 compatibility patch. (See v1 link below).
> > After the discussion about support C99 and/or GNU89 I came to the
> > conclusion supporting straight C89 is not very hard.
> >
> > Instead of validating both C99 and GNU89 in some awkward way only for
> > somebody requesting true C89 support let's just do it this way.
> >
> > Feel free to squash all the comment syntax patches together if you
> > prefer.
>
> I gave it some thought, at first considering that going lower than GNU89
> was possibly not very useful, but given that the changes are very small
> in the end (mostly comments formating), I think that you're right. The
> cost of reaching this level of portability is basically zero once the
> patch is applied so I think it's worth doing it now. However I think I
> will indeed squash all the comments patch together as you suggest.
I've now squashed the ones about comments together, fixed the declaration
inside the for statement in nolibc-test and tested with gcc 4.7 & 4.8 and
confirmed it works as expected. I've queued it there for now:
https://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git/log/?h=20230415-nolibc-updates-4a
Thank you!
Willy
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility
2023-04-15 14:47 ` Willy Tarreau
@ 2023-04-15 15:15 ` Thomas Weißschuh
2023-04-15 17:12 ` Willy Tarreau
0 siblings, 1 reply; 16+ messages in thread
From: Thomas Weißschuh @ 2023-04-15 15:15 UTC (permalink / raw)
To: Willy Tarreau; +Cc: Shuah Khan, linux-kernel, linux-kselftest
On 2023-04-15 16:47:03+0200, Willy Tarreau wrote:
> On Sun, Apr 09, 2023 at 11:28:46AM +0200, Willy Tarreau wrote:
> > On Thu, Apr 06, 2023 at 09:54:46PM +0000, Thomas Weißschuh wrote:
> > > This series replaces the C99 compatibility patch. (See v1 link below).
> > > After the discussion about support C99 and/or GNU89 I came to the
> > > conclusion supporting straight C89 is not very hard.
> > >
> > > Instead of validating both C99 and GNU89 in some awkward way only for
> > > somebody requesting true C89 support let's just do it this way.
> > >
> > > Feel free to squash all the comment syntax patches together if you
> > > prefer.
> >
> > I gave it some thought, at first considering that going lower than GNU89
> > was possibly not very useful, but given that the changes are very small
> > in the end (mostly comments formating), I think that you're right. The
> > cost of reaching this level of portability is basically zero once the
> > patch is applied so I think it's worth doing it now. However I think I
> > will indeed squash all the comments patch together as you suggest.
>
> I've now squashed the ones about comments together, fixed the declaration
> inside the for statement in nolibc-test and tested with gcc 4.7 & 4.8 and
> confirmed it works as expected. I've queued it there for now:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git/log/?h=20230415-nolibc-updates-4a
Thanks!
I noticed today that I did not adapt the comments in arch-s390.h;
because the start() comments were already correct.
But the last line of arch-s390.h still contains a C99 comment.
Do you want me to send a patch or could you just push one?
(Or fold it into my patch)
Thanks,
Thomas
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility
2023-04-15 15:15 ` Thomas Weißschuh
@ 2023-04-15 17:12 ` Willy Tarreau
0 siblings, 0 replies; 16+ messages in thread
From: Willy Tarreau @ 2023-04-15 17:12 UTC (permalink / raw)
To: Thomas Weißschuh; +Cc: Shuah Khan, linux-kernel, linux-kselftest
On Sat, Apr 15, 2023 at 05:15:27PM +0200, Thomas Weißschuh wrote:
> On 2023-04-15 16:47:03+0200, Willy Tarreau wrote:
> > On Sun, Apr 09, 2023 at 11:28:46AM +0200, Willy Tarreau wrote:
> > > On Thu, Apr 06, 2023 at 09:54:46PM +0000, Thomas Weißschuh wrote:
> > > > This series replaces the C99 compatibility patch. (See v1 link below).
> > > > After the discussion about support C99 and/or GNU89 I came to the
> > > > conclusion supporting straight C89 is not very hard.
> > > >
> > > > Instead of validating both C99 and GNU89 in some awkward way only for
> > > > somebody requesting true C89 support let's just do it this way.
> > > >
> > > > Feel free to squash all the comment syntax patches together if you
> > > > prefer.
> > >
> > > I gave it some thought, at first considering that going lower than GNU89
> > > was possibly not very useful, but given that the changes are very small
> > > in the end (mostly comments formating), I think that you're right. The
> > > cost of reaching this level of portability is basically zero once the
> > > patch is applied so I think it's worth doing it now. However I think I
> > > will indeed squash all the comments patch together as you suggest.
> >
> > I've now squashed the ones about comments together, fixed the declaration
> > inside the for statement in nolibc-test and tested with gcc 4.7 & 4.8 and
> > confirmed it works as expected. I've queued it there for now:
> >
> > https://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git/log/?h=20230415-nolibc-updates-4a
>
> Thanks!
>
> I noticed today that I did not adapt the comments in arch-s390.h;
> because the start() comments were already correct.
>
> But the last line of arch-s390.h still contains a C99 comment.
ah, I must have missed it because I checked using git grep //.
> Do you want me to send a patch or could you just push one?
> (Or fold it into my patch)
I'll do it and force-push. Thanks for checking and notifying me!
Cheers,
Willy
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2023-04-15 17:12 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-06 21:54 [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 01/11] tools/nolibc: use standard __asm__ statements Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 02/11] tools/nolibc: use __inline__ syntax Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 03/11] tools/nolibc: i386: use C89 comment syntax Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 04/11] tools/nolibc: x86_64: " Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 05/11] tools/nolibc: riscv: " Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 06/11] tools/nolibc: aarch64: " Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 07/11] tools/nolibc: arm: " Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 08/11] tools/nolibc: mips: " Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 09/11] tools/nolibc: loongarch: " Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 10/11] tools/nolibc: " Thomas Weißschuh
2023-04-06 21:54 ` [PATCH v2 11/11] tools/nolibc: validate C89 compatibility Thomas Weißschuh
2023-04-09 9:28 ` [PATCH v2 00/11] tools/nolibc: -std=c89 compatibility Willy Tarreau
2023-04-15 14:47 ` Willy Tarreau
2023-04-15 15:15 ` Thomas Weißschuh
2023-04-15 17:12 ` Willy Tarreau
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox