public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* Re: [PATCH] Re: -taso support in LD
@ 2000-07-27 18:29 Nick Clifton
  2000-07-27 18:54 ` H . J . Lu
  0 siblings, 1 reply; 6+ messages in thread
From: Nick Clifton @ 2000-07-27 18:29 UTC (permalink / raw)
  To: hjl; +Cc: block, ink, binutils

Hi H.J.

: > 2000-01-21  Ivan Kokshaysky  <ink@jurassic.park.msu.ru>
: > 
: >         * emulparams/elf64alpha.sh: Implement "-taso" emulation
: >         specific option to fit 64-bit executable in the lower
: >         31-bit address range. This is done by changing start
: >         address of .interp (the very first section of executable)
: >         and then setting EF_ALPHA_32BIT elf header flag.
: > 
: 
: The patch is no longer valid due to my recent change to elf32.em.

Oh!

: However, I do have a version which works. Should I go ahead to install
: it?

Yes please.

Cheers
	Nick

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Re: -taso support in LD
  2000-07-27 18:29 [PATCH] Re: -taso support in LD Nick Clifton
@ 2000-07-27 18:54 ` H . J . Lu
  0 siblings, 0 replies; 6+ messages in thread
From: H . J . Lu @ 2000-07-27 18:54 UTC (permalink / raw)
  To: Nick Clifton; +Cc: block, ink, binutils

On Thu, Jul 27, 2000 at 06:29:06PM -0700, Nick Clifton wrote:
> Hi H.J.
> 
> : > 2000-01-21  Ivan Kokshaysky  <ink@jurassic.park.msu.ru>
> : > 
> : >         * emulparams/elf64alpha.sh: Implement "-taso" emulation
> : >         specific option to fit 64-bit executable in the lower
> : >         31-bit address range. This is done by changing start
> : >         address of .interp (the very first section of executable)
> : >         and then setting EF_ALPHA_32BIT elf header flag.
> : > 
> : 
> : The patch is no longer valid due to my recent change to elf32.em.
> 
> Oh!
> 
> : However, I do have a version which works. Should I go ahead to install
> : it?
> 
> Yes please.

Done. Please double check it.


H.J.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Re: -taso support in LD
  2000-07-27 18:01 Nick Clifton
@ 2000-07-27 18:26 ` H . J . Lu
  0 siblings, 0 replies; 6+ messages in thread
From: H . J . Lu @ 2000-07-27 18:26 UTC (permalink / raw)
  To: Nick Clifton; +Cc: block, ink, binutils

On Thu, Jul 27, 2000 at 06:01:13PM -0700, Nick Clifton wrote:
> Hi Ken, Hi Ivan,
> 
>   I have now approved and checked this patch into the binutils
>   sources.  My apologise for taking so long to do this :-(
> 
> Cheers
> 	Nick
> 
> 
> 2000-01-21  Ivan Kokshaysky  <ink@jurassic.park.msu.ru>
> 
>         * emulparams/elf64alpha.sh: Implement "-taso" emulation
>         specific option to fit 64-bit executable in the lower
>         31-bit address range. This is done by changing start
>         address of .interp (the very first section of executable)
>         and then setting EF_ALPHA_32BIT elf header flag.
> 

The patch is no longer valid due to my recent change to elf32.em.
However, I do have a version which works. Should I go ahead to install
it?


H.J.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] Re: -taso support in LD
@ 2000-07-27 18:01 Nick Clifton
  2000-07-27 18:26 ` H . J . Lu
  0 siblings, 1 reply; 6+ messages in thread
From: Nick Clifton @ 2000-07-27 18:01 UTC (permalink / raw)
  To: block, ink; +Cc: binutils

Hi Ken, Hi Ivan,

  I have now approved and checked this patch into the binutils
  sources.  My apologise for taking so long to do this :-(

Cheers
	Nick


2000-01-21  Ivan Kokshaysky  <ink@jurassic.park.msu.ru>

        * emulparams/elf64alpha.sh: Implement "-taso" emulation
        specific option to fit 64-bit executable in the lower
        31-bit address range. This is done by changing start
        address of .interp (the very first section of executable)
        and then setting EF_ALPHA_32BIT elf header flag.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Re: -taso support in LD
  2000-01-21  8:39 ` [PATCH] " Ivan Kokshaysky
@ 2000-01-29  9:41   ` H . J . Lu
  0 siblings, 0 replies; 6+ messages in thread
From: H . J . Lu @ 2000-01-29  9:41 UTC (permalink / raw)
  To: Ivan Kokshaysky; +Cc: Ken Block USG, binutils, hjl

On Fri, Jan 21, 2000 at 07:35:04PM +0300, Ivan Kokshaysky wrote:
> On Wed, Jan 19, 2000 at 03:59:37PM -0500, Ken Block USG wrote:
> > Ivan Kokshaysky posted a cool patch to get GNU LD to support -taso which
> > on a 64 bit platform jams the application into the bottom 32 bits.  This
> > can help portability a lot. I've heard part of the problem porting
> > netscape to Alpha Linux is that it is not 64 bit clean. This feature has
> 
> I'm not sure about netscape, but it definitely helps Quake to run
> on Alpha/Linux ;-)
> 
> > existed on Tru64/Digital Unix for a long time. Any possibility of
> > getting it checked in to CVS? Or the linux distribution?
> >
>  
> It would be nice, so I repost the patch against current CVS here.
> 

