History log of /bionic/libc/tools/gensyscalls.py
Revision Date Author Comments
7efad83d430f4d824f2aaa75edea5106f6ff8aae 09-Sep-2014 Elliott Hughes <enh@google.com> Ensure __set_errno is still visible on LP32.

The use of the .hidden directive to avoid going via the PLT for
__set_errno had the side-effect of actually making __set_errno
hidden (which is odd because assembler directives don't usually
affect symbols defined in a different file --- you can't even
create a weak reference to a symbol that's defined in a different
file).

This change switches the system call stubs over to a new always-hidden
__set_errno_internal and has a visible __set_errno on LP32 just for
binary compatibility with old NDK apps.

Bug: 17423135
Change-Id: I6b6d7a05dda85f923d22e5ffd169a91e23499b7b
e35fd48a832cddbedcf84773fd1922f735ae7829 09-Aug-2014 Dan Albert <danalbert@google.com> Make __set_errno hidden in asm.

This fixes the build after the -Bsymbolic change.

Bug: 16853291
Change-Id: I989c9fec3c32e0289ea257a3bd2b7fd2709b6ce2
(cherry picked from commit bc9f9f25bf1247a6a638a2a2df8441bdd9fabad7)
40bc7cd4ed9fb848a7b3d934f69669f64ceed707 18-Jun-2014 Christopher Ferris <cferris@google.com> DO NOT MERGE Re-add .save directive for arm assembler code.

Restored the .save directives so that the libcorkscrew unwinder continues
to function.

Bug: 15701117
Change-Id: I853695a299548b84c78ae8147b9757dbeacdb1ec
602b4e482ce7bfa768a4c84baffc3051eca52346 07-Jun-2014 Serban Constantinescu <serban.constantinescu@arm.com> AArch64: Remove Frame Record from ARM64 syscalls

This patch removes the frame record created on svc calls.

Change-Id: I67cf926ba59540e824fb9749d30538e332df7c1e
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
15a0456d0b7618554ed3d49287e77b6d43a2812a 06-Jun-2014 Elliott Hughes <enh@google.com> Remove unnecessary instructions from x86/x86_64 syscalls.

__set_errno returns -1 exactly so that callers don't need to bother.
The other architectures were already taking advantage of this, but
no one had ever fixed x86 and x86_64.

Change-Id: Ie131494be664f6c4a1bbf8c61bbbed58eac56122
15b91e92a0bb4a15b4f2258bea332f4a67fa94d7 30-May-2014 Christopher Ferris <cferris@google.com> Fix x86 cfi directives for syscalls.

The syscall generation always used 4 bytes for each push cfi directive.
However, the first push should always use an offset of 8 bytes, each
subsequent push after that is only 4 bytes though.

Change-Id: Ibaabd107f399ef67010b9a08213783957c2f74a9
df22a121b2c75021585e4eea49fd3af92d579dd0 22-May-2014 Christopher Ferris <cferris@google.com> Add cfi directives for arm64 assembler.

Fix syscall generator to add cfi directives and add the directives
for all arm64 assembler.

Bug: 15138290
Change-Id: I7f0e4a16c141ac624e5276917a3a1ed45778e057
d465eb4e76c24b1e782438a4c9e2c9abc20fe66c 20-Feb-2014 Elliott Hughes <enh@google.com> Remove the useless _C_LABEL from generated system calls.

Change-Id: Id1d2fd39972652831ea825f6f9cf940b08f42b5c
9abbbdc5346020e33a8fdbe7254dd0fdff9df616 19-Feb-2014 Elliott Hughes <enh@google.com> Make mips/mips64 syscall stubs more like the other architectures.

Change-Id: I55f8c1a95f643a6e484f12fbcc25e2c77e55b6b8
eae27dc55adca75c2332e4b767ec667acfbbbcb3 19-Feb-2014 Elliott Hughes <enh@google.com> 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
986f9067103e41296898a7c0e89f5ed84420fb5b 19-Feb-2014 Elliott Hughes <enh@google.com> Fix build by avoiding the _C_LABEL macro.

