Changeset 4e07ea5 in rtems-libbsd


Ignore:
Timestamp:
Apr 27, 2016, 12:18:36 PM (4 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
afaeccc05a556f6aa25ba044a7e49d6aa634a59e, freebsd-9.3, master
Children:
7b8f336
Parents:
33724a2
git-author:
Sebastian Huber <sebastian.huber@…> (04/27/16 12:18:36)
git-committer:
Sebastian Huber <sebastian.huber@…> (04/27/16 12:20:22)
Message:

Prevent invalid optimizations for linker sets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • freebsd/sys/sys/linker_set.h

    r33724a2 r4e07ea5  
    5252        __section("set_" #set) __used = &sym
    5353#else /* __rtems__ */
    54 #define RTEMS_BSD_DEFINE_SET(set, type)                         \
    55         type const __CONCAT(_bsd__start_set_,set)[0]                    \
    56         __section(".rtemsroset.bsd." __STRING(set) ".begin") __used;            \
    57         type const __CONCAT(_bsd__stop_set_,set)[0]                     \
     54#define RTEMS_BSD_DEFINE_SET(set, type)                                 \
     55        type volatile const __CONCAT(_bsd__start_set_,set)[0]           \
     56        __section(".rtemsroset.bsd." __STRING(set) ".begin") __used;    \
     57        type volatile const __CONCAT(_bsd__stop_set_,set)[0]            \
    5858        __section(".rtemsroset.bsd." __STRING(set) ".end") __used
    5959
    6060#define RTEMS_BSD_DECLARE_SET(set, type)                                \
    61         extern type const __CONCAT(_bsd__start_set_,set)[0];            \
    62         extern type const __CONCAT(_bsd__stop_set_,set)[0]
     61        extern type volatile const __CONCAT(_bsd__start_set_,set)[0];   \
     62        extern type volatile const __CONCAT(_bsd__stop_set_,set)[0]
    6363
    6464#define RTEMS_BSD_DEFINE_SET_ITEM(set, sym, type)                       \
    65         static type const __set_##set##_sym_##sym                       \
     65        static type volatile const __set_##set##_sym_##sym              \
    6666        __section(".rtemsroset.bsd." __STRING(set) ".content") __used
    6767
     
    7070
    7171#define RTEMS_BSD_DEFINE_RWSET(set, type)                               \
    72         type __CONCAT(_bsd__start_set_,set)[0]                  \
    73         __section(".rtemsrwset.bsd." __STRING(set) ".begin") __used;            \
     72        type __CONCAT(_bsd__start_set_,set)[0]                          \
     73        __section(".rtemsrwset.bsd." __STRING(set) ".begin") __used;    \
    7474        type __CONCAT(_bsd__stop_set_,set)[0]                           \
    7575        __section(".rtemsrwset.bsd." __STRING(set) ".end") __used
    7676
    7777#define RTEMS_BSD_DECLARE_RWSET(set, type)                              \
    78         extern type __CONCAT(_bsd__start_set_,set)[0];                  \
    79         extern type __CONCAT(_bsd__stop_set_,set)[0]
     78        extern type volatile __CONCAT(_bsd__start_set_,set)[0];         \
     79        extern type volatile __CONCAT(_bsd__stop_set_,set)[0]
    8080
    8181#define RTEMS_BSD_DEFINE_RWSET_ITEM(set, sym, type)                     \
    82         static type __set_##set##_sym_##sym                             \
     82        static type volatile __set_##set##_sym_##sym                    \
    8383        __section(".rtemsrwset.bsd." __STRING(set) ".content") __used
    8484
Note: See TracChangeset for help on using the changeset viewer.