This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


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

Portability of generic code (was: Clean up glibc manual references to "GNU system" (bug 6911))


Hi!

On Sat, 18 Feb 2012 11:05:11 +0000, Robert Millan <rmh@gnu.org> wrote:
> A bigger priority for us is merging changes to code outside of
> sysdeps/.  Currently we have to add very ugly kludges [1] in sysdeps/
> directory because of the current "anti-portability" policy that
> applies to Glibc mainline.

Well, I'm pretty confident that we can work on solving such issues, if
they are presented in an appropriate manner, case by case, and with
explanations.

> [1] For example, we fix a trivial bug (missing #ifdef) in
> _dl_show_auxv() by disabling the whole function using pre-processor
> hacks: http://anonscm.debian.org/viewvc/glibc-bsd/trunk/glibc-ports/kfreebsd/dl-sysdep.c?revision=3756&view=markup

So, I looked it up; the issue is the following:

elf/dl-sysdep.c:

    void
    internal_function
    _dl_show_auxv (void)
    {
      [...]
          static const struct
          {
            const char label[17];
            enum { unknown = 0, dec, hex, str, ignore } form : 8;
          } auxvars[] =
            {
              [AT_EXECFD - 2] =             { "EXECFD:       ", dec },
              [AT_PHDR - 2] =               { "PHDR:         0x", hex },
              [AT_PHENT - 2] =              { "PHENT:        ", dec },
              [AT_PHNUM - 2] =              { "PHNUM:        ", dec },
              [AT_PAGESZ - 2] =             { "PAGESZ:       ", dec },
              [AT_BASE - 2] =               { "BASE:         0x", hex },
              [AT_FLAGS - 2] =              { "FLAGS:        0x", hex },
              [AT_ENTRY - 2] =              { "ENTRY:        0x", hex },
    #ifndef __powerpc__
              /* For some odd reason these are not in sys/powerpc/include/elf.h.  */
              [AT_NOTELF - 2] =             { "NOTELF:       ", hex },
              [AT_UID - 2] =                { "UID:          ", dec },
              [AT_EUID - 2] =               { "EUID:         ", dec },
              [AT_GID - 2] =                { "GID:          ", dec },
              [AT_EGID - 2] =               { "EGID:         ", dec },
    #endif
              [AT_EXECPATH - 2] =           { "EXECPATH:     ", str },
              [AT_CANARY - 2] =             { "CANARY:       0x", hex },
              [...]

I don't understand (and I have to leave right now, so no more time to
figure it out myself) -- but aren't all these defined in
[glibc]/elf/elf.h, generically, thus for every architecture?


GrÃÃe,
 Thomas

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]