Change-Id: Ide367c2b65071388bd95fbc81a4ed6ae94aec4e4
b3a23bd0178c8edbb34e310be08e6fb73ac6ba09 11-Feb-2014 Elliott Hughes <enh@google.com> Build syscall stubs in their own library.

This lets us lose the auto-generated makefiles.

Change-Id: I2de0c71b3b9c08f9cce8f4ff7fd7254dda008c86
5043212b7615bc4c03463c4d242769de69cd4685 06-Feb-2014 Chris Dearman <chris.dearman@imgtec.com> [MIPS64] Add syscall related files

Change-Id: I2f5d05df0e767538a6fe467ca0a2386325f8b71f
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Raghu Gandham <raghu.gandham@imgtec.com>
Signed-off-by: Duane Sand <duane.sand@imgtec.com>
d1973ca51325393f304e82a4d79874f33e54ac16 22-Jan-2014 Colin Cross <ccross@android.com> bionic: rename aarch64 target to arm64

Rename aarch64 build targets to arm64. The gcc toolchain is still
aarch64.

Change-Id: Ia92d8a50824e5329cf00fd6f4f92eae112b7f3a3
e4bc7561219ddb7cfb7b33f731caa92a7766b9ca 07-Jan-2014 Christopher Ferris <cferris@google.com> Add cfi directives to x86 syscalls.

Modify the syscalls script to generate the cfi directives for x86
syscalls.

Update the x86 syscalls.

Change-Id: Ia1993dc714a7e79f917087fff8200e9a02c52603
887e1140fe7596fa1239a0bc802d2cdb51c57d3c 02-Jan-2014 Elliott Hughes <enh@google.com> Clean up <sched.h>.

This patch switches to using the uapi constants. It also adds the missing
setns system call, fixes sched_getcpu's error behavior, and fixes the
gensyscalls script now ARM is uapi-only too.

Change-Id: I8e16b1693d6d32cd9b8499e46b5d8b0a50bc4f1d
ed45970ac5a182e512669cfa5c15b9f4fa783ad7 03-Dec-2013 Christopher Ferris <cferris@google.com> Add cfi directives to all arm assembly.

Since the ENTRY/END macros now have .cfi_startproc/.cfi_endproc, most of the
custom arm assembly has no unwind information. Adding the proper cfi directives
for these and removing the arm directives.

Update the gensyscalls.py script to add these cfi directives for the generated
assembly. Also fix the references to non-uapi headers to the proper uapi
header.

In addition, remove the kill.S, tkill.S, tgkill.S for arm since they are not
needed at all. The unwinder (libunwind) is able to properly unwind using the
normal abort.

After this change, I can unwind through the system calls again.

Bug: 11559337
Bug: 11825869
Bug: 11321283

Change-Id: I18b48089ef2d000a67913ce6febc6544bbe934a3
ed74484dcbc2e156a6e5fa861a62425b12e55128 07-Nov-2013 Elliott Hughes <enh@google.com> Stop using the non-uapi <linux/err.h> header file.

We only need it for MAX_ERRNO, and it's time we had somewhere to put
the little assembler utility macros we've been putting off writing.

Change-Id: I9354d2e0dc47c689296a34b5b229fc9ba75f1a83
feaa89a1bcc643a9c3892bb56e020e00779bbb3a 07-Oct-2013 Serban Constantinescu <serban.constantinescu@arm.com> AArch64: Add support for AArch64 to the syscall interface

This patch adds support for AArch64 to the syscall interface. The kernel
implementation exports a set of canonical syscalls, therefore some of
the userspace exported syscalls are implemented as stubs based on the
canonical set.

Change-Id: Ia965d71e97769b8be9d7655193fc40303964c4df
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
6b53c2349a5a3fc70a475de6a66131b615e88e48 25-Oct-2013 Elliott Hughes <enh@google.com> Fix the exit syscall stub's name.

I've left the exit_group syscall as _exit because otherwise we'd have to
convince the compiler that our _exit (which just calls __exit_group) is
actually "noreturn", and it seems like that would be less clean than just
cutting out the middleman.

