summaryrefslogtreecommitdiffstats
path: root/perl-install/install/share/po/ja.po
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/install/share/po/ja.po')
-rw-r--r--perl-install/install/share/po/ja.po140
1 files changed, 75 insertions, 65 deletions
diff --git a/perl-install/install/share/po/ja.po b/perl-install/install/share/po/ja.po
index 20c9cd6df..64a040b02 100644
--- a/perl-install/install/share/po/ja.po
+++ b/perl-install/install/share/po/ja.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: DrakX-ja\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-06-02 10:44+0300\n"
+"POT-Creation-Date: 2012-07-26 16:50+0200\n"
"PO-Revision-Date: 2009-03-22 21:11+0900\n"
"Last-Translator: Yukiko Bando <ybando@k6.dion.ne.jp>\n"
"Language-Team: Japanese <cooker-i18n@mandrivalinux.org>\n"
@@ -165,23 +165,28 @@ msgstr ""
"パッケージリストのファイルが見つかりません。ミラーの場所が正しいか確認してく"
"ださい。"
-#: any.pm:335
+#: any.pm:338 pkgs.pm:381
+#, fuzzy, c-format
+msgid "An error occurred:"
+msgstr "エラーが発生しました"
+
+#: any.pm:349
#, c-format
msgid "Looking at packages already installed..."
msgstr "インストール済みパッケージを探しています..."
-#: any.pm:370
+#: any.pm:383
#, c-format
msgid "Finding packages to upgrade..."
msgstr "更新するパッケージを探しています..."
-#: any.pm:388
+#: any.pm:396
#, c-format
msgid "Removing packages prior to upgrade..."
msgstr "アップグレードする前にパッケージを削除しています..."
#. -PO: keep the double empty lines between sections, this is formatted a la LaTeX
-#: any.pm:603
+#: any.pm:611
#, c-format
msgid ""
"The following packages will be removed to allow upgrading your system: %s\n"
@@ -194,72 +199,72 @@ msgstr ""
"\n"
"これらのパッケージを削除してよろしいですか?\n"
-#: any.pm:822
+#: any.pm:830
#, c-format
msgid "Error reading file %s"
msgstr "ファイル %s を読み込み中にエラー"
-#: any.pm:1030
+#: any.pm:1038
#, c-format
msgid "The following disk(s) were renamed:"
msgstr "次のディスクの名前は変更されました:"
-#: any.pm:1032
+#: any.pm:1040
#, c-format
msgid "%s (previously named as %s)"
msgstr "%s (変更前の名前は %s)"
-#: any.pm:1089
+#: any.pm:1097
#, c-format
msgid "HTTP"
msgstr "HTTP"
-#: any.pm:1089
+#: any.pm:1097
#, c-format
msgid "FTP"
msgstr "FTP"
-#: any.pm:1089
+#: any.pm:1097
#, c-format
msgid "NFS"
msgstr "NFS"
-#: any.pm:1108 steps_interactive.pm:961
+#: any.pm:1116 steps_interactive.pm:961
#, c-format
msgid "Network"
msgstr "ネットワーク"
-#: any.pm:1112
+#: any.pm:1120
#, c-format
msgid "Please choose a media"
msgstr "メディアを選んでください"
-#: any.pm:1128
+#: any.pm:1136
#, c-format
msgid "File already exists. Overwrite it?"
msgstr "ファイルが既に存在します。上書きしますか?"
-#: any.pm:1132
+#: any.pm:1140
#, c-format
msgid "Permission denied"
msgstr "アクセス許可がありません"
-#: any.pm:1180
+#: any.pm:1188
#, c-format
msgid "Bad NFS name"
msgstr "不正な NFS 名"
-#: any.pm:1201
+#: any.pm:1209
#, c-format
msgid "Bad media %s"
msgstr "不正なメディア %s"
-#: any.pm:1245
+#: any.pm:1253
#, c-format
msgid "Cannot make screenshots before partitioning"
msgstr "パーティション設定が終わるまでスクリーンショットは撮れません"
-#: any.pm:1253
+#: any.pm:1261
#, c-format
msgid "Screenshots will be available after install in %s"
msgstr ""
@@ -270,7 +275,7 @@ msgstr ""
msgid "Installation"
msgstr "インストール"
-#: gtk.pm:135 share/meta-task/compssUsers.pl:43
+#: gtk.pm:135
#, c-format
msgid "Configuration"
msgstr "設定"
@@ -358,22 +363,17 @@ msgstr ""
msgid "A fatal error occurred: %s."
msgstr "致命的なエラーが発生: %s."
-#: pkgs.pm:381
-#, fuzzy, c-format
-msgid "An error occurred:"
-msgstr "エラーが発生しました"
-
-#: pkgs.pm:858 pkgs.pm:895
+#: pkgs.pm:859 pkgs.pm:896
#, c-format
msgid "Do not ask again"
msgstr "次回から確認しない"
-#: pkgs.pm:874
+#: pkgs.pm:875
#, c-format
msgid "%d installation transactions failed"
msgstr "%d 件のインストールが失敗しました"
-#: pkgs.pm:875
+#: pkgs.pm:876
#, fuzzy, c-format
msgid "Installation of packages failed:"
msgstr "パッケージ %s をインストール"
@@ -794,69 +794,79 @@ msgstr "画像をクリックすると大きなプレビューが表示されま
msgid "Package Group Selection"
msgstr "パッケージグループを選択"
-#: steps_gtk.pm:340 steps_interactive.pm:647
+#: steps_gtk.pm:344 steps_interactive.pm:647
#, c-format
msgid "Individual package selection"
msgstr "パッケージを個別に選択"
+#: steps_gtk.pm:351
+#, c-format
+msgid "Select All"
+msgstr ""
+
+#: steps_gtk.pm:352
+#, c-format
+msgid "Unselect All"
+msgstr ""
+
# Changed "total size" to "total", due to problem of available
# space on screen.
-#: steps_gtk.pm:364 steps_interactive.pm:562
+#: steps_gtk.pm:371 steps_interactive.pm:562
#, c-format
msgid "Total size: %d / %d MB"
msgstr "合計: %d/%d MB"
-#: steps_gtk.pm:409
+#: steps_gtk.pm:416
#, c-format
msgid "Version: "
msgstr "バージョン: "
-#: steps_gtk.pm:410
+#: steps_gtk.pm:417
#, c-format
msgid "Size: "
msgstr "サイズ: "
-#: steps_gtk.pm:410
+#: steps_gtk.pm:417
#, c-format
msgid "%d KB\n"
msgstr "%d KB\n"
-#: steps_gtk.pm:411
+#: steps_gtk.pm:418
#, c-format
msgid "Importance: "
msgstr "重要性: "
-#: steps_gtk.pm:412
+#: steps_gtk.pm:419
#, c-format
msgid "No description"
msgstr "説明なし"
-#: steps_gtk.pm:446
+#: steps_gtk.pm:453
#, c-format
msgid "You cannot select/unselect this package"
msgstr "このパッケージの選択/非選択は変更できません"
-#: steps_gtk.pm:450
+#: steps_gtk.pm:457
#, c-format
msgid "due to missing %s"
msgstr "%s がないために"
-#: steps_gtk.pm:451
+#: steps_gtk.pm:458
#, c-format
msgid "due to unsatisfied %s"
msgstr "%s が依存を満たしていないために"
-#: steps_gtk.pm:452
+#: steps_gtk.pm:459
#, c-format
msgid "trying to promote %s"
msgstr "%s をアップグレードするために"
-#: steps_gtk.pm:453
+#: steps_gtk.pm:460
#, c-format
msgid "in order to keep %s"
msgstr "%s を維持するために"
-#: steps_gtk.pm:458
+#: steps_gtk.pm:465
#, c-format
msgid ""
"You cannot select this package as there is not enough space left to install "
@@ -864,113 +874,113 @@ msgid ""
msgstr ""
"このパッケージは選択できません。インストールに必要な空き容量がありません。"
-#: steps_gtk.pm:461
+#: steps_gtk.pm:468
#, c-format
msgid "The following packages are going to be installed"
msgstr "以下のパッケージをインストールします"
-#: steps_gtk.pm:462
+#: steps_gtk.pm:469
#, c-format
msgid "The following packages are going to be removed"
msgstr "以下のパッケージを削除します"
-#: steps_gtk.pm:488
+#: steps_gtk.pm:495
#, c-format
msgid "This is a mandatory package, it cannot be unselected"
msgstr "これは必須パッケージです。選択を解除することはできません。"
-#: steps_gtk.pm:490
+#: steps_gtk.pm:497
#, c-format
msgid "You cannot unselect this package. It is already installed"
msgstr "このパッケージの選択は解除できません。既にインストールされています。"
-#: steps_gtk.pm:492
+#: steps_gtk.pm:499
#, c-format
msgid "You cannot unselect this package. It must be upgraded"
msgstr "このパッケージの選択は解除できません。アップグレードが必要です。"
-#: steps_gtk.pm:496
+#: steps_gtk.pm:503
#, c-format
msgid "Show automatically selected packages"
msgstr "自動的に選択されたパッケージを表示"
-#: steps_gtk.pm:503
+#: steps_gtk.pm:510
#, c-format
msgid "Install"
msgstr "インストール"
-#: steps_gtk.pm:506
+#: steps_gtk.pm:513
#, c-format
msgid "Load/Save selection"
msgstr "選択を読み込む/保存する"
-#: steps_gtk.pm:507
+#: steps_gtk.pm:514
#, c-format
msgid "Updating package selection"
msgstr "パッケージの選択を更新"
-#: steps_gtk.pm:512
+#: steps_gtk.pm:519
#, c-format
msgid "Minimal install"
msgstr "最小インストール"
-#: steps_gtk.pm:525
+#: steps_gtk.pm:532
#, c-format
msgid "Software Management"
msgstr "ソフトウェアの管理"
-#: steps_gtk.pm:525 steps_interactive.pm:443
+#: steps_gtk.pm:532 steps_interactive.pm:443
#, c-format
msgid "Choose the packages you want to install"
msgstr "インストールするパッケージを選んでください"
-#: steps_gtk.pm:542 steps_interactive.pm:661 steps_list.pm:32
+#: steps_gtk.pm:549 steps_interactive.pm:661 steps_list.pm:32
#, c-format
msgid "Installing"
msgstr "インストール中"
-#: steps_gtk.pm:572
+#: steps_gtk.pm:579
#, c-format
msgid "No details"
msgstr "詳細なし"
-#: steps_gtk.pm:591
+#: steps_gtk.pm:598
#, c-format
msgid "Time remaining:"
msgstr "残り時間:"
-#: steps_gtk.pm:592
+#: steps_gtk.pm:599
#, c-format
msgid "(estimating...)"
msgstr "(試算しています...)"
-#: steps_gtk.pm:622
+#: steps_gtk.pm:629
#, c-format
msgid "%d package"
msgid_plural "%d packages"
msgstr[0] "%d 個のパッケージ"
-#: steps_gtk.pm:677 steps_interactive.pm:825 steps_list.pm:43
+#: steps_gtk.pm:684 steps_interactive.pm:825 steps_list.pm:43
#, c-format
msgid "Summary"
msgstr "まとめ"
-#: steps_gtk.pm:696
+#: steps_gtk.pm:703
#, c-format
msgid "Configure"
msgstr "設定"
-#: steps_gtk.pm:713 steps_interactive.pm:821 steps_interactive.pm:973
+#: steps_gtk.pm:720 steps_interactive.pm:821 steps_interactive.pm:973
#, c-format
msgid "not configured"
msgstr "設定されていません"
-#: steps_gtk.pm:747
+#: steps_gtk.pm:754
#, c-format
msgid "Media Selection"
msgstr "メディアの選択"
-#: steps_gtk.pm:756 steps_interactive.pm:343
+#: steps_gtk.pm:763 steps_interactive.pm:343
#, c-format
msgid ""
"The following installation media have been found.\n"
@@ -979,7 +989,7 @@ msgstr ""
"次のインストールメディアを検出しました。\n"
"使用しないものがあればここで選択を解除してください。"
-#: steps_gtk.pm:772 steps_interactive.pm:349
+#: steps_gtk.pm:779 steps_interactive.pm:349
#, c-format
msgid ""
"You have the option to copy the contents of the CDs onto the hard disk drive "
@@ -991,7 +1001,7 @@ msgstr ""
"そうするとインストーラはハードドライブからインストールを続けます。コピーされ"
"たパッケージはインストール完了後も利用できます。"
-#: steps_gtk.pm:774 steps_interactive.pm:351
+#: steps_gtk.pm:781 steps_interactive.pm:351
#, c-format
msgid "Copy whole CDs"
msgstr "CD 全体をコピー"
td class='none' style='width: 99.0%;'/> -rw-r--r--mdk-stage1/dietlibc/i386/atan.S27
-rw-r--r--mdk-stage1/dietlibc/i386/atan2.S12
-rw-r--r--mdk-stage1/dietlibc/i386/atanh.S19
-rw-r--r--mdk-stage1/dietlibc/i386/atol.S55
-rw-r--r--mdk-stage1/dietlibc/i386/atoll.S64
-rw-r--r--mdk-stage1/dietlibc/i386/bind.S4
-rw-r--r--mdk-stage1/dietlibc/i386/cbrt.S46
-rw-r--r--mdk-stage1/dietlibc/i386/ceil.S44
-rw-r--r--mdk-stage1/dietlibc/i386/clone.S29
-rw-r--r--mdk-stage1/dietlibc/i386/connect.S4
-rw-r--r--mdk-stage1/dietlibc/i386/copysign.S18
-rw-r--r--mdk-stage1/dietlibc/i386/cos.S35
-rw-r--r--mdk-stage1/dietlibc/i386/cosh.S29
-rw-r--r--mdk-stage1/dietlibc/i386/dyn_syscalls.S282
-rw-r--r--mdk-stage1/dietlibc/i386/exp.S35
-rw-r--r--mdk-stage1/dietlibc/i386/exp10.S27
-rw-r--r--mdk-stage1/dietlibc/i386/exp2.S18
-rw-r--r--mdk-stage1/dietlibc/i386/expm1.S23
-rw-r--r--mdk-stage1/dietlibc/i386/fabs.S11
-rw-r--r--mdk-stage1/dietlibc/i386/floor.S26
-rw-r--r--mdk-stage1/dietlibc/i386/fmod.S37
-rw-r--r--mdk-stage1/dietlibc/i386/getenv.S48
-rw-r--r--mdk-stage1/dietlibc/i386/getpeername.S4
-rw-r--r--mdk-stage1/dietlibc/i386/getsockname.S4
-rw-r--r--mdk-stage1/dietlibc/i386/getsockopt.S4
-rw-r--r--mdk-stage1/dietlibc/i386/htonl.S13
-rw-r--r--mdk-stage1/dietlibc/i386/htons.S11
-rw-r--r--mdk-stage1/dietlibc/i386/hypot.S15
-rw-r--r--mdk-stage1/dietlibc/i386/ilogb.S23
-rw-r--r--mdk-stage1/dietlibc/i386/ipow.S27
-rw-r--r--mdk-stage1/dietlibc/i386/isleap.S28
-rw-r--r--mdk-stage1/dietlibc/i386/ldexp.S28
-rw-r--r--mdk-stage1/dietlibc/i386/libm2.S643
-rw-r--r--mdk-stage1/dietlibc/i386/listen.S4
-rw-r--r--mdk-stage1/dietlibc/i386/log.S26
-rw-r--r--mdk-stage1/dietlibc/i386/log10.S11
-rw-r--r--mdk-stage1/dietlibc/i386/log1p.S12
-rw-r--r--mdk-stage1/dietlibc/i386/log2.S11
-rw-r--r--mdk-stage1/dietlibc/i386/ltostr.S62
-rw-r--r--mdk-stage1/dietlibc/i386/mcount.S44
-rw-r--r--mdk-stage1/dietlibc/i386/md5asm.S300
-rw-r--r--mdk-stage1/dietlibc/i386/memccpy.S39
-rw-r--r--mdk-stage1/dietlibc/i386/memchr.S24
-rw-r--r--mdk-stage1/dietlibc/i386/memcmp.S26
-rw-r--r--mdk-stage1/dietlibc/i386/memcpy.S16
-rw-r--r--mdk-stage1/dietlibc/i386/memset.S15
-rw-r--r--mdk-stage1/dietlibc/i386/mmap.S14
-rw-r--r--mdk-stage1/dietlibc/i386/mmap64.S63
-rw-r--r--mdk-stage1/dietlibc/i386/poly.S24
-rw-r--r--mdk-stage1/dietlibc/i386/pow.S67
-rw-r--r--mdk-stage1/dietlibc/i386/recv.S4
-rw-r--r--mdk-stage1/dietlibc/i386/recvfrom.S4
-rw-r--r--mdk-stage1/dietlibc/i386/recvmsg.S4
-rw-r--r--mdk-stage1/dietlibc/i386/rint.S23
-rw-r--r--mdk-stage1/dietlibc/i386/send.S4
-rw-r--r--mdk-stage1/dietlibc/i386/sendmsg.S4
-rw-r--r--mdk-stage1/dietlibc/i386/sendto.S4
-rw-r--r--mdk-stage1/dietlibc/i386/setjmp.S55
-rw-r--r--mdk-stage1/dietlibc/i386/setsockopt.S4
-rw-r--r--mdk-stage1/dietlibc/i386/shutdown.S4
-rw-r--r--mdk-stage1/dietlibc/i386/sin.S34
-rw-r--r--mdk-stage1/dietlibc/i386/sincos.S18
-rw-r--r--mdk-stage1/dietlibc/i386/sinh.S29
-rw-r--r--mdk-stage1/dietlibc/i386/sleep.S25
-rw-r--r--mdk-stage1/dietlibc/i386/socket.S4
-rw-r--r--mdk-stage1/dietlibc/i386/socketcall.S17
-rw-r--r--mdk-stage1/dietlibc/i386/socketpair.S4
-rw-r--r--mdk-stage1/dietlibc/i386/sqrt.S23
-rw-r--r--mdk-stage1/dietlibc/i386/sqrtl.S11
-rw-r--r--mdk-stage1/dietlibc/i386/start.S69
-rw-r--r--mdk-stage1/dietlibc/i386/stpcpy.S22
-rw-r--r--mdk-stage1/dietlibc/i386/strcasecmp.S31
-rw-r--r--mdk-stage1/dietlibc/i386/strcat.S29
-rw-r--r--mdk-stage1/dietlibc/i386/strchr.S22
-rw-r--r--mdk-stage1/dietlibc/i386/strcmp.S31
-rw-r--r--mdk-stage1/dietlibc/i386/strcpy.S24
-rw-r--r--mdk-stage1/dietlibc/i386/strlen.S18
-rw-r--r--mdk-stage1/dietlibc/i386/strncmp.S28
-rw-r--r--mdk-stage1/dietlibc/i386/strncpy.S42
-rw-r--r--mdk-stage1/dietlibc/i386/strrchr.S19
-rw-r--r--mdk-stage1/dietlibc/i386/syscalls.h303
-rw-r--r--mdk-stage1/dietlibc/i386/tan.S12
-rw-r--r--mdk-stage1/dietlibc/i386/tanh.S32
-rw-r--r--mdk-stage1/dietlibc/i386/unified.S35
-rw-r--r--mdk-stage1/dietlibc/i386/usleep.S31
-rw-r--r--mdk-stage1/dietlibc/i386/vfork.S9
-rw-r--r--mdk-stage1/dietlibc/i386/write12.S37
-rw-r--r--mdk-stage1/dietlibc/ia64/Makefile.add2
-rw-r--r--mdk-stage1/dietlibc/ia64/README4
-rw-r--r--mdk-stage1/dietlibc/ia64/__alarm.c1
-rw-r--r--mdk-stage1/dietlibc/ia64/__longjmp.S1
-rw-r--r--mdk-stage1/dietlibc/ia64/__nice.c6
-rw-r--r--mdk-stage1/dietlibc/ia64/__testandset.S11
-rw-r--r--mdk-stage1/dietlibc/ia64/__time.c14
-rw-r--r--mdk-stage1/dietlibc/ia64/__waitpid.c5
-rw-r--r--mdk-stage1/dietlibc/ia64/accept.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/bind.S (renamed from mdk-stage1/dietlibc/syscalls.c/sync.c)2
-rw-r--r--mdk-stage1/dietlibc/ia64/clone.S41
-rw-r--r--mdk-stage1/dietlibc/ia64/connect.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/fork.S8
-rw-r--r--mdk-stage1/dietlibc/ia64/getpeername.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/getsockname.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/getsockopt.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/listen.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/mmap.S (renamed from mdk-stage1/dietlibc/syscalls.c/getpid.c)2
-rw-r--r--mdk-stage1/dietlibc/ia64/msgctl.S (renamed from mdk-stage1/dietlibc/syscalls.c/getppid.c)2
-rw-r--r--mdk-stage1/dietlibc/ia64/msgget.S (renamed from mdk-stage1/dietlibc/syscalls.c/vhangup.c)2
-rw-r--r--mdk-stage1/dietlibc/ia64/msgrcv.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/msgsnd.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/pipe.S20
-rw-r--r--mdk-stage1/dietlibc/ia64/recv.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/recvfrom.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/recvmsg.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/semctl.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/semget.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/semop.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/send.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/sendmsg.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/sendto.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/setjmp.S1
-rw-r--r--mdk-stage1/dietlibc/ia64/setsockopt.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/shmat.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/shmctl.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/shmdt.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/shmget.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/shutdown.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/socket.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/socketpair.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/start.S45
-rw-r--r--mdk-stage1/dietlibc/ia64/syscalls.h242
-rw-r--r--mdk-stage1/dietlibc/ia64/unified.S46
-rw-r--r--mdk-stage1/dietlibc/ia64/utime.S3
-rw-r--r--mdk-stage1/dietlibc/ia64/vfork.S8
-rw-r--r--mdk-stage1/dietlibc/include/alloca.h13
-rw-r--r--mdk-stage1/dietlibc/include/arpa/inet.h1
-rw-r--r--mdk-stage1/dietlibc/include/arpa/nameser.h36
-rw-r--r--mdk-stage1/dietlibc/include/asm/alpha-sigcontext.h29
-rw-r--r--mdk-stage1/dietlibc/include/asm/arm-sigcontext.h32
-rw-r--r--mdk-stage1/dietlibc/include/asm/i386-sigcontext.h66
-rw-r--r--mdk-stage1/dietlibc/include/asm/ia64-sigcontext.h25
-rw-r--r--mdk-stage1/dietlibc/include/asm/mips-sigcontext.h23
-rw-r--r--mdk-stage1/dietlibc/include/asm/parisc-sigcontext.h16
-rw-r--r--mdk-stage1/dietlibc/include/asm/ppc-sigcontext.h76
-rw-r--r--mdk-stage1/dietlibc/include/asm/sigcontext.h36
-rw-r--r--mdk-stage1/dietlibc/include/asm/sparc-sigcontext.h50
-rw-r--r--mdk-stage1/dietlibc/include/asm/statfs.h1
-rw-r--r--mdk-stage1/dietlibc/include/asm/types.h32
-rw-r--r--mdk-stage1/dietlibc/include/assert.h17
-rw-r--r--mdk-stage1/dietlibc/include/cpio.h27
-rw-r--r--mdk-stage1/dietlibc/include/daemon.h2
-rw-r--r--mdk-stage1/dietlibc/include/dietref.h22
-rw-r--r--mdk-stage1/dietlibc/include/dirent.h42
-rw-r--r--mdk-stage1/dietlibc/include/dlfcn.h3
-rw-r--r--mdk-stage1/dietlibc/include/elf.h781
-rw-r--r--mdk-stage1/dietlibc/include/endian.h45
-rw-r--r--mdk-stage1/dietlibc/include/errno.h543
-rw-r--r--mdk-stage1/dietlibc/include/fcntl.h550
-rw-r--r--mdk-stage1/dietlibc/include/features.h9
-rw-r--r--mdk-stage1/dietlibc/include/float.h96
-rw-r--r--mdk-stage1/dietlibc/include/fnmatch.h2
-rw-r--r--mdk-stage1/dietlibc/include/ftw.h16
-rw-r--r--mdk-stage1/dietlibc/include/getopt.h6
-rw-r--r--mdk-stage1/dietlibc/include/glob.h2
-rw-r--r--mdk-stage1/dietlibc/include/grp.h10
-rw-r--r--mdk-stage1/dietlibc/include/iconv.h25
-rw-r--r--mdk-stage1/dietlibc/include/inttypes.h247
-rw-r--r--mdk-stage1/dietlibc/include/libgen.h9
-rw-r--r--mdk-stage1/dietlibc/include/libintl.h23
-rw-r--r--mdk-stage1/dietlibc/include/limits.h51
-rw-r--r--mdk-stage1/dietlibc/include/linux/eventpoll.h17
-rw-r--r--mdk-stage1/dietlibc/include/linux/if_ether.h101
-rw-r--r--mdk-stage1/dietlibc/include/linux/loop.h47
-rw-r--r--mdk-stage1/dietlibc/include/linux/nfs.h88
-rw-r--r--mdk-stage1/dietlibc/include/linux/types.h6
-rw-r--r--mdk-stage1/dietlibc/include/locale.h86
-rw-r--r--mdk-stage1/dietlibc/include/math.h35
-rw-r--r--mdk-stage1/dietlibc/include/md5.h48
-rw-r--r--mdk-stage1/dietlibc/include/net/ethernet.h76
-rw-r--r--mdk-stage1/dietlibc/include/net/if.h93
-rw-r--r--mdk-stage1/dietlibc/include/net/if_arp.h109
-rw-r--r--mdk-stage1/dietlibc/include/net/if_ether.h74
-rw-r--r--mdk-stage1/dietlibc/include/net/route.h52
-rw-r--r--mdk-stage1/dietlibc/include/netdb.h64
-rw-r--r--mdk-stage1/dietlibc/include/netinet/in.h399
-rw-r--r--mdk-stage1/dietlibc/include/netinet/ip.h117
-rw-r--r--mdk-stage1/dietlibc/include/netinet/ip_icmp.h145
-rw-r--r--mdk-stage1/dietlibc/include/netinet/tcp.h164
-rw-r--r--mdk-stage1/dietlibc/include/netinet/udp.h16
-rw-r--r--mdk-stage1/dietlibc/include/netpacket/packet.h41
-rw-r--r--mdk-stage1/dietlibc/include/paths.h7
-rw-r--r--mdk-stage1/dietlibc/include/pthread.h37
-rw-r--r--mdk-stage1/dietlibc/include/pty.h13
-rw-r--r--mdk-stage1/dietlibc/include/pwd.h15
-rw-r--r--mdk-stage1/dietlibc/include/regex.h6
-rw-r--r--mdk-stage1/dietlibc/include/resolv.h125
-rw-r--r--mdk-stage1/dietlibc/include/rpc/auth.h23
-rw-r--r--mdk-stage1/dietlibc/include/rpc/auth_des.h8
-rw-r--r--mdk-stage1/dietlibc/include/rpc/auth_unix.h4
-rw-r--r--mdk-stage1/dietlibc/include/rpc/clnt.h112
-rw-r--r--mdk-stage1/dietlibc/include/rpc/key_prot.h74
-rw-r--r--mdk-stage1/dietlibc/include/rpc/netdb.h4
-rw-r--r--mdk-stage1/dietlibc/include/rpc/pmap_clnt.h38
-rw-r--r--mdk-stage1/dietlibc/include/rpc/pmap_prot.h22
-rw-r--r--mdk-stage1/dietlibc/include/rpc/pmap_rmt.h10
-rw-r--r--mdk-stage1/dietlibc/include/rpc/rpc.h2
-rw-r--r--mdk-stage1/dietlibc/include/rpc/rpc_msg.h24
-rw-r--r--mdk-stage1/dietlibc/include/rpc/svc.h22
-rw-r--r--mdk-stage1/dietlibc/include/rpc/types.h16
-rw-r--r--mdk-stage1/dietlibc/include/rpc/xdr.h78
-rw-r--r--mdk-stage1/dietlibc/include/sched.h13
-rw-r--r--mdk-stage1/dietlibc/include/setjmp.h152
-rw-r--r--mdk-stage1/dietlibc/include/shadow.h8
-rw-r--r--mdk-stage1/dietlibc/include/signal.h487
-rw-r--r--mdk-stage1/dietlibc/include/stdarg-cruft.h299
-rw-r--r--mdk-stage1/dietlibc/include/stdarg.h24
-rw-r--r--mdk-stage1/dietlibc/include/stddef.h23
-rw-r--r--mdk-stage1/dietlibc/include/stdint.h26
-rw-r--r--mdk-stage1/dietlibc/include/stdio.h106
-rw-r--r--mdk-stage1/dietlibc/include/stdlib.h75
-rw-r--r--mdk-stage1/dietlibc/include/string.h53
-rw-r--r--mdk-stage1/dietlibc/include/strings.h25
-rw-r--r--mdk-stage1/dietlibc/include/sys/alpha-ioctl.h168
-rw-r--r--mdk-stage1/dietlibc/include/sys/arm-ioctl.h149
-rw-r--r--mdk-stage1/dietlibc/include/sys/cdefs.h35
-rw-r--r--mdk-stage1/dietlibc/include/sys/epoll.h60
-rw-r--r--mdk-stage1/dietlibc/include/sys/file.h11
-rw-r--r--mdk-stage1/dietlibc/include/sys/fsuid.h12
-rw-r--r--mdk-stage1/dietlibc/include/sys/gmon.h99
-rw-r--r--mdk-stage1/dietlibc/include/sys/gmon_out.h1
-rw-r--r--mdk-stage1/dietlibc/include/sys/hppa-ioctl.h133
-rw-r--r--mdk-stage1/dietlibc/include/sys/i386-ioctl.h141
-rw-r--r--mdk-stage1/dietlibc/include/sys/io.h47
-rw-r--r--mdk-stage1/dietlibc/include/sys/ioctl.h26
-rw-r--r--mdk-stage1/dietlibc/include/sys/ipc.h45
-rw-r--r--mdk-stage1/dietlibc/include/sys/kd.h179
-rw-r--r--mdk-stage1/dietlibc/include/sys/klog.h8
-rw-r--r--mdk-stage1/dietlibc/include/sys/mips-ioctl.h177
-rw-r--r--mdk-stage1/dietlibc/include/sys/mman.h165
-rw-r--r--mdk-stage1/dietlibc/include/sys/mount.h73
-rw-r--r--mdk-stage1/dietlibc/include/sys/msg.h48
-rw-r--r--mdk-stage1/dietlibc/include/sys/mtio.h336
-rw-r--r--mdk-stage1/dietlibc/include/sys/param.h22
-rw-r--r--mdk-stage1/dietlibc/include/sys/poll.h40
-rw-r--r--mdk-stage1/dietlibc/include/sys/ppc-ioctl.h164
-rw-r--r--mdk-stage1/dietlibc/include/sys/prctl.h8
-rw-r--r--mdk-stage1/dietlibc/include/sys/ptrace.h840
-rw-r--r--mdk-stage1/dietlibc/include/sys/reboot.h21
-rw-r--r--mdk-stage1/dietlibc/include/sys/resource.h53
-rw-r--r--mdk-stage1/dietlibc/include/sys/s390-ioctl.h141
-rw-r--r--mdk-stage1/dietlibc/include/sys/select.h22
-rw-r--r--mdk-stage1/dietlibc/include/sys/sem.h74
-rw-r--r--mdk-stage1/dietlibc/include/sys/sendfile.h8
-rw-r--r--mdk-stage1/dietlibc/include/sys/shm.h66
-rw-r--r--mdk-stage1/dietlibc/include/sys/socket.h492
-rw-r--r--mdk-stage1/dietlibc/include/sys/soundcard.h1300
-rw-r--r--mdk-stage1/dietlibc/include/sys/sparc-ioctl.h172
-rw-r--r--mdk-stage1/dietlibc/include/sys/stat.h494
-rw-r--r--mdk-stage1/dietlibc/include/sys/sysinfo.h20
-rw-r--r--mdk-stage1/dietlibc/include/sys/syslog.h2
-rw-r--r--mdk-stage1/dietlibc/include/sys/sysmacros.h6
-rw-r--r--mdk-stage1/dietlibc/include/sys/time.h50
-rw-r--r--mdk-stage1/dietlibc/include/sys/timeb.h13
-rw-r--r--mdk-stage1/dietlibc/include/sys/times.h12
-rw-r--r--mdk-stage1/dietlibc/include/sys/timex.h50
-rw-r--r--mdk-stage1/dietlibc/include/sys/types.h136
-rw-r--r--mdk-stage1/dietlibc/include/sys/ucontext.h110
-rw-r--r--mdk-stage1/dietlibc/include/sys/uio.h2
-rw-r--r--mdk-stage1/dietlibc/include/sys/un.h7
-rw-r--r--mdk-stage1/dietlibc/include/sys/vfs.h26
-rw-r--r--mdk-stage1/dietlibc/include/sys/wait.h10
-rw-r--r--mdk-stage1/dietlibc/include/sysexits.h26
-rw-r--r--mdk-stage1/dietlibc/include/tar.h36
-rw-r--r--mdk-stage1/dietlibc/include/termio.h4
-rw-r--r--mdk-stage1/dietlibc/include/termios.h373
-rw-r--r--mdk-stage1/dietlibc/include/time.h20
-rw-r--r--mdk-stage1/dietlibc/include/unistd.h113
-rw-r--r--mdk-stage1/dietlibc/include/utmp.h23
-rw-r--r--mdk-stage1/dietlibc/include/write12.h4
-rw-r--r--mdk-stage1/dietlibc/lib/__dtostr.c190
-rw-r--r--mdk-stage1/dietlibc/lib/__fstat64.c7
-rw-r--r--mdk-stage1/dietlibc/lib/__ftruncate64.c23
-rw-r--r--mdk-stage1/dietlibc/lib/__getcwd.c1
-rw-r--r--mdk-stage1/dietlibc/lib/__isinf.c15
-rw-r--r--mdk-stage1/dietlibc/lib/__isnan.c7
-rw-r--r--mdk-stage1/dietlibc/lib/__lltostr.c4
-rw-r--r--mdk-stage1/dietlibc/lib/__lstat64.c7
-rw-r--r--mdk-stage1/dietlibc/lib/__ltostr.c5
-rw-r--r--mdk-stage1/dietlibc/lib/__ptrace.c27
-rw-r--r--mdk-stage1/dietlibc/lib/__stat64.c7
-rw-r--r--mdk-stage1/dietlibc/lib/__stat64_cvt.c2
-rw-r--r--mdk-stage1/dietlibc/lib/__stime.c14
-rw-r--r--mdk-stage1/dietlibc/lib/__truncate64.c23
-rw-r--r--mdk-stage1/dietlibc/lib/__v_printf.c300
-rw-r--r--mdk-stage1/dietlibc/lib/__v_scanf.c391
-rw-r--r--mdk-stage1/dietlibc/lib/__xmknod.c6
-rw-r--r--mdk-stage1/dietlibc/lib/_brk.c13
-rw-r--r--mdk-stage1/dietlibc/lib/abort.c10
-rw-r--r--mdk-stage1/dietlibc/lib/abs.c10
-rw-r--r--mdk-stage1/dietlibc/lib/accept.c8
-rw-r--r--mdk-stage1/dietlibc/lib/adjtime.c18
-rw-r--r--mdk-stage1/dietlibc/lib/alarm.c47
-rw-r--r--mdk-stage1/dietlibc/lib/alloc.c372
-rw-r--r--mdk-stage1/dietlibc/lib/assert_fail.c11
-rw-r--r--mdk-stage1/dietlibc/lib/atexit.c32
-rw-r--r--mdk-stage1/dietlibc/lib/atoi.c21
-rw-r--r--mdk-stage1/dietlibc/lib/atol.c25
-rw-r--r--mdk-stage1/dietlibc/lib/atoll.c19
-rw-r--r--mdk-stage1/dietlibc/lib/bcd.c185
-rw-r--r--mdk-stage1/dietlibc/lib/bind.c11
-rw-r--r--mdk-stage1/dietlibc/lib/binshstr.c5
-rw-r--r--mdk-stage1/dietlibc/lib/bsearch.c30
-rw-r--r--mdk-stage1/dietlibc/lib/cfgetospeed.c8
-rw-r--r--mdk-stage1/dietlibc/lib/cfmakeraw.c3
-rw-r--r--mdk-stage1/dietlibc/lib/cfsetispeed.c22
-rw-r--r--mdk-stage1/dietlibc/lib/cfsetospeed.c14
-rw-r--r--mdk-stage1/dietlibc/lib/closedir.c3
-rw-r--r--mdk-stage1/dietlibc/lib/connect.c7
-rw-r--r--mdk-stage1/dietlibc/lib/creat.c4
-rw-r--r--mdk-stage1/dietlibc/lib/errlist.c132
-rw-r--r--mdk-stage1/dietlibc/lib/errlistu.c6
-rw-r--r--mdk-stage1/dietlibc/lib/errno_location.c2
-rw-r--r--mdk-stage1/dietlibc/lib/exec_lib.c7
-rw-r--r--mdk-stage1/dietlibc/lib/execl.c3
-rw-r--r--mdk-stage1/dietlibc/lib/execle.c26
-rw-r--r--mdk-stage1/dietlibc/lib/execlp.c6
-rw-r--r--mdk-stage1/dietlibc/lib/execv.c4
-rw-r--r--mdk-stage1/dietlibc/lib/execvp.c23
-rw-r--r--mdk-stage1/dietlibc/lib/ftw.c77
-rw-r--r--mdk-stage1/dietlibc/lib/getdomainname.c3
-rw-r--r--mdk-stage1/dietlibc/lib/getenv.c3
-rw-r--r--mdk-stage1/dietlibc/lib/gethostname.c3
-rw-r--r--mdk-stage1/dietlibc/lib/getopt.c155
-rw-r--r--mdk-stage1/dietlibc/lib/getpeername.c13
-rw-r--r--mdk-stage1/dietlibc/lib/getservent.c137
-rw-r--r--mdk-stage1/dietlibc/lib/getsockname.c11
-rw-r--r--mdk-stage1/dietlibc/lib/getsockopt.c11
-rw-r--r--mdk-stage1/dietlibc/lib/htonl.c1
-rw-r--r--mdk-stage1/dietlibc/lib/htons.c1
-rw-r--r--mdk-stage1/dietlibc/lib/if_indextoname.c3
-rw-r--r--mdk-stage1/dietlibc/lib/if_nameindex.c40
-rw-r--r--mdk-stage1/dietlibc/lib/if_nametoindex.c5
-rw-r--r--mdk-stage1/dietlibc/lib/ipv6constants.c4
-rw-r--r--mdk-stage1/dietlibc/lib/isalnum.c8
-rw-r--r--mdk-stage1/dietlibc/lib/isalpha.c7
-rw-r--r--mdk-stage1/dietlibc/lib/isascii.c6
-rw-r--r--mdk-stage1/dietlibc/lib/isatty.c8
-rw-r--r--mdk-stage1/dietlibc/lib/isblank.c4
-rw-r--r--mdk-stage1/dietlibc/lib/iscntrl.c7
-rw-r--r--mdk-stage1/dietlibc/lib/isdigit.c7
-rw-r--r--mdk-stage1/dietlibc/lib/isgraph.c7
-rw-r--r--mdk-stage1/dietlibc/lib/islower.c7
-rw-r--r--mdk-stage1/dietlibc/lib/isprint.c7
-rw-r--r--mdk-stage1/dietlibc/lib/ispunct.c8
-rw-r--r--mdk-stage1/dietlibc/lib/isspace.c7
-rw-r--r--mdk-stage1/dietlibc/lib/isupper.c8
-rw-r--r--mdk-stage1/dietlibc/lib/isxdigit.c9
-rw-r--r--mdk-stage1/dietlibc/lib/labs.c6
-rw-r--r--mdk-stage1/dietlibc/lib/listen.c11
-rw-r--r--mdk-stage1/dietlibc/lib/llabs.c6
-rw-r--r--mdk-stage1/dietlibc/lib/lockf.c1
-rw-r--r--mdk-stage1/dietlibc/lib/longjmp.c57
-rw-r--r--mdk-stage1/dietlibc/lib/lseek64.c10
-rw-r--r--mdk-stage1/dietlibc/lib/memccmp.c17
-rw-r--r--mdk-stage1/dietlibc/lib/memccpy.c1
-rw-r--r--mdk-stage1/dietlibc/lib/memchr.c12
-rw-r--r--mdk-stage1/dietlibc/lib/memcmp.c2
-rw-r--r--mdk-stage1/dietlibc/lib/memcpy.c2
-rw-r--r--mdk-stage1/dietlibc/lib/memmem.c14
-rw-r--r--mdk-stage1/dietlibc/lib/memmove.c1
-rw-r--r--mdk-stage1/dietlibc/lib/memrchr.c15
-rw-r--r--mdk-stage1/dietlibc/lib/memset.c4
-rw-r--r--mdk-stage1/dietlibc/lib/mkfifo.c4
-rw-r--r--mdk-stage1/dietlibc/lib/msgctl.c3
-rw-r--r--mdk-stage1/dietlibc/lib/msgget.c3
-rw-r--r--mdk-stage1/dietlibc/lib/msgrcv.c8
-rw-r--r--mdk-stage1/dietlibc/lib/msgsnd.c3
-rw-r--r--mdk-stage1/dietlibc/lib/nop.c7
-rw-r--r--mdk-stage1/dietlibc/lib/open64.c9
-rw-r--r--mdk-stage1/dietlibc/lib/opendir.c26
-rw-r--r--mdk-stage1/dietlibc/lib/perror.c32
-rw-r--r--mdk-stage1/dietlibc/lib/pread.c1
-rw-r--r--mdk-stage1/dietlibc/lib/pread64.c3
-rw-r--r--mdk-stage1/dietlibc/lib/putenv.c19
-rw-r--r--mdk-stage1/dietlibc/lib/puts.c12
-rw-r--r--mdk-stage1/dietlibc/lib/pwrite.c11
-rw-r--r--mdk-stage1/dietlibc/lib/pwrite64.c14
-rw-r--r--mdk-stage1/dietlibc/lib/qsort.c22
-rw-r--r--mdk-stage1/dietlibc/lib/raise.c3
-rw-r--r--mdk-stage1/dietlibc/lib/rand.c7
-rw-r--r--mdk-stage1/dietlibc/lib/rand48.c89
-rw-r--r--mdk-stage1/dietlibc/lib/rand_r.c30
-rw-r--r--mdk-stage1/dietlibc/lib/random.c9
-rw-r--r--mdk-stage1/dietlibc/lib/readdir.c2
-rw-r--r--mdk-stage1/dietlibc/lib/readdir64.c62
-rw-r--r--mdk-stage1/dietlibc/lib/reboot.c6
-rw-r--r--mdk-stage1/dietlibc/lib/recv.c8
-rw-r--r--mdk-stage1/dietlibc/lib/recvfrom.c8
-rw-r--r--mdk-stage1/dietlibc/lib/recvmsg.c8
-rw-r--r--mdk-stage1/dietlibc/lib/remove.c2
-rw-r--r--mdk-stage1/dietlibc/lib/sbrk.c11
-rw-r--r--mdk-stage1/dietlibc/lib/semctl.c13
-rw-r--r--mdk-stage1/dietlibc/lib/semget.c3
-rw-r--r--mdk-stage1/dietlibc/lib/semop.c3
-rw-r--r--mdk-stage1/dietlibc/lib/send.c8
-rw-r--r--mdk-stage1/dietlibc/lib/sendmsg.c8
-rw-r--r--mdk-stage1/dietlibc/lib/sendto.c10
-rw-r--r--mdk-stage1/dietlibc/lib/set_errno.c9
-rw-r--r--mdk-stage1/dietlibc/lib/setlinebuf.c12
-rw-r--r--mdk-stage1/dietlibc/lib/setsockopt.c11
-rw-r--r--mdk-stage1/dietlibc/lib/shmat.c5
-rw-r--r--mdk-stage1/dietlibc/lib/shmctl.c3
-rw-r--r--mdk-stage1/dietlibc/lib/shmdt.c3
-rw-r--r--mdk-stage1/dietlibc/lib/shmget.c3
-rw-r--r--mdk-stage1/dietlibc/lib/shutdown.c8
-rw-r--r--mdk-stage1/dietlibc/lib/sigaction.c11
-rw-r--r--mdk-stage1/dietlibc/lib/sigaddset.c28
-rw-r--r--mdk-stage1/dietlibc/lib/sigdelset.c28
-rw-r--r--mdk-stage1/dietlibc/lib/sigemptyset.c12
-rw-r--r--mdk-stage1/dietlibc/lib/sigfillset.c16
-rw-r--r--mdk-stage1/dietlibc/lib/siginterrupt.c17
-rw-r--r--mdk-stage1/dietlibc/lib/sigismember.c29
-rw-r--r--mdk-stage1/dietlibc/lib/sigjmp.c35
-rw-r--r--mdk-stage1/dietlibc/lib/signal.c12
-rw-r--r--mdk-stage1/dietlibc/lib/sigpending.c7
-rw-r--r--mdk-stage1/dietlibc/lib/sigprocmask.c7
-rw-r--r--mdk-stage1/dietlibc/lib/sigqueueinfo.c7
-rw-r--r--mdk-stage1/dietlibc/lib/sigsuspend.c10
-rw-r--r--mdk-stage1/dietlibc/lib/sigtimedwait.c7
-rw-r--r--mdk-stage1/dietlibc/lib/sleep.c2
-rw-r--r--mdk-stage1/dietlibc/lib/snprintf.c3
-rw-r--r--mdk-stage1/dietlibc/lib/socket.c11
-rw-r--r--mdk-stage1/dietlibc/lib/socketpair.c12
-rw-r--r--mdk-stage1/dietlibc/lib/speed.c67
-rw-r--r--mdk-stage1/dietlibc/lib/sprintf.c10
-rw-r--r--mdk-stage1/dietlibc/lib/sscanf.c3
-rw-r--r--mdk-stage1/dietlibc/lib/strcasecmp.c29
-rw-r--r--mdk-stage1/dietlibc/lib/strchr.c1
-rw-r--r--mdk-stage1/dietlibc/lib/strcmp.c2
-rw-r--r--mdk-stage1/dietlibc/lib/strcpy.c7
-rw-r--r--mdk-stage1/dietlibc/lib/strerror.c22
-rw-r--r--mdk-stage1/dietlibc/lib/strlen.c2
-rw-r--r--mdk-stage1/dietlibc/lib/strncasecmp.c34
-rw-r--r--mdk-stage1/dietlibc/lib/strncat.c7
-rw-r--r--mdk-stage1/dietlibc/lib/strncmp.c13
-rw-r--r--mdk-stage1/dietlibc/lib/strncpy.c9
-rw-r--r--mdk-stage1/dietlibc/lib/strsep.c4
-rw-r--r--mdk-stage1/dietlibc/lib/strstr.c8
-rw-r--r--mdk-stage1/dietlibc/lib/strtod.c104
-rw-r--r--mdk-stage1/dietlibc/lib/strtof.c66
-rw-r--r--mdk-stage1/dietlibc/lib/strtok.c2
-rw-r--r--mdk-stage1/dietlibc/lib/strtol.c17
-rw-r--r--mdk-stage1/dietlibc/lib/strtold.c66
-rw-r--r--mdk-stage1/dietlibc/lib/strtoll.c5
-rw-r--r--mdk-stage1/dietlibc/lib/strtoul.c32
-rw-r--r--mdk-stage1/dietlibc/lib/strtoull.c1
-rw-r--r--mdk-stage1/dietlibc/lib/strxfrm.c12
-rw-r--r--mdk-stage1/dietlibc/lib/sys_siglist.c209
-rw-r--r--mdk-stage1/dietlibc/lib/tcdrain.c1
-rw-r--r--mdk-stage1/dietlibc/lib/tcflow.c35
-rw-r--r--mdk-stage1/dietlibc/lib/tcflush.c24
-rw-r--r--mdk-stage1/dietlibc/lib/tcgetpgrp.c7
-rw-r--r--mdk-stage1/dietlibc/lib/tcsendbreak.c11
-rw-r--r--mdk-stage1/dietlibc/lib/tcsetattr.c46
-rw-r--r--mdk-stage1/dietlibc/lib/tcsetpgrp.c1
-rw-r--r--mdk-stage1/dietlibc/lib/tolower.c6
-rw-r--r--mdk-stage1/dietlibc/lib/toupper.c6
-rw-r--r--mdk-stage1/dietlibc/lib/ttyname.c21
-rw-r--r--mdk-stage1/dietlibc/lib/usleep.c6
-rw-r--r--mdk-stage1/dietlibc/lib/vfork.c6
-rw-r--r--mdk-stage1/dietlibc/lib/vfprintf.c19
-rw-r--r--mdk-stage1/dietlibc/lib/vprintf.c14
-rw-r--r--mdk-stage1/dietlibc/lib/vsnprintf.c255
-rw-r--r--mdk-stage1/dietlibc/lib/vsprintf.c10
-rw-r--r--mdk-stage1/dietlibc/lib/vsscanf.c311
-rw-r--r--mdk-stage1/dietlibc/lib/write12.c11
-rw-r--r--mdk-stage1/dietlibc/libcompat/daemon.c29
-rw-r--r--mdk-stage1/dietlibc/libcompat/getdelim.c32
-rw-r--r--mdk-stage1/dietlibc/libcompat/getline.c9
-rw-r--r--mdk-stage1/dietlibc/libcompat/re_bsd.c34
-rw-r--r--mdk-stage1/dietlibc/libcompat/stpcpy.c6
-rw-r--r--mdk-stage1/dietlibc/libcompat/syscall.S70
-rw-r--r--mdk-stage1/dietlibc/libcruft/__end_parse.c10
-rw-r--r--mdk-stage1/dietlibc/libcruft/__parse.c10
-rw-r--r--mdk-stage1/dietlibc/libcruft/__parse_1.c9
-rw-r--r--mdk-stage1/dietlibc/libcruft/__parse_nws.c10
-rw-r--r--mdk-stage1/dietlibc/libcruft/__parse_ws.c11
-rw-r--r--mdk-stage1/dietlibc/libcruft/__prepare_parse.c19
-rw-r--r--mdk-stage1/dietlibc/libcruft/alphasort.c6
-rw-r--r--mdk-stage1/dietlibc/libcruft/alphasort64.c6
-rw-r--r--mdk-stage1/dietlibc/libcruft/bcopy.c11
-rw-r--r--mdk-stage1/dietlibc/libcruft/bzero.c10
-rw-r--r--mdk-stage1/dietlibc/libcruft/clock.c21
-rw-r--r--mdk-stage1/dietlibc/libcruft/dn_expand.c11
-rw-r--r--mdk-stage1/dietlibc/libcruft/dnscruft.c132
-rw-r--r--mdk-stage1/dietlibc/libcruft/dnscruft2.c264
-rw-r--r--mdk-stage1/dietlibc/libcruft/dnscruft3.c3
-rw-r--r--mdk-stage1/dietlibc/libcruft/dnscruft4.c11
-rw-r--r--mdk-stage1/dietlibc/libcruft/entlib.c153
-rw-r--r--mdk-stage1/dietlibc/libcruft/entlib.h44
-rw-r--r--mdk-stage1/dietlibc/libcruft/getgrent.c10
-rw-r--r--mdk-stage1/dietlibc/libcruft/getgrent_r.c78
-rw-r--r--mdk-stage1/dietlibc/libcruft/getgrgid.c13
-rw-r--r--mdk-stage1/dietlibc/libcruft/getgrgid_r.c14
-rw-r--r--mdk-stage1/dietlibc/libcruft/getgrnam.c13
-rw-r--r--mdk-stage1/dietlibc/libcruft/getgrnam_r.c14
-rw-r--r--mdk-stage1/dietlibc/libcruft/gethostbyaddr.c37
-rw-r--r--mdk-stage1/dietlibc/libcruft/gethostbyaddr2_r.c2
-rw-r--r--mdk-stage1/dietlibc/libcruft/gethostbyaddr_r.c67
-rw-r--r--mdk-stage1/dietlibc/libcruft/gethostbyname.c39
-rw-r--r--mdk-stage1/dietlibc/libcruft/gethostbyname2.c40
-rw-r--r--mdk-stage1/dietlibc/libcruft/gethostbyname2_r.c35
-rw-r--r--mdk-stage1/dietlibc/libcruft/gethostbyname_r.c54
-rw-r--r--mdk-stage1/dietlibc/libcruft/getlogin.c3
-rw-r--r--mdk-stage1/dietlibc/libcruft/getopt_data.c10
-rw-r--r--mdk-stage1/dietlibc/libcruft/getopt_long.c103
-rw-r--r--mdk-stage1/dietlibc/libcruft/getopt_long_only.c108
-rw-r--r--mdk-stage1/dietlibc/libcruft/getpagesize.c1
-rw-r--r--mdk-stage1/dietlibc/libcruft/getpass.c24
-rw-r--r--mdk-stage1/dietlibc/libcruft/getpwent.c10
-rw-r--r--mdk-stage1/dietlibc/libcruft/getpwent_r.c65
-rw-r--r--mdk-stage1/dietlibc/libcruft/getpwnam.c15
-rw-r--r--mdk-stage1/dietlibc/libcruft/getpwnam_r.c14
-rw-r--r--mdk-stage1/dietlibc/libcruft/getpwuid.c12
-rw-r--r--mdk-stage1/dietlibc/libcruft/getpwuid_r.c13
-rw-r--r--mdk-stage1/dietlibc/libcruft/getspent.c10
-rw-r--r--mdk-stage1/dietlibc/libcruft/getspent_r.c68
-rw-r--r--mdk-stage1/dietlibc/libcruft/getspnam.c15
-rw-r--r--mdk-stage1/dietlibc/libcruft/getspnam_r.c14
-rw-r--r--mdk-stage1/dietlibc/libcruft/getusershell.c33
-rw-r--r--mdk-stage1/dietlibc/libcruft/grbuf.c5
-rw-r--r--mdk-stage1/dietlibc/libcruft/grent.c54
-rw-r--r--mdk-stage1/dietlibc/libcruft/herrno_location.c9
-rw-r--r--mdk-stage1/dietlibc/libcruft/herror.c8
-rw-r--r--mdk-stage1/dietlibc/libcruft/hstrerror.c11
-rw-r--r--mdk-stage1/dietlibc/libcruft/inet_aton.c2
-rw-r--r--mdk-stage1/dietlibc/libcruft/inet_ntoa.c2
-rw-r--r--mdk-stage1/dietlibc/libcruft/inet_ntop.c12
-rw-r--r--mdk-stage1/dietlibc/libcruft/inet_pton.c17
-rw-r--r--mdk-stage1/dietlibc/libcruft/initgroups.c3
-rw-r--r--mdk-stage1/dietlibc/libcruft/killpg.c5
-rw-r--r--mdk-stage1/dietlibc/libcruft/localeconv.c15
-rw-r--r--mdk-stage1/dietlibc/libcruft/mkdtemp.c28
-rw-r--r--mdk-stage1/dietlibc/libcruft/mkstemp.c14
-rw-r--r--mdk-stage1/dietlibc/libcruft/mktemp.c17
-rw-r--r--mdk-stage1/dietlibc/libcruft/pwbuf.c5
-rw-r--r--mdk-stage1/dietlibc/libcruft/pwent.c43
-rw-r--r--mdk-stage1/dietlibc/libcruft/res_init.c6
-rw-r--r--mdk-stage1/dietlibc/libcruft/res_mkquery.c75
-rw-r--r--mdk-stage1/dietlibc/libcruft/res_query.c95
-rw-r--r--mdk-stage1/dietlibc/libcruft/res_search.c35
-rw-r--r--mdk-stage1/dietlibc/libcruft/scan_ulong.c13
-rw-r--r--mdk-stage1/dietlibc/libcruft/scandir.c47
-rw-r--r--mdk-stage1/dietlibc/libcruft/scandir64.c47
-rw-r--r--mdk-stage1/dietlibc/libcruft/setegid.c11
-rw-r--r--mdk-stage1/dietlibc/libcruft/seteuid.c11
-rw-r--r--mdk-stage1/dietlibc/libcruft/setlocale.c7
-rw-r--r--mdk-stage1/dietlibc/libcruft/spbuf.c5
-rw-r--r--mdk-stage1/dietlibc/libcruft/spent.c45
-rw-r--r--mdk-stage1/dietlibc/libcruft/sysconf.c43
-rw-r--r--mdk-stage1/dietlibc/libcruft/sysconf_cpus.c64
-rw-r--r--mdk-stage1/dietlibc/libcruft/tempnam.c32
-rw-r--r--mdk-stage1/dietlibc/libcruft/tmpnam.c31
-rw-r--r--mdk-stage1/dietlibc/libcrypt/crypt.c31
-rw-r--r--mdk-stage1/dietlibc/libcrypt/md5.c243
-rw-r--r--mdk-stage1/dietlibc/libcrypt/md5crypt.c157
-rw-r--r--mdk-stage1/dietlibc/libdl/Makefile32
-rw-r--r--mdk-stage1/dietlibc/libdl/README82
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_alloc.c81
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_int.h138
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_jump.S53
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_load.c401
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_main.c1059
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_open.c228
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_queue.c39
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_rel.c42
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_rel.h25
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_relocate.c96
-rw-r--r--mdk-stage1/dietlibc/libdl/_dl_search.c81
-rw-r--r--mdk-stage1/dietlibc/libdl/dlclose.c40
-rw-r--r--mdk-stage1/dietlibc/libdl/dlerror.c57
-rw-r--r--mdk-stage1/dietlibc/libdl/dlopen.c31
-rw-r--r--mdk-stage1/dietlibc/libdl/dlsym.c93
-rw-r--r--mdk-stage1/dietlibc/libdl/elf_hash.c12
-rw-r--r--mdk-stage1/dietlibc/libdl/elf_hash.h10
-rw-r--r--mdk-stage1/dietlibc/libdl/test/test.c20
-rw-r--r--mdk-stage1/dietlibc/libdl/test/test_so.c11
-rw-r--r--mdk-stage1/dietlibc/liblatin1/latin1-iscntrl.c3
-rw-r--r--mdk-stage1/dietlibc/liblatin1/latin1-isgraph.c5
-rw-r--r--mdk-stage1/dietlibc/liblatin1/latin1-islower.c3
-rw-r--r--mdk-stage1/dietlibc/liblatin1/latin1-isprint.c4
-rw-r--r--mdk-stage1/dietlibc/liblatin1/latin1-isupper.c3
-rw-r--r--mdk-stage1/dietlibc/libm/acosh.c6
-rw-r--r--mdk-stage1/dietlibc/libm/asinh.c6
-rw-r--r--mdk-stage1/dietlibc/libm/atanh.c8
-rw-r--r--mdk-stage1/dietlibc/libm/bessel.c171
-rw-r--r--mdk-stage1/dietlibc/libm/cosh.c9
-rw-r--r--mdk-stage1/dietlibc/libm/erf.c95
-rw-r--r--mdk-stage1/dietlibc/libm/gamma.c98
-rw-r--r--mdk-stage1/dietlibc/libm/ipow.c29
-rw-r--r--mdk-stage1/dietlibc/libm/poly.c41
-rw-r--r--mdk-stage1/dietlibc/libm/pow.c42
-rw-r--r--mdk-stage1/dietlibc/libm/rint.c5
-rw-r--r--mdk-stage1/dietlibc/libm/sinh.c9
-rw-r--r--mdk-stage1/dietlibc/libm/tanh.c7
-rw-r--r--mdk-stage1/dietlibc/libpthread/CHANGES6
-rw-r--r--mdk-stage1/dietlibc/libpthread/Makefile7
-rw-r--r--mdk-stage1/dietlibc/libpthread/README10
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_atfork.c2
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_attr_init.c1
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_attr_setdetachstate.c3
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_attr_setinheritsched.c3
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_attr_setschedparam.c5
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_attr_setschedpolicy.c5
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_attr_setscope.c5
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_attr_setstacksize.c3
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_cancel.c6
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_cond_broadcast.c9
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_cond_destroy.c4
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_cond_init.c1
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_cond_signal.c2
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_cond_timedwait.c51
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c26
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_create.c27
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_detach.c11
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_equal.c3
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_errno.c5
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_fdglue2.c16
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_fgetc.c10
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_flockfile.c5
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_fputc.c9
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_funlockfile.c5
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_getschedparam.c22
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_internal.c (renamed from mdk-stage1/dietlibc/libpthread/thread_internal.c)67
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_join.c21
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_key.c (renamed from mdk-stage1/dietlibc/libpthread/thread_key.c)11
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_key_create.c7
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_key_delete.c3
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_mutex_destroy.c5
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_mutex_init.c2
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_mutex_lock.c21
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_mutex_trylock.c9
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_mutex_unlock.c9
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_mutexattr_setkind_np.c3
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_setcancelstate.c3
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_setcanceltype.c3
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_setschedparam.c21
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_setspecific.c3
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_sigmask.c8
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_spinlock.c12
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_sys_alloc.c18
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_sys_fcntl.c1
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_sys_fdatasync.c10
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_sys_logging.c2
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_sys_open.c1
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_sys_tcdrain.c2
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_sys_waitpid.c2
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_testcancel.c2
-rw-r--r--mdk-stage1/dietlibc/libpthread/thread_internal.h23
-rw-r--r--mdk-stage1/dietlibc/libregex/rx.c128
-rw-r--r--mdk-stage1/dietlibc/librpc/auth_none.c12
-rw-r--r--mdk-stage1/dietlibc/librpc/auth_unix.c17
-rw-r--r--mdk-stage1/dietlibc/librpc/authunix_prot.c2
-rw-r--r--mdk-stage1/dietlibc/librpc/bindresvport.c4
-rw-r--r--mdk-stage1/dietlibc/librpc/clnt_generic.c10
-rw-r--r--mdk-stage1/dietlibc/librpc/clnt_raw.c17
-rw-r--r--mdk-stage1/dietlibc/librpc/clnt_simple.c10
-rw-r--r--mdk-stage1/dietlibc/librpc/clnt_tcp.c48
-rw-r--r--mdk-stage1/dietlibc/librpc/clnt_udp.c51
-rw-r--r--mdk-stage1/dietlibc/librpc/get_myaddress.c2
-rw-r--r--mdk-stage1/dietlibc/librpc/getrpcent.c9
-rw-r--r--mdk-stage1/dietlibc/librpc/getrpcport.c6
-rw-r--r--mdk-stage1/dietlibc/librpc/pmap_clnt.c17
-rw-r--r--mdk-stage1/dietlibc/librpc/pmap_getmaps.c5
-rw-r--r--mdk-stage1/dietlibc/librpc/pmap_getport.c16
-rw-r--r--mdk-stage1/dietlibc/librpc/pmap_prot2.c4
-rw-r--r--mdk-stage1/dietlibc/librpc/pmap_rmt.c111
-rw-r--r--mdk-stage1/dietlibc/librpc/rpc_callmsg.c12
-rw-r--r--mdk-stage1/dietlibc/librpc/rpc_prot.c4
-rw-r--r--mdk-stage1/dietlibc/librpc/svc.c39
-rw-r--r--mdk-stage1/dietlibc/librpc/svc_auth_unix.c6
-rw-r--r--mdk-stage1/dietlibc/librpc/svc_raw.c6
-rw-r--r--mdk-stage1/dietlibc/librpc/svc_run.c2
-rw-r--r--mdk-stage1/dietlibc/librpc/svc_simple.c6
-rw-r--r--mdk-stage1/dietlibc/librpc/svc_tcp.c58
-rw-r--r--mdk-stage1/dietlibc/librpc/svc_udp.c86
-rw-r--r--mdk-stage1/dietlibc/librpc/xdr.c36
-rw-r--r--mdk-stage1/dietlibc/librpc/xdr_array.c38
-rw-r--r--mdk-stage1/dietlibc/librpc/xdr_mem.c36
-rw-r--r--mdk-stage1/dietlibc/librpc/xdr_rec.c138
-rw-r--r--mdk-stage1/dietlibc/librpc/xdr_reference.c14
-rw-r--r--mdk-stage1/dietlibc/librpc/xdr_stdio.c26
-rw-r--r--mdk-stage1/dietlibc/libshell/basename.c27
-rw-r--r--mdk-stage1/dietlibc/libshell/dirname.c25
-rw-r--r--mdk-stage1/dietlibc/libshell/fnmatch.c34
-rw-r--r--mdk-stage1/dietlibc/libshell/glob.c84
-rw-r--r--mdk-stage1/dietlibc/libshell/realpath.c18
-rw-r--r--mdk-stage1/dietlibc/libstdio/fclose.c8
-rw-r--r--mdk-stage1/dietlibc/libstdio/fdglue.c34
-rw-r--r--mdk-stage1/dietlibc/libstdio/fdglue2.c43
-rw-r--r--mdk-stage1/dietlibc/libstdio/fdopen.c18
-rw-r--r--mdk-stage1/dietlibc/libstdio/fdprintf.c13
-rw-r--r--mdk-stage1/dietlibc/libstdio/feof.c2
-rw-r--r--mdk-stage1/dietlibc/libstdio/fflush.c34
-rw-r--r--mdk-stage1/dietlibc/libstdio/fgetc_unlocked.c (renamed from mdk-stage1/dietlibc/libstdio/fgetc.c)18
-rw-r--r--mdk-stage1/dietlibc/libstdio/fgetpos.c8
-rw-r--r--mdk-stage1/dietlibc/libstdio/fgets.c4
-rw-r--r--mdk-stage1/dietlibc/libstdio/fopen.c8
-rw-r--r--mdk-stage1/dietlibc/libstdio/fprintf.c18
-rw-r--r--mdk-stage1/dietlibc/libstdio/fputc.c19
-rw-r--r--mdk-stage1/dietlibc/libstdio/fputc_unlocked.c20
-rw-r--r--mdk-stage1/dietlibc/libstdio/fread.c55
-rw-r--r--mdk-stage1/dietlibc/libstdio/fscanf.c14
-rw-r--r--mdk-stage1/dietlibc/libstdio/fseek.c7
-rw-r--r--mdk-stage1/dietlibc/libstdio/fseeko.c10
-rw-r--r--mdk-stage1/dietlibc/libstdio/fseeko64.c12
-rw-r--r--mdk-stage1/dietlibc/libstdio/fsetpos.c7
-rw-r--r--mdk-stage1/dietlibc/libstdio/ftell.c2
-rw-r--r--mdk-stage1/dietlibc/libstdio/ftello.c7
-rw-r--r--mdk-stage1/dietlibc/libstdio/ftello64.c9
-rw-r--r--mdk-stage1/dietlibc/libstdio/fwrite.c28
-rw-r--r--mdk-stage1/dietlibc/libstdio/printf.c20
-rw-r--r--mdk-stage1/dietlibc/libstdio/puts.c16
-rw-r--r--mdk-stage1/dietlibc/libstdio/scanf.c14
-rw-r--r--mdk-stage1/dietlibc/libstdio/setvbuf.c32
-rw-r--r--mdk-stage1/dietlibc/libstdio/stderr.c25
-rw-r--r--mdk-stage1/dietlibc/libstdio/stdin.c26
-rw-r--r--mdk-stage1/dietlibc/libstdio/stdout.c25
-rw-r--r--mdk-stage1/dietlibc/libstdio/tmpfile.c12
-rw-r--r--mdk-stage1/dietlibc/libstdio/ungetc.c7
-rw-r--r--mdk-stage1/dietlibc/libstdio/vfdprintf.c15
-rw-r--r--mdk-stage1/dietlibc/libstdio/vfprintf.c15
-rw-r--r--mdk-stage1/dietlibc/libstdio/vfscanf.c11
-rw-r--r--mdk-stage1/dietlibc/libstdio/vprintf.c15
-rw-r--r--mdk-stage1/dietlibc/libstdio/vscanf.c10
-rw-r--r--mdk-stage1/dietlibc/libugly/asctime_r.c2
-rw-r--r--mdk-stage1/dietlibc/libugly/asprintf.c9
-rw-r--r--mdk-stage1/dietlibc/libugly/daemon.c35
-rw-r--r--mdk-stage1/dietlibc/libugly/difftime.c8
-rw-r--r--mdk-stage1/dietlibc/libugly/dirfd.c8
-rw-r--r--mdk-stage1/dietlibc/libugly/freeaddrinfo.c11
-rw-r--r--mdk-stage1/dietlibc/libugly/ftime.c15
-rw-r--r--mdk-stage1/dietlibc/libugly/gai_strerror.c13
-rw-r--r--mdk-stage1/dietlibc/libugly/getaddrinfo.c140
-rw-r--r--mdk-stage1/dietlibc/libugly/gethostent.c116
-rw-r--r--mdk-stage1/dietlibc/libugly/getmntent.c11
-rw-r--r--mdk-stage1/dietlibc/libugly/getnameinfo.c46
-rw-r--r--mdk-stage1/dietlibc/libugly/getprotobyname.c12
-rw-r--r--mdk-stage1/dietlibc/libugly/getprotobyname_r.c17
-rw-r--r--mdk-stage1/dietlibc/libugly/getprotobynumber.c12
-rw-r--r--mdk-stage1/dietlibc/libugly/getprotobynumber_r.c13
-rw-r--r--mdk-stage1/dietlibc/libugly/getprotoent.c130
-rw-r--r--mdk-stage1/dietlibc/libugly/getprotoent_r.c78
-rw-r--r--mdk-stage1/dietlibc/libugly/getservbyname.c12
-rw-r--r--mdk-stage1/dietlibc/libugly/getservbyname_r.c18
-rw-r--r--mdk-stage1/dietlibc/libugly/getservbyport.c12
-rw-r--r--mdk-stage1/dietlibc/libugly/getservbyport_r.c13
-rw-r--r--mdk-stage1/dietlibc/libugly/getservent.c10
-rw-r--r--mdk-stage1/dietlibc/libugly/getservent_r.c91
-rw-r--r--mdk-stage1/dietlibc/libugly/gmtime_r.c6
-rw-r--r--mdk-stage1/dietlibc/libugly/grantpt.c13
-rw-r--r--mdk-stage1/dietlibc/libugly/hasmntopt.c18
-rw-r--r--mdk-stage1/dietlibc/libugly/iconv.c71
-rw-r--r--mdk-stage1/dietlibc/libugly/iconv_close.c7
-rw-r--r--mdk-stage1/dietlibc/libugly/iconv_open.c28
-rw-r--r--mdk-stage1/dietlibc/libugly/isleap.c2
-rw-r--r--mdk-stage1/dietlibc/libugly/localtime_r.c8
-rw-r--r--mdk-stage1/dietlibc/libugly/logging.c38
-rw-r--r--mdk-stage1/dietlibc/libugly/mktime.c68
-rw-r--r--mdk-stage1/dietlibc/libugly/netent.c130
-rw-r--r--mdk-stage1/dietlibc/libugly/openpty.c54
-rw-r--r--mdk-stage1/dietlibc/libugly/popen.c28
-rw-r--r--mdk-stage1/dietlibc/libugly/protoent_buf.c5
-rw-r--r--mdk-stage1/dietlibc/libugly/ptsname.c17
-rw-r--r--mdk-stage1/dietlibc/libugly/putpwent.c19
-rw-r--r--mdk-stage1/dietlibc/libugly/servent_buf.c5
-rw-r--r--mdk-stage1/dietlibc/libugly/setenv.c12
-rw-r--r--mdk-stage1/dietlibc/libugly/strftime.c284
-rw-r--r--mdk-stage1/dietlibc/libugly/strndup.c10
-rw-r--r--mdk-stage1/dietlibc/libugly/strsignal.c92
-rw-r--r--mdk-stage1/dietlibc/libugly/system.c36
-rw-r--r--mdk-stage1/dietlibc/libugly/time_table_spd.c5
-rw-r--r--mdk-stage1/dietlibc/libugly/timezone.c3
-rw-r--r--mdk-stage1/dietlibc/libugly/tzfile.c37
-rw-r--r--mdk-stage1/dietlibc/libugly/unlockpt.c10
-rw-r--r--mdk-stage1/dietlibc/libugly/utent.c103
-rw-r--r--mdk-stage1/dietlibc/libugly/wtent.c30
-rw-r--r--mdk-stage1/dietlibc/linuxnet.h19
-rw-r--r--mdk-stage1/dietlibc/parselib.h23
-rw-r--r--mdk-stage1/dietlibc/ppc/__testandset.S9
-rw-r--r--mdk-stage1/dietlibc/ppc/clone.S48
-rw-r--r--mdk-stage1/dietlibc/ppc/mmap.c11
-rw-r--r--mdk-stage1/dietlibc/ppc/start.S32
-rw-r--r--mdk-stage1/dietlibc/ppc/syscalls.h259
-rw-r--r--mdk-stage1/dietlibc/ppc/unified.S37
-rw-r--r--mdk-stage1/dietlibc/profiling/PORTING25
-rw-r--r--mdk-stage1/dietlibc/profiling/README37
-rw-r--r--mdk-stage1/dietlibc/profiling/__mcount.c24
-rw-r--r--mdk-stage1/dietlibc/profiling/monitor.c93
-rw-r--r--mdk-stage1/dietlibc/profiling/profil.c75
-rw-r--r--mdk-stage1/dietlibc/sparc/Makefile.add1
-rw-r--r--mdk-stage1/dietlibc/sparc/__longjmp.S1
-rw-r--r--mdk-stage1/dietlibc/sparc/clone.S5
-rw-r--r--mdk-stage1/dietlibc/sparc/errlist.S280
-rw-r--r--mdk-stage1/dietlibc/sparc/fork.S2
-rw-r--r--mdk-stage1/dietlibc/sparc/mmap.c4
-rw-r--r--mdk-stage1/dietlibc/sparc/pipe.S2
-rw-r--r--mdk-stage1/dietlibc/sparc/setjmp.S28
-rw-r--r--mdk-stage1/dietlibc/sparc/shmat.c2
-rw-r--r--mdk-stage1/dietlibc/sparc/sigaction.c7
-rw-r--r--mdk-stage1/dietlibc/sparc/start.S58
-rw-r--r--mdk-stage1/dietlibc/sparc/strlen.S11
-rw-r--r--mdk-stage1/dietlibc/sparc/syscalls.h276
-rw-r--r--mdk-stage1/dietlibc/sparc/udiv.S102
-rw-r--r--mdk-stage1/dietlibc/sparc/umul.S6
-rw-r--r--mdk-stage1/dietlibc/sparc/unified.S10
-rw-r--r--mdk-stage1/dietlibc/sparc/urem.S102
-rw-r--r--mdk-stage1/dietlibc/start.h14
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/_llseek.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/_newselect.c6
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/access.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/chdir.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/chmod.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/chown.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/chroot.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/clone.c1
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/close.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/dup.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/dup2.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/execve.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/exit.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/fchdir.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/fchmod.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/fchown.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/fcntl.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/flock.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/fork.c6
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/fsync.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/ftruncate.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getcwd.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getdents.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getegid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/geteuid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getgid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getgroups.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getpgid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getpriority.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getresgid.c8
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getresuid.c8
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getrlimit.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getrusage.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getsid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/gettimeofday.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/getuid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/ioctl.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/kill.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/lchown.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/link.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/lseek.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/mkdir.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/mknod.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/mount.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/mprotect.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/mremap.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/munmap.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/nanosleep.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/open.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/pipe.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/poll.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/read.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/readlink.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/reboot.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/rename.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/rmdir.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setdomainname.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setgid.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setgroups.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/sethostname.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setitimer.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setpgid.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setpriority.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setregid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setresgid.c8
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setresuid.c8
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setreuid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setrlimit.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setsid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/setuid.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/sigaction.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/signal.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/sigpending.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/sigprocmask.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/sigsuspend.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/socketcall.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/swapoff.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/swapon.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/symlink.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/syslog.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/time.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/truncate.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/umask.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/umount.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/uname.c5
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/unlink.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/utime.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/wait4.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/waitpid.c4
-rw-r--r--mdk-stage1/dietlibc/syscalls.c/write.c3
-rw-r--r--mdk-stage1/dietlibc/syscalls.h151
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/__pread.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/__pwrite.S (renamed from mdk-stage1/dietlibc/syscalls.s/pwrite.S)0
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/_llseek.S4
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/adjtimex.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/alarm.S4
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/bdflush.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/chown32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/create_module.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/delete_module.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/environ.S16
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/epoll_create.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/epoll_ctl.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/epoll_wait.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/errlist.S293
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/errno.S8
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/exit.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/fchown32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/fdatasync.S6
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/fstat64.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/ftruncate64.S10
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/getdents64.S1
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/getegid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/geteuid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/getgid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/getgroups32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/getresgid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/getresuid.S4
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/getuid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/init_module.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/ioperm.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/ipc.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/lchown32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/llseek.S6
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/lstat64.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/madvise.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/mlock.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/mmap2.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/msync.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/munlock.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/n_sigaction.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/n_sigpending.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/n_sigprocmask.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/n_sigsuspend.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/nice.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/pause.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/pivot_root.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/prctl.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/ptrace.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/ptrace.s3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/rt_sigaction.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/rt_sigpending.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/rt_sigprocmask.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/rt_sigqueueinfo.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/rt_sigsuspend.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/rt_sigtimedwait.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/sendfile.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/sendfile64.S8
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setfsgid.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setfsgid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setfsuid.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setfsuid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setgid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setregid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setresgid.S4
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setresgid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setresuid.S4
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setreuid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/settimeofday.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/setuid32.S5
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/sigaction.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/signal.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/sigpending.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/sigprocmask.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/sigsuspend.S3
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/socketcall.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/stat64.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/stime.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/syslog.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/time.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/truncate64.S10
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/umount2.S2
-rw-r--r--mdk-stage1/dietlibc/syscalls.s/waitpid.S2
-rwxr-xr-xmdk-stage1/dietlibc/threadsafe.sh5
-rw-r--r--mdk-stage1/dietlibc/x86_64/Makefile.add2
-rw-r--r--mdk-stage1/dietlibc/x86_64/__longjmp.S26
-rw-r--r--mdk-stage1/dietlibc/x86_64/__testandset.S12
-rw-r--r--mdk-stage1/dietlibc/x86_64/accept.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/bind.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/clone.S64
-rw-r--r--mdk-stage1/dietlibc/x86_64/connect.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/getpeername.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/getsockname.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/getsockopt.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/listen.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/mmap.S8
-rw-r--r--mdk-stage1/dietlibc/x86_64/msgctl.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/msgget.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/msgrcv.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/msgsnd.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/recv.c13
-rw-r--r--mdk-stage1/dietlibc/x86_64/recvfrom.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/recvmsg.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/semctl.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/semget.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/semop.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/send.c13
-rw-r--r--mdk-stage1/dietlibc/x86_64/sendmsg.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/sendto.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/setjmp.S37
-rw-r--r--mdk-stage1/dietlibc/x86_64/setsockopt.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/shmat.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/shmctl.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/shmdt.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/shmget.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/shutdown.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/sigaction.c26
-rw-r--r--mdk-stage1/dietlibc/x86_64/socket.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/socketpair.S3
-rw-r--r--mdk-stage1/dietlibc/x86_64/start.S55
-rw-r--r--mdk-stage1/dietlibc/x86_64/syscalls.h282
-rw-r--r--mdk-stage1/dietlibc/x86_64/umount.S9
-rw-r--r--mdk-stage1/dietlibc/x86_64/unified.S32
-rw-r--r--mdk-stage1/dietlibc/x86_64/waitpid.S12
-rw-r--r--mdk-stage1/disk.c2
-rw-r--r--mdk-stage1/dns.c11
-rw-r--r--mdk-stage1/frontend.h8
-rw-r--r--mdk-stage1/init-data/msgboot-graphicallogo-2880.img.bz2bin30301 -> 59141 bytes-rw-r--r--mdk-stage1/init-data/msgboot-graphicallogo.img.bz2bin33777 -> 60612 bytes-rw-r--r--mdk-stage1/init-libc-headers.h1
-rw-r--r--mdk-stage1/init.c6
-rw-r--r--mdk-stage1/insmod-busybox/Config.h13
-rw-r--r--mdk-stage1/insmod-busybox/Makefile38
-rw-r--r--mdk-stage1/insmod-busybox/busybox.h10
-rw-r--r--mdk-stage1/insmod-busybox/insmod.c1749
-rw-r--r--mdk-stage1/insmod-modutils/Makefile24
-rw-r--r--mdk-stage1/insmod-modutils/include/config.h3
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_alpha.h1
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_arm.h1
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_i386.h1
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_m68k.h1
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_mips.h1
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_ppc.h1
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_s390.h5
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_sparc.h1
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_sparc64.h1
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_x86_64.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/kallsyms.h8
-rw-r--r--mdk-stage1/insmod-modutils/include/kerneld.h2
-rw-r--r--mdk-stage1/insmod-modutils/include/module.h17
-rw-r--r--mdk-stage1/insmod-modutils/include/obj.h39
-rw-r--r--mdk-stage1/insmod-modutils/include/util.h8
-rw-r--r--mdk-stage1/insmod-modutils/include/version.h2
-rw-r--r--mdk-stage1/insmod-modutils/insmod.c255
-rw-r--r--mdk-stage1/insmod-modutils/obj/Makefile14
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_alpha.c49
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_arm.c22
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_common.c41
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_gpl_license.c61
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_hppa.c74
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_hppa64.c60
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_i386.c14
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_ia64.c79
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_kallsyms.c6
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_load.c29
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_m68k.c2
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_mips.c22
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_ppc.c35
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_reloc.c46
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_s390.c181
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_sparc.c2
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_sparc64.c2
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_x86_64.c253
-rw-r--r--mdk-stage1/insmod-modutils/util/Makefile8
-rw-r--r--mdk-stage1/insmod-modutils/util/alias.h80
-rw-r--r--mdk-stage1/insmod-modutils/util/arch64.c16
-rw-r--r--mdk-stage1/insmod-modutils/util/config.c29
-rw-r--r--mdk-stage1/insmod-modutils/util/logger.c49
-rw-r--r--mdk-stage1/insmod-modutils/util/snap_shot.c4
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_cm.c2
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_dm.c2
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_gks.c2
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_nim.c2
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_oim.c2
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_qm.c2
-rw-r--r--mdk-stage1/insmod-modutils/util/xmalloc.c4
-rw-r--r--mdk-stage1/insmod-modutils/util/xrealloc.c2
-rw-r--r--mdk-stage1/insmod-modutils/util/xstrcat.c2
-rw-r--r--mdk-stage1/insmod-modutils/util/xstrdup.c4
-rw-r--r--mdk-stage1/insmod-modutils/util/xsystem.c2
-rw-r--r--mdk-stage1/log.c7
-rw-r--r--mdk-stage1/mar/Makefile16
-rw-r--r--mdk-stage1/minilibc.c67
-rw-r--r--mdk-stage1/minilibc.h24
-rw-r--r--mdk-stage1/network.c89
-rw-r--r--mdk-stage1/network.h2
-rw-r--r--mdk-stage1/newt/Makefile16
-rw-r--r--mdk-stage1/newt/form.c1
-rw-r--r--mdk-stage1/pcmcia_/Makefile17
-rw-r--r--mdk-stage1/ppp/include/net/ppp_defs.h2
-rw-r--r--mdk-stage1/ppp/pppd/Makefile26
-rw-r--r--mdk-stage1/rescue-gui.c18
-rw-r--r--mdk-stage1/rp-pppoe/src/Makefile25
-rw-r--r--mdk-stage1/slang/Makefile16
-rw-r--r--mdk-stage1/stage1-data/stage1-with-kadeploy.tar.bz2bin0 -> 875774 bytes-rw-r--r--mdk-stage1/stage1.c7
-rw-r--r--mdk-stage1/stage1.h3
-rw-r--r--mdk-stage1/stdio-frontend.c2
-rw-r--r--mdk-stage1/tools.c3
-rw-r--r--mdk-stage1/tools.h3
-rw-r--r--mdk-stage1/url.c47
-rw-r--r--mdk-stage1/url.h5
1169 files changed, 35354 insertions, 7426 deletions
diff --git a/mdk-stage1/.cvsignore b/mdk-stage1/.cvsignore
deleted file mode 100644
index a96a43de4..000000000
--- a/mdk-stage1/.cvsignore
+++ /dev/null
@@ -1,12 +0,0 @@
-init
-stage1-full
-stage1-cdrom
-stage1-disk
-stage1-network
-debug.log
-.depend
-*.rdz*
-mkinitrd_helper.tar.bz2
-hack_*
-stage1-usb
-rescue-gui
diff --git a/mdk-stage1/Makefile b/mdk-stage1/Makefile
index 81378031d..36cc85702 100644
--- a/mdk-stage1/Makefile
+++ b/mdk-stage1/Makefile
@@ -1,4 +1,4 @@
- #******************************************************************************
+ #*****************************************************************************
#
# mdk-stage1 - the program that will load second-stage install
#
@@ -33,6 +33,10 @@
# init with glibc
# stage1 with glibc
#
+ # x86-64
+ # init with minilibc
+ # stage1 with dietlibc
+ #
#*****************************************************************************
@@ -53,6 +57,10 @@ ifeq (i386, $(ARCH))
INITSRC = minilibc.c init.c
INIT_DEFS = -DINIT_HEADERS=\"minilibc.h\" -fno-builtin
else
+ifeq (x86_64, $(ARCH))
+INITSRC = minilibc.c init.c
+INIT_DEFS = -DINIT_HEADERS=\"minilibc.h\" -fno-builtin
+else
INITSRC = init.c
ifeq (ia64, $(ARCH))
INIT_DEFS = -DINIT_HEADERS=\"init-libc-headers.h\" $(GLIBC_INCLUDES)
@@ -60,33 +68,33 @@ else
INIT_DEFS = -DINIT_HEADERS=\"init-libc-headers.h\" $(DIETLIBC_INCLUDES)
endif
endif
+endif
INITOBJS = $(subst .c,.o,$(INITSRC))
#- frontends
NEWT_FRONTEND_SRC = newt-frontend.c
-GLIBC_NEWT_FRONTEND_LIBS = newt/libnewt.a slang/libslang.a
-DIETLIBC_NEWT_FRONTEND_LIBS = $(subst .a,-DIET.a,$(GLIBC_NEWT_FRONTEND_LIBS))
+NEWT_FRONTEND_LIBS = newt/libnewt.a slang/libslang.a
STDIO_FRONTEND_SRC = stdio-frontend.c
-GLIBC_STDIO_FRONTEND_LIBS =
-DIETLIBC_STDIO_FRONTEND_LIBS =
+STDIO_FRONTEND_LIBS =
+STDIO_FRONTEND_LIBS =
FRONTEND_OBJS = $(subst .c,.o,$($(F)_FRONTEND_SRC))
-FRONTEND_LINK = $(FRONTEND_OBJS) $($(L)_$(F)_FRONTEND_LIBS)
+FRONTEND_LINK = $(FRONTEND_OBJS) $($(F)_FRONTEND_LIBS)
+INSMOD = insmod-modutils
ifeq (i386, $(ARCH))
INSMOD = insmod-busybox
-else
-INSMOD = insmod-modutils
+endif
+ifeq (x86_64, $(ARCH))
+INSMOD = insmod-busybox
endif
-GLIBC_STAGE1_OWN_LIBS = $(INSMOD)/libinsmod.a mar/libmar.a bzlib/libbzlib.a
-DIETLIBC_STAGE1_OWN_LIBS = $(subst .a,-DIET.a,$(GLIBC_STAGE1_OWN_LIBS))
-STAGE1_OWN_LIBS = $($(L)_STAGE1_OWN_LIBS)
+STAGE1_OWN_LIBS = $(INSMOD)/libinsmod.a mar/libmar.a bzlib/libbzlib.a
ifeq (DIETLIBC, $(L))
@@ -94,8 +102,12 @@ STAGE1_NETWORK_LIBS = $(top_dir)/dietlibc/bin-$(ARCH)/librpc.a
endif
ifeq (GLIBC, $(L))
+ifeq (x86_64, $(ARCH))
+STAGE1_NETWORK_LIBS = /usr/lib64/libresolv.a
+else
STAGE1_NETWORK_LIBS = /usr/lib/libresolv.a
endif
+endif
#- stage1 itself
STAGE1SRC = stage1.c log.c tools.c modules.c probing.c mount.c automatic.c frontend-common.c
@@ -130,6 +142,10 @@ STAGE1OBJS-FULL = $(subst .c,-FULL.o,$(STAGE1SRC) $(CDROMSRC) $(DISKSRC) $(NETWO
ifeq (i386, $(ARCH))
LDFLAGS_INIT = -static -nostdlib /usr/lib/crt1.o
else
+ifeq (x86_64, $(ARCH))
+LDFLAGS_INIT = -static -nostdlib /usr/lib64/crt1.o
+INIT_LIBC = $(GLIBC_LIBC)
+else
ifeq (ia64, $(ARCH))
LDFLAGS_INIT = $(GLIBC_LDFLAGS_STAGE1)
INIT_LIBC = $(GLIBC_LIBC)
@@ -138,6 +154,7 @@ LDFLAGS_INIT = $(DIETLIBC_LDFLAGS_STAGE1)
INIT_LIBC = $(DIETLIBC_LIBC)
endif
endif
+endif
BINS = init stage1-full
@@ -145,24 +162,33 @@ BINS = init stage1-full
ifeq (i386, $(ARCH))
BINS += stage1-cdrom stage1-disk stage1-network stage1-usb
endif
+ifeq (x86_64, $(ARCH))
+BINS += stage1-cdrom stage1-disk stage1-network stage1-usb
+endif
-ifneq (ia64, $(ARCH))
+ifeq (i386, $(ARCH))
DIRS = dietlibc
endif
-DIRS += mar pci-resource usb-resource bzlib $(INSMOD) slang newt ppp/pppd rp-pppoe/src
-ifeq (i386,$(ARCH))
+ifeq (ppc, $(ARCH))
+DIRS = dietlibc
+endif
+ifeq (x86_64, $(ARCH))
+DIRS = dietlibc
+endif
+DIRS += mar pci-resource usb-resource bzlib $(INSMOD) slang newt
+ifneq (x86_64, $(ARCH))
+DIRS += ppp/pppd rp-pppoe/src
+endif
+ifeq (i386, $(ARCH))
DIRS += pcmcia_
endif
ifeq (i386,$(ARCH))
-GLIBC_PCMCIA_LIB = pcmcia_/libpcmcia.a
-DIETLIBC_PCMCIA_LIB = $(subst .a,-DIET.a,$(GLIBC_PCMCIA_LIB))
-PCMCIA_LIB = $($(L)_PCMCIA_LIB)
+PCMCIA_LIB = pcmcia_/libpcmcia.a
PCMCIA_DEFS = -DENABLE_PCMCIA
endif
-
USB_DEFS_GEN = -DENABLE_USB
USB_DEFS = -DENABLE_USB -DDISABLE_PCIADAPTERS
@@ -178,23 +204,23 @@ init: $(INITOBJS) $(INIT_LIBC)
$(STRIPCMD) $@
stage1-cdrom: $(STAGE1OBJS-CDROM) $(STAGE1_OWN_LIBS) $(FRONTEND_LINK) $(STAGE1_LIBC)
- $(CC) $(LDFLAGS_STAGE1) -o $@ $^
+ $(DIET) $(CC) $(LDFLAGS_STAGE1) -o $@ $^
$(STRIPCMD) $@
stage1-disk: $(STAGE1OBJS-DISK) $(STAGE1_OWN_LIBS) $(FRONTEND_LINK) $(STAGE1_LIBC)
- $(CC) $(LDFLAGS_STAGE1) -o $@ $^
+ $(DIET) $(CC) $(LDFLAGS_STAGE1) -o $@ $^
$(STRIPCMD) $@
stage1-network: $(STAGE1OBJS-NETWORK) $(STAGE1_OWN_LIBS) $(STAGE1_NETWORK_LIBS) $(FRONTEND_LINK) $(PCMCIA_LIB) $(STAGE1_LIBC)
- $(CC) $(LDFLAGS_STAGE1) -o $@ $^
+ $(DIET) $(CC) $(LDFLAGS_STAGE1) -o $@ $^
$(STRIPCMD) $@
stage1-usb: $(STAGE1OBJS-USB) $(STAGE1_OWN_LIBS) $(STAGE1_NETWORK_LIBS) $(FRONTEND_LINK) $(STAGE1_LIBC)
- $(CC) $(LDFLAGS_STAGE1) -o $@ $^
+ $(DIET) $(CC) $(LDFLAGS_STAGE1) -o $@ $^
$(STRIPCMD) $@
stage1-full: $(STAGE1OBJS-FULL) $(STAGE1_OWN_LIBS) $(STAGE1_NETWORK_LIBS) $(FRONTEND_LINK) $(PCMCIA_LIB) $(STAGE1_LIBC)
- $(CC) $(LDFLAGS_STAGE1) -o $@ $^
+ $(DIET) $(CC) $(LDFLAGS_STAGE1) -o $@ $^
$(STRIPCMD) $@
@@ -202,22 +228,22 @@ $(INITOBJS): %.o: %.c
$(COMPILE) $(INIT_DEFS) -c $<
$(STAGE1OBJS-CDROM): %-CDROM.o: %.c
- $(COMPILE) $(INCLUDES) $(CDROM_DEFS) -c $< -o $@
+ $(DIET) $(COMPILE) $(INCLUDES) $(CDROM_DEFS) -c $< -o $@
$(STAGE1OBJS-DISK): %-DISK.o: %.c
- $(COMPILE) $(INCLUDES) $(DISK_DEFS) -c $< -o $@
+ $(DIET) $(COMPILE) $(INCLUDES) $(DISK_DEFS) -c $< -o $@
$(STAGE1OBJS-NETWORK): %-NETWORK.o: %.c
- $(COMPILE) $(INCLUDES) $(NETWORK_DEFS) $(PCMCIA_DEFS) -c $< -o $@
+ $(DIET) $(COMPILE) $(INCLUDES) $(NETWORK_DEFS) $(PCMCIA_DEFS) -c $< -o $@
$(STAGE1OBJS-USB): %-USB.o: %.c
- $(COMPILE) $(INCLUDES) $(USB_DEFS) -c $< -o $@
+ $(DIET) $(COMPILE) $(INCLUDES) $(USB_DEFS) -c $< -o $@
$(STAGE1OBJS-FULL): %-FULL.o: %.c
- $(COMPILE) $(INCLUDES) $(USB_DEFS_GEN) $(PCMCIA_DEFS) -c $< -o $@
+ $(DIET) $(COMPILE) $(INCLUDES) $(USB_DEFS_GEN) $(PCMCIA_DEFS) -c $< -o $@
.c.o:
- $(COMPILE) $(INCLUDES) -c $<
+ $(DIET) $(COMPILE) $(INCLUDES) -c $<
clean:
@@ -236,7 +262,7 @@ tar-mkinitrd_helper: clean
rm -rf mkinitrd_helper-subdir
rescue-gui: rescue-gui.o frontend-common.o $(FRONTEND_LINK) $(STAGE1_LIBC)
- $(CC) $(LDFLAGS_STAGE1) -o $@ $^
+ $(DIET) $(CC) $(LDFLAGS_STAGE1) -o $@ $^
$(STRIPCMD) $@
diff --git a/mdk-stage1/Makefile.common b/mdk-stage1/Makefile.common
index 7506c1381..cc9e602da 100644
--- a/mdk-stage1/Makefile.common
+++ b/mdk-stage1/Makefile.common
@@ -32,6 +32,13 @@ endif
ifeq (ppc, $(ARCH))
L = GLIBC
endif
+ifeq (x86_64, $(ARCH))
+#L = GLIBC
+endif
+
+ifeq (DIETLIBC, $(L))
+DIET = $(top_dir)/dietlibc/bin-$(ARCH)/diet
+endif
#- flags used by all stuff
@@ -46,11 +53,11 @@ GLIBC_INCLUDES = -I. -I$(top_dir)/bzlib
INCLUDES = $($(L)_INCLUDES)
GLIBC_LDFLAGS_STAGE1 = -static
-DIETLIBC_LDFLAGS_STAGE1 = -nostdlib $(top_dir)/dietlibc/bin-$(ARCH)/start.o
+DIETLIBC_LDFLAGS_STAGE1 = -nostdlib
LDFLAGS_STAGE1 = $($(L)_LDFLAGS_STAGE1)
GLIBC_LIBC =
-DIETLIBC_LIBC = $(top_dir)/dietlibc/bin-$(ARCH)/dietlibc.a
+DIETLIBC_LIBC =
STAGE1_LIBC = $($(L)_LIBC)
STRIPCMD = strip -R .note -R .comment
diff --git a/mdk-stage1/bzlib/Makefile b/mdk-stage1/bzlib/Makefile
index 03a2c254b..8e4bba791 100644
--- a/mdk-stage1/bzlib/Makefile
+++ b/mdk-stage1/bzlib/Makefile
@@ -29,27 +29,14 @@ INCS =
TARGETS = $(LIBNAME).a
-ifeq (DIETLIBC, $(L))
-TARGETS += $(LIBNAME)-DIET.a
-endif
-
all: $(TARGETS)
clean:
rm -f *.o *.a
-OBJS-DIET = $(subst .o,-DIET.o,$(OBJS))
-
$(LIBNAME).a: $(OBJS)
ar -cru $@ $^
ranlib $@
-$(LIBNAME)-DIET.a: $(OBJS-DIET)
- ar -cru $@ $^
- ranlib $@
-
$(OBJS): %.o: %.c
- $(CC) $(CFLAGS) $(DEFS) $(INCS) $(GLIBC_INCLUDES) -c $< -o $@
-
-$(OBJS-DIET): %-DIET.o: %.c
- $(CC) $(CFLAGS) $(DEFS) $(INCS) $(DIETLIBC_INCLUDES) -c $< -o $@
+ $(DIET) $(CC) $(CFLAGS) $(DEFS) $(INCS) $(INCLUDES) -c $< -o $@
diff --git a/mdk-stage1/dhcp.c b/mdk-stage1/dhcp.c
index 32c7a932b..451452227 100644
--- a/mdk-stage1/dhcp.c
+++ b/mdk-stage1/dhcp.c
@@ -211,7 +211,7 @@ static void parse_reply(struct bootp_request * breq, struct interface_info * int
unsigned char * chptr;
unsigned char option, length;
- if (breq->bootfile && strlen(breq->bootfile) > 0)
+ if (breq->bootfile && strlen(breq->bootfile) > 0 && IS_NETAUTO)
stage2_kickstart = strdup(breq->bootfile);
memcpy(&intf->ip, &breq->yiaddr, 4);
@@ -347,7 +347,7 @@ static unsigned long currticks(void)
#define BACKOFF_LIMIT 7
#define TICKS_PER_SEC 18
-#define MAX_ARP_RETRIES 4
+#define MAX_ARP_RETRIES 7
static void rfc951_sleep(int exp)
{
diff --git a/mdk-stage1/dietlibc/.cvsignore b/mdk-stage1/dietlibc/.cvsignore
index 7c88cb004..f0be42e21 100644
--- a/mdk-stage1/dietlibc/.cvsignore
+++ b/mdk-stage1/dietlibc/.cvsignore
@@ -10,3 +10,19 @@ bin-i386
bin-mips
bin-ppc
bin-sparc
+bin-mipsel
+bin-parisc
+bin-s390
+bin-sparc64
+pic-alpha
+pic-arm
+pic-i386
+pic-mips
+pic-ppc
+pic-sparc
+pic-mipsel
+pic-parisc
+pic-s390
+pic-sparc64
+bin-ia64
+bin-x86_64
diff --git a/mdk-stage1/dietlibc/AUTHOR b/mdk-stage1/dietlibc/AUTHOR
index 6d8ab1a05..3f6a44e6d 100644
--- a/mdk-stage1/dietlibc/AUTHOR
+++ b/mdk-stage1/dietlibc/AUTHOR
@@ -1 +1,3 @@
Felix von Leitner <felix-dietlibc@fefe.de>
+
+Please see the file THANKS for additional authors and contributors.
diff --git a/mdk-stage1/dietlibc/Makefile b/mdk-stage1/dietlibc/Makefile
index b6e7b2783..0fe32e61b 100644
--- a/mdk-stage1/dietlibc/Makefile
+++ b/mdk-stage1/dietlibc/Makefile
@@ -1,13 +1,101 @@
-ARCH=$(shell uname -m | sed 's/i[4-9]86/i386/')
+INSTALL=install
+prefix?=/usr
+# Set the following to install to a different root
+#DESTDIR=/tmp/fefix
+# Use "make DEBUG=1" to compile a debug version.
+
+MYARCH:=$(shell uname -m | sed -e 's/i[4-9]86/i386/' -e 's/armv[3-6][lb]/arm/' -e 's/ppc64/ppc/')
+
+# This extra-ugly cruft is here so make will not run uname and sed each
+# time it looks at $(OBJDIR). This alone sped up running make when
+# nothing has to be done from 1 sec to 0.12 sec on a 900 MHz Athlon.
+# We don't use ARCH:=$(MYARCH) so we can detect unknown architectures.
+ifeq ($(MYARCH),i386)
+ARCH=i386
+else
+ifeq ($(MYARCH),mips)
+ARCH=mips
+else
+ifeq ($(MYARCH),alpha)
+ARCH=alpha
+else
+ifeq ($(MYARCH),ppc)
+ARCH=ppc
+else
+ifeq ($(MYARCH),arm)
+ARCH=arm
+else
+ifeq ($(MYARCH),sparc)
+ARCH=sparc
+else
+ifeq ($(MYARCH),sparc64)
+ARCH=sparc64
+else
+ifeq ($(MYARCH),s390)
+ARCH=s390
+else
+ifeq ($(MYARCH),mipsel)
+ARCH=mipsel
+else
+ifeq ($(MYARCH),parisc)
+ARCH=parisc
+else
+ifeq ($(MYARCH),parisc64)
+ARCH=parisc
+MYARCH=parisc
+else
+ifeq ($(MYARCH),x86_64)
+ARCH=x86_64
+else
+ifeq ($(MYARCH),ia64)
+ARCH=ia64
+else
+$(error unknown architecture, please fix Makefile)
+endif
+endif
+endif
+endif
+endif
+endif
+endif
+endif
+endif
+endif
+endif
+endif
+endif
+
+# ARCH=$(MYARCH)
+
+LIBDIR=${prefix}/lib
+ifeq ($(ARCH),x86_64)
+LIBDIR=${prefix}/lib64
+endif
+BINDIR=${prefix}/bin
+MAN1DIR=${prefix}/share/man/man1
+INSTALLHOME=$(LIBDIR)/dietlibc
OBJDIR=bin-$(ARCH)
+ILIBDIR=$(INSTALLHOME)/lib-$(ARCH)
-all: $(OBJDIR) $(OBJDIR)/start.o $(OBJDIR)/dietlibc.a $(OBJDIR)/liblatin1.a $(OBJDIR)/librpc.a $(OBJDIR)/diet
+HOME=$(shell pwd)
-CFLAGS=-pipe
+WHAT= $(OBJDIR) $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o $(OBJDIR)/dyn_stop.o \
+ $(OBJDIR)/dietlibc.a $(OBJDIR)/liblatin1.a \
+ $(OBJDIR)/libcompat.a $(OBJDIR)/libm.a \
+ $(OBJDIR)/librpc.a $(OBJDIR)/libpthread.a \
+ $(OBJDIR)/diet $(OBJDIR)/diet-i
+
+all: $(WHAT)
+
+profiling: $(OBJDIR)/libgmon.a $(OBJDIR)/pstart.o
+
+CFLAGS=-pipe -nostdinc
CROSS=
-VPATH=lib:libstdio:libugly:libcruft:libcrypt:libshell:liblatin1:librpc:libregex:syscalls.c
+CC=gcc
+
+VPATH=lib:libstdio:libugly:libcruft:libcrypt:libshell:liblatin1:libcompat:libdl:librpc:libregex:libm:profiling
SYSCALLOBJ=$(patsubst syscalls.s/%.S,$(OBJDIR)/%.o,$(wildcard syscalls.s/*.S))
@@ -17,13 +105,23 @@ LIBSTDIOOBJ=$(patsubst libstdio/%.c,$(OBJDIR)/%.o,$(wildcard libstdio/*.c))
LIBCRUFTOBJ=$(patsubst libcruft/%.c,$(OBJDIR)/%.o,$(wildcard libcruft/*.c))
LIBCRYPTOBJ=$(patsubst libcrypt/%.c,$(OBJDIR)/%.o,$(wildcard libcrypt/*.c))
LIBSHELLOBJ=$(patsubst libshell/%.c,$(OBJDIR)/%.o,$(wildcard libshell/*.c))
+LIBCOMPATOBJ=$(patsubst libcompat/%.c,$(OBJDIR)/%.o,$(wildcard libcompat/*.c)) $(OBJDIR)/syscall.o
+LIBMATH=$(patsubst libm/%.c,%.o,$(wildcard libm/*.c))
LIBRPCOBJ=$(patsubst librpc/%.c,$(OBJDIR)/%.o,$(wildcard librpc/*.c))
LIBREGEXOBJ=$(patsubst libregex/%.c,$(OBJDIR)/%.o,$(wildcard libregex/*.c))
+LIBDLOBJ=$(patsubst libdl/%.c,$(OBJDIR)/%.o,$(wildcard libdl/*.c)) $(OBJDIR)/_dl_jump.o
+
+LIBPTHREAD_OBJS=$(patsubst libpthread/%.c,$(OBJDIR)/%.o,$(shell ./threadsafe.sh)) $(OBJDIR)/__testandset.o
+
+LIBGMON_OBJS=$(OBJDIR)/__mcount.o $(OBJDIR)/monitor.o $(OBJDIR)/profil.o
+
include $(ARCH)/Makefile.add
-ifeq ($(CFLAGS),-pipe)
+LIBMATHOBJ=$(patsubst %,$(OBJDIR)/%,$(LIBMATH))
+
+ifeq ($(CFLAGS),-pipe -nostdinc)
CFLAGS+=-O -fomit-frame-pointer
endif
@@ -31,28 +129,39 @@ ifneq ($(DEBUG),)
CFLAGS = -g
COMMENT = :
endif
-CFLAGS += -Wall -Wno-switch
+CFLAGS += -Wall -W -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -Wno-switch -Wredundant-decls -Wno-unused
PWD=$(shell pwd)
.SUFFIXES:
.SUFFIXES: .S .c
-$(OBJDIR):
+# added real dynamic dietlibc.so
+PICODIR = pic-$(ARCH)
+
+$(OBJDIR) $(PICODIR):
mkdir $@
% :: %,v
-$(OBJDIR)/%.o: %.S
+$(OBJDIR)/pstart.o: start.S
+ $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -DPROFILING -c $< -o $@
+
+$(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h
$(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -c $< -o $@
+$(OBJDIR)/pthread_%.o: libpthread/pthread_%.c
+ $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -c $< -o $@
+ $(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
+
$(OBJDIR)/%.o: %.c
$(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -c $< -o $@
- $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
+ $(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
-DIETLIBC_OBJ = $(SYSCALLOBJ) $(LIBOBJ) $(LIBSTDIOOBJ) $(LIBUGLYOBJ) \
+DIETLIBC_OBJ = $(OBJDIR)/unified.o \
+$(SYSCALLOBJ) $(LIBOBJ) $(LIBSTDIOOBJ) $(LIBUGLYOBJ) \
$(LIBCRUFTOBJ) $(LIBCRYPTOBJ) $(LIBSHELLOBJ) $(LIBREGEXOBJ) \
-$(OBJDIR)/__longjmp.o $(OBJDIR)/setjmp.o $(OBJDIR)/unified.o \
+$(OBJDIR)/__longjmp.o $(OBJDIR)/setjmp.o \
$(OBJDIR)/mmap.o $(OBJDIR)/clone.o
$(OBJDIR)/dietlibc.a: $(DIETLIBC_OBJ) $(OBJDIR)/start.o
@@ -65,67 +174,179 @@ LIBLATIN1_OBJS=$(patsubst liblatin1/%.c,$(OBJDIR)/%.o,$(wildcard liblatin1/*.c))
$(OBJDIR)/liblatin1.a: $(LIBLATIN1_OBJS)
$(CROSS)ar cru $@ $^
+$(OBJDIR)/libgmon.a: $(LIBGMON_OBJS)
+ $(CROSS)ar cru $@ $^
+
+$(OBJDIR)/libpthread.a: $(LIBPTHREAD_OBJS) dietfeatures.h
+ $(CROSS)ar cru $@ $(LIBPTHREAD_OBJS)
+
+$(OBJDIR)/libcompat.a: $(LIBCOMPATOBJ)
+ $(CROSS)ar cru $@ $(LIBCOMPATOBJ)
+
+$(OBJDIR)/libm.a: $(LIBMATHOBJ)
+ $(CROSS)ar cru $@ $(LIBMATHOBJ)
+
$(OBJDIR)/libdietc.so: $(OBJDIR)/dietlibc.a
$(CROSS)ld -whole-archive -shared -o $@ $^
+dyn: dyn_lib
+
+# added dynamic linker
+$(OBJDIR)/libdl.a: $(LIBDLOBJ)
+ $(CROSS)ar cru $@ $(LIBDLOBJ)
+
+dyn_lib: $(PICODIR) $(PICODIR)/libc.so $(PICODIR)/dstart.o \
+ $(PICODIR)/dyn_so_start.o $(PICODIR)/dyn_start.o $(PICODIR)/dyn_stop.o \
+ $(PICODIR)/libpthread.so $(PICODIR)/libdl.so $(PICODIR)/libcompat.so \
+ $(PICODIR)/diet-dyn $(PICODIR)/diet-dyn-i
+
+$(PICODIR)/%.o: %.S $(ARCH)/syscalls.h
+ $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
+
+$(PICODIR)/pthread_%.o: libpthread/pthread_%.c
+ $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
+ $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
+
+$(PICODIR)/%.o: %.c
+ $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
+ $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
+
+$(PICODIR)/dstart.o: start.S
+ $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
+
+$(PICODIR)/dyn_so_start.o: dyn_start.c
+ $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -fPIC -D__DYN_LIB -D__DYN_LIB_SHARED -c $< -o $@
+ $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
+
+DYN_LIBC_PIC = $(LIBOBJ) $(LIBSTDIOOBJ) $(LIBUGLYOBJ) \
+$(LIBCRUFTOBJ) $(LIBCRYPTOBJ) $(LIBSHELLOBJ) $(LIBREGEXOBJ)
+
+DYN_LIBC_OBJ = $(PICODIR)/dyn_syscalls.o $(PICODIR)/errlist.o \
+ $(patsubst $(OBJDIR)/%.o,$(PICODIR)/%.o,$(DYN_LIBC_PIC))
+
+DYN_PTHREAD_OBJS = $(patsubst $(OBJDIR)/%.o,$(PICODIR)/%.o,$(LIBPTHREAD_OBJS))
+
+DYN_LIBDL_OBJS = $(patsubst $(OBJDIR)/%.o,$(PICODIR)/%.o,$(LIBDLOBJ))
+
+DYN_LIBCOMPAT_OBJS = $(patsubst $(OBJDIR)/%.o,$(PICODIR)/%.o,$(LIBCOMPATOBJ))
+
+$(PICODIR)/libc.so: $(PICODIR) $(DYN_LIBC_OBJ)
+ $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBC_OBJ) -lgcc -Wl,-soname=libc.so
+
+$(PICODIR)/libpthread.so: $(DYN_PTHREAD_OBJS) dietfeatures.h
+ $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_PTHREAD_OBJS) -L$(PICODIR) -lc -Wl,-soname=libpthread.so
+
+$(PICODIR)/libdl.so: libdl/_dl_main.c dietfeatures.h
+ $(CROSS)$(CC) -D__OD_CLEAN_ROOM -DNODIETREF -fPIC -nostdlib -shared -o $@ $(CFLAGS) -I. -Iinclude libdl/_dl_main.c -Wl,-soname=libdl.so
+
+#$(PICODIR)/libdl.so: $(DYN_LIBDL_OBJS) dietfeatures.h
+# $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBDL_OBJS) -L$(PICODIR) -ldietc -Wl,-soname=libdl.so
+
+$(PICODIR)/libcompat.so: $(DYN_LIBCOMPAT_OBJS) dietfeatures.h
+ $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBCOMPAT_OBJS) -L$(PICODIR) -lc -Wl,-soname=libcompat.so
+
+
+
$(SYSCALLOBJ): syscalls.h
-$(OBJDIR)/diet: diet.c $(OBJDIR)/start.o $(OBJDIR)/dietlibc.a
- $(CROSS)$(CC) -Iinclude $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(PWD)\"
+VERSION=dietlibc-$(shell head -1 CHANGES|sed 's/://')
+CURNAME=$(notdir $(shell pwd))
+
+$(OBJDIR)/diet: $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o diet.c $(OBJDIR)/dietlibc.a $(OBJDIR)/dyn_stop.o
+ $(CROSS)$(CC) -Iinclude $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(HOME)\" -DVERSION=\"$(VERSION)\" -lgcc
+ $(CROSS)strip -R .comment -R .note $@
+
+$(OBJDIR)/diet-i: $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o diet.c $(OBJDIR)/dietlibc.a $(OBJDIR)/dyn_stop.o
+ $(CROSS)$(CC) -Iinclude $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(INSTALLHOME)\" -DVERSION=\"$(VERSION)\" -DINSTALLVERSION -lgcc
$(CROSS)strip -R .comment -R .note $@
+$(PICODIR)/diet-dyn: $(PICODIR)/start.o $(PICODIR)/dyn_start.o diet.c
+ $(CROSS)$(CC) -Iinclude $(CFLAGS) -fPIC -nostdlib -o $@ $^ -DDIETHOME=\"$(HOME)\" -D__DYN_LIB -DVERSION=\"$(VERSION)\" -L$(PICODIR) -lc -lgcc $(PICODIR)/dyn_stop.o -Wl,-dynamic-linker=$(HOME)/$(PICODIR)/libdl.so
+ $(CROSS)strip -R .command -R .note $@
+
+$(PICODIR)/diet-dyn-i: $(PICODIR)/start.o $(PICODIR)/dyn_start.o diet.c
+ $(CROSS)$(CC) -Iinclude $(CFLAGS) -fPIC -nostdlib -o $@ $^ -DDIETHOME=\"$(prefix)\" -D__DYN_LIB -DVERSION=\"$(VERSION)\" -L$(PICODIR) -lc -lgcc $(PICODIR)/dyn_stop.o -Wl,-dynamic-linker=$(ILIBDIR)/libdl.so -DINSTALLVERSION
+ $(CROSS)strip -R .command -R .note $@
+
$(OBJDIR)/djb: $(OBJDIR)/compile $(OBJDIR)/load
$(OBJDIR)/compile:
- echo 'exec gcc $(CFLAGS) -I$(PWD)/$(OBJDIR)/include -c $${1+"$$@"}' > $@
+ echo 'exec' $(CC) '$(CFLAGS) -I$(PWD)/$(OBJDIR)/include -c $${1+"$$@"}' > $@
chmod 755 $@
$(OBJDIR)/load:
- echo 'main="$$1"; shift; exec gcc -nostdlib -o "$$main" $(PWD)/$(OBJDIR)/start.o "$$main".o $${1+"$$@"} $(PWD)/$(OBJDIR)/dietlibc.a -lgcc' > $@
+ echo 'main="$$1"; shift; exec' $(CC) '-nostdlib -o "$$main" $(PWD)/$(OBJDIR)/start.o "$$main".o $${1+"$$@"} $(PWD)/$(OBJDIR)/dietlibc.a -lgcc' > $@
chmod 755 $@
clean:
rm -f *.o *.a t t1 compile load exports mapfile libdietc.so
- rm -rf bin-*
+ rm -rf bin-* pic-*
+ $(MAKE) -C libdl clean
-tar: clean
- rm -f armv4l
- ln -sf arm armv4l
- cd ..; tar cvvf dietlibc.tar.bz2 dietlibc --use=bzip2 --exclude CVS
+tar: clean rename
+ cd ..; tar cvvf $(VERSION).tar.bz2 $(VERSION) --use=bzip2 --exclude CVS
+
+rename:
+ if test $(CURNAME) != $(VERSION); then cd .. && mv $(CURNAME) $(VERSION); fi
$(OBJDIR)/exports: $(OBJDIR)/dietlibc.a
nm -g $(OBJDIR)/dietlibc.a | grep -w T | awk '{ print $$3 }' | sort -u > $(OBJDIR)/exports
.PHONY: t t1
t:
- $(CROSS)$(CC) -g $(CFLAGS) -fno-builtin -nostdlib -Iinclude -o t t.c $(OBJDIR)/start.o $(OBJDIR)/dietlibc.a -lgcc -Wl,-Map,mapfile
+ $(CROSS)$(CC) -g $(CFLAGS) -fno-builtin -nostdlib -Iinclude -o t t.c $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o $(OBJDIR)/dietlibc.a -lgcc $(OBJDIR)/dyn_stop.o -Wl,-Map,mapfile
t1:
$(CROSS)$(CC) -g -o t1 t.c
-install: $(OBJDIR)/start.o $(OBJDIR)/dietlibc.a $(OBJDIR)/liblatin1.a $(OBJDIR)/diet
- cp $(OBJDIR)/start.o $(INSTALLPREFIX)$(prefix)/lib/dietstart.o
- cp $(OBJDIR)/dietlibc.a $(INSTALLPREFIX)$(prefix)/lib/libdietc.a
- cp $(OBJDIR)/liblatin1.a $(INSTALLPREFIX)$(prefix)/lib/libdietlatin1.a
- cp $(OBJDIR)/diet $(INSTALLPREFIX)$(prefix)/bin/diet
-
-.PHONY: sparc ppc mips arm alpha i386
-
-arm sparc ppc alpha i386:
- $(MAKE) ARCH=$@ CROSS=$@-linux- all t bin-$@/libdietc.so
-
-mips:
- $(MAKE) ARCH=$@ CROSS=$@-linux-gnu- all t bin-$@/libdietc.so
+install: $(OBJDIR)/start.o $(OBJDIR)/dietlibc.a $(OBJDIR)/librpc.a $(OBJDIR)/liblatin1.a $(OBJDIR)/libcompat.a $(OBJDIR)/diet-i
+ $(INSTALL) -d $(DESTDIR)$(ILIBDIR) $(DESTDIR)$(MAN1DIR) $(DESTDIR)$(BINDIR)
+ $(INSTALL) $(OBJDIR)/start.o $(DESTDIR)$(ILIBDIR)/start.o
+ $(INSTALL) -m 644 $(OBJDIR)/libm.a $(OBJDIR)/libpthread.a $(OBJDIR)/librpc.a \
+$(OBJDIR)/liblatin1.a $(OBJDIR)/libcompat.a $(DESTDIR)$(ILIBDIR)
+ $(INSTALL) -m 644 $(OBJDIR)/dietlibc.a $(DESTDIR)$(ILIBDIR)/libc.a
+ifeq ($(MYARCH),$(ARCH))
+ $(INSTALL) $(OBJDIR)/diet-i $(DESTDIR)$(BINDIR)/diet
+ -$(INSTALL) $(PICODIR)/diet-dyn-i $(DESTDIR)$(BINDIR)/diet-dyn
+endif
+ -$(INSTALL) $(OBJDIR)/pstart.o $(OBJDIR)/libgmon.a $(OBJDIR)/dyn_start.o $(OBJDIR)/dyn_stop.o $(DESTDIR)$(ILIBDIR)
+ -$(INSTALL) $(PICODIR)/libc.so $(DESTDIR)$(ILIBDIR)/libc.so
+ -$(INSTALL) $(PICODIR)/libpthread.so $(DESTDIR)$(ILIBDIR)/libpthread.so
+ -$(INSTALL) $(PICODIR)/libdl.so $(DESTDIR)$(ILIBDIR)/libdl.so
+ -$(INSTALL) $(PICODIR)/libcompat.so $(DESTDIR)$(ILIBDIR)/libcompat.so
+ -$(INSTALL) $(PICODIR)/dyn_start.o $(DESTDIR)$(ILIBDIR)/dyn_dstart.o
+ -$(INSTALL) $(PICODIR)/dyn_stop.o $(DESTDIR)$(ILIBDIR)/dyn_dstop.o
+ -$(INSTALL) $(PICODIR)/dstart.o $(PICODIR)/dyn_so_start.o $(DESTDIR)$(ILIBDIR)
+ $(INSTALL) -m 644 diet.1 $(DESTDIR)$(MAN1DIR)/diet.1
+ if test -f $(PICODIR)/libc.so -a ! -f $(DESTDIR)/etc/diet.ld.conf; then echo "$(ILIBDIR)" > $(DESTDIR)/etc/diet.ld.conf; fi
+ for i in `find include -name \*.h`; do install -m 644 -D $$i $(DESTDIR)$(INSTALLHOME)/$$i; done
+
+.PHONY: sparc ppc mips arm alpha i386 parisc mipsel powerpc s390 sparc64
+.PHONY: x86_64 ia64
+
+arm sparc ppc alpha i386 mips parisc s390 sparc64 x86_64 ia64:
+ $(MAKE) ARCH=$@ CROSS=$@-linux- all
+
+# Cross compile for little endian MIPS
+mipsel:
+ $(MAKE) ARCH=$@ CROSS=mips-linux- all
+
+mips-gnu:
+ $(MAKE) ARCH=$@ CROSS=$@-linux-gnu- all
+
+# Some people named their cross compiler toolchain powerpc-linux-gcc
+powerpc:
+ $(MAKE) ARCH=ppc CROSS=powerpc-linux- all
cross:
- $(MAKE) arm sparc ppc alpha i386 mips
+ $(MAKE) arm sparc ppc alpha i386 mips sparc64
# these depend on dietfeatures.h for large file backward compatibility
-$(OBJDIR)/__fstat64.o $(OBJDIR)/__lstat64.o $(OBJDIR)/__stat64.o: dietfeatures.h
+$(OBJDIR)/__fstat64.o $(OBJDIR)/__lstat64.o $(OBJDIR)/__stat64.o $(OBJDIR)/lseek64.o $(OBJDIR)/readdir64.o $(OBJDIR)/stat64.o $(OBJDIR)/lstat64.o $(OBJDIR)/fstat64.o $(OBJDIR)/truncate64.o $(OBJDIR)/__truncate64.o $(OBJDIR)/ftruncate64.o $(OBJDIR)/__ftruncate64.o $(PICODIR)/dyn_syscalls.o $(PICODIR)/__truncate64.o $(PICODIR)/__ftruncate64.o $(PICODIR)/__stat64.o $(PICODIR)/__lstat64.o $(PICODIR)/__fstat64.o: dietfeatures.h
# these depend on dietfeatures.h for thread support
-$(OBJDIR)/alloc.o $(OBJDIR)/perror.o $(OBJDIR)/logging.o $(OBJDIR)/unified.o: dietfeatures.h
+$(OBJDIR)/alloc.o $(OBJDIR)/perror.o $(OBJDIR)/logging.o $(OBJDIR)/unified.o $(OBJDIR)/clone.o $(OBJDIR)/set_errno.o: dietfeatures.h
# these depend on dietfeatures.h for linker warnings
$(OBJDIR)/assert_fail.o $(OBJDIR)/sprintf.o $(OBJDIR)/vsnprintf.o $(OBJDIR)/___div.o $(OBJDIR)/fflush.o $(OBJDIR)/setvbuf.o $(OBJDIR)/system.o $(OBJDIR)/sendfile.o $(OBJDIR)/setenv.o: dietfeatures.h
@@ -137,10 +358,56 @@ fclose.o $(OBJDIR)/fdglue.o $(OBJDIR)/fflush.o $(OBJDIR)/fgetc.o $(OBJDIR)/fputc
strcasecmp.o $(OBJDIR)/strcat.o $(OBJDIR)/strchr.o $(OBJDIR)/strcmp.o $(OBJDIR)/strcpy.o $(OBJDIR)/strlen.o $(OBJDIR)/strncasecmp.o $(OBJDIR)/strncat.o $(OBJDIR)/strrchr.o: dietfeatures.h
# these depend on dietfeatures.h for /proc
-$(OBJDIR)/tty.o: dietfeatures.h
-
-# these depend on dietfeatures.h for ungetc support ;-)
-$(OBJDIR)/ungetc.o: dietfeatures.h
+$(OBJDIR)/ttyname.o $(OBJDIR)/sysconf_cpus.o: dietfeatures.h
# these depend on dietfeatures.h for WANT_TZFILE_PARSER
-$(OBJDIR)/localtime_r.o: dietfeatures.h
+$(OBJDIR)/localtime_r.o $(OBJDIR)/strftime.o: dietfeatures.h
+
+# these depend on dietfeatures.h for WANT_SMALL_STDIO_BUFS
+$(LIBSTDIOOBJ): dietfeatures.h
+
+# these depend on dietfeatures.h for WANT_FULL_RESOLV_CONF
+$(OBJDIR)/dnscruft.o $(OBJDIR)/dnscruft2.o: dietfeatures.h
+
+# these depend on dietfeatures.h for WANT_THREAD_SAFE and errno
+$(LIBRPCOBJ) $(OBJDIR)/logging.o $(OBJDIR)/alloc.o $(OBJDIR)/cfsetospeed.o $(OBJDIR)/cfsetispeed.o \
+$(OBJDIR)/execl.o $(OBJDIR)/execlp.o $(OBJDIR)/execv.o $(OBJDIR)/execvp.o $(OBJDIR)/isatty.o \
+$(OBJDIR)/lockf.o $(OBJDIR)/perror.o $(OBJDIR)/remove.o $(OBJDIR)/set_errno.o $(OBJDIR)/sigemptyset.o \
+$(OBJDIR)/tcsetattr.o $(OBJDIR)/dnscruft2.o $(OBJDIR)/dnscruft.o $(OBJDIR)/entlib.o \
+$(OBJDIR)/gethostbyaddr.o $(OBJDIR)/gethostbyaddr_r.o $(OBJDIR)/gethostbyname.o \
+$(OBJDIR)/gethostbyname_r.o $(OBJDIR)/gethostbyname2.o $(OBJDIR)/gethostbyname2_r.o \
+$(OBJDIR)/inet_pton.o $(OBJDIR)/mkstemp.o $(OBJDIR)/mktemp.o $(OBJDIR)/tempnam.o \
+$(OBJDIR)/glob.o $(OBJDIR)/realpath.o $(OBJDIR)/fdglue.o $(OBJDIR)/fdglue2.o \
+$(OBJDIR)/getaddrinfo.o $(OBJDIR)/getnameinfo.o $(OBJDIR)/getprotoent.o \
+$(OBJDIR)/getservent.o $(OBJDIR)/iconv.o $(OBJDIR)/iconv_open.o \
+$(OBJDIR)/netent.o $(OBJDIR)/system.o $(OBJDIR)/stdin.o $(OBJDIR)/stdout.o \
+$(OBJDIR)/stderr.o: dietfeatures.h
+
+# these depend on dietfeatures.h for WANT_CRYPT_MD5
+$(OBJDIR)/crypt.o: dietfeatures.h
+
+# these depend on dietfeatures.h for WANT_FREAD_OPTIMIZATION
+$(OBJDIR)/fread.o $(OBJDIR)/fwrite.o: dietfeatures.h
+
+# these depend on dietfeatures.h for WANT_DYNAMIC
+$(OBJDIR)/start.o $(OBJDIR)/dyn_start.o $(OBJDIR)/dyn_stop.o: dietfeatures.h
+
+$(OBJDIR)/unified.o: dietuglyweaks.h
+
+$(OBJDIR)/adjtimex.o: include/sys/timex.h
+
+$(OBJDIR)/fgetc_unlocked.o $(OBJDIR)/fread.o $(OBJDIR)/ungetc.o: dietstdio.h
+
+# these depend on dietfeatures.h for WANT_LINKER_WARNINGS
+$(OBJDIR)/setlinebuf.o $(OBJDIR)/bzero.o $(OBJDIR)/setegid.o \
+$(OBJDIR)/seteuid.o: dietfeatures.h
+
+# these depend on dietfeatures.h for WANT_FULL_POSIX_COMPAT
+$(OBJDIR)/strncpy.o: dietfeatures.h
+$(OBJDIR)/strxfrm.o: dietfeatures.h
+
+# these depend on dietfeatures.h for WANT_INET_ADDR_DNS
+$(OBJDIR)/gethostbyname_r.o: dietfeatures.h
+
+
+# CFLAGS+=-W -Wshadow -Wid-clash-31 -Wpointer-arith -Wcast-align -Wstrict-prototypes -Wwrite-strings
diff --git a/mdk-stage1/dietlibc/README b/mdk-stage1/dietlibc/README
index ce9838832..2a1fa332c 100644
--- a/mdk-stage1/dietlibc/README
+++ b/mdk-stage1/dietlibc/README
@@ -1,3 +1,8 @@
+ The system library is a challenge to all those using the computer to
+ write their own faster and better routines or to bow to the superior
+ strength and skill of a true master.
+ --http://www.inner.net/users/cmetz/program-like-a-klingon
+
diet libc to statically link programs that don't need all the bloat
from glibc.
@@ -7,10 +12,7 @@ To compile:
$ make
-make should compile the diet libc itself without warnings. In addition
-to the diet libc, the default make target includes t, which is a test
-program and probably contains code which produces warnings. You can
-safely ignore them.
+make should compile the diet libc itself.
When make is done, it will have created dietlibc.a in bin-i386 (or
bin-ppc, bin-alpha, bin-sparc, bin-ppc or bin-arm, depending on your
@@ -41,3 +43,7 @@ The embedded utils are small replacements for common utilities like mv,
chown, ls, and even a small tar that can extract tar files. The binary
repository contains a few utilities I linked against the diet libc, for
example gzip, bzip2 and fdisk.
+
+
+The license for the diet libc is the GNU General Public License, version
+2 (as included in the file COPYING).
diff --git a/mdk-stage1/dietlibc/alpha/Makefile.add b/mdk-stage1/dietlibc/alpha/Makefile.add
index 10ff0faef..68b10b43c 100644
--- a/mdk-stage1/dietlibc/alpha/Makefile.add
+++ b/mdk-stage1/dietlibc/alpha/Makefile.add
@@ -2,4 +2,4 @@
CFLAGS+=-Os -Iinclude -fomit-frame-pointer -fstrict-aliasing
VPATH:=alpha:syscalls.s:$(VPATH)
-LIBOBJ+=$(patsubst %,$(OBJDIR)/%,divq.o divl.o remq.o reml.o seteuid.o __time.o)
+LIBOBJ+=$(patsubst %,$(OBJDIR)/%,divq.o divl.o remq.o reml.o __time.o __alarm.o)
diff --git a/mdk-stage1/dietlibc/alpha/__alarm.c b/mdk-stage1/dietlibc/alpha/__alarm.c
new file mode 100644
index 000000000..7ca35cb78
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/__alarm.c
@@ -0,0 +1,13 @@
+#include <unistd.h>
+#include <sys/time.h>
+
+unsigned int alarm(unsigned int seconds) {
+ struct itimerval old, new;
+ unsigned int ret;
+ new.it_interval.tv_usec=0;
+ new.it_interval.tv_sec=0;
+ new.it_value.tv_usec =0;
+ new.it_value.tv_sec =(long)seconds;
+ if (setitimer(ITIMER_REAL,&new,&old)==-1) return 0;
+ return old.it_value.tv_sec+(old.it_value.tv_usec?1:0);
+}
diff --git a/mdk-stage1/dietlibc/alpha/__longjmp.S b/mdk-stage1/dietlibc/alpha/__longjmp.S
index d86d76717..31e374d0f 100644
--- a/mdk-stage1/dietlibc/alpha/__longjmp.S
+++ b/mdk-stage1/dietlibc/alpha/__longjmp.S
@@ -1,11 +1,10 @@
-#ifdef __alpha__
-
#include <setjmp.h>
.text
.align 2
.global __longjmp
+.type __longjmp,@function
__longjmp:
mov $17, $0 /* a1 -> v0 */
@@ -18,7 +17,7 @@ __longjmp:
ldq $26, (JB_PC*8) ($16) /* ra */
ldq $fp, (JB_FP*8) ($16) /* fp */
- ldq $1, (JB_SP*8) ($16) /* sp */
+ ldq $sp, (JB_SP*8) ($16) /* sp */
ldt $f2, (JB_F2*8) ($16) /* f2 */
ldt $f3, (JB_F3*8) ($16) /* f3 */
@@ -30,9 +29,5 @@ __longjmp:
ldt $f9, (JB_F9*8) ($16) /* f9 */
cmoveq $0, 0x1, $0
- mov $1, $sp
ret $31, ($26), 1
-
-
-#endif
diff --git a/mdk-stage1/dietlibc/alpha/__testandset.S b/mdk-stage1/dietlibc/alpha/__testandset.S
new file mode 100644
index 000000000..c5ef81241
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/__testandset.S
@@ -0,0 +1,11 @@
+.text
+.align 2
+.global __testandsets
+.type __testandsets,@function
+__testandset:
+ ldq_l $0, 0($16) /* load lock */
+ bne $0,1f /* ok there is a lock... */
+ lda $0, 1($31) /* load a 1 to register 0 */
+ stq_c $0, 0($16) /* write lock is locked :) */
+ beq $0,__testandset /* oops someone changed MY lock */
+1: ret $31, ($26), 0x01 /* return */
diff --git a/mdk-stage1/dietlibc/alpha/clone.S b/mdk-stage1/dietlibc/alpha/clone.S
index b7e32d707..28e61a8bc 100644
--- a/mdk-stage1/dietlibc/alpha/clone.S
+++ b/mdk-stage1/dietlibc/alpha/clone.S
@@ -1,5 +1,5 @@
#include "syscalls.h"
-#include <asm/errno.h>
+#include <errno.h>
.text
.align 2
diff --git a/mdk-stage1/dietlibc/alpha/errlist.S b/mdk-stage1/dietlibc/alpha/errlist.S
new file mode 100644
index 000000000..a5956ce05
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/errlist.S
@@ -0,0 +1,288 @@
+#ifdef __DYN_LIB
+.section .data
+#else
+.section .rodata
+#endif
+
+.align 8
+.global sys_errlist
+.type sys_errlist,@object
+
+sys_errlist:
+ .quad .LC000
+ .quad .LC001
+ .quad .LC002
+ .quad .LC003
+ .quad .LC004
+ .quad .LC005
+ .quad .LC006
+ .quad .LC007
+ .quad .LC008
+ .quad .LC009
+ .quad .LC010
+ .quad .LC011
+ .quad .LC012
+ .quad .LC013
+ .quad .LC014
+ .quad .LC015
+ .quad .LC016
+ .quad .LC017
+ .quad .LC018
+ .quad .LC019
+ .quad .LC020
+ .quad .LC021
+ .quad .LC022
+ .quad .LC023
+ .quad .LC024
+ .quad .LC025
+ .quad .LC026
+ .quad .LC027
+ .quad .LC028
+ .quad .LC029
+ .quad .LC030
+ .quad .LC031
+ .quad .LC032
+ .quad .LC033
+ .quad .LC034
+ .quad .LC035
+ .quad .LC036
+ .quad .LC037
+ .quad .LC038
+ .quad .LC039
+ .quad .LC040
+ .quad .LC041
+ .quad .LC042
+ .quad .LC043
+ .quad .LC044
+ .quad .LC045
+ .quad .LC046
+ .quad .LC047
+ .quad .LC048
+ .quad .LC049
+ .quad .LC050
+ .quad .LC051
+ .quad .LC052
+ .quad .LC053
+ .quad .LC054
+ .quad .LC055
+ .quad .LC056
+ .quad .LC057
+ .quad .LC058
+ .quad .LC059
+ .quad .LC060
+ .quad .LC061
+ .quad .LC062
+ .quad .LC063
+ .quad .LC064
+ .quad .LC065
+ .quad .LC066
+ .quad .LC067
+ .quad .LC068
+ .quad .LC069
+ .quad .LC070
+ .quad .LC071
+ .quad .LC072
+ .quad .LC073
+ .quad .LC074
+ .quad .LC075
+ .quad .LC076
+ .quad .LC077
+ .quad .LC078
+ .quad .LC079
+ .quad .LC080
+ .quad .LC081
+ .quad .LC082
+ .quad .LC083
+ .quad .LC084
+ .quad .LC085
+ .quad .LC086
+ .quad .LC087
+ .quad .LC088
+ .quad .LC089
+ .quad .LC090
+ .quad .LC091
+ .quad .LC092
+ .quad .LC093
+ .quad .LC094
+ .quad .LC095
+ .quad .LC096
+ .quad .LC097
+ .quad .LC098
+ .quad .LC099
+ .quad .LC100
+ .quad .LC101
+ .quad .LC102
+ .quad .LC103
+ .quad .LC104
+ .quad .LC105
+ .quad .LC106
+ .quad .LC107
+ .quad .LC108
+ .quad .LC109
+ .quad .LC110
+ .quad .LC111
+ .quad .LC112
+ .quad .LC113
+ .quad .LC114
+ .quad .LC115
+ .quad .LC116
+ .quad .LC117
+ .quad .LC118
+ .quad .LC119
+ .quad .LC120
+ .quad .LC121
+ .quad .LC122
+ .quad .LC123
+ .quad .LC124
+ .quad .LC125
+ .quad .LC126
+ .quad .LC127
+ .quad .LC128
+ .quad .LC129
+ .quad .LC130
+ .quad 0
+.size sys_errlist,.-sys_errlist
+
+.align 4
+.global sys_nerr
+.type sys_nerr,@object
+sys_nerr:
+ .long 130
+.size sys_nerr,4
+
+#ifdef __DYN_LIB
+.section .rodata
+#endif
+
+.LC000: .string "Success"
+.LC001: .string "Operation not permitted"
+.LC002: .string "No such file or directory"
+.LC003: .string "No such process"
+.LC004: .string "Interrupted system call"
+.LC005: .string "I/O error"
+.LC006: .string "No such device or address"
+.LC007: .string "Arg list too long"
+.LC008: .string "Exec format error"
+.LC009: .string "Bad file number"
+.LC010: .string "No child processes"
+.LC011: .string "Resource deadlock would occur"
+.LC012: .string "Out of memory"
+.LC013: .string "Permission denied"
+.LC014: .string "Bad address"
+.LC015: .string "Block device required"
+.LC016: .string "Device or resource busy"
+.LC017: .string "File exists"
+.LC018: .string "Cross-device link"
+.LC019: .string "No such device"
+.LC020: .string "Not a directory"
+.LC021: .string "Is a directory"
+.LC022: .string "Invalid argument"
+.LC023: .string "File table overflow"
+.LC024: .string "Too many open files"
+.LC025: .string "Not a typewriter"
+.LC026: .string "Text file busy"
+.LC027: .string "File too large"
+.LC028: .string "No space left on device"
+.LC029: .string "Illegal seek"
+.LC030: .string "Read-only file system"
+.LC031: .string "Too many links"
+.LC032: .string "Broken pipe"
+.LC033: .string "Math argument out of domain of func"
+.LC034: .string "Math result not representable"
+.LC035: .string "Try again"
+.LC036: .string "Operation now in progress"
+.LC037: .string "Operation already in progress"
+.LC038: .string "Socket operation on non-socket"
+.LC039: .string "Destination address required"
+.LC040: .string "Message too long"
+.LC041: .string "Protocol wrong type for socket"
+.LC042: .string "Protocol not available"
+.LC043: .string "Protocol not supported"
+.LC044: .string "Socket type not supported"
+.LC045: .string "Operation not supported on transport endpoint"
+.LC046: .string "Protocol family not supported"
+.LC047: .string "Address family not supported by protocol"
+.LC048: .string "Address already in use"
+.LC049: .string "Cannot assign requested address"
+.LC050: .string "Network is down"
+.LC051: .string "Network is unreachable"
+.LC052: .string "Network dropped connection because of reset"
+.LC053: .string "Software caused connection abort"
+.LC054: .string "Connection reset by peer"
+.LC055: .string "No buffer space available"
+.LC056: .string "Transport endpoint is already connected"
+.LC057: .string "Transport endpoint is not connected"
+.LC058: .string "Cannot send after transport endpoint shutdown"
+.LC059: .string "Too many references: cannot splice"
+.LC060: .string "Connection timed out"
+.LC061: .string "Connection refused"
+.LC062: .string "Too many symbolic links encountered"
+.LC063: .string "File name too long"
+.LC064: .string "Host is down"
+.LC065: .string "No route to host"
+.LC066: .string "Directory not empty"
+.LC067: .string "Error 67"
+.LC068: .string "Too many users"
+.LC069: .string "Quota exceeded"
+.LC070: .string "Stale NFS file handle"
+.LC071: .string "Object is remote"
+.LC072: .string "Error 72"
+.LC073: .string "Error 73"
+.LC074: .string "Error 74"
+.LC075: .string "Error 75"
+.LC076: .string "Error 76"
+.LC077: .string "No record locks available"
+.LC078: .string "Function not implemented"
+.LC079: .string "Error 79"
+.LC080: .string "No message of desired type"
+.LC081: .string "Identifier removed"
+.LC082: .string "Out of streams resources"
+.LC083: .string "Timer expired"
+.LC084: .string "Not a data message"
+.LC085: .string "Protocol error"
+.LC086: .string "No data available"
+.LC087: .string "Device not a stream"
+.LC088: .string "Channel number out of range"
+.LC089: .string "Level 2 not synchronized"
+.LC090: .string "Level 3 halted"
+.LC091: .string "Level 3 reset"
+.LC092: .string "Package not installed"
+.LC093: .string "Link number out of range"
+.LC094: .string "Protocol driver not attached"
+.LC095: .string "No CSI structure available"
+.LC096: .string "Level 2 halted"
+.LC097: .string "Invalid exchange"
+.LC098: .string "Invalid request descriptor"
+.LC099: .string "Exchange full"
+.LC100: .string "No anode"
+.LC101: .string "Invalid request code"
+.LC102: .string "Invalid slot"
+.LC103: .string "Error 103"
+.LC104: .string "Bad font file format"
+.LC105: .string "Machine is not on the network"
+.LC106: .string "Link has been severed"
+.LC107: .string "Advertise error"
+.LC108: .string "Srmount error"
+.LC109: .string "Communication error on send"
+.LC110: .string "Multihop attempted"
+.LC111: .string "RFS specific error"
+.LC112: .string "Value too large for defined data type"
+.LC113: .string "Name not unique on network"
+.LC114: .string "File descriptor in bad state"
+.LC115: .string "Remote address changed"
+.LC116: .string "Illegal byte sequence"
+.LC117: .string "Structure needs cleaning"
+.LC118: .string "Not a XENIX named type file"
+.LC119: .string "No XENIX semaphores available"
+.LC120: .string "Is a named type file"
+.LC121: .string "Remote I/O error"
+.LC122: .string "Can not access a needed shared library"
+.LC123: .string "Accessing a corrupted shared library"
+.LC124: .string ".lib section in a.out corrupted"
+.LC125: .string "Attempting to link in too many shared libraries"
+.LC126: .string "Cannot exec a shared library directly"
+.LC127: .string "Interrupted system call should be restarted"
+.LC128: .string "Streams pipe error"
+.LC129: .string "No medium found"
+.LC130: .string "Wrong medium type"
+
diff --git a/mdk-stage1/dietlibc/alpha/lseek64.S b/mdk-stage1/dietlibc/alpha/lseek64.S
new file mode 100644
index 000000000..f051e734d
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/lseek64.S
@@ -0,0 +1,5 @@
+#include "syscalls.h"
+
+.global lseek64
+lseek64:
+ br lseek
diff --git a/mdk-stage1/dietlibc/alpha/n_sigprocmask.S b/mdk-stage1/dietlibc/alpha/n_sigprocmask.S
new file mode 100644
index 000000000..55f9fde28
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/n_sigprocmask.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall_weak(osf_sigprocmask,__old_sigprocmask,__n_sigprocmask)
diff --git a/mdk-stage1/dietlibc/alpha/setjmp.S b/mdk-stage1/dietlibc/alpha/setjmp.S
index 3768056be..04bfd3d94 100644
--- a/mdk-stage1/dietlibc/alpha/setjmp.S
+++ b/mdk-stage1/dietlibc/alpha/setjmp.S
@@ -1,15 +1,16 @@
#include <setjmp.h>
.text
+.weak setjmp
+.type setjmp,@function
+setjmp:
+.weak __setjmp
+.type __setjmp,@function
+__setjmp:
+ mov 0, $17
.global __sigsetjmp
+.type __sigsetjmp,@function
__sigsetjmp:
- ldgp $gp, 0($gp)
-
- mov $sp, $1
- lda $sp, -16($sp)
-
- stq $26, 0($sp) /* save ra */
-
stq $9, (JB_S0*8) ($16) /* s0 */
stq $10, (JB_S1*8) ($16) /* s1 */
stq $11, (JB_S2*8) ($16) /* s2 */
@@ -19,7 +20,7 @@ __sigsetjmp:
stq $26, (JB_PC*8) ($16) /* ra */
stq $fp, (JB_FP*8) ($16) /* fp */
- stq $1, (JB_SP*8) ($16) /* sp */
+ stq $sp, (JB_SP*8) ($16) /* sp */
stt $f2, (JB_F2*8) ($16) /* f2 */
stt $f3, (JB_F3*8) ($16) /* f3 */
@@ -30,17 +31,5 @@ __sigsetjmp:
stt $f8, (JB_F8*8) ($16) /* f8 */
stt $f9, (JB_F9*8) ($16) /* f9 */
- br $26, __sigjmp_save /* call __sigjmp_save */
+ br $31, __sigjmp_save /* jmp __sigjmp_save */
- ldq $26, 0($sp) /* restore ra */
-
- lda $sp, 16($sp)
- ret $31, ($26), 1 /* back to caller */
-
-.weak setjmp
-setjmp:
-.weak __setjmp
-__setjmp:
- ldgp $gp, 0($gp)
- mov 0, $17
- br __sigsetjmp
diff --git a/mdk-stage1/dietlibc/alpha/sigaction.c b/mdk-stage1/dietlibc/alpha/sigaction.c
new file mode 100644
index 000000000..f6c3ada7d
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/sigaction.c
@@ -0,0 +1,7 @@
+#include <signal.h>
+
+int __rt_sigaction(int signum, const struct sigaction *act, struct sigaction *oldact, long nr, void* restorer);
+
+int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) {
+ return __rt_sigaction(signum, act, oldact, _NSIG/8, 0);
+}
diff --git a/mdk-stage1/dietlibc/alpha/signal.S b/mdk-stage1/dietlibc/alpha/signal.S
deleted file mode 100644
index ceca0f02d..000000000
--- a/mdk-stage1/dietlibc/alpha/signal.S
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "syscalls.h"
-
-syscall(osf_signal,signal)
diff --git a/mdk-stage1/dietlibc/alpha/sigprocmask.S b/mdk-stage1/dietlibc/alpha/sigprocmask.S
deleted file mode 100644
index d9da836c2..000000000
--- a/mdk-stage1/dietlibc/alpha/sigprocmask.S
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "syscalls.h"
-
-syscall_weak(osf_sigprocmask,sigprocmask,__sigprocmask)
diff --git a/mdk-stage1/dietlibc/alpha/socketpair.S b/mdk-stage1/dietlibc/alpha/socketpair.S
new file mode 100644
index 000000000..06956a7ce
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/socketpair.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(socketpair,socketpair)
diff --git a/mdk-stage1/dietlibc/alpha/start.S b/mdk-stage1/dietlibc/alpha/start.S
index 00b8e950d..850ce2420 100644
--- a/mdk-stage1/dietlibc/alpha/start.S
+++ b/mdk-stage1/dietlibc/alpha/start.S
@@ -1,7 +1,3 @@
-#include "start.h"
-
-#ifdef __alpha__
-
.text
.align 2
.set noreorder
@@ -17,19 +13,21 @@ _start:
ldgp $gp, 0($gp)
/* prepare to call main */
- ldl $16, 0($sp) /* argc */
+ ldl $16, 0($sp) /* argc / a0 */
- lda $17, 8($sp) /* argv */
+ lda $17, 8($sp) /* argv / a1 */
- addq $16, 1, $18 /* argp */
+ addq $16, 1, $18 /* argp / a2 */
s8addq $18, $17, $18 /* (8*(argc+1))+argv -> argp */
stq $18, environ
- mov $0, $21 /* mov v0(dynload) to a5 */
-
+#ifdef WANT_DYNAMIC
+/* in v0 ($0) is the ld.so _fini pointer */
+ mov $0, $19 /* mov v0(dynload) to a3 */
+ jsr $26, dyn_start
+#else
jsr $26, main
+#endif
mov $0, $16
jsr $26, exit /* YES, CALL! for threads and atexit ! (+4 byte) */
-
-#endif
diff --git a/mdk-stage1/dietlibc/alpha/syscalls.h b/mdk-stage1/dietlibc/alpha/syscalls.h
new file mode 100644
index 000000000..5c654b4bf
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/syscalls.h
@@ -0,0 +1,371 @@
+
+#define __NR_osf_syscall 0 /* not implemented */
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_osf_old_open 5 /* not implemented */
+#define __NR_close 6
+#define __NR_osf_wait4 7
+#define __NR_osf_old_creat 8 /* not implemented */
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_osf_execve 11 /* not implemented */
+#define __NR_chdir 12
+#define __NR_fchdir 13
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_chown 16
+#define __NR_brk 17
+#define __NR_osf_getfsstat 18 /* not implemented */
+#define __NR_lseek 19
+#define __NR_getxpid 20
+#define __NR_osf_mount 21
+#define __NR_umount 22
+#define __NR_setuid 23
+#define __NR_getxuid 24
+#define __NR_exec_with_loader 25 /* not implemented */
+#define __NR_ptrace 26
+#define __NR_osf_nrecvmsg 27 /* not implemented */
+#define __NR_osf_nsendmsg 28 /* not implemented */
+#define __NR_osf_nrecvfrom 29 /* not implemented */
+#define __NR_osf_naccept 30 /* not implemented */
+#define __NR_osf_ngetpeername 31 /* not implemented */
+#define __NR_osf_ngetsockname 32 /* not implemented */
+#define __NR_access 33
+#define __NR_osf_chflags 34 /* not implemented */
+#define __NR_osf_fchflags 35 /* not implemented */
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_osf_old_stat 38 /* not implemented */
+#define __NR_setpgid 39
+#define __NR_osf_old_lstat 40 /* not implemented */
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_osf_set_program_attributes 43
+#define __NR_osf_profil 44 /* not implemented */
+#define __NR_open 45
+#define __NR_osf_old_sigaction 46 /* not implemented */
+#define __NR_getxgid 47
+#define __NR_osf_sigprocmask 48
+#define __NR_osf_getlogin 49 /* not implemented */
+#define __NR_osf_setlogin 50 /* not implemented */
+#define __NR_acct 51
+#define __NR_sigpending 52
+
+#define __NR_ioctl 54
+#define __NR_osf_reboot 55 /* not implemented */
+#define __NR_osf_revoke 56 /* not implemented */
+#define __NR_symlink 57
+#define __NR_readlink 58
+#define __NR_execve 59
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_osf_old_fstat 62 /* not implemented */
+#define __NR_getpgrp 63
+#define __NR_getpagesize 64
+#define __NR_osf_mremap 65 /* not implemented */
+#define __NR_vfork 66
+#define __NR_stat 67
+#define __NR_lstat 68
+#define __NR_osf_sbrk 69 /* not implemented */
+#define __NR_osf_sstk 70 /* not implemented */
+#define __NR_mmap 71 /* OSF/1 mmap is superset of Linux */
+#define __NR_osf_old_vadvise 72 /* not implemented */
+#define __NR_munmap 73
+#define __NR_mprotect 74
+#define __NR_madvise 75
+#define __NR_vhangup 76
+#define __NR_osf_kmodcall 77 /* not implemented */
+#define __NR_osf_mincore 78 /* not implemented */
+#define __NR_getgroups 79
+#define __NR_setgroups 80
+#define __NR_osf_old_getpgrp 81 /* not implemented */
+#define __NR_setpgrp 82 /* BSD alias for setpgid */
+#define __NR_osf_setitimer 83
+#define __NR_osf_old_wait 84 /* not implemented */
+#define __NR_osf_table 85 /* not implemented */
+#define __NR_osf_getitimer 86
+#define __NR_gethostname 87
+#define __NR_sethostname 88
+#define __NR_getdtablesize 89
+#define __NR_dup2 90
+#define __NR_fstat 91
+#define __NR_fcntl 92
+#define __NR_osf_select 93
+#define __NR_poll 94
+#define __NR_fsync 95
+#define __NR_setpriority 96
+#define __NR_socket 97
+#define __NR_connect 98
+#define __NR_accept 99
+#define __NR_getpriority 100
+#define __NR_send 101
+#define __NR_recv 102
+#define __NR_sigreturn 103
+#define __NR_bind 104
+#define __NR_setsockopt 105
+#define __NR_listen 106
+#define __NR_osf_plock 107 /* not implemented */
+#define __NR_osf_old_sigvec 108 /* not implemented */
+#define __NR_osf_old_sigblock 109 /* not implemented */
+#define __NR_osf_old_sigsetmask 110 /* not implemented */
+#define __NR_sigsuspend 111
+#define __NR_osf_sigstack 112
+#define __NR_recvmsg 113
+#define __NR_sendmsg 114
+#define __NR_osf_old_vtrace 115 /* not implemented */
+#define __NR_osf_gettimeofday 116
+#define __NR_osf_getrusage 117
+#define __NR_getsockopt 118
+
+#define __NR_readv 120
+#define __NR_writev 121
+#define __NR_osf_settimeofday 122
+#define __NR_fchown 123
+#define __NR_fchmod 124
+#define __NR_recvfrom 125
+#define __NR_setreuid 126
+#define __NR_setregid 127
+#define __NR_rename 128
+#define __NR_truncate 129
+#define __NR_ftruncate 130
+#define __NR_flock 131
+#define __NR_setgid 132
+#define __NR_sendto 133
+#define __NR_shutdown 134
+#define __NR_socketpair 135
+#define __NR_mkdir 136
+#define __NR_rmdir 137
+#define __NR_osf_utimes 138
+#define __NR_osf_old_sigreturn 139 /* not implemented */
+#define __NR_osf_adjtime 140 /* not implemented */
+#define __NR_getpeername 141
+#define __NR_osf_gethostid 142 /* not implemented */
+#define __NR_osf_sethostid 143 /* not implemented */
+#define __NR_getrlimit 144
+#define __NR_setrlimit 145
+#define __NR_osf_old_killpg 146 /* not implemented */
+#define __NR_setsid 147
+#define __NR_quotactl 148
+#define __NR_osf_oldquota 149 /* not implemented */
+#define __NR_getsockname 150
+
+#define __NR_osf_pid_block 153 /* not implemented */
+#define __NR_osf_pid_unblock 154 /* not implemented */
+
+#define __NR_sigaction 156
+#define __NR_osf_sigwaitprim 157 /* not implemented */
+#define __NR_osf_nfssvc 158 /* not implemented */
+#define __NR_osf_getdirentries 159
+#define __NR_osf_statfs 160
+#define __NR_osf_fstatfs 161
+
+#define __NR_osf_asynch_daemon 163 /* not implemented */
+#define __NR_osf_getfh 164 /* not implemented */
+#define __NR_osf_getdomainname 165
+#define __NR_setdomainname 166
+
+#define __NR_osf_exportfs 169 /* not implemented */
+
+#define __NR_osf_alt_plock 181 /* not implemented */
+
+#define __NR_osf_getmnt 184 /* not implemented */
+
+#define __NR_osf_alt_sigpending 187 /* not implemented */
+#define __NR_osf_alt_setsid 188 /* not implemented */
+
+#define __NR_osf_swapon 199
+#define __NR_msgctl 200
+#define __NR_msgget 201
+#define __NR_msgrcv 202
+#define __NR_msgsnd 203
+#define __NR_semctl 204
+#define __NR_semget 205
+#define __NR_semop 206
+#define __NR_osf_utsname 207
+#define __NR_lchown 208
+#define __NR_osf_shmat 209
+#define __NR_shmctl 210
+#define __NR_shmdt 211
+#define __NR_shmget 212
+#define __NR_osf_mvalid 213 /* not implemented */
+#define __NR_osf_getaddressconf 214 /* not implemented */
+#define __NR_osf_msleep 215 /* not implemented */
+#define __NR_osf_mwakeup 216 /* not implemented */
+#define __NR_msync 217
+#define __NR_osf_signal 218 /* not implemented */
+#define __NR_osf_utc_gettime 219 /* not implemented */
+#define __NR_osf_utc_adjtime 220 /* not implemented */
+
+#define __NR_osf_security 222 /* not implemented */
+#define __NR_osf_kloadcall 223 /* not implemented */
+
+#define __NR_getpgid 233
+#define __NR_getsid 234
+#define __NR_sigaltstack 235
+#define __NR_osf_waitid 236 /* not implemented */
+#define __NR_osf_priocntlset 237 /* not implemented */
+#define __NR_osf_sigsendset 238 /* not implemented */
+#define __NR_osf_set_speculative 239 /* not implemented */
+#define __NR_osf_msfs_syscall 240 /* not implemented */
+#define __NR_osf_sysinfo 241
+#define __NR_osf_uadmin 242 /* not implemented */
+#define __NR_osf_fuser 243 /* not implemented */
+#define __NR_osf_proplist_syscall 244
+#define __NR_osf_ntp_adjtime 245 /* not implemented */
+#define __NR_osf_ntp_gettime 246 /* not implemented */
+#define __NR_osf_pathconf 247 /* not implemented */
+#define __NR_osf_fpathconf 248 /* not implemented */
+
+#define __NR_osf_uswitch 250 /* not implemented */
+#define __NR_osf_usleep_thread 251
+#define __NR_osf_audcntl 252 /* not implemented */
+#define __NR_osf_audgen 253 /* not implemented */
+#define __NR_sysfs 254
+#define __NR_osf_subsys_info 255 /* not implemented */
+#define __NR_osf_getsysinfo 256
+#define __NR_osf_setsysinfo 257
+#define __NR_osf_afs_syscall 258 /* not implemented */
+#define __NR_osf_swapctl 259 /* not implemented */
+#define __NR_osf_memcntl 260 /* not implemented */
+#define __NR_osf_fdatasync 261 /* not implemented */
+
+
+/*
+ * Linux-specific system calls begin at 300
+ */
+#define __NR_bdflush 300
+#define __NR_sethae 301
+#define __NR_mount 302
+#define __NR_old_adjtimex 303
+#define __NR_swapoff 304
+#define __NR_getdents 305
+#define __NR_create_module 306
+#define __NR_init_module 307
+#define __NR_delete_module 308
+#define __NR_get_kernel_syms 309
+#define __NR_syslog 310
+#define __NR_reboot 311
+#define __NR_clone 312
+#define __NR_uselib 313
+#define __NR_mlock 314
+#define __NR_munlock 315
+#define __NR_mlockall 316
+#define __NR_munlockall 317
+#define __NR_sysinfo 318
+#define __NR__sysctl 319
+/* 320 was sys_idle. */
+#define __NR_oldumount 321
+#define __NR_swapon 322
+#define __NR_times 323
+#define __NR_personality 324
+#define __NR_setfsuid 325
+#define __NR_setfsgid 326
+#define __NR_ustat 327
+#define __NR_statfs 328
+#define __NR_fstatfs 329
+#define __NR_sched_setparam 330
+#define __NR_sched_getparam 331
+#define __NR_sched_setscheduler 332
+#define __NR_sched_getscheduler 333
+#define __NR_sched_yield 334
+#define __NR_sched_get_priority_max 335
+#define __NR_sched_get_priority_min 336
+#define __NR_sched_rr_get_interval 337
+#define __NR_afs_syscall 338
+#define __NR_uname 339
+#define __NR_nanosleep 340
+#define __NR_mremap 341
+#define __NR_nfsservctl 342
+#define __NR_setresuid 343
+#define __NR_getresuid 344
+#define __NR_pciconfig_read 345
+#define __NR_pciconfig_write 346
+#define __NR_query_module 347
+#define __NR_prctl 348
+#define __NR_pread 349
+#define __NR_pwrite 350
+#define __NR_rt_sigreturn 351
+#define __NR_rt_sigaction 352
+#define __NR_rt_sigprocmask 353
+#define __NR_rt_sigpending 354
+#define __NR_rt_sigtimedwait 355
+#define __NR_rt_sigqueueinfo 356
+#define __NR_rt_sigsuspend 357
+#define __NR_select 358
+#define __NR_gettimeofday 359
+#define __NR_settimeofday 360
+#define __NR_getitimer 361
+#define __NR_setitimer 362
+#define __NR_utimes 363
+#define __NR_getrusage 364
+#define __NR_wait4 365
+#define __NR_adjtimex 366
+#define __NR_getcwd 367
+#define __NR_capget 368
+#define __NR_capset 369
+#define __NR_sendfile 370
+#define __NR_setresgid 371
+#define __NR_getresgid 372
+#define __NR_dipc 373
+#define __NR_pivot_root 374
+#define __NR_mincore 375
+#define __NR_pciconfig_iobase 376
+#define __NR_getdents64 377
+#define __NR_gettid 378
+#define __NR_readahead 379
+#define __NR_security 380 /* syscall for security modules */
+#define __NR_tkill 381
+#define __NR_setxattr 382
+#define __NR_lsetxattr 383
+#define __NR_fsetxattr 384
+#define __NR_getxattr 385
+#define __NR_lgetxattr 386
+#define __NR_fgetxattr 387
+#define __NR_listxattr 388
+#define __NR_llistxattr 389
+#define __NR_flistxattr 390
+#define __NR_removexattr 391
+#define __NR_lremovexattr 392
+#define __NR_fremovexattr 393
+#define __NR_futex 394
+#define __NR_sched_setaffinity 395
+#define __NR_sched_getaffinity 396
+#define __NR_tuxcall 397
+#define __NR_io_setup 398
+#define __NR_io_destroy 399
+#define __NR_io_getevents 400
+#define __NR_io_submit 401
+#define __NR_io_cancel 402
+#define __NR_alloc_hugepages 403
+#define __NR_free_hugepages 404
+#define __NR_exit_group 405
+#define __NR_lookup_dcookie 406
+#define __NR_sys_epoll_create 407
+#define __NR_sys_epoll_ctl 408
+#define __NR_sys_epoll_wait 409
+#define __NR_remap_file_pages 410
+#define __NR_set_tid_address 411
+
+#define syscall_weak(name,wsym,sym) \
+.text ; \
+.align 2 ; \
+.weak wsym; \
+.type wsym,@function ; \
+wsym: ; \
+.global sym ; \
+.type sym,@function ; \
+sym: ; \
+ lda $0, __NR_##name($31) ; \
+ br __unified_syscall
+
+#define syscall(name,sym) \
+.text ; \
+.align 2 ; \
+.global sym ; \
+.type sym,@function ; \
+sym: ; \
+ lda $0, __NR_##name($31) ; \
+ br __unified_syscall
+
diff --git a/mdk-stage1/dietlibc/alpha/unified.S b/mdk-stage1/dietlibc/alpha/unified.S
index 02a1c9bcd..506bf7387 100644
--- a/mdk-stage1/dietlibc/alpha/unified.S
+++ b/mdk-stage1/dietlibc/alpha/unified.S
@@ -1,15 +1,25 @@
#include <dietfeatures.h>
+#include "syscalls.h"
+.weak exit
+exit:
+.global _exit
+_exit:
+ lda $0, __NR_exit
.global __unified_syscall
__unified_syscall:
callsys
bne $19, .Lerror
+
+/* here we go and "reuse" the return for weak-void functions */
+#include "dietuglyweaks.h"
+
ret $31, ($26), 0x01
.Lerror:
.global error_unified_syscall
error_unified_syscall:
-#ifdef WANT_THREAD_SAVE
+#ifdef WANT_THREAD_SAFE
lda $sp, -16($sp) /* alloc 2 qwords on stack */
stq $26, 0($sp) /* save ra to stack */
stq $0, 8($sp) /* save v0 to stack */
diff --git a/mdk-stage1/dietlibc/binshstr.h b/mdk-stage1/dietlibc/binshstr.h
new file mode 100644
index 000000000..f1bf789fe
--- /dev/null
+++ b/mdk-stage1/dietlibc/binshstr.h
@@ -0,0 +1,6 @@
+
+extern const char __binsh [8];
+
+#define __sh (__binsh + 5 )
+
+/* end of binshstr.h */
diff --git a/mdk-stage1/dietlibc/diet.c b/mdk-stage1/dietlibc/diet.c
index 1de6befc8..c3a053ac8 100644
--- a/mdk-stage1/dietlibc/diet.c
+++ b/mdk-stage1/dietlibc/diet.c
@@ -1,7 +1,11 @@
#include <string.h>
#include <unistd.h>
+#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
+#include <write12.h>
+
+#include "dietfeatures.h"
/* goal:
* when invoked as
@@ -15,90 +19,341 @@
* "sparc-linux-gcc -nostdlib -static -o t t.o /path/to/dietlibc/bin-sparc/start.o /path/to/dietlibc/bin-sparc/dietlibc.a"
*/
-void error(const char *message) {
- write(2,message,strlen(message));
+static void error(const char *message) {
+ __write2(message);
exit(1);
}
+static const char* Os[] = {
+ "i386","-Os","-mpreferred-stack-boundary=2",
+ "-malign-functions=0","-malign-jumps=0",
+ "-malign-loops=0","-fomit-frame-pointer",0,
+ "x86_64","-Os","-fno-omit-frame-pointer",0,
+ "sparc","-Os","-mcpu=supersparc",0,
+ "sparc64","-Os","-m64",0,
+ "alpha","-Os","-fomit-frame-pointer",0,
+ "arm","-Os","-fomit-frame-pointer",0,
+ "mips","-Os","-fomit-frame-pointer","-mno-abicalls","-G","8","-fno-pic",0,
+ "ppc","-Os","-fomit-frame-pointer","-mpowerpc-gpopt","-mpowerpc-gfxopt",0,
+ "s390","-Os","-fomit-frame-pointer",0,
+ "sh","-Os","-fomit-frame-pointer",0,
+ "ia64","-Os","-fno-omit-frame-pointer",0,
+ "x86_64","-Os","-fstrict-aliasing","-momit-leaf-frame-pointer","-mfance-math-387",0,
+ 0};
+
int main(int argc,char *argv[]) {
- int link=0;
+ int _link=0;
int compile=0;
+ int preprocess=0;
+ int verbose=0;
+ int profile=0;
char diethome[]=DIETHOME;
- char platform[1000]=DIETHOME "/bin-";
- char *nostdlib="-nostdlib";
- char *libgcc="-lgcc";
- char dashL[1000]="-L";
+ char platform[1000];
+#ifdef __DYN_LIB
+ int shared=0;
+#endif
+ char* shortplatform=0;
+#ifdef WANT_SAFEGUARD
+ char safeguard1[]="-include";
+ char safeguard2[]=DIETHOME "/include/dietref.h";
+#endif
+ const char *nostdlib="-nostdlib";
+ const char *libgcc="-lgcc";
+ char dashL[1000];
+ char dashstatic[]="-static";
int i;
+ int mangleopts=0;
+ char manglebuf[1024];
+
+#ifdef INSTALLVERSION
+ strcpy(platform,DIETHOME "/lib-");
+#else
+#ifndef __DYN_LIB
+ strcpy(platform,DIETHOME "/bin-");
+#else
+ strcpy(platform,DIETHOME "/pic-");
+#endif
+#endif
+ strcpy(dashL,"-L");
if (argc<2) {
- error("usage: diet [gcc command line]\n"
- "e.g. diet gcc -c t.c\n"
+usage:
+ if (verbose) {
+ __write2(
+#ifdef __DYN_LIB
+ "dyn-"
+#endif
+ "diet version " VERSION
+#ifndef INSTALLVERSION
+ " (non-install version in source tree)"
+#endif
+ "\n\n");
+ }
+ error("usage: diet [-v] [-Os] gcc command line\n"
+ "e.g. diet -Os gcc -c t.c\n"
"or diet sparc-linux-gcc -o foo foo.c bar.o\n");
}
+ if (!strcmp(argv[1],"-v")) {
+ ++argv; --argc;
+ verbose=1;
+ }
+ if (argv[1] && !strcmp(argv[1],"-Os")) {
+ ++argv; --argc;
+ mangleopts=1;
+ }
+ if (!argv[1]) goto usage;
{
char *tmp=strchr(argv[1],0)-2;
- char *tmp2;
+ char *tmp2,*tmp3;
char *cc=argv[1];
if (tmp<cc) goto donttouch;
- if ((tmp2=strchr(cc,'-'))) { /* cross compiling? */
+ if ((tmp2=strstr(cc,"linux-"))) { /* cross compiling? */
int len=strlen(platform);
+ --tmp2;
+ tmp3=strchr(cc,'-');
+ if (tmp3<tmp2) tmp2=tmp3;
if (tmp2-cc>90) error("platform name too long!\n");
- memmove(platform+len,argv[1],tmp2-cc);
+ shortplatform=platform+len;
+ memmove(shortplatform,argv[1],(size_t)(tmp2-cc));
platform[tmp2-cc+len]=0;
-/* printf("found platform %s\n",platform); */
+ if (shortplatform[0]=='i' && shortplatform[2]=='8' && shortplatform[3]=='6') shortplatform[1]='3';
} else {
#ifdef __sparc__
- strcat(platform,"sparc");
+#ifdef __arch64__
+ shortplatform="sparc64";
+#else
+ shortplatform="sparc";
#endif
-#ifdef __ppc__
- strcat(platform,"ppc");
+#endif
+#ifdef __powerpc__
+ shortplatform="ppc";
#endif
#ifdef __i386__
- strcat(platform,"i386");
+ shortplatform="i386";
#endif
#ifdef __alpha__
- strcat(platform,"alpha");
+ shortplatform="alpha";
#endif
#ifdef __arm__
- strcat(platform,"arm");
+ shortplatform="arm";
#endif
#ifdef __mips__
- strcat(platform,"mips");
+ shortplatform="mips";
+#endif
+#ifdef __s390__
+ shortplatform="s390";
+#endif
+#ifdef __sh__
+ shortplatform="sh";
+#endif
+#ifdef __hppa__
+ shortplatform="parisc";
+#endif
+#ifdef __x86_64__
+ shortplatform="x86_64";
+#endif
+#ifdef __ia64__
+ shortplatform="ia64";
#endif
+ {
+ char *tmp=platform+strlen(platform);
+ strcpy(tmp,shortplatform);
+ shortplatform=tmp;
+ }
+ }
+ /* MIPS needs special handling. If argv contains -EL, change
+ * platform name to mipsel */
+ if (!strcmp(shortplatform,"mips")) {
+ int i;
+ for (i=1; i<argc; ++i)
+ if (!strcmp(argv[i],"-EL"))
+ strcpy(shortplatform,"mipsel");
}
strcat(dashL,platform);
if (!strcmp(tmp,"cc")) {
char **newargv;
char **dest;
char *a,*b,*c;
+#ifdef WANT_DYNAMIC
+ char *d,*e,*f;
+#endif
/* we need to add -I... if the command line contains -c, -S or -E */
- for (i=2; i<argc; ++i)
- if (!strcmp(argv[i],"-c") || !strcmp(argv[i],"-S") || !strcmp(argv[i],"-E"))
+ for (i=2; i<argc; ++i) {
+ if (argv[i][0]=='-' && argv[i][1]=='M')
+ goto pp;
+ if (!strcmp(argv[i],"-pg"))
+ profile=1;
+ if (!strcmp(argv[i],"-c") || !strcmp(argv[i],"-S"))
compile=1;
+ if (!strcmp(argv[i],"-E"))
+pp:
+ preprocess=compile=1;
+ }
/* we need to add -nostdlib if we are not compiling*/
- link=!compile;
+ _link=!compile;
+#ifdef __DYN_LIB
+ if (_link) {
+ for (i=2; i<argc; ++i)
+ if (!strcmp(argv[i],"-shared")) {
+ shared=1;
+ _link=0;
+ }
+ }
+#endif
#if 0
for (i=2; i<argc; ++i)
if (!strcmp(argv[i],"-o"))
- if (!compile) link=1;
+ if (!compile) _link=1;
#endif
- newargv=alloca(sizeof(char*)*(argc+6));
+ newargv=alloca(sizeof(char*)*(argc+100));
a=alloca(strlen(diethome)+20);
b=alloca(strlen(platform)+20);
c=alloca(strlen(platform)+20);
strcpy(a,"-I"); strcat(a,diethome); strcat(a,"/include");
- strcpy(b,platform); strcat(b,"/start.o");
+#ifndef __DYN_LIB
+ strcpy(b,platform);
+ if (profile) strcat(b,"/pstart.o"); else strcat(b,"/start.o");
+#ifdef INSTALLVERSION
+ strcpy(c,platform); strcat(c,"/libc.a");
+#else
strcpy(c,platform); strcat(c,"/dietlibc.a");
+#endif
+#else
+ strcpy(b,platform); strcat(b,"/dstart.o");
+ strcpy(c,"-lc");
+#endif
+
+#ifdef WANT_DYNAMIC
+ d=alloca(strlen(platform)+20);
+ e=alloca(strlen(platform)+20);
+#ifdef __DYN_LIB
+ strcpy(d,platform);
+ strcpy(e,platform);
+ if (shared)
+ strcat(d,"/dyn_so_start.o");
+#ifdef INSTALLVERSION
+ else
+ strcat(d,"/dyn_dstart.o");
+ strcat(e,"/dyn_dstop.o");
+#else
+ else
+ strcat(d,"/dyn_start.o");
+ strcat(e,"/dyn_stop.o");
+#endif
+#else
+ strcpy(d,platform); strcat(d,"/dyn_start.o");
+ strcpy(e,platform); strcat(e,"/dyn_stop.o");
+#endif
+#endif
dest=newargv;
*dest++=argv[1];
- if (link) { *dest++=nostdlib; *dest++=dashL; }
- if (compile || link) *dest++=a;
- for (i=2; i<argc; ++i)
+#ifndef __DYN_LIB
+ if (_link) { *dest++=(char*)nostdlib; *dest++=dashstatic; *dest++=dashL; }
+#else
+ /* avoid R_*_COPY relocations */
+ *dest++="-fPIC";
+ if (_link || shared) { *dest++=(char*)nostdlib; *dest++=dashL; }
+#endif
+#ifdef WANT_SAFEGUARD
+ if (compile && !preprocess) {
+ *dest++=safeguard1;
+ *dest++=safeguard2;
+ }
+#endif
+ if (_link) { *dest++=b; }
+#ifdef WANT_DYNAMIC
+ if (_link) { *dest++=d; }
+#endif
+ for (i=2; i<argc; ++i) {
+ if (mangleopts)
+ if (argv[i][0]=='-' && (argv[i][1]=='O' || argv[i][1]=='f' || argv[i][1]=='m')) {
+ if (strcmp(argv[i],"-fpic") && strcmp(argv[i],"-fno-pic"))
+ continue;
+ }
*dest++=argv[i];
- if (link) { *dest++=b; *dest++=c; *dest++=libgcc; }
+ }
+#ifndef __DYN_LIB
+ if (compile || _link) *dest++=a;
+#else
+ if (compile || _link || shared) *dest++=a;
+#endif
+ *dest++="-D__dietlibc__";
+ if (mangleopts) {
+ const char **o=Os;
+
+ {
+ int fd;
+ char* tmp=getenv("HOME");
+ if (tmp) {
+ if (strlen(tmp)+strlen(cc)<900) {
+ strcpy(manglebuf,tmp);
+ strcat(manglebuf,"/.diet/");
+ strcat(manglebuf,cc);
+ if ((fd=open(manglebuf,O_RDONLY))>=0) {
+ int len=read(fd,manglebuf,1023);
+ if (len>0) {
+ int i;
+ manglebuf[len]=0;
+ *dest++=manglebuf;
+ for (i=1; i<len; ++i) {
+ if (manglebuf[i]==' ' || manglebuf[i]=='\n') {
+ manglebuf[i]=0;
+ if (i+1<len)
+ *dest++=manglebuf+i+1;
+ }
+ }
+ goto incorporated;
+ }
+ }
+ }
+ }
+ }
+ for (o=Os;*o;++o) {
+ if (!strcmp(*o,shortplatform)) {
+ ++o;
+ while (*o) {
+ *dest++=(char*)*o;
+ ++o;
+ }
+ break;
+ } else
+ while (*o) ++o;
+ }
+ }
+incorporated:
+ if (_link) {
+ if (profile) *dest++="-lgmon";
+ if (!strcmp(shortplatform,"sparc") || !strcmp(shortplatform,"sparc64")) {
+ *dest++=(char*)libgcc; *dest++=c;
+ } else {
+ *dest++=c; *dest++=(char*)libgcc;
+ }
+ }
+#ifdef WANT_DYNAMIC
+ if (_link) { *dest++=e; }
+#endif
+#ifdef __DYN_LIB
+ if (shared){ *dest++=c; }
+ f=alloca(strlen(platform)+100);
+ if (_link) {
+ strcpy(f,"-Wl,-dynamic-linker=");
+ strcat(f,platform);
+// strcat(f,"/diet-linux.so");
+ strcat(f,"/libdl.so");
+ *dest++=f;
+ }
+#endif
*dest=0;
+ if (verbose) {
+ int i;
+ for (i=0; newargv[i]; i++) {
+ __write2(newargv[i]);
+ __write2(" ");
+ }
+ __write2("\n");
+ }
execvp(newargv[0],newargv);
goto error;
} else if (!strcmp(tmp,"ld")) {
@@ -107,6 +362,6 @@ int main(int argc,char *argv[]) {
donttouch:
execvp(argv[1],argv+1);
error:
- error("execvp failed!\n");
+ error("execvp() failed!\n");
return 1;
}
diff --git a/mdk-stage1/dietlibc/dietdirent.h b/mdk-stage1/dietlibc/dietdirent.h
index d732cf7dc..dbd7206a6 100644
--- a/mdk-stage1/dietlibc/dietdirent.h
+++ b/mdk-stage1/dietlibc/dietdirent.h
@@ -1,6 +1,8 @@
+#include <sys/shm.h>
+
struct __dirstream {
int fd;
- char buf[1024];
+ char buf[PAGE_SIZE-(sizeof (int)*3)];
unsigned int num;
unsigned int cur;
}; /* stream data from opendir() */
diff --git a/mdk-stage1/dietlibc/dietdns.h b/mdk-stage1/dietlibc/dietdns.h
new file mode 100644
index 000000000..c4c1c5f72
--- /dev/null
+++ b/mdk-stage1/dietlibc/dietdns.h
@@ -0,0 +1,4 @@
+
+int __dns_gethostbyx_r(const char* name, struct hostent* result,
+ char *buf, size_t buflen,
+ struct hostent **RESULT, int *h_errnop, int lookfor);
diff --git a/mdk-stage1/dietlibc/dietfeatures.h b/mdk-stage1/dietlibc/dietfeatures.h
index e1de38577..a7b84d5b9 100644
--- a/mdk-stage1/dietlibc/dietfeatures.h
+++ b/mdk-stage1/dietlibc/dietfeatures.h
@@ -3,40 +3,106 @@
/* feel free to comment some of these out to reduce code size */
-//#define WANT_FLOATING_POINT_IN_PRINTF
-//#define WANT_FLOATING_POINT_IN_SCANF
+/* #define WANT_FLOATING_POINT_IN_PRINTF */
+/* #define WANT_FLOATING_POINT_IN_SCANF */
#define WANT_CHARACTER_CLASSES_IN_SCANF
#define WANT_NULL_PRINTF
+/* #define WANT_LONGLONG_PRINTF */
+/* #define WANT_LONGLONG_SCANF */
-#define SLASH_PROC_OK
+/* 128 or 2048 bytes buffer size? */
+/* #define WANT_SMALL_STDIO_BUFS */
+
+/* want fread to read() directly if size of data is larger than buffer?
+ * This costs a few bytes but is worth it if the application is already
+ * buffering. */
+#define WANT_FREAD_OPTIMIZATION
-// #define WANT_BUFFERED_STDIO
+/* this is only for meaningful for ttyname and sysconf_cpus so far */
+#define SLASH_PROC_OK
/* use errno_location instead of errno */
-// #define WANT_THREAD_SAFE
+/* #define WANT_THREAD_SAFE */
-/* make the startcode, etc. dynamic aware */
-/* #undef WANT_DYNAMIC */
+/* make the startcode, etc. dynamic aware ({con,de}structors) */
+/* #define WANT_DYNAMIC */
/* do you want smaller or faster string routines? */
/* #define WANT_FASTER_STRING_ROUTINES */
-/* do you want ungetc? makes fgetc more complex */
-#define WANT_UNGETC
+/* define this to have strncpy zero-fill and not just zero-terminate the
+ * string */
+/* #define WANT_FULL_POSIX_COMPAT */
-// #define WANT_LINKER_WARNINGS
+/* read the comment in lib/strncat.c for an explanation */
+/* #define WANT_NON_COMPLIANT_STRNCAT */
+
+/* #define WANT_LINKER_WARNINGS */
/* you need to define this if you want to run your programs with large
- * file support on kernel 2.2 or 2.4 */
-// #define WANT_LARGEFILE_BACKCOMPAT
+ * file support on kernel 2.2 or 2.0 */
+/* #define WANT_LARGEFILE_BACKCOMPAT */
/* do you want localtime(3) to read /etc/localtime?
* Needed for daylight saving time etc. */
-// #define WANT_TZFILE_PARSER
+/* #define WANT_TZFILE_PARSER */
+
+/* do you want the DNS routines to parse and use "domain" and "search"
+ * lines from /etc/resolv.conf? Normally not used on boot floppies and
+ * embedded environments. */
+#define WANT_FULL_RESOLV_CONF
+
+/* do you want IPv6 transport support in the DNS resolver? */
+/* #define WANT_IPV6_DNS */
+
+/* do you want gethostbyname and friends to consult /etc/hosts? */
+#define WANT_ETC_HOSTS
+
+/* do you want gethostbyname to understand dotted decimal IP numbers
+ * directly and not try to resolve them? */
+#define WANT_INET_ADDR_DNS
+
+/* do you want math functions high precision rather than fast/small? */
+/* #define WANT_HIGH_PRECISION_MATH */
+
+/* do you want support for matherr? */
+/* #define WANT_MATHERR */
+
+/* do you want crypt(3) to use MD5 if the salt starts with "$1$"? */
+/* #define WANT_CRYPT_MD5 */
+
+/* do you want diet to include a safeguard dependency to make linking
+ * against glibc fail? This may fail with older binutils. */
+#define WANT_SAFEGUARD
+
+/* dy you want that malloc(0) return a pointer to a "zero-length" object
+ * that is realloc-able; means realloc(..,size) gives a NEW object (like a
+ * call to malloc(size)).
+ * WARNING: this violates C99 */
+/* #define WANT_MALLOC_ZERO */
+
/* stop uncommenting here ;-) */
#ifndef WANT_FASTER_STRING_ROUTINES
#define WANT_SMALL_STRING_ROUTINES
#endif
+#ifdef WANT_THREAD_SAFE
+#ifndef __ASSEMBLER__
+#define errno (*__errno_location())
+#define _REENTRANT
+#endif
+#endif
+
+#ifdef __DYN_LIB
+/* with shared libraries you MUST have a dynamic aware startcode */
+#ifndef WANT_DYNAMIC
+#define WANT_DYNAMIC
+#endif
+/* saveguard crashes with shared objects ... */
+#ifdef WANT_SAFEGUARD
+#undef WANT_SAFEGUARD
+#endif
+#endif
+
#endif
diff --git a/mdk-stage1/dietlibc/dieticonv.h b/mdk-stage1/dietlibc/dieticonv.h
new file mode 100644
index 000000000..540ef2f6f
--- /dev/null
+++ b/mdk-stage1/dietlibc/dieticonv.h
@@ -0,0 +1,12 @@
+enum charset {
+ INVALID=0,
+ ISO_8859_1,
+ UTF_8,
+ UCS_2,
+ UCS_4
+};
+
+#define ic_from(x) (((x) )&0xffff)
+#define ic_to(x) (((x)>>16)&0xffff)
+
+#include <iconv.h>
diff --git a/mdk-stage1/dietlibc/dietlibm.h b/mdk-stage1/dietlibc/dietlibm.h
new file mode 100644
index 000000000..fe735e40d
--- /dev/null
+++ b/mdk-stage1/dietlibc/dietlibm.h
@@ -0,0 +1,5 @@
+#include <sys/types.h>
+
+double __poly(double x, size_t n, const double* c);
+double exp2(double x);
+double log2(double x);
diff --git a/mdk-stage1/dietlibc/dietstdarg.h b/mdk-stage1/dietlibc/dietstdarg.h
deleted file mode 100644
index 827671b22..000000000
--- a/mdk-stage1/dietlibc/dietstdarg.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <stdarg.h>
-
-/* this assumes that va_copy() will be a macro, it is on gcc */
-#ifndef va_copy
-# ifdef __va_copy
-# define va_copy(x, y) __va_copy(x, y)
-# else
-/* assume copying it works... */
-# define va_copy(x, y) x = y
-# endif
-#endif
-
diff --git a/mdk-stage1/dietlibc/dietstdio.h b/mdk-stage1/dietlibc/dietstdio.h
index a1cbeba83..2e0e93601 100644
--- a/mdk-stage1/dietlibc/dietstdio.h
+++ b/mdk-stage1/dietlibc/dietstdio.h
@@ -1,81 +1,77 @@
-/* diet stdio -- no buffering ;-} */
+/* diet stdio */
-#include "dietfeatures.h"
+#include <sys/cdefs.h>
#include <sys/types.h>
-#ifdef WANT_THREAD_SAVE
+#include "dietfeatures.h"
+#ifdef WANT_THREAD_SAFE
#include <pthread.h>
#endif
+#include <stdarg.h>
+#ifdef WANT_SMALL_STDIO_BUFS
#define BUFSIZE 128
+#else
+#define BUFSIZE 2048
+#endif
-typedef struct __file {
+struct __stdio_file {
int fd;
int flags;
-#ifdef WANT_BUFFERED_STDIO
unsigned int bs; /* read: bytes in buffer */
unsigned int bm; /* position in buffer */
- char buf[BUFSIZE];
- struct __file *next; /* for fflush */
-#endif
+ unsigned int buflen; /* length of buf */
+ char *buf;
+ struct __stdio_file *next; /* for fflush */
pid_t popen_kludge;
-#ifdef WANT_UNGETC
- char ungetbuf;
+ unsigned char ungetbuf;
char ungotten;
-#endif
-#ifdef WANT_THREAD_SAVE
+#ifdef WANT_THREAD_SAFE
pthread_mutex_t m;
#endif
-} FILE;
-
-extern FILE *__stdio_root;
+};
#define ERRORINDICATOR 1
#define EOFINDICATOR 2
#define BUFINPUT 4
#define BUFLINEWISE 8
#define NOBUF 16
-#define UNSEEKABLE 32
+#define STATICBUF 32
+#define FDPIPE 64
#define _IONBF 0
#define _IOLBF 1
#define _IOFBF 2
+#include <stdio.h>
+
/* internal function to flush buffer.
* However, if next is BUFINPUT and the buffer is an input buffer, it
* will not be flushed. Vice versa for output */
extern int __fflush4(FILE *stream,int next);
+extern int __buffered_outs(const char *s,size_t len);
-FILE *fopen (const char *path, const char *mode);
-FILE *fdopen (int fildes, const char *mode);
-FILE *freopen (const char *path, const char *mode, FILE *stream);
-
-int fgetc(FILE *stream);
-char *fgets(char *s, int size, FILE *stream);
-int getc(FILE *stream);
-int getchar(void);
-char *gets(char *s);
-int ungetc(int c, FILE *stream);
+/* ..scanf */
+struct arg_scanf {
+ void *data;
+ int (*getch)(void*);
+ int (*putch)(int,void*);
+};
-int fputc(int c, FILE *stream);
-int fputs(const char *s, FILE *stream);
-int putc(int c, FILE *stream);
-int putchar(int c);
-int puts(const char *s);
+int __v_scanf(struct arg_scanf* fn, const unsigned char *format, va_list arg_ptr);
-long fseek( FILE *stream, long offset, int whence);
-long ftell( FILE *stream);
-void rewind( FILE *stream);
-int fgetpos( FILE *stream, fpos_t *pos);
-int fsetpos( FILE *stream, fpos_t *pos);
+struct arg_printf {
+ void *data;
+ int (*put)(void*,size_t,void*);
+};
-size_t fread( void *ptr, size_t size, size_t nmemb, FILE *stream);
+int __v_printf(struct arg_printf* fn, const unsigned char *format, va_list arg_ptr);
-size_t fwrite( const void *ptr, size_t size, size_t nmemb, FILE *stream);
-
-int fflush(FILE *stream);
-
-int fclose(FILE *stream);
+extern FILE *__stdio_root;
-extern FILE *stdout, *stderr, *stdin;
+int __fflush_stdin(void);
+int __fflush_stdout(void);
+int __fflush_stderr(void);
-#define EOF (int)(-1)
+FILE* __stdio_init_file(int fd,int closeonerror);
+int __stdio_parse_mode(const char *mode);
+void __stdio_flushall(void);
diff --git a/mdk-stage1/dietlibc/dietuglyweaks.h b/mdk-stage1/dietlibc/dietuglyweaks.h
new file mode 100644
index 000000000..4b2aa231a
--- /dev/null
+++ b/mdk-stage1/dietlibc/dietuglyweaks.h
@@ -0,0 +1,24 @@
+#ifndef __DIET_UGLY_WEAKS__
+#define __DIET_UGLY_WEAKS__
+
+/* if you change something here ... KNOW what you're doing !
+ * it'll effect ALL platforms ! */
+
+.weak __thread_doexit
+__thread_doexit:
+.weak __fflush_stdin
+__fflush_stdin:
+.weak __fflush_stdout
+__fflush_stdout:
+.weak __fflush_stderr
+__fflush_stderr:
+.weak flockfile
+flockfile:
+.weak funlockfile
+funlockfile:
+.weak __nop
+__nop:
+.global __you_tried_to_link_a_dietlibc_object_against_glibc
+__you_tried_to_link_a_dietlibc_object_against_glibc:
+
+#endif
diff --git a/mdk-stage1/dietlibc/dirstream.h b/mdk-stage1/dietlibc/dirstream.h
deleted file mode 100644
index dc8fba79c..000000000
--- a/mdk-stage1/dietlibc/dirstream.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
-
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
-
-/*
- * POSIX Standard: 5.1.2 Directory Operations <dirent.h>
- */
-
-#ifndef _DIRSTREAM_H
-
-#define _DIRSTREAM_H 1
-
-#include <sys/types.h>
-#include <dirent.h>
-#ifdef _POSIX_THREADS
-#include <pthread.h>
-#endif
-
-/* For now, syscall readdir () only supports one entry at a time. It
- * will be changed in the future.
-#define NUMENT 3
-*/
-#ifndef NUMENT
-#define NUMENT 1
-#endif
-
-#define SINGLE_READDIR 11
-#define MULTI_READDIR 12
-#define NEW_READDIR 13
-
-/* Directory stream type. */
-struct __dirstream {
- /* file descriptor */
- int dd_fd;
-
- /* offset of the next dir entry in buffer */
- off_t dd_nextloc;
-
- /* bytes of valid entries in buffer */
- size_t dd_size;
-
- /* -> directory buffer */
- struct dirent *dd_buf;
-
- /* we have to convert */
- struct dirent convbuf;
-
- /* offset of the next dir entry in directory. */
- off_t dd_nextoff;
-
- /* total size of buffer */
- size_t dd_max;
-
- enum {unknown, have_getdents, no_getdents} dd_getdents;
-
- /* lock */
-#ifdef _POSIX_THREADS
- pthread_mutex_t *dd_lock;
-#else
- void *dd_lock;
-#endif
-}; /* stream data from opendir() */
-
-#endif /* dirent.h */
diff --git a/mdk-stage1/dietlibc/dyn_start.c b/mdk-stage1/dietlibc/dyn_start.c
new file mode 100644
index 000000000..391797e12
--- /dev/null
+++ b/mdk-stage1/dietlibc/dyn_start.c
@@ -0,0 +1,40 @@
+#include "dietfeatures.h"
+
+#ifdef WANT_DYNAMIC
+#include <stdlib.h>
+
+typedef void(*structor)(void);
+
+__attribute__((section(".ctors")))
+static structor __CTOR_LIST__[1]={((structor)-1)};
+
+__attribute__((section(".dtors")))
+static structor __DTOR_LIST__[1]={((structor)-1)};
+
+static void __do_global_dtors_aux(void)
+{
+ structor *df=__CTOR_LIST__; /* ugly trick to prevent warning */
+ for (df=((__DTOR_LIST__)+1);(*df) != (structor)0; df++) (*df)();
+}
+
+void _fini(void) __attribute__((section(".fini")));
+__attribute__((section(".fini"))) void _fini(void)
+{
+ __do_global_dtors_aux();
+}
+
+#ifndef __DYN_LIB_SHARED
+/* pre main, post _start */
+int _dyn_start(int argc, char **argv, char **envp, structor dl_init);
+int _dyn_start(int argc, char **argv, char **envp, structor dl_init)
+{
+ static __attribute__((section(".init"))) void _init(void);
+ int main(int argc, char **argv, char **envp);
+
+ if (dl_init) atexit(dl_init);
+ _init();
+ atexit(_fini);
+ return main(argc, argv, envp);
+}
+#endif
+#endif
diff --git a/mdk-stage1/dietlibc/dyn_stop.c b/mdk-stage1/dietlibc/dyn_stop.c
new file mode 100644
index 000000000..7213a8089
--- /dev/null
+++ b/mdk-stage1/dietlibc/dyn_stop.c
@@ -0,0 +1,23 @@
+#include "dietfeatures.h"
+
+#ifdef WANT_DYNAMIC
+typedef void(*structor)(void);
+
+__attribute__((section(".ctors")))
+static structor __CTOR_END__[1]={((structor)0)};
+
+__attribute__((section(".dtors")))
+static structor __DTOR_END__[1]={((structor)0)};
+
+static void __do_global_ctors_aux(void)
+{
+ structor *cf=__DTOR_END__; /* ugly trick to prevent warning */
+ for(cf=((__CTOR_END__)-1); (*cf) != (structor)-1; cf--) (*cf)();
+}
+
+void _init() __attribute__((section(".init")));
+__attribute__((section(".init"))) void _init()
+{
+ __do_global_ctors_aux();
+}
+#endif
diff --git a/mdk-stage1/dietlibc/findcflags.sh b/mdk-stage1/dietlibc/findcflags.sh
new file mode 100755
index 000000000..8b8b3d74a
--- /dev/null
+++ b/mdk-stage1/dietlibc/findcflags.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+version=`${1:-gcc} -v 2>&1 |sed -n '/gcc version/ {s/gcc version //;p;}'`
+case $version in
+ 2.9*) echo -march=i386 -Os -fomit-frame-pointer -malign-functions=0 -malign-jumps=0 -malign-loops=0 -mpreferred-stack-boundary=2 ;;
+ 3.0*) echo -march=i386 -Os -fomit-frame-pointer -malign-functions=0 -malign-jumps=0 -malign-loops=0 -mpreferred-stack-boundary=2 ;;
+ 3*) echo -Os -fomit-frame-pointer -falign-functions=0 -falign-jumps=0 -falign-loops=0 -mpreferred-stack-boundary=2;;
+ *) echo -O2 -pipe -fomit-frame-pointer ;;
+esac
diff --git a/mdk-stage1/dietlibc/i386/Makefile.add b/mdk-stage1/dietlibc/i386/Makefile.add
index b685cc360..83b18ae29 100644
--- a/mdk-stage1/dietlibc/i386/Makefile.add
+++ b/mdk-stage1/dietlibc/i386/Makefile.add
@@ -1,3 +1,8 @@
-CFLAGS+=-march=i386 -mcpu=i386 -Os -fomit-frame-pointer
+M:=$(shell ./findcflags.sh $(CC))
+LIBOBJ+=$(OBJDIR)/__ten.o $(OBJDIR)/md5asm.o $(OBJDIR)/mmap64.o
+LIBMATH+=acos.o asin.o atan.o atan2.o ceil.o cos.o exp.o exp10.o exp2.o expm1.o fabs.o floor.o hypot.o log.o log10.o log2.o sin.o sqrt.o tan.o copysign.o sincos.o __half.o ldexp.o pow.o ilogb.o cbrt.o log1p.o sqrtl.o fmod.o libm2.o
+#CFLAGS+=-march=i386 -Os -fomit-frame-pointer -malign-functions=0 -malign-jumps=0 -malign-loops=0 -mpreferred-stack-boundary=2
+CFLAGS+=$(M)
VPATH:=i386:syscalls.s:$(VPATH)
+LIBGMON_OBJS+=$(OBJDIR)/mcount.o
diff --git a/mdk-stage1/dietlibc/i386/PIC.h b/mdk-stage1/dietlibc/i386/PIC.h
new file mode 100644
index 000000000..45ddeb446
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/PIC.h
@@ -0,0 +1,82 @@
+#ifndef __I386_PIC_H__
+#define __I386_PIC_H__
+#ifdef __DYN_LIB
+
+#if 1
+/* don't trash the athlon return stack */
+.text
+.Lgetpic:
+ mov (%esp),%ebx
+ ret
+
+.macro PIC_INIT
+ call .Lgetpic
+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
+.endm
+#else
+/* standard code for PIC init */
+.macro PIC_INIT
+ call 0f
+0: popl %ebx
+ addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %ebx
+.endm
+#endif
+
+#define PIC_SAVE pushl %ebx
+#define PIC_RESTORE popl %ebx
+
+
+/* get memory variable (var) in register (reg) */
+.macro GET_VAR var reg
+ movl \var@GOT(%ebx), \reg
+ movl (\reg), \reg
+.endm
+
+/* put register (reg) into memory variable (var) TRASH register (tmp) */
+.macro PUT_VAR reg var tmp
+ movl \var@GOT(%ebx), \tmp
+ movl \reg, (\tmp)
+.endm
+
+/* get memory variable (var) in register (reg)
+ * IF no more PIC-code is needed */
+.macro GET_1VAR var reg
+ PIC_SAVE
+ PIC_INIT
+ GET_VAR \var, \reg
+ PIC_RESTORE
+.endm
+
+/* put register (reg) into memory variable (var)
+ * IF no more PIC-code is needed */
+.macro PUT_1VAR reg var
+ PIC_SAVE
+ PIC_INIT
+ PUT_VAR \reg, \var, %ebx
+ PIC_RESTORE
+.endm
+
+#else
+
+#define PIC_SAVE
+#define PIC_RESTORE
+#define PIC_INIT
+
+.macro GET_VAR var reg
+ movl \var, \reg
+.endm
+
+.macro PUT_VAR reg var tmp
+ movl \reg, \var
+.endm
+
+.macro GET_1VAR var reg
+ GET_VAR \var, \reg
+.endm
+
+.macro PUT_1VAR reg var
+ PUT_VAR \reg, \var, none
+.endm
+
+#endif
+#endif
diff --git a/mdk-stage1/dietlibc/i386/__half.S b/mdk-stage1/dietlibc/i386/__half.S
new file mode 100644
index 000000000..6355c93e4
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/__half.S
@@ -0,0 +1,10 @@
+#
+# Definiert Konstante (float)0.5 unter dem Namen __half
+# Wird von etlichen Funktionen benutzt (sinh, cosh, atanh)
+#
+
+.global __half
+.data
+.type __half,@object
+.size __half,4
+__half: .long 0x3f000000
diff --git a/mdk-stage1/dietlibc/i386/__longjmp.S b/mdk-stage1/dietlibc/i386/__longjmp.S
index 098275037..a09191f0b 100644
--- a/mdk-stage1/dietlibc/i386/__longjmp.S
+++ b/mdk-stage1/dietlibc/i386/__longjmp.S
@@ -2,6 +2,7 @@
.text
.global __longjmp
+.type __longjmp,@function
__longjmp:
movl 4(%esp), %ecx /* User's jmp_buf in %ecx. */
movl 8(%esp), %eax /* Second argument is return value. */
diff --git a/mdk-stage1/dietlibc/i386/__ten.S b/mdk-stage1/dietlibc/i386/__ten.S
new file mode 100644
index 000000000..47b9431f4
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/__ten.S
@@ -0,0 +1,9 @@
+#
+# Definiert Konstante (float)10. unter dem Namen __ten
+#
+
+.global __ten
+.data
+.type __ten,@object
+.size __ten,4
+__ten: .long 0x41200000
diff --git a/mdk-stage1/dietlibc/i386/__testandset.S b/mdk-stage1/dietlibc/i386/__testandset.S
index af7b4d5a0..29b02d57a 100644
--- a/mdk-stage1/dietlibc/i386/__testandset.S
+++ b/mdk-stage1/dietlibc/i386/__testandset.S
@@ -1,5 +1,6 @@
.text
.global __testandset
+.type __testandset,@function
__testandset:
xorl %eax, %eax
movl 0x4(%esp),%edx
diff --git a/mdk-stage1/dietlibc/i386/accept.S b/mdk-stage1/dietlibc/i386/accept.S
new file mode 100644
index 000000000..d8be36a54
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/accept.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(accept,ACCEPT)
diff --git a/mdk-stage1/dietlibc/i386/acos.S b/mdk-stage1/dietlibc/i386/acos.S
new file mode 100644
index 000000000..baabf9f04
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/acos.S
@@ -0,0 +1,30 @@
+
+.text
+
+.global acosf,acos,acosl # ,__acos
+ .type acosf,@function
+ .type acos,@function
+ .type acosl,@function
+# .type __acos,@function
+acosf:
+ flds 4(%esp)
+ jmp __acos
+acosl:
+ fldt 4(%esp)
+ jmp __acos
+acos:
+ fldl 4(%esp)
+__acos:
+ fld %st
+ fmul %st
+ fld1
+ fsubp
+ fsqrt
+ fxch %st(1)
+ fpatan
+ ret
+
+.ende:
+.size acos,.ende-acos
+.size acosf,.ende-acosf
+.size acosl,.ende-acosl
diff --git a/mdk-stage1/dietlibc/i386/acosh.S b/mdk-stage1/dietlibc/i386/acosh.S
new file mode 100644
index 000000000..0611c9d31
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/acosh.S
@@ -0,0 +1,18 @@
+.text
+.global acosh
+.type acosh,@function
+
+acosh:
+ fldln2
+ fldl 4(%esp)
+ fld %st(0)
+ fmul %st(0),%st(0)
+ fld1
+ fsubrp %st(0),%st(1)
+ fsqrt
+ faddp %st(0),%st(1)
+ fyl2x
+ ret
+
+.Lende:
+ .size acosh,.Lende-acosh
diff --git a/mdk-stage1/dietlibc/i386/asin.S b/mdk-stage1/dietlibc/i386/asin.S
new file mode 100644
index 000000000..7b0c31407
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/asin.S
@@ -0,0 +1,29 @@
+
+.text
+
+.global asinf,asin,asinl # ,__asin
+ .type asinf,@function
+ .type asin,@function
+ .type asinl,@function
+# .type __asin,@function
+asinf:
+ flds 4(%esp)
+ jmp __asin
+asinl:
+ fldt 4(%esp)
+ jmp __asin
+asin:
+ fldl 4(%esp)
+__asin:
+ fld %st
+ fmul %st
+ fld1
+ fsubp
+ fsqrt
+ fpatan
+ ret
+
+.ende:
+.size asin,.ende-asin
+.size asinf,.ende-asinf
+.size asinl,.ende-asinl
diff --git a/mdk-stage1/dietlibc/i386/asinh.S b/mdk-stage1/dietlibc/i386/asinh.S
new file mode 100644
index 000000000..8c3964392
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/asinh.S
@@ -0,0 +1,18 @@
+.text
+.global asinh
+.type asinh,@function
+
+asinh:
+ fldln2
+ fldl 4(%esp)
+ fld %st(0)
+ fmul %st(0),%st(0)
+ fld1
+ faddp %st(0),%st(1)
+ fsqrt
+ faddp %st(0),%st(1)
+ fyl2x
+ ret
+
+.Lende:
+ .size asinh,.Lende-asinh
diff --git a/mdk-stage1/dietlibc/i386/atan.S b/mdk-stage1/dietlibc/i386/atan.S
new file mode 100644
index 000000000..76513f928
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/atan.S
@@ -0,0 +1,27 @@
+
+.text
+
+.global atanf,atan,atanl
+ .type atanf,@function
+ .type atan,@function
+ .type atanl,@function
+atanf:
+ flds 4(%esp)
+ fld1
+ fpatan
+ ret
+atan:
+ fldl 4(%esp)
+ fld1
+ fpatan
+ ret
+atanl:
+ fldt 4(%esp)
+ fld1
+ fpatan
+ ret
+
+.ende:
+.size atan,.ende-atan
+.size atanf,.ende-atanf
+.size atanl,.ende-atanl
diff --git a/mdk-stage1/dietlibc/i386/atan2.S b/mdk-stage1/dietlibc/i386/atan2.S
new file mode 100644
index 000000000..acf6e03ae
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/atan2.S
@@ -0,0 +1,12 @@
+
+.text
+.type atan2,@function
+.global atan2
+atan2:
+ fldl 4(%esp)
+ fldl 12(%esp)
+ fpatan
+ ret
+
+.ende:
+.size atan2,.ende-atan2
diff --git a/mdk-stage1/dietlibc/i386/atanh.S b/mdk-stage1/dietlibc/i386/atanh.S
new file mode 100644
index 000000000..b75f0fa8e
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/atanh.S
@@ -0,0 +1,19 @@
+.text
+.global atanh
+.type atanh,@function
+
+atanh:
+ fldln2
+ fldl 4(%esp)
+ fld1
+ fld %st(1)
+ fadd %st(1),%st(0)
+ fxch %st(1)
+ fsubp %st(0),%st(2)
+ fdivp %st(0),%st(1)
+ fyl2x
+ fmuls __half
+ ret
+
+.Lende:
+ .size atanh,.Lende-atanh
diff --git a/mdk-stage1/dietlibc/i386/atol.S b/mdk-stage1/dietlibc/i386/atol.S
new file mode 100644
index 000000000..5bd7f2c24
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/atol.S
@@ -0,0 +1,55 @@
+/*
+ Copyright (C) 2001, 2002 Thomas M. Ogrisegg
+
+ This is free software. You can redistribute and
+ modify it under the terms of the GNU General Public
+ Public License.
+
+ atol.S
+ i386 assembler implementation of atoi(3) & atol(3)
+*/
+
+.text
+.globl atoi
+.globl atol
+.type atoi,@function
+.type atol,@function
+
+atoi:
+atol:
+ pushl %esi
+ movl 0x8(%esp), %esi
+ xorl %eax, %eax
+ xorl %edx, %edx
+ xorb %cl, %cl
+.LSpace:
+ lodsb
+ cmpb $0x21, %al
+ jng .LSpace
+ cmpb $'+', %al
+ jz .Lfe5
+ cmpb $'-', %al
+ jnz .Lfe3
+ inc %cl
+ jmp .Lfe5
+.Lfe2:
+ imul $0xa, %edx
+ addl %eax, %edx
+.Lfe5:
+ lodsb
+.Lfe3:
+ cmpb $47, %al
+ jng .Lout
+ subb $('0'), %al
+ cmpb $9, %al
+ jng .Lfe2
+.Lout:
+ movl %edx, %eax
+ or %cl, %cl
+ jz .Lreturn
+ negl %eax
+.Lreturn:
+ popl %esi
+ ret
+.size atoi, . - atoi
+.size atol, . - atol
diff --git a/mdk-stage1/dietlibc/i386/atoll.S b/mdk-stage1/dietlibc/i386/atoll.S
new file mode 100644
index 000000000..093bf762a
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/atoll.S
@@ -0,0 +1,64 @@
+
+.text
+.type atoll,@function
+.global atoll
+
+atoll:
+ movl 4(%esp),%ecx
+ push %edi
+
+ xorl %edi,%edi # sign = 0
+
+ decl %ecx
+.Lspaces:
+ incl %ecx # while ( isspace(*p) ) p++;
+ movb (%ecx),%al
+ cmpb $' ',%al
+ je .Lspaces
+ subb $9,%al
+ cmpb $5,%al
+ jc .Lspaces # c = *p - 9;
+
+ cmpb $'+'-9,%al # if ( c == '+' - 9 ) p++;
+ je .Lpos
+ cmpb $'-'-9,%al # else if ( c == '-' - 9 ) sign = -sign, p++;
+ jne .Lnosign
+ decl %edi
+.Lpos: incl %ecx
+.Lnosign:
+
+ push %ebx
+ push %esi
+ push %ebp
+ movl $10,%ebp
+
+ xorl %esi,%esi # Hi(value) = 0;
+ xorl %eax,%eax # Lo(value) = 0;
+.Lcont: movzbl (%ecx),%ebx # while ( (unsigned) (*p - '0') < 10 )
+ inc %ecx
+ subl $'0',%ebx
+ cmpl %ebp,%ebx
+ jnc .Lfini
+ imull %ebp,%esi # value *= 10,
+ mull %ebp
+ addl %edx,%esi
+ addl %ebx,%eax # value += (*p - '0');
+ adcl $0,%esi
+ jmp .Lcont
+
+.Lfini: xchg %edx,%esi # return sign== 0 ? +value
+ xorl %edi,%eax # sign==-1 ? -value
+ xorl %edi,%edx
+ subl %edi,%eax
+ sbbl %edi,%edx
+
+ pop %ebp
+ pop %esi
+ pop %ebx
+ pop %edi
+ ret
+
+.Lende:
+
+.size atoll,.Lende-atoll
+
diff --git a/mdk-stage1/dietlibc/i386/bind.S b/mdk-stage1/dietlibc/i386/bind.S
new file mode 100644
index 000000000..caff9bb8b
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/bind.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(bind,BIND)
diff --git a/mdk-stage1/dietlibc/i386/cbrt.S b/mdk-stage1/dietlibc/i386/cbrt.S
new file mode 100644
index 000000000..9d8aebd1e
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/cbrt.S
@@ -0,0 +1,46 @@
+.text
+
+tab: .byte 0, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4
+ .byte 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9
+ .byte 10,10,11,11,12,12,12,13,13,14,14,14,15,15,15,16
+
+_3: .long 0x40400000
+
+
+.global cbrt
+cbrt:
+ fldl 4(%esp)
+ movw 10(%esp),%ax
+ movb %ah,%ch
+ andw $0x7FFF,%ax
+ jz zero /* cbrt(0) = 0 */
+ pushl %ebx
+ cwd
+ movl $16*3,%ebx /* AX 3FE0 3FF0 4000 4010 */
+ divw %bx /* AX 154 155 155 155 */
+ /* DX 20 0 10 20 */
+ shlw $5,%ax
+ addb %ch,%ch
+ rcrw %ax /* AX 1540 1550 1550 1550 */
+ addw $0x3FF0-0x1550,%ax /* AX 3FE0 3FF0 3FF0 3FF0 */
+ movw %dx,%bx
+ addb tab(%ebx),%al
+ adcb $0,%ah
+ popl %ebx
+ movw %ax,10(%esp)
+ fldl 4(%esp) /* y x */
+
+ movl $4,%ecx
+lop:
+ fld %st(0) /* y y x */
+ fmul %st(0),%st(0) /* y^2 y x */
+ fdivr %st(2),%st(0) /* x/y^2 y x */
+ fadd %st(1),%st(0) /* x/y^2+y y x */
+ faddp /* x/y^2+2y x */
+ fdivs _3 /* y' x */
+ loop lop
+
+ fstp %st(1) /* y' */
+zero:
+ ret
+
diff --git a/mdk-stage1/dietlibc/i386/ceil.S b/mdk-stage1/dietlibc/i386/ceil.S
new file mode 100644
index 000000000..e6a4e989c
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/ceil.S
@@ -0,0 +1,44 @@
+.text
+
+.global ceilf,ceil,ceill,__flcetr
+ .type ceilf,@function
+ .type ceil,@function
+ .type ceill,@function
+ .type __flcetr,@function
+
+ceilf:
+ flds 4(%esp)
+ movb $0x08,%ah
+ jmp __flcetr
+
+ceill:
+ fldt 4(%esp)
+ movb $0x08,%ah
+ jmp __flcetr
+
+ceil:
+ fldl 4(%esp)
+ movb $0x08,%ah
+
+# Wspolny kod dla funkcji floor, ceil i trunc
+# W ah maska bitow 11 i 10 rejestru sterowania koprocesora
+__flcetr:
+ xorl %ecx,%ecx # wyzerowanie rejestru
+ movb %ah,%ch # i utworzenie maski w cx
+ pushl %eax # krotsze niz subl $4,%esp
+ fstcw (%esp)
+ movw (%esp),%ax
+ andb $0x03,%ah # wyzerowanie bitow 11 i 10
+ orl %ecx,%eax # ustawienie bitow z maski
+ movw %ax,2(%esp)
+ fldcw 2(%esp)
+ frndint
+ fldcw (%esp) # odtworzenie rejestru sterowania
+ popl %eax # i polozenia stosu
+ ret
+
+.Lende:
+.size ceil,.Lende-ceil
+.size ceill,.Lende-ceill
+.size ceilf,.Lende-ceilf
+.size flcetr,.Lende-__flcetr
diff --git a/mdk-stage1/dietlibc/i386/clone.S b/mdk-stage1/dietlibc/i386/clone.S
index ac02eb468..ea43bc2e2 100644
--- a/mdk-stage1/dietlibc/i386/clone.S
+++ b/mdk-stage1/dietlibc/i386/clone.S
@@ -1,17 +1,21 @@
-#include <asm/unistd.h>
+#include "syscalls.h"
+#include <errno.h>
+#include "PIC.h"
.text
+.type clone,@function
.weak clone
clone:
+.type __clone,@function
.global __clone
__clone:
+ mov $-EINVAL, %eax
+
movl 4(%esp), %ecx /* have non null thread_funcion */
- testl %ecx, %ecx
- je .Lclone_error
+ jecxz .Lclone_error
movl 8(%esp), %ecx /* have non null child_stack pointer */
- testl %ecx, %ecx
- je .Lclone_error
+ jecxz .Lclone_error
/* put the parameter on thread stack */
subl $8, %ecx
@@ -31,9 +35,7 @@ __clone:
testl %eax, %eax
jl .Lclone_error
- je .Lstart_thread
- ret
-
+ jne .Lreturn
.Lstart_thread:
xorl %ebp,%ebp
call *%ebx
@@ -43,9 +45,16 @@ __clone:
.Lclone_error:
negl %eax
pushl %eax
+#ifdef PIC
+ pushl %ebx
+ PIC_INIT
+ call __errno_location@PLT
+ popl %ebx
+#else
call __errno_location
+#endif
popl %ecx
movl %ecx, (%eax)
- xorl %eax, %eax
- decl %eax
+ orl $-1, %eax
+.Lreturn:
ret
diff --git a/mdk-stage1/dietlibc/i386/connect.S b/mdk-stage1/dietlibc/i386/connect.S
new file mode 100644
index 000000000..a295a8814
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/connect.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(connect,CONNECT)
diff --git a/mdk-stage1/dietlibc/i386/copysign.S b/mdk-stage1/dietlibc/i386/copysign.S
new file mode 100644
index 000000000..3a495efee
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/copysign.S
@@ -0,0 +1,18 @@
+
+.text
+.type copysign,@function
+.global copysign
+
+# double copysign ( double value, double sign );
+
+copysign:
+ movb 12+7(%esp),%al
+ movb 4+7(%esp),%ah
+ andw $0x7F80,%ax
+ orb %ah,%al
+ movb 4+7(%esp),%al
+ fldl 4(%esp)
+ ret
+
+.ende:
+.size copysign,.ende-copysign
diff --git a/mdk-stage1/dietlibc/i386/cos.S b/mdk-stage1/dietlibc/i386/cos.S
new file mode 100644
index 000000000..f95c81ca7
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/cos.S
@@ -0,0 +1,35 @@
+.text
+
+.global cosf,cos,cosl
+.type cosf,@function
+.type cos,@function
+.type cosl,@function
+
+cosf:
+ flds 4(%esp)
+ jmp 1f
+cos:
+ fldl 4(%esp)
+1:
+ fcos
+ fnstsw %ax
+ testb $0x04, %ah
+ je 3f
+ fldpi
+ fadd %st
+ fxch %st(1)
+2: fprem1
+ fnstsw %ax
+ testb $0x04, %ah
+ jne 2b
+ fstp %st(1)
+ fcos
+3: ret
+cosl:
+ fldt 4(%esp)
+ jmp 1b
+
+.Lende:
+.size cos,.Lende-cos
+.size cosl,.Lende-cosl
+.size cosf,.Lende-cosf
diff --git a/mdk-stage1/dietlibc/i386/cosh.S b/mdk-stage1/dietlibc/i386/cosh.S
new file mode 100644
index 000000000..f6a33704d
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/cosh.S
@@ -0,0 +1,29 @@
+
+.text
+.type cosh,@function
+.global cosh
+
+cosh: # note: exp(x) = 2^(x*log2(e))
+ fldl2e
+ fmull 4(%esp) # x*log2(e)
+ fld %st(0) # x*log2(e) x*log2(e)
+ frndint # int(x*log2(e)) x*log2(e)
+ fxch # x*log2(e) int(x*log2(e))
+ fsub %st(1),%st(0) # frac(x*log2(e)) int(x*log2(e))
+ f2xm1 # 2^(fract(x*log2(e)))-1 int(x*log2(e))
+ fld1 # 1 2^(fract(x*log2(e)))-1 int(x*log2(e))
+ faddp %st(0),%st(1) # 2^(fract(x*log2(e))) int(x*log2(e))
+ fscale # 2^(x*log2(e)) int(x*log2(e))
+ fstp %st(1) # 2^(x*log2(e))
+
+# now we have y = exp(x), but cosh(x) = (y + 1/y) * 0.5
+
+ fld1
+ fdiv %st(1),%st(0)
+ faddp
+ fmuls __half
+ ret
+
+.Lende:
+
+.size cosh,.ende-cosh
diff --git a/mdk-stage1/dietlibc/i386/dyn_syscalls.S b/mdk-stage1/dietlibc/i386/dyn_syscalls.S
new file mode 100644
index 000000000..c4fd2fff5
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/dyn_syscalls.S
@@ -0,0 +1,282 @@
+/*
+ * dynamic unified-syscalls
+ * Olaf Dreesen
+ */
+
+#include "../syscalls.s/environ.S"
+#include "../syscalls.s/errno.S"
+
+#include <dietfeatures.h>
+#include "syscalls.h"
+#include "PIC.h"
+
+/* ok now include all syscalls.s (*.S) and sysdep *.S */
+
+#include "mmap.S"
+
+/* here on i386 I had split them some pre- some post-unified-syscall,
+ * because the jumps pre-u.s.c. have only a 1 byte displacement. the first
+ * post-u.s.c. have also 1 byte dsplacement the rest a 4 byte.
+ * this pre/post split saves about 250 byte of code ....
+ *
+ * Please put additional syscalls AFTER the post-u.s.c.
+ * or try to not break the savings :) */
+
+#include "select.S"
+
+#include "../syscalls.s/fork.S"
+#include "../syscalls.s/read.S"
+#include "../syscalls.s/write.S"
+#include "../syscalls.s/open.S"
+#include "../syscalls.s/close.S"
+#include "../syscalls.s/waitpid.S"
+
+#include "../syscalls.s/getgid.S"
+#include "../syscalls.s/getpgid.S"
+#include "../syscalls.s/getpid.S"
+#include "../syscalls.s/getppid.S"
+#include "../syscalls.s/getuid.S"
+#include "../syscalls.s/kill.S"
+#include "../syscalls.s/ioctl.S"
+#include "../syscalls.s/_llseek.S"
+#include "../syscalls.s/lseek.S"
+#include "../syscalls.s/lstat.S"
+#include "../syscalls.s/lstat64.S"
+#include "../syscalls.s/mkdir.S"
+#include "../syscalls.s/mprotect.S"
+#include "../syscalls.s/nanosleep.S"
+#include "../syscalls.s/pipe.S"
+#include "../syscalls.s/poll.S"
+#include "../syscalls.s/readv.S"
+#include "../syscalls.s/stat.S"
+#include "../syscalls.s/stat64.S"
+#include "../syscalls.s/truncate.S"
+#include "../syscalls.s/umask.S"
+#include "../syscalls.s/wait4.S"
+#include "../syscalls.s/writev.S"
+#include "../syscalls.s/__getpagesize.S"
+
+/* OK this is basicaly unified.S */
+.text
+.type __unified_syscall_256,@function
+__unified_syscall_256:
+ movzwl %ax, %eax
+ jmp .L23
+.L22:
+.size __unified_syscall_256,.L22-__unified_syscall_256
+.type exit,@function
+.weak exit
+exit:
+.type _exit,@function
+.global _exit
+_exit:
+__exit:
+ mov $__NR_exit, %al
+__unified_syscall:
+ movzbl %al, %eax
+.L23:
+ push %edi
+ push %esi
+ push %ebx
+ movl %esp,%edi
+ movl 0x10(%edi),%ebx
+ movl 0x14(%edi),%ecx
+ movl 0x18(%edi),%edx
+ movl 0x1c(%edi),%esi
+ movl 0x20(%edi),%edi
+ int $0x80
+ cmp $-124,%eax
+ jbe .Lnoerror
+ neg %eax
+
+ /* PIC-code Ohhhhh My. */
+ push %eax
+ PIC_INIT
+ call __errno_location@PLT
+ popl %ebx
+ movl %ebx,(%eax)
+ orl $-1,%eax
+.Lnoerror:
+ pop %ebx
+ pop %esi
+ pop %edi
+#include "dietuglyweaks.h"
+ ret
+
+#include "../syscalls.s/__pread.S"
+#include "../syscalls.s/__pwrite.S"
+#include "../syscalls.s/__reboot.S"
+#include "../syscalls.s/access.S"
+#include "../syscalls.s/adjtimex.S"
+#include "../syscalls.s/brk.S"
+#include "../syscalls.s/chdir.S"
+#include "../syscalls.s/chmod.S"
+#include "../syscalls.s/chown.S"
+#include "../syscalls.s/chroot.S"
+#include "../syscalls.s/dup.S"
+#include "../syscalls.s/dup2.S"
+#include "../syscalls.s/execve.S"
+#include "../syscalls.s/fchdir.S"
+#include "../syscalls.s/fchmod.S"
+#include "../syscalls.s/fchown.S"
+#include "../syscalls.s/fcntl.S"
+#include "../syscalls.s/flock.S"
+#include "../syscalls.s/fstat.S"
+#include "../syscalls.s/fstat64.S"
+#include "../syscalls.s/fstatfs.S"
+#include "../syscalls.s/fsync.S"
+#include "../syscalls.s/fdatasync.S"
+#include "../syscalls.s/ftruncate.S"
+#include "../syscalls.s/getcwd.S"
+#include "../syscalls.s/getdents.S"
+#include "../syscalls.s/getdents64.S"
+#include "../syscalls.s/getegid.S"
+#include "../syscalls.s/geteuid.S"
+#include "../syscalls.s/getgroups.S"
+#include "../syscalls.s/getitimer.S"
+#include "../syscalls.s/getpriority.S"
+#include "../syscalls.s/getresgid.S"
+#include "../syscalls.s/getresuid.S"
+#include "../syscalls.s/getrlimit.S"
+#include "../syscalls.s/getrusage.S"
+#include "../syscalls.s/getsid.S"
+#include "../syscalls.s/gettimeofday.S"
+#include "../syscalls.s/ioperm.S"
+#include "../syscalls.s/iopl.S"
+#include "../syscalls.s/ipc.S"
+#include "../syscalls.s/lchown.S"
+#include "../syscalls.s/link.S"
+#include "../syscalls.s/mknod.S"
+#include "../syscalls.s/mlock.S"
+#include "../syscalls.s/mlockall.S"
+#include "../syscalls.s/mount.S"
+#include "../syscalls.s/mremap.S"
+#include "../syscalls.s/munlockall.S"
+#include "../syscalls.s/munmap.S"
+#include "../syscalls.s/n_sigaction.S"
+#include "../syscalls.s/n_sigpending.S"
+#include "../syscalls.s/n_sigprocmask.S"
+#include "../syscalls.s/n_sigsuspend.S"
+#include "../syscalls.s/nice.S"
+#include "../syscalls.s/pause.S"
+#include "../syscalls.s/personality.S"
+#include "../syscalls.s/query_module.S"
+#include "../syscalls.s/init_module.S"
+#include "../syscalls.s/delete_module.S"
+#include "../syscalls.s/create_module.S"
+#include "../syscalls.s/readlink.S"
+#include "../syscalls.s/rename.S"
+#include "../syscalls.s/rmdir.S"
+#include "../syscalls.s/rt_sigaction.S"
+#include "../syscalls.s/rt_sigpending.S"
+#include "../syscalls.s/rt_sigprocmask.S"
+#include "../syscalls.s/rt_sigqueueinfo.S"
+#include "../syscalls.s/rt_sigsuspend.S"
+#include "../syscalls.s/rt_sigtimedwait.S"
+#include "../syscalls.s/sched_get_priority_max.S"
+#include "../syscalls.s/sched_get_priority_min.S"
+#include "../syscalls.s/sched_getparam.S"
+#include "../syscalls.s/sched_getscheduler.S"
+#include "../syscalls.s/sched_rr_get_interval.S"
+#include "../syscalls.s/sched_setparam.S"
+#include "../syscalls.s/sched_setscheduler.S"
+#include "../syscalls.s/sched_yield.S"
+#include "../syscalls.s/sendfile.S"
+#include "../syscalls.s/setdomainname.S"
+#include "../syscalls.s/setfsgid.S"
+#include "../syscalls.s/setfsuid.S"
+#include "../syscalls.s/setgid.S"
+#include "../syscalls.s/setgroups.S"
+#include "../syscalls.s/sethostname.S"
+#include "../syscalls.s/setitimer.S"
+#include "../syscalls.s/setpgid.S"
+#include "../syscalls.s/setpriority.S"
+#include "../syscalls.s/setregid.S"
+#include "../syscalls.s/setresgid.S"
+#include "../syscalls.s/setresuid.S"
+#include "../syscalls.s/setreuid.S"
+#include "../syscalls.s/setrlimit.S"
+#include "../syscalls.s/setsid.S"
+#include "../syscalls.s/setuid.S"
+#include "../syscalls.s/sigaltstack.S"
+#include "../syscalls.s/statfs.S"
+#include "../syscalls.s/stime.S"
+#include "../syscalls.s/swapoff.S"
+#include "../syscalls.s/swapon.S"
+#include "../syscalls.s/symlink.S"
+#include "../syscalls.s/sync.S"
+#include "../syscalls.s/sysctl.S"
+#include "../syscalls.s/sysinfo.S"
+#include "../syscalls.s/syslog.S"
+#include "../syscalls.s/time.S"
+#include "../syscalls.s/times.S"
+#include "../syscalls.s/umount.S"
+#include "../syscalls.s/umount2.S"
+#include "../syscalls.s/uname.S"
+#include "../syscalls.s/unlink.S"
+#include "../syscalls.s/utime.S"
+#include "../syscalls.s/vhangup.S"
+
+#include "../syscalls.s/chown32.S"
+#include "../syscalls.s/fchown32.S"
+#include "../syscalls.s/getegid32.S"
+#include "../syscalls.s/geteuid32.S"
+#include "../syscalls.s/getgid32.S"
+#include "../syscalls.s/getgroups32.S"
+#include "../syscalls.s/getresgid32.S"
+#include "../syscalls.s/getuid32.S"
+#include "../syscalls.s/lchown32.S"
+#include "../syscalls.s/setfsgid32.S"
+#include "../syscalls.s/setfsuid32.S"
+#include "../syscalls.s/setgid32.S"
+#include "../syscalls.s/setregid32.S"
+#include "../syscalls.s/setresgid32.S"
+#include "../syscalls.s/setreuid32.S"
+#include "../syscalls.s/setuid32.S"
+#include "../syscalls.s/alarm.S"
+#include "../syscalls.s/ptrace.S"
+#include "../syscalls.s/truncate64.S"
+#include "../syscalls.s/ftruncate64.S"
+#include "../syscalls.s/epoll_create.S"
+#include "../syscalls.s/epoll_ctl.S"
+#include "../syscalls.s/epoll_wait.S"
+
+#undef __PIC__
+#undef __socketcall
+/* oh what a kludge! */
+#define socketcall .Lsocketcall
+#include "../i386/send.S"
+#include "../i386/recv.S"
+#include "../i386/socket.S"
+#include "../i386/accept.S"
+#include "../i386/shutdown.S"
+#include "../i386/socketpair.S"
+#include "../i386/setsockopt.S"
+#include "../i386/sendto.S"
+#include "../i386/sendmsg.S"
+#include "../i386/recvmsg.S"
+#include "../i386/recvfrom.S"
+#include "../i386/listen.S"
+#include "../i386/getsockopt.S"
+#include "../i386/getsockname.S"
+#include "../i386/getpeername.S"
+#include "../i386/connect.S"
+#include "../i386/bind.S"
+#undef socketcall
+.Lsocketcall:
+#include "../i386/socketcall.S"
+#define __PIC__
+#undef __socketcall
+
+
+/* so now this was the last u.s.c. */
+
+/* other asm-files ... */
+#define PIC
+
+#define _exit __exit
+#include "clone.S"
+#undef _exit
+
+#include "__longjmp.S"
+#include "setjmp.S"
diff --git a/mdk-stage1/dietlibc/i386/exp.S b/mdk-stage1/dietlibc/i386/exp.S
new file mode 100644
index 000000000..6c82128e4
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/exp.S
@@ -0,0 +1,35 @@
+.text
+
+.global expf,exp,expl,__finexp
+ .type expf,@function
+ .type exp,@function
+ .type expl,@function
+ .type __finexp,@function
+expf:
+ fldl2e
+ fmuls 4(%esp)
+ jmp __finexp
+expl:
+ fldl2e
+ fldt 4(%esp)
+ fmulp
+ jmp __finexp
+exp:
+ fldl2e
+ fmull 4(%esp)
+__finexp:
+ fst %st(1)
+ frndint
+ fst %st(2)
+ fsubrp
+ f2xm1
+ fld1
+ faddp
+ fscale
+ ret
+
+.Lende:
+.size exp,.Lende-exp
+.size expl,.Lende-expl
+.size expf,.Lende-expf
+.size __finexp,.Lende-__finexp
diff --git a/mdk-stage1/dietlibc/i386/exp10.S b/mdk-stage1/dietlibc/i386/exp10.S
new file mode 100644
index 000000000..6223e5f85
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/exp10.S
@@ -0,0 +1,27 @@
+
+.text
+.type exp10,@function
+.global exp10
+.type pow10,@function
+.global pow10
+
+
+pow10:
+exp10: # note: 10^(x) = 2^(x*log2(10))
+ fldl2t
+ fmull 4(%esp) # x*log2(10)
+ fld %st(0) # x*log2(10) x*log2(10)
+ frndint # int(x*log2(10)) x*log2(10)
+ fxch # x*log2(10) int(x*log2(10))
+ fsub %st(1),%st(0) # frac(x*log2(10)) int(x*log2(10))
+ f2xm1 # 2^(fract(x*log2(10)))-1 int(x*log2(10))
+ fld1 # 1 2^(fract(x*log2(10)))-1 int(x*log2(10))
+ faddp %st(0),%st(1) # 2^(fract(x*log2(10))) int(x*log2(10))
+ fscale # 2^(x*log2(10)) int(x*log2(10))
+ fstp %st(1) # 2^(x*log2(10))
+ ret
+
+.ende:
+
+.size exp10,.ende-exp10
+.size pow10,.ende-pow10
diff --git a/mdk-stage1/dietlibc/i386/exp2.S b/mdk-stage1/dietlibc/i386/exp2.S
new file mode 100644
index 000000000..d5389a22e
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/exp2.S
@@ -0,0 +1,18 @@
+.text
+.type exp2,@function
+.global exp2
+exp2: # note: exp2(x) = 2^x
+ fldl 4(%esp) # x
+ fld %st(0) # x x
+ frndint # int(x) x
+ fxch # x int(x)
+ fsub %st(1),%st(0) # frac(x) int(x)
+ f2xm1 # 2^(fract(x))-1 int(x)
+ fld1 # 1 2^(fract(x))-1 int(x)
+ faddp %st(0),%st(1) # 2^(fract(x)) int(x)
+ fscale # 2^x int(x)
+ fstp %st(1) # 2^x
+ ret
+
+.ende:
+.size exp2,.ende-exp2
diff --git a/mdk-stage1/dietlibc/i386/expm1.S b/mdk-stage1/dietlibc/i386/expm1.S
new file mode 100644
index 000000000..677f4723f
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/expm1.S
@@ -0,0 +1,23 @@
+.text
+.type expm1,@function
+.global expm1
+expm1: # note: exp(x) = 2^(x*log2(e))
+ fldl2e
+ fmull 4(%esp) # x*log2(e)
+ fld %st(0) # x*log2(e) x*log2(e)
+ frndint # int(x*log2(e)) x*log2(e)
+ fxch # x*log2(e) int(x*log2(e))
+ fsub %st(1),%st(0) # frac(x*log2(e)) int(x*log2(e))
+ f2xm1 # 2^(fract(x*log2(e)))-1 int(x*log2(e))
+ fscale # 2^(x*log2(e))-2^int(x*log2(e)) int(x*log2(e))
+ fxch # int(x*log2(e)) 2^(x*log2(e))-2^int(x*log2(e))
+ fld1 # 1 int(x*log2(e)) 2^(x*log2(e))-2^int(x*log2(e))
+ fscale # 2^int(x*log2(e)) int(x*log2(e)) 2^(x*log2(e))-2^int(x*log2(e))
+ fstp %st(1) # 2^int(x*log2(e)) 2^(x*log2(e))-2^int(x*log2(e))
+ fld1 # 1 2^int(x*log2(e)) 2^(x*log2(e))-2^int(x*log2(e))
+ fsubrp %st(1) # 2^int(x*log2(e))-1 2^(x*log2(e))-2^int(x*log2(e))
+ faddp %st(1)
+ ret
+
+.ende:
+.size expm1,.ende-expm1
diff --git a/mdk-stage1/dietlibc/i386/fabs.S b/mdk-stage1/dietlibc/i386/fabs.S
new file mode 100644
index 000000000..d9c1c2212
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/fabs.S
@@ -0,0 +1,11 @@
+
+.text
+.type fabs,@function
+.global fabs
+fabs:
+ fldl 4(%esp)
+ fabs
+ ret
+
+.ende:
+.size fabs,.ende-fabs
diff --git a/mdk-stage1/dietlibc/i386/floor.S b/mdk-stage1/dietlibc/i386/floor.S
new file mode 100644
index 000000000..af26d0c94
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/floor.S
@@ -0,0 +1,26 @@
+.text
+
+.global floorf,floor,floorl
+ .type floorf,@function
+ .type floor,@function
+ .type floorf,@function
+
+floorf:
+ flds 4(%esp)
+ movb $0x04,%ah
+ jmp __flcetr
+
+floor:
+ fldl 4(%esp)
+ movb $0x04,%ah
+ jmp __flcetr
+
+floorl:
+ fldt 4(%esp)
+ movb $0x04,%ah
+ jmp __flcetr
+
+.Lende:
+.size floor,.Lende-floor
+.size floorl,.Lende-floorl
+.size floorf,.Lende-floorf
diff --git a/mdk-stage1/dietlibc/i386/fmod.S b/mdk-stage1/dietlibc/i386/fmod.S
new file mode 100644
index 000000000..5bf4c06ab
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/fmod.S
@@ -0,0 +1,37 @@
+.text
+.type fmod,@function
+.type fmodf,@function
+.type fmodl,@function
+.type __fmod2pi,@function
+.global fmod, fmodl, fmodf, __fmod2pi
+
+__fmod2pi:
+ fldpi
+ fadd %st(0)
+ fxch
+ jmp .Lfmod
+
+fmodf:
+ flds 8(%esp) # y
+ flds 4(%esp) # x
+ jmp .Lfmod
+fmod:
+ fldl 12(%esp)
+ fldl 4(%esp)
+.Lfmod:
+ fprem
+ fstsw %ax
+ sahf
+ jp .Lfmod
+ ret
+
+fmodl:
+ fldt 16(%esp)
+ fldt 4(%esp)
+ jmp .Lfmod
+
+
+.ende:
+.size fmod,.ende-fmod
+.size fmodl,.ende-fmodl
+.size fmodf,.ende-fmodf
diff --git a/mdk-stage1/dietlibc/i386/getenv.S b/mdk-stage1/dietlibc/i386/getenv.S
new file mode 100644
index 000000000..dafbf37ee
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/getenv.S
@@ -0,0 +1,48 @@
+#include "PIC.h"
+
+.text
+.global getenv
+.type getenv,@function
+getenv:
+ pushl %esi
+ pushl %edi
+ movl 0xc(%esp), %edi
+ cld
+ movl %edi, %edx
+ xorl %eax, %eax
+ leal -1(%eax), %ecx
+ repnz scasb
+ not %ecx
+ dec %ecx
+ pushl %ecx
+ movl (%edx), %ecx
+
+ GET_1VAR environ, %esi # non-PIC: movl environ, %esi
+ jmp .Lloop
+
+.Lprepare:
+ movl (%edx), %ecx
+ movl %eax, %esi
+.Lloop:
+ lodsl
+ or %eax, %eax
+ jz .Lout
+ cmpb %cl, (%eax)
+ jnz .Lloop
+
+ movl %edx, %edi
+ xchg %esi, %eax
+ movl (%esp), %ecx
+ repz cmpsb
+ jne .Lprepare
+ or %ecx, %ecx
+ jnz .Lprepare
+ cmpb $'=', (%esi)
+ jne .Lprepare
+ leal 0x1(%esi), %eax
+.Lout:
+ popl %ecx
+ popl %edi
+ popl %esi
+ ret
+.size getenv, . - getenv
diff --git a/mdk-stage1/dietlibc/i386/getpeername.S b/mdk-stage1/dietlibc/i386/getpeername.S
new file mode 100644
index 000000000..833322941
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/getpeername.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(getpeername,GETPEERNAME)
diff --git a/mdk-stage1/dietlibc/i386/getsockname.S b/mdk-stage1/dietlibc/i386/getsockname.S
new file mode 100644
index 000000000..f0618481c
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/getsockname.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(getsockname,GETSOCKNAME)
diff --git a/mdk-stage1/dietlibc/i386/getsockopt.S b/mdk-stage1/dietlibc/i386/getsockopt.S
new file mode 100644
index 000000000..23d7c2470
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/getsockopt.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(getsockopt,GETSOCKOPT)
diff --git a/mdk-stage1/dietlibc/i386/htonl.S b/mdk-stage1/dietlibc/i386/htonl.S
new file mode 100644
index 000000000..f3732d16a
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/htonl.S
@@ -0,0 +1,13 @@
+.text
+.global htonl
+.type htonl,@function
+.global ntohl
+.type ntohl,@function
+
+htonl:
+ntohl:
+ movl 4(%esp),%eax
+ xchgb %al,%ah
+ rorl $16,%eax
+ xchgb %al,%ah
+ ret
diff --git a/mdk-stage1/dietlibc/i386/htons.S b/mdk-stage1/dietlibc/i386/htons.S
new file mode 100644
index 000000000..367d6d03c
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/htons.S
@@ -0,0 +1,11 @@
+.text
+.global htons
+.type htons,@function
+.global ntohs
+.type ntohs,@function
+
+htons:
+ntohs:
+ movzwl 4(%esp),%eax
+ xchgb %al,%ah
+ ret
diff --git a/mdk-stage1/dietlibc/i386/hypot.S b/mdk-stage1/dietlibc/i386/hypot.S
new file mode 100644
index 000000000..730b2c5c9
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/hypot.S
@@ -0,0 +1,15 @@
+
+.text
+.type hypot,@function
+.global hypot
+hypot:
+ fldl 4(%esp)
+ fmul %st(0),%st(0)
+ fldl 12(%esp)
+ fmul %st(0),%st(0)
+ faddp
+ fsqrt
+ ret
+
+.ende:
+.size hypot,.ende-hypot
diff --git a/mdk-stage1/dietlibc/i386/ilogb.S b/mdk-stage1/dietlibc/i386/ilogb.S
new file mode 100644
index 000000000..3bebd88ba
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/ilogb.S
@@ -0,0 +1,23 @@
+#
+# int ilogb ( double x );
+#
+# returns (int) log2 (fabs(x)) for x!=0
+# returns MIN_INT for x==0
+#
+
+.text
+.global ilogb
+.type ilogb,@function
+
+ilogb:
+ movl 8(%esp),%eax
+ addl %eax,%eax
+ jz .Lzero
+ shrl $21,%eax
+ subl $1023,%eax
+ ret
+
+.Lzero:
+ stc
+ rcrl %eax
+ ret
diff --git a/mdk-stage1/dietlibc/i386/ipow.S b/mdk-stage1/dietlibc/i386/ipow.S
new file mode 100644
index 000000000..cca6a0ce1
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/ipow.S
@@ -0,0 +1,27 @@
+#
+# This is not standard, but often you only need such this function
+# which is much shorter than the generic pow() function.
+#
+# double ipow ( double mant, int expo );
+#
+
+.text
+.global ipow
+.type ipow,@function
+
+ipow: fld1
+ movl 12(%esp),%ecx
+ fldl 4(%esp)
+ and %ecx,%ecx
+ jns .Lstart
+ negl %ecx
+ fdivr %st(1),%st(0)
+ jmp .Lstart
+
+.Lnext: fmul %st(0),%st(0)
+.Lstart:shrl %ecx
+ jnc .Lnomul
+ fmul %st(0),%st(1)
+.Lnomul:jnz .Lnext
+ fcomp
+ ret
diff --git a/mdk-stage1/dietlibc/i386/isleap.S b/mdk-stage1/dietlibc/i386/isleap.S
new file mode 100644
index 000000000..28d1ee0ce
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/isleap.S
@@ -0,0 +1,28 @@
+.text
+.globl __isleap
+.type __isleap,@function
+
+__isleap:
+ movl 4(%esp),%eax
+ testb $3,%al
+ jne .Lretzero
+#if 1
+ movb $100,%cl /* this works only for 0 a.D. ... 25599 a.C. */
+ divb %cl
+ andb %ah,%ah
+#else
+ cltd /* This works for 2147483648 b.C. ... 2147483647 a.C. */
+ movl $100,%ecx
+ divl %ecx
+ andl %edx,%edx
+#endif
+ jne .Lretone
+ testb $3,%al
+ jne .Lretzero
+.Lretone: xorl %eax,%eax
+ incl %eax
+ ret
+
+.Lretzero:xorl %eax,%eax
+ ret
+
diff --git a/mdk-stage1/dietlibc/i386/ldexp.S b/mdk-stage1/dietlibc/i386/ldexp.S
new file mode 100644
index 000000000..51d9bae89
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/ldexp.S
@@ -0,0 +1,28 @@
+.text
+.global ldexpf,ldexp,ldexpl
+ .type ldexpf,@function
+ .type ldexp,@function
+ .type ldexpl,@function
+
+ldexpf:
+ fildl 8(%esp)
+ flds 4(%esp)
+ fscale
+ ret
+
+ldexp:
+ fildl 12(%esp)
+ fldl 4(%esp)
+ fscale
+ ret
+
+ldexpl:
+ fildl 16(%esp)
+ fldt 4(%esp)
+ fscale
+ ret
+
+.ende:
+.size ldexpl,.ende-ldexpl
+.size ldexp,ldexpl-ldexp
+.size ldexpf,ldexp-ldexpf
diff --git a/mdk-stage1/dietlibc/i386/libm2.S b/mdk-stage1/dietlibc/i386/libm2.S
new file mode 100644
index 000000000..91c4437cd
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/libm2.S
@@ -0,0 +1,643 @@
+.text
+#d.half:
+# .long 0x3f000000 # 1/2
+#d.log1p:
+# .long 0x3ed413cc # < sqrt(2)-1-2^(-25)
+
+.global fabsf,fabs,fabsl
+ .type fabsf,@function
+ .type fabs,@function
+ .type fabsl,@function
+fabsf:
+ flds 4(%esp)
+ fabs
+ ret
+fabs:
+ fldl 4(%esp)
+ fabs
+ ret
+fabsl:
+ fldt 4(%esp)
+ fabs
+ ret
+
+.global sincosf,sincos,sincosl
+.type sincosf,@function
+.type sincos,@function
+.type sincosl,@function
+# void sincos ( double x, double* sinx, double* cosx );
+
+sincosf:
+ flds 4(%esp)
+ call __fmod2pi
+ movl 12(%esp),%eax
+ movl 8(%esp),%ecx
+ fsincos
+ fstps (%eax)
+ fstps (%ecx)
+ ret
+sincos:
+ fldl 4(%esp)
+ call __fmod2pi
+ movl 16(%esp),%eax
+ movl 12(%esp),%ecx
+ fsincos
+ fstpl (%eax)
+ fstpl (%ecx)
+ ret
+sincosl:
+ fldt 4(%esp)
+ call __fmod2pi
+ movl 20(%esp),%eax
+ movl 16(%esp),%ecx
+ fsincos
+ fstpt (%eax)
+ fstpt (%ecx)
+ ret
+
+.global tanf,tan,tanl
+.type tanf,@function
+.type tan,@function
+.type tanl,@function
+tanf:
+ flds 4(%esp)
+ jmp __tan
+tan:
+ fldl 4(%esp)
+__tan:
+ call __fmod2pi
+ fsincos
+ fdivrp
+ ret
+tanl:
+ fldt 4(%esp)
+ jmp __tan
+
+.global atan2f,atan2,atan2l
+ .type atan2f,@function
+ .type atan2,@function
+ .type atan2l,@function
+atan2f:
+ flds 4(%esp)
+ flds 8(%esp)
+ fpatan
+ ret
+atan2l:
+ fldt 4(%esp)
+ fldt 16(%esp)
+ fpatan
+ ret
+atan2:
+ fldl 4(%esp)
+ fldl 12(%esp)
+ fpatan
+ ret
+
+.global cbrtf,cbrt,cbrtl
+ .type cbrtf,@function
+ .type cbrt,@function
+ .type cbrtl,@function
+cbrtf:
+ flds 4(%esp)
+ jmp __cbrt
+cbrtl:
+ fldt 4(%esp)
+ jmp __cbrt
+cbrt:
+ fldl 4(%esp)
+# fldt 1/3
+__cbrt:
+ pushl $0x00003ffd # yes, this method of loading 1/3
+ pushl $0xaaaaaaaa # is shorter than keeping the data
+ pushl $0xaaaaaaab # separate
+ fldt (%esp)
+ addl $12,%esp
+ fxch # st(0)=x, st(1)=1/3
+ ftst
+ fstsw %ax
+ sahf
+ jz 1f
+ jnc finpow
+ fchs
+ call finpow
+ fchs
+1: ret
+
+# x^y; st(0)=x, st(1)=y (x > 0)
+finpow:
+ fyl2x
+ jmp __finexp
+
+.global exp2f,exp2,exp2l
+ .type exp2f,@function
+ .type exp2,@function
+ .type exp2l,@function
+exp2f:
+ flds 4(%esp)
+ jmp __finexp
+exp2:
+ fldl 4(%esp)
+ jmp __finexp
+exp2l:
+ fldt 4(%esp)
+ jmp __finexp
+
+.global exp10f,exp10,exp10l #,pow10f,pow10,pow10l
+ .type exp10f,@function
+ .type exp10,@function
+ .type exp10l,@function
+# .type pow10f,@function
+# .type pow10,@function
+# .type pow10l,@function
+exp10f:
+#pow10f:
+ fldl2t
+ fmuls 4(%esp)
+ jmp __finexp
+exp10:
+#pow10:
+ fldl2t
+ fmull 4(%esp)
+ jmp __finexp
+exp10l:
+#pow10l:
+ fldl2t
+ fldt 4(%esp)
+ fmulp
+ jmp __finexp
+
+# exp(x)-1
+.global expm1f,expm1,expm1l
+ .type expm1f,@function
+ .type expm1,@function
+ .type expm1l,@function
+expm1f:
+ fldl2e
+ fmuls 4(%esp)
+ jmp finem1
+expm1l:
+ fldl2e
+ fldt 4(%esp)
+ fmulp
+ jmp finem1
+expm1:
+ fldl2e
+ fmull 4(%esp)
+# -1 <= st <= 1 ?
+finem1:
+ fst %st(1) # st(1)=st(0)
+ fabs
+ fld1
+ fcompp
+ fstsw %ax
+ sahf
+# |x| >= 1
+ jc 1f
+ f2xm1
+ ret
+1: call __finexp
+ fld1
+ fsubrp
+ ret
+
+# sinh(x)=(exp(x)-exp(-x))/2
+# cosh(x)=(exp(x)+exp(-x))/2
+# tanh(x)=sinh(x)/cosh(x)
+.global sinhf,sinh,sinhl
+ .type sinhf,@function
+ .type sinh,@function
+ .type sinhl,@function
+sinhf:
+ fldl2e
+ fmuls 4(%esp)
+ jmp finsinh
+sinh:
+ fldl2e
+ fmull 4(%esp)
+finsinh:
+ call __finexp
+ fld1
+ fdiv %st(1),%st(0) # st(0)=1/exp(x), st(1)=exp(x)
+ fsubrp %st(0),%st(1)
+ pushl $0x3f000000 # 1/2
+ flds (%esp)
+ popl %eax
+ fmulp
+ ret
+
+sinhl:
+ fldl2e
+ fldt 4(%esp)
+ fmulp
+ jmp finsinh
+
+.global coshf,cosh,coshl
+ .type coshf,@function
+ .type cosh,@function
+ .type coshl,@function
+coshf:
+ fldl2e
+ fmuls 4(%esp)
+ jmp fincosh
+cosh:
+ fldl2e
+ fmull 4(%esp)
+fincosh:
+ call __finexp
+ fld1
+ fdiv %st(1),%st(0) # st(0)=1/exp(x), st(1)=exp(x)
+ faddp %st,%st(1)
+ pushl $0x3f000000 # 1/2
+ flds (%esp)
+ popl %eax
+ fmulp
+ ret
+
+coshl:
+ fldl2e
+ fldt 4(%esp)
+ fmulp
+ jmp fincosh
+
+.global tanhf,tanh,tanhl
+ .type tanhf,@function
+ .type tanh,@function
+ .type tanhl,@function
+tanhf:
+ fldl2e
+ fmuls 4(%esp)
+ call __finexp
+ jmp fintanh
+tanh:
+ fldl2e
+ fmull 4(%esp)
+ call __finexp
+fintanh:
+ fld1
+ fdiv %st(1),%st # st(0)=1/exp(x), st(1)=exp(x)
+ fst %st(2) # st(2)=1/exp(x)
+ fadd %st(1),%st(0)
+ fstp %st(3) # st(2)=exp(x)+exp(-x), st(1)=exp(-x), st(0)=exp(x)
+ fsubp # st(1)=exp(x)+exp(-x), st(0)=exp(x)-exp(-x)
+ fdivp
+ ret
+
+tanhl:
+ fldl2e
+ fldt 4(%esp)
+ fmulp
+ call __finexp
+ jmp fintanh
+
+.global hypotf,hypot,hypotl # ,__hypot
+ .type hypotf,@function
+ .type hypot,@function
+ .type hypotl,@function
+# .type __hypot,@function
+hypotf:
+ flds 8(%esp)
+ flds 4(%esp)
+ jmp __hypot
+hypotl:
+ fldt 16(%esp)
+ fldt 4(%esp)
+ jmp __hypot
+hypot:
+ fldl 12(%esp)
+ fldl 4(%esp)
+__hypot:
+ fmul %st(0),%st(0)
+ fxch
+ fmul %st(0),%st(0)
+ faddp
+ fsqrt
+ ret
+
+.global log1pf,log1p,log1pl
+ .type log1pf,@function
+ .type log1p,@function
+ .type log1pl,@function
+log1pf:
+ flds 4(%esp)
+ jmp __log1p
+log1pl:
+ fldt 4(%esp)
+ jmp __log1p
+log1p:
+ fldl 4(%esp)
+__log1p:
+# Sprawdzenie zakresu parametru
+ fst %st(1)
+ pushl $0x3ed413cc # sqrt(2)-1-2^(-25)
+ fabs
+ flds (%esp)
+ popl %eax
+ fcompp # porownanie
+ fstsw %ax
+ fldln2
+ fxch
+ sahf
+# |x| >= sqrt(2)-1
+ jc 1f
+ fyl2xp1
+ ret
+1: fld1 # x = x + 1
+ faddp
+ fyl2x
+ ret
+
+.global log10f,log10,log10l
+ .type log10f,@function
+ .type log10,@function
+ .type log10l,@function
+log10f:
+ fldlg2
+ flds 4(%esp)
+ fyl2x
+ ret
+log10l:
+ fldlg2
+ fldt 4(%esp)
+ fyl2x
+ ret
+log10:
+ fldlg2
+ fldl 4(%esp)
+ fyl2x
+ ret
+
+.global log2f,log2,log2l
+ .type log2f,@function
+ .type log2,@function
+ .type log2l,@function
+log2f:
+ fld1
+ flds 4(%esp)
+ fyl2x
+ ret
+log2l:
+ fld1
+ fldt 4(%esp)
+ fyl2x
+ ret
+log2:
+ fld1
+ fldl 4(%esp)
+ fyl2x
+ ret
+
+.global fmaf,fma,fmal
+ .type fmaf,@function
+ .type fma,@function
+ .type fmal,@function
+fmaf:
+ flds 4(%esp)
+ fmuls 8(%esp)
+ fadds 12(%esp)
+ ret
+fma:
+ fldl 4(%esp)
+ fmull 12(%esp)
+ faddl 20(%esp)
+ ret
+fmal:
+ fldt 4(%esp)
+ fldt 16(%esp)
+ fmulp %st,%st(1)
+ fldt 28(%esp)
+ faddp %st,%st(1)
+ ret
+
+.global asinhf,asinh,asinhl
+ .type asinhf,@function
+ .type asinh,@function
+ .type asinhl,@function
+asinhf:
+ flds 4(%esp)
+ jmp __asinh
+asinh:
+ fldl 4(%esp)
+__asinh:
+ fld %st(0)
+ fmul %st(0),%st(0)
+ fld1
+ faddp %st(0),%st(1)
+finasch:
+ fsqrt
+ faddp %st(0),%st(1)
+ fldln2
+ fxch
+ fyl2x
+ ret
+asinhl:
+ fldt 4(%esp)
+ jmp __asinh
+
+.global acoshf,acosh,acoshl
+ .type acoshf,@function
+ .type acosh,@function
+ .type acoshl,@function
+acoshf:
+ flds 4(%esp)
+ jmp __acosh
+acosh:
+ fldl 4(%esp)
+__acosh:
+ fld %st(0)
+ fmul %st(0),%st(0)
+ fld1
+ fsubrp %st(0),%st(1) # st1=st1-st0; pop
+ jmp finasch
+acoshl:
+ fldt 4(%esp)
+ jmp __acosh
+
+.global atanhf,atanh,atanhl
+ .type atanhf,@function
+ .type atanh,@function
+ .type atanhl,@function
+atanhf:
+ flds 4(%esp)
+ jmp __atanh
+atanh:
+ fldl 4(%esp)
+__atanh:
+ fst %st(1)
+ fld1 # st0=1, st1=x, st2=x
+ fadd %st(0),%st(2) # st0=1, st1=x, st2=x+1
+ fsubp %st(0),%st(1) # st0=1-x, st1=x+1
+ fdivrp %st(0),%st(1)
+ fsqrt
+ fldln2
+ fxch
+ fyl2x
+ ret
+atanhl:
+ fldt 4(%esp)
+ jmp __atanh
+
+.global dremf,drem,dreml
+ .type dremf,@function
+ .type drem,@function
+ .type dreml,@function
+dremf:
+ flds 8(%esp) # y
+ flds 4(%esp) # x
+ jmp __drem
+drem:
+ fldl 12(%esp)
+ fldl 4(%esp)
+__drem:
+ fprem1
+ fstsw %ax
+ sahf
+ jp __drem
+ ret
+
+dreml:
+ fldt 16(%esp)
+ fldt 4(%esp)
+ jmp __drem
+
+# |ret| = |x|, sign(ret) = sign(y)
+.global copysignf,copysign,copysignl
+ .type copysignf,@function
+ .type copysign,@function
+ .type copysignl,@function
+copysignf:
+ flds 4(%esp) # x
+ flds 8(%esp) # y
+ jmp __copysign
+copysign:
+ fldl 4(%esp)
+ fldl 12(%esp)
+__copysign:
+ fmul %st(1),%st # st = x*y
+ ftst
+ fstsw %ax
+ fincstp
+ sahf
+ jnc 1f
+ fchs
+1: ret
+
+copysignl:
+ fldt 4(%esp)
+ fldt 16(%esp)
+ jmp __copysign
+
+.global fdimf,fdim,fdiml
+ .type fdimf,@function
+ .type fdim,@function
+ .type fdiml,@function
+fdimf:
+ flds 4(%esp)
+ fsubl 12(%esp)
+ jmp __fdim
+fdim:
+ fldl 4(%esp)
+ fsubl 12(%esp)
+__fdim:
+ fstsw %ax
+ sahf
+ jnc 1f
+ fldz
+1: ret
+fdiml:
+ fldt 4(%esp)
+ fldt 16(%esp)
+ fsubp
+ jmp __fdim
+
+
+.global truncf,trunc,truncl
+ .type truncf,@function
+ .type trunc,@function
+ .type truncl,@function
+
+truncf:
+ flds 4(%esp)
+ movb $0x0c,%ah
+ jmp __flcetr
+
+trunc:
+ fldl 4(%esp)
+ movb $0x0c,%ah
+ jmp __flcetr
+
+truncl:
+ fldt 4(%esp)
+ movb $0x0c,%ah
+ jmp __flcetr
+
+.global frexpf,frexp,frexpl
+ .type frexpf,@function
+ .type frexp,@function
+ .type frexpl,@function
+
+frexpf:
+ flds 4(%esp)
+ movl 8(%esp),%eax
+ jmp __frexp
+
+frexp:
+ fldl 4(%esp)
+ movl 12(%esp),%eax
+__frexp:
+ fxtract
+ fxch
+ fistpl (%eax)
+ pushl $0x3f000000 # 1/2
+ fmuls (%esp)
+ incl (%eax)
+ popl %eax
+ ret
+
+frexpl:
+ fldt 4(%esp)
+ movl 16(%esp),%eax
+ jmp __frexp
+
+.global logbf,logb,logbl
+ .type logbf,@function
+ .type logb,@function
+ .type logbl,@function
+
+#logbf: flds 4(%esp)
+# fxtract
+# fxch
+# ret
+
+#logb: fldl 4(%esp)
+# fxtract
+# fxch
+# ret
+
+#logbl: fldt 4(%esp)
+# fxtract
+# fxch
+# ret
+
+.global ilogbf,ilogb,ilogbl
+ .type ilogbf,@function
+ .type ilogb,@function
+ .type ilogbl,@function
+
+logbf:
+ilogbf: flds 4(%esp)
+ jmp __ilogb
+
+logb:
+ilogb: fldl 4(%esp)
+__ilogb:
+ fxtract
+ pushl %eax
+ fxch
+ fistl (%esp)
+ popl %eax
+ ret
+
+logbl:
+ilogbl: fldt 4(%esp)
+ jmp __ilogb
+
diff --git a/mdk-stage1/dietlibc/i386/listen.S b/mdk-stage1/dietlibc/i386/listen.S
new file mode 100644
index 000000000..a0879be37
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/listen.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(listen,LISTEN)
diff --git a/mdk-stage1/dietlibc/i386/log.S b/mdk-stage1/dietlibc/i386/log.S
new file mode 100644
index 000000000..0d42c9297
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/log.S
@@ -0,0 +1,26 @@
+.text
+
+.global logf,log,logl
+ .type logf,@function
+ .type log,@function
+ .type logl,@function
+logf:
+ fldln2
+ flds 4(%esp)
+ fyl2x
+ ret
+logl:
+ fldln2
+ fldt 4(%esp)
+ fyl2x
+ ret
+log:
+ fldln2
+ fldl 4(%esp)
+ fyl2x
+ ret
+
+.Lende:
+.size log,.Lende-log
+.size logl,.Lende-logl
+.size logf,.Lende-logf
diff --git a/mdk-stage1/dietlibc/i386/log10.S b/mdk-stage1/dietlibc/i386/log10.S
new file mode 100644
index 000000000..dcd08cc3f
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/log10.S
@@ -0,0 +1,11 @@
+.text
+.type log10,@function
+.global log10
+log10:
+ fldlg2
+ fldl 4(%esp)
+ fyl2x
+ ret
+
+.ende:
+.size log10,.ende-log10
diff --git a/mdk-stage1/dietlibc/i386/log1p.S b/mdk-stage1/dietlibc/i386/log1p.S
new file mode 100644
index 000000000..4dd2d58b4
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/log1p.S
@@ -0,0 +1,12 @@
+.text
+.type log1p,@function
+.global log1p
+log1p:
+ fldln2
+ fldl 4(%esp)
+ fyl2xp1
+ ret
+
+.ende:
+.size log1p,.ende-log1p
+
diff --git a/mdk-stage1/dietlibc/i386/log2.S b/mdk-stage1/dietlibc/i386/log2.S
new file mode 100644
index 000000000..80e99a8c9
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/log2.S
@@ -0,0 +1,11 @@
+.text
+.type log2,@function
+.global log2
+log2:
+ fld1
+ fldl 4(%esp)
+ fyl2x
+ ret
+
+.ende:
+.size log2,.ende-log2
diff --git a/mdk-stage1/dietlibc/i386/ltostr.S b/mdk-stage1/dietlibc/i386/ltostr.S
new file mode 100644
index 000000000..ddf85a4f6
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/ltostr.S
@@ -0,0 +1,62 @@
+/*
+ Copyright (C) 2002 Thomas M. Ogrisegg
+
+ __ltostr.S -- convert an integer into a string
+
+ %eax = dividend
+ %ebx = divisor
+ %ecx = size of output-buffer
+ %edi = output-buffer
+ %ebp = if uppercase is set, then %ebp is 'A'-10 else %ebp is 'a'-10
+
+*/
+
+.text
+.globl __ltostr
+__ltostr:
+ pushl %esi
+ pushl %edi # destination
+ pushl %ebp
+ pushl %ebx
+ movl %esp, %eax
+ movl 0x14(%eax), %edi
+ movl 0x18(%eax), %ecx # size
+ movl 0x20(%eax), %ebx # divisor
+ movl 0x1c(%eax), %eax # dividend
+ decl %ecx
+ movl %ecx, %esi
+ movl $('A'-0xa), %ebp
+ xorl %edx, %edx # must be 0 -- used by idiv
+ cmpl $0x0, 36(%esp) # check for uppercase
+ jnz .Lnext
+ addl $0x20, %ebp # set lowercase
+.Lnext:
+ idiv %ebx, %eax
+ cmpb $0x9, %dl
+ jg .Lnext2
+ addb $'0', %dl
+ jmp .Lstos
+.Lnext2:
+ addl %ebp, %edx
+.Lstos:
+ movb %dl, (%edi, %ecx)
+ xorl %edx, %edx
+ decl %ecx
+ jz .Lout
+ orl %eax, %eax
+ jnz .Lnext
+.Lout:
+ cld
+ movl %esi, %ebx
+ leal 1(%edi, %ecx), %esi
+ subl %ebx, %ecx
+ negl %ecx
+ movl %ecx, %eax
+ repnz movsb
+ movb $0x0, (%edi)
+ popl %ebx
+ popl %ebp
+ popl %edi
+ popl %esi
+ ret
+.size __ltostr, . - __ltostr
diff --git a/mdk-stage1/dietlibc/i386/mcount.S b/mdk-stage1/dietlibc/i386/mcount.S
new file mode 100644
index 000000000..11feed5e0
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/mcount.S
@@ -0,0 +1,44 @@
+/*
+ Copyright (C) 2001, 2002 Thomas M. Ogrisegg
+
+ This is free software. You can redistribute and
+ modify it under the terms of the GNU General Public
+ Public License.
+
+ mcount.S
+ i386 assembler implementation of mcount
+*/
+
+/* .section ".profile" */
+.text
+.globl mcount
+.type mcount,@function
+mcount:
+/*
+ save all generic registers which
+ might be used by __mcount, but aren't
+ automatically saved
+ */
+ pushl %eax
+ pushl %ecx
+ pushl %edx
+
+/* push the instruction pointer of the calling function */
+ pushl 0xc(%esp)
+
+/* push the instruction pointer of the
+ function that called the calling function */
+ pushl 0x4(%ebp)
+
+ call __mcount
+
+/* clean up stack */
+ addl $0x8, %esp
+
+/* restore the previously saved registers */
+ popl %edx
+ popl %ecx
+ popl %eax
+ ret
+
+.size mcount,.-mcount
diff --git a/mdk-stage1/dietlibc/i386/md5asm.S b/mdk-stage1/dietlibc/i386/md5asm.S
new file mode 100644
index 000000000..a99a92934
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/md5asm.S
@@ -0,0 +1,300 @@
+#define S11 7
+#define S12 12
+#define S13 17
+#define S14 22
+#define S21 5
+#define S22 9
+#define S23 14
+#define S24 20
+#define S31 4
+#define S32 11
+#define S33 16
+#define S34 23
+#define S41 6
+#define S42 10
+#define S43 15
+#define S44 21
+
+
+// #define F(x, y, z) (x & y) + (~x & z) = x&y + (z - z&x) = z + y&x - z&x
+//#define F(x, y, z) movl x,%ebx; movl x,%eax; notl %ebx; andl y,%eax; andl z,%ebx; addl %ebx,%eax
+#define F(x, y, z) movl y,%eax; movl z,%ebx; andl x,%eax; andl x,%ebx; addl z,%eax; subl %ebx,%eax
+
+// #define G(x, y, z) (x & z) + (y & ~z) = x&z + (y - y&z) = y + x&z - y&z
+#define G(x, y, z) movl z,%ebx; movl z,%eax; notl %ebx; andl x,%eax; andl y,%ebx; addl %ebx,%eax
+//#define G(x, y, z) movl x,%eax; movl y,%ebx; andl z,%eax; andl z,%ebx; addl y,%eax; subl %ebx,%eax
+//#define G(x, y, z) movl z,%eax; movl z,%ebx; andl x,%eax; andl y,%ebx; addl y,%eax; subl %ebx,%eax
+
+// #define H(x, y, z) x ^ y ^ z
+#define H(x, y, z) movl z,%eax; xorl y,%eax; xorl x,%eax
+
+// #define I(x, y, z) y ^ (x | ~z)
+#define I(x, y, z) movl z,%eax; notl %eax; orl x,%eax; xorl y,%eax
+
+
+// #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
+#define ROTATE_LEFT(x, n) roll $n,x
+
+// #define FF(a, b, c, d, x, s, ac) { (a) += F (b, c, d) + (x) + (word)(ac); (a) = ROTATE_LEFT (a, s); (a) += (b); }
+// #define GG(a, b, c, d, x, s, ac) { (a) += G (b, c, d) + (x) + (word)(ac); (a) = ROTATE_LEFT (a, s); (a) += (b); }
+// #define HH(a, b, c, d, x, s, ac) { (a) += H (b, c, d) + (x) + (word)(ac); (a) = ROTATE_LEFT (a, s); (a) += (b); }
+// #define II(a, b, c, d, x, s, ac) { (a) += I (b, c, d) + (x) + (word)(ac); (a) = ROTATE_LEFT (a, s); (a) += (b); }
+
+#define FF(a, b, c, d, x, s, ac) addl x, a; addl $ac,a; F (b, c, d); addl %eax,a; roll $s,a; addl b,a
+#define GG(a, b, c, d, x, s, ac) addl x, a; addl $ac,a; G (b, c, d); addl %eax,a; roll $s,a; addl b,a
+#define HH(a, b, c, d, x, s, ac) addl x, a; addl $ac,a; H (b, c, d); addl %eax,a; roll $s,a; addl b,a
+#define II(a, b, c, d, x, s, ac) addl x, a; addl $ac,a; I (b, c, d); addl %eax,a; roll $s,a; addl b,a
+
+
+// // x is ecx
+// word a = state [0]; // a is edx
+// word b = state [1]; // b is esi
+// word c = state [2]; // c is edi
+// word d = state [3]; // d is ebp
+
+#define X(n) 4*(n)(%ecx)
+#define X0 (%ecx)
+#define a %edx
+#define b %esi
+#define c %edi
+#define d %ebp
+
+
+
+/* MD5 basic transformation: Transforms state based on data block */
+
+// void __MD5Transform ( word state[4], const word* x, size_t repeat )
+
+.text
+.type __MD5Transform, @function
+.align 32
+.global __MD5Transform
+
+ .align 32
+.Lrepeat:
+
+ /* Round 1 */
+ FF (a, b, c, d, X0 , S11, 0xd76aa478); /* 1 */
+ FF (d, a, b, c, X( 1), S12, 0xe8c7b756); /* 2 */
+ FF (c, d, a, b, X( 2), S13, 0x242070db); /* 3 */
+ FF (b, c, d, a, X( 3), S14, 0xc1bdceee); /* 4 */
+ FF (a, b, c, d, X( 4), S11, 0xf57c0faf); /* 5 */
+ FF (d, a, b, c, X( 5), S12, 0x4787c62a); /* 6 */
+ FF (c, d, a, b, X( 6), S13, 0xa8304613); /* 7 */
+ FF (b, c, d, a, X( 7), S14, 0xfd469501); /* 8 */
+ FF (a, b, c, d, X( 8), S11, 0x698098d8); /* 9 */
+ FF (d, a, b, c, X( 9), S12, 0x8b44f7af); /* 10 */
+ FF (c, d, a, b, X(10), S13, 0xffff5bb1); /* 11 */
+ FF (b, c, d, a, X(11), S14, 0x895cd7be); /* 12 */
+ FF (a, b, c, d, X(12), S11, 0x6b901122); /* 13 */
+ FF (d, a, b, c, X(13), S12, 0xfd987193); /* 14 */
+ FF (c, d, a, b, X(14), S13, 0xa679438e); /* 15 */
+ FF (b, c, d, a, X(15), S14, 0x49b40821); /* 16 */
+
+ /* Round 2 */
+ GG (a, b, c, d, X( 1), S21, 0xf61e2562); /* 17 */
+ GG (d, a, b, c, X( 6), S22, 0xc040b340); /* 18 */
+ GG (c, d, a, b, X(11), S23, 0x265e5a51); /* 19 */
+ GG (b, c, d, a, X0 , S24, 0xe9b6c7aa); /* 20 */
+ GG (a, b, c, d, X( 5), S21, 0xd62f105d); /* 21 */
+ GG (d, a, b, c, X(10), S22, 0x02441453); /* 22 */
+ GG (c, d, a, b, X(15), S23, 0xd8a1e681); /* 23 */
+ GG (b, c, d, a, X( 4), S24, 0xe7d3fbc8); /* 24 */
+ GG (a, b, c, d, X( 9), S21, 0x21e1cde6); /* 25 */
+ GG (d, a, b, c, X(14), S22, 0xc33707d6); /* 26 */
+ GG (c, d, a, b, X( 3), S23, 0xf4d50d87); /* 27 */
+ GG (b, c, d, a, X( 8), S24, 0x455a14ed); /* 28 */
+ GG (a, b, c, d, X(13), S21, 0xa9e3e905); /* 29 */
+ GG (d, a, b, c, X( 2), S22, 0xfcefa3f8); /* 30 */
+ GG (c, d, a, b, X( 7), S23, 0x676f02d9); /* 31 */
+ GG (b, c, d, a, X(12), S24, 0x8d2a4c8a); /* 32 */
+
+ /* Round 3 */
+ HH (a, b, c, d, X( 5), S31, 0xfffa3942); /* 33 */
+ HH (d, a, b, c, X( 8), S32, 0x8771f681); /* 34 */
+ HH (c, d, a, b, X(11), S33, 0x6d9d6122); /* 35 */
+ HH (b, c, d, a, X(14), S34, 0xfde5380c); /* 36 */
+ HH (a, b, c, d, X( 1), S31, 0xa4beea44); /* 37 */
+ HH (d, a, b, c, X( 4), S32, 0x4bdecfa9); /* 38 */
+ HH (c, d, a, b, X( 7), S33, 0xf6bb4b60); /* 39 */
+ HH (b, c, d, a, X(10), S34, 0xbebfbc70); /* 40 */
+ HH (a, b, c, d, X(13), S31, 0x289b7ec6); /* 41 */
+ HH (d, a, b, c, X0 , S32, 0xeaa127fa); /* 42 */
+ HH (c, d, a, b, X( 3), S33, 0xd4ef3085); /* 43 */
+ HH (b, c, d, a, X( 6), S34, 0x04881d05); /* 44 */
+ HH (a, b, c, d, X( 9), S31, 0xd9d4d039); /* 45 */
+ HH (d, a, b, c, X(12), S32, 0xe6db99e5); /* 46 */
+ HH (c, d, a, b, X(15), S33, 0x1fa27cf8); /* 47 */
+ HH (b, c, d, a, X( 2), S34, 0xc4ac5665); /* 48 */
+
+ /* Round 4 */
+ II (a, b, c, d, X0 , S41, 0xf4292244); /* 49 */
+ II (d, a, b, c, X( 7), S42, 0x432aff97); /* 50 */
+ II (c, d, a, b, X(14), S43, 0xab9423a7); /* 51 */
+ II (b, c, d, a, X( 5), S44, 0xfc93a039); /* 52 */
+ II (a, b, c, d, X(12), S41, 0x655b59c3); /* 53 */
+ II (d, a, b, c, X( 3), S42, 0x8f0ccc92); /* 54 */
+ II (c, d, a, b, X(10), S43, 0xffeff47d); /* 55 */
+ II (b, c, d, a, X( 1), S44, 0x85845dd1); /* 56 */
+ II (a, b, c, d, X( 8), S41, 0x6fa87e4f); /* 57 */
+ II (d, a, b, c, X(15), S42, 0xfe2ce6e0); /* 58 */
+ II (c, d, a, b, X( 6), S43, 0xa3014314); /* 59 */
+ II (b, c, d, a, X(13), S44, 0x4e0811a1); /* 60 */
+ II (a, b, c, d, X( 4), S41, 0xf7537e82); /* 61 */
+ II (d, a, b, c, X(11), S42, 0xbd3af235); /* 62 */
+ II (c, d, a, b, X( 2), S43, 0x2ad7d2bb); /* 63 */
+ II (b, c, d, a, X( 9), S44, 0xeb86d391); /* 64 */
+
+// state [0] += a;
+// state [1] += b;
+// state [2] += c;
+// state [3] += d;
+
+ addl $64,%ecx
+
+ movl 4+32(%esp),%eax // state
+ addl (%eax),a
+ addl 4(%eax),b
+ addl 8(%eax),c
+ addl 12(%eax),d
+ movl a, (%eax)
+ movl b, 4(%eax)
+ movl c, 8(%eax)
+ movl d,12(%eax)
+
+.Lstart:
+ decl 12+32(%esp)
+ jns .Lrepeat
+
+ popal
+ ret
+
+__MD5Transform:
+__MD5TransformLocal:
+ pushal
+ movl 8+32(%esp),%ecx // x
+ movl 4+32(%esp),%eax // state
+ movl (%eax),a
+ movl 4(%eax),b
+ movl 8(%eax),c
+ movl 12(%eax),d
+ jmp .Lstart
+
+.Lende:
+.size __MD5Transform, .Lende-__MD5Transform
+
+.type MD5Init,@function
+.global MD5Init
+
+MD5Init:
+ movl 4(%esp), %ecx
+ xorl %eax,%eax
+ movl $0x67452301, (%ecx)
+ movl $0xefcdab89, 4(%ecx)
+ movl $0x98badcfe, 8(%ecx)
+ movl $0x10325476, 12(%ecx)
+ movl %eax, 16(%ecx)
+ movl %eax, 20(%ecx)
+ ret
+
+
+.global MD5Update
+.type MD5Update,@function
+
+
+// void MD5Update ( MD5_CTX* context, const byte* input, size_t inputBytes )
+
+#define CONTEXT 4+32(%esp)
+#define INPUT 8+32(%esp)
+#define INPUTBYTES 12+32(%esp)
+
+#define COUNT 16(%ebx)
+#define BUFFER 24(%ebx)
+
+
+MD5Update:
+ pushal
+ cld
+ movl CONTEXT, %ebx
+
+// ByteIndex = (context->count[0] >> 3) & 0x3F;
+
+ movl COUNT, %ebp
+ shrl $3, %ebp
+ andl $63,%ebp // ebp = ByteIndex
+
+// if ( (context->count[0] += inputBytes << 3 ) < (inputBytes << 3) )
+// context->count[1]++;
+// context->count[1] += inputBytes >> (32-3);
+
+ movl $8, %eax
+ mull INPUTBYTES
+ addl %eax, 0+COUNT
+ adcl %edx, 4+COUNT
+
+// partLen = 64 - ByteIndex;
+
+ movl $64, %eax
+ subl %ebp, %eax // eax = partLen
+
+// i = 0;
+// if ( partLen <= inputBytes ) {
+
+ xorl %ecx,%ecx // ecx = i
+ cmpl INPUTBYTES, %eax
+ ja .Lende2
+
+// memcpy ( context->buffer + ByteIndex, input, partLen );
+
+ leal 24(%ebx,%ebp,1), %edi
+ movl INPUT, %esi
+ movl %eax, %ecx
+ rep movsb
+
+// MD5Transform ( context->state, context->buffer, 1 );
+
+ pushl $1
+ leal BUFFER, %ecx
+ pushl %ecx
+ push %ebx
+ call __MD5TransformLocal
+
+// len = (inputBytes - partLen) / 64;
+
+ movl 12+INPUTBYTES, %ecx
+ subl %eax, %ecx
+ shrl $6, %ecx
+
+// MD5Transform ( context->state, input+partLen, len );
+
+ pushl %ecx
+ pushl %esi
+ pushl %ebx
+ call __MD5TransformLocal
+ addl $24,%esp
+
+// i = partLen + 64 * len;
+// ByteIndex = 0;
+
+ shll $6, %ecx
+ addl %eax, %ecx
+ xorl %ebp, %ebp
+
+.Lende2:
+
+// }
+// memcpy ( context->buffer + ByteIndex, input + i, inputBytes - i );
+
+ movl INPUT, %esi
+ addl %ecx, %esi
+
+ negl %ecx
+ addl INPUTBYTES, %ecx
+
+ leal 24(%ebx,%ebp,1), %edi
+ rep movsb
+
+ popal
+ ret
+
+
diff --git a/mdk-stage1/dietlibc/i386/memccpy.S b/mdk-stage1/dietlibc/i386/memccpy.S
new file mode 100644
index 000000000..0b7dce49e
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/memccpy.S
@@ -0,0 +1,39 @@
+/*
+ Copyright (C) 2002 Thomas M. Ogrisegg
+
+ This is free software. You can redistribute and
+ modify it under the terms of the GNU General Public
+ Public License.
+
+ memccpy.S
+ i386 assembler implementation of memccpy(3)
+*/
+
+.text
+.global memccpy
+.type memccpy,@function
+memccpy:
+ pushl %esi
+ pushl %edi
+
+ movl %esp, %ecx
+ movl 0x0c(%ecx), %edi
+ movl 0x10(%ecx), %esi
+ movb 0x14(%ecx), %dl
+ movl 0x18(%ecx), %ecx
+ cld
+.Lloop:
+ lodsb
+ stosb
+ cmp %al, %dl
+ jz .Lout
+ decl %ecx
+ jnz .Lloop
+ xorl %edi, %edi
+.Lout:
+ movl %edi, %eax
+ popl %edi
+ popl %esi
+ ret
+.Lende:
+.size memccpy,.Lende-memccpy
diff --git a/mdk-stage1/dietlibc/i386/memchr.S b/mdk-stage1/dietlibc/i386/memchr.S
new file mode 100644
index 000000000..7d04f990b
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/memchr.S
@@ -0,0 +1,24 @@
+.text
+.align 0
+.global memchr
+.type memchr,@function
+memchr:
+ pushl %edi
+ movl 8(%esp),%edi
+ movl 12(%esp),%eax
+ movl 16(%esp),%ecx
+ cld
+ jecxz .Lnotfound
+
+ repne scasb
+
+ je .Lfound
+.Lnotfound:
+ xorl %edi, %edi
+ incl %edi
+.Lfound:
+ movl %edi, %eax
+ decl %eax
+
+ popl %edi
+ ret
diff --git a/mdk-stage1/dietlibc/i386/memcmp.S b/mdk-stage1/dietlibc/i386/memcmp.S
new file mode 100644
index 000000000..aa6d55f23
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/memcmp.S
@@ -0,0 +1,26 @@
+.text
+.align 0
+.global memcmp
+.type memcmp,@function
+memcmp:
+ xorl %eax,%eax
+ orl 12(%esp),%eax
+ jz .Lempty
+ pushl %esi
+ pushl %edi
+ movl 12(%esp),%esi
+ movl 16(%esp),%edi
+ movl %eax,%ecx
+
+ rep cmpsb
+
+ decl %esi
+ decl %edi
+ lodsb
+ subb (%edi), %al
+ movsx %al, %eax
+
+ popl %edi
+ popl %esi
+.Lempty:
+ ret
diff --git a/mdk-stage1/dietlibc/i386/memcpy.S b/mdk-stage1/dietlibc/i386/memcpy.S
new file mode 100644
index 000000000..cbe74459f
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/memcpy.S
@@ -0,0 +1,16 @@
+.text
+.align 0
+.global memcpy
+.type memcpy,@function
+memcpy:
+ pushl %esi
+ pushl %edi
+ movl 12(%esp),%edi
+ movl 16(%esp),%esi
+ movl 20(%esp),%ecx
+ movl %edi, %eax
+ cld
+ rep movsb
+ popl %edi
+ popl %esi
+ ret
diff --git a/mdk-stage1/dietlibc/i386/memset.S b/mdk-stage1/dietlibc/i386/memset.S
new file mode 100644
index 000000000..472390b84
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/memset.S
@@ -0,0 +1,15 @@
+.text
+.align 0
+.global memset
+.type memset,@function
+memset:
+ pushl %edi
+ movl 8(%esp),%edi
+ movl 12(%esp),%eax
+ movl 16(%esp),%ecx
+ cld
+ pushl %edi
+ rep stosb
+ popl %eax
+ popl %edi
+ ret
diff --git a/mdk-stage1/dietlibc/i386/mmap.S b/mdk-stage1/dietlibc/i386/mmap.S
new file mode 100644
index 000000000..c824aa037
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/mmap.S
@@ -0,0 +1,14 @@
+#include "syscalls.h"
+
+.text
+.global mmap
+.type mmap,@function
+mmap:
+ mov $__NR_mmap,%al
+ lea 0x4(%esp,1),%edx
+ push %edx
+ call __unified_syscall
+ pop %ecx
+ ret
+.Lende3:
+.size mmap,.Lende3-mmap
diff --git a/mdk-stage1/dietlibc/i386/mmap64.S b/mdk-stage1/dietlibc/i386/mmap64.S
new file mode 100644
index 000000000..421325260
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/mmap64.S
@@ -0,0 +1,63 @@
+#include <dietfeatures.h>
+#include <syscalls.h>
+#include <errno.h>
+
+#ifdef __DYN_LIB
+#ifndef WANT_THREAD_SAFE
+#define WANT_THREAD_SAFE
+#endif
+#endif
+
+.text
+.global mmap64
+.type mmap64,@function
+mmap64:
+/* man is this ugly! */
+ push %ebp
+ push %edi
+ push %esi
+ push %ebx
+ movl %esp, %edi
+ movl 0x28(%edi), %eax
+ movl 0x2c(%edi), %edx
+ testl $0xfff, %eax /* offset in pages */
+ jnz .Leinval
+ shrdl $12, %edx, %eax
+ shrl $12, %edx
+ jnz .Leinval
+ movl %eax, %ebp
+ movl 0x14(%edi),%ebx
+ movl 0x18(%edi),%ecx
+ movl 0x1c(%edi),%edx
+ movl 0x20(%edi),%esi
+ movl 0x24(%edi),%edi
+ movl $__NR_mmap2,%eax
+ int $0x80
+ cmp $-124,%eax
+ jbe .Lnoerror
+ neg %eax
+.Lerror:
+#ifdef WANT_THREAD_SAFE
+ movl %eax,%ebx
+#ifdef __DYN_LIB
+ call __errno_location@PLT
+#else
+ call __errno_location
+#endif
+ movl %ebx,(%eax)
+ orl $-1,%eax
+#else
+ mov %eax,errno
+ sbb %eax,%eax # eax = eax - eax - CY = -1
+#endif
+.Lnoerror:
+ pop %ebx
+ pop %esi
+ pop %edi
+ pop %ebp
+ ret
+.Leinval:
+ movl $EINVAL,%eax
+ jmp .Lerror
+.Lende2:
+.size mmap64,.Lende2-mmap64
diff --git a/mdk-stage1/dietlibc/i386/poly.S b/mdk-stage1/dietlibc/i386/poly.S
new file mode 100644
index 000000000..d8be7d7f5
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/poly.S
@@ -0,0 +1,24 @@
+
+.text
+.global __poly
+.type __poly,@function
+
+
+#
+# double __poly ( double x, int n, const double* c );
+#
+
+__poly:
+ movl 16(%esp),%eax
+ movl 12(%esp),%ecx
+ leal (%eax,%ecx,8),%eax
+ fldl 4(%esp)
+ fldz
+.Lloop:
+ fmul %st(1),%st(0)
+ faddl (%eax)
+ addl $-8,%eax
+ decl %ecx
+ jns .Lloop
+ fstp %st(1)
+ ret
diff --git a/mdk-stage1/dietlibc/i386/pow.S b/mdk-stage1/dietlibc/i386/pow.S
new file mode 100644
index 000000000..46562a299
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/pow.S
@@ -0,0 +1,67 @@
+.text
+.global pow
+.type pow,@function
+
+# pow(x,y)
+.global powf,pow,powl
+ .type powf,@function
+ .type pow,@function
+ .type powl,@function
+powf:
+ flds 4(%esp) # x
+ flds 8(%esp) # y
+ jmp .L__pow
+powl:
+ fldt 4(%esp)
+ fldt 16(%esp)
+ jmp .L__pow
+pow:
+ fldl 4(%esp)
+ fldl 12(%esp)
+# x^y; st(0)=y, st(1)=x
+.L__pow:
+ ftst # y = 0 ?
+ fstsw %ax
+ fld1 # st(0)=1, st(1)=y, st(2)=x
+ sahf
+ jz 1f # return 1
+ fcomp %st(1) # y = 1 ?
+ fstsw %ax
+ fxch # st(0)=x, st(1)=y
+ sahf
+ jz 1f # return x
+ ftst # x = 0 ?
+ fstsw %ax
+ sahf
+ jz 1f
+ jnc .Lfinpow # x > 0
+ fxch # st(0)=y, st(1)=x
+ fld %st(0) # st(0)=y, st(1)=y, st(2)=x
+ frndint # st(0)=int(y)
+ fcomp %st(1) # y = int(y)?
+ fstsw %ax
+ fxch
+ sahf
+ jnz .Lfinpow # fyl2x -> st(0) = NaN
+# y even or odd ?
+ fld1
+ fadd %st(0) # st(0) = 2
+ fdivr %st(2),%st(0) # st(0)=st(2)/2
+ frndint
+ fadd %st(0),%st(0)
+ fcomp %st(2) # st(0) = x, st(1) = y
+ fstsw %ax
+ fchs # st(0) = -x
+ sahf
+ jz .Lfinpow # y even
+ call .Lfinpow # y odd
+ fchs
+1: ret
+.Lfinpow:
+ fyl2x
+ jmp __finexp
+
+.Lende:
+.size pow,.Lende-pow
+.size powf,.Lende-powf
+.size powl,.Lende-powl
diff --git a/mdk-stage1/dietlibc/i386/recv.S b/mdk-stage1/dietlibc/i386/recv.S
new file mode 100644
index 000000000..215343ccc
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/recv.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(recv,RECV)
diff --git a/mdk-stage1/dietlibc/i386/recvfrom.S b/mdk-stage1/dietlibc/i386/recvfrom.S
new file mode 100644
index 000000000..a9dde840d
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/recvfrom.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(recvfrom,RECVFROM)
diff --git a/mdk-stage1/dietlibc/i386/recvmsg.S b/mdk-stage1/dietlibc/i386/recvmsg.S
new file mode 100644
index 000000000..cb26e2f08
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/recvmsg.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(recvmsg,RECVMSG)
diff --git a/mdk-stage1/dietlibc/i386/rint.S b/mdk-stage1/dietlibc/i386/rint.S
new file mode 100644
index 000000000..f56ab1f93
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/rint.S
@@ -0,0 +1,23 @@
+.text
+
+.global rintf,rint,rintl
+ .type rintf,@function
+ .type rint,@function
+ .type rintl,@function
+rintf:
+ flds 4(%esp)
+ frndint
+ ret
+rint:
+ fldl 4(%esp)
+ frndint
+ ret
+rintl:
+ fldt 4(%esp)
+ frndint
+ ret
+
+.Lende:
+.size rint,.Lende-rint
+.size rintl,.Lende-rintl
+.size rintf,.Lende-rintf
diff --git a/mdk-stage1/dietlibc/i386/send.S b/mdk-stage1/dietlibc/i386/send.S
new file mode 100644
index 000000000..f2dd7e3d5
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/send.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(send,SEND)
diff --git a/mdk-stage1/dietlibc/i386/sendmsg.S b/mdk-stage1/dietlibc/i386/sendmsg.S
new file mode 100644
index 000000000..484d62e50
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/sendmsg.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(sendmsg,SENDMSG)
diff --git a/mdk-stage1/dietlibc/i386/sendto.S b/mdk-stage1/dietlibc/i386/sendto.S
new file mode 100644
index 000000000..04270f0f0
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/sendto.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(sendto,SENDTO)
diff --git a/mdk-stage1/dietlibc/i386/setjmp.S b/mdk-stage1/dietlibc/i386/setjmp.S
index 9bfecf565..09b266c61 100644
--- a/mdk-stage1/dietlibc/i386/setjmp.S
+++ b/mdk-stage1/dietlibc/i386/setjmp.S
@@ -1,61 +1,40 @@
#include <setjmp.h>
-/* setjmp for i386.
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-.section .rodata
.text
.weak setjmp
+.type setjmp,@function
setjmp:
.globl __setjmp
+.type __setjmp,@function
__setjmp:
- popl %eax /* Pop return address. */
- popl %ecx /* Pop jmp_buf. */
- pushl $0 /* Push zero argument. */
- pushl %ecx /* Push jmp_buf. */
- pushl %eax /* Push back return address. */
+ popl %eax
+ popl %ecx
+ pushl $0
+ pushl %ecx
+ pushl %eax
.globl __sigsetjmp
+.type __sigsetjmp,@function
__sigsetjmp:
- movl 4(%esp), %eax /* User's jmp_buf in %eax. */
+ movl 4(%esp), %eax
+
/* Save registers. */
movl %ebx, (JB_BX*4)(%eax)
movl %esi, (JB_SI*4)(%eax)
movl %edi, (JB_DI*4)(%eax)
movl %ebp, (JB_BP*4)(%eax)
- leal 4(%esp), %ecx /* Save SP as it will be after we return. */
- movl %ecx, (JB_SP*4)(%eax)
+ leal 4(%esp), %edx /* Save SP as it will be after we return. */
movl 0(%esp), %ecx /* Save PC we are returning to now. */
+ movl %edx, (JB_SP*4)(%eax)
movl %ecx, (JB_PC*4)(%eax)
/* Make a tail call to __sigjmp_save; it takes the same args. */
#ifdef PIC
- /* We cannot use the PLT, because it requires that %ebx be set, but
- we can't save and restore our caller's value. Instead, we do an
- indirect jump through the GOT, using for the temporary register
- %ecx, which is call-clobbered. */
- call L(here)
-L(here):
- popl %ecx
- addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ecx
- movl C_SYMBOL_NAME(__sigjmp_save@GOT)(%ecx), %ecx
- jmp *%ecx
+ call 1f
+ addl $_GLOBAL_OFFSET_TABLE_, %ecx
+ jmp *__sigjmp_save@GOT(%ecx)
+1: movl (%esp), %ecx
+ ret
#else
jmp __sigjmp_save
#endif
diff --git a/mdk-stage1/dietlibc/i386/setsockopt.S b/mdk-stage1/dietlibc/i386/setsockopt.S
new file mode 100644
index 000000000..6a81aec82
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/setsockopt.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(setsockopt,SETSOCKOPT)
diff --git a/mdk-stage1/dietlibc/i386/shutdown.S b/mdk-stage1/dietlibc/i386/shutdown.S
new file mode 100644
index 000000000..f9dc707e8
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/shutdown.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(shutdown,SHUTDOWN)
diff --git a/mdk-stage1/dietlibc/i386/sin.S b/mdk-stage1/dietlibc/i386/sin.S
new file mode 100644
index 000000000..404bf5eed
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/sin.S
@@ -0,0 +1,34 @@
+
+.text
+
+.global sinf,sin,sinl
+.type sinf,@function
+.type sin,@function
+.type sinl,@function
+sinf:
+ flds 4(%esp)
+ jmp 1f
+sin:
+ fldl 4(%esp)
+1: fsin
+ fnstsw %ax
+ testb $0x04, %ah
+ je 3f
+ fldpi
+ fadd %st
+ fxch %st(1)
+2: fprem1
+ fnstsw %ax
+ testb $0x04, %ah
+ jne 2b
+ fstp %st(1)
+ fsin
+3: ret
+sinl:
+ fldt 4(%esp)
+ jmp 1b
+
+.ende:
+.size sin,.ende-sin
+.size sinf,.ende-sinf
+.size sinl,.ende-sinl
diff --git a/mdk-stage1/dietlibc/i386/sincos.S b/mdk-stage1/dietlibc/i386/sincos.S
new file mode 100644
index 000000000..7395075f3
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/sincos.S
@@ -0,0 +1,18 @@
+
+.text
+.type sincos,@function
+.global sincos
+
+# void sincos ( double x, double* sinx, double* cosx );
+
+sincos:
+ fldl 4(%esp)
+ fsincos
+ movl 16(%esp),%eax
+ movl 12(%esp),%ecx
+ fstpl (%eax)
+ fstpl (%ecx)
+ ret
+
+.ende:
+.size sincos,.ende-sincos
diff --git a/mdk-stage1/dietlibc/i386/sinh.S b/mdk-stage1/dietlibc/i386/sinh.S
new file mode 100644
index 000000000..98f7ee752
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/sinh.S
@@ -0,0 +1,29 @@
+
+.text
+.type sinh,@function
+.global sinh
+
+sinh: # note: exp(x) = 2^(x*log2(e))
+ fldl2e
+ fmull 4(%esp) # x*log2(e)
+ fld %st(0) # x*log2(e) x*log2(e)
+ frndint # int(x*log2(e)) x*log2(e)
+ fxch # x*log2(e) int(x*log2(e))
+ fsub %st(1),%st(0) # frac(x*log2(e)) int(x*log2(e))
+ f2xm1 # 2^(fract(x*log2(e)))-1 int(x*log2(e))
+ fld1 # 1 2^(fract(x*log2(e)))-1 int(x*log2(e))
+ faddp %st(0),%st(1) # 2^(fract(x*log2(e))) int(x*log2(e))
+ fscale # 2^(x*log2(e)) int(x*log2(e))
+ fstp %st(1) # 2^(x*log2(e))
+
+# now we have y = exp(x), but sinh(x) = (y - 1/y) * 0.5
+
+ fld1
+ fdiv %st(1),%st(0)
+ fsubrp
+ fmuls __half
+ ret
+
+.Lende:
+
+.size sinh,.ende-sinh
diff --git a/mdk-stage1/dietlibc/i386/sleep.S b/mdk-stage1/dietlibc/i386/sleep.S
new file mode 100644
index 000000000..356552dc2
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/sleep.S
@@ -0,0 +1,25 @@
+#include "PIC.h"
+
+.text
+.global sleep
+.type sleep,@function
+
+sleep:
+ movl 4(%esp),%eax # Argument holen
+ PIC_SAVE # non-PIC: empty line
+ PIC_INIT # non-PIC: empty line
+ pushl $0 # 0 ns
+ pushl %eax # 'x' s warten
+ movl %esp,%eax
+ pushl %eax # zweimal ein Zeiger auf das Stackobjekt
+ pushl %eax # ptr ptr sec nsec return arg
+#ifdef __DYN_LIB
+ call nanosleep@PLT
+#else
+ call nanosleep
+#endif
+ movl 20(%esp),%eax # 'x' holen
+ subl 8(%esp),%eax # schon abgelaufende Zeit subtrahieren
+ addl $16,%esp
+ PIC_RESTORE # non-PIC: empty line
+ ret
diff --git a/mdk-stage1/dietlibc/i386/socket.S b/mdk-stage1/dietlibc/i386/socket.S
new file mode 100644
index 000000000..bc8cbe536
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/socket.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(socket,SOCKET)
diff --git a/mdk-stage1/dietlibc/i386/socketcall.S b/mdk-stage1/dietlibc/i386/socketcall.S
new file mode 100644
index 000000000..4e8019ec2
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/socketcall.S
@@ -0,0 +1,17 @@
+#include <syscalls.h>
+
+.text
+.global socketcall
+.type socketcall,@function
+socketcall:
+ leal 4(%esp), %ecx
+ pushl %ecx
+ movzbl %al,%eax
+ pushl %eax
+ movb $__NR_socketcall,%al
+ call __unified_syscall
+ popl %ecx
+ popl %ecx
+ retl
+.Lende:
+.size socketcall,.Lende-socketcall
diff --git a/mdk-stage1/dietlibc/i386/socketpair.S b/mdk-stage1/dietlibc/i386/socketpair.S
new file mode 100644
index 000000000..a5de65f25
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/socketpair.S
@@ -0,0 +1,4 @@
+#include <linuxnet.h>
+#include <syscalls.h>
+
+__socketcall(socketpair,SOCKETPAIR)
diff --git a/mdk-stage1/dietlibc/i386/sqrt.S b/mdk-stage1/dietlibc/i386/sqrt.S
new file mode 100644
index 000000000..5e4527612
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/sqrt.S
@@ -0,0 +1,23 @@
+.text
+
+.global sqrtf,sqrt,sqrtl
+ .type sqrtf,@function
+ .type sqrt,@function
+ .type sqrtl,@function
+sqrtf:
+ flds 4(%esp)
+ fsqrt
+ ret
+sqrt:
+ fldl 4(%esp)
+ fsqrt
+ ret
+sqrtl:
+ fldt 4(%esp)
+ fsqrt
+ ret
+
+.ende:
+.size sqrt,.ende-sqrt
+.size sqrtf,.ende-sqrtf
+.size sqrtl,.ende-sqrtl
diff --git a/mdk-stage1/dietlibc/i386/sqrtl.S b/mdk-stage1/dietlibc/i386/sqrtl.S
new file mode 100644
index 000000000..c1a931fd8
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/sqrtl.S
@@ -0,0 +1,11 @@
+.text
+.type sqrtl,@function
+.global sqrtl
+sqrtl:
+ fldt 4(%esp)
+ fsqrt
+ ret
+
+.ende:
+.size sqrtl,.ende-sqrtl
+
diff --git a/mdk-stage1/dietlibc/i386/start.S b/mdk-stage1/dietlibc/i386/start.S
index 167bb779c..1a825fc2a 100644
--- a/mdk-stage1/dietlibc/i386/start.S
+++ b/mdk-stage1/dietlibc/i386/start.S
@@ -1,42 +1,51 @@
-#include "start.h"
+#include "dietfeatures.h"
+#include "PIC.h"
-#ifdef __i386__
.text
-.globl _start
+.global _start
_start:
-#if 0
- popl %ecx
- movl %esp, %esi
- leal 4(%esp,%ecx,4),%eax
+#if 1
+ popl %ecx /* %ecx = argc */
+ movl %esp,%esi /* %esi = argv */
+ pushl %ecx
#else
- movl (%esp),%ecx /* %ecx = argc */
- leal 4(%esp),%esi /* %esi = argv */
-
- leal 4(%esi,%ecx,4),%eax /* eax = 4*ecx+4 = envp */
+ movl (%esp),%ecx /* %ecx = argc */
+ leal 4(%esp),%esi /* %esi = argv */
#endif
- pushl %eax
- pushl %esi
- pushl %ecx
- movl %eax,environ
+ leal 4(%esi,%ecx,4),%eax /* %eax = envp = (4*ecx)+%esi+4 */
#ifdef WANT_DYNAMIC
-/* in %edx we have the dynamic _fini ( register this if non null ) */
- test %edx, %edx
- je .Linit
+/* in %edx we have the ld.so dynamic _fini ( register this if non null ) */
push %edx
- call atexit
- pop %edx
-.Linit:
- call _init
- push $_fini
- call atexit
- pop %edx
#endif
- call main
- pushl %eax
- call exit
-.Lfefe:
- .size _start,.Lfefe-_start
+ pushl %eax
+ pushl %esi
+ pushl %ecx
+ PIC_INIT /* non-PIC: this is an empty line */
+ PUT_VAR %eax, environ, %ecx /* non-PIC: movl %eax,environ */
+
+#ifdef PROFILING
+ pushl $_etext
+ pushl $.text
+ call monitor
+ addl $0x8, %esp
+#endif
+
+#ifdef WANT_DYNAMIC
+ call _dyn_start
+#else
+ call main
+#endif
+
+#ifdef PROFILING
+ pushl %eax
+ call _stop_monitor
+ popl %eax
#endif
+ pushl %eax
+ call exit
+ hlt /* die now ! will ya ... */
+.Lstart:
+ .size _start,.Lstart-_start
diff --git a/mdk-stage1/dietlibc/i386/stpcpy.S b/mdk-stage1/dietlibc/i386/stpcpy.S
new file mode 100644
index 000000000..1cb74b2ea
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/stpcpy.S
@@ -0,0 +1,22 @@
+.text
+.global stpcpy
+.type stpcpy,@function
+stpcpy:
+ pushl %edi
+ pushl %esi
+ movl 0xc(%esp), %edi
+ movl 0x10(%esp), %esi
+
+.Lcopy:
+ lodsb
+ stosb
+ testb %al, %al
+ jnz .Lcopy
+
+ movl %edi, %eax
+ decl %eax
+ popl %esi
+ popl %edi
+ ret
+.Lende:
+.size stpcpy,.Lende-stpcpy
diff --git a/mdk-stage1/dietlibc/i386/strcasecmp.S b/mdk-stage1/dietlibc/i386/strcasecmp.S
new file mode 100644
index 000000000..a836680db
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/strcasecmp.S
@@ -0,0 +1,31 @@
+.text
+.globl strcasecmp
+
+strcasecmp:
+ pushl %esi
+ movl 0x8(%esp), %esi
+ movl 0xc(%esp), %edx
+ xorl %eax, %eax
+ xorl %ecx, %ecx
+ cld
+.Lloop:
+ lodsb
+ movb (%edx), %cl
+ incl %edx
+ or %al, %al
+ jz .Lfinifirst
+ cmp $'A', %al
+ jnge .Lcmp
+ cmp $'z', %al
+ jg .Lcmp
+ or $0x20, %al
+ or $0x20, %cl
+.Lcmp:
+ subl %ecx, %eax
+ jz .Lloop
+.Lret:
+ popl %esi
+ ret
+.Lfinifirst:
+ subl %ecx, %eax
+ jmp .Lret
diff --git a/mdk-stage1/dietlibc/i386/strcat.S b/mdk-stage1/dietlibc/i386/strcat.S
new file mode 100644
index 000000000..e7d74ef13
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/strcat.S
@@ -0,0 +1,29 @@
+.text
+.align 0
+.global strcat
+.type strcat,@function
+strcat:
+ pushl %edi
+ pushl %esi
+
+ movl 12(%esp), %edi
+ movl 16(%esp), %esi
+
+ pushl %edi
+
+ xorl %eax, %eax
+ xorl %ecx, %ecx
+ decl %ecx
+ repne scasb
+ decl %edi
+
+.Lloop:
+ lodsb
+ stosb
+ testb %al, %al
+ jnz .Lloop
+
+ popl %eax
+ popl %esi
+ popl %edi
+ ret
diff --git a/mdk-stage1/dietlibc/i386/strchr.S b/mdk-stage1/dietlibc/i386/strchr.S
new file mode 100644
index 000000000..4515d9835
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/strchr.S
@@ -0,0 +1,22 @@
+
+.text
+.type strchr,@function
+.global strchr
+.weak index
+.type index,@function
+
+index:
+strchr:
+ movl 4(%esp),%ecx
+ movb 8(%esp),%dl
+.Lloop:
+ movb (%ecx),%al
+ cmpb %al,%dl
+ jz .Lfound
+ incl %ecx
+ testb %al,%al
+ jnz .Lloop
+ xorl %ecx,%ecx
+.Lfound:
+ movl %ecx,%eax
+ ret
diff --git a/mdk-stage1/dietlibc/i386/strcmp.S b/mdk-stage1/dietlibc/i386/strcmp.S
new file mode 100644
index 000000000..e01064ffb
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/strcmp.S
@@ -0,0 +1,31 @@
+.text
+.global strcmp
+.type strcmp,@function
+.weak strcoll
+.type strcoll,@function
+
+#ifdef HIGH_PERFORMANCE
+.align 16
+#endif
+
+.Ldiff:
+ movzbl (%edx), %ecx
+ subl %ecx, %eax # (unsigned char)*p - (unsigned char)*q, so wie die Original libc
+ ret # und ohne berlaufprobleme:
+ # (int) ((signed char)c - (signed char)d) != (int)(signed char) ((unsigned char)c - (unsigned char)d)
+ # c = '', d = 'e': left expression: -129, right expression: 127
+
+strcoll:
+strcmp:
+ movl 4(%esp), %ecx
+ movl 8(%esp), %edx
+ xorl %eax, %eax
+.Lloop: # Schleifenanfang liegt genau auf Modulanfang + 0x10, damit alignbar
+ movb (%ecx), %al
+ cmpb (%edx), %al
+ jnz .Ldiff
+ incl %edx
+ incl %ecx
+ testb %al, %al
+ jnz .Lloop
+ ret
diff --git a/mdk-stage1/dietlibc/i386/strcpy.S b/mdk-stage1/dietlibc/i386/strcpy.S
new file mode 100644
index 000000000..a597436bc
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/strcpy.S
@@ -0,0 +1,24 @@
+
+.text
+.align 0
+.global strcpy
+.type strcpy,@function
+strcpy:
+ pushl %esi
+ pushl %edi
+
+ movl 12(%esp), %edx
+ movl 16(%esp), %esi
+ movl %edx, %edi
+ cld
+
+.Lloop:
+ lodsb
+ stosb
+ orb %al, %al
+ jnz .Lloop
+
+ popl %edi
+ popl %esi
+ movl %edx,%eax
+ ret
diff --git a/mdk-stage1/dietlibc/i386/strlen.S b/mdk-stage1/dietlibc/i386/strlen.S
new file mode 100644
index 000000000..66f8ee553
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/strlen.S
@@ -0,0 +1,18 @@
+
+.text
+.type strlen,@function
+.global strlen
+
+strlen:
+ movl 4(%esp),%ecx
+ xorl %eax,%eax
+ jecxz .Lnull
+ decl %eax
+.Llbl: incl %eax
+ cmpb $0,(%ecx, %eax)
+ jne .Llbl
+.Lnull: ret
+
+.Lende:
+
+.size strlen,.Lende-strlen
diff --git a/mdk-stage1/dietlibc/i386/strncmp.S b/mdk-stage1/dietlibc/i386/strncmp.S
new file mode 100644
index 000000000..bf07b07d0
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/strncmp.S
@@ -0,0 +1,28 @@
+.text
+.align 0
+.global strncmp
+.type strncmp,@function
+strncmp:
+ push %ebx
+ movl %esp,%ebx
+ movl 12(%ebx),%edx
+ movl 16(%ebx),%ecx
+ movl 8(%ebx),%ebx
+.Lloop:
+ jecxz .Ldone
+ decl %ecx
+ movb (%ebx),%al
+ incl %edx
+ incl %ebx
+ movb %al,%ah
+ subb -1(%edx),%al
+ jnz .Lnotequal
+ testb %ah,%ah
+ jnz .Lloop
+
+.Ldone:
+ xorl %eax,%eax
+.Lnotequal:
+ movsx %al, %eax
+ popl %ebx
+ ret
diff --git a/mdk-stage1/dietlibc/i386/strncpy.S b/mdk-stage1/dietlibc/i386/strncpy.S
new file mode 100644
index 000000000..837b43c41
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/strncpy.S
@@ -0,0 +1,42 @@
+/*
+ Copyright (C) 2002 Thomas M. Ogrisegg
+
+ This is free software. You can redistribute and
+ modify it under the terms of the GNU General Public
+ Public License.
+
+ strncpy.S
+ i386 assembler implementation of strncpy(3)
+*/
+
+#include "dietfeatures.h"
+
+.text
+.globl strncpy
+.type strncpy,@function
+
+strncpy:
+ pushl %esi
+ pushl %edi
+ movl %esp, %ecx
+ movl 0x0c(%ecx), %edi
+ movl 0x10(%ecx), %esi
+ movl 0x14(%ecx), %ecx
+
+ movl %edi, %edx
+
+.Lloop:
+ dec %ecx
+ js .Lout
+ lodsb
+ stosb
+ or %al, %al
+ jnz .Lloop
+#ifdef WANT_FULL_POSIX_COMPAT
+ repnz stosb
+#endif
+.Lout:
+ movl %edx, %eax
+ popl %edi
+ popl %esi
+ ret
diff --git a/mdk-stage1/dietlibc/i386/strrchr.S b/mdk-stage1/dietlibc/i386/strrchr.S
new file mode 100644
index 000000000..9fd6e8b32
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/strrchr.S
@@ -0,0 +1,19 @@
+.text
+.globl strrchr
+.type strrchr,@function
+
+strrchr:
+ movl 0x4(%esp), %edx
+ movb 0x8(%esp), %cl
+ xorl %eax, %eax
+ decl %edx
+.Lloop:
+ incl %edx
+ cmpb $0x0,(%edx)
+ jz .Lret
+ cmpb %cl, (%edx)
+ jnz .Lloop
+ movl %edx, %eax
+ jmp .Lloop
+.Lret:
+ ret
diff --git a/mdk-stage1/dietlibc/i386/syscalls.h b/mdk-stage1/dietlibc/i386/syscalls.h
new file mode 100644
index 000000000..3cbf7b605
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/syscalls.h
@@ -0,0 +1,303 @@
+
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_open 5
+#define __NR_close 6
+#define __NR_waitpid 7
+#define __NR_creat 8
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_execve 11
+#define __NR_chdir 12
+#define __NR_time 13
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_lchown 16
+#define __NR_break 17
+#define __NR_oldstat 18
+#define __NR_lseek 19
+#define __NR_getpid 20
+#define __NR_mount 21
+#define __NR_umount 22
+#define __NR_setuid 23
+#define __NR_getuid 24
+#define __NR_stime 25
+#define __NR_ptrace 26
+#define __NR_alarm 27
+#define __NR_oldfstat 28
+#define __NR_pause 29
+#define __NR_utime 30
+#define __NR_stty 31
+#define __NR_gtty 32
+#define __NR_access 33
+#define __NR_nice 34
+#define __NR_ftime 35
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_rename 38
+#define __NR_mkdir 39
+#define __NR_rmdir 40
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_times 43
+#define __NR_prof 44
+#define __NR_brk 45
+#define __NR_setgid 46
+#define __NR_getgid 47
+#define __NR_signal 48
+#define __NR_geteuid 49
+#define __NR_getegid 50
+#define __NR_acct 51
+#define __NR_umount2 52
+#define __NR_lock 53
+#define __NR_ioctl 54
+#define __NR_fcntl 55
+#define __NR_mpx 56
+#define __NR_setpgid 57
+#define __NR_ulimit 58
+#define __NR_oldolduname 59
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_ustat 62
+#define __NR_dup2 63
+#define __NR_getppid 64
+#define __NR_getpgrp 65
+#define __NR_setsid 66
+#define __NR_sigaction 67
+#define __NR_sgetmask 68
+#define __NR_ssetmask 69
+#define __NR_setreuid 70
+#define __NR_setregid 71
+#define __NR_sigsuspend 72
+#define __NR_sigpending 73
+#define __NR_sethostname 74
+#define __NR_setrlimit 75
+#define __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */
+#define __NR_getrusage 77
+#define __NR_gettimeofday 78
+#define __NR_settimeofday 79
+#define __NR_getgroups 80
+#define __NR_setgroups 81
+#define __NR_select 82
+#define __NR_symlink 83
+#define __NR_oldlstat 84
+#define __NR_readlink 85
+#define __NR_uselib 86
+#define __NR_swapon 87
+#define __NR_reboot 88
+#define __NR_readdir 89
+#define __NR_mmap 90
+#define __NR_munmap 91
+#define __NR_truncate 92
+#define __NR_ftruncate 93
+#define __NR_fchmod 94
+#define __NR_fchown 95
+#define __NR_getpriority 96
+#define __NR_setpriority 97
+#define __NR_profil 98
+#define __NR_statfs 99
+#define __NR_fstatfs 100
+#define __NR_ioperm 101
+#define __NR_socketcall 102
+#define __NR_syslog 103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat 106
+#define __NR_lstat 107
+#define __NR_fstat 108
+#define __NR_olduname 109
+#define __NR_iopl 110
+#define __NR_vhangup 111
+#define __NR_idle 112
+#define __NR_vm86old 113
+#define __NR_wait4 114
+#define __NR_swapoff 115
+#define __NR_sysinfo 116
+#define __NR_ipc 117
+#define __NR_fsync 118
+#define __NR_sigreturn 119
+#define __NR_clone 120
+#define __NR_setdomainname 121
+#define __NR_uname 122
+#define __NR_modify_ldt 123
+#define __NR_adjtimex 124
+#define __NR_mprotect 125
+#define __NR_sigprocmask 126
+#define __NR_create_module 127
+#define __NR_init_module 128
+#define __NR_delete_module 129
+#define __NR_get_kernel_syms 130
+#define __NR_quotactl 131
+#define __NR_getpgid 132
+#define __NR_fchdir 133
+#define __NR_bdflush 134
+#define __NR_sysfs 135
+#define __NR_personality 136
+#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
+#define __NR_setfsuid 138
+#define __NR_setfsgid 139
+#define __NR__llseek 140
+#define __NR_getdents 141
+#define __NR__newselect 142
+#define __NR_flock 143
+#define __NR_msync 144
+#define __NR_readv 145
+#define __NR_writev 146
+#define __NR_getsid 147
+#define __NR_fdatasync 148
+#define __NR__sysctl 149
+#define __NR_mlock 150
+#define __NR_munlock 151
+#define __NR_mlockall 152
+#define __NR_munlockall 153
+#define __NR_sched_setparam 154
+#define __NR_sched_getparam 155
+#define __NR_sched_setscheduler 156
+#define __NR_sched_getscheduler 157
+#define __NR_sched_yield 158
+#define __NR_sched_get_priority_max 159
+#define __NR_sched_get_priority_min 160
+#define __NR_sched_rr_get_interval 161
+#define __NR_nanosleep 162
+#define __NR_mremap 163
+#define __NR_setresuid 164
+#define __NR_getresuid 165
+#define __NR_vm86 166
+#define __NR_query_module 167
+#define __NR_poll 168
+#define __NR_nfsservctl 169
+#define __NR_setresgid 170
+#define __NR_getresgid 171
+#define __NR_prctl 172
+#define __NR_rt_sigreturn 173
+#define __NR_rt_sigaction 174
+#define __NR_rt_sigprocmask 175
+#define __NR_rt_sigpending 176
+#define __NR_rt_sigtimedwait 177
+#define __NR_rt_sigqueueinfo 178
+#define __NR_rt_sigsuspend 179
+#define __NR_pread 180
+#define __NR_pwrite 181
+#define __NR_chown 182
+#define __NR_getcwd 183
+#define __NR_capget 184
+#define __NR_capset 185
+#define __NR_sigaltstack 186
+#define __NR_sendfile 187
+#define __NR_getpmsg 188 /* some people actually want streams */
+#define __NR_putpmsg 189 /* some people actually want streams */
+#define __NR_vfork 190
+#define __NR_ugetrlimit 191 /* SuS compliant getrlimit */
+#define __NR_mmap2 192
+#define __NR_truncate64 193
+#define __NR_ftruncate64 194
+#define __NR_stat64 195
+#define __NR_lstat64 196
+#define __NR_fstat64 197
+#define __NR_lchown32 198
+#define __NR_getuid32 199
+#define __NR_getgid32 200
+#define __NR_geteuid32 201
+#define __NR_getegid32 202
+#define __NR_setreuid32 203
+#define __NR_setregid32 204
+#define __NR_getgroups32 205
+#define __NR_setgroups32 206
+#define __NR_fchown32 207
+#define __NR_setresuid32 208
+#define __NR_getresuid32 209
+#define __NR_setresgid32 210
+#define __NR_getresgid32 211
+#define __NR_chown32 212
+#define __NR_setuid32 213
+#define __NR_setgid32 214
+#define __NR_setfsuid32 215
+#define __NR_setfsgid32 216
+#define __NR_pivot_root 217
+#define __NR_mincore 218
+#define __NR_madvise 219
+#define __NR_madvise1 219 /* delete when C lib stub is removed */
+#define __NR_getdents64 220
+#define __NR_fcntl64 221
+#define __NR_security 223 /* syscall for security modules */
+#define __NR_gettid 224
+#define __NR_readahead 225
+#define __NR_setxattr 226
+#define __NR_lsetxattr 227
+#define __NR_fsetxattr 228
+#define __NR_getxattr 229
+#define __NR_lgetxattr 230
+#define __NR_fgetxattr 231
+#define __NR_listxattr 232
+#define __NR_llistxattr 233
+#define __NR_flistxattr 234
+#define __NR_removexattr 235
+#define __NR_lremovexattr 236
+#define __NR_fremovexattr 237
+#define __NR_tkill 238
+#define __NR_sendfile64 239
+#define __NR_futex 240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_set_thread_area 243
+#define __NR_get_thread_area 244
+#define __NR_io_setup 245
+#define __NR_io_destroy 246
+#define __NR_io_getevents 247
+#define __NR_io_submit 248
+#define __NR_io_cancel 249
+#define __NR_alloc_hugepages 250
+#define __NR_free_hugepages 251
+#define __NR_exit_group 252
+#define __NR_lookup_dcookie 253
+#define __NR_sys_epoll_create 254
+#define __NR_sys_epoll_ctl 255
+#define __NR_sys_epoll_wait 256
+#define __NR_remap_file_pages 257
+#define __NR_set_tid_address 258
+
+#define syscall_weak(name,wsym,sym) \
+.text; \
+.type wsym,@function; \
+.weak wsym; \
+wsym: ; \
+.type sym,@function; \
+.global sym; \
+sym: \
+ movb $__NR_##name,%al; \
+ jmp __unified_syscall; \
+.Lend##sym: ; \
+.size sym,.Lend##sym-sym
+
+#define syscall(name,sym) \
+.text; \
+.type sym,@function; \
+.global sym; \
+sym: \
+.ifle __NR_##name-255; \
+ movb $__NR_##name,%al; \
+ jmp __unified_syscall; \
+.else; \
+ movw $__NR_##name,%ax; \
+ jmp __unified_syscall_256; \
+.endif; \
+.Lend##sym: ; \
+.size sym,.Lend##sym-sym
+
+#ifndef __PIC__
+#define __socketcall(name,NAME) \
+.text; \
+.type name,@function; \
+.weak name; \
+name: ; \
+.global __libc_##name; \
+__libc_##name: ; \
+ movb $SYS_##NAME,%al; \
+ jmp socketcall; \
+.Lend##name:; \
+.size name,.Lend##name-name
+#else
+#define __socketcall(name,NAME)
+#endif
diff --git a/mdk-stage1/dietlibc/i386/tan.S b/mdk-stage1/dietlibc/i386/tan.S
new file mode 100644
index 000000000..4904c2d59
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/tan.S
@@ -0,0 +1,12 @@
+
+.text
+.type tan,@function
+.global tan
+tan:
+ fldl 4(%esp)
+ fsincos
+ fdivrp
+ ret
+
+.Lende:
+.size tan,.Lende-tan
diff --git a/mdk-stage1/dietlibc/i386/tanh.S b/mdk-stage1/dietlibc/i386/tanh.S
new file mode 100644
index 000000000..61d3f3376
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/tanh.S
@@ -0,0 +1,32 @@
+
+.text
+.type tanh,@function
+.global tanh
+
+tanh: # note: exp(x) = 2^(x*log2(e))
+ fldl2e
+ fmull 4(%esp) # x*log2(e)
+ fld %st(0) # x*log2(e) x*log2(e)
+ frndint # int(x*log2(e)) x*log2(e)
+ fxch # x*log2(e) int(x*log2(e))
+ fsub %st(1),%st(0) # frac(x*log2(e)) int(x*log2(e))
+ f2xm1 # 2^(fract(x*log2(e)))-1 int(x*log2(e))
+ fld1 # 1 2^(fract(x*log2(e)))-1 int(x*log2(e))
+ faddp %st(0),%st(1) # 2^(fract(x*log2(e))) int(x*log2(e))
+ fscale # 2^(x*log2(e)) int(x*log2(e))
+ fstp %st(1) # 2^(x*log2(e))
+
+# now we have y = exp(x), but tanh(x) = (y - 1/y) / (y + 1/y)
+
+ fld1
+ fdiv %st(1),%st(0) # 1/y y
+ fld %st(0) # 1/y 1/y y
+ fadd %st(2) # y+1/y 1/y y
+ fxch %st(2) # y 1/y y+1/y
+ fsubp # y-1/y y+1/y
+ fdivp # (y-1/y)/(y+1/y)
+ ret
+
+.Lende:
+
+.size tanh,.ende-tanh
diff --git a/mdk-stage1/dietlibc/i386/unified.S b/mdk-stage1/dietlibc/i386/unified.S
index f182bdb4b..989bf37b5 100644
--- a/mdk-stage1/dietlibc/i386/unified.S
+++ b/mdk-stage1/dietlibc/i386/unified.S
@@ -1,13 +1,33 @@
+
#include <dietfeatures.h>
.text
+.global __unified_syscall_256
+.type __unified_syscall_256,@function
+__unified_syscall_256:
+ movzwl %ax,%eax
+ jmp .L1
+.L2:
+.size __unified_syscall_256,.L2-__unified_syscall_256
+.weak exit
+exit:
+.global _exit
+.type _exit,@function
+_exit:
+ movb $1,%al
.global __unified_syscall
+.type __unified_syscall,@function
__unified_syscall:
+.size _exit,__unified_syscall-_exit
movzbl %al, %eax
+.L1:
push %edi
push %esi
push %ebx
movl %esp,%edi
+ /* we use movl instead of pop because otherwise a signal would
+ destroy the stack frame and crash the program, although it
+ would save a few bytes. */
movl 0x10(%edi),%ebx
movl 0x14(%edi),%ecx
movl 0x18(%edi),%edx
@@ -16,19 +36,24 @@ __unified_syscall:
int $0x80
cmp $-124,%eax
jbe .Lnoerror
-#ifdef WANT_THREAD_SAVE
+ neg %eax
+#ifdef WANT_THREAD_SAFE
movl %eax,%ebx
call __errno_location
- neg %ebx
movl %ebx,(%eax)
+ orl $-1,%eax
#else
- neg %eax
mov %eax,errno
+ sbb %eax,%eax # eax = eax - eax - CY = -1
#endif
- xor %eax,%eax
- dec %eax
.Lnoerror:
pop %ebx
pop %esi
pop %edi
+
+/* here we go and "reuse" the return for weak-void functions */
+#include "dietuglyweaks.h"
+
ret
+.L3:
+.size __unified_syscall,.L3-__unified_syscall
diff --git a/mdk-stage1/dietlibc/i386/usleep.S b/mdk-stage1/dietlibc/i386/usleep.S
new file mode 100644
index 000000000..7c0cc6ce7
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/usleep.S
@@ -0,0 +1,31 @@
+#include "PIC.h"
+
+.text
+.global usleep
+.type usleep,@function
+
+usleep:
+ movl 4(%esp),%eax
+ PIC_SAVE # non-PIC: empty line
+ PIC_INIT # non-PIC: empty line
+ xorl %edx,%edx
+ movl $1000000,%ecx
+ divl %ecx
+ imull $1000,%edx
+ pushl %edx
+ pushl %eax
+ movl %esp,%eax
+ pushl %eax
+ pushl %eax
+#ifdef __DYN_LIB
+ call nanosleep@PLT
+#else
+ call nanosleep
+#endif
+ addl $16,%esp
+ PIC_RESTORE # non-PIC: empty line
+ ret
+
+.Lende:
+.size usleep,.Lende-usleep
+
diff --git a/mdk-stage1/dietlibc/i386/vfork.S b/mdk-stage1/dietlibc/i386/vfork.S
new file mode 100644
index 000000000..c07c5f6af
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/vfork.S
@@ -0,0 +1,9 @@
+.text
+.globl vfork
+vfork:
+ popl %edx
+ xorl %eax,%eax
+ movb $190, %al
+ int $0x80
+ jmpl *%edx
+.size vfork, . - vfork
diff --git a/mdk-stage1/dietlibc/i386/write12.S b/mdk-stage1/dietlibc/i386/write12.S
new file mode 100644
index 000000000..a40f63a86
--- /dev/null
+++ b/mdk-stage1/dietlibc/i386/write12.S
@@ -0,0 +1,37 @@
+#include "PIC.h"
+
+.text
+
+.global __write1
+.type __write1,@function
+
+.global __write2
+.type __write2,@function
+
+ # regparm=1, daher Stringadresse in %eax
+__write2:
+ clc # CY = 0
+ .byte 0xB2 # zusammen mit nchstem Byte: mov dl,0xF9
+__write1:
+ stc # CY = 1
+ sbbl %ecx,%ecx # __write2: ecx=0, __write1: ecx=-1
+ incl %ecx
+ incl %ecx # __write2: ecx=2, __write1: ecx=1
+ xorl %edx,%edx
+ decl %edx
+.Lnext: incl %edx
+ cmpb %ch,(%edx,%eax) # ch=0, da bei beiden Filedescriptoren Bits 15:8 0 sind
+ jnz .Lnext # Stringlnge in edx, ohne eax zerstrt zu haben
+ PIC_SAVE # non-PIC: empty line
+ PIC_INIT # non-PIC: empty line
+ pushl %edx
+ pushl %eax
+ pushl %ecx
+#ifdef __DYN_LIB
+ call write@PLT
+#else
+ call write # alles ruf uf dn Stack und ab damit
+#endif
+ addl $12,%esp # und das leidvolle Putzen
+ PIC_RESTORE # non-PIC: empty line
+ ret
diff --git a/mdk-stage1/dietlibc/ia64/Makefile.add b/mdk-stage1/dietlibc/ia64/Makefile.add
new file mode 100644
index 000000000..f660930af
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/Makefile.add
@@ -0,0 +1,2 @@
+VPATH:=ia64:syscalls.s:$(VPATH)
+LIBOBJ+=$(OBJDIR)/__time.o $(OBJDIR)/__waitpid.o $(OBJDIR)/__nice.o $(OBJDIR)/__alarm.o
diff --git a/mdk-stage1/dietlibc/ia64/README b/mdk-stage1/dietlibc/ia64/README
new file mode 100644
index 000000000..684364d93
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/README
@@ -0,0 +1,4 @@
+A Port for IA64.
+
+Does not yet support: clone, FPU and profiling. And includes
+some subtle bugs which will hopefully be fixed later.
diff --git a/mdk-stage1/dietlibc/ia64/__alarm.c b/mdk-stage1/dietlibc/ia64/__alarm.c
new file mode 100644
index 000000000..e2c499f2c
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/__alarm.c
@@ -0,0 +1 @@
+#include "alpha/__alarm.c"
diff --git a/mdk-stage1/dietlibc/ia64/__longjmp.S b/mdk-stage1/dietlibc/ia64/__longjmp.S
new file mode 100644
index 000000000..698bda528
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/__longjmp.S
@@ -0,0 +1 @@
+/* No longjmp yet */
diff --git a/mdk-stage1/dietlibc/ia64/__nice.c b/mdk-stage1/dietlibc/ia64/__nice.c
new file mode 100644
index 000000000..012ea2628
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/__nice.c
@@ -0,0 +1,6 @@
+#include <sys/resource.h>
+
+int nice(int x) {
+ if (setpriority(PRIO_PROCESS,0,x)) return -1;
+ return getpriority(PRIO_PROCESS,0);
+}
diff --git a/mdk-stage1/dietlibc/ia64/__testandset.S b/mdk-stage1/dietlibc/ia64/__testandset.S
new file mode 100644
index 000000000..d462e3c58
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/__testandset.S
@@ -0,0 +1,11 @@
+.text
+.globl __testandset
+.proc __testandset
+__testandset:
+ mov ar.ccv = r0
+ mov r29 = 1
+ ld8 r3 = [r32]
+ cmpxchg8.acq r8 = [r32], r29, ar.ccv /* cmpxchg is atomic */
+ br.ret.sptk.clr b0
+.endp __testandset
+.size __testandset, . - __testandset
diff --git a/mdk-stage1/dietlibc/ia64/__time.c b/mdk-stage1/dietlibc/ia64/__time.c
new file mode 100644
index 000000000..7547acb1d
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/__time.c
@@ -0,0 +1,14 @@
+#include <time.h>
+#include <sys/time.h>
+
+time_t time(time_t*t) {
+ struct timeval tv;
+ time_t ret;
+ if (gettimeofday(&tv,0)) {
+ ret=(time_t)-1;
+ } else {
+ ret=(time_t)tv.tv_sec;
+ }
+ if (t) *t=ret;
+ return ret;
+}
diff --git a/mdk-stage1/dietlibc/ia64/__waitpid.c b/mdk-stage1/dietlibc/ia64/__waitpid.c
new file mode 100644
index 000000000..8c228f375
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/__waitpid.c
@@ -0,0 +1,5 @@
+#include <sys/types.h>
+
+pid_t waitpid(int pid, int * wait_stat, int flags) {
+ return wait4(pid, wait_stat, flags, 0);
+}
diff --git a/mdk-stage1/dietlibc/ia64/accept.S b/mdk-stage1/dietlibc/ia64/accept.S
new file mode 100644
index 000000000..7bdc38c7e
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/accept.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(accept, accept);
diff --git a/mdk-stage1/dietlibc/syscalls.c/sync.c b/mdk-stage1/dietlibc/ia64/bind.S
index cca17461f..05849d470 100644
--- a/mdk-stage1/dietlibc/syscalls.c/sync.c
+++ b/mdk-stage1/dietlibc/ia64/bind.S
@@ -1,3 +1,3 @@
#include "syscalls.h"
-_syscall0(int,sync)
+syscall(bind, bind);
diff --git a/mdk-stage1/dietlibc/ia64/clone.S b/mdk-stage1/dietlibc/ia64/clone.S
new file mode 100644
index 000000000..ba768141c
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/clone.S
@@ -0,0 +1,41 @@
+/* This is untested code which probably wont work out of the box! */
+
+#include "syscalls.h"
+#include <errno.h>
+
+.text
+.globl __clone
+.proc __clone
+.weak __clone2
+__clone2:
+__clone:
+ mov r8 = EINVAL
+ cmp.eq p6,p0=0,r32
+(p6) br.cond.spnt.few __error_unified_syscall
+ cmp.eq p6,p0=0,r33
+(p6) br.cond.spnt.few __error_unified_syscall
+ flushrs
+
+ mov.m r17 = ar.rsc
+ mov r14 = r32
+ mov r18 = r33
+ mov r16 = r36;;
+ mov r15 = __NR_clone2
+ break 0x100000
+ cmp.eq p6,p0=-1,r10
+(p6) br.cond.spnt.few __error_unified_syscall
+ cmp.eq p6,p7=0,r8
+(p6) ld8 r34=[r14],8
+(p6) mov.m ar.bspstore=r18
+(p6) mov r32 = r16
+ mov.m ar.rsc = r17
+(p7) br.ret.sptk b0
+ ld8 r1 = [r14]
+ mov b6 = r34
+ br.call.dptk.few b0=b6
+ mov r32 = r8
+ br.call.dptk.few b0=__error_unified_syscall
+ br.ret.sptk.few b0
+.endp __clone
+.endp __clone2
+.size __clone, . - __clone
diff --git a/mdk-stage1/dietlibc/ia64/connect.S b/mdk-stage1/dietlibc/ia64/connect.S
new file mode 100644
index 000000000..5fbd151ae
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/connect.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(connect, connect);
diff --git a/mdk-stage1/dietlibc/ia64/fork.S b/mdk-stage1/dietlibc/ia64/fork.S
new file mode 100644
index 000000000..3b253a80b
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/fork.S
@@ -0,0 +1,8 @@
+#include "syscalls.h"
+
+.text
+.globl fork
+fork:
+ mov r15 = __NR_clone
+ mov r32 = 17
+ br __unified_syscall
diff --git a/mdk-stage1/dietlibc/ia64/getpeername.S b/mdk-stage1/dietlibc/ia64/getpeername.S
new file mode 100644
index 000000000..fdaa1038a
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/getpeername.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(getpeername, getpeername);
diff --git a/mdk-stage1/dietlibc/ia64/getsockname.S b/mdk-stage1/dietlibc/ia64/getsockname.S
new file mode 100644
index 000000000..1ea0bc000
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/getsockname.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(getsockname, getsockname);
diff --git a/mdk-stage1/dietlibc/ia64/getsockopt.S b/mdk-stage1/dietlibc/ia64/getsockopt.S
new file mode 100644
index 000000000..465c4e08e
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/getsockopt.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(getsockopt, getsockopt);
diff --git a/mdk-stage1/dietlibc/ia64/listen.S b/mdk-stage1/dietlibc/ia64/listen.S
new file mode 100644
index 000000000..66a3fe376
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/listen.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(listen, listen);
diff --git a/mdk-stage1/dietlibc/syscalls.c/getpid.c b/mdk-stage1/dietlibc/ia64/mmap.S
index d60a8db9a..cca4bbdbb 100644
--- a/mdk-stage1/dietlibc/syscalls.c/getpid.c
+++ b/mdk-stage1/dietlibc/ia64/mmap.S
@@ -1,3 +1,3 @@
#include "syscalls.h"
-_syscall0(int,getpid)
+syscall (mmap, mmap)
diff --git a/mdk-stage1/dietlibc/syscalls.c/getppid.c b/mdk-stage1/dietlibc/ia64/msgctl.S
index ee87a8eae..d7caed2cc 100644
--- a/mdk-stage1/dietlibc/syscalls.c/getppid.c
+++ b/mdk-stage1/dietlibc/ia64/msgctl.S
@@ -1,3 +1,3 @@
#include "syscalls.h"
-_syscall0(int,getppid)
+syscall(msgctl,msgctl)
diff --git a/mdk-stage1/dietlibc/syscalls.c/vhangup.c b/mdk-stage1/dietlibc/ia64/msgget.S
index bb0669765..518d67ac4 100644
--- a/mdk-stage1/dietlibc/syscalls.c/vhangup.c
+++ b/mdk-stage1/dietlibc/ia64/msgget.S
@@ -1,3 +1,3 @@
#include "syscalls.h"
-_syscall0(int,vhangup)
+syscall(msgget,msgget)
diff --git a/mdk-stage1/dietlibc/ia64/msgrcv.S b/mdk-stage1/dietlibc/ia64/msgrcv.S
new file mode 100644
index 000000000..ab62e6c30
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/msgrcv.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(msgrcv,msgrcv)
diff --git a/mdk-stage1/dietlibc/ia64/msgsnd.S b/mdk-stage1/dietlibc/ia64/msgsnd.S
new file mode 100644
index 000000000..890a996a2
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/msgsnd.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(msgsnd,msgsnd)
diff --git a/mdk-stage1/dietlibc/ia64/pipe.S b/mdk-stage1/dietlibc/ia64/pipe.S
new file mode 100644
index 000000000..c3bf4570b
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/pipe.S
@@ -0,0 +1,20 @@
+#include "syscalls.h"
+
+.text
+.globl pipe
+.proc pipe
+
+pipe:
+ st8 [r12] = r32
+ mov r15 = __NR_pipe
+ break.i 0x100000
+ ld8 r2 = [r12]
+ cmp.eq p7,p6=-1,r10
+(p6) st4 [r2] = r8,4
+ mov r8 = r0
+(p7) br.cond.spnt.few __error_unified_syscall
+(p6) st4 [r2] = r9
+(p6) br.ret.sptk.few b0
+
+.endp pipe
+.size pipe, . - pipe
diff --git a/mdk-stage1/dietlibc/ia64/recv.S b/mdk-stage1/dietlibc/ia64/recv.S
new file mode 100644
index 000000000..1f1640390
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/recv.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(recv, recv);
diff --git a/mdk-stage1/dietlibc/ia64/recvfrom.S b/mdk-stage1/dietlibc/ia64/recvfrom.S
new file mode 100644
index 000000000..d3c2e602f
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/recvfrom.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(recvfrom, recvfrom);
diff --git a/mdk-stage1/dietlibc/ia64/recvmsg.S b/mdk-stage1/dietlibc/ia64/recvmsg.S
new file mode 100644
index 000000000..cfbbafdc1
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/recvmsg.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(recvmsg, recvmsg);
diff --git a/mdk-stage1/dietlibc/ia64/semctl.S b/mdk-stage1/dietlibc/ia64/semctl.S
new file mode 100644
index 000000000..e215ed955
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/semctl.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(semctl,semctl)
diff --git a/mdk-stage1/dietlibc/ia64/semget.S b/mdk-stage1/dietlibc/ia64/semget.S
new file mode 100644
index 000000000..67f488546
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/semget.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(semget,semget)
diff --git a/mdk-stage1/dietlibc/ia64/semop.S b/mdk-stage1/dietlibc/ia64/semop.S
new file mode 100644
index 000000000..81b6fc606
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/semop.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(semop,semop)
diff --git a/mdk-stage1/dietlibc/ia64/send.S b/mdk-stage1/dietlibc/ia64/send.S
new file mode 100644
index 000000000..38f47f398
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/send.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(send, send);
diff --git a/mdk-stage1/dietlibc/ia64/sendmsg.S b/mdk-stage1/dietlibc/ia64/sendmsg.S
new file mode 100644
index 000000000..c2bc80f72
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/sendmsg.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(sendmsg, sendmsg);
diff --git a/mdk-stage1/dietlibc/ia64/sendto.S b/mdk-stage1/dietlibc/ia64/sendto.S
new file mode 100644
index 000000000..1579a3b45
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/sendto.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(sendto, sendto);
diff --git a/mdk-stage1/dietlibc/ia64/setjmp.S b/mdk-stage1/dietlibc/ia64/setjmp.S
new file mode 100644
index 000000000..f0f5bc431
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/setjmp.S
@@ -0,0 +1 @@
+/* No, I am not going to save 128 registers */
diff --git a/mdk-stage1/dietlibc/ia64/setsockopt.S b/mdk-stage1/dietlibc/ia64/setsockopt.S
new file mode 100644
index 000000000..45fcfbb6c
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/setsockopt.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(setsockopt, setsockopt);
diff --git a/mdk-stage1/dietlibc/ia64/shmat.S b/mdk-stage1/dietlibc/ia64/shmat.S
new file mode 100644
index 000000000..51248173d
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/shmat.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(shmat,shmat)
diff --git a/mdk-stage1/dietlibc/ia64/shmctl.S b/mdk-stage1/dietlibc/ia64/shmctl.S
new file mode 100644
index 000000000..d56caace4
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/shmctl.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(shmctl,shmctl)
diff --git a/mdk-stage1/dietlibc/ia64/shmdt.S b/mdk-stage1/dietlibc/ia64/shmdt.S
new file mode 100644
index 000000000..d9812a799
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/shmdt.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(shmdt,shmdt)
diff --git a/mdk-stage1/dietlibc/ia64/shmget.S b/mdk-stage1/dietlibc/ia64/shmget.S
new file mode 100644
index 000000000..82914223f
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/shmget.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(shmget,shmget)
diff --git a/mdk-stage1/dietlibc/ia64/shutdown.S b/mdk-stage1/dietlibc/ia64/shutdown.S
new file mode 100644
index 000000000..024e99e18
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/shutdown.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(shutdown, shutdown);
diff --git a/mdk-stage1/dietlibc/ia64/socket.S b/mdk-stage1/dietlibc/ia64/socket.S
new file mode 100644
index 000000000..cc453881f
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/socket.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(socket, socket);
diff --git a/mdk-stage1/dietlibc/ia64/socketpair.S b/mdk-stage1/dietlibc/ia64/socketpair.S
new file mode 100644
index 000000000..d92eaa4d8
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/socketpair.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(socketpair, socketpair);
diff --git a/mdk-stage1/dietlibc/ia64/start.S b/mdk-stage1/dietlibc/ia64/start.S
new file mode 100644
index 000000000..dbacb25f6
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/start.S
@@ -0,0 +1,45 @@
+/*
+ Copyright (C) 2002 Thomas M. Ogrisegg
+
+ This is free software. You can redistribute and
+ modify it under the terms of the GNU General Public
+ Public License.
+
+ This file is part of the IA64-Port of the dietlibc
+
+ start.S
+ Implemenation of the _start startup function
+*/
+
+.psr abi64
+.psr lsb
+.lsb
+
+.text
+.globl _start
+.proc _start
+
+_start:
+ alloc r2 = ar.pfs,0,0,7,0
+ adds out1 = 16, sp /* base arguments */
+ movl gp = @gprel(0f) /* base offset */
+ ;;
+0:
+ ld8 out0 = [out1], 8 /* load argc and set argv */
+ mov r9 = ip
+ ;;
+ shladd out2=out0,3,out1 /* envp = argv+8*argc */
+ sub gp = r9, gp /* subtract program counter */
+ ;;
+ addl r15 = @ltoff(environ#), gp /* offset to environ */
+ adds out2 = 8, out2 /* envp += 8 */
+ ;;
+ ld8 r14 = [r15]
+ ;;
+ st8 [r14] = out2 /* store envp in environ */
+ br.call.sptk.few rp = main /* call main */
+ ;;
+ mov r32 = r8 /* store return code */
+ br _exit /* branch to _exit */
+.endp _start
+.size _start, . - _start
diff --git a/mdk-stage1/dietlibc/ia64/syscalls.h b/mdk-stage1/dietlibc/ia64/syscalls.h
new file mode 100644
index 000000000..65eda0ed2
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/syscalls.h
@@ -0,0 +1,242 @@
+#ifndef __DLIBC_SYSCALL_H_
+#define __DLIBC_SYSCALL_H_
+
+#define __NR_ni_syscall 1024
+#define __NR_exit 1025
+#define __NR_read 1026
+#define __NR_write 1027
+#define __NR_open 1028
+#define __NR_close 1029
+#define __NR_creat 1030
+#define __NR_link 1031
+#define __NR_unlink 1032
+#define __NR_execve 1033
+#define __NR_chdir 1034
+#define __NR_fchdir 1035
+#define __NR_utimes 1036
+#define __NR_mknod 1037
+#define __NR_chmod 1038
+#define __NR_chown 1039
+#define __NR_lseek 1040
+#define __NR_getpid 1041
+#define __NR_getppid 1042
+#define __NR_mount 1043
+#define __NR_umount 1044
+#define __NR_setuid 1045
+#define __NR_getuid 1046
+#define __NR_geteuid 1047
+#define __NR_ptrace 1048
+#define __NR_access 1049
+#define __NR_sync 1050
+#define __NR_fsync 1051
+#define __NR_fdatasync 1052
+#define __NR_kill 1053
+#define __NR_rename 1054
+#define __NR_mkdir 1055
+#define __NR_rmdir 1056
+#define __NR_dup 1057
+#define __NR_pipe 1058
+#define __NR_times 1059
+#define __NR_brk 1060
+#define __NR_setgid 1061
+#define __NR_getgid 1062
+#define __NR_getegid 1063
+#define __NR_acct 1064
+#define __NR_ioctl 1065
+#define __NR_fcntl 1066
+#define __NR_umask 1067
+#define __NR_chroot 1068
+#define __NR_ustat 1069
+#define __NR_dup2 1070
+#define __NR_setreuid 1071
+#define __NR_setregid 1072
+#define __NR_getresuid 1073
+#define __NR_setresuid 1074
+#define __NR_getresgid 1075
+#define __NR_setresgid 1076
+#define __NR_getgroups 1077
+#define __NR_setgroups 1078
+#define __NR_getpgid 1079
+#define __NR_setpgid 1080
+#define __NR_setsid 1081
+#define __NR_getsid 1082
+#define __NR_sethostname 1083
+#define __NR_setrlimit 1084
+#define __NR_getrlimit 1085
+#define __NR_getrusage 1086
+#define __NR_gettimeofday 1087
+#define __NR_settimeofday 1088
+#define __NR_select 1089
+#define __NR_poll 1090
+#define __NR_symlink 1091
+#define __NR_readlink 1092
+#define __NR_uselib 1093
+#define __NR_swapon 1094
+#define __NR_swapoff 1095
+#define __NR_reboot 1096
+#define __NR_truncate 1097
+#define __NR_ftruncate 1098
+#define __NR_fchmod 1099
+#define __NR_fchown 1100
+#define __NR_getpriority 1101
+#define __NR_setpriority 1102
+#define __NR_statfs 1103
+#define __NR_fstatfs 1104
+#define __NR_gettid 1105
+#define __NR_semget 1106
+#define __NR_semop 1107
+#define __NR_semctl 1108
+#define __NR_msgget 1109
+#define __NR_msgsnd 1110
+#define __NR_msgrcv 1111
+#define __NR_msgctl 1112
+#define __NR_shmget 1113
+#define __NR_shmat 1114
+#define __NR_shmdt 1115
+#define __NR_shmctl 1116
+#define __NR_syslog 1117
+#define __NR_setitimer 1118
+#define __NR_getitimer 1119
+#define __NR_old_stat 1120
+#define __NR_old_lstat 1121
+#define __NR_old_fstat 1122
+#define __NR_vhangup 1123
+#define __NR_lchown 1124
+#define __NR_vm86 1125
+#define __NR_wait4 1126
+#define __NR_sysinfo 1127
+#define __NR_clone 1128
+#define __NR_setdomainname 1129
+#define __NR_uname 1130
+#define __NR_adjtimex 1131
+#define __NR_create_module 1132
+#define __NR_init_module 1133
+#define __NR_delete_module 1134
+#define __NR_get_kernel_syms 1135
+#define __NR_query_module 1136
+#define __NR_quotactl 1137
+#define __NR_bdflush 1138
+#define __NR_sysfs 1139
+#define __NR_personality 1140
+#define __NR_afs_syscall 1141
+#define __NR_setfsuid 1142
+#define __NR_setfsgid 1143
+#define __NR_getdents 1144
+#define __NR_flock 1145
+#define __NR_readv 1146
+#define __NR_writev 1147
+#define __NR_pread 1148
+#define __NR_pwrite 1149
+#define __NR__sysctl 1150
+#define __NR_mmap 1151
+#define __NR_munmap 1152
+#define __NR_mlock 1153
+#define __NR_mlockall 1154
+#define __NR_mprotect 1155
+#define __NR_mremap 1156
+#define __NR_msync 1157
+#define __NR_munlock 1158
+#define __NR_munlockall 1159
+#define __NR_sched_getparam 1160
+#define __NR_sched_setparam 1161
+#define __NR_sched_getscheduler 1162
+#define __NR_sched_setscheduler 1163
+#define __NR_sched_yield 1164
+#define __NR_sched_get_priority_max 1165
+#define __NR_sched_get_priority_min 1166
+#define __NR_sched_rr_get_interval 1167
+#define __NR_nanosleep 1168
+#define __NR_nfsservctl 1169
+#define __NR_prctl 1170
+#define __NR_mmap2 1172
+#define __NR_pciconfig_read 1173
+#define __NR_pciconfig_write 1174
+#define __NR_perfmonctl 1175
+#define __NR_sigaltstack 1176
+#define __NR_rt_sigaction 1177
+#define __NR_rt_sigpending 1178
+#define __NR_rt_sigprocmask 1179
+#define __NR_rt_sigqueueinfo 1180
+#define __NR_rt_sigreturn 1181
+#define __NR_rt_sigsuspend 1182
+#define __NR_rt_sigtimedwait 1183
+#define __NR_getcwd 1184
+#define __NR_capget 1185
+#define __NR_capset 1186
+#define __NR_sendfile 1187
+#define __NR_getpmsg 1188
+#define __NR_putpmsg 1189
+#define __NR_socket 1190
+#define __NR_bind 1191
+#define __NR_connect 1192
+#define __NR_listen 1193
+#define __NR_accept 1194
+#define __NR_getsockname 1195
+#define __NR_getpeername 1196
+#define __NR_socketpair 1197
+#define __NR_send 1198
+#define __NR_sendto 1199
+#define __NR_recv 1200
+#define __NR_recvfrom 1201
+#define __NR_shutdown 1202
+#define __NR_setsockopt 1203
+#define __NR_getsockopt 1204
+#define __NR_sendmsg 1205
+#define __NR_recvmsg 1206
+#define __NR_pivot_root 1207
+#define __NR_mincore 1208
+#define __NR_madvise 1209
+#define __NR_stat 1210
+#define __NR_lstat 1211
+#define __NR_fstat 1212
+#define __NR_clone2 1213
+#define __NR_getdents64 1214
+#define __NR_getunwind 1215
+#define __NR_readahead 1216
+#define __NR_setxattr 1217
+#define __NR_lsetxattr 1218
+#define __NR_fsetxattr 1219
+#define __NR_getxattr 1220
+#define __NR_lgetxattr 1221
+#define __NR_fgetxattr 1222
+#define __NR_listxattr 1223
+#define __NR_llistxattr 1224
+#define __NR_flistxattr 1225
+#define __NR_removexattr 1226
+#define __NR_lremovexattr 1227
+#define __NR_fremovexattr 1228
+#define __NR_tkill 1229
+#define __NR_futex 1230
+#define __NR_sched_setaffinity 1231
+#define __NR_sched_getaffinity 1232
+#define __NR_security 1233
+#define __NR_alloc_hugepages 1234
+#define __NR_free_hugepages 1235
+#define __NR_exit_group 1236
+#define __NR_lookup_dcookie 1237
+#define __NR_io_setup 1238
+#define __NR_io_destroy 1239
+#define __NR_io_getevents 1240
+#define __NR_io_submit 1241
+#define __NR_io_cancel 1242
+#define __NR_epoll_create 1243
+#define __NR_epoll_ctl 1244
+#define __NR_epoll_wait 1245
+
+#define syscall(name, sym) \
+.text; \
+.globl sym; \
+sym: \
+ mov r15 = __NR_##name; \
+ br __unified_syscall;
+
+#define syscall_weak(name, sym, wsym) \
+.text; \
+.weak wsym; \
+wsym: \
+.globl sym; \
+sym: \
+ mov r15 = __NR_##name; \
+ br __unified_syscall;
+
+#endif
diff --git a/mdk-stage1/dietlibc/ia64/unified.S b/mdk-stage1/dietlibc/ia64/unified.S
new file mode 100644
index 000000000..998fba75e
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/unified.S
@@ -0,0 +1,46 @@
+/*
+ Copyright (C) 2002 Thomas M. Ogrisegg
+
+ This is free software. You can redistribute and
+ modify it under the terms of the GNU General Public
+ Public License.
+
+ This file is part of the ia64-Port of dietlibc
+
+ unified.S
+ General system-call interface
+*/
+
+.lsb
+
+.text
+
+.globl __unified_syscall
+.proc __unified_syscall
+.globl __error_unified_syscall
+.proc __error_unified_syscall
+.globl _exit
+.proc _exit
+
+_exit:
+ mov r15 = 1025
+.endp _exit
+.size _exit, . - _exit
+
+__unified_syscall:
+ break.i 0x100000
+ movl r2=errno
+ cmp.eq p6,p0=-1,r10
+ ;;
+__error_unified_syscall:
+(p6) st4 [r2]=r8
+(p6) mov r8=-1
+
+#include "dietuglyweaks.h"
+
+ br.ret.sptk.few rp
+
+.endp __unified_syscall
+.endp __error_unified_syscall
+.size __unified_syscall, __error_unified_syscall - __unified_syscall
+.size __error_unified_syscall, . - __error_unified_syscall
diff --git a/mdk-stage1/dietlibc/ia64/utime.S b/mdk-stage1/dietlibc/ia64/utime.S
new file mode 100644
index 000000000..a9a8aada6
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/utime.S
@@ -0,0 +1,3 @@
+#include "syscalls.h"
+
+syscall(utimes,utime)
diff --git a/mdk-stage1/dietlibc/ia64/vfork.S b/mdk-stage1/dietlibc/ia64/vfork.S
new file mode 100644
index 000000000..e59f04364
--- /dev/null
+++ b/mdk-stage1/dietlibc/ia64/vfork.S
@@ -0,0 +1,8 @@
+#include "syscalls.h"
+
+.text
+.globl vfork
+vfork:
+ mov r15 = __NR_clone
+ mov r32 = 16657
+ br __unified_syscall
diff --git a/mdk-stage1/dietlibc/include/alloca.h b/mdk-stage1/dietlibc/include/alloca.h
index e69de29bb..41f92354f 100644
--- a/mdk-stage1/dietlibc/include/alloca.h
+++ b/mdk-stage1/dietlibc/include/alloca.h
@@ -0,0 +1,13 @@
+#ifndef _ALLOCA_H
+#define _ALLOCA_H
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+#ifdef __GNUC__
+#define alloca(x) __builtin_alloca(x)
+#else
+void *alloca(size_t size) __THROW;
+#endif
+
+#endif
diff --git a/mdk-stage1/dietlibc/include/arpa/inet.h b/mdk-stage1/dietlibc/include/arpa/inet.h
index 6d5a6dc35..bb278d399 100644
--- a/mdk-stage1/dietlibc/include/arpa/inet.h
+++ b/mdk-stage1/dietlibc/include/arpa/inet.h
@@ -9,6 +9,7 @@ int inet_aton(const char *cp, struct in_addr *inp) __THROW;
unsigned long int inet_addr(const char *cp) __THROW;
unsigned long int inet_network(const char *cp) __THROW;
char *inet_ntoa(struct in_addr in) __THROW;
+char *inet_ntoa_r(struct in_addr in,char* buf) __THROW;
struct in_addr inet_makeaddr(int net, int host) __THROW;
unsigned long int inet_lnaof(struct in_addr in) __THROW;
unsigned long int inet_netof(struct in_addr in) __THROW;
diff --git a/mdk-stage1/dietlibc/include/arpa/nameser.h b/mdk-stage1/dietlibc/include/arpa/nameser.h
index 1ee048d66..9327006b0 100644
--- a/mdk-stage1/dietlibc/include/arpa/nameser.h
+++ b/mdk-stage1/dietlibc/include/arpa/nameser.h
@@ -89,6 +89,42 @@ typedef enum __ns_class {
ns_c_max = 65536
} ns_class;
+/*
+ * Currently defined opcodes.
+ */
+typedef enum __ns_opcode {
+ ns_o_query = 0, /* Standard query. */
+ ns_o_iquery = 1, /* Inverse query (deprecated/unsupported). */
+ ns_o_status = 2, /* Name server status query (unsupported). */
+ /* Opcode 3 is undefined/reserved. */
+ ns_o_notify = 4, /* Zone change notification. */
+ ns_o_update = 5, /* Zone update message. */
+ ns_o_max = 6
+} ns_opcode;
+
+/*
+ * Currently defined response codes.
+ */
+typedef enum __ns_rcode {
+ ns_r_noerror = 0, /* No error occurred. */
+ ns_r_formerr = 1, /* Format error. */
+ ns_r_servfail = 2, /* Server failure. */
+ ns_r_nxdomain = 3, /* Name error. */
+ ns_r_notimpl = 4, /* Unimplemented. */
+ ns_r_refused = 5, /* Operation refused. */
+ /* these are for BIND_UPDATE */
+ ns_r_yxdomain = 6, /* Name exists */
+ ns_r_yxrrset = 7, /* RRset exists */
+ ns_r_nxrrset = 8, /* RRset does not exist */
+ ns_r_notauth = 9, /* Not authoritative for zone */
+ ns_r_notzone = 10, /* Zone of record different from zone section */
+ ns_r_max = 11,
+ /* The following are TSIG extended errors */
+ ns_r_badsig = 16,
+ ns_r_badkey = 17,
+ ns_r_badtime = 18
+} ns_rcode;
+
typedef struct {
unsigned id :16; /* query identification number */
#if BYTE_ORDER == BIG_ENDIAN
diff --git a/mdk-stage1/dietlibc/include/asm/alpha-sigcontext.h b/mdk-stage1/dietlibc/include/asm/alpha-sigcontext.h
new file mode 100644
index 000000000..13faab0b5
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/alpha-sigcontext.h
@@ -0,0 +1,29 @@
+struct sigcontext {
+ /*
+ * What should we have here? I'd probably better use the same
+ * stack layout as OSF/1, just in case we ever want to try
+ * running their binaries..
+ *
+ * This is the basic layout, but I don't know if we'll ever
+ * actually fill in all the values..
+ */
+ long sc_onstack;
+ long sc_mask;
+ long sc_pc;
+ long sc_ps;
+ long sc_regs[32];
+ long sc_ownedfp;
+ long sc_fpregs[32];
+ unsigned long sc_fpcr;
+ unsigned long sc_fp_control;
+ unsigned long sc_reserved1, sc_reserved2;
+ unsigned long sc_ssize;
+ char * sc_sbase;
+ unsigned long sc_traparg_a0;
+ unsigned long sc_traparg_a1;
+ unsigned long sc_traparg_a2;
+ unsigned long sc_fp_trap_pc;
+ unsigned long sc_fp_trigger_sum;
+ unsigned long sc_fp_trigger_inst;
+};
+
diff --git a/mdk-stage1/dietlibc/include/asm/arm-sigcontext.h b/mdk-stage1/dietlibc/include/asm/arm-sigcontext.h
new file mode 100644
index 000000000..26fa04e64
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/arm-sigcontext.h
@@ -0,0 +1,32 @@
+
+#define PC(ctx) (ctx.arm_pc)
+
+/*
+ * Signal context structure - contains all info to do with the state
+ * before the signal handler was invoked. Note: only add new entries
+ * to the end of the structure.
+ */
+struct sigcontext {
+ unsigned long trap_no;
+ unsigned long error_code;
+ unsigned long oldmask;
+ unsigned long arm_r0;
+ unsigned long arm_r1;
+ unsigned long arm_r2;
+ unsigned long arm_r3;
+ unsigned long arm_r4;
+ unsigned long arm_r5;
+ unsigned long arm_r6;
+ unsigned long arm_r7;
+ unsigned long arm_r8;
+ unsigned long arm_r9;
+ unsigned long arm_r10;
+ unsigned long arm_fp;
+ unsigned long arm_ip;
+ unsigned long arm_sp;
+ unsigned long arm_lr;
+ unsigned long arm_pc;
+ unsigned long arm_cpsr;
+ unsigned long fault_address;
+};
+
diff --git a/mdk-stage1/dietlibc/include/asm/i386-sigcontext.h b/mdk-stage1/dietlibc/include/asm/i386-sigcontext.h
new file mode 100644
index 000000000..e830b9b97
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/i386-sigcontext.h
@@ -0,0 +1,66 @@
+
+struct _fpreg {
+ unsigned short significand[4];
+ unsigned short exponent;
+};
+
+struct _fpxreg {
+ unsigned short significand[4];
+ unsigned short exponent;
+ unsigned short padding[3];
+};
+
+struct _xmmreg {
+ unsigned long element[4];
+};
+
+struct _fpstate {
+ /* Regular FPU environment */
+ unsigned long cw;
+ unsigned long sw;
+ unsigned long tag;
+ unsigned long ipoff;
+ unsigned long cssel;
+ unsigned long dataoff;
+ unsigned long datasel;
+ struct _fpreg _st[8];
+ unsigned short status;
+ unsigned short magic; /* 0xffff = regular FPU data only */
+
+ /* FXSR FPU environment */
+ unsigned long _fxsr_env[6]; /* FXSR FPU env is ignored */
+ unsigned long mxcsr;
+ unsigned long reserved;
+ struct _fpxreg _fxsr_st[8]; /* FXSR FPU reg data is ignored */
+ struct _xmmreg _xmm[8];
+ unsigned long padding[56];
+};
+
+#define X86_FXSR_MAGIC 0x0000
+#define PC(ctx) (ctx.eip)
+
+struct sigcontext {
+ unsigned short gs, __gsh;
+ unsigned short fs, __fsh;
+ unsigned short es, __esh;
+ unsigned short ds, __dsh;
+ unsigned long edi;
+ unsigned long esi;
+ unsigned long ebp;
+ unsigned long esp;
+ unsigned long ebx;
+ unsigned long edx;
+ unsigned long ecx;
+ unsigned long eax;
+ unsigned long trapno;
+ unsigned long err;
+ unsigned long eip;
+ unsigned short cs, __csh;
+ unsigned long eflags;
+ unsigned long esp_at_signal;
+ unsigned short ss, __ssh;
+ struct _fpstate * fpstate;
+ unsigned long oldmask;
+ unsigned long cr2;
+};
+
diff --git a/mdk-stage1/dietlibc/include/asm/ia64-sigcontext.h b/mdk-stage1/dietlibc/include/asm/ia64-sigcontext.h
new file mode 100644
index 000000000..ebab3c8f4
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/ia64-sigcontext.h
@@ -0,0 +1,25 @@
+#include <sys/ptrace.h>
+
+#define PC(ctx) (ctx.sc_ip)
+
+struct sigcontext {
+ unsigned long sc_flags;
+ unsigned long sc_nat;
+ stack_t sc_stack;
+ unsigned long sc_ip;
+ unsigned long sc_cfm;
+ unsigned long sc_um;
+ unsigned long sc_ar_rsc;
+ unsigned long sc_ar_bsp;
+ unsigned long sc_ar_rnat;
+ unsigned long sc_ar_ccv;
+ unsigned long sc_ar_unat;
+ unsigned long sc_ar_fpsr;
+ unsigned long sc_ar_pfs;
+ unsigned long sc_ar_lc;
+ unsigned long sc_pr;
+ unsigned long sc_br[8];
+ unsigned long sc_gr[32];
+ struct ia64_fpreg sc_fr[128];
+ sigset_t sc_mask;
+};
diff --git a/mdk-stage1/dietlibc/include/asm/mips-sigcontext.h b/mdk-stage1/dietlibc/include/asm/mips-sigcontext.h
new file mode 100644
index 000000000..1210abf31
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/mips-sigcontext.h
@@ -0,0 +1,23 @@
+
+/*
+ * Keep this struct definition in sync with the sigcontext fragment
+ * in arch/mips/tools/offset.c
+ */
+struct sigcontext {
+ unsigned int sc_regmask; /* Unused */
+ unsigned int sc_status;
+ unsigned long long sc_pc;
+ unsigned long long sc_regs[32];
+ unsigned long long sc_fpregs[32]; /* Unused */
+ unsigned int sc_ownedfp;
+ unsigned int sc_fpc_csr; /* Unused */
+ unsigned int sc_fpc_eir; /* Unused */
+ unsigned int sc_ssflags; /* Unused */
+ unsigned long long sc_mdhi;
+ unsigned long long sc_mdlo;
+
+ unsigned int sc_cause; /* Unused */
+ unsigned int sc_badvaddr; /* Unused */
+
+ unsigned long sc_sigset[4]; /* kernel's sigset_t */
+};
diff --git a/mdk-stage1/dietlibc/include/asm/parisc-sigcontext.h b/mdk-stage1/dietlibc/include/asm/parisc-sigcontext.h
new file mode 100644
index 000000000..9428dd3e5
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/parisc-sigcontext.h
@@ -0,0 +1,16 @@
+
+#define PARISC_SC_FLAG_ONSTACK 1<<0
+#define PARISC_SC_FLAG_IN_SYSCALL 1<<1
+
+/* We will add more stuff here as it becomes necessary, until we know
+ it works. */
+struct sigcontext {
+ unsigned long sc_flags;
+
+ unsigned long sc_gr[32]; /* PSW in sc_gr[0] */
+ unsigned long long sc_fr[32]; /* FIXME, do we need other state info? */
+ unsigned long sc_iasq[2];
+ unsigned long sc_iaoq[2];
+ unsigned long sc_sar; /* cr11 */
+};
+
diff --git a/mdk-stage1/dietlibc/include/asm/ppc-sigcontext.h b/mdk-stage1/dietlibc/include/asm/ppc-sigcontext.h
new file mode 100644
index 000000000..1d9704f3a
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/ppc-sigcontext.h
@@ -0,0 +1,76 @@
+
+struct pt_regs {
+ unsigned long gpr[32];
+ unsigned long nip;
+ unsigned long msr;
+ unsigned long orig_gpr3; /* Used for restarting system calls */
+ unsigned long ctr;
+ unsigned long link;
+ unsigned long xer;
+ unsigned long ccr;
+ unsigned long mq; /* 601 only (not used at present) */
+ /* Used on APUS to hold IPL value. */
+ unsigned long trap; /* Reason for being here */
+ unsigned long dar; /* Fault registers */
+ unsigned long dsisr;
+ unsigned long result; /* Result of a system call */
+};
+
+/*
+ * Offsets used by 'ptrace' system call interface.
+ * These can't be changed without breaking binary compatibility
+ * with MkLinux, etc.
+ */
+#define PT_R0 0
+#define PT_R1 1
+#define PT_R2 2
+#define PT_R3 3
+#define PT_R4 4
+#define PT_R5 5
+#define PT_R6 6
+#define PT_R7 7
+#define PT_R8 8
+#define PT_R9 9
+#define PT_R10 10
+#define PT_R11 11
+#define PT_R12 12
+#define PT_R13 13
+#define PT_R14 14
+#define PT_R15 15
+#define PT_R16 16
+#define PT_R17 17
+#define PT_R18 18
+#define PT_R19 19
+#define PT_R20 20
+#define PT_R21 21
+#define PT_R22 22
+#define PT_R23 23
+#define PT_R24 24
+#define PT_R25 25
+#define PT_R26 26
+#define PT_R27 27
+#define PT_R28 28
+#define PT_R29 29
+#define PT_R30 30
+#define PT_R31 31
+
+#define PT_NIP 32
+#define PT_MSR 33
+#define PT_CTR 35
+#define PT_LNK 36
+#define PT_XER 37
+#define PT_CCR 38
+#define PT_MQ 39
+
+#define PT_FPR0 48 /* each FP reg occupies 2 slots in this space */
+#define PT_FPR31 (PT_FPR0 + 2*31)
+#define PT_FPSCR (PT_FPR0 + 2*32 + 1)
+
+#define sigcontext_struct sigcontext
+struct sigcontext {
+ unsigned long _unused[4];
+ int signal;
+ unsigned long handler;
+ unsigned long oldmask;
+ struct pt_regs *regs;
+};
diff --git a/mdk-stage1/dietlibc/include/asm/sigcontext.h b/mdk-stage1/dietlibc/include/asm/sigcontext.h
new file mode 100644
index 000000000..c4a720cc0
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/sigcontext.h
@@ -0,0 +1,36 @@
+#ifndef _ASM_SIGCONTEXT_H
+#define _ASM_SIGCONTEXT_H
+
+#if defined(__i386__) || defined(__x86_64__)
+#include <asm/i386-sigcontext.h>
+#endif
+
+#ifdef __sparc__
+#include <asm/sparc-sigcontext.h>
+#endif
+
+#ifdef __mips__
+#include <asm/mips-sigcontext.h>
+#endif
+
+#ifdef __powerpc__
+#include <asm/ppc-sigcontext.h>
+#endif
+
+#ifdef __alpha__
+#include <asm/alpha-sigcontext.h>
+#endif
+
+#ifdef __arm__
+#include <asm/arm-sigcontext.h>
+#endif
+
+#ifdef __hppa__
+#include <asm/parisc-sigcontext.h>
+#endif
+
+#ifdef __ia64__
+#include <asm/ia64-sigcontext.h>
+#endif
+
+#endif
diff --git a/mdk-stage1/dietlibc/include/asm/sparc-sigcontext.h b/mdk-stage1/dietlibc/include/asm/sparc-sigcontext.h
new file mode 100644
index 000000000..98e4e09ce
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/sparc-sigcontext.h
@@ -0,0 +1,50 @@
+
+#define __SUNOS_MAXWIN 31
+
+/* This is what SunOS does, so shall I. */
+struct sigcontext {
+ int sigc_onstack; /* state to restore */
+ int sigc_mask; /* sigmask to restore */
+ int sigc_sp; /* stack pointer */
+ int sigc_pc; /* program counter */
+ int sigc_npc; /* next program counter */
+ int sigc_psr; /* for condition codes etc */
+ int sigc_g1; /* User uses these two registers */
+ int sigc_o0; /* within the trampoline code. */
+
+ /* Now comes information regarding the users window set
+ * at the time of the signal.
+ */
+ int sigc_oswins; /* outstanding windows */
+
+ /* stack ptrs for each regwin buf */
+ char *sigc_spbuf[__SUNOS_MAXWIN];
+
+ /* Windows to restore after signal */
+ struct {
+ unsigned long locals[8];
+ unsigned long ins[8];
+ } sigc_wbuf[__SUNOS_MAXWIN];
+};
+
+typedef struct {
+ struct {
+ unsigned long psr;
+ unsigned long pc;
+ unsigned long npc;
+ unsigned long y;
+ unsigned long u_regs[16]; /* globals and ins */
+ } si_regs;
+ int si_mask;
+} __siginfo_t;
+
+typedef struct {
+ unsigned long si_float_regs [32];
+ unsigned long si_fsr;
+ unsigned long si_fpqdepth;
+ struct {
+ unsigned long *insn_addr;
+ unsigned long insn;
+ } si_fpqueue [16];
+} __siginfo_fpu_t;
+
diff --git a/mdk-stage1/dietlibc/include/asm/statfs.h b/mdk-stage1/dietlibc/include/asm/statfs.h
new file mode 100644
index 000000000..53b3b5e4d
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/statfs.h
@@ -0,0 +1 @@
+#include <sys/vfs.h>
diff --git a/mdk-stage1/dietlibc/include/asm/types.h b/mdk-stage1/dietlibc/include/asm/types.h
new file mode 100644
index 000000000..aafa80f16
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/asm/types.h
@@ -0,0 +1,32 @@
+#ifndef _ASM_TYPES_H
+#define _ASM_TYPES_H
+
+#include <sys/types.h>
+
+#ifdef __alpha__
+typedef unsigned int umode_t;
+#else
+typedef unsigned short umode_t;
+#endif
+
+typedef uint8_t __u8;
+typedef uint16_t __u16;
+typedef uint32_t __u32;
+#ifndef __STRICT_ANSI__
+typedef uint64_t __u64;
+#endif
+
+typedef int8_t __s8;
+typedef int16_t __s16;
+typedef int32_t __s32;
+#ifndef __STRICT_ANSI__
+typedef int64_t __s64;
+#endif
+
+#if defined(__alpha__)
+typedef unsigned long __kernel_size_t;
+#else
+typedef unsigned int __kernel_size_t;
+#endif
+
+#endif
diff --git a/mdk-stage1/dietlibc/include/assert.h b/mdk-stage1/dietlibc/include/assert.h
index bb573d0f2..a8ce3ce87 100644
--- a/mdk-stage1/dietlibc/include/assert.h
+++ b/mdk-stage1/dietlibc/include/assert.h
@@ -4,24 +4,35 @@
#include <sys/cdefs.h>
/* This prints an "Assertion failed" message and aborts. */
-extern void __assert_fail (__const char *__assertion, __const char *__file,
- unsigned int __line, __const char *__function)
+extern void __assert_fail (const char *__assertion, const char *__file,
+ unsigned int __line, const char *__function)
__THROW __attribute__ ((__noreturn__));
#ifdef __PRETTY_FUNCTION__
#define __ASSERT_FUNCTION __PRETTY_FUNCTION__
#else
-#define __ASSERT_FUNCTION __func__
+# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+# define __ASSERT_FUNCTION __func__
+# else
+# define __ASSERT_FUNCTION ((const char *) 0)
+# endif
#endif
#undef assert
#ifdef NDEBUG
#define assert(expr)
#else
+#ifdef expect
+# define assert(expr) \
+ ((void) (expect((long)(expr),0) ? 0 : \
+ (__assert_fail (#expr, \
+ __FILE__, __LINE__, __ASSERT_FUNCTION), 0)))
+#else
# define assert(expr) \
((void) ((expr) ? 0 : \
(__assert_fail (#expr, \
__FILE__, __LINE__, __ASSERT_FUNCTION), 0)))
#endif
+#endif
#endif
diff --git a/mdk-stage1/dietlibc/include/cpio.h b/mdk-stage1/dietlibc/include/cpio.h
new file mode 100644
index 000000000..a18c2fbb6
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/cpio.h
@@ -0,0 +1,27 @@
+#ifndef _CPIO_H_
+#define _CPIO_H_
+
+#define C_IRUSR 0000400
+#define C_IWUSR 0000200
+#define C_IXUSR 0000100
+#define C_IRGRP 0000040
+#define C_IWGRP 0000020
+#define C_IXGRP 0000010
+#define C_IROTH 0000004
+#define C_IWOTH 0000002
+#define C_IXOTH 0000001
+#define C_ISUID 0004000
+#define C_ISGID 0002000
+#define C_ISVTX 0001000
+#define C_ISDIR 0040000
+#define C_ISFIFO 0010000
+#define C_ISREG 0100000
+#define C_ISBLK 0060000
+#define C_ISCHR 0020000
+#define C_ISCTG 0110000
+#define C_ISLNK 0120000
+#define C_ISSOCK 0140000
+
+#define MAGIC "070707"
+
+#endif /* _CPIO_H_ */
diff --git a/mdk-stage1/dietlibc/include/daemon.h b/mdk-stage1/dietlibc/include/daemon.h
index 9049f367d..e2413d42b 100644
--- a/mdk-stage1/dietlibc/include/daemon.h
+++ b/mdk-stage1/dietlibc/include/daemon.h
@@ -1,6 +1,6 @@
#ifndef _DAEMON_H
#define _DAEMON_H
-extern int daemon (int nochdir,int noclose);
+#include <unistd.h>
#endif
diff --git a/mdk-stage1/dietlibc/include/dietref.h b/mdk-stage1/dietlibc/include/dietref.h
new file mode 100644
index 000000000..99d446300
--- /dev/null
+++ b/mdk-stage1/dietlibc/include/dietref.h
@@ -0,0 +1,22 @@
+/* diet includes this file to create linker dependencies on the diet
+ * libc, so trying to link an object file compiled with diet against
+ * glibc will fail. */
+
+#ifndef NODIETREF
+#include <endian.h>
+#ifdef __ASSEMBLER__
+.section .note
+#if (__WORDSIZE == 64)
+.quad __you_tried_to_link_a_dietlibc_object_against_glibc
+#else
+.long __you_tried_to_link_a_dietlibc_object_against_glibc
+#endif
+.previous
+#else
+#if (__WORDSIZE == 64)
+__asm__ (".section .note\n\t.quad __you_tried_to_link_a_dietlibc_object_against_glibc\n\t.previous");
+#else
+__asm__ (".section .note\n\t.long __you_tried_to_link_a_dietlibc_object_against_glibc\n\t.previous");
+#endif
+#endif
+#endif
diff --git a/mdk-stage1/dietlibc/include/dirent.h b/mdk-stage1/dietlibc/include/dirent.h
index b0ad4f5ec..ad8b3a41a 100644
--- a/mdk-stage1/dietlibc/include/dirent.h
+++ b/mdk-stage1/dietlibc/include/dirent.h
@@ -3,15 +3,30 @@
#include <sys/cdefs.h>
#include <sys/types.h>
+#include <limits.h>
-#include <linux/dirent.h>
+struct dirent {
+ long d_ino;
+ off_t d_off;
+ unsigned short d_reclen;
+ char d_name[256]; /* We must not include limits.h! */
+};
+
+#ifndef __STRICT_ANSI__
+struct dirent64 {
+ uint64_t d_ino;
+ int64_t d_off;
+ unsigned short d_reclen;
+ unsigned char d_type;
+ char d_name[256];
+};
+#endif
#define d_fileno d_ino /* Backwards compatibility. */
#undef _DIRENT_HAVE_D_NAMLEN
#define _DIRENT_HAVE_D_RECLEN
#define _DIRENT_HAVE_D_OFF
-#define _DIRENT_HAVE_D_TYPE
typedef struct __dirstream DIR;
@@ -23,4 +38,27 @@ void rewinddir (DIR *__dirp) __THROW;
void seekdir (DIR *__dirp, long int __pos) __THROW;
long int telldir (DIR *__dirp) __THROW;
+int scandir(const char *dir, struct dirent ***namelist,
+ int (*selection)(const struct dirent *),
+ int (*compar)(const struct dirent **, const struct dirent **)) __THROW;
+int scandir64(const char *dir, struct dirent64 ***namelist,
+ int (*selection)(const struct dirent64 *),
+ int (*compar)(const struct dirent64 **, const struct dirent64 **)) __THROW;
+
+int alphasort(const struct dirent **a, const struct dirent **b) __THROW __attribute__((const));
+int alphasort64(const struct dirent64 **a, const struct dirent64 **b) __THROW __attribute__((const));
+
+#define MAXNAMLEN NAME_MAX
+
+#ifdef _BSD_SOURCE
+extern int dirfd(DIR *dirp) __THROW;
+#endif
+
+#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
+#define dirent dirent64
+#define readdir readdir64
+#define scandir scandir64
+#define alphasort alphasort64
+#endif
+
#endif
diff --git a/mdk-stage1/dietlibc/include/dlfcn.h b/mdk-stage1/dietlibc/include/dlfcn.h
index b96f8f615..0ddcafdba 100644
--- a/mdk-stage1/dietlibc/include/dlfcn.h
+++ b/mdk-stage1/dietlibc/include/dlfcn.h
@@ -7,6 +7,9 @@
#define RTLD_LOCAL 0x00000
#define RTLD_GLOBAL 0x10000
+#define RTLD_DEFAULT ((void*)1)
+#define RTLD_NEXT ((void*)2)
+
void *dlopen (const char *filename, int flag);
const char *dlerror(void);
void *dlsym(void *handle, char *symbol);
diff --git a/mdk-stage1/dietlibc/include/elf.h b/mdk-stage1/dietlibc/include/elf.h
index be09dbee4..7b198bad3 100644
--- a/mdk-stage1/dietlibc/include/elf.h
+++ b/mdk-stage1/dietlibc/include/elf.h
@@ -1 +1,780 @@
-#include <linux/elf.h>
+#ifndef _ELF_H
+#define _ELF_H
+
+#include <inttypes.h>
+
+/* 32-bit ELF base types. */
+typedef uint32_t Elf32_Addr;
+typedef uint16_t Elf32_Half;
+typedef uint32_t Elf32_Off;
+typedef int32_t Elf32_Sword;
+typedef uint32_t Elf32_Word;
+
+/* 64-bit ELF base types. */
+typedef uint64_t Elf64_Addr;
+typedef uint16_t Elf64_Half;
+typedef int16_t Elf64_SHalf;
+typedef uint64_t Elf64_Off;
+typedef int32_t Elf64_Sword;
+typedef uint32_t Elf64_Word;
+typedef uint64_t Elf64_Xword;
+typedef int64_t Elf64_Sxword;
+
+/* These constants are for the segment types stored in the image headers */
+#define PT_NULL 0
+#define PT_LOAD 1
+#define PT_DYNAMIC 2
+#define PT_INTERP 3
+#define PT_NOTE 4
+#define PT_SHLIB 5
+#define PT_PHDR 6
+#define PT_LOPROC 0x70000000
+#define PT_HIPROC 0x7fffffff
+#define PT_MIPS_REGINFO 0x70000000
+
+/* Flags in the e_flags field of the header */
+#define EF_MIPS_NOREORDER 0x00000001
+#define EF_MIPS_PIC 0x00000002
+#define EF_MIPS_CPIC 0x00000004
+#define EF_MIPS_ARCH 0xf0000000
+
+/* These constants define the different elf file types */
+#define ET_NONE 0
+#define ET_REL 1
+#define ET_EXEC 2
+#define ET_DYN 3
+#define ET_CORE 4
+#define ET_LOPROC 0xff00
+#define ET_HIPROC 0xffff
+
+/* These constants define the various ELF target machines */
+#define EM_NONE 0
+#define EM_M32 1
+#define EM_SPARC 2
+#define EM_386 3
+#define EM_68K 4
+#define EM_88K 5
+#define EM_486 6 /* Perhaps disused */
+#define EM_860 7
+
+#define EM_MIPS 8 /* MIPS R3000 (officially, big-endian only) */
+#define EM_MIPS_RS4_BE 10 /* MIPS R4000 big-endian */
+
+#define EM_PARISC 15 /* HPPA */
+#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */
+#define EM_PPC 20 /* PowerPC */
+#define EM_S390 22 /* IBM S/390 */
+
+#define EM_ARM 40 /* ARM */
+#define EM_SH 42 /* SuperH */
+#define EM_SPARCV9 43 /* SPARC v9 64-bit */
+#define EM_IA_64 50 /* HP/Intel IA-64 */
+#define EM_X86_64 62 /* AMD x86-64 */
+#define EM_CRIS 76 /* Axis Communications 32-bit embedded processor */
+
+/*
+ * This is an interim value that we will use until the committee comes
+ * up with a final number.
+ */
+#define EM_ALPHA 0x9026
+
+/*
+ * This is the old interim value for S/390 architecture
+ */
+#define EM_S390_OLD 0xA390
+
+/* This is the info that is needed to parse the dynamic section of the file */
+#define DT_NULL 0
+#define DT_NEEDED 1
+#define DT_PLTRELSZ 2
+#define DT_PLTGOT 3
+#define DT_HASH 4
+#define DT_STRTAB 5
+#define DT_SYMTAB 6
+#define DT_RELA 7
+#define DT_RELASZ 8
+#define DT_RELAENT 9
+#define DT_STRSZ 10
+#define DT_SYMENT 11
+#define DT_INIT 12
+#define DT_FINI 13
+#define DT_SONAME 14
+#define DT_RPATH 15
+#define DT_SYMBOLIC 16
+#define DT_REL 17
+#define DT_RELSZ 18
+#define DT_RELENT 19
+#define DT_PLTREL 20
+#define DT_DEBUG 21
+#define DT_TEXTREL 22
+#define DT_JMPREL 23
+#define DT_NUM 24
+#define DT_LOPROC 0x70000000
+#define DT_HIPROC 0x7fffffff
+#define DT_MIPS_RLD_VERSION 0x70000001
+#define DT_MIPS_TIME_STAMP 0x70000002
+#define DT_MIPS_ICHECKSUM 0x70000003
+#define DT_MIPS_IVERSION 0x70000004
+#define DT_MIPS_FLAGS 0x70000005
+ #define RHF_NONE 0
+ #define RHF_HARDWAY 1
+ #define RHF_NOTPOT 2
+#define DT_MIPS_BASE_ADDRESS 0x70000006
+#define DT_MIPS_CONFLICT 0x70000008
+#define DT_MIPS_LIBLIST 0x70000009
+#define DT_MIPS_LOCAL_GOTNO 0x7000000a
+#define DT_MIPS_CONFLICTNO 0x7000000b
+#define DT_MIPS_LIBLISTNO 0x70000010
+#define DT_MIPS_SYMTABNO 0x70000011
+#define DT_MIPS_UNREFEXTNO 0x70000012
+#define DT_MIPS_GOTSYM 0x70000013
+#define DT_MIPS_HIPAGENO 0x70000014
+#define DT_MIPS_RLD_MAP 0x70000016
+
+/* This info is needed when parsing the symbol table */
+#define STB_LOCAL 0
+#define STB_GLOBAL 1
+#define STB_WEAK 2
+
+#define STT_NOTYPE 0
+#define STT_OBJECT 1
+#define STT_FUNC 2
+#define STT_SECTION 3
+#define STT_FILE 4
+
+#define ELF32_ST_BIND(x) ((x) >> 4)
+#define ELF32_ST_TYPE(x) (((unsigned int) x) & 0xf)
+
+#define ELF64_ST_BIND(val) ELF32_ST_BIND (val)
+#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val)
+
+/* Symbolic values for the entries in the auxiliary table
+ put on the initial stack */
+#define AT_NULL 0 /* end of vector */
+#define AT_IGNORE 1 /* entry should be ignored */
+#define AT_EXECFD 2 /* file descriptor of program */
+#define AT_PHDR 3 /* program headers for program */
+#define AT_PHENT 4 /* size of program header entry */
+#define AT_PHNUM 5 /* number of program headers */
+#define AT_PAGESZ 6 /* system page size */
+#define AT_BASE 7 /* base address of interpreter */
+#define AT_FLAGS 8 /* flags */
+#define AT_ENTRY 9 /* entry point of program */
+#define AT_NOTELF 10 /* program is not ELF */
+#define AT_UID 11 /* real uid */
+#define AT_EUID 12 /* effective uid */
+#define AT_GID 13 /* real gid */
+#define AT_EGID 14 /* effective gid */
+#define AT_PLATFORM 15 /* string identifying CPU for optimizations */
+#define AT_HWCAP 16 /* arch dependent hints at CPU capabilities */
+#define AT_CLKTCK 17 /* frequency at which times() increments */
+
+typedef struct dynamic{
+ Elf32_Sword d_tag;
+ union{
+ Elf32_Sword d_val;
+ Elf32_Addr d_ptr;
+ } d_un;
+} Elf32_Dyn;
+
+typedef struct {
+ Elf64_Sxword d_tag; /* entry tag value */
+ union {
+ Elf64_Xword d_val;
+ Elf64_Addr d_ptr;
+ } d_un;
+} Elf64_Dyn;
+
+/* The following are used with relocations */
+#define ELF32_R_SYM(x) ((x) >> 8)
+#define ELF32_R_TYPE(x) ((x) & 0xff)
+
+#define ELF64_R_SYM(x) ((x) >> 32)
+#define ELF64_R_TYPE(x) ((x) & 0xffffffff)
+
+#define R_386_NONE 0
+#define R_386_32 1
+#define R_386_PC32 2
+#define R_386_GOT32 3
+#define R_386_PLT32 4
+#define R_386_COPY 5
+#define R_386_GLOB_DAT 6
+#define R_386_JMP_SLOT 7
+#define R_386_RELATIVE 8
+#define R_386_GOTOFF 9
+#define R_386_GOTPC 10
+#define R_386_NUM 11
+
+#define R_MIPS_NONE 0
+#define R_MIPS_16 1
+#define R_MIPS_32 2
+#define R_MIPS_REL32 3
+#define R_MIPS_26 4
+#define R_MIPS_HI16 5
+#define R_MIPS_LO16 6
+#define R_MIPS_GPREL16 7
+#define R_MIPS_LITERAL 8
+#define R_MIPS_GOT16 9
+#define R_MIPS_PC16 10
+#define R_MIPS_CALL16 11
+#define R_MIPS_GPREL32 12
+/* The remaining relocs are defined on Irix, although they are not
+ in the MIPS ELF ABI. */
+#define R_MIPS_UNUSED1 13
+#define R_MIPS_UNUSED2 14
+#define R_MIPS_UNUSED3 15
+#define R_MIPS_SHIFT5 16
+#define R_MIPS_SHIFT6 17
+#define R_MIPS_64 18
+#define R_MIPS_GOT_DISP 19
+#define R_MIPS_GOT_PAGE 20
+#define R_MIPS_GOT_OFST 21
+/*
+ * The following two relocation types are specified in the MIPS ABI
+ * conformance guide version 1.2 but not yet in the psABI.
+ */
+#define R_MIPS_GOTHI16 22
+#define R_MIPS_GOTLO16 23
+#define R_MIPS_SUB 24
+#define R_MIPS_INSERT_A 25
+#define R_MIPS_INSERT_B 26
+#define R_MIPS_DELETE 27
+#define R_MIPS_HIGHER 28
+#define R_MIPS_HIGHEST 29
+/*
+ * The following two relocation types are specified in the MIPS ABI
+ * conformance guide version 1.2 but not yet in the psABI.
+ */
+#define R_MIPS_CALLHI16 30
+#define R_MIPS_CALLLO16 31
+/*
+ * This range is reserved for vendor specific relocations.
+ */
+#define R_MIPS_LOVENDOR 100
+#define R_MIPS_HIVENDOR 127
+
+
+/*
+ * Sparc ELF relocation types
+ */
+#define R_SPARC_NONE 0
+#define R_SPARC_8 1
+#define R_SPARC_16 2
+#define R_SPARC_32 3
+#define R_SPARC_DISP8 4
+#define R_SPARC_DISP16 5
+#define R_SPARC_DISP32 6
+#define R_SPARC_WDISP30 7
+#define R_SPARC_WDISP22 8
+#define R_SPARC_HI22 9
+#define R_SPARC_22 10
+#define R_SPARC_13 11
+#define R_SPARC_LO10 12
+#define R_SPARC_GOT10 13
+#define R_SPARC_GOT13 14
+#define R_SPARC_GOT22 15
+#define R_SPARC_PC10 16
+#define R_SPARC_PC22 17
+#define R_SPARC_WPLT30 18
+#define R_SPARC_COPY 19
+#define R_SPARC_GLOB_DAT 20
+#define R_SPARC_JMP_SLOT 21
+#define R_SPARC_RELATIVE 22
+#define R_SPARC_UA32 23
+#define R_SPARC_PLT32 24
+#define R_SPARC_HIPLT22 25
+#define R_SPARC_LOPLT10 26
+#define R_SPARC_PCPLT32 27
+#define R_SPARC_PCPLT22 28
+#define R_SPARC_PCPLT10 29
+#define R_SPARC_10 30
+#define R_SPARC_11 31
+#define R_SPARC_WDISP16 40
+#define R_SPARC_WDISP19 41
+#define R_SPARC_7 43
+#define R_SPARC_5 44
+#define R_SPARC_6 45
+
+/* Bits present in AT_HWCAP, primarily for Sparc32. */
+
+#define HWCAP_SPARC_FLUSH 1 /* CPU supports flush instruction. */
+#define HWCAP_SPARC_STBAR 2
+#define HWCAP_SPARC_SWAP 4
+#define HWCAP_SPARC_MULDIV 8
+#define HWCAP_SPARC_V9 16
+#define HWCAP_SPARC_ULTRA3 32
+
+/*
+ * 68k ELF relocation types
+ */
+#define R_68K_NONE 0
+#define R_68K_32 1
+#define R_68K_16 2
+#define R_68K_8 3
+#define R_68K_PC32 4
+#define R_68K_PC16 5
+#define R_68K_PC8 6
+#define R_68K_GOT32 7
+#define R_68K_GOT16 8
+#define R_68K_GOT8 9
+#define R_68K_GOT32O 10
+#define R_68K_GOT16O 11
+#define R_68K_GOT8O 12
+#define R_68K_PLT32 13
+#define R_68K_PLT16 14
+#define R_68K_PLT8 15
+#define R_68K_PLT32O 16
+#define R_68K_PLT16O 17
+#define R_68K_PLT8O 18
+#define R_68K_COPY 19
+#define R_68K_GLOB_DAT 20
+#define R_68K_JMP_SLOT 21
+#define R_68K_RELATIVE 22
+
+/*
+ * Alpha ELF relocation types
+ */
+#define R_ALPHA_NONE 0 /* No reloc */
+#define R_ALPHA_REFLONG 1 /* Direct 32 bit */
+#define R_ALPHA_REFQUAD 2 /* Direct 64 bit */
+#define R_ALPHA_GPREL32 3 /* GP relative 32 bit */
+#define R_ALPHA_LITERAL 4 /* GP relative 16 bit w/optimization */
+#define R_ALPHA_LITUSE 5 /* Optimization hint for LITERAL */
+#define R_ALPHA_GPDISP 6 /* Add displacement to GP */
+#define R_ALPHA_BRADDR 7 /* PC+4 relative 23 bit shifted */
+#define R_ALPHA_HINT 8 /* PC+4 relative 16 bit shifted */
+#define R_ALPHA_SREL16 9 /* PC relative 16 bit */
+#define R_ALPHA_SREL32 10 /* PC relative 32 bit */
+#define R_ALPHA_SREL64 11 /* PC relative 64 bit */
+#define R_ALPHA_OP_PUSH 12 /* OP stack push */
+#define R_ALPHA_OP_STORE 13 /* OP stack pop and store */
+#define R_ALPHA_OP_PSUB 14 /* OP stack subtract */
+#define R_ALPHA_OP_PRSHIFT 15 /* OP stack right shift */
+#define R_ALPHA_GPVALUE 16
+#define R_ALPHA_GPRELHIGH 17
+#define R_ALPHA_GPRELLOW 18
+#define R_ALPHA_IMMED_GP_16 19
+#define R_ALPHA_IMMED_GP_HI32 20
+#define R_ALPHA_IMMED_SCN_HI32 21
+#define R_ALPHA_IMMED_BR_HI32 22
+#define R_ALPHA_IMMED_LO32 23
+#define R_ALPHA_COPY 24 /* Copy symbol at runtime */
+#define R_ALPHA_GLOB_DAT 25 /* Create GOT entry */
+#define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */
+#define R_ALPHA_RELATIVE 27 /* Adjust by program base */
+
+/* Legal values for e_flags field of Elf64_Ehdr. */
+
+#define EF_ALPHA_32BIT 1 /* All addresses are below 2GB */
+
+/*
+ * PowerPC
+ */
+
+/* Values for Elf32/64_Ehdr.e_flags. */
+#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */
+
+/* Cygnus local bits below */
+#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag*/
+#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib flag */
+
+/* PowerPC relocations defined by the ABIs */
+#define R_PPC_NONE 0
+#define R_PPC_ADDR32 1 /* 32bit absolute address */
+#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */
+#define R_PPC_ADDR16 3 /* 16bit absolute address */
+#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */
+#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */
+#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */
+#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */
+#define R_PPC_ADDR14_BRTAKEN 8
+#define R_PPC_ADDR14_BRNTAKEN 9
+#define R_PPC_REL24 10 /* PC relative 26 bit */
+#define R_PPC_REL14 11 /* PC relative 16 bit */
+#define R_PPC_REL14_BRTAKEN 12
+#define R_PPC_REL14_BRNTAKEN 13
+#define R_PPC_GOT16 14
+#define R_PPC_GOT16_LO 15
+#define R_PPC_GOT16_HI 16
+#define R_PPC_GOT16_HA 17
+#define R_PPC_PLTREL24 18
+#define R_PPC_COPY 19
+#define R_PPC_GLOB_DAT 20
+#define R_PPC_JMP_SLOT 21
+#define R_PPC_RELATIVE 22
+#define R_PPC_LOCAL24PC 23
+#define R_PPC_UADDR32 24
+#define R_PPC_UADDR16 25
+#define R_PPC_REL32 26
+#define R_PPC_PLT32 27
+#define R_PPC_PLTREL32 28
+#define R_PPC_PLT16_LO 29
+#define R_PPC_PLT16_HI 30
+#define R_PPC_PLT16_HA 31
+#define R_PPC_SDAREL16 32
+#define R_PPC_SECTOFF 33
+#define R_PPC_SECTOFF_LO 34
+#define R_PPC_SECTOFF_HI 35
+#define R_PPC_SECTOFF_HA 36
+/* Keep this the last entry. */
+#define R_PPC_NUM 37
+
+/* The remaining relocs are from the Embedded ELF ABI, and are not
+ in the SVR4 ELF ABI. */
+#define R_PPC_EMB_NADDR32 101
+#define R_PPC_EMB_NADDR16 102
+#define R_PPC_EMB_NADDR16_LO 103
+#define R_PPC_EMB_NADDR16_HI 104
+#define R_PPC_EMB_NADDR16_HA 105
+#define R_PPC_EMB_SDAI16 106
+#define R_PPC_EMB_SDA2I16 107
+#define R_PPC_EMB_SDA2REL 108
+#define R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */
+#define R_PPC_EMB_MRKREF 110
+#define R_PPC_EMB_RELSEC16 111
+#define R_PPC_EMB_RELST_LO 112
+#define R_PPC_EMB_RELST_HI 113
+#define R_PPC_EMB_RELST_HA 114
+#define R_PPC_EMB_BIT_FLD 115
+#define R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */
+
+/* Diab tool relocations. */
+#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */
+#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */
+#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */
+#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */
+#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */
+#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */
+
+/* This is a phony reloc to handle any old fashioned TOC16 references
+ that may still be in object files. */
+#define R_PPC_TOC16 255
+
+/*
+ * ARM ELF relocation types
+ */
+#define R_ARM_NONE 0 /* No reloc */
+#define R_ARM_PC24 1 /* PC relative 26 bit branch */
+#define R_ARM_ABS32 2 /* Direct 32 bit */
+#define R_ARM_REL32 3 /* PC relative 32 bit */
+#define R_ARM_PC13 4
+#define R_ARM_ABS16 5 /* Direct 16 bit */
+#define R_ARM_ABS12 6 /* Direct 12 bit */
+#define R_ARM_THM_ABS5 7
+#define R_ARM_ABS8 8 /* Direct 8 bit */
+#define R_ARM_SBREL32 9
+#define R_ARM_THM_PC22 10
+#define R_ARM_THM_PC8 11
+#define R_ARM_AMP_VCALL9 12
+#define R_ARM_SWI24 13
+#define R_ARM_THM_SWI8 14
+#define R_ARM_XPC25 15
+#define R_ARM_THM_XPC22 16
+#define R_ARM_COPY 20 /* Copy symbol at runtime */
+#define R_ARM_GLOB_DAT 21 /* Create GOT entry */
+#define R_ARM_JUMP_SLOT 22 /* Create PLT entry */
+#define R_ARM_RELATIVE 23 /* Adjust by program base */
+#define R_ARM_GOTOFF 24 /* 32 bit offset to GOT */
+#define R_ARM_GOTPC 25 /* 32 bit PC relative offset to GOT */
+#define R_ARM_GOT32 26 /* 32 bit GOT entry */
+#define R_ARM_PLT32 27 /* 32 bit PLT address */
+#define R_ARM_GNU_VTENTRY 100
+#define R_ARM_GNU_VTINHERIT 101
+#define R_ARM_THM_PC11 102 /* thumb unconditional branch */
+#define R_ARM_THM_PC9 103 /* thumb conditional branch */
+#define R_ARM_RXPC25 249
+#define R_ARM_RSBREL32 250
+#define R_ARM_THM_RPC22 251
+#define R_ARM_RREL32 252
+#define R_ARM_RABS22 253
+#define R_ARM_RPC24 254
+#define R_ARM_RBASE 255
+/* Keep this the last entry. */
+#define R_ARM_NUM 256
+
+/* Processor specific flags for the ELF header e_flags field. */
+#define EF_ARM_RELEXEC 0x01
+#define EF_ARM_HASENTRY 0x02
+#define EF_ARM_INTERWORK 0x04
+#define EF_ARM_APCS_26 0x08
+#define EF_ARM_APCS_FLOAT 0x10
+#define EF_ARM_PIC 0x20
+#define EF_ALIGN8 0x40 /* 8-bit structure alignment is in use */
+#define EF_NEW_ABI 0x80
+#define EF_OLD_ABI 0x100
+
+/* Additional symbol types for Thumb */
+#define STT_ARM_TFUNC 0xd
+
+/* AMD x86-64 relocations. */
+#define R_X86_64_NONE 0 /* No reloc */
+#define R_X86_64_64 1 /* Direct 64 bit */
+#define R_X86_64_PC32 2 /* PC relative 32 bit signed */
+#define R_X86_64_GOT32 3 /* 32 bit GOT entry */
+#define R_X86_64_PLT32 4 /* 32 bit PLT address */
+#define R_X86_64_COPY 5 /* Copy symbol at runtime */
+#define R_X86_64_GLOB_DAT 6 /* Create GOT entry */
+#define R_X86_64_JUMP_SLOT 7 /* Create PLT entry */
+#define R_X86_64_RELATIVE 8 /* Adjust by program base */
+#define R_X86_64_GOTPCREL 9 /* 32 bit signed PC relative
+ offset to GOT */
+#define R_X86_64_32 10 /* Direct 32 bit zero extended */
+#define R_X86_64_32S 11 /* Direct 32 bit sign extended */
+#define R_X86_64_16 12 /* Direct 16 bit zero extended */
+#define R_X86_64_PC16 13 /* 16 bit sign extended pc relative */
+#define R_X86_64_8 14 /* Direct 8 bit sign extended */
+#define R_X86_64_PC8 15 /* 8 bit sign extended pc relative */
+#define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */
+#define R_X86_64_DTPOFF64 17 /* Offset in module's TLS block */
+#define R_X86_64_TPOFF64 18 /* Offset in initial TLS block */
+#define R_X86_64_TLSGD 19 /* 32 bit signed PC relative offset
+ to two GOT entries for GD symbol */
+#define R_X86_64_TLSLD 20 /* 32 bit signed PC relative offset
+ to two GOT entries for LD symbol */
+#define R_X86_64_DTPOFF32 21 /* Offset in TLS block */
+#define R_X86_64_GOTTPOFF 22 /* 32 bit signed PC relative offset
+ to GOT entry for IE symbol */
+#define R_X86_64_TPOFF32 23 /* Offset in initial TLS block */
+
+#define R_X86_64_NUM 24
+
+typedef struct elf32_rel {
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+} Elf32_Rel;
+
+typedef struct elf64_rel {
+ Elf64_Addr r_offset; /* Location at which to apply the action */
+ Elf64_Xword r_info; /* index and type of relocation */
+} Elf64_Rel;
+
+typedef struct elf32_rela{
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+ Elf32_Sword r_addend;
+} Elf32_Rela;
+
+typedef struct elf64_rela {
+ Elf64_Addr r_offset; /* Location at which to apply the action */
+ Elf64_Xword r_info; /* index and type of relocation */
+ Elf64_Sxword r_addend; /* Constant addend used to compute value */
+} Elf64_Rela;
+
+typedef struct elf32_sym{
+ Elf32_Word st_name;
+ Elf32_Addr st_value;
+ Elf32_Word st_size;
+ unsigned char st_info;
+ unsigned char st_other;
+ Elf32_Half st_shndx;
+} Elf32_Sym;
+
+typedef struct elf64_sym {
+ Elf64_Word st_name; /* Symbol name, index in string tbl */
+ unsigned char st_info; /* Type and binding attributes */
+ unsigned char st_other; /* No defined meaning, 0 */
+ Elf64_Half st_shndx; /* Associated section index */
+ Elf64_Addr st_value; /* Value of the symbol */
+ Elf64_Xword st_size; /* Associated symbol size */
+} Elf64_Sym;
+
+
+#define EI_NIDENT 16
+
+typedef struct elf32_hdr{
+ unsigned char e_ident[EI_NIDENT];
+ Elf32_Half e_type;
+ Elf32_Half e_machine;
+ Elf32_Word e_version;
+ Elf32_Addr e_entry; /* Entry point */
+ Elf32_Off e_phoff;
+ Elf32_Off e_shoff;
+ Elf32_Word e_flags;
+ Elf32_Half e_ehsize;
+ Elf32_Half e_phentsize;
+ Elf32_Half e_phnum;
+ Elf32_Half e_shentsize;
+ Elf32_Half e_shnum;
+ Elf32_Half e_shstrndx;
+} Elf32_Ehdr;
+
+typedef struct elf64_hdr {
+ unsigned char e_ident[16]; /* ELF "magic number" */
+ Elf64_Half e_type;
+ Elf64_Half e_machine;
+ Elf64_Word e_version;
+ Elf64_Addr e_entry; /* Entry point virtual address */
+ Elf64_Off e_phoff; /* Program header table file offset */
+ Elf64_Off e_shoff; /* Section header table file offset */
+ Elf64_Word e_flags;
+ Elf64_Half e_ehsize;
+ Elf64_Half e_phentsize;
+ Elf64_Half e_phnum;
+ Elf64_Half e_shentsize;
+ Elf64_Half e_shnum;
+ Elf64_Half e_shstrndx;
+} Elf64_Ehdr;
+
+/* These constants define the permissions on sections in the program
+ header, p_flags. */
+#define PF_R 0x4
+#define PF_W 0x2
+#define PF_X 0x1
+
+typedef struct elf32_phdr{
+ Elf32_Word p_type;
+ Elf32_Off p_offset;
+ Elf32_Addr p_vaddr;
+ Elf32_Addr p_paddr;
+ Elf32_Word p_filesz;
+ Elf32_Word p_memsz;
+ Elf32_Word p_flags;
+ Elf32_Word p_align;
+} Elf32_Phdr;
+
+typedef struct elf64_phdr {
+ Elf64_Word p_type;
+ Elf64_Word p_flags;
+ Elf64_Off p_offset; /* Segment file offset */
+ Elf64_Addr p_vaddr; /* Segment virtual address */
+ Elf64_Addr p_paddr; /* Segment physical address */
+ Elf64_Xword p_filesz; /* Segment size in file */
+ Elf64_Xword p_memsz; /* Segment size in memory */
+ Elf64_Xword p_align; /* Segment alignment, file & memory */
+} Elf64_Phdr;
+
+/* sh_type */
+#define SHT_NULL 0
+#define SHT_PROGBITS 1
+#define SHT_SYMTAB 2
+#define SHT_STRTAB 3
+#define SHT_RELA 4
+#define SHT_HASH 5
+#define SHT_DYNAMIC 6
+#define SHT_NOTE 7
+#define SHT_NOBITS 8
+#define SHT_REL 9
+#define SHT_SHLIB 10
+#define SHT_DYNSYM 11
+#define SHT_NUM 12
+#define SHT_LOPROC 0x70000000
+#define SHT_HIPROC 0x7fffffff
+#define SHT_LOUSER 0x80000000
+#define SHT_HIUSER 0xffffffff
+#define SHT_MIPS_LIST 0x70000000
+#define SHT_MIPS_CONFLICT 0x70000002
+#define SHT_MIPS_GPTAB 0x70000003
+#define SHT_MIPS_UCODE 0x70000004
+
+/* sh_flags */
+#define SHF_WRITE 0x1
+#define SHF_ALLOC 0x2
+#define SHF_EXECINSTR 0x4
+#define SHF_MASKPROC 0xf0000000
+#define SHF_MIPS_GPREL 0x10000000
+#define SHF_ALPHA_GPREL 0x10000000
+
+/* special section indexes */
+#define SHN_UNDEF 0
+#define SHN_LORESERVE 0xff00
+#define SHN_LOPROC 0xff00
+#define SHN_HIPROC 0xff1f
+#define SHN_ABS 0xfff1
+#define SHN_COMMON 0xfff2
+#define SHN_HIRESERVE 0xffff
+#define SHN_MIPS_ACCOMON 0xff00
+
+typedef struct {
+ Elf32_Word sh_name;
+ Elf32_Word sh_type;
+ Elf32_Word sh_flags;
+ Elf32_Addr sh_addr;
+ Elf32_Off sh_offset;
+ Elf32_Word sh_size;
+ Elf32_Word sh_link;
+ Elf32_Word sh_info;
+ Elf32_Word sh_addralign;
+ Elf32_Word sh_entsize;
+} Elf32_Shdr;
+
+typedef struct elf64_shdr {
+ Elf64_Word sh_name; /* Section name, index in string tbl */
+ Elf64_Word sh_type; /* Type of section */
+ Elf64_Xword sh_flags; /* Miscellaneous section attributes */
+ Elf64_Addr sh_addr; /* Section virtual addr at execution */
+ Elf64_Off sh_offset; /* Section file offset */
+ Elf64_Xword sh_size; /* Size of section in bytes */
+ Elf64_Word sh_link; /* Index of another section */
+ Elf64_Word sh_info; /* Additional section information */
+ Elf64_Xword sh_addralign; /* Section alignment */
+ Elf64_Xword sh_entsize; /* Entry size if section holds table */
+} Elf64_Shdr;
+
+#define EI_MAG0 0 /* e_ident[] indexes */
+#define EI_MAG1 1
+#define EI_MAG2 2
+#define EI_MAG3 3
+#define EI_CLASS 4
+#define EI_DATA 5
+#define EI_VERSION 6
+#define EI_PAD 7
+
+#define ELFMAG0 0x7f /* EI_MAG */
+#define ELFMAG1 'E'
+#define ELFMAG2 'L'
+#define ELFMAG3 'F'
+#define ELFMAG "\177ELF"
+#define SELFMAG 4
+
+#define ELFCLASSNONE 0 /* EI_CLASS */
+#define ELFCLASS32 1
+#define ELFCLASS64 2
+#define ELFCLASSNUM 3
+
+#define ELFDATANONE 0 /* e_ident[EI_DATA] */
+#define ELFDATA2LSB 1
+#define ELFDATA2MSB 2
+
+#define EV_NONE 0 /* e_version, EI_VERSION */
+#define EV_CURRENT 1
+#define EV_NUM 2
+
+/* Notes used in ET_CORE */
+#define NT_PRSTATUS 1
+#define NT_PRFPREG 2
+#define NT_PRPSINFO 3
+#define NT_TASKSTRUCT 4
+#define NT_PRFPXREG 20
+
+/* Note header in a PT_NOTE section */
+typedef struct elf32_note {
+ Elf32_Word n_namesz; /* Name size */
+ Elf32_Word n_descsz; /* Content size */
+ Elf32_Word n_type; /* Content type */
+} Elf32_Nhdr;
+
+/* Note header in a PT_NOTE section */
+typedef struct elf64_note {
+ Elf64_Word n_namesz; /* Name size */
+ Elf64_Word n_descsz; /* Content size */
+ Elf64_Word n_type; /* Content type */
+} Elf64_Nhdr;
+
+#if ELF_CLASS == ELFCLASS32
+
+extern Elf32_Dyn _DYNAMIC [];
+#define elfhdr elf32_hdr
+#define elf_phdr elf32_phdr
+#define elf_note elf32_note
+
+#else
+
+extern Elf64_Dyn _DYNAMIC [];
+#define elfhdr elf64_hdr
+#define elf_phdr elf64_phdr
+#define elf_note elf64_note
+
+#endif
+
+
+#endif
diff --git a/mdk-stage1/dietlibc/include/endian.h b/mdk-stage1/dietlibc/include/endian.h
index 463c24fff..93b1f2948 100644
--- a/mdk-stage1/dietlibc/include/endian.h
+++ b/mdk-stage1/dietlibc/include/endian.h
@@ -4,35 +4,42 @@
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
-#ifdef __i386__
-#define __BYTE_ORDER __LITTLE_ENDIAN
-#define __FLOAT_WORD_ORDER __BYTE_ORDER
+#if defined(__i386__) || defined(__x86_64__) || defined(__ia64__)
+#define __BYTE_ORDER __LITTLE_ENDIAN
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
#endif
#ifdef __sparc__
-#define __BYTE_ORDER __BIG_ENDIAN
-#define __FLOAT_WORD_ORDER __BYTE_ORDER
+#define __BYTE_ORDER __BIG_ENDIAN
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
+#endif
+
+#ifdef __hppa__
+/* I hope this is correct...? */
+#define __BYTE_ORDER __BIG_ENDIAN
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
#endif
#ifdef __mips__
#ifdef __MIPSEB__
-#define __BIG_ENDIAN__
+#define __BYTE_ORDER __BIG_ENDIAN
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
#endif
#endif
#ifndef __BYTE_ORDER
#ifdef __BIG_ENDIAN__
-#define __BYTE_ORDER __BIG_ENDIAN
-#define __FLOAT_WORD_ORDER __BYTE_ORDER
+#define __BYTE_ORDER __BIG_ENDIAN
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
#else
-#define __BYTE_ORDER __LITTLE_ENDIAN
-#define __FLOAT_WORD_ORDER __BYTE_ORDER
+#define __BYTE_ORDER __LITTLE_ENDIAN
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
#endif
#endif
-#define LITTLE_ENDIAN __LITTLE_ENDIAN
-#define BIG_ENDIAN __BIG_ENDIAN
-#define BYTE_ORDER __BYTE_ORDER
+#define LITTLE_ENDIAN __LITTLE_ENDIAN
+#define BIG_ENDIAN __BIG_ENDIAN
+#define BYTE_ORDER __BYTE_ORDER
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define __LONG_LONG_PAIR(HI, LO) LO, HI
@@ -40,4 +47,16 @@
# define __LONG_LONG_PAIR(HI, LO) HI, LO
#endif
+#if defined(__alpha__) || defined(__mips64) || defined(__sparc_v9__) || defined(__x86_64__) || defined(__ia64__)
+#define __WORDSIZE 64
+#endif
+
+#if defined(__sparc__) && (__arch64__)
+#define __WORDSIZE 64
+#endif
+
+#ifndef __WORDSIZE
+#define __WORDSIZE 32
+#endif
+
#endif
diff --git a/mdk-stage1/dietlibc/include/errno.h b/mdk-stage1/dietlibc/include/errno.h
index d1c68f39c..12aa394da 100644
--- a/mdk-stage1/dietlibc/include/errno.h
+++ b/mdk-stage1/dietlibc/include/errno.h
@@ -1,11 +1,546 @@
#ifndef _ERRNO_H
-#define _ERRNO_H
+#define _ERRNO_H
-extern int errno;
+#if defined(__alpha__)
+
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* I/O error */
+#define ENXIO 6 /* No such device or address */
+#define E2BIG 7 /* Arg list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file number */
+#define ECHILD 10 /* No child processes */
+#define EDEADLK 11 /* Resource deadlock would occur */
+#define ENOMEM 12 /* Out of memory */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#define ENOTBLK 15 /* Block device required */
+#define EBUSY 16 /* Device or resource busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* File table overflow */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Not a typewriter */
+#define ETXTBSY 26 /* Text file busy */
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read-only file system */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+#define EDOM 33 /* Math argument out of domain of func */
+#define ERANGE 34 /* Math result not representable */
+#define EAGAIN 35 /* Try again */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+#define EINPROGRESS 36 /* Operation now in progress */
+#define EALREADY 37 /* Operation already in progress */
+#define ENOTSOCK 38 /* Socket operation on non-socket */
+#define EDESTADDRREQ 39 /* Destination address required */
+#define EMSGSIZE 40 /* Message too long */
+#define EPROTOTYPE 41 /* Protocol wrong type for socket */
+#define ENOPROTOOPT 42 /* Protocol not available */
+#define EPROTONOSUPPORT 43 /* Protocol not supported */
+#define ESOCKTNOSUPPORT 44 /* Socket type not supported */
+#define EOPNOTSUPP 45 /* Operation not supported on transport endpoint */
+#define ENOTSUP EOPNOTSUPP/* Operation not supported on transport endpoint */
+#define EPFNOSUPPORT 46 /* Protocol family not supported */
+#define EAFNOSUPPORT 47 /* Address family not supported by protocol */
+#define EADDRINUSE 48 /* Address already in use */
+#define EADDRNOTAVAIL 49 /* Cannot assign requested address */
+#define ENETDOWN 50 /* Network is down */
+#define ENETUNREACH 51 /* Network is unreachable */
+#define ENETRESET 52 /* Network dropped connection because of reset */
+#define ECONNABORTED 53 /* Software caused connection abort */
+#define ECONNRESET 54 /* Connection reset by peer */
+#define ENOBUFS 55 /* No buffer space available */
+#define EISCONN 56 /* Transport endpoint is already connected */
+#define ENOTCONN 57 /* Transport endpoint is not connected */
+#define ESHUTDOWN 58 /* Cannot send after transport endpoint shutdown */
+#define ETOOMANYREFS 59 /* Too many references: cannot splice */
+#define ETIMEDOUT 60 /* Connection timed out */
+#define ECONNREFUSED 61 /* Connection refused */
+#define ELOOP 62 /* Too many symbolic links encountered */
+#define ENAMETOOLONG 63 /* File name too long */
+#define EHOSTDOWN 64 /* Host is down */
+#define EHOSTUNREACH 65 /* No route to host */
+#define ENOTEMPTY 66 /* Directory not empty */
+#define EUSERS 68 /* Too many users */
+#define EDQUOT 69 /* Quota exceeded */
+#define ESTALE 70 /* Stale NFS file handle */
+#define EREMOTE 71 /* Object is remote */
+#define ENOLCK 77 /* No record locks available */
+#define ENOSYS 78 /* Function not implemented */
+#define ENOMSG 80 /* No message of desired type */
+#define EIDRM 81 /* Identifier removed */
+#define ENOSR 82 /* Out of streams resources */
+#define ETIME 83 /* Timer expired */
+#define EBADMSG 84 /* Not a data message */
+#define EPROTO 85 /* Protocol error */
+#define ENODATA 86 /* No data available */
+#define ENOSTR 87 /* Device not a stream */
+#define ENOPKG 92 /* Package not installed */
+#define EILSEQ 116 /* Illegal byte sequence */
+/* The following are just random noise.. */
+#define ECHRNG 88 /* Channel number out of range */
+#define EL2NSYNC 89 /* Level 2 not synchronized */
+#define EL3HLT 90 /* Level 3 halted */
+#define EL3RST 91 /* Level 3 reset */
+#define ELNRNG 93 /* Link number out of range */
+#define EUNATCH 94 /* Protocol driver not attached */
+#define ENOCSI 95 /* No CSI structure available */
+#define EL2HLT 96 /* Level 2 halted */
+#define EBADE 97 /* Invalid exchange */
+#define EBADR 98 /* Invalid request descriptor */
+#define EXFULL 99 /* Exchange full */
+#define ENOANO 100 /* No anode */
+#define EBADRQC 101 /* Invalid request code */
+#define EBADSLT 102 /* Invalid slot */
+#define EDEADLOCK EDEADLK
+#define EBFONT 104 /* Bad font file format */
+#define ENONET 105 /* Machine is not on the network */
+#define ENOLINK 106 /* Link has been severed */
+#define EADV 107 /* Advertise error */
+#define ESRMNT 108 /* Srmount error */
+#define ECOMM 109 /* Communication error on send */
+#define EMULTIHOP 110 /* Multihop attempted */
+#define EDOTDOT 111 /* RFS specific error */
+#define EOVERFLOW 112 /* Value too large for defined data type */
+#define ENOTUNIQ 113 /* Name not unique on network */
+#define EBADFD 114 /* File descriptor in bad state */
+#define EREMCHG 115 /* Remote address changed */
+#define EUCLEAN 117 /* Structure needs cleaning */
+#define ENOTNAM 118 /* Not a XENIX named type file */
+#define ENAVAIL 119 /* No XENIX semaphores available */
+#define EISNAM 120 /* Is a named type file */
+#define EREMOTEIO 121 /* Remote I/O error */
+#define ELIBACC 122 /* Can not access a needed shared library */
+#define ELIBBAD 123 /* Accessing a corrupted shared library */
+#define ELIBSCN 124 /* .lib section in a.out corrupted */
+#define ELIBMAX 125 /* Attempting to link in too many shared libraries */
+#define ELIBEXEC 126 /* Cannot exec a shared library directly */
+#define ERESTART 127 /* Interrupted system call should be restarted */
+#define ESTRPIPE 128 /* Streams pipe error */
+#define ENOMEDIUM 129 /* No medium found */
+#define EMEDIUMTYPE 130 /* Wrong medium type */
+
+#elif defined(__mips__)
+
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* I/O error */
+#define ENXIO 6 /* No such device or address */
+#define E2BIG 7 /* Arg list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file number */
+#define ECHILD 10 /* No child processes */
+#define EAGAIN 11 /* Try again */
+#define ENOMEM 12 /* Out of memory */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#define ENOTBLK 15 /* Block device required */
+#define EBUSY 16 /* Device or resource busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* File table overflow */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Not a typewriter */
+#define ETXTBSY 26 /* Text file busy */
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read-only file system */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+#define EDOM 33 /* Math argument out of domain of func */
+#define ERANGE 34 /* Math result not representable */
+#define ENOMSG 35 /* No message of desired type */
+#define EIDRM 36 /* Identifier removed */
+#define ECHRNG 37 /* Channel number out of range */
+#define EL2NSYNC 38 /* Level 2 not synchronized */
+#define EL3HLT 39 /* Level 3 halted */
+#define EL3RST 40 /* Level 3 reset */
+#define ELNRNG 41 /* Link number out of range */
+#define EUNATCH 42 /* Protocol driver not attached */
+#define ENOCSI 43 /* No CSI structure available */
+#define EL2HLT 44 /* Level 2 halted */
+#define EDEADLK 45 /* Resource deadlock would occur */
+#define ENOLCK 46 /* No record locks available */
+#define EBADE 50 /* Invalid exchange */
+#define EBADR 51 /* Invalid request descriptor */
+#define EXFULL 52 /* Exchange full */
+#define ENOANO 53 /* No anode */
+#define EBADRQC 54 /* Invalid request code */
+#define EBADSLT 55 /* Invalid slot */
+#define EDEADLOCK 56 /* File locking deadlock error */
+#define EBFONT 59 /* Bad font file format */
+#define ENOSTR 60 /* Device not a stream */
+#define ENODATA 61 /* No data available */
+#define ETIME 62 /* Timer expired */
+#define ENOSR 63 /* Out of streams resources */
+#define ENONET 64 /* Machine is not on the network */
+#define ENOPKG 65 /* Package not installed */
+#define EREMOTE 66 /* Object is remote */
+#define ENOLINK 67 /* Link has been severed */
+#define EADV 68 /* Advertise error */
+#define ESRMNT 69 /* Srmount error */
+#define ECOMM 70 /* Communication error on send */
+#define EPROTO 71 /* Protocol error */
+#define EDOTDOT 73 /* RFS specific error */
+#define EMULTIHOP 74 /* Multihop attempted */
+#define EBADMSG 77 /* Not a data message */
+#define ENAMETOOLONG 78 /* File name too long */
+#define EOVERFLOW 79 /* Value too large for defined data type */
+#define ENOTUNIQ 80 /* Name not unique on network */
+#define EBADFD 81 /* File descriptor in bad state */
+#define EREMCHG 82 /* Remote address changed */
+#define ELIBACC 83 /* Can not access a needed shared library */
+#define ELIBBAD 84 /* Accessing a corrupted shared library */
+#define ELIBSCN 85 /* .lib section in a.out corrupted */
+#define ELIBMAX 86 /* Attempting to link in too many shared libraries */
+#define ELIBEXEC 87 /* Cannot exec a shared library directly */
+#define EILSEQ 88 /* Illegal byte sequence */
+#define ENOSYS 89 /* Function not implemented */
+#define ELOOP 90 /* Too many symbolic links encountered */
+#define ERESTART 91 /* Interrupted system call should be restarted */
+#define ESTRPIPE 92 /* Streams pipe error */
+#define ENOTEMPTY 93 /* Directory not empty */
+#define EUSERS 94 /* Too many users */
+#define ENOTSOCK 95 /* Socket operation on non-socket */
+#define EDESTADDRREQ 96 /* Destination address required */
+#define EMSGSIZE 97 /* Message too long */
+#define EPROTOTYPE 98 /* Protocol wrong type for socket */
+#define ENOPROTOOPT 99 /* Protocol not available */
+#define EPROTONOSUPPORT 120 /* Protocol not supported */
+#define ESOCKTNOSUPPORT 121 /* Socket type not supported */
+#define EOPNOTSUPP 122 /* Operation not supported on transport endpoint */
+#define ENOTSUP EOPNOTSUPP/* Operation not supported on transport endpoint */
+#define EPFNOSUPPORT 123 /* Protocol family not supported */
+#define EAFNOSUPPORT 124 /* Address family not supported by protocol */
+#define EADDRINUSE 125 /* Address already in use */
+#define EADDRNOTAVAIL 126 /* Cannot assign requested address */
+#define ENETDOWN 127 /* Network is down */
+#define ENETUNREACH 128 /* Network is unreachable */
+#define ENETRESET 129 /* Network dropped connection because of reset */
+#define ECONNABORTED 130 /* Software caused connection abort */
+#define ECONNRESET 131 /* Connection reset by peer */
+#define ENOBUFS 132 /* No buffer space available */
+#define EISCONN 133 /* Transport endpoint is already connected */
+#define ENOTCONN 134 /* Transport endpoint is not connected */
+#define EUCLEAN 135 /* Structure needs cleaning */
+#define ENOTNAM 137 /* Not a XENIX named type file */
+#define ENAVAIL 138 /* No XENIX semaphores available */
+#define EISNAM 139 /* Is a named type file */
+#define EREMOTEIO 140 /* Remote I/O error */
+#define EINIT 141 /* Reserved */
+#define EREMDEV 142 /* Error 142 */
+#define ESHUTDOWN 143 /* Cannot send after transport endpoint shutdown */
+#define ETOOMANYREFS 144 /* Too many references: cannot splice */
+#define ETIMEDOUT 145 /* Connection timed out */
+#define ECONNREFUSED 146 /* Connection refused */
+#define EHOSTDOWN 147 /* Host is down */
+#define EHOSTUNREACH 148 /* No route to host */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+#define EALREADY 149 /* Operation already in progress */
+#define EINPROGRESS 150 /* Operation now in progress */
+#define ESTALE 151 /* Stale NFS file handle */
+#define ECANCELED 158 /* AIO operation canceled */
+#define ENOMEDIUM 159 /* No medium found */
+#define EMEDIUMTYPE 160 /* Wrong medium type */
+#define EDQUOT 1133 /* Quota exceeded */
+
+#elif defined(__sparc__)
+
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* I/O error */
+#define ENXIO 6 /* No such device or address */
+#define E2BIG 7 /* Arg list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file number */
+#define ECHILD 10 /* No child processes */
+#define EAGAIN 11 /* Try again */
+#define ENOMEM 12 /* Out of memory */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#define ENOTBLK 15 /* Block device required */
+#define EBUSY 16 /* Device or resource busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* File table overflow */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Not a typewriter */
+#define ETXTBSY 26 /* Text file busy */
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read-only file system */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+#define EDOM 33 /* Math argument out of domain of func */
+#define ERANGE 34 /* Math result not representable */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+#define EINPROGRESS 36 /* Operation now in progress */
+#define EALREADY 37 /* Operation already in progress */
+#define ENOTSOCK 38 /* Socket operation on non-socket */
+#define EDESTADDRREQ 39 /* Destination address required */
+#define EMSGSIZE 40 /* Message too long */
+#define EPROTOTYPE 41 /* Protocol wrong type for socket */
+#define ENOPROTOOPT 42 /* Protocol not available */
+#define EPROTONOSUPPORT 43 /* Protocol not supported */
+#define ESOCKTNOSUPPORT 44 /* Socket type not supported */
+#define EOPNOTSUPP 45 /* Op not supported on transport endpoint */
+#define ENOTSUP EOPNOTSUPP/* Operation not supported on transport endpoint */
+#define EPFNOSUPPORT 46 /* Protocol family not supported */
+#define EAFNOSUPPORT 47 /* Address family not supported by protocol */
+#define EADDRINUSE 48 /* Address already in use */
+#define EADDRNOTAVAIL 49 /* Cannot assign requested address */
+#define ENETDOWN 50 /* Network is down */
+#define ENETUNREACH 51 /* Network is unreachable */
+#define ENETRESET 52 /* Net dropped connection because of reset */
+#define ECONNABORTED 53 /* Software caused connection abort */
+#define ECONNRESET 54 /* Connection reset by peer */
+#define ENOBUFS 55 /* No buffer space available */
+#define EISCONN 56 /* Transport endpoint is already connected */
+#define ENOTCONN 57 /* Transport endpoint is not connected */
+#define ESHUTDOWN 58 /* No send after transport endpoint shutdown */
+#define ETOOMANYREFS 59 /* Too many references: cannot splice */
+#define ETIMEDOUT 60 /* Connection timed out */
+#define ECONNREFUSED 61 /* Connection refused */
+#define ELOOP 62 /* Too many symbolic links encountered */
+#define ENAMETOOLONG 63 /* File name too long */
+#define EHOSTDOWN 64 /* Host is down */
+#define EHOSTUNREACH 65 /* No route to host */
+#define ENOTEMPTY 66 /* Directory not empty */
+#define EPROCLIM 67 /* SUNOS: Too many processes */
+#define EUSERS 68 /* Too many users */
+#define EDQUOT 69 /* Quota exceeded */
+#define ESTALE 70 /* Stale NFS file handle */
+#define EREMOTE 71 /* Object is remote */
+#define ENOSTR 72 /* Device not a stream */
+#define ETIME 73 /* Timer expired */
+#define ENOSR 74 /* Out of streams resources */
+#define ENOMSG 75 /* No message of desired type */
+#define EBADMSG 76 /* Not a data message */
+#define EIDRM 77 /* Identifier removed */
+#define EDEADLK 78 /* Resource deadlock would occur */
+#define ENOLCK 79 /* No record locks available */
+#define ENONET 80 /* Machine is not on the network */
+#define ERREMOTE 81 /* SunOS: Too many lvls of remote in path */
+#define ENOLINK 82 /* Link has been severed */
+#define EADV 83 /* Advertise error */
+#define ESRMNT 84 /* Srmount error */
+#define ECOMM 85 /* Communication error on send */
+#define EPROTO 86 /* Protocol error */
+#define EMULTIHOP 87 /* Multihop attempted */
+#define EDOTDOT 88 /* RFS specific error */
+#define EREMCHG 89 /* Remote address changed */
+#define ENOSYS 90 /* Function not implemented */
+#define ESTRPIPE 91 /* Streams pipe error */
+#define EOVERFLOW 92 /* Value too large for defined data type */
+#define EBADFD 93 /* File descriptor in bad state */
+#define ECHRNG 94 /* Channel number out of range */
+#define EL2NSYNC 95 /* Level 2 not synchronized */
+#define EL3HLT 96 /* Level 3 halted */
+#define EL3RST 97 /* Level 3 reset */
+#define ELNRNG 98 /* Link number out of range */
+#define EUNATCH 99 /* Protocol driver not attached */
+#define ENOCSI 100 /* No CSI structure available */
+#define EL2HLT 101 /* Level 2 halted */
+#define EBADE 102 /* Invalid exchange */
+#define EBADR 103 /* Invalid request descriptor */
+#define EXFULL 104 /* Exchange full */
+#define ENOANO 105 /* No anode */
+#define EBADRQC 106 /* Invalid request code */
+#define EBADSLT 107 /* Invalid slot */
+#define EDEADLOCK 108 /* File locking deadlock error */
+#define EBFONT 109 /* Bad font file format */
+#define ELIBEXEC 110 /* Cannot exec a shared library directly */
+#define ENODATA 111 /* No data available */
+#define ELIBBAD 112 /* Accessing a corrupted shared library */
+#define ENOPKG 113 /* Package not installed */
+#define ELIBACC 114 /* Can not access a needed shared library */
+#define ENOTUNIQ 115 /* Name not unique on network */
+#define ERESTART 116 /* Interrupted syscall should be restarted */
+#define EUCLEAN 117 /* Structure needs cleaning */
+#define ENOTNAM 118 /* Not a XENIX named type file */
+#define ENAVAIL 119 /* No XENIX semaphores available */
+#define EISNAM 120 /* Is a named type file */
+#define EREMOTEIO 121 /* Remote I/O error */
+#define EILSEQ 122 /* Illegal byte sequence */
+#define ELIBMAX 123 /* Atmpt to link in too many shared libs */
+#define ELIBSCN 124 /* .lib section in a.out corrupted */
+#define ENOMEDIUM 125 /* No medium found */
+#define EMEDIUMTYPE 126 /* Wrong medium type */
+
+#else
+
+/* i386, arm, ppc, x86_64, ia64 */
+
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* I/O error */
+#define ENXIO 6 /* No such device or address */
+#define E2BIG 7 /* Arg list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file number */
+#define ECHILD 10 /* No child processes */
+#define EAGAIN 11 /* Try again */
+#define ENOMEM 12 /* Out of memory */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#define ENOTBLK 15 /* Block device required */
+#define EBUSY 16 /* Device or resource busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* File table overflow */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Not a typewriter */
+#define ETXTBSY 26 /* Text file busy */
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read-only file system */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+#define EDOM 33 /* Math argument out of domain of func */
+#define ERANGE 34 /* Math result not representable */
+#define EDEADLK 35 /* Resource deadlock would occur */
+#define ENAMETOOLONG 36 /* File name too long */
+#define ENOLCK 37 /* No record locks available */
+#define ENOSYS 38 /* Function not implemented */
+#define ENOTEMPTY 39 /* Directory not empty */
+#define ELOOP 40 /* Too many symbolic links encountered */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+#define ENOMSG 42 /* No message of desired type */
+#define EIDRM 43 /* Identifier removed */
+#define ECHRNG 44 /* Channel number out of range */
+#define EL2NSYNC 45 /* Level 2 not synchronized */
+#define EL3HLT 46 /* Level 3 halted */
+#define EL3RST 47 /* Level 3 reset */
+#define ELNRNG 48 /* Link number out of range */
+#define EUNATCH 49 /* Protocol driver not attached */
+#define ENOCSI 50 /* No CSI structure available */
+#define EL2HLT 51 /* Level 2 halted */
+#define EBADE 52 /* Invalid exchange */
+#define EBADR 53 /* Invalid request descriptor */
+#define EXFULL 54 /* Exchange full */
+#define ENOANO 55 /* No anode */
+#define EBADRQC 56 /* Invalid request code */
+#define EBADSLT 57 /* Invalid slot */
+#define EDEADLOCK EDEADLK
+#define EBFONT 59 /* Bad font file format */
+#define ENOSTR 60 /* Device not a stream */
+#define ENODATA 61 /* No data available */
+#define ETIME 62 /* Timer expired */
+#define ENOSR 63 /* Out of streams resources */
+#define ENONET 64 /* Machine is not on the network */
+#define ENOPKG 65 /* Package not installed */
+#define EREMOTE 66 /* Object is remote */
+#define ENOLINK 67 /* Link has been severed */
+#define EADV 68 /* Advertise error */
+#define ESRMNT 69 /* Srmount error */
+#define ECOMM 70 /* Communication error on send */
+#define EPROTO 71 /* Protocol error */
+#define EMULTIHOP 72 /* Multihop attempted */
+#define EDOTDOT 73 /* RFS specific error */
+#define EBADMSG 74 /* Not a data message */
+#define EOVERFLOW 75 /* Value too large for defined data type */
+#define ENOTUNIQ 76 /* Name not unique on network */
+#define EBADFD 77 /* File descriptor in bad state */
+#define EREMCHG 78 /* Remote address changed */
+#define ELIBACC 79 /* Can not access a needed shared library */
+#define ELIBBAD 80 /* Accessing a corrupted shared library */
+#define ELIBSCN 81 /* .lib section in a.out corrupted */
+#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
+#define ELIBEXEC 83 /* Cannot exec a shared library directly */
+#define EILSEQ 84 /* Illegal byte sequence */
+#define ERESTART 85 /* Interrupted system call should be restarted */
+#define ESTRPIPE 86 /* Streams pipe error */
+#define EUSERS 87 /* Too many users */
+#define ENOTSOCK 88 /* Socket operation on non-socket */
+#define EDESTADDRREQ 89 /* Destination address required */
+#define EMSGSIZE 90 /* Message too long */
+#define EPROTOTYPE 91 /* Protocol wrong type for socket */
+#define ENOPROTOOPT 92 /* Protocol not available */
+#define EPROTONOSUPPORT 93 /* Protocol not supported */
+#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
+#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
+#define ENOTSUP EOPNOTSUPP/* Operation not supported on transport endpoint */
+#define EPFNOSUPPORT 96 /* Protocol family not supported */
+#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
+#define EADDRINUSE 98 /* Address already in use */
+#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
+#define ENETDOWN 100 /* Network is down */
+#define ENETUNREACH 101 /* Network is unreachable */
+#define ENETRESET 102 /* Network dropped connection because of reset */
+#define ECONNABORTED 103 /* Software caused connection abort */
+#define ECONNRESET 104 /* Connection reset by peer */
+#define ENOBUFS 105 /* No buffer space available */
+#define EISCONN 106 /* Transport endpoint is already connected */
+#define ENOTCONN 107 /* Transport endpoint is not connected */
+#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
+#define ETOOMANYREFS 109 /* Too many references: cannot splice */
+#define ETIMEDOUT 110 /* Connection timed out */
+#define ECONNREFUSED 111 /* Connection refused */
+#define EHOSTDOWN 112 /* Host is down */
+#define EHOSTUNREACH 113 /* No route to host */
+#define EALREADY 114 /* Operation already in progress */
+#define EINPROGRESS 115 /* Operation now in progress */
+#define ESTALE 116 /* Stale NFS file handle */
+#define EUCLEAN 117 /* Structure needs cleaning */
+#define ENOTNAM 118 /* Not a XENIX named type file */
+#define ENAVAIL 119 /* No XENIX semaphores available */
+#define EISNAM 120 /* Is a named type file */
+#define EREMOTEIO 121 /* Remote I/O error */
+#define EDQUOT 122 /* Quota exceeded */
+#define ENOMEDIUM 123 /* No medium found */
+#define EMEDIUMTYPE 124 /* Wrong medium type */
+#endif
-#include <linux/errno.h>
+#define __SYS_NERR ((EMEDIUMTYPE) + 1)
+
+#ifndef __ASSEMBLER__
+
+#ifndef _REENTRANT
+extern int errno;
+#else
+#define errno (*__errno_location())
+#endif
extern int *__errno_location(void);
-extern void __set_errno(int error);
+
+#define __set_errno(x) errno=(x)
+
+#ifdef _BSD_SOURCE
+extern const char *const sys_errlist[];
+extern int sys_nerr;
+#endif
+
+#endif
#endif
diff --git a/mdk-stage1/dietlibc/include/fcntl.h b/mdk-stage1/dietlibc/include/fcntl.h
index b792502c1..33f58d82a 100644
--- a/mdk-stage1/dietlibc/include/fcntl.h
+++ b/mdk-stage1/dietlibc/include/fcntl.h
@@ -6,13 +6,549 @@
#include <sys/types.h>
#include <unistd.h>
-#include <asm/fcntl.h>
+#define F_LINUX_SPECIFIC_BASE 1024
+
+#if defined(__i386__) || defined(__s390__) || defined(__x86_64__) || defined(__ia64__)
+
+/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
+ located on an ext2 file system */
+#define O_ACCMODE 0003
+#define O_RDONLY 00
+#define O_WRONLY 01
+#define O_RDWR 02
+#define O_CREAT 0100 /* not fcntl */
+#define O_EXCL 0200 /* not fcntl */
+#define O_NOCTTY 0400 /* not fcntl */
+#define O_TRUNC 01000 /* not fcntl */
+#define O_APPEND 02000
+#define O_NONBLOCK 04000
+#define O_NDELAY O_NONBLOCK
+#define O_SYNC 010000
+#define FASYNC 020000 /* fcntl, for BSD compatibility */
+#define O_DIRECT 040000 /* direct disk access hint - currently ignored */
+#define O_LARGEFILE 0100000
+#define O_DIRECTORY 0200000 /* must be a directory */
+#define O_NOFOLLOW 0400000 /* don't follow links */
+
+#define F_DUPFD 0 /* dup */
+#define F_GETFD 1 /* get close_on_exec */
+#define F_SETFD 2 /* set/clear close_on_exec */
+#define F_GETFL 3 /* get file->f_flags */
+#define F_SETFL 4 /* set file->f_flags */
+#define F_GETLK 5
+#define F_SETLK 6
+#define F_SETLKW 7
+#define F_SETOWN 8 /* for sockets. */
+#define F_GETOWN 9 /* for sockets. */
+#define F_SETSIG 10 /* for sockets. */
+#define F_GETSIG 11 /* for sockets. */
+
+#define F_GETLK64 12 /* using 'struct flock64' */
+#define F_SETLK64 13
+#define F_SETLKW64 14
+
+#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
+
+/* for posix fcntl() and lockf() */
+#define F_RDLCK 0
+#define F_WRLCK 1
+#define F_UNLCK 2
+
+/* for old implementation of bsd flock () */
+#define F_EXLCK 4 /* or 3 */
+#define F_SHLCK 8 /* or 4 */
+
+/* for leases */
+#define F_INPROGRESS 16
+
+/* operations for bsd flock(), also used by the kernel implementation */
+#define LOCK_SH 1 /* shared lock */
+#define LOCK_EX 2 /* exclusive lock */
+#define LOCK_NB 4 /* or'd with one of the above to prevent
+ blocking */
+#define LOCK_UN 8 /* remove lock */
+
+#define LOCK_MAND 32 /* This is a mandatory flock */
+#define LOCK_READ 64 /* ... Which allows concurrent read operations */
+#define LOCK_WRITE 128 /* ... Which allows concurrent write operations */
+#define LOCK_RW 192 /* ... Which allows concurrent read & write ops */
+
+struct flock {
+ short l_type;
+ short l_whence;
+ off_t l_start;
+ off_t l_len;
+ pid_t l_pid;
+};
+
+struct flock64 {
+ short l_type;
+ short l_whence;
+ loff_t l_start;
+ loff_t l_len;
+ pid_t l_pid;
+};
+
+#elif defined(__alpha__)
+
+/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
+ located on an ext2 file system */
+#define O_ACCMODE 0003
+#define O_RDONLY 00
+#define O_WRONLY 01
+#define O_RDWR 02
+#define O_CREAT 01000 /* not fcntl */
+#define O_TRUNC 02000 /* not fcntl */
+#define O_EXCL 04000 /* not fcntl */
+#define O_NOCTTY 010000 /* not fcntl */
+
+#define O_NONBLOCK 00004
+#define O_APPEND 00010
+#define O_NDELAY O_NONBLOCK
+#define O_SYNC 040000
+#define FASYNC 020000 /* fcntl, for BSD compatibility */
+#define O_DIRECT 040000 /* direct disk access - should check with OSF/1 */
+#define O_DIRECTORY 0100000 /* must be a directory */
+#define O_NOFOLLOW 0200000 /* don't follow links */
+#define O_LARGEFILE 0400000 /* will be set by the kernel on every open */
+
+#define F_DUPFD 0 /* dup */
+#define F_GETFD 1 /* get close_on_exec */
+#define F_SETFD 2 /* set/clear close_on_exec */
+#define F_GETFL 3 /* get file->f_flags */
+#define F_SETFL 4 /* set file->f_flags */
+#define F_GETLK 7
+#define F_SETLK 8
+#define F_SETLKW 9
+
+#define F_SETOWN 5 /* for sockets. */
+#define F_GETOWN 6 /* for sockets. */
+#define F_SETSIG 10 /* for sockets. */
+#define F_GETSIG 11 /* for sockets. */
+
+/* for F_[GET|SET]FL */
+#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
+
+/* for posix fcntl() and lockf() */
+#define F_RDLCK 1
+#define F_WRLCK 2
+#define F_UNLCK 8
+
+/* for old implementation of bsd flock () */
+#define F_EXLCK 16 /* or 3 */
+#define F_SHLCK 32 /* or 4 */
+
+#define F_INPROGRESS 64
+
+/* operations for bsd flock(), also used by the kernel implementation */
+#define LOCK_SH 1 /* shared lock */
+#define LOCK_EX 2 /* exclusive lock */
+#define LOCK_NB 4 /* or'd with one of the above to prevent
+ blocking */
+#define LOCK_UN 8 /* remove lock */
+#define LOCK_MAND 32 /* This is a mandatory flock */
+#define LOCK_READ 64 /* ... Which allows concurrent read operations */
+#define LOCK_WRITE 128 /* ... Which allows concurrent write operations */
+#define LOCK_RW 192 /* ... Which allows concurrent read & write ops */
+
+struct flock {
+ short l_type;
+ short l_whence;
+ off_t l_start;
+ off_t l_len;
+ pid_t l_pid;
+};
+
+#elif defined(__mips__)
+
+/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
+ located on an ext2 file system */
+#define O_ACCMODE 0x0003
+#define O_RDONLY 0x0000
+#define O_WRONLY 0x0001
+#define O_RDWR 0x0002
+#define O_APPEND 0x0008
+#define O_SYNC 0x0010
+#define O_NONBLOCK 0x0080
+#define O_CREAT 0x0100 /* not fcntl */
+#define O_TRUNC 0x0200 /* not fcntl */
+#define O_EXCL 0x0400 /* not fcntl */
+#define O_NOCTTY 0x0800 /* not fcntl */
+#define FASYNC 0x1000 /* fcntl, for BSD compatibility */
+#define O_LARGEFILE 0x2000 /* allow large file opens - currently ignored */
+#define O_DIRECT 0x8000 /* direct disk access hint - currently ignored */
+#define O_DIRECTORY 0x10000 /* must be a directory */
+#define O_NOFOLLOW 0x20000 /* don't follow links */
+
+#define O_NDELAY O_NONBLOCK
+
+#define F_DUPFD 0 /* dup */
+#define F_GETFD 1 /* get close_on_exec */
+#define F_SETFD 2 /* set/clear close_on_exec */
+#define F_GETFL 3 /* get file->f_flags */
+#define F_SETFL 4 /* set file->f_flags */
+#define F_GETLK 14
+#define F_SETLK 6
+#define F_SETLKW 7
+
+#define F_SETOWN 24 /* for sockets. */
+#define F_GETOWN 23 /* for sockets. */
+#define F_SETSIG 10 /* for sockets. */
+#define F_GETSIG 11 /* for sockets. */
+
+/* for F_[GET|SET]FL */
+#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
+
+/* for posix fcntl() and lockf() */
+#define F_RDLCK 0
+#define F_WRLCK 1
+#define F_UNLCK 2
+
+/* for old implementation of bsd flock () */
+#define F_EXLCK 4 /* or 3 */
+#define F_SHLCK 8 /* or 4 */
+
+/* for leases */
+#define F_INPROGRESS 16
+
+/* operations for bsd flock(), also used by the kernel implementation */
+#define LOCK_SH 1 /* shared lock */
+#define LOCK_EX 2 /* exclusive lock */
+#define LOCK_NB 4 /* or'd with one of the above to prevent XXXXXXXXXXXXXXXXXX
+ blocking */
+#define LOCK_UN 8 /* remove lock */
+
+#define LOCK_MAND 32 /* This is a mandatory flock */
+#define LOCK_READ 64 /* ... Which allows concurrent read operations */
+#define LOCK_WRITE 128 /* ... Which allows concurrent write operations */
+#define LOCK_RW 192 /* ... Which allows concurrent read & write ops */
+
+typedef struct flock {
+ short l_type;
+ short l_whence;
+ off_t l_start;
+ off_t l_len;
+ long l_sysid; /* XXXXXXXXXXXXXXXXXXXXXXXXX */
+ pid_t l_pid;
+ long pad[4]; /* ZZZZZZZZZZZZZZZZZZZZZZZZZZ */
+} flock_t;
+
+#elif defined(__sparc__)
+
+/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
+ located on an ext2 file system */
+#define O_RDONLY 0x0000
+#define O_WRONLY 0x0001
+#define O_RDWR 0x0002
+#define O_ACCMODE 0x0003
+#define O_APPEND 0x0008
+#define FASYNC 0x0040 /* fcntl, for BSD compatibility */
+#define O_CREAT 0x0200 /* not fcntl */
+#define O_TRUNC 0x0400 /* not fcntl */
+#define O_EXCL 0x0800 /* not fcntl */
+#define O_SYNC 0x2000
+#define O_NONBLOCK 0x4000
+#define O_NDELAY (0x0004 | O_NONBLOCK)
+#define O_NOCTTY 0x8000 /* not fcntl */
+#define O_DIRECTORY 0x10000 /* must be a directory */
+#define O_NOFOLLOW 0x20000 /* don't follow links */
+#define O_LARGEFILE 0x40000
+
+#define F_DUPFD 0 /* dup */
+#define F_GETFD 1 /* get close_on_exec */
+#define F_SETFD 2 /* set/clear close_on_exec */
+#define F_GETFL 3 /* get file->f_flags */
+#define F_SETFL 4 /* set file->f_flags */
+#define F_GETOWN 5 /* for sockets. */
+#define F_SETOWN 6 /* for sockets. */
+#define F_GETLK 7
+#define F_SETLK 8
+#define F_SETLKW 9
+#define F_SETSIG 10 /* for sockets. */
+#define F_GETSIG 11 /* for sockets. */
+
+#define F_GETLK64 12 /* using 'struct flock64' */
+#define F_SETLK64 13
+#define F_SETLKW64 14
+
+/* for F_[GET|SET]FL */
+#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
+
+/* for posix fcntl() and lockf() */
+#define F_RDLCK 1
+#define F_WRLCK 2
+#define F_UNLCK 3
+
+/* for old implementation of bsd flock () */
+#define F_EXLCK 4 /* or 3 */
+#define F_SHLCK 8 /* or 4 */
+
+/* for leases */
+#define F_INPROGRESS 16
+
+/* operations for bsd flock(), also used by the kernel implementation */
+#define LOCK_SH 1 /* shared lock */
+#define LOCK_EX 2 /* exclusive lock */
+#define LOCK_NB 4 /* or'd with one of the above to prevent
+ blocking */
+#define LOCK_UN 8 /* remove lock */
+
+#define LOCK_MAND 32 /* This is a mandatory flock */
+#define LOCK_READ 64 /* ... Which allows concurrent read operations */
+#define LOCK_WRITE 128 /* ... Which allows concurrent write operations */
+#define LOCK_RW 192 /* ... Which allows concurrent read & write ops */
+
+struct flock {
+ short l_type;
+ short l_whence;
+ off_t l_start;
+ off_t l_len;
+ pid_t l_pid;
+ short __unused;
+};
+
+#ifdef __arch64__
+#define flock64 flock
+#else
+struct flock64 {
+ short l_type;
+ short l_whence;
+ loff_t l_start;
+ loff_t l_len;
+ pid_t l_pid;
+ short __unused;
+};
+#endif
+
+#elif defined(__powerpc__)
+
+/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
+ located on an ext2 file system */
+#define O_ACCMODE 0003
+#define O_RDONLY 00
+#define O_WRONLY 01
+#define O_RDWR 02
+#define O_CREAT 0100 /* not fcntl */
+#define O_EXCL 0200 /* not fcntl */
+#define O_NOCTTY 0400 /* not fcntl */
+#define O_TRUNC 01000 /* not fcntl */
+#define O_APPEND 02000
+#define O_NONBLOCK 04000
+#define O_NDELAY O_NONBLOCK
+#define O_SYNC 010000
+#define FASYNC 020000 /* fcntl, for BSD compatibility */
+#define O_DIRECTORY 040000 /* must be a directory */
+#define O_NOFOLLOW 0100000 /* don't follow links */
+#define O_LARGEFILE 0200000
+#define O_DIRECT 0400000 /* direct disk access hint - currently ignored */
+
+#define F_DUPFD 0 /* dup */
+#define F_GETFD 1 /* get close_on_exec */
+#define F_SETFD 2 /* set/clear close_on_exec */
+#define F_GETFL 3 /* get file->f_flags */
+#define F_SETFL 4 /* set file->f_flags */
+#define F_GETLK 5
+#define F_SETLK 6
+#define F_SETLKW 7
+
+#define F_SETOWN 8 /* for sockets. */
+#define F_GETOWN 9 /* for sockets. */
+#define F_SETSIG 10 /* for sockets. */
+#define F_GETSIG 11 /* for sockets. */
+
+#define F_GETLK64 12 /* using 'struct flock64' */
+#define F_SETLK64 13
+#define F_SETLKW64 14
+
+/* for F_[GET|SET]FL */
+#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
+
+/* for posix fcntl() and lockf() */
+#define F_RDLCK 0
+#define F_WRLCK 1
+#define F_UNLCK 2
+
+/* for old implementation of bsd flock () */
+#define F_EXLCK 4 /* or 3 */
+#define F_SHLCK 8 /* or 4 */
+
+/* for leases */
+#define F_INPROGRESS 16
+
+/* operations for bsd flock(), also used by the kernel implementation */
+#define LOCK_SH 1 /* shared lock */
+#define LOCK_EX 2 /* exclusive lock */
+#define LOCK_NB 4 /* or'd with one of the above to prevent
+ blocking */
+#define LOCK_UN 8 /* remove lock */
+
+#define LOCK_MAND 32 /* This is a mandatory flock */
+#define LOCK_READ 64 /* ... Which allows concurrent read operations */
+#define LOCK_WRITE 128 /* ... Which allows concurrent write operations */
+#define LOCK_RW 192 /* ... Which allows concurrent read & write ops */
+
+struct flock {
+ short l_type;
+ short l_whence;
+ off_t l_start;
+ off_t l_len;
+ pid_t l_pid;
+};
+
+struct flock64 {
+ short l_type;
+ short l_whence;
+ loff_t l_start;
+ loff_t l_len;
+ pid_t l_pid;
+};
+
+#elif defined (__arm__)
+
+/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
+ located on an ext2 file system */
+#define O_ACCMODE 0003
+#define O_RDONLY 00
+#define O_WRONLY 01
+#define O_RDWR 02
+#define O_CREAT 0100 /* not fcntl */
+#define O_EXCL 0200 /* not fcntl */
+#define O_NOCTTY 0400 /* not fcntl */
+#define O_TRUNC 01000 /* not fcntl */
+#define O_APPEND 02000
+#define O_NONBLOCK 04000
+#define O_NDELAY O_NONBLOCK
+#define O_SYNC 010000
+#define FASYNC 020000 /* fcntl, for BSD compatibility */
+#define O_DIRECTORY 040000 /* must be a directory */
+#define O_NOFOLLOW 0100000 /* don't follow links */
+#define O_DIRECT 0200000 /* direct disk access hint - currently ignored */
+#define O_LARGEFILE 0400000
+
+#define F_DUPFD 0 /* dup */
+#define F_GETFD 1 /* get close_on_exec */
+#define F_SETFD 2 /* set/clear close_on_exec */
+#define F_GETFL 3 /* get file->f_flags */
+#define F_SETFL 4 /* set file->f_flags */
+#define F_GETLK 5
+#define F_SETLK 6
+#define F_SETLKW 7
+
+#define F_SETOWN 8 /* for sockets. */
+#define F_GETOWN 9 /* for sockets. */
+#define F_SETSIG 10 /* for sockets. */
+#define F_GETSIG 11 /* for sockets. */
+
+#define F_GETLK64 12 /* using 'struct flock64' */
+#define F_SETLK64 13
+#define F_SETLKW64 14
+
+/* for F_[GET|SET]FL */
+#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
+
+/* for posix fcntl() and lockf() */
+#define F_RDLCK 0
+#define F_WRLCK 1
+#define F_UNLCK 2
+
+/* for old implementation of bsd flock () */
+#define F_EXLCK 4 /* or 3 */
+#define F_SHLCK 8 /* or 4 */
+
+/* for leases */
+#define F_INPROGRESS 16
+
+/* operations for bsd flock(), also used by the kernel implementation */
+#define LOCK_SH 1 /* shared lock */
+#define LOCK_EX 2 /* exclusive lock */
+#define LOCK_NB 4 /* or'd with one of the above to prevent
+ blocking */
+#define LOCK_UN 8 /* remove lock */
+
+#define LOCK_MAND 32 /* This is a mandatory flock */
+#define LOCK_READ 64 /* ... Which allows concurrent read operations */
+#define LOCK_WRITE 128 /* ... Which allows concurrent write operations */
+#define LOCK_RW 192 /* ... Which allows concurrent read & write ops */
+
+struct flock {
+ short l_type;
+ short l_whence;
+ off_t l_start;
+ off_t l_len;
+ pid_t l_pid;
+};
+
+struct flock64 {
+ short l_type;
+ short l_whence;
+ loff_t l_start;
+ loff_t l_len;
+ pid_t l_pid;
+};
+
+#elif defined(__hppa__)
+
+/* Copied from bits/fcntl.h */
+
+#define O_RDONLY 00000000
+#define O_WRONLY 00000001
+#define O_RDWR 00000002
+#define O_ACCMODE 00000003
+#define O_APPEND 00000010
+#define O_BLKSEEK 00000100 /* HPUX only */
+#define O_CREAT 00000400 /* not fcntl */
+#define O_TRUNC 00001000 /* not fcntl */
+#define O_EXCL 00002000 /* not fcntl */
+#define O_ASYNC 00020000
+#define O_SYNC 00100000
+#define O_NONBLOCK 00200004 /* HPUX has separate NDELAY & NONBLOCK */
+#define O_NDELAY O_NONBLOCK
+#define O_NOCTTY 00400000 /* not fcntl */
+#define O_DIRECTORY 00010000
+
+#define F_DUPFD 0 /* Duplicate file descriptor. */
+#define F_GETFD 1 /* Get file descriptor flags. */
+#define F_SETFD 2 /* Set file descriptor flags. */
+#define F_GETFL 3 /* Get file status flags. */
+#define F_SETFL 4 /* Set file status flags. */
+#define F_GETLK 5 /* Get record locking info. */
+#define F_SETLK 6 /* Set record locking info (non-blocking). */
+#define F_SETLKW 7 /* Set record locking info (blocking). */
+
+#define F_GETLK64 8 /* Get record locking info. */
+#define F_SETLK64 9 /* Set record locking info (non-blocking). */
+#define F_SETLKW64 10 /* Set record locking info (blocking). */
+
+#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
+
+#define F_RDLCK 1 /* Read lock. */
+#define F_WRLCK 2 /* Write lock. */
+#define F_UNLCK 3 /* Remove lock. */
+
+#define F_EXLCK 4 /* or 3 */
+#define F_SHLCK 8 /* or 4 */
+
+struct flock
+{
+ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
+ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
+ off_t l_start; /* Offset where the lock begins. */
+ off_t l_len; /* Size of the locked area; zero means until EOF. */
+ pid_t l_pid; /* Process holding the lock. */
+};
+
+struct flock64
+{
+ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
+ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
+ off64_t l_start; /* Offset where the lock begins. */
+ off64_t l_len; /* Size of the locked area; zero means until EOF. */
+ pid_t l_pid; /* Process holding the lock. */
+};
+
+#endif
extern int fcntl (int __fd, int __cmd, ...) __THROW;
-extern int open (const char *__file, int __oflag, ...) __THROW;
-extern int open64 (const char *__file, int __oflag, ...) __THROW;
-extern int creat (const char *__file, mode_t __mode) __THROW;
-extern int creat64 (const char *__file, mode_t __mode) __THROW;
extern int lockf (int __fd, int __cmd, off_t __len) __THROW;
extern int lockf64 (int __fd, int __cmd, off64_t __len) __THROW;
@@ -21,4 +557,8 @@ extern int lockf64 (int __fd, int __cmd, off64_t __len) __THROW;
#define F_TLOCK 2 /* Test and lock a region for exclusive use. */
#define F_TEST 3 /* Test a region for other processes locks. */
+#if !defined(O_ASYNC) && defined(FASYNC)
+#define O_ASYNC FASYNC
+#endif
+
#endif