Hi Will,

I tried your patch on my Ubuntu system.
It is using gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1).

It compiles fine but I see no difference in size using size -t lib/libpfm.a.
It gave me this with or without the patch and with gcc org LLVM:
 text  data    bss    dec    hex filename
1177904   67804    5760  1251468  13188c(TOTALS) # GCC-4.8
1158994  67056   5768 1231818 12cbca (TOTALS) #CLANG 3.7

So do you need a specific compiler version or the patch is missing
something?
Thanks.

On Fri, Mar 4, 2016 at 5:18 PM, William Cohen <wco...@redhat.com> wrote:

> Limiting functions and data structures visibility in a shared library
> so they are hidden from other other code linked with library can allow
> the compiler to generate better quality code and reduce linking
> overhead on startup.  Hiding the internal functions and data
> structures also allow more flexibility in changing internal
> implementation while keeping compatibility with previous versions of
> the library.
>
> This patch limits libpfm to making visible the function listed in the
> header files it provides.  The llvm clang compiler honor the gcc
> visibility option and pragmas.  According to the libabigail tool
> abidiff 59 functions and 154 variables were hidden as a result of this
> change. The patch reduces the size of the shared library by about 14KB
> (0.8%) on x86_64.
>
> Signed-off-by: William Cohen <wco...@redhat.com>
> ---
>  include/perfmon/perf_event.h        | 4 ++++
>  include/perfmon/pfmlib.h            | 4 ++++
>  include/perfmon/pfmlib_perf_event.h | 4 ++++
>  lib/Makefile                        | 2 +-
>  4 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/include/perfmon/perf_event.h b/include/perfmon/perf_event.h
> index cadcec7..a11a8cd 100644
> --- a/include/perfmon/perf_event.h
> +++ b/include/perfmon/perf_event.h
> @@ -22,6 +22,8 @@
>  #ifndef __PERFMON_PERF_EVENT_H__
>  #define __PERFMON_PERF_EVENT_H__
>
> +#pragma GCC visibility push(default)
> +
>  #include <sys/types.h>
>  #include <unistd.h>            /* for syscall numbers */
>  #include <inttypes.h>
> @@ -588,4 +590,6 @@ union perf_mem_data_src {
>  }
>  #endif
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PERFMON_PERF_EVENT_H__ */
> diff --git a/include/perfmon/pfmlib.h b/include/perfmon/pfmlib.h
> index a548be2..b05754b 100644
> --- a/include/perfmon/pfmlib.h
> +++ b/include/perfmon/pfmlib.h
> @@ -26,6 +26,8 @@
>  #ifndef __PFMLIB_H__
>  #define __PFMLIB_H__
>
> +#pragma GCC visibility push(default)
> +
>  #ifdef __cplusplus
>  extern "C" {
>  #endif
> @@ -534,4 +536,6 @@ extern pfm_err_t pfm_get_event_encoding(const char
> *str, int dfl_plm, char **fst
>  }
>  #endif
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_H__ */
> diff --git a/include/perfmon/pfmlib_perf_event.h
> b/include/perfmon/pfmlib_perf_event.h
> index 8b3dae2..0516277 100644
> --- a/include/perfmon/pfmlib_perf_event.h
> +++ b/include/perfmon/pfmlib_perf_event.h
> @@ -25,6 +25,8 @@
>  #include <perfmon/pfmlib.h>
>  #include <perfmon/perf_event.h>
>
> +#pragma GCC visibility push(default)
> +
>  #ifdef __cplusplus
>  extern "C" {
>  #endif
> @@ -61,4 +63,6 @@ extern pfm_err_t pfm_get_perf_event_encoding(const char
> *str,
>  }
>  #endif
>
> +#pragma GCC visibility pop
> +
>  #endif /* __PFMLIB_PERF_EVENT_H__ */
> diff --git a/lib/Makefile b/lib/Makefile
> index a2c5818..f035307 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -33,7 +33,7 @@ ifeq ($(SYS),Linux)
>  SRCS += pfmlib_perf_event_pmu.c pfmlib_perf_event.c
> pfmlib_perf_event_raw.c
>  endif
>
> -CFLAGS+=-D_REENTRANT -I.
> +CFLAGS+=-D_REENTRANT -I. -fvisibility=hidden
>
>  #
>  # list all library support modules
> --
> 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
>
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140
_______________________________________________
perfmon2-devel mailing list
perfmon2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to