We'll just have to trust ourselves not to add anything to SYSCALLS.TXT
that ought to be private but that only has a single leading underscore.
Hopefully we can manage that.

Change-Id: Iac47faea9f516186e1774381846c54cafabc4354
fff6e272e9edea3f33b2f64ec9e342413d92e36f 25-Oct-2013 Elliott Hughes <enh@google.com> Use hidden visibility for generated stubs whose names begin with underscores.

Change-Id: Idb39fd04b7a14114801624e744e76e0e7913d951
103ccde8fe2f2c8abde914a8ba736b2e9cb8d20b 16-Oct-2013 Elliott Hughes <enh@google.com> Sort the syscalls.mk files, give all generated files the same header.

No non-comment changes to the .S files.

Change-Id: Iafcfd004c3ea92b64268f80ab16df615b97cefac
0437f3ff296a4c66675c7386b0522e6062413e5a 08-Oct-2013 Elliott Hughes <enh@google.com> Refactor the syscall generation script.

Primarily so that the new x86_64 alias functionality is now available for
all architectures.

Change-Id: I9fde59093a1d08de98923f121a6e3d05ec5801d2
6fe4e8795452651862c1e02994f434ec5f0d5832 04-Oct-2013 H.J. Lu <hjl.tools@gmail.com> Add an optional alias list to SYSCALLS.TXT

This patch adds an optional alias list to SYSCALLS.TXT. It is used to
create aliases for a syscall. For x86-64, lseek64 is an alias for lseek.

Change-Id: Icb11fd2bb461ea4f5f0a26bfc585471d7d7cc468
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
f12a18b85061e7121c7534faf3625137e56b770d 12-Dec-2012 Pavel Chupin <pavel.v.chupin@intel.com> x86_64: Add x86_64 syscalls and tune gen scripts for x86_64

* Tune syscall stubs generator for 4th target: x86_64
* Update SYSCALLS.TXT with x86_64 syscalls:
- Most of the x86 syscalls are equally supported
- *32 syscalls are not supported on 64-bit
- *64 syscalls are replaced accordingly without 64 suffix
- Some syscalls are not supported, replaced with x86_64 analog

Syscalls are regenerated as separate patch for review convenience.

Change-Id: I4ea2e0f13759b0aa61f05208ca68da8d6bc7c048
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
d612165c6705379aa50144afc35aa40c16793728 26-Sep-2013 Elliott Hughes <enh@google.com> Make it easier to add syscalls for another architecture.

Much of the per-architecture duplication can be removed, so let's do so
before we add the 64-bit architectures.

Change-Id: Ieb796503c8e5353ea38c3bab768bb9a690c9a767
18bc975bfe41a0ef8d2df1a188078b0741dc6c25 17-Jun-2013 Elliott Hughes <enh@google.com> Slight script cleanup; make gensyscalls work from any directory.

Also remove a ton of dead code.

Change-Id: I1315623695a004f643b155f121cbafe24b715b8a
1b91c6c11f6b4b8c082da41339b861981570bb4a 23-Mar-2013 Elliott Hughes <enh@google.com> Stop generating <sys/linux-syscalls.h>.

The <asm/unistd.h> files contain the canonical data, and
<sys/glibc-syscalls.h> contain new glibc-compatible names,
and if you #include the standard <sys/syscall.h> you get
both sets of names.

Change-Id: I9919c080931c0ba1660f5e37c6a6265ea716d603
cda62094ef6ab44d3804954fff75be1246725c36 22-Mar-2013 Elliott Hughes <enh@google.com> Use the correct names for the __ARM_NR_* syscalls.

This lets us move all the ARM syscall stubs over to the kernel <asm/unistd.h>.
Our generated <sys/linux-syscalls.h> is now unused, but I'll remove that in a
later change.

Change-Id: Ie5ff2cc4abce1938576af7cbaef615a79c7f310d
5c2772f59d3b6f564897187324d8606f54423207 22-Mar-2013 Elliott Hughes <enh@google.com> The SYS_ constants should cover all __NR_ values.

<sys/linux-syscalls.h> only contains constants for the syscalls
we're generating stubs for. We want all the syscalls available
on the architecture in question.

