diff --git a/libc/arch-common/bionic/asm_multiarch.h b/libc/arch-common/bionic/asm_multiarch.h index 85e1b57b9..91cb8af4b 100644 --- a/libc/arch-common/bionic/asm_multiarch.h +++ b/libc/arch-common/bionic/asm_multiarch.h @@ -28,9 +28,9 @@ #ifdef __LP64__ # define ASM_PTR_SIZE(x) .quad x -# define ASM_ALIGN(x) +# define ASM_ALIGN_TO_PTR_SIZE .balign 8 #else # define ASM_PTR_SIZE(x) .long x -# define ASM_ALIGN(x) .align x +# define ASM_ALIGN_TO_PTR_SIZE .balign 4 #endif diff --git a/libc/arch-common/bionic/crtend.S b/libc/arch-common/bionic/crtend.S index a4cf8ded2..87d1120ab 100644 --- a/libc/arch-common/bionic/crtend.S +++ b/libc/arch-common/bionic/crtend.S @@ -29,12 +29,15 @@ #include "asm_multiarch.h" .section .preinit_array, "aw" + ASM_ALIGN_TO_PTR_SIZE ASM_PTR_SIZE(0) .section .init_array, "aw" + ASM_ALIGN_TO_PTR_SIZE ASM_PTR_SIZE(0) .section .fini_array, "aw" + ASM_ALIGN_TO_PTR_SIZE ASM_PTR_SIZE(0) #if defined(__linux__) && defined(__ELF__) @@ -42,7 +45,9 @@ #endif #if defined(__i386__) || defined(__x86_64__) .section .eh_frame,"a",@progbits - ASM_ALIGN(4) +#if defined(__i386__) + .balign 4 +#endif .type __FRAME_END__, @object .size __FRAME_END__, 4 __FRAME_END__: diff --git a/libc/arch-common/bionic/crtend_so.S b/libc/arch-common/bionic/crtend_so.S index f74510995..e7b8cac3e 100644 --- a/libc/arch-common/bionic/crtend_so.S +++ b/libc/arch-common/bionic/crtend_so.S @@ -26,22 +26,14 @@ * SUCH DAMAGE. */ -#include "asm_multiarch.h" - -#ifndef __arm__ - .section .init_array, "aw" - ASM_PTR_SIZE(0) - - .section .fini_array, "aw" - ASM_PTR_SIZE(0) -#endif - #if defined(__linux__) && defined(__ELF__) .section .note.GNU-stack,"",%progbits #endif #if defined(__i386__) || defined(__x86_64__) .section .eh_frame,"a",@progbits - ASM_ALIGN(4) +#if defined(__i386__) + .balign 4 +#endif .type __FRAME_END__, @object .size __FRAME_END__, 4 __FRAME_END__: