Commit Graph

6504 Commits

Author SHA1 Message Date
Elliott Hughes
fbaddda9f0 Merge "Linker writes to wrong memory location when processing DT_MIPS_RLD_MAP" 2014-02-19 23:40:46 +00:00
Elliott Hughes
b69c0b532e Merge "Make mips/mips64 syscall stubs more like the other architectures." 2014-02-19 23:35:31 +00:00
Elliott Hughes
6db95a869e Merge "Top-level documentation about working on bionic." 2014-02-19 22:58:04 +00:00
Elliott Hughes
9abbbdc534 Make mips/mips64 syscall stubs more like the other architectures.
Change-Id: I55f8c1a95f643a6e484f12fbcc25e2c77e55b6b8
2014-02-19 14:54:31 -08:00
Elliott Hughes
e6c451f5f2 Merge "Make mips generated assembler more like the mips64 stuff." 2014-02-19 20:28:34 +00:00
Elliott Hughes
eae27dc55a Make mips generated assembler more like the mips64 stuff.
I broke the mips build yesterday because it doesn't use
<private/bionic_asm.h> like the other architectures, including mips64.
I want to move mips closer to mips64 to try to avoid this kind of thing
in future.

Change-Id: Idb985587ff355b9e5e765c1f5671dc0144cd2488
2014-02-19 12:20:00 -08:00
Elliott Hughes
560cee6bff Top-level documentation about working on bionic.
Change-Id: If0a531865fa9c0d57486b98d4b78e3efcbf4e1d1
2014-02-18 22:08:56 -08:00
Elliott Hughes
44ef37c1b4 Merge "Use uid_t and gid_t for st_uid and st_gid in struct stat." 2014-02-19 00:51:31 +00:00
Elliott Hughes
24ef4779eb Merge "Fix build by avoiding the _C_LABEL macro." 2014-02-19 00:46:32 +00:00
Elliott Hughes
6b5559315d Use uid_t and gid_t for st_uid and st_gid in struct stat.
Change-Id: Ide62dc714d76d881e3aa79e7a59ee6533a23dd00
2014-02-18 16:43:31 -08:00
Elliott Hughes
986f906710 Fix build by avoiding the _C_LABEL macro.
Change-Id: Ide367c2b65071388bd95fbc81a4ed6ae94aec4e4
2014-02-18 16:42:36 -08:00
Benjamin Adolphi
006f9ad891 Linker writes to wrong memory location when processing DT_MIPS_RLD_MAP
When bionic's dynamic linker processes the .dynamic section of a MIPS ELF binary and encounters the DT_MIPS_RLD_MAP dynamic array tag, it calculates the address of where to write a pointer to the _r_debug structure. The current implementation simply reads the value given in the d_ptr field and writes the pointer address to that location. However, this value has to be adjusted to reflect the real load address of the binary. Otherwise the linker will write to a faulty location possibly resulting in a crash when linking a MIPS binary that includes DT_MIPS_RLD_MAP. This change corrects that problem.

Change-Id: I1a91874f7ab47289001fe72d9016660c14c70362
Signed-off-by: Benjamin Adolphi <b.adolphi@gmail.com>
2014-02-19 00:50:32 +01:00
Elliott Hughes
787c1f937a Merge "Add missing file from previous change." 2014-02-18 23:49:16 +00:00
Elliott Hughes
1d18e9cc0a Add missing file from previous change.
Change-Id: Id25000162a9ed76ce756842bdc09fe9afff9528f
2014-02-18 15:48:56 -08:00
Elliott Hughes
b36020789a Merge "Implement some of the missing LFS64 support." 2014-02-18 23:40:56 +00:00
Elliott Hughes
db1ea34748 Implement some of the missing LFS64 support.
This gives us:

* <dirent.h>
  struct dirent64
  readdir64, readdir64_r, alphasort64, scandir64

* <fcntl.h>
  creat64, openat64, open64.

* <sys/stat.h>
  struct stat64
  fstat64, fstatat64, lstat64, stat64.

* <sys/statvfs.h>
  struct statvfs64
  statvfs64, fstatvfs64.

* <sys/vfs.h>
  struct statfs64
  statfs64, fstatfs64.

This also removes some of the incorrect #define hacks we've had in the
past (for stat64, for example, which we promised to clean up way back
in bug 8472078).

