newlib under Linux, next version
Werner Almesberger
almesber@lrc.epfl.ch
Tue Aug 22 12:23:00 GMT 2000
DJ Delorie wrote:
> as 2.8.1 (i586-pc-msdosdjgpp) doesn't like .type being used like that.
> It mentioned something about it being used outside .def/.endef.
Odd, 2.7, 2.9.1, and 2.9.5 (all linux/ia32) don't mind.
> Could you perhaps define a global macro for it? So that the
> source ended up like this:
>
> .global SYM (_f_atan2)
> SOTYPE_FUNCTION(_f_atan2)
Okay, I did that. Patch below. Actually, even something like
#define DLL_ENTRY(x) .global SYM(x); .type SYM(x),@function; SYM(x):
would work with gas, but I suppose other assemblers might not be
very happy with the semicolons ...
NB: I just define NEED_SOTYPE_FUNCTION in configure.host. That way, I
have full control over it and there are no contamination issues. When
there is a cleaner mechanism to select shared libraries, this could
move into config.h and i386mach.h would then include config.h. FFS.
- Werner
---------------------------------- ChangeLog ----------------------------------
2000-08-22 Werner Almesberger <Werner.Almesberger@epfl.ch>
* added SOTYPE_FUNCTION to set type of global entry points in
libc/machine/i386/*.S if NEED_SOTYPE_FUNCTION is defined
* removed code replicated in i386mach.h from setjmp.S and included
i386mach.h instead
------------------------------------ patch ------------------------------------
--- orig/newlib/libc/machine/i386/i386mach.h Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/i386mach.h Wed Aug 23 03:10:16 2000
@@ -67,3 +67,9 @@
#define mm5 REG(mm5)
#define mm6 REG(mm6)
#define mm7 REG(mm7)
+
+#ifdef NEED_SOTYPE_FUNCTION
+#define SOTYPE_FUNCTION(sym) .type SYM(sym),@function
+#else
+#define SOTYPE_FUNCTION(sym)
+#endif
--- orig/newlib/libc/machine/i386/f_atan2.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_atan2.S Wed Aug 23 03:01:15 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_atan2)
+ SOTYPE_FUNCTION(_f_atan2)
SYM (_f_atan2):
pushl ebp
--- orig/newlib/libc/machine/i386/f_atan2f.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_atan2f.S Wed Aug 23 03:07:22 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_atan2f)
+ SOTYPE_FUNCTION(_f_atan2f)
SYM (_f_atan2f):
pushl ebp
--- orig/newlib/libc/machine/i386/f_frexp.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_frexp.S Wed Aug 23 03:07:25 2000
@@ -21,6 +21,7 @@
#include "i386mach.h"
.global SYM (_f_frexp)
+ SOTYPE_FUNCTION(_f_frexp)
SYM (_f_frexp):
pushl ebp
--- orig/newlib/libc/machine/i386/f_frexpf.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_frexpf.S Wed Aug 23 03:07:28 2000
@@ -21,6 +21,7 @@
#include "i386mach.h"
.global SYM (_f_frexpf)
+ SOTYPE_FUNCTION(_f_frexpf)
SYM (_f_frexpf):
pushl ebp
--- orig/newlib/libc/machine/i386/f_ldexp.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_ldexp.S Wed Aug 23 03:07:30 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_ldexp)
+ SOTYPE_FUNCTION(_f_ldexp)
SYM (_f_ldexp):
pushl ebp
--- orig/newlib/libc/machine/i386/f_ldexpf.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_ldexpf.S Wed Aug 23 03:07:33 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_ldexpf)
+ SOTYPE_FUNCTION(_f_ldexpf)
SYM (_f_ldexpf):
pushl ebp
--- orig/newlib/libc/machine/i386/f_log.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_log.S Wed Aug 23 03:07:35 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_log)
+ SOTYPE_FUNCTION(_f_log)
SYM (_f_log):
pushl ebp
--- orig/newlib/libc/machine/i386/f_log10.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_log10.S Wed Aug 23 03:07:38 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_log10)
+ SOTYPE_FUNCTION(_f_log10)
SYM (_f_log10):
pushl ebp
--- orig/newlib/libc/machine/i386/f_log10f.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_log10f.S Wed Aug 23 03:07:40 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_log10f)
+ SOTYPE_FUNCTION(_f_log10f)
SYM (_f_log10f):
pushl ebp
--- orig/newlib/libc/machine/i386/f_logf.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_logf.S Wed Aug 23 03:07:42 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_logf)
+ SOTYPE_FUNCTION(_f_logf)
SYM (_f_logf):
pushl ebp
--- orig/newlib/libc/machine/i386/f_tan.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_tan.S Wed Aug 23 03:07:45 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_tan)
+ SOTYPE_FUNCTION(_f_tan)
SYM (_f_tan):
pushl ebp
--- orig/newlib/libc/machine/i386/f_tanf.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/f_tanf.S Wed Aug 23 03:07:49 2000
@@ -20,6 +20,7 @@
#include "i386mach.h"
.global SYM (_f_tanf)
+ SOTYPE_FUNCTION(_f_tanf)
SYM (_f_tanf):
pushl ebp
--- orig/newlib/libc/machine/i386/memchr.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/memchr.S Wed Aug 23 03:07:53 2000
@@ -11,6 +11,7 @@
#include "i386mach.h"
.global SYM (memchr)
+ SOTYPE_FUNCTION(memchr)
SYM (memchr):
pushl ebp
--- orig/newlib/libc/machine/i386/memcmp.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/memcmp.S Wed Aug 23 03:07:57 2000
@@ -11,6 +11,7 @@
#include "i386mach.h"
.global SYM (memcmp)
+ SOTYPE_FUNCTION(memcmp)
SYM (memcmp):
--- orig/newlib/libc/machine/i386/memcpy.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/memcpy.S Wed Aug 23 03:08:01 2000
@@ -11,6 +11,7 @@
#include "i386mach.h"
.global SYM (memcpy)
+ SOTYPE_FUNCTION(memcpy)
SYM (memcpy):
--- orig/newlib/libc/machine/i386/memmove.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/memmove.S Wed Aug 23 03:08:05 2000
@@ -11,6 +11,7 @@
#include "i386mach.h"
.global SYM (memmove)
+ SOTYPE_FUNCTION(memmove)
SYM (memmove):
--- orig/newlib/libc/machine/i386/memset.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/memset.S Wed Aug 23 03:08:07 2000
@@ -11,6 +11,7 @@
#include "i386mach.h"
.global SYM (memset)
+ SOTYPE_FUNCTION(memset)
SYM (memset):
--- orig/newlib/libc/machine/i386/setjmp.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/setjmp.S Wed Aug 23 03:14:18 2000
@@ -3,6 +3,7 @@
* This file was modified to use the __USER_LABEL_PREFIX__ and
* __REGISTER_PREFIX__ macros defined by later versions of GNU cpp by
* Joel Sherrill (joel@OARcorp.com)
+ * Slight change: now includes i386mach.h for this (Werner Almesberger)
*
** Copyright (C) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
**
@@ -22,61 +23,12 @@
** 0 4 8 12 16 20 24 28 32
*/
-/* These are predefined by new versions of GNU cpp. */
-
-#ifndef __USER_LABEL_PREFIX__
-#define __USER_LABEL_PREFIX__ _
-#endif
-
-/***************************** TEMPORARY ******************************
- *
- * It appears that the i386-coff configuration of gcc 2.6.2 does not
- * do the __REGISTER_PREFIX__ correctly. Fix this when it does.
- **********************************************************************/
-#define __REGISTER_PREFIX__ %
-#ifndef __REGISTER_PREFIX__
-#define __REGISTER_PREFIX__
-#endif
-
-/* ANSI concatenation macros. */
-
-#define CONCAT1(a, b) CONCAT2(a, b)
-#define CONCAT2(a, b) a ## b
-
-/* Use the right prefix for global labels. */
-
-#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
-
-/* Use the right prefix for registers. */
-
-#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
-
-#define eax REG (eax)
-#define ebx REG (ebx)
-#define ecx REG (ecx)
-#define edx REG (edx)
-#define esi REG (esi)
-#define edi REG (edi)
-#define ebp REG (ebp)
-#define esp REG (esp)
-
-#define ax REG (ax)
-#define bx REG (bx)
-#define cx REG (cx)
-#define dx REG (dx)
-
-#define ah REG (ah)
-#define bh REG (bh)
-#define ch REG (ch)
-#define dh REG (dh)
-
-#define al REG (al)
-#define bl REG (bl)
-#define cl REG (cl)
-#define dl REG (dl)
+ #include "i386mach.h"
.global SYM (setjmp)
.global SYM (longjmp)
+ SOTYPE_FUNCTION(setjmp)
+ SOTYPE_FUNCTION(longjmp)
SYM (setjmp):
--- orig/newlib/libc/machine/i386/strchr.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/strchr.S Wed Aug 23 03:08:19 2000
@@ -11,6 +11,7 @@
#include "i386mach.h"
.global SYM (strchr)
+ SOTYPE_FUNCTION(strchr)
SYM (strchr):
--- orig/newlib/libc/machine/i386/strlen.S Mon Aug 21 07:02:29 2000
+++ src/newlib/libc/machine/i386/strlen.S Wed Aug 23 03:08:23 2000
@@ -11,6 +11,7 @@
#include "i386mach.h"
.global SYM (strlen)
+ SOTYPE_FUNCTION(strlen)
SYM (strlen):
--
_________________________________________________________________________
/ Werner Almesberger, ICA, EPFL, CH werner.almesberger@ica.epfl.ch /
/_IN_N_032__Tel_+41_21_693_6621__Fax_+41_21_693_6610_____________________/
More information about the Newlib
mailing list