From: Ben Hutchings <benh@xxxxxxxxxx> gas supports several different forms for .section for ELF targets, including: .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]] with single-letter flags, and: .section "NAME"[, #FLAGS...] with whole-word flags. In the kernel we generally use the first form. The second form is implemented for Solaris compatibility, and a recent change to binutils limited its support to SPARC targets: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=4cb88cfae84363cef6ed59d9d458a20ff2e1e893 Possibly it will be removed entirely at a later date. To be future-proof and consistent with the rest of the kernel, convert all instances of the second form. Signed-off-by: Ben Hutchings <benh@xxxxxxxxxx> Reviewed-by: Sam Ravnborg <sam@xxxxxxxxxxxx> --- v2: Corrected the commit message to say: - The Solaris syntax is still supported on SPARC - The flag names also differ - Linked to the gas change These changes are compile-tested only. Ben. arch/sparc/include/asm/futex_64.h | 4 ++-- arch/sparc/include/asm/uaccess_32.h | 8 ++++---- arch/sparc/include/asm/uaccess_64.h | 8 ++++---- arch/sparc/kernel/ftrace.c | 2 +- arch/sparc/kernel/head_64.S | 2 +- arch/sparc/kernel/una_asm_32.S | 4 ++-- arch/sparc/lib/copy_user.S | 24 ++++++++++-------------- arch/sparc/lib/memset.S | 2 +- drivers/char/adi.c | 4 ++-- 9 files changed, 27 insertions(+), 31 deletions(-) diff --git a/arch/sparc/include/asm/futex_64.h b/arch/sparc/include/asm/futex_64.h index 72de967318d7..2fbbb8ae8076 100644 --- a/arch/sparc/include/asm/futex_64.h +++ b/arch/sparc/include/asm/futex_64.h @@ -15,7 +15,7 @@ " bne,pn %%icc, 1b\n" \ " mov 0, %0\n" \ "3:\n" \ - " .section .fixup,#alloc,#execinstr\n" \ + " .section .fixup,\"ax\"\n" \ " .align 4\n" \ "4: sethi %%hi(3b), %0\n" \ " jmpl %0 + %%lo(3b), %%g0\n" \ @@ -73,7 +73,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, __asm__ __volatile__( "\n1: casa [%4] %%asi, %3, %1\n" "2:\n" - " .section .fixup,#alloc,#execinstr\n" + " .section .fixup,\"ax\"\n" " .align 4\n" "3: sethi %%hi(2b), %0\n" " jmpl %0 + %%lo(2b), %%g0\n" diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h index 9fd6c53644b6..641d04000b99 100644 --- a/arch/sparc/include/asm/uaccess_32.h +++ b/arch/sparc/include/asm/uaccess_32.h @@ -92,13 +92,13 @@ __asm__ __volatile__( \ "1:\t" "st"#size " %1, %2\n\t" \ "clr %0\n" \ "2:\n\n\t" \ - ".section .fixup,#alloc,#execinstr\n\t" \ + ".section .fixup,\"ax\"\n\t" \ ".align 4\n" \ "3:\n\t" \ "b 2b\n\t" \ " mov %3, %0\n\t" \ ".previous\n\n\t" \ - ".section __ex_table,#alloc\n\t" \ + ".section __ex_table,\"a\"\n\t" \ ".align 4\n\t" \ ".word 1b, 3b\n\t" \ ".previous\n\n\t" \ @@ -160,14 +160,14 @@ __asm__ __volatile__( \ "1:\t" "ld"#size " %2, %1\n\t" \ "clr %0\n" \ "2:\n\n\t" \ - ".section .fixup,#alloc,#execinstr\n\t" \ + ".section .fixup,\"ax\"\n\t" \ ".align 4\n" \ "3:\n\t" \ "clr %1\n\t" \ "b 2b\n\t" \ " mov %3, %0\n\n\t" \ ".previous\n\t" \ - ".section __ex_table,#alloc\n\t" \ + ".section __ex_table,\"a\"\n\t" \ ".align 4\n\t" \ ".word 1b, 3b\n\n\t" \ ".previous\n\t" \ diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h index b825a5dd0210..cb1a9dae6304 100644 --- a/arch/sparc/include/asm/uaccess_64.h +++ b/arch/sparc/include/asm/uaccess_64.h @@ -96,7 +96,7 @@ __asm__ __volatile__( \ "1:\t" "st"#size " %1, [%2]\n\t" \ "clr %0\n" \ "2:\n\n\t" \ - ".section .fixup,#alloc,#execinstr\n\t" \ + ".section .fixup,\"ax\"\n\t" \ ".align 4\n" \ "3:\n\t" \ "sethi %%hi(2b), %0\n\t" \ @@ -128,7 +128,7 @@ __asm__ __volatile__( \ "1:\t" "st"#size "a %1, [%2] %%asi\n\t" \ "clr %0\n" \ "2:\n\n\t" \ - ".section .fixup,#alloc,#execinstr\n\t" \ + ".section .fixup,\"ax\"\n\t" \ ".align 4\n" \ "3:\n\t" \ "sethi %%hi(2b), %0\n\t" \ @@ -169,7 +169,7 @@ __asm__ __volatile__( \ "1:\t" "ld"#size " [%2], %1\n\t" \ "clr %0\n" \ "2:\n\n\t" \ - ".section .fixup,#alloc,#execinstr\n\t" \ + ".section .fixup,\"ax\"\n\t" \ ".align 4\n" \ "3:\n\t" \ "sethi %%hi(2b), %0\n\t" \ @@ -207,7 +207,7 @@ __asm__ __volatile__( \ "1:\t" "ld"#size "a [%2] %%asi, %1\n\t" \ "clr %0\n" \ "2:\n\n\t" \ - ".section .fixup,#alloc,#execinstr\n\t" \ + ".section .fixup,\"ax\"\n\t" \ ".align 4\n" \ "3:\n\t" \ "sethi %%hi(2b), %0\n\t" \ diff --git a/arch/sparc/kernel/ftrace.c b/arch/sparc/kernel/ftrace.c index eaead3da8e03..f25b13513dc0 100644 --- a/arch/sparc/kernel/ftrace.c +++ b/arch/sparc/kernel/ftrace.c @@ -33,7 +33,7 @@ static int ftrace_modify_code(unsigned long ip, u32 old, u32 new) " flush %[ip]\n" " mov 0, %[faulted]\n" "2:\n" - " .section .fixup,#alloc,#execinstr\n" + " .section .fixup,\"ax\"\n" " .align 4\n" "3: sethi %%hi(2b), %[faulted]\n" " jmpl %[faulted] + %%lo(2b), %%g0\n" diff --git a/arch/sparc/kernel/head_64.S b/arch/sparc/kernel/head_64.S index 72a5bdc833ea..a15834ca2198 100644 --- a/arch/sparc/kernel/head_64.S +++ b/arch/sparc/kernel/head_64.S @@ -950,7 +950,7 @@ EXPORT_SYMBOL(sun4v_chip_type) prom_tba: .xword 0 tlb_type: .word 0 /* Must NOT end up in BSS */ EXPORT_SYMBOL(tlb_type) - .section ".fixup",#alloc,#execinstr + .section .fixup,"ax" ENTRY(__retl_efault) retl diff --git a/arch/sparc/kernel/una_asm_32.S b/arch/sparc/kernel/una_asm_32.S index f8bf839289fb..030b6f2c3da9 100644 --- a/arch/sparc/kernel/una_asm_32.S +++ b/arch/sparc/kernel/una_asm_32.S @@ -58,7 +58,7 @@ 0: retl mov 0, %o0 - .section __ex_table,#alloc + .section __ex_table,"a" .word 4b, retl_efault .word 5b, retl_efault .word 6b, retl_efault @@ -137,7 +137,7 @@ 0: retl mov 0, %o0 - .section __ex_table,#alloc + .section __ex_table,"a" .word 4b, retl_efault .word 5b, retl_efault .word 6b, retl_efault diff --git a/arch/sparc/lib/copy_user.S b/arch/sparc/lib/copy_user.S index 954572c78539..54160b10ab31 100644 --- a/arch/sparc/lib/copy_user.S +++ b/arch/sparc/lib/copy_user.S @@ -18,19 +18,15 @@ #include <asm/thread_info.h> #include <asm/export.h> -/* Work around cpp -rob */ -#define ALLOC #alloc -#define EXECINSTR #execinstr - #define EX_ENTRY(l1, l2) \ - .section __ex_table,ALLOC; \ + .section __ex_table,"a"; \ .align 4; \ .word l1, l2; \ .text; #define EX(x,y,a,b) \ 98: x,y; \ - .section .fixup,ALLOC,EXECINSTR; \ + .section .fixup,"ax"; \ .align 4; \ 99: retl; \ a, b, %o0; \ @@ -38,7 +34,7 @@ #define EX2(x,y,c,d,e,a,b) \ 98: x,y; \ - .section .fixup,ALLOC,EXECINSTR; \ + .section .fixup,"ax"; \ .align 4; \ 99: c, d, e; \ retl; \ @@ -51,14 +47,14 @@ #define LD(insn, src, offset, reg, label) \ 98: insn [%src + (offset)], %reg; \ - .section .fixup,ALLOC,EXECINSTR; \ + .section .fixup,"ax"; \ 99: ba label; \ mov offset, %g5; \ EX_ENTRY(98b, 99b) #define ST(insn, dst, offset, reg, label) \ 98: insn %reg, [%dst + (offset)]; \ - .section .fixup,ALLOC,EXECINSTR; \ + .section .fixup,"ax"; \ 99: ba label; \ mov offset, %g5; \ EX_ENTRY(98b, 99b) @@ -90,7 +86,7 @@ ST(std, dst, offset + 0x10, t4, bigchunk_fault) \ ST(std, dst, offset + 0x18, t6, bigchunk_fault) - .section .fixup,#alloc,#execinstr + .section .fixup,"ax" bigchunk_fault: sub %g7, %g5, %o0 and %g1, 127, %g1 @@ -106,7 +102,7 @@ ST(st, dst, -(offset + 0x08), t2, lastchunk_fault) \ ST(st, dst, -(offset + 0x04), t3, lastchunk_fault) - .section .fixup,#alloc,#execinstr + .section .fixup,"ax" lastchunk_fault: and %g1, 15, %g1 retl @@ -130,7 +126,7 @@ ST(stb, dst, -(offset + 0x02), t0, halfchunk_fault) \ ST(stb, dst, -(offset + 0x01), t1, halfchunk_fault) - .section .fixup,#alloc,#execinstr + .section .fixup,"ax" halfchunk_fault: and %o2, 15, %o2 sub %o3, %g5, %o3 @@ -144,7 +140,7 @@ ST(stb, dst, -(offset + 0x02), t0, last_shortchunk_fault) \ ST(stb, dst, -(offset + 0x01), t1, last_shortchunk_fault) - .section .fixup,#alloc,#execinstr + .section .fixup,"ax" last_shortchunk_fault: and %o2, 1, %o2 retl @@ -384,7 +380,7 @@ __copy_user: /* %o0=dst %o1=src %o2=len */ b copy_user_last7 mov %o2, %g1 - .section .fixup,#alloc,#execinstr + .section .fixup,"ax" .align 4 97: retl diff --git a/arch/sparc/lib/memset.S b/arch/sparc/lib/memset.S index eaff68213fdf..caca7c068ca7 100644 --- a/arch/sparc/lib/memset.S +++ b/arch/sparc/lib/memset.S @@ -186,7 +186,7 @@ retl clr %o0 - .section .fixup,#alloc,#execinstr + .section .fixup,"ax" .align 4 30: and %o1, 0x7f, %o1 diff --git a/drivers/char/adi.c b/drivers/char/adi.c index 751d7cc0da1b..7508df9f299c 100644 --- a/drivers/char/adi.c +++ b/drivers/char/adi.c @@ -29,7 +29,7 @@ static int read_mcd_tag(unsigned long addr) "1: ldxa [%[addr]] %[asi], %[ver]\n" " mov 0, %[err]\n" "2:\n" - " .section .fixup,#alloc,#execinstr\n" + " .section .fixup,\"ax\"\n" " .align 4\n" "3: sethi %%hi(2b), %%g1\n" " jmpl %%g1 + %%lo(2b), %%g0\n" @@ -106,7 +106,7 @@ static int set_mcd_tag(unsigned long addr, u8 ver) "1: stxa %[ver], [%[addr]] %[asi]\n" " mov 0, %[err]\n" "2:\n" - " .section .fixup,#alloc,#execinstr\n" + " .section .fixup,\"ax\"\n" " .align 4\n" "3: sethi %%hi(2b), %%g1\n" " jmpl %%g1 + %%lo(2b), %%g0\n"
Attachment:
signature.asc
Description: PGP signature