Bug: 11865851
Bug: 8472078
Change-Id: Ia46443521918519f2dfa64d4621027dfd13ac566
2014-02-18 15:39:24 -08:00
Elliott Hughes
3623d80675 Merge "Fix x86 build." 2014-02-18 20:35:15 +00:00
Elliott Hughes
915fefb62e Fix x86 build.
Change-Id: Iee6e5884288f7da6c955694cfe32fecfd9c9e263
2014-02-18 12:34:51 -08:00
Elliott Hughes
ffe026680e Merge "bionic: fix __set_errno for arm64 syscalls that return a 64-bit value" 2014-02-18 20:31:01 +00:00
Colin Cross
3d19a8319b bionic: fix __set_errno for arm64 syscalls that return a 64-bit value
bionic/libc/arch-arm64/syscalls/read.S ends with:
    b.hi __set_errno
    ret
END(read)

If __set_errno returns int, it will set w0 to 0xFFFFFFFF, which means
x0 is 0x00000000FFFFFFFF.  When interpreted as a ssize_t that is
INT_MAX, not -1.

Change __set_errno to return long, which will cause x0 to be set instead
of w0.

Change-Id: I9f9ea0f2995928d2ea240eb2ff7758ecdf0ff412
2014-02-18 12:11:38 -08:00
Elliott Hughes
7f15e28dd4 Merge "Clean up warnings in libstdc++." 2014-02-18 20:05:59 +00:00
Elliott Hughes
cd6748cdd7 Merge "Clean up various warnings in bionic." 2014-02-18 20:05:17 +00:00
Elliott Hughes
a38cb08861 Clean up various warnings in bionic.
Change-Id: Ic57541d0a567fd4ae79f0ad59b2ffde1130eb7d2
2014-02-18 12:04:54 -08:00
Elliott Hughes
240f1e2940 Clean up warnings in libstdc++.
Change-Id: Ie71a2fdf227e7a5fc9a446bb1be110da9b3a4280
2014-02-18 12:02:37 -08:00
Elliott Hughes
d4bc9ef83b Merge "Remove duplicate definitions of MIN and MAX." 2014-02-17 19:00:18 +00:00
Elliott Hughes
cfbfe7059c Remove duplicate definitions of MIN and MAX.
These were needed when bionic's header files were missing these macros (though
it would have made a lot more sense to just fix the header files!) but cause
warnings now.

Change-Id: I65a677122f4f6bd07dffc3f37a0c4c0e823d1bb0
2014-02-17 10:57:56 -08:00
Colin Cross
95b808c4ae Merge "build linker and linker64 on 64-bit architectures" 2014-02-14 00:56:22 +00:00
Colin Cross
36ee4ab243 build linker and linker64 on 64-bit architectures
Change-Id: I400bbaf5a779fc427de4c3d86c66548b0179b10d
2014-02-13 11:18:47 -08:00
Elliott Hughes
fadc8a7777 Merge "Restore sys_signame for LP64." 2014-02-13 03:43:11 +00:00
Elliott Hughes
671e236d5f Restore sys_signame for LP64.
mksh is using this, and we probably build as much BSD source as glibc source.

Change-Id: I400d255a67f9614ca9e57090e3a2e49d2b10cba4
2014-02-12 19:04:27 -08:00
Elliott Hughes
fc48e8cf28 Merge "Remove unused variables not spotted by GCC." 2014-02-13 01:23:31 +00:00
Elliott Hughes
c62b8a4d3f Remove unused variables not spotted by GCC.
Change-Id: I49a16096bc0f41f3ad0007249161e8bdfcf3438c
2014-02-12 17:17:41 -08:00
Elliott Hughes
7b3876e251 Merge "Clean up sys_signame and sys_siglist a little." 2014-02-13 01:10:42 +00:00
Elliott Hughes
aa0ebdafc7 Clean up sys_signame and sys_siglist a little.
We don't need quite so much duplication because we already have a way
to get the signal number from its name, and that already copes with the
fact that the mips/mips64 numbers are different from everyone else's.

Also remove sys_signame from LP64. glibc doesn't have this BSD-ism.

