Author: dim
Date: Sun Nov 14 20:40:55 2010
New Revision: 215318
URL: http://svn.freebsd.org/changeset/base/215318

Log:
  Instead of unconditionally emitting .globl's for the __start_set_xxx and
  __stop_set_xxx symbols, only emit them when the set_vnet or set_pcpu
  sections are actually defined.

Modified:
  head/sys/net/vnet.h
  head/sys/sys/cdefs.h
  head/sys/sys/linker_set.h
  head/sys/sys/pcpu.h

Modified: head/sys/net/vnet.h
==============================================================================
--- head/sys/net/vnet.h Sun Nov 14 20:38:11 2010        (r215317)
+++ head/sys/net/vnet.h Sun Nov 14 20:40:55 2010        (r215318)
@@ -95,9 +95,7 @@ struct vnet {
  * Location of the kernel's 'set_vnet' linker set.
  */
 extern uintptr_t       *__start_set_vnet;
-__GLOBL(__start_set_vnet);
 extern uintptr_t       *__stop_set_vnet;
-__GLOBL(__stop_set_vnet);
 
 #define        VNET_START      (uintptr_t)&__start_set_vnet
 #define        VNET_STOP       (uintptr_t)&__stop_set_vnet
@@ -195,7 +193,10 @@ extern struct sx vnet_sxlock;
  */
 #define        VNET_NAME(n)            vnet_entry_##n
 #define        VNET_DECLARE(t, n)      extern t VNET_NAME(n)
-#define        VNET_DEFINE(t, n)       t VNET_NAME(n) __section(VNET_SETNAME) 
__used
+#define        VNET_DEFINE(t, n)                                               
\
+    __GLOBL("__start_" VNET_SETNAME);                                  \
+    __GLOBL("__stop_" VNET_SETNAME);                                   \
+    t VNET_NAME(n) __section(VNET_SETNAME) __used
 #define        STATIC_VNET_DEFINE(t, n)                                        
\
     VNET_DEFINE(static t, n)
 #define        _VNET_PTR(b, n)                                                 
\

Modified: head/sys/sys/cdefs.h
==============================================================================
--- head/sys/sys/cdefs.h        Sun Nov 14 20:38:11 2010        (r215317)
+++ head/sys/sys/cdefs.h        Sun Nov 14 20:40:55 2010        (r215318)
@@ -401,8 +401,7 @@
 #endif /* __STDC__ */
 #endif /* __GNUC__ || __INTEL_COMPILER */
 
-#define        __GLOBL1(sym)   __asm__(".globl " #sym)
-#define        __GLOBL(sym)    __GLOBL1(sym)
+#define        __GLOBL(sym)    __asm__(".globl " sym)
 
 #if defined(__GNUC__) || defined(__INTEL_COMPILER)
 #define        __IDSTRING(name,string) __asm__(".ident\t\"" string "\"")

Modified: head/sys/sys/linker_set.h
==============================================================================
--- head/sys/sys/linker_set.h   Sun Nov 14 20:38:11 2010        (r215317)
+++ head/sys/sys/linker_set.h   Sun Nov 14 20:40:55 2010        (r215318)
@@ -45,8 +45,8 @@
  */
 #ifdef __GNUCLIKE___SECTION
 #define __MAKE_SET(set, sym)                                           \
-       __GLOBL(__CONCAT(__start_set_,set));                            \
-       __GLOBL(__CONCAT(__stop_set_,set));                             \
+       __GLOBL("__start_set_" #set);                                   \
+       __GLOBL("__stop_set_" #set);                                    \
        static void const * const __set_##set##_sym_##sym               \
        __section("set_" #set) __used = &sym
 #else /* !__GNUCLIKE___SECTION */

Modified: head/sys/sys/pcpu.h
==============================================================================
--- head/sys/sys/pcpu.h Sun Nov 14 20:38:11 2010        (r215317)
+++ head/sys/sys/pcpu.h Sun Nov 14 20:40:55 2010        (r215318)
@@ -51,9 +51,7 @@
  * Define a set for pcpu data.
  */
 extern uintptr_t *__start_set_pcpu;
-__GLOBL(__start_set_pcpu);
 extern uintptr_t *__stop_set_pcpu;
-__GLOBL(__stop_set_pcpu);
 
 /*
  * Array of dynamic pcpu base offsets.  Indexed by id.
@@ -75,7 +73,10 @@ extern uintptr_t dpcpu_off[];
  */
 #define        DPCPU_NAME(n)           pcpu_entry_##n
 #define        DPCPU_DECLARE(t, n)     extern t DPCPU_NAME(n)
-#define        DPCPU_DEFINE(t, n)      t DPCPU_NAME(n) 
__section(DPCPU_SETNAME) __used
+#define        DPCPU_DEFINE(t, n)                                              
\
+    __GLOBL("__start_" DPCPU_SETNAME);                                 \
+    __GLOBL("__stop_" DPCPU_SETNAME);                                  \
+    t DPCPU_NAME(n) __section(DPCPU_SETNAME) __used
 #define        STATIC_DPCPU_DEFINE(t, n)                                       
\
     DPCPU_DEFINE(static t, n)
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to