diff options
author | vda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2007-05-31 22:16:38 +0000 |
---|---|---|
committer | vda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2007-05-31 22:16:38 +0000 |
commit | 3ea433409694393b67dd9dee3b184268ab75ac56 (patch) | |
tree | f2d3fe127fb6c3c1d3b919631de6e6ed7cbc1791 /applets | |
parent | 2c31c731f0026b9f92dc0e07542fb8e38cad7dd2 (diff) | |
download | busybox-w32-3ea433409694393b67dd9dee3b184268ab75ac56.tar.gz busybox-w32-3ea433409694393b67dd9dee3b184268ab75ac56.tar.bz2 busybox-w32-3ea433409694393b67dd9dee3b184268ab75ac56.zip |
use "glibc errno" trick not only for ash, but for entire busybox
(add/remove: 1/1 grow/shrink: 37/37 up/down: 139/-228) Total: -89 bytes
git-svn-id: svn://busybox.net/trunk/busybox@18716 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'applets')
-rw-r--r-- | applets/applets.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/applets/applets.c b/applets/applets.c index e905ebec4..bd3704394 100644 --- a/applets/applets.c +++ b/applets/applets.c | |||
@@ -641,10 +641,19 @@ void run_applet_and_exit(const char *name, char **argv) | |||
641 | } | 641 | } |
642 | 642 | ||
643 | 643 | ||
644 | #ifdef __GLIBC__ | ||
645 | /* Make it reside in R/W memory: */ | ||
646 | int *const bb_errno __attribute__ ((section (".data"))); | ||
647 | #endif | ||
648 | |||
644 | int main(int argc, char **argv) | 649 | int main(int argc, char **argv) |
645 | { | 650 | { |
646 | const char *s; | 651 | const char *s; |
647 | 652 | ||
653 | #ifdef __GLIBC__ | ||
654 | (*(int **)&bb_errno) = __errno_location(); | ||
655 | #endif | ||
656 | |||
648 | #if !BB_MMU | 657 | #if !BB_MMU |
649 | /* NOMMU re-exec trick sets high-order bit in first byte of name */ | 658 | /* NOMMU re-exec trick sets high-order bit in first byte of name */ |
650 | if (argv[0][0] & 0x80) { | 659 | if (argv[0][0] & 0x80) { |