~ubuntu-branches/ubuntu/trusty/eglibc/trusty

« back to all changes in this revision

Viewing changes to sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2013-01-10 18:39:35 UTC
  • mfrom: (1.5.2) (4.4.24 experimental)
  • Revision ID: package-import@ubuntu.com-20130110183935-afsgfxkmg7wk5eaj
Tags: 2.17-0ubuntu1
* Merge with Debian, bringing in a new upstream and many small fixes:
  - patches/any/cvs-malloc-deadlock.diff: Dropped, merged upstream.
  - patches/ubuntu/lddebug-scopes.diff: Rebase for upstream changes.
  - patches/ubuntu/local-CVE-2012-3406.diff: Rebased against upstream.
  - patches/ubuntu/no-asm-mtune-i686.diff: Fixed in recent binutils.
* This upstream merge fixes a nasty hang in pulseaudio (LP: #1085342)
* Bump MIN_KERNEL_SUPPORTED to 2.6.32 on ARM, now that we no longer
  have to support shonky 2.6.31 kernels on imx51 babbage builders.
* Drop patches/ubuntu/local-disable-nscd-host-caching.diff, as these
  issues were apparently resolved upstream a while ago (LP: #613662)
* Fix the compiled-in bug URL to point to launchpad.net, not Debian.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* Operating system support for run-time dynamic linker.  Linux/PPC version.
2
 
   Copyright (C) 1997, 1998, 2001, 2003, 2006, 2007
3
 
   Free Software Foundation, Inc.
 
2
   Copyright (C) 1997-2012 Free Software Foundation, Inc.
4
3
   This file is part of the GNU C Library.
5
4
 
6
5
   The GNU C Library is free software; you can redistribute it and/or
44
43
        __cache_line_size = av->a_un.a_val;                                   \
45
44
        break;
46
45
 
47
 
#ifndef __ASSUME_STD_AUXV
48
 
 
49
 
/* The PowerPC's auxiliary argument block gets aligned to a 16-byte
50
 
   boundary.  This is history and impossible to change compatibly.  */
51
 
 
52
 
#define DL_FIND_ARG_COMPONENTS(cookie, argc, argv, envp, auxp) \
53
 
  do {                                                                        \
54
 
    char **_tmp;                                                              \
55
 
    size_t _test;                                                             \
56
 
    (argc) = *(long int *) cookie;                                            \
57
 
    (argv) = (char **) cookie + 1;                                            \
58
 
    (envp) = (argv) + (argc) + 1;                                             \
59
 
    for (_tmp = (envp); *_tmp; ++_tmp)                                        \
60
 
      continue;                                                               \
61
 
    /* The following '++' is important!  */                                   \
62
 
    ++_tmp;                                                                   \
63
 
                                                                              \
64
 
    _test = (size_t)_tmp;                                                     \
65
 
    _test = (_test + 0xf) & ~0xf;                                             \
66
 
    /* Under some circumstances, MkLinux (up to at least DR3a5)               \
67
 
       omits the padding.  To work around this, we make a                     \
68
 
       basic sanity check of the argument vector.  Of                         \
69
 
       course, this means that in future, the argument                        \
70
 
       vector will have to be laid out to allow for this                      \
71
 
       test :-(.  */                                                          \
72
 
     if (((ElfW(auxv_t) *)_test)->a_type <= 0x10)                             \
73
 
       _tmp = (char **)_test;                                                 \
74
 
    (auxp) = (ElfW(auxv_t) *) _tmp;                                           \
75
 
  } while (0)
76
 
#endif
77
 
 
78
46
#include <sysdeps/unix/sysv/linux/dl-sysdep.c>