From: Frank Mehnert frank.mehnert@kernkonzept.com
In a .p2align directive, the maximum number of bytes to skip shall be at most the intended alignment minus 1. Certain assemblers warn otherwise:
spn.S:97:14: warning: maximum bytes expression exceeds alignment and has no effect .p2align 3,,8 ^
Change-Id: I5ad48f6f3c3036d8d33d3710ed8d5b5a35bf1fea Signed-off-by: Marcus Haehnel marcus.haehnel@kernkonzept.com --- libc/string/x86_64/strcat.S | 2 +- libc/string/x86_64/strcspn.S | 2 +- libc/string/x86_64/strlen.S | 2 +- libc/string/x86_64/strspn.S | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libc/string/x86_64/strcat.S b/libc/string/x86_64/strcat.S index 55e09e5f1..209e19062 100644 --- a/libc/string/x86_64/strcat.S +++ b/libc/string/x86_64/strcat.S @@ -106,7 +106,7 @@ ENTRY (BP_SYM (strcat))
/* Align, it is a jump target. */ /* Next 3 insns are 8 bytes total, make sure we decode them in one go */ - .p2align 3,,8 + .p2align 3,,7 3: subq $8,%rax /* correct pointer increment. */
diff --git a/libc/string/x86_64/strcspn.S b/libc/string/x86_64/strcspn.S index 7a06c8867..5ef565db7 100644 --- a/libc/string/x86_64/strcspn.S +++ b/libc/string/x86_64/strcspn.S @@ -94,7 +94,7 @@ L(1): leaq -4(%rdx), %rax /* prepare loop */ /* but it will also align entire function to 16 bytes, */ /* potentially creating largish padding at link time. */ /* We are aligning to 8 bytes instead: */ - .p2align 3,,8 + .p2align 3,,7
L(3): addq $4, %rax /* adjust pointer for full loop round */
diff --git a/libc/string/x86_64/strlen.S b/libc/string/x86_64/strlen.S index 9e84326c2..2fe2f58b2 100644 --- a/libc/string/x86_64/strlen.S +++ b/libc/string/x86_64/strlen.S @@ -102,7 +102,7 @@ ENTRY (strlen)
/* Align, it is a jump target. */ /* Next 3 insns are 8 bytes total, make sure we decode them in one go */ - .p2align 3,,8 + .p2align 3,,7 3: subq $8,%rax /* correct pointer increment. */
diff --git a/libc/string/x86_64/strspn.S b/libc/string/x86_64/strspn.S index 366377649..8dc42656b 100644 --- a/libc/string/x86_64/strspn.S +++ b/libc/string/x86_64/strspn.S @@ -89,7 +89,7 @@ L(1): leaq -4(%rdx), %rax /* prepare loop */ /* but it will also align entire function to 16 bytes, */ /* potentially creating largish padding at link time. */ /* We are aligning to 8 bytes instead: */ - .p2align 3,,8 + .p2align 3,,7 L(3): addq $4, %rax /* adjust pointer for full loop round */
Ping? :-)
Frank
On Dienstag, 28. Januar 2025 14:31:02 MEZ Marcus Haehnel wrote:
From: Frank Mehnert frank.mehnert@kernkonzept.com
In a .p2align directive, the maximum number of bytes to skip shall be at most the intended alignment minus 1. Certain assemblers warn otherwise:
spn.S:97:14: warning: maximum bytes expression exceeds alignment and has no effect
.p2align 3,,8 ^
Change-Id: I5ad48f6f3c3036d8d33d3710ed8d5b5a35bf1fea Signed-off-by: Marcus Haehnel marcus.haehnel@kernkonzept.com
libc/string/x86_64/strcat.S | 2 +- libc/string/x86_64/strcspn.S | 2 +- libc/string/x86_64/strlen.S | 2 +- libc/string/x86_64/strspn.S | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libc/string/x86_64/strcat.S b/libc/string/x86_64/strcat.S index 55e09e5f1..209e19062 100644 --- a/libc/string/x86_64/strcat.S +++ b/libc/string/x86_64/strcat.S @@ -106,7 +106,7 @@ ENTRY (BP_SYM (strcat))
/* Align, it is a jump target. */ /* Next 3 insns are 8 bytes total, make sure we decode them in one go */
- .p2align 3,,8
- .p2align 3,,7
3: subq $8,%rax /* correct pointer increment. */
diff --git a/libc/string/x86_64/strcspn.S b/libc/string/x86_64/strcspn.S index 7a06c8867..5ef565db7 100644 --- a/libc/string/x86_64/strcspn.S +++ b/libc/string/x86_64/strcspn.S @@ -94,7 +94,7 @@ L(1): leaq -4(%rdx), %rax /* prepare loop */ /* but it will also align entire function to 16 bytes, */ /* potentially creating largish padding at link time. */ /* We are aligning to 8 bytes instead: */
- .p2align 3,,8
- .p2align 3,,7
L(3): addq $4, %rax /* adjust pointer for full loop round */
diff --git a/libc/string/x86_64/strlen.S b/libc/string/x86_64/strlen.S index 9e84326c2..2fe2f58b2 100644 --- a/libc/string/x86_64/strlen.S +++ b/libc/string/x86_64/strlen.S @@ -102,7 +102,7 @@ ENTRY (strlen)
/* Align, it is a jump target. */ /* Next 3 insns are 8 bytes total, make sure we decode them in one go */
- .p2align 3,,8
- .p2align 3,,7
3: subq $8,%rax /* correct pointer increment. */
diff --git a/libc/string/x86_64/strspn.S b/libc/string/x86_64/strspn.S index 366377649..8dc42656b 100644 --- a/libc/string/x86_64/strspn.S +++ b/libc/string/x86_64/strspn.S @@ -89,7 +89,7 @@ L(1): leaq -4(%rdx), %rax /* prepare loop */ /* but it will also align entire function to 16 bytes, */ /* potentially creating largish padding at link time. */ /* We are aligning to 8 bytes instead: */
- .p2align 3,,8
- .p2align 3,,7
L(3): addq $4, %rax /* adjust pointer for full loop round */
Hi Frank,
thanks for the reminder. Patch pushed.
best regards Waldemar
Frank Mehnert wrote,
Ping? :-)
Frank
On Dienstag, 28. Januar 2025 14:31:02 MEZ Marcus Haehnel wrote:
From: Frank Mehnert frank.mehnert@kernkonzept.com
In a .p2align directive, the maximum number of bytes to skip shall be at most the intended alignment minus 1. Certain assemblers warn otherwise:
spn.S:97:14: warning: maximum bytes expression exceeds alignment and has no effect
.p2align 3,,8 ^
Change-Id: I5ad48f6f3c3036d8d33d3710ed8d5b5a35bf1fea Signed-off-by: Marcus Haehnel marcus.haehnel@kernkonzept.com
libc/string/x86_64/strcat.S | 2 +- libc/string/x86_64/strcspn.S | 2 +- libc/string/x86_64/strlen.S | 2 +- libc/string/x86_64/strspn.S | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libc/string/x86_64/strcat.S b/libc/string/x86_64/strcat.S index 55e09e5f1..209e19062 100644 --- a/libc/string/x86_64/strcat.S +++ b/libc/string/x86_64/strcat.S @@ -106,7 +106,7 @@ ENTRY (BP_SYM (strcat))
/* Align, it is a jump target. */ /* Next 3 insns are 8 bytes total, make sure we decode them in one go */
- .p2align 3,,8
- .p2align 3,,7
3: subq $8,%rax /* correct pointer increment. */
diff --git a/libc/string/x86_64/strcspn.S b/libc/string/x86_64/strcspn.S index 7a06c8867..5ef565db7 100644 --- a/libc/string/x86_64/strcspn.S +++ b/libc/string/x86_64/strcspn.S @@ -94,7 +94,7 @@ L(1): leaq -4(%rdx), %rax /* prepare loop */ /* but it will also align entire function to 16 bytes, */ /* potentially creating largish padding at link time. */ /* We are aligning to 8 bytes instead: */
- .p2align 3,,8
- .p2align 3,,7
L(3): addq $4, %rax /* adjust pointer for full loop round */
diff --git a/libc/string/x86_64/strlen.S b/libc/string/x86_64/strlen.S index 9e84326c2..2fe2f58b2 100644 --- a/libc/string/x86_64/strlen.S +++ b/libc/string/x86_64/strlen.S @@ -102,7 +102,7 @@ ENTRY (strlen)
/* Align, it is a jump target. */ /* Next 3 insns are 8 bytes total, make sure we decode them in one go */
- .p2align 3,,8
- .p2align 3,,7
3: subq $8,%rax /* correct pointer increment. */
diff --git a/libc/string/x86_64/strspn.S b/libc/string/x86_64/strspn.S index 366377649..8dc42656b 100644 --- a/libc/string/x86_64/strspn.S +++ b/libc/string/x86_64/strspn.S @@ -89,7 +89,7 @@ L(1): leaq -4(%rdx), %rax /* prepare loop */ /* but it will also align entire function to 16 bytes, */ /* potentially creating largish padding at link time. */ /* We are aligning to 8 bytes instead: */
- .p2align 3,,8
- .p2align 3,,7
L(3): addq $4, %rax /* adjust pointer for full loop round */
-- Dr.-Ing. Frank Mehnert, frank.mehnert@kernkonzept.com, +49-351-41 883 224
Kernkonzept GmbH. Sitz: Dresden. Amtsgericht Dresden, HRB 31129. Geschäftsführer: Dr.-Ing. Michael Hohmuth
devel mailing list -- devel@uclibc-ng.org To unsubscribe send an email to devel-leave@uclibc-ng.org