aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnders Roxell <anders.roxell@linaro.org>2016-04-19 12:06:15 -0500
committerMaxim Uvarov <maxim.uvarov@linaro.org>2016-04-20 21:14:04 +0300
commitc917fb80a0ed6ad4676d0f65b416b58ac93b3194 (patch)
tree75a82b7ae8c10fa27c28c9847d4dfbe40060fc36
parent54a607e4aace574eadbeb38c72d738e3b014061e (diff)
api: make only the API visible
Internal functions should not be part of symbols that are visible outside the library. Using -fvisibility=hidden hides all internal functions from the public ABI. Suggested-by: Ricardo Salveti <ricardo.salveti@linaro.org> Signed-off-by: Anders Roxell <anders.roxell@linaro.org> Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org> Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
-rw-r--r--include/odp/api/spec/align.h2
-rw-r--r--include/odp/api/spec/atomic.h2
-rw-r--r--include/odp/api/spec/barrier.h2
-rw-r--r--include/odp/api/spec/buffer.h3
-rw-r--r--include/odp/api/spec/byteorder.h2
-rw-r--r--include/odp/api/spec/classification.h3
-rw-r--r--include/odp/api/spec/compiler.h2
-rw-r--r--include/odp/api/spec/config.h2
-rw-r--r--include/odp/api/spec/cpu.h2
-rw-r--r--include/odp/api/spec/cpumask.h2
-rw-r--r--include/odp/api/spec/crypto.h2
-rw-r--r--include/odp/api/spec/debug.h3
-rw-r--r--include/odp/api/spec/errno.h2
-rw-r--r--include/odp/api/spec/event.h3
-rw-r--r--include/odp/api/spec/hash.h2
-rw-r--r--include/odp/api/spec/hints.h2
-rw-r--r--include/odp/api/spec/init.h4
-rw-r--r--include/odp/api/spec/packet.h2
-rw-r--r--include/odp/api/spec/packet_flags.h2
-rw-r--r--include/odp/api/spec/packet_io.h2
-rw-r--r--include/odp/api/spec/packet_io_stats.h2
-rw-r--r--include/odp/api/spec/pool.h4
-rw-r--r--include/odp/api/spec/queue.h2
-rw-r--r--include/odp/api/spec/random.h3
-rw-r--r--include/odp/api/spec/rwlock.h2
-rw-r--r--include/odp/api/spec/rwlock_recursive.h2
-rw-r--r--include/odp/api/spec/schedule.h3
-rw-r--r--include/odp/api/spec/schedule_types.h2
-rw-r--r--include/odp/api/spec/shared_memory.h3
-rw-r--r--include/odp/api/spec/spinlock.h2
-rw-r--r--include/odp/api/spec/spinlock_recursive.h2
-rw-r--r--include/odp/api/spec/std_clib.h2
-rw-r--r--include/odp/api/spec/std_types.h3
-rw-r--r--include/odp/api/spec/sync.h2
-rw-r--r--include/odp/api/spec/system_info.h3
-rw-r--r--include/odp/api/spec/thread.h2
-rw-r--r--include/odp/api/spec/thrmask.h2
-rw-r--r--include/odp/api/spec/ticketlock.h2
-rw-r--r--include/odp/api/spec/time.h3
-rw-r--r--include/odp/api/spec/timer.h2
-rw-r--r--include/odp/api/spec/traffic_mngr.h2
-rw-r--r--include/odp/api/spec/version.h2
-rw-r--r--platform/Makefile.inc1
-rw-r--r--platform/linux-generic/Makefile.am2
-rw-r--r--platform/linux-generic/include/odp/api/visibility_begin.h15
-rw-r--r--platform/linux-generic/include/odp/api/visibility_end.h15
-rw-r--r--platform/linux-generic/m4/configure.m412
47 files changed, 129 insertions, 14 deletions
diff --git a/include/odp/api/spec/align.h b/include/odp/api/spec/align.h
index 677ff12ce..cbe7d674d 100644
--- a/include/odp/api/spec/align.h
+++ b/include/odp/api/spec/align.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_ALIGN_H_
#define ODP_API_ALIGN_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -74,4 +75,5 @@ extern "C" {
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/atomic.h b/include/odp/api/spec/atomic.h
index a16d90bfb..7638b9303 100644
--- a/include/odp/api/spec/atomic.h
+++ b/include/odp/api/spec/atomic.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_ATOMIC_H_
#define ODP_API_ATOMIC_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -628,4 +629,5 @@ int odp_atomic_lock_free_u64(odp_atomic_op_t *atomic_op);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/barrier.h b/include/odp/api/spec/barrier.h
index 823eae66c..01e3dc734 100644
--- a/include/odp/api/spec/barrier.h
+++ b/include/odp/api/spec/barrier.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_BARRIER_H_
#define ODP_API_BARRIER_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -63,4 +64,5 @@ void odp_barrier_wait(odp_barrier_t *barr);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/buffer.h b/include/odp/api/spec/buffer.h
index 6631f478c..ddadc69cb 100644
--- a/include/odp/api/spec/buffer.h
+++ b/include/odp/api/spec/buffer.h
@@ -13,12 +13,12 @@
#ifndef ODP_API_BUFFER_H_
#define ODP_API_BUFFER_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
/** @defgroup odp_buffer ODP BUFFER
* Operations on a buffer.
* @{
@@ -167,4 +167,5 @@ uint64_t odp_buffer_to_u64(odp_buffer_t hdl);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/byteorder.h b/include/odp/api/spec/byteorder.h
index a12a7296f..101899714 100644
--- a/include/odp/api/spec/byteorder.h
+++ b/include/odp/api/spec/byteorder.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_BYTEORDER_H_
#define ODP_API_BYTEORDER_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -177,4 +178,5 @@ odp_u64le_t odp_cpu_to_le_64(uint64_t cpu64);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/classification.h b/include/odp/api/spec/classification.h
index 076b3defe..8cf809127 100644
--- a/include/odp/api/spec/classification.h
+++ b/include/odp/api/spec/classification.h
@@ -13,12 +13,12 @@
#ifndef ODP_API_CLASSIFY_H_
#define ODP_API_CLASSIFY_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
/** @defgroup odp_classification ODP CLASSIFICATION
* Classification operations.
* @{
@@ -396,4 +396,5 @@ uint64_t odp_pmr_to_u64(odp_pmr_t hdl);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/compiler.h b/include/odp/api/spec/compiler.h
index 5a24bfb2a..d271e909e 100644
--- a/include/odp/api/spec/compiler.h
+++ b/include/odp/api/spec/compiler.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_COMPILER_H_
#define ODP_API_COMPILER_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -48,4 +49,5 @@ extern "C" {
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/config.h b/include/odp/api/spec/config.h
index c9879d6d8..7a2d18b51 100644
--- a/include/odp/api/spec/config.h
+++ b/include/odp/api/spec/config.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_CONFIG_H_
#define ODP_API_CONFIG_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -161,4 +162,5 @@ int odp_config_shm_blocks(void);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/cpu.h b/include/odp/api/spec/cpu.h
index f0e20c458..27895119c 100644
--- a/include/odp/api/spec/cpu.h
+++ b/include/odp/api/spec/cpu.h
@@ -13,6 +13,7 @@
#ifndef ODP_CPU_H_
#define ODP_CPU_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -176,4 +177,5 @@ void odp_cpu_pause(void);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/cpumask.h b/include/odp/api/spec/cpumask.h
index 42098c2e4..129b3c18e 100644
--- a/include/odp/api/spec/cpumask.h
+++ b/include/odp/api/spec/cpumask.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_CPUMASK_H_
#define ODP_API_CPUMASK_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -251,4 +252,5 @@ int odp_cpumask_all_available(odp_cpumask_t *mask);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/crypto.h b/include/odp/api/spec/crypto.h
index 7c6f9bc5b..05e3c3538 100644
--- a/include/odp/api/spec/crypto.h
+++ b/include/odp/api/spec/crypto.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_CRYPTO_H_
#define ODP_API_CRYPTO_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -371,4 +372,5 @@ uint64_t odp_crypto_compl_to_u64(odp_crypto_compl_t hdl);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/debug.h b/include/odp/api/spec/debug.h
index 247b0c0ad..a49dff398 100644
--- a/include/odp/api/spec/debug.h
+++ b/include/odp/api/spec/debug.h
@@ -11,7 +11,7 @@
#ifndef ODP_API_DEBUG_H_
#define ODP_API_DEBUG_H_
-
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -32,4 +32,5 @@ extern "C" {
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/errno.h b/include/odp/api/spec/errno.h
index 33998b61b..a1e76429b 100644
--- a/include/odp/api/spec/errno.h
+++ b/include/odp/api/spec/errno.h
@@ -12,6 +12,7 @@
#ifndef ODP_ERRNO_H_
#define ODP_ERRNO_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -82,4 +83,5 @@ const char *odp_errno_str(int errnum);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/event.h b/include/odp/api/spec/event.h
index 29547f335..082768f8d 100644
--- a/include/odp/api/spec/event.h
+++ b/include/odp/api/spec/event.h
@@ -13,12 +13,12 @@
#ifndef ODP_API_EVENT_H_
#define ODP_API_EVENT_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
/** @defgroup odp_event ODP EVENT
* Operations on an event.
* @{
@@ -83,4 +83,5 @@ void odp_event_free(odp_event_t event);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/hash.h b/include/odp/api/spec/hash.h
index a6bc75310..07a01569d 100644
--- a/include/odp/api/spec/hash.h
+++ b/include/odp/api/spec/hash.h
@@ -12,6 +12,7 @@
#ifndef ODP_API_HASH_H_
#define ODP_API_HASH_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -95,4 +96,5 @@ int odp_hash_crc_gen64(const void *data, uint32_t data_len,
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/hints.h b/include/odp/api/spec/hints.h
index ea67fc401..158f80280 100644
--- a/include/odp/api/spec/hints.h
+++ b/include/odp/api/spec/hints.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_HINTS_H_
#define ODP_API_HINTS_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -113,4 +114,5 @@ extern "C" {
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/init.h b/include/odp/api/spec/init.h
index 8560663da..fec677421 100644
--- a/include/odp/api/spec/init.h
+++ b/include/odp/api/spec/init.h
@@ -21,13 +21,12 @@
#ifndef ODP_API_INIT_H_
#define ODP_API_INIT_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
-
#include <odp/api/std_types.h>
#include <odp/api/hints.h>
#include <odp/api/thread.h>
@@ -278,4 +277,5 @@ int odp_term_local(void);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/packet.h b/include/odp/api/spec/packet.h
index eb25b7e1f..e52fb2918 100644
--- a/include/odp/api/spec/packet.h
+++ b/include/odp/api/spec/packet.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_PACKET_H_
#define ODP_API_PACKET_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -1194,4 +1195,5 @@ uint64_t odp_packet_seg_to_u64(odp_packet_seg_t hdl);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/packet_flags.h b/include/odp/api/spec/packet_flags.h
index 35d44e16c..c2998c1f5 100644
--- a/include/odp/api/spec/packet_flags.h
+++ b/include/odp/api/spec/packet_flags.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_PACKET_FLAGS_H_
#define ODP_API_PACKET_FLAGS_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -493,4 +494,5 @@ void odp_packet_has_ts_clr(odp_packet_t pkt);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h
index de5bc253f..7c29176ca 100644
--- a/include/odp/api/spec/packet_io.h
+++ b/include/odp/api/spec/packet_io.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_PACKET_IO_H_
#define ODP_API_PACKET_IO_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -1048,4 +1049,5 @@ odp_time_t odp_pktin_ts_from_ns(odp_pktio_t pktio, uint64_t ns);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/packet_io_stats.h b/include/odp/api/spec/packet_io_stats.h
index 148ad8d40..e0a6547d9 100644
--- a/include/odp/api/spec/packet_io_stats.h
+++ b/include/odp/api/spec/packet_io_stats.h
@@ -12,6 +12,7 @@
#ifndef ODP_API_PACKET_IO_STATS_H_
#define ODP_API_PACKET_IO_STATS_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -138,4 +139,5 @@ int odp_pktio_stats_reset(odp_pktio_t pktio);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/pool.h b/include/odp/api/spec/pool.h
index 94a302e73..87a194ce9 100644
--- a/include/odp/api/spec/pool.h
+++ b/include/odp/api/spec/pool.h
@@ -13,13 +13,12 @@
#ifndef ODP_API_POOL_H_
#define ODP_API_POOL_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
-
#include <odp/api/std_types.h>
/** @defgroup odp_pool ODP POOL
@@ -210,4 +209,5 @@ void odp_pool_param_init(odp_pool_param_t *param);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/queue.h b/include/odp/api/spec/queue.h
index 51d94a23a..7626ca7d6 100644
--- a/include/odp/api/spec/queue.h
+++ b/include/odp/api/spec/queue.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_QUEUE_H_
#define ODP_API_QUEUE_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -374,4 +375,5 @@ int odp_queue_info(odp_queue_t queue, odp_queue_info_t *info);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/random.h b/include/odp/api/spec/random.h
index 435783a4f..db776309a 100644
--- a/include/odp/api/spec/random.h
+++ b/include/odp/api/spec/random.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_RANDOM_H_
#define ODP_API_RANDOM_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -22,7 +23,6 @@ extern "C" {
* @{
*/
-
/**
* Generate random byte data
*
@@ -45,4 +45,5 @@ int32_t odp_random_data(uint8_t *buf, int32_t size, odp_bool_t use_entropy);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/rwlock.h b/include/odp/api/spec/rwlock.h
index 9ca887262..631df48e4 100644
--- a/include/odp/api/spec/rwlock.h
+++ b/include/odp/api/spec/rwlock.h
@@ -6,6 +6,7 @@
#ifndef ODP_API_RWLOCK_H_
#define ODP_API_RWLOCK_H_
+#include <odp/api/visibility_begin.h>
/**
* @file
@@ -99,4 +100,5 @@ void odp_rwlock_write_unlock(odp_rwlock_t *rwlock);
}
#endif
+#include <odp/api/visibility_end.h>
#endif /* ODP_RWLOCK_H_ */
diff --git a/include/odp/api/spec/rwlock_recursive.h b/include/odp/api/spec/rwlock_recursive.h
index 965fcc0bf..9d50f2020 100644
--- a/include/odp/api/spec/rwlock_recursive.h
+++ b/include/odp/api/spec/rwlock_recursive.h
@@ -12,6 +12,7 @@
#ifndef ODP_API_RWLOCK_RECURSIVE_H_
#define ODP_API_RWLOCK_RECURSIVE_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -117,4 +118,5 @@ void odp_rwlock_recursive_write_unlock(odp_rwlock_recursive_t *lock);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/schedule.h b/include/odp/api/spec/schedule.h
index cd1325ad7..a720e037f 100644
--- a/include/odp/api/spec/schedule.h
+++ b/include/odp/api/spec/schedule.h
@@ -13,12 +13,12 @@
#ifndef ODP_API_SCHEDULE_H_
#define ODP_API_SCHEDULE_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
#include <odp/api/std_types.h>
#include <odp/api/event.h>
#include <odp/api/queue.h>
@@ -375,4 +375,5 @@ void odp_schedule_order_unlock(unsigned lock_index);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/schedule_types.h b/include/odp/api/spec/schedule_types.h
index 34046af9c..b394d5327 100644
--- a/include/odp/api/spec/schedule_types.h
+++ b/include/odp/api/spec/schedule_types.h
@@ -12,6 +12,7 @@
#ifndef ODP_API_SCHEDULE_TYPES_H_
#define ODP_API_SCHEDULE_TYPES_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -156,4 +157,5 @@ typedef struct odp_schedule_param_t {
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/shared_memory.h b/include/odp/api/spec/shared_memory.h
index 5d851ce12..5d31f4199 100644
--- a/include/odp/api/spec/shared_memory.h
+++ b/include/odp/api/spec/shared_memory.h
@@ -13,12 +13,12 @@
#ifndef ODP_API_SHARED_MEMORY_H_
#define ODP_API_SHARED_MEMORY_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
/** @defgroup odp_shared_memory ODP SHARED MEMORY
* Operations on shared memory.
* @{
@@ -152,4 +152,5 @@ uint64_t odp_shm_to_u64(odp_shm_t hdl);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/spinlock.h b/include/odp/api/spec/spinlock.h
index a73359ddb..8263171ca 100644
--- a/include/odp/api/spec/spinlock.h
+++ b/include/odp/api/spec/spinlock.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_SPINLOCK_H_
#define ODP_API_SPINLOCK_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -88,4 +89,5 @@ int odp_spinlock_is_locked(odp_spinlock_t *splock);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/spinlock_recursive.h b/include/odp/api/spec/spinlock_recursive.h
index d98f2bbb6..07829fd15 100644
--- a/include/odp/api/spec/spinlock_recursive.h
+++ b/include/odp/api/spec/spinlock_recursive.h
@@ -12,6 +12,7 @@
#ifndef ODP_API_SPINLOCK_RECURSIVE_H_
#define ODP_API_SPINLOCK_RECURSIVE_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -82,4 +83,5 @@ int odp_spinlock_recursive_is_locked(odp_spinlock_recursive_t *lock);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/std_clib.h b/include/odp/api/spec/std_clib.h
index 791b72f1c..772732c2f 100644
--- a/include/odp/api/spec/std_clib.h
+++ b/include/odp/api/spec/std_clib.h
@@ -12,6 +12,7 @@
#ifndef ODP_API_STD_CLIB_H_
#define ODP_API_STD_CLIB_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -79,4 +80,5 @@ int odp_memcmp(const void *ptr1, const void *ptr2, size_t num);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/std_types.h b/include/odp/api/spec/std_types.h
index 7558c647d..47018d50c 100644
--- a/include/odp/api/spec/std_types.h
+++ b/include/odp/api/spec/std_types.h
@@ -14,12 +14,12 @@
#ifndef ODP_API_STD_TYPES_H_
#define ODP_API_STD_TYPES_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
/** @addtogroup odp_system ODP SYSTEM
* @{
*/
@@ -39,4 +39,5 @@ extern "C" {
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/sync.h b/include/odp/api/spec/sync.h
index c6f790c6f..84b7cb912 100644
--- a/include/odp/api/spec/sync.h
+++ b/include/odp/api/spec/sync.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_SYNC_H_
#define ODP_API_SYNC_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -87,4 +88,5 @@ void odp_mb_full(void);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/system_info.h b/include/odp/api/spec/system_info.h
index bde3a6031..6957731ac 100644
--- a/include/odp/api/spec/system_info.h
+++ b/include/odp/api/spec/system_info.h
@@ -13,12 +13,12 @@
#ifndef ODP_API_SYSTEM_INFO_H_
#define ODP_API_SYSTEM_INFO_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
/** @defgroup odp_system ODP SYSTEM
* @{
*/
@@ -52,4 +52,5 @@ int odp_sys_cache_line_size(void);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/thread.h b/include/odp/api/spec/thread.h
index 37202497a..6e2a817a1 100644
--- a/include/odp/api/spec/thread.h
+++ b/include/odp/api/spec/thread.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_THREAD_H_
#define ODP_API_THREAD_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -109,4 +110,5 @@ odp_thread_type_t odp_thread_type(void);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/thrmask.h b/include/odp/api/spec/thrmask.h
index a22da8c42..73f386608 100644
--- a/include/odp/api/spec/thrmask.h
+++ b/include/odp/api/spec/thrmask.h
@@ -12,6 +12,7 @@
#ifndef ODP_API_THRMASK_H_
#define ODP_API_THRMASK_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -236,4 +237,5 @@ int odp_thrmask_control(odp_thrmask_t *mask);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/ticketlock.h b/include/odp/api/spec/ticketlock.h
index 3f0e3f556..d485565f7 100644
--- a/include/odp/api/spec/ticketlock.h
+++ b/include/odp/api/spec/ticketlock.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_TICKETLOCK_H_
#define ODP_API_TICKETLOCK_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -87,4 +88,5 @@ int odp_ticketlock_is_locked(odp_ticketlock_t *tklock);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/time.h b/include/odp/api/spec/time.h
index 85692ec11..a78fc2ce7 100644
--- a/include/odp/api/spec/time.h
+++ b/include/odp/api/spec/time.h
@@ -13,12 +13,12 @@
#ifndef ODP_API_TIME_H_
#define ODP_API_TIME_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
#endif
-
/** @defgroup odp_time ODP TIME
* @{
*/
@@ -178,4 +178,5 @@ uint64_t odp_time_to_u64(odp_time_t time);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/timer.h b/include/odp/api/spec/timer.h
index 435c0045f..3f8fdd4cc 100644
--- a/include/odp/api/spec/timer.h
+++ b/include/odp/api/spec/timer.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_TIMER_H_
#define ODP_API_TIMER_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -412,4 +413,5 @@ uint64_t odp_timeout_to_u64(odp_timeout_t hdl);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/traffic_mngr.h b/include/odp/api/spec/traffic_mngr.h
index ce124a83f..e4c15df39 100644
--- a/include/odp/api/spec/traffic_mngr.h
+++ b/include/odp/api/spec/traffic_mngr.h
@@ -6,6 +6,7 @@
#ifndef ODP_TRAFFIC_MNGR_H_
#define ODP_TRAFFIC_MNGR_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -1371,4 +1372,5 @@ void odp_tm_stats_print(odp_tm_t odp_tm);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/include/odp/api/spec/version.h b/include/odp/api/spec/version.h
index 642831c23..004d9f60b 100644
--- a/include/odp/api/spec/version.h
+++ b/include/odp/api/spec/version.h
@@ -13,6 +13,7 @@
#ifndef ODP_API_VERSION_H_
#define ODP_API_VERSION_H_
+#include <odp/api/visibility_begin.h>
#ifdef __cplusplus
extern "C" {
@@ -102,4 +103,5 @@ const char *odp_version_impl_str(void);
}
#endif
+#include <odp/api/visibility_end.h>
#endif
diff --git a/platform/Makefile.inc b/platform/Makefile.inc
index 1cb7a7194..5aa3fedc4 100644
--- a/platform/Makefile.inc
+++ b/platform/Makefile.inc
@@ -15,6 +15,7 @@ AM_LDFLAGS += -version-number '$(ODP_LIBSO_VERSION)'
GIT_DESC = `$(top_srcdir)/scripts/get_impl_str.sh $(top_srcdir)`
AM_CFLAGS += "-DGIT_HASH=$(GIT_DESC)"
AM_CFLAGS += -DPLATFORM=${with_platform}
+AM_CFLAGS += $(VISIBILITY_CFLAGS)
#The implementation will need to retain the deprecated implementation
AM_CFLAGS += -Wno-deprecated-declarations
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am
index 5eb8cbce6..c3cb51aca 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -57,6 +57,8 @@ odpapiinclude_HEADERS = \
$(srcdir)/include/odp/api/timer.h \
$(srcdir)/include/odp/api/traffic_mngr.h \
$(srcdir)/include/odp/api/version.h \
+ $(srcdir)/include/odp/api/visibility_begin.h \
+ $(srcdir)/include/odp/api/visibility_end.h \
$(srcdir)/arch/@ARCH@/odp/api/cpu_arch.h
odpapiplatincludedir= $(includedir)/odp/api/plat
diff --git a/platform/linux-generic/include/odp/api/visibility_begin.h b/platform/linux-generic/include/odp/api/visibility_begin.h
new file mode 100644
index 000000000..1bbb43def
--- /dev/null
+++ b/platform/linux-generic/include/odp/api/visibility_begin.h
@@ -0,0 +1,15 @@
+/* Copyright (c) 2016, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+/*
+ * @file
+ *
+ * Linker visibility directives
+ */
+
+#if __GNUC__ >= 4
+#pragma GCC visibility push(default)
+#endif
diff --git a/platform/linux-generic/include/odp/api/visibility_end.h b/platform/linux-generic/include/odp/api/visibility_end.h
new file mode 100644
index 000000000..748af5103
--- /dev/null
+++ b/platform/linux-generic/include/odp/api/visibility_end.h
@@ -0,0 +1,15 @@
+/* Copyright (c) 2016, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+/*
+ * @file
+ *
+ * Linker visibility directives
+ */
+
+#if __GNUC__ >= 4
+#pragma GCC visibility pop
+#endif
diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4
index f80c66c02..75a3797e2 100644
--- a/platform/linux-generic/m4/configure.m4
+++ b/platform/linux-generic/m4/configure.m4
@@ -1,3 +1,15 @@
+# Enable -fvisibility=hidden if using a gcc that supports it
+OLD_CFLAGS="$CFLAGS"
+AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
+VISIBILITY_CFLAGS="-fvisibility=hidden"
+CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
+AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
+ [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
+
+AC_SUBST(VISIBILITY_CFLAGS)
+# Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
+CFLAGS=$OLD_CFLAGS
+
AC_MSG_CHECKING(for GCC atomic builtins)
AC_LINK_IFELSE(
[AC_LANG_SOURCE(