On Wed, Feb 17, 2016 at 10:27 PM, William Cohen <wco...@redhat.com> wrote:

> The shared library should only make the functions and variable visible
> that are actually part of the interfaces to the outside world.
> Anything that is visible to the outside could potentially be used (or
> abused) by code linking with the library.  Making the internal
> functions and variables hidden gives more flexibility to change how the
> code is implemented and improves portability.
> ---
>  lib/pfmlib_amd64.c                | 7 ++++++-
>  lib/pfmlib_amd64_priv.h           | 5 +++++
>  lib/pfmlib_arm_priv.h             | 4 ++++
>  lib/pfmlib_cell_priv.h            | 4 ++++
>  lib/pfmlib_ia64_priv.h            | 5 +++++
>  lib/pfmlib_intel_netburst_priv.h  | 4 ++++
>  lib/pfmlib_intel_snbep_unc.c      | 4 ++++
>  lib/pfmlib_intel_snbep_unc_priv.h | 4 ++++
>  lib/pfmlib_intel_x86_perf_event.c | 4 ++++
>  lib/pfmlib_intel_x86_priv.h       | 4 ++++
>  lib/pfmlib_itanium2_priv.h        | 4 ++++
>  lib/pfmlib_itanium_priv.h         | 4 ++++
>  lib/pfmlib_mips_priv.h            | 4 ++++
>  lib/pfmlib_montecito_priv.h       | 4 ++++
>  lib/pfmlib_powerpc_perf_event.c   | 4 ++++
>  lib/pfmlib_priv.h                 | 4 ++++
>  lib/pfmlib_s390x_priv.h           | 4 ++++
>  lib/pfmlib_sicortex_priv.h        | 6 ++++++
>  lib/pfmlib_sparc_priv.h           | 5 +++++
>  19 files changed, 83 insertions(+), 1 deletion(-)
>
> diff --git a/lib/pfmlib_amd64.c b/lib/pfmlib_amd64.c
> index 1383804..0bbbee2 100644
> --- a/lib/pfmlib_amd64.c
> +++ b/lib/pfmlib_amd64.c
> @@ -34,6 +34,8 @@
>  #include "pfmlib_priv.h"               /* library private */
>  #include "pfmlib_amd64_priv.h"         /* architecture private */
>
> +#pragma GCC visibility push(hidden)
> +
>
How compatible is this with LLVM/clang compilers?


