This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Aliases ...


Richard Henderson <rth@redhat.com> writes:

> On Sun, Jan 09, 2005 at 10:00:25PM +0100, Andreas Jaeger wrote:
>> One testcase is: 
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
>> int errno; 
>> extern  int __libc_errno __attribute__ ((alias ("errno"))); 
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ...
>> So, what shall we do with glibc?
>
> For this case, either initialize the variable, or use -fno-common.
>
>> Btw. I get this warning also for:
>> wcsftime_l.c:26: warning: âwcsftime_lâ aliased to undefined symbol â__wcsftime_lâ
>> ../nss/getXXent_r.c:203: warning: âgetgrent_râ aliased to undefined symbol â__new_getgrent_râ
>> ../sysdeps/posix/pathconf.c:237: warning: âpathconfâ aliased to undefined symbolâ__pathconfâ
>> ../sysdeps/posix/fpathconf.c:241: warning: âfpathconfâ aliased to undefined symbol â__fpathconfâ
>> 
>
> But these are functions, not variables, so this must be a different
> problem.  You can re-open the same bug with these different test cases,
> or create a new one, as you choose.

I guess this warning is valid, I get:
t.c:17: warning: âpasswd2desâ aliased to undefined symbol âpasswd2des_internalâ

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void passwd2des_internal (char *pw, char *key);

extern __typeof (passwd2des_internal) __GI_passwd2des_internal;
extern __typeof (passwd2des_internal) passwd2des_internal __asm__ ("" "__GI_passwd2des_internal") __attribute__ ((visibility ("hidden")));

void
passwd2des_internal (char *pw, char *key)
{
  int i;

  for (i = 0; *pw && i < 8; ++i)
    key[i] ^= *pw++ << 1;

}

__asm__ (".globl passwd2des_internal ; .set passwd2des_internal, __GI_passwd2des_internal");
extern __typeof (passwd2des_internal) passwd2des __attribute__ ((alias ("passwd2des_internal")));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Changing the last line to:
extern __typeof (passwd2des_internal) passwd2des __attribute__ ((alias ("__GI_passwd2des_internal")));

removes the warning, so I guess we need to fix this in glibc :-(

Andreas
-- 
 Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
  SUSE Linux Products GmbH, Maxfeldstr. 5, 90409 NÃrnberg, Germany
   GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126

Attachment: pgp00000.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]