Change-Id: I6dc411a3d73589383c85d3b07d9d648311492a10
2014-02-12 17:09:25 -08:00
Ying Wang
9e572ca416 Merge "Fix missing args." 2014-02-13 00:43:23 +00:00
Ying Wang
76c8b88269 Fix missing args.
Change-Id: I89a366db984ea6b2553896a4351e59bb91f93040
2014-02-12 16:40:55 -08:00
Ying Wang
c4c50b25f8 Merge "Reconfig libc's Android.mk to build for multilib" 2014-02-12 23:53:08 +00:00
Ying Wang
f25d677147 Reconfig libc's Android.mk to build for multilib
1. Moved arch-specific setup to their own files:
    - <arch>/<arch>.mk, arch-specific configs. Variables in those config
      end with the arch name.
    - removed the extra complexity introduced by function libc-add-cpu-variant-src,
      which seems to be not very useful these days.
2. Separated out the crt object files generation rules and set up the
   rules for both TARGET_ARCH and TARGET_2ND_ARCH.
3. Build all the libraries for both TARGET_ARCH and TARGET_2ND_ARCH,
  with the arch-specific LOCAL_ variables.

Bug: 11654773
Change-Id: I9c2d85db0affa49199d182236d2210060a321421
2014-02-12 13:58:34 -08:00
Elliott Hughes
819c132ebc Merge "Fix NSIG." 2014-02-12 20:13:29 +00:00
Elliott Hughes
199346a2ab Fix NSIG.
Our sigset_t definition hasn't been tied to our NSIG definition since we
switched to uapi headers, so we can now fix it without breaking the LP32 ABI.
The kernel uapi headers define and use _NSIG, so we need to have our scripts
rename the kernel's definitions out of the way, then we can define _NSIG
and NSIG in terms of the kernel's off-by-one value.

Bug: 12938442
Change-Id: Ic7c86fd5be5ad1d822f7b2b1d88c8a0d70a1ac0f
2014-02-11 22:16:04 -08:00
Elliott Hughes
022885e2fa Merge "Clean up all the lint cpplint can find in the dynamic linker." 2014-02-12 01:35:04 +00:00
Elliott Hughes
faf05bacd4 Clean up all the lint cpplint can find in the dynamic linker.
Change-Id: Ic9ee7153817c22a252cc4b309283e355b623cab9
2014-02-11 17:33:49 -08:00
Elliott Hughes
577fce0108 Merge "[MIPS64] Dynamic linker" 2014-02-11 23:48:51 +00:00
Chris Dearman
9918665a45 [MIPS64] Dynamic linker
Change-Id: I937c7c776cae3d66e214798d5217a922cd106bfc
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Duane Sand <duane.sand@imgtec.com>
2014-02-11 15:33:14 -08:00
Elliott Hughes
c856baeead Merge "Build syscall stubs in their own library." 2014-02-11 22:01:45 +00:00
Elliott Hughes
b3a23bd017 Build syscall stubs in their own library.
This lets us lose the auto-generated makefiles.

Change-Id: I2de0c71b3b9c08f9cce8f4ff7fd7254dda008c86
2014-02-11 13:52:02 -08:00
Elliott Hughes
a206dde5bd Merge "Clean up cacheflush." 2014-02-11 18:28:03 +00:00
Elliott Hughes
a6ecba4d23 Clean up cacheflush.
No cacheflush for LP64; use the GCC builtin instead. Clean up the
32-bit MIPS implementation now we no longer need to worry about
old versions of GCC.

Bug: 12924756
Change-Id: Ie23955b3ec194e226c4b2bce35b11d5e061f4753
2014-02-11 10:24:40 -08:00
Elliott Hughes
71e4466b10 Merge "Switch <elf.h> over to linux uapi under the covers." 2014-02-11 02:22:45 +00:00
Elliott Hughes
0266ae5f88 Switch <elf.h> over to linux uapi under the covers.
Remove the linker's reliance on BSD cruft and use the glibc-style
ElfW macro. (Other code too, but the linker contains the majority
of the code that needs to work for Elf32 and Elf64.)

All platforms need dl_iterate_phdr_static, so it doesn't make sense
to have that part of the per-architecture configuration.

Bug: 12476126
Change-Id: I1d7f918f1303a392794a6cd8b3512ff56bd6e487
2014-02-10 18:22:24 -08:00