summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2015-09-29 16:09:58 +0000
committerkib <kib@FreeBSD.org>2015-09-29 16:09:58 +0000
commit2b6ac44d5d1daf1a746ac5b9a9c426b621aaa82b (patch)
tree6f88f0773e9f00f362b1ad72de44af830fd0278b
parent91736e0038dbbc345d1b904eb7310f56932acc32 (diff)
downloadFreeBSD-src-2b6ac44d5d1daf1a746ac5b9a9c426b621aaa82b.zip
FreeBSD-src-2b6ac44d5d1daf1a746ac5b9a9c426b621aaa82b.tar.gz
Annotate arm userspace assembler sources stating their tolerance to
the non-executable stack. Reviewed by: andrew Sponsored by: The FreeBSD Foundation
-rw-r--r--contrib/compiler-rt/lib/builtins/arm/aeabi_memcmp.S2
-rw-r--r--contrib/compiler-rt/lib/builtins/arm/aeabi_memcpy.S2
-rw-r--r--contrib/compiler-rt/lib/builtins/arm/aeabi_memmove.S2
-rw-r--r--contrib/compiler-rt/lib/builtins/arm/aeabi_memset.S1
-rw-r--r--contrib/gcc/config/arm/crti.asm2
-rw-r--r--contrib/gcc/config/arm/crtn.asm2
-rw-r--r--contrib/gcc/config/arm/lib1funcs.asm2
-rw-r--r--lib/csu/arm/crti.S1
-rw-r--r--lib/csu/arm/crtn.S2
-rw-r--r--lib/libc/arm/aeabi/aeabi_asm_double.S2
-rw-r--r--lib/libc/arm/aeabi/aeabi_asm_float.S2
-rw-r--r--lib/libc/arm/aeabi/aeabi_vfp_double.S1
-rw-r--r--lib/libc/arm/aeabi/aeabi_vfp_float.S1
-rw-r--r--lib/libc/arm/gen/__aeabi_read_tp.S1
-rw-r--r--lib/libc/arm/gen/_ctx_start.S2
-rw-r--r--lib/libc/arm/gen/_setjmp.S2
-rw-r--r--lib/libc/arm/gen/alloca.S2
-rw-r--r--lib/libc/arm/gen/divsi3.S2
-rw-r--r--lib/libc/arm/gen/setjmp.S2
-rw-r--r--lib/libc/arm/gen/sigsetjmp.S2
-rw-r--r--lib/libc/arm/string/ffs.S2
-rw-r--r--lib/libc/arm/string/memcmp.S2
-rw-r--r--lib/libc/arm/string/memcpy_arm.S2
-rw-r--r--lib/libc/arm/string/memcpy_xscale.S2
-rw-r--r--lib/libc/arm/string/memmove.S2
-rw-r--r--lib/libc/arm/string/memset.S2
-rw-r--r--lib/libc/arm/string/strcmp.S2
-rw-r--r--lib/libc/arm/string/strlen.S2
-rw-r--r--lib/libc/arm/string/strncmp.S2
-rw-r--r--lib/libc/arm/sys/Ovfork.S2
-rw-r--r--lib/libc/arm/sys/brk.S2
-rw-r--r--lib/libc/arm/sys/cerror.S2
-rw-r--r--lib/libc/arm/sys/pipe.S2
-rw-r--r--lib/libc/arm/sys/ptrace.S2
-rw-r--r--lib/libc/arm/sys/sbrk.S2
-rw-r--r--lib/libc/arm/sys/shmat.S2
-rw-r--r--lib/libc/arm/sys/sigreturn.S2
-rw-r--r--lib/libc/arm/sys/syscall.S2
-rw-r--r--lib/libc/sys/Makefile.inc2
-rw-r--r--lib/libcompiler_rt/Makefile2
-rw-r--r--libexec/rtld-elf/arm/rtld_start.S1
41 files changed, 74 insertions, 2 deletions
diff --git a/contrib/compiler-rt/lib/builtins/arm/aeabi_memcmp.S b/contrib/compiler-rt/lib/builtins/arm/aeabi_memcmp.S
index 051ce43..fa69327 100644
--- a/contrib/compiler-rt/lib/builtins/arm/aeabi_memcmp.S
+++ b/contrib/compiler-rt/lib/builtins/arm/aeabi_memcmp.S
@@ -18,3 +18,5 @@ END_COMPILERRT_FUNCTION(__aeabi_memcmp)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcmp4, __aeabi_memcmp)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcmp8, __aeabi_memcmp)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/contrib/compiler-rt/lib/builtins/arm/aeabi_memcpy.S b/contrib/compiler-rt/lib/builtins/arm/aeabi_memcpy.S
index cf02332..35b8558 100644
--- a/contrib/compiler-rt/lib/builtins/arm/aeabi_memcpy.S
+++ b/contrib/compiler-rt/lib/builtins/arm/aeabi_memcpy.S
@@ -18,3 +18,5 @@ END_COMPILERRT_FUNCTION(__aeabi_memcpy)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcpy4, __aeabi_memcpy)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcpy8, __aeabi_memcpy)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/contrib/compiler-rt/lib/builtins/arm/aeabi_memmove.S b/contrib/compiler-rt/lib/builtins/arm/aeabi_memmove.S
index 4dda06f..2f9f789 100644
--- a/contrib/compiler-rt/lib/builtins/arm/aeabi_memmove.S
+++ b/contrib/compiler-rt/lib/builtins/arm/aeabi_memmove.S
@@ -18,3 +18,5 @@ END_COMPILERRT_FUNCTION(__aeabi_memmove)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memmove4, __aeabi_memmove)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memmove8, __aeabi_memmove)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/contrib/compiler-rt/lib/builtins/arm/aeabi_memset.S b/contrib/compiler-rt/lib/builtins/arm/aeabi_memset.S
index c8b49c7..f2342f0 100644
--- a/contrib/compiler-rt/lib/builtins/arm/aeabi_memset.S
+++ b/contrib/compiler-rt/lib/builtins/arm/aeabi_memset.S
@@ -32,3 +32,4 @@ END_COMPILERRT_FUNCTION(__aeabi_memclr)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr4, __aeabi_memclr)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr8, __aeabi_memclr)
+ .section .note.GNU-stack,"",%progbits
diff --git a/contrib/gcc/config/arm/crti.asm b/contrib/gcc/config/arm/crti.asm
index 166a3ce..8df00d2 100644
--- a/contrib/gcc/config/arm/crti.asm
+++ b/contrib/gcc/config/arm/crti.asm
@@ -60,6 +60,8 @@
.file "crti.asm"
+ .section .note.GNU-stack,"",%progbits
+
.section ".init"
.align 2
.global _init
diff --git a/contrib/gcc/config/arm/crtn.asm b/contrib/gcc/config/arm/crtn.asm
index 360afae..1947919 100644
--- a/contrib/gcc/config/arm/crtn.asm
+++ b/contrib/gcc/config/arm/crtn.asm
@@ -68,6 +68,8 @@
.file "crtn.asm"
+ .section .note.GNU-stack,"",%progbits
+
.section ".init"
;;
FUNC_END
diff --git a/contrib/gcc/config/arm/lib1funcs.asm b/contrib/gcc/config/arm/lib1funcs.asm
index 73c453d..8a48b25 100644
--- a/contrib/gcc/config/arm/lib1funcs.asm
+++ b/contrib/gcc/config/arm/lib1funcs.asm
@@ -1305,3 +1305,5 @@ LSYM(Lchange_\register):
#include "ieee754-sf.S"
#include "bpabi.S"
#endif /* __symbian__ */
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/csu/arm/crti.S b/lib/csu/arm/crti.S
index 40e83bb..c6c37eb 100644
--- a/lib/csu/arm/crti.S
+++ b/lib/csu/arm/crti.S
@@ -19,3 +19,4 @@ _fini:
stmdb sp!, {fp, ip, lr, pc}
sub fp, ip, #4
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/csu/arm/crtn.S b/lib/csu/arm/crtn.S
index 962f0ed..25bbd57 100644
--- a/lib/csu/arm/crtn.S
+++ b/lib/csu/arm/crtn.S
@@ -8,3 +8,5 @@ __FBSDID("$FreeBSD$");
.section .fini,"ax",%progbits
ldmea fp, {fp, sp, pc}
mov pc, lr
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/aeabi/aeabi_asm_double.S b/lib/libc/arm/aeabi/aeabi_asm_double.S
index 7a5af82..ced4d78 100644
--- a/lib/libc/arm/aeabi/aeabi_asm_double.S
+++ b/lib/libc/arm/aeabi/aeabi_asm_double.S
@@ -117,3 +117,5 @@ ENTRY(__aeabi_cdcmpeq)
msr cpsr_c, ip
RET
END(__aeabi_cdcmpeq)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/aeabi/aeabi_asm_float.S b/lib/libc/arm/aeabi/aeabi_asm_float.S
index e05daa5..de6b1c8 100644
--- a/lib/libc/arm/aeabi/aeabi_asm_float.S
+++ b/lib/libc/arm/aeabi/aeabi_asm_float.S
@@ -108,3 +108,5 @@ ENTRY(__aeabi_cfcmpeq)
msr cpsr_c, ip
RET
END(__aeabi_cfcmpeq)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/aeabi/aeabi_vfp_double.S b/lib/libc/arm/aeabi/aeabi_vfp_double.S
index aae49f8..be4309d 100644
--- a/lib/libc/arm/aeabi/aeabi_vfp_double.S
+++ b/lib/libc/arm/aeabi/aeabi_vfp_double.S
@@ -201,3 +201,4 @@ AEABI_ENTRY(dsub)
RET
AEABI_END(dsub)
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/aeabi/aeabi_vfp_float.S b/lib/libc/arm/aeabi/aeabi_vfp_float.S
index 7de8daf..c9df41c 100644
--- a/lib/libc/arm/aeabi/aeabi_vfp_float.S
+++ b/lib/libc/arm/aeabi/aeabi_vfp_float.S
@@ -188,3 +188,4 @@ AEABI_ENTRY(fsub)
RET
AEABI_END(fsub)
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/gen/__aeabi_read_tp.S b/lib/libc/arm/gen/__aeabi_read_tp.S
index 670d0b8..224d6a6 100644
--- a/lib/libc/arm/gen/__aeabi_read_tp.S
+++ b/lib/libc/arm/gen/__aeabi_read_tp.S
@@ -45,3 +45,4 @@ END(__aeabi_read_tp)
.word ARM_TP_ADDRESS
#endif
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/gen/_ctx_start.S b/lib/libc/arm/gen/_ctx_start.S
index 41bfff9..faedfb5 100644
--- a/lib/libc/arm/gen/_ctx_start.S
+++ b/lib/libc/arm/gen/_ctx_start.S
@@ -8,3 +8,5 @@ ENTRY(_ctx_start)
bl _C_LABEL(ctx_done)
bl _C_LABEL(abort)
END(_ctx_start)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/gen/_setjmp.S b/lib/libc/arm/gen/_setjmp.S
index 853f61c..e3c67fa 100644
--- a/lib/libc/arm/gen/_setjmp.S
+++ b/lib/libc/arm/gen/_setjmp.S
@@ -157,3 +157,5 @@ botch:
b .
#endif
END(_longjmp)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/gen/alloca.S b/lib/libc/arm/gen/alloca.S
index e4a73d4..2539b7a 100644
--- a/lib/libc/arm/gen/alloca.S
+++ b/lib/libc/arm/gen/alloca.S
@@ -44,3 +44,5 @@ ENTRY(alloca)
mov r0, sp /* r0 = base of new space */
RET
END(alloca)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/gen/divsi3.S b/lib/libc/arm/gen/divsi3.S
index 82de5de..fac0663 100644
--- a/lib/libc/arm/gen/divsi3.S
+++ b/lib/libc/arm/gen/divsi3.S
@@ -389,3 +389,5 @@ ENTRY(__divsi3)
mov r0, r3
RET
END(__divsi3)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/gen/setjmp.S b/lib/libc/arm/gen/setjmp.S
index c9ae329..4e3850d 100644
--- a/lib/libc/arm/gen/setjmp.S
+++ b/lib/libc/arm/gen/setjmp.S
@@ -158,3 +158,5 @@ ENTRY(__longjmp)
bl PIC_SYM(_C_LABEL(abort), PLT)
1: b 1b /* Cannot get here */
END(__longjmp)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/gen/sigsetjmp.S b/lib/libc/arm/gen/sigsetjmp.S
index 3743e89..236f531 100644
--- a/lib/libc/arm/gen/sigsetjmp.S
+++ b/lib/libc/arm/gen/sigsetjmp.S
@@ -66,3 +66,5 @@ ENTRY(siglongjmp)
beq PIC_SYM(_C_LABEL(_longjmp), PLT)
b PIC_SYM(_C_LABEL(longjmp), PLT)
END(siglongjmp)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/string/ffs.S b/lib/libc/arm/string/ffs.S
index cc7f396..0ed8152 100644
--- a/lib/libc/arm/string/ffs.S
+++ b/lib/libc/arm/string/ffs.S
@@ -84,3 +84,5 @@ ENTRY(ffs)
RET
#endif
END(ffs)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/string/memcmp.S b/lib/libc/arm/string/memcmp.S
index 6fd8130..33a11b7 100644
--- a/lib/libc/arm/string/memcmp.S
+++ b/lib/libc/arm/string/memcmp.S
@@ -181,3 +181,5 @@ ENTRY(memcmp)
RET
#endif
END(memcmp)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/string/memcpy_arm.S b/lib/libc/arm/string/memcpy_arm.S
index 56fb703..57b0449 100644
--- a/lib/libc/arm/string/memcpy_arm.S
+++ b/lib/libc/arm/string/memcpy_arm.S
@@ -334,3 +334,5 @@ ENTRY(memcpy)
sub r1, r1, #1
b .Lmemcpy_l4
END(memcpy)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/string/memcpy_xscale.S b/lib/libc/arm/string/memcpy_xscale.S
index a451de4..ab01544 100644
--- a/lib/libc/arm/string/memcpy_xscale.S
+++ b/lib/libc/arm/string/memcpy_xscale.S
@@ -1784,3 +1784,5 @@ ENTRY(memcpy)
bx lr
#endif /* !_STANDALONE */
END(memcpy)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/string/memmove.S b/lib/libc/arm/string/memmove.S
index 2cd5a5e..8f96147 100644
--- a/lib/libc/arm/string/memmove.S
+++ b/lib/libc/arm/string/memmove.S
@@ -609,3 +609,5 @@ END(memmove)
#else
END(bcopy)
#endif
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/string/memset.S b/lib/libc/arm/string/memset.S
index 6d76901..96d2f93 100644
--- a/lib/libc/arm/string/memset.S
+++ b/lib/libc/arm/string/memset.S
@@ -263,3 +263,5 @@ END(bzero)
#else
END(memset)
#endif
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/string/strcmp.S b/lib/libc/arm/string/strcmp.S
index d610fea..1cdce8b 100644
--- a/lib/libc/arm/string/strcmp.S
+++ b/lib/libc/arm/string/strcmp.S
@@ -43,3 +43,5 @@ ENTRY(strcmp)
sub r0, r2, r3
RET
END(strcmp)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/string/strlen.S b/lib/libc/arm/string/strlen.S
index c9334f9..240fa7d 100644
--- a/lib/libc/arm/string/strlen.S
+++ b/lib/libc/arm/string/strlen.S
@@ -83,3 +83,5 @@ ENTRY(strlen)
mov r0, r1
RET
END(strlen)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/string/strncmp.S b/lib/libc/arm/string/strncmp.S
index a5c0320..affcaa0 100644
--- a/lib/libc/arm/string/strncmp.S
+++ b/lib/libc/arm/string/strncmp.S
@@ -56,3 +56,5 @@ ENTRY(strncmp)
sub r0, r2, r3
RET
END(strncmp)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/sys/Ovfork.S b/lib/libc/arm/sys/Ovfork.S
index 4520e02..73c619e 100644
--- a/lib/libc/arm/sys/Ovfork.S
+++ b/lib/libc/arm/sys/Ovfork.S
@@ -53,3 +53,5 @@ ENTRY(vfork)
and r0, r0, r1 /* r0 == 0 if child, else unchanged */
mov r15, r2
END(vfork)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/sys/brk.S b/lib/libc/arm/sys/brk.S
index e5f8336..bf1b4fb 100644
--- a/lib/libc/arm/sys/brk.S
+++ b/lib/libc/arm/sys/brk.S
@@ -91,3 +91,5 @@ ENTRY(_brk)
.Lcurbrk:
.word PIC_SYM(CURBRK, GOT)
END(_brk)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/sys/cerror.S b/lib/libc/arm/sys/cerror.S
index 26f5211..5fad698 100644
--- a/lib/libc/arm/sys/cerror.S
+++ b/lib/libc/arm/sys/cerror.S
@@ -47,3 +47,5 @@ ASENTRY(CERROR)
mvn r1, #0x00000000
ldmfd sp!, {r4, pc}
END(CERROR)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/sys/pipe.S b/lib/libc/arm/sys/pipe.S
index 77ce0fc..778e923 100644
--- a/lib/libc/arm/sys/pipe.S
+++ b/lib/libc/arm/sys/pipe.S
@@ -49,3 +49,5 @@ ENTRY(_pipe)
mov r0, #0x00000000
RET
END(_pipe)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/sys/ptrace.S b/lib/libc/arm/sys/ptrace.S
index 876da32..dade223 100644
--- a/lib/libc/arm/sys/ptrace.S
+++ b/lib/libc/arm/sys/ptrace.S
@@ -47,3 +47,5 @@ ENTRY(ptrace)
bcs PIC_SYM(CERROR, PLT)
RET
END(ptrace)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/sys/sbrk.S b/lib/libc/arm/sys/sbrk.S
index 5cd9a03..25622c4 100644
--- a/lib/libc/arm/sys/sbrk.S
+++ b/lib/libc/arm/sys/sbrk.S
@@ -78,3 +78,5 @@ ENTRY(_sbrk)
.Lcurbrk:
.word PIC_SYM(CURBRK, GOT)
END(_sbrk)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/sys/shmat.S b/lib/libc/arm/sys/shmat.S
index 3fc3d02..3574b1d 100644
--- a/lib/libc/arm/sys/shmat.S
+++ b/lib/libc/arm/sys/shmat.S
@@ -5,3 +5,5 @@ __FBSDID("$FreeBSD$");
#include "SYS.h"
RSYSCALL(shmat)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/sys/sigreturn.S b/lib/libc/arm/sys/sigreturn.S
index 1e0f245..c377e4a 100644
--- a/lib/libc/arm/sys/sigreturn.S
+++ b/lib/libc/arm/sys/sigreturn.S
@@ -40,3 +40,5 @@ __FBSDID("$FreeBSD$");
*/
RSYSCALL(sigreturn)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/arm/sys/syscall.S b/lib/libc/arm/sys/syscall.S
index 73e6b83..c88d1ae 100644
--- a/lib/libc/arm/sys/syscall.S
+++ b/lib/libc/arm/sys/syscall.S
@@ -36,3 +36,5 @@ __FBSDID("$FreeBSD$");
#include "SYS.h"
RSYSCALL(syscall)
+
+ .section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc
index a4414fa..e4fe1b2 100644
--- a/lib/libc/sys/Makefile.inc
+++ b/lib/libc/sys/Makefile.inc
@@ -102,7 +102,7 @@ SYM_MAPS+= ${LIBC_SRCTOP}/sys/Symbol.map
CLEANFILES+= ${SASM} ${SPSEUDO}
.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \
- ${MACHINE_CPUARCH} == "powerpc"
+ ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_ARCH:Marmv6*}
NOTE_GNU_STACK='\t.section .note.GNU-stack,"",%%progbits\n'
.else
NOTE_GNU_STACK=''
diff --git a/lib/libcompiler_rt/Makefile b/lib/libcompiler_rt/Makefile
index 5e21883..22c9f89 100644
--- a/lib/libcompiler_rt/Makefile
+++ b/lib/libcompiler_rt/Makefile
@@ -230,7 +230,7 @@ SYMLINKS+=libcompiler_rt_p.a ${LIBDIR}/libgcc_p.a
.endif
.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \
- ${MACHINE_CPUARCH} == "powerpc"
+ ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_ARCH:Marmv6*}
AFLAGS+=--noexecstack
ACFLAGS+=-Wa,--noexecstack
.endif
diff --git a/libexec/rtld-elf/arm/rtld_start.S b/libexec/rtld-elf/arm/rtld_start.S
index c482808..431ea48 100644
--- a/libexec/rtld-elf/arm/rtld_start.S
+++ b/libexec/rtld-elf/arm/rtld_start.S
@@ -97,3 +97,4 @@ _rtld_bind_start:
ldmia sp!,{r0-r5,sl,fp,lr} /* restore the stack */
mov pc, ip /* jump to the new address */
+ .section .note.GNU-stack,"",%progbits
OpenPOWER on IntegriCloud