Keep using <sys/linux-syscalls.h> on ARM for now because the
__NR_ARM_set_tls and __NR_ARM_cacheflush values aren't in <asm/unistd.h>.

Change-Id: I66683950d87d9b18d6107d0acc0ed238a4496f44
9724ce3a09f8c0869a45c4ebdef665a1ee049734 22-Mar-2013 Elliott Hughes <enh@google.com> Don't #define SYS_ constants unless they make sense for the current architecture.

Fixes the MIPS and x86 builds. strace tests whether syscalls
are supported using #ifdef of the appropriate SYS_ constant.

Change-Id: I90be118dc42abfdaf5b0f9b1e676e8601f55106e
8ecf2258274b6ef2630a503a314573d80517465a 22-Mar-2013 Elliott Hughes <enh@google.com> Provide glibc-compatible SYS_* aliases for the __NR_* constants.

This helps us remove another external/strace bionic hack.

Change-Id: I3e82c0d2fd27e479be98f096e05b666fd16f8eb3
9aceab50155b17741faded1fb22e2daa51a07fb1 12-Mar-2013 Elliott Hughes <enh@google.com> Use the kernel's MAX_ERRNO in the syscall stubs.

Bug: http://code.google.com/p/android/issues/detail?id=53104
Change-Id: Iaabf7025b153e96dc5eca231a33a32d4cb7d8116
cd6780b1677503a0dfa91c8a9c0c635dbbd48366 07-Feb-2013 Elliott Hughes <enh@google.com> Remove dead code from gensyscalls.py.

Change-Id: I0df69f8fd990f829ccbfcd5123c17b523d5a4d45
7582a9c119a4e4d0c306996b2513205889a9fb6c 07-Feb-2013 Elliott Hughes <enh@google.com> Switch x86 syscall stubs over to the ENTER/END style of the ARM stubs.

Also update the x86 asm.h to support this; we need it for libm assembler
anyway.

Also clean up the _FBSDID hack in <sys/cdefs.h>.

Change-Id: Iababd977b8110ec022bf7c93f4d62ece47630e7c
c95eb57405d3d2f0e6cfab313aa74b1bad280452 30-Jan-2013 Elliott Hughes <enh@google.com> Clean up trailing whitespace in the kernel headers.

And fix the scripts so they stop letting trailing whitespace through.

Change-Id: Ie109fbe1f63321e565ba0fa60fee8e9cf3a61cfc
faa0fdb1194172f578f973097d61e580bce528dc 16-Jan-2013 Matthieu Castet <matthieu.castet@gmail.com> arm syscall : for eabi call_default don't use stack

In the default case, we don't need to use the stack, we can save r7 with
ip register (that what does eglibc).

This allow to fix vfork data corruption
(see 3884bfe9661955543ce203c60f9225bbdf33f6bb), because vfork now don't
use the stack.
e33af61c7073719b027e038fbcdde49363b604ee 16-May-2012 Elliott Hughes <enh@google.com> Remove the last references to SuperH.

Change-Id: Icb44c1f94cb178d90b4c2b1e8f6d175586aec4e1
1928523c870f7acd7f34870f4bb4ab9c6215bf7a 10-May-2012 Elliott Hughes <enh@google.com> Actually set the header guard in "linux-syscalls.h".

Spotted while merging a MIPS change.

Change-Id: I36fb5a07d0bba0c117e9fe9733957bd37ca4b4c0
1fa0d849576555577ffd9675677a3c95f21b754e 28-Jan-2012 Raghu Gandham <raghu@mips.com> [MIPS] Add support for MIPS syscalls

Change-Id: I4deba67e15c865c4c2db03064c04098a09828ea6
Signed-off-by: Raghu Gandham <raghu@mips.com>
Signed-off-by: Chris Dearman <chris@mips.com>
70b1668a76d3b719ae690903ea790fda964a5458 30-Jan-2012 David 'Digit' Turner <digit@google.com> remove obsolete SuperH support

We don't have a toolchain anymore, we don't have working original
kernel headers, and nobody is maintaining this so there is really
no point in keeping this here. Details of the patch:

