The branch stable/13 has been updated by arichardson:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=f3e14553329b33e7d61ece97fd2eda6963fd1fec

commit f3e14553329b33e7d61ece97fd2eda6963fd1fec
Author:     Greg V <[email protected]>
AuthorDate: 2021-04-20 00:47:15 +0000
Commit:     Alex Richardson <[email protected]>
CommitDate: 2021-05-11 08:39:28 +0000

    linker_set: fix globl/weak symbol redefinitions to work on clang 12
    
    In clang 12.0.0.rc2, going from weak to global is now a hard error:
    
    ```
    /usr/src/stand/libsa/amd64/_setjmp.S:67:25: error: _longjmp changed binding 
to STB_GLOBAL
    .text; .p2align 4,0x90; .globl _longjmp; .type _longjmp,@function; 
_longjmp:; .cfi_startproc
    ```
    
    And the other way is a warning, but we have -Werror:
    
    ```
    error: __start_set_Xcommand_set changed binding to STB_WEAK 
[-Werror,-Winline-asm]
    error: __stop_set_Xcommand_set changed binding to STB_WEAK 
[-Werror,-Winline-asm]
    ```
    
    ref: https://reviews.llvm.org/D90108
    
    Reviewed By:    arichardson
    MFC after:      1 week
    Differential Revision: https://reviews.freebsd.org/D29159
    
    (cherry picked from commit 32231805fbe2b9438c2de50c229b43c016207a08)
---
 sys/sys/cdefs.h      | 4 ++--
 sys/sys/linker_set.h | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
index d11bee96e10a..3acb165dad05 100644
--- a/sys/sys/cdefs.h
+++ b/sys/sys/cdefs.h
@@ -563,8 +563,8 @@
 #endif /* __STDC__ */
 #endif /* __GNUC__ */
 
-#define        __GLOBL1(sym)   __asm__(".globl " #sym)
-#define        __GLOBL(sym)    __GLOBL1(sym)
+#define        __GLOBL(sym)    __asm__(".globl " __XSTRING(sym))
+#define        __WEAK(sym)     __asm__(".weak " __XSTRING(sym))
 
 #if defined(__GNUC__)
 #define        __IDSTRING(name,string) __asm__(".ident\t\"" string "\"")
diff --git a/sys/sys/linker_set.h b/sys/sys/linker_set.h
index 6169a3499dad..f957858ada04 100644
--- a/sys/sys/linker_set.h
+++ b/sys/sys/linker_set.h
@@ -60,8 +60,8 @@
  */
 #ifdef __GNUCLIKE___SECTION
 #define __MAKE_SET_QV(set, sym, qv)                    \
-       __GLOBL(__CONCAT(__start_set_,set));            \
-       __GLOBL(__CONCAT(__stop_set_,set));             \
+       __WEAK(__CONCAT(__start_set_,set));             \
+       __WEAK(__CONCAT(__stop_set_,set));              \
        static void const * qv                          \
        __set_##set##_sym_##sym __section("set_" #set)  \
        __nosanitizeaddress                             \
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to