Thanks. Sorry for the delay. It will be in the next Linux binutils.


H.J.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] Re: -taso support in LD
  2000-01-19 13:00 Ken Block USG
@ 2000-01-21  8:39 ` Ivan Kokshaysky
  2000-01-29  9:41   ` H . J . Lu
  0 siblings, 1 reply; 6+ messages in thread
From: Ivan Kokshaysky @ 2000-01-21  8:39 UTC (permalink / raw)
  To: Ken Block USG; +Cc: binutils, hjl

On Wed, Jan 19, 2000 at 03:59:37PM -0500, Ken Block USG wrote:
> Ivan Kokshaysky posted a cool patch to get GNU LD to support -taso which
> on a 64 bit platform jams the application into the bottom 32 bits.  This
> can help portability a lot. I've heard part of the problem porting
> netscape to Alpha Linux is that it is not 64 bit clean. This feature has

I'm not sure about netscape, but it definitely helps Quake to run
on Alpha/Linux ;-)

> existed on Tru64/Digital Unix for a long time. Any possibility of
> getting it checked in to CVS? Or the linux distribution?
>
 
It would be nice, so I repost the patch against current CVS here.

Ivan.

2000-01-21  Ivan Kokshaysky  <ink@jurassic.park.msu.ru>

	* emulparams/elf64alpha.sh: Implement "-taso" emulation
	specific option to fit 64-bit executable in the lower
	31-bit address range. This is done by changing start
	address of .interp (the very first section of executable)
	and then setting EF_ALPHA_32BIT elf header flag.

Index: binutils/ld/emulparams/elf64alpha.sh
===================================================================
RCS file: /cvs/binutils/binutils/ld/emulparams/elf64alpha.sh,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 elf64alpha.sh
--- elf64alpha.sh	1999/05/03 07:29:07	1.1.1.1
+++ elf64alpha.sh	2000/01/21 15:47:30
@@ -13,3 +13,87 @@
 NOP=0x47ff041f
 
 OTHER_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
+
+# This code gets inserted into the generic elf32.sc linker script
+# and allows us to define our own command line switches.
+PARSE_AND_LIST_ARGS='
+#define OPTION_TASO		300
+/* Set the start address as in the Tru64 ld */
+#define ALPHA_TEXT_START_32BIT	0x12000000
+
+static int elf64alpha_32bit = 0;
+
+static struct option longopts[] =
+{
+  {"taso", no_argument, NULL, OPTION_TASO},
+  {NULL, no_argument, NULL, 0}
+};
+
+static void
+gld_elf64alpha_list_options (file)
+     FILE * file;
+{
+  fprintf (file, _(
+"  -taso                       Load executable in the lower 31-bit addressable
+                                virtual address range.\n"));
+}
+
+struct ld_emulation_xfer_struct ld_elf64alpha_emulation;
+static void gld_elf64alpha_finish();
+
+static int
+gld_elf64alpha_parse_args (argc, argv)
+     int argc;
+     char ** argv;
+{
+  int        longind;
+  int        optc;
+  int        prevoptind = optind;
+  int        prevopterr = opterr;
+  int        wanterror;
+  static int lastoptind = -1;
+
+  if (lastoptind != optind)
+    opterr = 0;
+  
+  wanterror  = opterr;
+  lastoptind = optind;
+
+  optc   = getopt_long_only (argc, argv, "-", longopts, & longind);
+  opterr = prevopterr;
+
+  switch (optc)
+    {
+    default:
+      if (wanterror)
+	xexit (1);
+      optind =  prevoptind;
+      return 0;
+
+    case EOF:
+      if (elf64alpha_32bit && !link_info.shared && !link_info.relocateable)
+      {
+	lang_section_start(".interp",
+			exp_binop('\''+'\'', exp_intop(ALPHA_TEXT_START_32BIT),
+				exp_nameop(SIZEOF_HEADERS, NULL)));
+	ld_elf64alpha_emulation.finish = gld_elf64alpha_finish;
+      }
+      return 0;
+
+    case OPTION_TASO:
+      elf64alpha_32bit = 1;
+      break;
+    }
+  
+  return 1;
+}
+
+#include "elf/internal.h"
+#include "elf/alpha.h"
+#include "elf-bfd.h"
+
+static void
+gld_elf64alpha_finish()
+{
+  elf_elfheader (output_bfd)->e_flags |= EF_ALPHA_32BIT;
+}'

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2000-07-27 18:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-07-27 18:29 [PATCH] Re: -taso support in LD Nick Clifton
2000-07-27 18:54 ` H . J . Lu
  -- strict thread matches above, loose matches on Subject: below --
2000-07-27 18:01 Nick Clifton
2000-07-27 18:26 ` H . J . Lu
2000-01-19 13:00 Ken Block USG
2000-01-21  8:39 ` [PATCH] " Ivan Kokshaysky
2000-01-29  9:41   ` H . J . Lu

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).