Ping ! Do I need to do anything else for this to be merged !

Thx,
-Vineet

On 05/07/2013 10:00 AM, Vineet Gupta wrote:
> Partially reverts "parser_config.[ch]: remove duplicated hidden functions"
> 
> There's a namespace collision for config_{open,close,read} functions
> between uClibc and Busybox. Callers in uClibc and busybox need to call
> their local variants. In case of static linking, both the variants need
> to be pulled in the final executable.
> 
> Turns out that the existing hidden attribute is not enough for static
> linked Busybox where the linker treats these symbols as duplicate and
> pulls in only the local (Busybox's own) variants in the final link.
> This obviously causes the uClibc callers to crap out at runtime.
> 
> This can be fixed by restoring the libc_hidden_proto() annotation
> which causes the libc variants to be aliased with __GI_ prefix thus
> making both the symbols distinct from linker's perspective.
> 
> This issue was found with ARC gcc 4.8 + uClibc trunk.
> I can confirm the same thing with ARM uClibc buildroot build (when
> switching to uClibc daily snapshot).
> 
> All the credit for debugging the issue goes to Anton,Joern and Jeremy -
> I simply found the cure :-)
> 
> Signed-off-by: Vineet Gupta <[email protected]>
> Cc: Anton Kolesov <[email protected]>
> Cc: Jeremy Bennett <[email protected]>
> Cc: Joern Rennecke <[email protected]>
> Cc: Bernhard Reutner-Fischer <[email protected]>
> Cc: Peter S. Mazinger <[email protected]>
> ---
>  include/internal/parse_config.h |    3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/include/internal/parse_config.h b/include/internal/parse_config.h
> index 69be0cb..ebfb87e 100644
> --- a/include/internal/parse_config.h
> +++ b/include/internal/parse_config.h
> @@ -46,9 +46,12 @@ typedef struct parser_t {
>  } parser_t;
>  
>  parser_t* config_open(const char *filename) FAST_FUNC attribute_hidden;
> +libc_hidden_proto(config_open)
>  int config_read(parser_t *parser, char ***tokens, unsigned flags, const char 
> *delims) FAST_FUNC attribute_hidden;
> +libc_hidden_proto(config_read)
>  #define config_read(parser, tokens, max, min, str, flags) \
>       config_read(parser, tokens, ((flags) | (((min) & 0xFF) << 8) | ((max) & 
> 0xFF)), str)
>  void config_close(parser_t *parser) FAST_FUNC attribute_hidden;
> +libc_hidden_proto(config_close)
>  
>  #endif /* __INTERNAL_PARSE_CONFIG_H */
> 

_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to