Message ID | 20170623161158.GA5384@gmail.com |
---|---|
State | New |
Headers | show |
On 06/23/2017 06:11 PM, H.J. Lu wrote: > +/* Define the variables used for the interface. Avoid .symver on common > + symbol, which just creates a new common symbol, not an alias. */ > +char *loc1 = NULL; > +char *loc2 = NULL; I think __attribute__ ((nocommon)) without the initializer would be more explicit. We already use that for _res in resolv/res_libc.c. Does this result in a visible difference for applications? If yes, please file a bug for this and reference it in the ChangeLog and commit message. Why didn't our test suite catch it? Thanks, Florian
diff --git a/misc/regexp.c b/misc/regexp.c index 19d76c0..9017bc1 100644 --- a/misc/regexp.c +++ b/misc/regexp.c @@ -29,14 +29,17 @@ #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23) -/* Define the variables used for the interface. */ -char *loc1; -char *loc2; +#include <stdlib.h> /* Get NULL. */ + +/* Define the variables used for the interface. Avoid .symver on common + symbol, which just creates a new common symbol, not an alias. */ +char *loc1 = NULL; +char *loc2 = NULL; compat_symbol (libc, loc1, loc1, GLIBC_2_0); compat_symbol (libc, loc2, loc2, GLIBC_2_0); /* Although we do not support the use we define this variable as well. */ -char *locs; +char *locs = NULL; compat_symbol (libc, locs, locs, GLIBC_2_0);