From: Jouke Numan <jnuman@bazis.nl>
To: Robert Lipe <robertl@dgii.com>
Subject: Re: GNU ld for SCO OpenServer 5
Date: Sat, 03 Oct 1998 20:47:00 -0000 [thread overview]
Message-ID: <32FB5823.41C6@hiscom.nl> (raw)
In-Reply-To: <5db8v9$eib@gw0.dgii.com>
Robert Lipe wrote:
> In <32F7F8E9.2876@ozemail.com.au> Russell Robinson
> <russellr@ozemail.com.au> writes:
>
> >GNU binutils-2.7 contains an "ld" that doesn't support OpenServer 5.
>
> That's correct. Nobody (to my knowledge) has taken the time to train
> GNU ld how to deal with SCO's idea of implementing weak symbols in
> COFF. It's probably not horribly hard for someone that knows about
> such things. You just listed the only justification I can think of
> for doing it - g++ demangling.
>
I have to admit I did get BFD & ld working for OS5. Apply the
following patches to the binutils-2.7 distribution to get ld working
on OS5. Unfortunately they are not sufficient to be included in a
general distribution because the same COFF types are also used by
other targets. If someone solves that, he/she is free to redistribute
my edits. Unfortunately, I've no time to spend time to do it
myself. Another unsolved thing is the integration with gcc, I used gld
as a standalone linker.
Another benefit of the patches is that nm works on COFF objects which
have weak symbols, so even if you don't want ld on OS5, some of the
edits may be of interest.
Success!
Patches to get weak symbols working (Luckily there is a NT_WEAK, I just
duplicated
the coding):
*** binutils-2.7/bfd/coffcode.h.orig Wed Jul 10 17:19:29 1996
--- binutils-2.7/bfd/coffcode.h Tue Sep 10 10:17:09 1996
***************
*** 3233,3238 ****
--- 3233,3239 ----
/* PE uses storage class 0x67 for a weak external symbol.
*/
case C_NT_WEAK:
#endif
+ case C_SCO_WEAKEXT:
if ((src->u.syment.n_scnum) == 0)
{
if ((src->u.syment.n_value) == 0)
***************
*** 3276,3281 ****
--- 3277,3284 ----
if (src->u.syment.n_sclass == C_NT_WEAK)
dst->symbol.flags = BSF_WEAK;
#endif
+ if (src->u.syment.n_sclass == C_SCO_WEAKEXT)
+ dst->symbol.flags = BSF_WEAK;
break;
***************
*** 3461,3466 ****
--- 3464,3470 ----
#ifdef COFF_WITH_PE
#define OTHER_GLOBAL_CLASS C_SECTION
#endif
+ #define OTHER_GLOBAL_CLASS C_SCO_WEAKEXT
#ifdef OTHER_GLOBAL_CLASS
*** binutils-2.7/include/coff/internal.h.orig Thu Jul 4 18:21:13 1996
--- binutils-2.7/include/coff/internal.h Mon Sep 9 15:19:05 1996
***************
*** 215,220 ****
--- 215,225 ----
#define C_ALIAS 105 /* duplicate tag
*/
#define C_HIDDEN 106 /* ext symbol in dmert public lib */
+
+ /* Storage classes for SCO OS5 */
+ #define C_SHADOW 107 /* shadow symbol */
+ #define C_SCO_WEAKEXT 108 /* weak external */
+
/* New storage classes for WINDOWS_NT */
#define C_SECTION 104 /* section name */
#define C_NT_WEAK 105 /* weak external */
Edits to get ld made:
*** binutils-2.7/configure.in.orig Mon Jul 15 21:15:15 1996
--- binutils-2.7/configure.in Mon Sep 9 13:27:00 1996
***************
*** 452,458 ****
i[345]86-*-sco3.2v5*)
# The linker does not yet know about weak symbols in COFF,
# and is not configured to handle mixed ELF and COFF.
! noconfigdirs="$noconfigdirs gprof ld target-libgloss"
;;
i[345]86-*-sco*)
noconfigdirs="$noconfigdirs gprof target-libgloss"
--- 452,458 ----
i[345]86-*-sco3.2v5*)
# The linker does not yet know about weak symbols in COFF,
# and is not configured to handle mixed ELF and COFF.
! noconfigdirs="$noconfigdirs gprof target-libgloss"
;;
i[345]86-*-sco*)
noconfigdirs="$noconfigdirs gprof target-libgloss"
*** binutils-2.7/ld/scripttempl/i386coff.sc.orig Thu Jul 4
18:25:04 1996
--- binutils-2.7/ld/scripttempl/i386coff.sc Mon Sep 9 15:49:29 1996
***************
*** 13,18 ****
--- 13,19 ----
SECTIONS
{
+ ${RELOCATING+ _runtime_env = 0x02020008;}
.text ${RELOCATING+ SIZEOF_HEADERS} : {
${RELOCATING+ *(.init)}
*(.text)
***************
*** 27,33 ****
{
*(.bss)
*(COMMON)
! ${RELOCATING+ end = .};
}
${RELOCATING- ${INIT}}
${RELOCATING- ${FINI}}
--- 28,35 ----
{
*(.bss)
*(COMMON)
! ${RELOCATING+ _end = .;}
! ${RELOCATING+ end = .;}
}
${RELOCATING- ${INIT}}
${RELOCATING- ${FINI}}
--
+------------------------------------------------------+
| Signature of: Jouke Numan <jnuman@hiscom.nl> |
| HISCOM bv, department of Systems Development |
| Schipholweg 97, 2316 AX Leiden, the Netherlands |
| +31-71-5256757 (office) +31-71-5216675 (FAX) |
+------------------------------------------------------+
From owner-gas2@cygnus.com Mon Oct 5 06:49:10 1998
by runyon.cygnus.com (8.8.7-cygnus/8.8.7) id GAA22404;
Mon, 5 Oct 1998 06:41:16 -0700 (PDT)
Received: from out4.ibm.net (out4.ibm.net [165.87.194.239])
by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id GAA22399
for <gas2@cygnus.com>; Mon, 5 Oct 1998 06:41:14 -0700 (PDT)
Received: from slip129-37-91-232.tx.us.ibm.net (slip129-37-91-232.tx.us.ibm.net [129.37.91.232]) by out4.ibm.net (8.8.5/8.6.9) with SMTP id NAA16922 for <gas2@cygnus.com>; Mon, 5 Oct 1998 13:41:10 GMT
parent reply other threads:[~1998-10-03 20:47 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <5db8v9$eib@gw0.dgii.com>]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=32FB5823.41C6@hiscom.nl \
--to=jnuman@bazis.nl \
--cc=robertl@dgii.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).