>  const pfmlib_attr_desc_t amd64_mods[]={
>         PFM_ATTR_B("k", "monitor at priv level 0"),             /* monitor
> priv level 0 */
>         PFM_ATTR_B("u", "monitor at priv level 1, 2, 3"),       /* monitor
> priv level 1, 2, 3 */
> @@ -278,7 +280,8 @@ amd64_attr2mod(void *this, int pidx, int attr_idx)
>         return x;
>  }
>
> -void amd64_display_reg(void *this, pfmlib_event_desc_t *e,
> pfm_amd64_reg_t reg)
> +static void
> +amd64_display_reg(void *this, pfmlib_event_desc_t *e, pfm_amd64_reg_t reg)
>  {
>         pfmlib_pmu_t *pmu = this;
>
> @@ -858,3 +861,5 @@ int pfm_amd64_get_num_events(void *this)
>                         num++;
>         return num;
>  }
> +
> +#pragma GCC visibility pop
> diff --git a/lib/pfmlib_amd64_priv.h b/lib/pfmlib_amd64_priv.h
> index 66ca49e..2e08d4f 100644
> --- a/lib/pfmlib_amd64_priv.h
> +++ b/lib/pfmlib_amd64_priv.h
> @@ -25,6 +25,8 @@
>  #ifndef __PFMLIB_AMD64_PRIV_H__
>  #define __PFMLIB_AMD64_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  #define AMD64_MAX_GRP          4 /* must be < 32 (int) */
>
>  typedef struct {
> @@ -214,4 +216,7 @@ extern int pfm_amd64_get_perf_encoding(void *this,
> pfmlib_event_desc_t *e);
>  extern void pfm_amd64_perf_validate_pattrs(void *this,
> pfmlib_event_desc_t *e);
>  extern void pfm_amd64_nb_perf_validate_pattrs(void *this,
> pfmlib_event_desc_t *e);
>  extern int pfm_amd64_family_detect(void *this);
> +
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_AMD64_PRIV_H__ */
> diff --git a/lib/pfmlib_arm_priv.h b/lib/pfmlib_arm_priv.h
> index 81a9df9..06cab1d 100644
> --- a/lib/pfmlib_arm_priv.h
> +++ b/lib/pfmlib_arm_priv.h
> @@ -25,6 +25,8 @@
>  #ifndef __PFMLIB_ARM_PRIV_H__
>  #define __PFMLIB_ARM_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  /*
>   * This file contains the definitions used for ARM processors
>   */
> @@ -100,4 +102,6 @@ arm_has_plm(void *this, pfmlib_event_desc_t *e)
>         return pe[e->event].modmsk & ARM_ATTR_PLM_ALL;
>  }
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_ARM_PRIV_H__ */
> diff --git a/lib/pfmlib_cell_priv.h b/lib/pfmlib_cell_priv.h
> index c479aec..ec0ee38 100644
> --- a/lib/pfmlib_cell_priv.h
> +++ b/lib/pfmlib_cell_priv.h
> @@ -23,6 +23,8 @@
>  #ifndef __PFMLIB_CELL_PRIV_H__
>  #define __PFMLIB_CELL_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  #define PFM_CELL_PME_FREQ_PPU_MFC      0
>  #define PFM_CELL_PME_FREQ_SPU          1
>  #define PFM_CELL_PME_FREQ_HALF         2
> @@ -81,4 +83,6 @@ typedef struct {
>  #define WORD_0_AND_2   5       /* 0101 */
>  #define WORD_NONE      0
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_CELL_PRIV_H__ */
> diff --git a/lib/pfmlib_ia64_priv.h b/lib/pfmlib_ia64_priv.h
> index 75bc49a..3c91b92 100644
> --- a/lib/pfmlib_ia64_priv.h
> +++ b/lib/pfmlib_ia64_priv.h
> @@ -25,6 +25,8 @@
>  #ifndef __PFMLIB_PRIV_IA64_H__
>  #define __PFMLIB_PRIV_IA64_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  /*
>   * architected PMC register structure
>   */
> @@ -849,4 +851,7 @@ pfm_ia64_fls (unsigned long x)
>         return exp - 0xffff;
>
>  }
> +
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_PRIV_IA64_H__ */
> diff --git a/lib/pfmlib_intel_netburst_priv.h
> b/lib/pfmlib_intel_netburst_priv.h
> index 65d73bc..7588198 100644
> --- a/lib/pfmlib_intel_netburst_priv.h
> +++ b/lib/pfmlib_intel_netburst_priv.h
> @@ -28,6 +28,8 @@
>  #ifndef _PFMLIB_INTEL_NETBURST_PRIV_H_
>  #define _PFMLIB_INTEL_NETBURST_PRIV_H_
>
> +#pragma GCC visibility push(hidden)
> +
>  /* ESCR: Event Selection Control Register
>   *
>   * These registers are used to select which event to count along with
> options
> @@ -230,4 +232,6 @@ extern int pfm_netburst_get_encoding(void *this,
> pfmlib_event_desc_t *e);
>  extern int pfm_netburst_get_perf_encoding(void *this, pfmlib_event_desc_t
> *e);
>  extern void pfm_netburst_perf_validate_pattrs(void *this,
> pfmlib_event_desc_t *e);
>
> +#pragma GCC visibility pop
> +
>  #endif
> diff --git a/lib/pfmlib_intel_snbep_unc.c b/lib/pfmlib_intel_snbep_unc.c
> index c61065e..cb0e77f 100644
> --- a/lib/pfmlib_intel_snbep_unc.c
> +++ b/lib/pfmlib_intel_snbep_unc.c
> @@ -32,6 +32,8 @@
>  #include "pfmlib_intel_x86_priv.h"
>  #include "pfmlib_intel_snbep_unc_priv.h"
>
> +#pragma GCC visibility push(hidden)
> +
>  const pfmlib_attr_desc_t snbep_unc_mods[]={
>         PFM_ATTR_B("e", "edge detect"),                 /* edge */
>         PFM_ATTR_B("i", "invert"),                      /* invert */
> @@ -660,3 +662,5 @@ pfm_intel_snbep_unc_get_event_attr_info(void *this,
> int pidx, int attr_idx, pfm_
>
>         return PFM_SUCCESS;
>  }
> +
> +#pragma GCC visibility pop
> diff --git a/lib/pfmlib_intel_snbep_unc_priv.h
> b/lib/pfmlib_intel_snbep_unc_priv.h
> index 13875f5..13f06a4 100644
> --- a/lib/pfmlib_intel_snbep_unc_priv.h
> +++ b/lib/pfmlib_intel_snbep_unc_priv.h
> @@ -24,6 +24,8 @@
>  #ifndef __PFMLIB_INTEL_SNBEP_UNC_PRIV_H__
>  #define __PFMLIB_INTEL_SNBEP_UNC_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  /*
>   * Intel x86 specific pmu flags (pmu->flags 16 MSB)
>   */
> @@ -344,4 +346,6 @@ is_cbo_filt_event(void *this, pfm_intel_x86_reg_t reg)
>                 && (sel == 0x35 || sel == 0x36 || sel == 0x34);
>  }
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_INTEL_SNBEP_UNC_PRIV_H__ */
> diff --git a/lib/pfmlib_intel_x86_perf_event.c
> b/lib/pfmlib_intel_x86_perf_event.c
> index f346d4f..0a53239 100644
> --- a/lib/pfmlib_intel_x86_perf_event.c
> +++ b/lib/pfmlib_intel_x86_perf_event.c
> @@ -32,6 +32,8 @@
>  #include "pfmlib_intel_x86_priv.h"
>  #include "pfmlib_perf_event_priv.h"
>
> +#pragma GCC visibility push(hidden)
> +
>  static int
>  find_pmu_type_by_name(const char *name)
>  {
> @@ -325,3 +327,5 @@ pfm_intel_x86_perf_detect(void *this)
>         snprintf(file,sizeof(file), "/sys/devices/%s", pmu->perf_name);
>         return access(file, R_OK|X_OK) ? PFM_ERR_NOTSUPP : PFM_SUCCESS;
>  }
> +
> +#pragma GCC visibility pop
> diff --git a/lib/pfmlib_intel_x86_priv.h b/lib/pfmlib_intel_x86_priv.h
> index 74aab3e..47849d9 100644
> --- a/lib/pfmlib_intel_x86_priv.h
> +++ b/lib/pfmlib_intel_x86_priv.h
> @@ -25,6 +25,8 @@
>  #ifndef __PFMLIB_INTEL_X86_PRIV_H__
>  #define __PFMLIB_INTEL_X86_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  /*
>   * This file contains the definitions used for all Intel X86 processors
>   */
> @@ -348,4 +350,6 @@ extern void pfm_intel_x86_perf_validate_pattrs(void
> *this, pfmlib_event_desc_t *
>  extern int pfm_intel_x86_can_auto_encode(void *this, int pidx, int uidx);
>  extern int pfm_intel_x86_model_detect(void *this);
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_INTEL_X86_PRIV_H__ */
> diff --git a/lib/pfmlib_itanium2_priv.h b/lib/pfmlib_itanium2_priv.h
> index cacd309..2b571e5 100644
> --- a/lib/pfmlib_itanium2_priv.h
> +++ b/lib/pfmlib_itanium2_priv.h
> @@ -25,6 +25,8 @@
>  #ifndef __PFMLIB_ITANIUM2_PRIV_H__
>  #define __PFMLIB_ITANIUM2_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  /*
>   * Event type definitions
>   *
> @@ -110,4 +112,6 @@ typedef struct {
>  #define event_iarr_ok(e) ((e)->pme_qualifiers.pme_qual.pme_iar==1)
>  #define event_darr_ok(e) ((e)->pme_qualifiers.pme_qual.pme_dar==1)
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_ITANIUM2_PRIV_H__ */
> diff --git a/lib/pfmlib_itanium_priv.h b/lib/pfmlib_itanium_priv.h
> index cdc0716..9176d2c 100644
> --- a/lib/pfmlib_itanium_priv.h
> +++ b/lib/pfmlib_itanium_priv.h
> @@ -25,6 +25,8 @@
>  #ifndef __PFMLIB_ITANIUM_PRIV_H__
>  #define __PFMLIB_ITANIUM_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  /*
>   * Itanium encoding structure
>   * (code must be first 8 bits)
> @@ -91,4 +93,6 @@ typedef struct {
>  #define event_iarr_ok(e) ((e)->pme_qualifiers.pme_qual.pme_iar==1)
>  #define event_darr_ok(e) ((e)->pme_qualifiers.pme_qual.pme_dar==1)
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_ITANIUM_PRIV_H__ */
> diff --git a/lib/pfmlib_mips_priv.h b/lib/pfmlib_mips_priv.h
> index c5112f5..f00bc0c 100644
> --- a/lib/pfmlib_mips_priv.h
> +++ b/lib/pfmlib_mips_priv.h
> @@ -25,6 +25,8 @@
>  #ifndef __PFMLIB_MIPS_PRIV_H__
>  #define __PFMLIB_MIPS_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  /*
>   * This file contains the definitions used for MIPS processors
>   */
> @@ -114,4 +116,6 @@ extern unsigned int pfm_mips_get_event_nattrs(void
> *this, int pidx);
>  extern void pfm_mips_perf_validate_pattrs(void *this, pfmlib_event_desc_t
> *e);
>  extern int pfm_mips_get_perf_encoding(void *this, pfmlib_event_desc_t *e);
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_MIPS_PRIV_H__ */
> diff --git a/lib/pfmlib_montecito_priv.h b/lib/pfmlib_montecito_priv.h
> index 65a1076..8d9acc4 100644
> --- a/lib/pfmlib_montecito_priv.h
> +++ b/lib/pfmlib_montecito_priv.h
> @@ -25,6 +25,8 @@
>  #ifndef __PFMLIB_MONTECITO_PRIV_H__
>  #define __PFMLIB_MONTECITO_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  /*
>   * Event type definitions
>   *
> @@ -115,4 +117,6 @@ typedef struct {
>  #define event_all_ok(e)  ((e)->pme_qualifiers.pme_qual.pme_all==1)
>  #define event_mesi_ok(e)  ((e)->pme_qualifiers.pme_qual.pme_mesi==1)
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_MONTECITO_PRIV_H__ */
> diff --git a/lib/pfmlib_powerpc_perf_event.c
> b/lib/pfmlib_powerpc_perf_event.c
> index 642439b..d5a482a 100644
> --- a/lib/pfmlib_powerpc_perf_event.c
> +++ b/lib/pfmlib_powerpc_perf_event.c
> @@ -31,6 +31,8 @@
>  #include "pfmlib_power_priv.h"         /* architecture private */
>  #include "pfmlib_perf_event_priv.h"
>
> +#pragma GCC visibility push(hidden)
> +
>  int
>  pfm_gen_powerpc_get_perf_encoding(void *this, pfmlib_event_desc_t *e)
>  {
> @@ -144,3 +146,5 @@ pfm_gen_powerpc_perf_validate_pattrs(void *this,
> pfmlib_event_desc_t *e)
>                 }
>         }
>  }
> +
> +#pragma GCC visibility pop
> diff --git a/lib/pfmlib_priv.h b/lib/pfmlib_priv.h
> index 4c075a2..143c8bf 100644
> --- a/lib/pfmlib_priv.h
> +++ b/lib/pfmlib_priv.h
> @@ -27,6 +27,8 @@
>  #include <perfmon/pfmlib.h>
>  #include <string.h>
>
> +#pragma GCC visibility push(hidden)
> +
>  #define PFM_PLM_ALL (PFM_PLM0|PFM_PLM1|PFM_PLM2|PFM_PLM3|PFM_PLMH)
>
>  #define PFMLIB_ATTR_DELIM      ':'     /* event attribute delimiter */
> @@ -481,4 +483,6 @@ is_empty_attr(const pfmlib_attr_desc_t *a)
>         return !a || !a->name || strlen(a->name) == 0 ? 1 : 0;
>  }
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_PRIV_H__ */
> diff --git a/lib/pfmlib_s390x_priv.h b/lib/pfmlib_s390x_priv.h
> index 22c775a..da93e8f 100644
> --- a/lib/pfmlib_s390x_priv.h
> +++ b/lib/pfmlib_s390x_priv.h
> @@ -1,6 +1,8 @@
>  #ifndef __PFMLIB_S390X_PRIV_H__
>  #define __PFMLIB_S390X_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  #define CPUMF_COUNTER_MAX          256
>  typedef struct {
>         uint64_t ctrnum;            /* counter number */
> @@ -12,4 +14,6 @@ typedef struct {
>  #define min(a, b)        ((a) < (b) ? (a) : (b))
>  extern int pfm_s390x_get_perf_encoding(void *this, pfmlib_event_desc_t
> *e);
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_S390X_PRIV_H__ */
> diff --git a/lib/pfmlib_sicortex_priv.h b/lib/pfmlib_sicortex_priv.h
> index 809fae1..bf4313f 100644
> --- a/lib/pfmlib_sicortex_priv.h
> +++ b/lib/pfmlib_sicortex_priv.h
> @@ -25,6 +25,9 @@
>   */
>  #ifndef __PFMLIB_SICORTEX_PRIV_H__
>  #define __PFMLIB_SICORTEX_PRIV_H__
> +
> +#pragma GCC visibility push(hidden)
> +
>  #include "pfmlib_gen_mips64_priv.h"
>
>  #define PFMLIB_SICORTEX_MAX_UMASK 5
> @@ -135,4 +138,7 @@ static pme_sicortex_umask_t
> sicortex_scb_umasks[PFMLIB_SICORTEX_MAX_UMASK] = {
>      "HIST_EDGE","Histogram on edges of the specified event",0x1
>    }
>  };
> +
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_GEN_MIPS64_PRIV_H__ */
> diff --git a/lib/pfmlib_sparc_priv.h b/lib/pfmlib_sparc_priv.h
> index 7de9b3d..a09e0e3 100644
> --- a/lib/pfmlib_sparc_priv.h
> +++ b/lib/pfmlib_sparc_priv.h
> @@ -1,6 +1,8 @@
>  #ifndef __PFMLIB_SPARC_PRIV_H__
>  #define __PFMLIB_SPARC_PRIV_H__
>
> +#pragma GCC visibility push(hidden)
> +
>  typedef struct {
>         char                    *uname; /* mask name */
>         char                    *udesc; /* mask description */
> @@ -51,4 +53,7 @@ extern unsigned int pfm_sparc_get_event_nattrs(void
> *this, int pidx);
>
>  extern void pfm_sparc_perf_validate_pattrs(void *this,
> pfmlib_event_desc_t *e);
>  extern int pfm_sparc_get_perf_encoding(void *this, pfmlib_event_desc_t
> *e);
> +
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_SPARC_PRIV_H__ */
> --
> 2.5.0
>
>
>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> perfmon2-devel mailing list
> perfmon2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/perfmon2-devel
>
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
perfmon2-devel mailing list
perfmon2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to