- removed code paths from Android.mk files related to the SuperH
architecture ("sh")

- removed libc/arch-sh, linker/arch-sh, libc/kernel/arch-sh

- simplified libc/SYSCALLS.TXT

- simplified the scripts in libc/tools/ and libc/kernel/tools

Change-Id: I26b0e1422bdc347489e4573e2fbec0e402f75560

Signed-off-by: David 'Digit' Turner <digit@android.com>
d6045cba4e572cf9ed0b87efddce93f3c4a80a8f 18-Jan-2012 Nick Kralevich <nnk@google.com> Don't generate sys/linux-unistd.h

linux-unistd.h was here for reference purposes, but shouldn't
have been accessible to client code. Delete it.

Change-Id: I60c264ff6ca489a48117914bdf6daa486737af8c
f540c03bff8bb15f1954df275629fd32dc87aaf5 17-Feb-2011 Kenny Root <kroot@google.com> libc: ARM: add size info to gensyscalls

Add size information to gensyscalls output for ARM syscalls with new
BEGIN(x) and END(x) macros in arch-arm/include/machine/asm.h

Change-Id: I791406f8b17abcb83b70a6d15a65a527de15d3f5
fc2693110ee8a2ba22a445ad9855fbe9e118d439 11-Oct-2010 David 'Digit' Turner <digit@google.com> libc: Update auto-gen scripts

Make the scripts use external/kernel-headers/original by default.

clean_header.py: Document -k<path>, add -d<path>
find_headers.py: Make kernel config files optional
update_all.py: Allow setting the path to kernel headers on the command-line
update_all.py: Better formatting of output on ttys
update_all.py: Automatically perform "git add/rm" on affected files.
SYSCALLS.TXT: Fix typo in __socketcall definition.
checksyscalls.py: Add support for superH architecture in the checks.
gensyscalls.py: Automatically perform "git add/rm" on affected files.
cpp.py: Fixed a bug that prevented certain type definitions to
be kept in the generated clean header (e.g.
struct ethtool_drvinfo in <linux/ethtool.h>)

All scripts will use the content of external/kernel-headers/original by default now.

The generated code removes all empty lines and trailing whitespace. This is useful
to ensure a unified output even if we change the parser again in the future.

The top-level disclaimer has been edited with update instructions to regenerate
the headers when needed.

Also, a warning is now inserted every 8th line in the final output:

/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */

Changes under kernel/arch-arm and kernel/arch-x86 should correspond to whitespace
differences and additionnal struct definitions that were missed by the previous
parser implementation.

Change-Id: Icd1c056bacd766759f3e9b7bb5d63a246f3d656a

WARNING: If you run these script, do not submit the result to gerrit for now.
It seems there are discrepancies between the content of original headers
and those currently commited under bionic/libc/kernel/.

(This problem is the main motivation to insert the warning repeatedly).

Current list of issues:

- Missing SuperH headers (i.e. external/kernel-headers/original/asm-sh)
95d751feacdb58d3fbc36f3f21a895a3ec2f065b 16-Dec-2010 David 'Digit' Turner <digit@google.com> libc: Add ftruncate64 and improve 64-bit parameter syscall handling.

This patch improves the handling of 64-bit parameters in syscalls on ARM.
The ARM EABI mandates that 64-bit quantities be passed in even/odd register
pairs, which requires special treatment.

This allows us to simplify our implementations of pread() and pwrite()
and remove the C stubs for pread64() and pwrite64().

Also add ftruncate64() to <unistd.h>

Change-Id: I407e2fd223ba0093dd2d0b04c6152fadfc9ce3ef

Bug 3107933
ce0595d01de9103d40b83b35e0d6ac8b123aa24c 01-Sep-2009 Shin-ichiro KAWASAKI <shinichiro.kawasaki.mg@hitachi.com> modified SYSCALLS.TXT to support SuperH architecture
1dc9e472e19acfe6dc7f41e429236e7eef7ceda1 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
1767f908af327fa388b1c66883760ad851267013 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
4e468ed2eb86a2406e14f1eca82072ee501d05fd 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution