[v2] alpha, ld: remove -taso option

Message ID Z4t_yqXpYf2J7b1Z@minute
State Accepted
Headers
Series [v2] alpha, ld: remove -taso option |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_gdb_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 fail Patch failed to apply

Commit Message

Ivan Kokshaysky Jan. 18, 2025, 10:17 a.m. UTC
  The -taso switch was quite useful 25 years ago for porting 32-bit
code with broken integer-pointer casting. Not anymore. The EF_ALPHA_32BIT
Linux support is going to be dropped in kernel v6.14 [1], NetBSD and OpenBSD
never had it, so there is no point in keeping the -taso option around.

Also remove alpha special case that uses -taso from gdb.base/dump.exp
in gdb testsuite.

[1] https://lore.kernel.org/all/87jzb2tdb7.fsf_-_@email.froward.int.ebiederm.org

Signed-off-by: Ivan Kokshaysky <ink@unseen.parts>
---
Changes in v2, suggested by Maciej W. Rozycki:
  - leave the translations alone;
  - remove OPTION_TASO from ld/ldlex.h;
  - add entries to ld/NEWS and binutils/NEWS.
---
 binutils/NEWS                   |  3 +++
 gdb/testsuite/gdb.base/dump.exp |  6 ------
 ld/NEWS                         |  3 +++
 ld/emultempl/alphaelf.em        | 31 -------------------------------
 ld/ldlex.h                      |  1 -
 5 files changed, 6 insertions(+), 38 deletions(-)
  

Comments

Maciej W. Rozycki Jan. 20, 2025, 5:50 p.m. UTC | #1
On Sat, 18 Jan 2025, Ivan Kokshaysky wrote:

> The -taso switch was quite useful 25 years ago for porting 32-bit
> code with broken integer-pointer casting. Not anymore. The EF_ALPHA_32BIT
> Linux support is going to be dropped in kernel v6.14 [1], NetBSD and OpenBSD
> never had it, so there is no point in keeping the -taso option around.
> 
> Also remove alpha special case that uses -taso from gdb.base/dump.exp
> in gdb testsuite.
> 
> [1] https://lore.kernel.org/all/87jzb2tdb7.fsf_-_@email.froward.int.ebiederm.org
> 
> Signed-off-by: Ivan Kokshaysky <ink@unseen.parts>
> ---
> Changes in v2, suggested by Maciej W. Rozycki:
>   - leave the translations alone;
>   - remove OPTION_TASO from ld/ldlex.h;
>   - add entries to ld/NEWS and binutils/NEWS.

 I forgot we have per-tool-directory NEWS, so thanks for updating ld/NEWS 
and I think we don't want a duplicate entry in binutils/NEWS, which is for 
the other tools.  No need to send v3 I suppose, this can be fixed up at 
patch installation time.

 Your change looks good to me and I've run it through binutils regression 
testing, so as long as Nick is fine with it and someone on the GDB side 
acks the GDB test update I can install it for you once binutils 2.44 have 
been released in ~fortnight time.

  Maciej
  
Maciej W. Rozycki Feb. 11, 2025, 5:02 p.m. UTC | #2
On Mon, 10 Feb 2025, Nick Clifton wrote:

> > The -taso switch was quite useful 25 years ago for porting 32-bit
> > code with broken integer-pointer casting. Not anymore. The EF_ALPHA_32BIT
> > Linux support is going to be dropped in kernel v6.14 [1], NetBSD and OpenBSD
> > never had it, so there is no point in keeping the -taso option around.
> 
> This part of your patch is approved.  Please apply it or ask someone to apply
> it for you.

 I'll do it once the GDB part has been approved, thanks for your review!

> > Also remove alpha special case that uses -taso from gdb.base/dump.exp
> > in gdb testsuite.
> 
> I cannot actually approve this part of the patch since it is for the GDB
> sources and
> not the binutils.  But I am sure that some kind GDB person will be happy to
> give it a
> review and approval.

 I cannot approve this part, but here's my:

Reviewed-by: Maciej W. Rozycki <macro@orcam.me.uk>

  Maciej
  
Andrew Burgess Feb. 11, 2025, 5:43 p.m. UTC | #3
Ivan Kokshaysky <ink@unseen.parts> writes:

> The -taso switch was quite useful 25 years ago for porting 32-bit
> code with broken integer-pointer casting. Not anymore. The EF_ALPHA_32BIT
> Linux support is going to be dropped in kernel v6.14 [1], NetBSD and OpenBSD
> never had it, so there is no point in keeping the -taso option around.
>
> Also remove alpha special case that uses -taso from gdb.base/dump.exp
> in gdb testsuite.

For the GDB testsuite change:

Approved-By: Andrew Burgess <aburgess@redhat.com>

Thanks,
Andrew


>
> [1] https://lore.kernel.org/all/87jzb2tdb7.fsf_-_@email.froward.int.ebiederm.org
>
> Signed-off-by: Ivan Kokshaysky <ink@unseen.parts>
> ---
> Changes in v2, suggested by Maciej W. Rozycki:
>   - leave the translations alone;
>   - remove OPTION_TASO from ld/ldlex.h;
>   - add entries to ld/NEWS and binutils/NEWS.
> ---
>  binutils/NEWS                   |  3 +++
>  gdb/testsuite/gdb.base/dump.exp |  6 ------
>  ld/NEWS                         |  3 +++
>  ld/emultempl/alphaelf.em        | 31 -------------------------------
>  ld/ldlex.h                      |  1 -
>  5 files changed, 6 insertions(+), 38 deletions(-)
>
> diff --git a/binutils/NEWS b/binutils/NEWS
> index f4687e6c2bc..9c1a54c9355 100644
> --- a/binutils/NEWS
> +++ b/binutils/NEWS
> @@ -1,5 +1,8 @@
>  -*- text -*-
>  
> +* Remove the linker -taso option for Alpha target, as Linux/Alpha kernel
> +  support for 32-bit pointers has been removed.
> +
>  * Support for Nios II targets has been removed except in the readelf utility,
>    as this architecture has been EOL'ed by Intel.
>  
> diff --git a/gdb/testsuite/gdb.base/dump.exp b/gdb/testsuite/gdb.base/dump.exp
> index 58fedb1d36b..54efe51fbaa 100644
> --- a/gdb/testsuite/gdb.base/dump.exp
> +++ b/gdb/testsuite/gdb.base/dump.exp
> @@ -26,12 +26,6 @@ set endian "auto"
>  
>  set formats {binary ihex srec tekhex  verilog}
>  
> -if {[istarget "alpha*-*-*"]} {
> -    # SREC etc cannot handle 64-bit addresses.  Force the test
> -    # program into the low 31 bits of the address space.
> -    lappend options "ldflags=-Wl,-taso"
> -}
> -
>  # Runs the command 'print zero_all ()'.  Uses the PRINT_ZERO_ALL_COUNT
>  # global to ensure the test names are unique.
>  set print_zero_all_count 0
> diff --git a/ld/NEWS b/ld/NEWS
> index aa3d3e83f35..ccdfc56ac84 100644
> --- a/ld/NEWS
> +++ b/ld/NEWS
> @@ -1,5 +1,8 @@
>  -*- text -*-
>  
> +* Remove the linker -taso option for Alpha target, as Linux/Alpha kernel
> +  support for 32-bit pointers has been removed.
> +
>  * Support for Nios II target has been removed, as this architecture has been
>    EOL'ed by Intel.
>  
> diff --git a/ld/emultempl/alphaelf.em b/ld/emultempl/alphaelf.em
> index 5ae2587a653..995d7f07a7f 100644
> --- a/ld/emultempl/alphaelf.em
> +++ b/ld/emultempl/alphaelf.em
> @@ -28,14 +28,8 @@ fragment <<EOF
>  #include "elf/alpha.h"
>  #include "elf-bfd.h"
>  
> -static bool limit_32bit;
> -
>  extern bool elf64_alpha_use_secureplt;
>  
> -
> -/* Set the start address as in the Tru64 ld.  */
> -#define ALPHA_TEXT_START_32BIT 0x12000000
> -
>  static void
>  alpha_after_open (void)
>  {
> @@ -73,14 +67,6 @@ static void
>  alpha_after_parse (void)
>  {
>    link_info.relax_pass = 2;
> -  if (limit_32bit
> -      && !bfd_link_pic (&link_info)
> -      && !bfd_link_relocatable (&link_info))
> -    lang_section_start (".interp",
> -			exp_binop ('+',
> -				   exp_intop (ALPHA_TEXT_START_32BIT),
> -				   exp_nameop (SIZEOF_HEADERS, NULL)),
> -			NULL);
>  
>    ldelf_after_parse ();
>  }
> @@ -97,40 +83,24 @@ alpha_before_allocation (void)
>        && ! RELAXATION_DISABLED_BY_USER)
>      ENABLE_RELAXATION;
>  }
> -
> -static void
> -alpha_finish (void)
> -{
> -  if (limit_32bit)
> -    elf_elfheader (link_info.output_bfd)->e_flags |= EF_ALPHA_32BIT;
> -
> -  ldelf_finish ();
> -}
>  EOF
>  
>  # Define some shell vars to insert bits of code into the standard elf
>  # parse_args and list_options functions.
>  #
>  PARSE_AND_LIST_LONGOPTS='
> -  { "taso", no_argument, NULL, OPTION_TASO },
>    { "secureplt", no_argument, NULL, OPTION_SECUREPLT },
>    { "no-secureplt", no_argument, NULL, OPTION_NO_SECUREPLT },
>  '
>  
>  PARSE_AND_LIST_OPTIONS='
>    fprintf (file, _("\
> -  --taso                      Load executable in the lower 31-bit addressable\n\
> -                                virtual address range\n"));
> -  fprintf (file, _("\
>    --secureplt                 Force PLT in text segment\n"));
>    fprintf (file, _("\
>    --no-secureplt              Force PLT in data segment\n"));
>  '
>  
>  PARSE_AND_LIST_ARGS_CASES='
> -    case OPTION_TASO:
> -      limit_32bit = 1;
> -      break;
>      case OPTION_SECUREPLT:
>        elf64_alpha_use_secureplt = true;
>        break;
> @@ -144,4 +114,3 @@ PARSE_AND_LIST_ARGS_CASES='
>  LDEMUL_AFTER_OPEN=alpha_after_open
>  LDEMUL_AFTER_PARSE=alpha_after_parse
>  LDEMUL_BEFORE_ALLOCATION=alpha_before_allocation
> -LDEMUL_FINISH=alpha_finish
> diff --git a/ld/ldlex.h b/ld/ldlex.h
> index b8b7d6b6829..999d0defc61 100644
> --- a/ld/ldlex.h
> +++ b/ld/ldlex.h
> @@ -246,7 +246,6 @@ enum option_values
>    OPTION_LIBPATH,
>    OPTION_NOLIBPATH,
>    /* Used by emultempl/alphaelf.em.  */
> -  OPTION_TASO,
>    OPTION_SECUREPLT,
>    OPTION_NO_SECUREPLT,
>    /* Used by emultempl/armelf.em.  */
  

Patch

diff --git a/binutils/NEWS b/binutils/NEWS
index f4687e6c2bc..9c1a54c9355 100644
--- a/binutils/NEWS
+++ b/binutils/NEWS
@@ -1,5 +1,8 @@ 
 -*- text -*-
 
+* Remove the linker -taso option for Alpha target, as Linux/Alpha kernel
+  support for 32-bit pointers has been removed.
+
 * Support for Nios II targets has been removed except in the readelf utility,
   as this architecture has been EOL'ed by Intel.
 
diff --git a/gdb/testsuite/gdb.base/dump.exp b/gdb/testsuite/gdb.base/dump.exp
index 58fedb1d36b..54efe51fbaa 100644
--- a/gdb/testsuite/gdb.base/dump.exp
+++ b/gdb/testsuite/gdb.base/dump.exp
@@ -26,12 +26,6 @@  set endian "auto"
 
 set formats {binary ihex srec tekhex  verilog}
 
-if {[istarget "alpha*-*-*"]} {
-    # SREC etc cannot handle 64-bit addresses.  Force the test
-    # program into the low 31 bits of the address space.
-    lappend options "ldflags=-Wl,-taso"
-}
-
 # Runs the command 'print zero_all ()'.  Uses the PRINT_ZERO_ALL_COUNT
 # global to ensure the test names are unique.
 set print_zero_all_count 0
diff --git a/ld/NEWS b/ld/NEWS
index aa3d3e83f35..ccdfc56ac84 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,5 +1,8 @@ 
 -*- text -*-
 
+* Remove the linker -taso option for Alpha target, as Linux/Alpha kernel
+  support for 32-bit pointers has been removed.
+
 * Support for Nios II target has been removed, as this architecture has been
   EOL'ed by Intel.
 
diff --git a/ld/emultempl/alphaelf.em b/ld/emultempl/alphaelf.em
index 5ae2587a653..995d7f07a7f 100644
--- a/ld/emultempl/alphaelf.em
+++ b/ld/emultempl/alphaelf.em
@@ -28,14 +28,8 @@  fragment <<EOF
 #include "elf/alpha.h"
 #include "elf-bfd.h"
 
-static bool limit_32bit;
-
 extern bool elf64_alpha_use_secureplt;
 
-
-/* Set the start address as in the Tru64 ld.  */
-#define ALPHA_TEXT_START_32BIT 0x12000000
-
 static void
 alpha_after_open (void)
 {
@@ -73,14 +67,6 @@  static void
 alpha_after_parse (void)
 {
   link_info.relax_pass = 2;
-  if (limit_32bit
-      && !bfd_link_pic (&link_info)
-      && !bfd_link_relocatable (&link_info))
-    lang_section_start (".interp",
-			exp_binop ('+',
-				   exp_intop (ALPHA_TEXT_START_32BIT),
-				   exp_nameop (SIZEOF_HEADERS, NULL)),
-			NULL);
 
   ldelf_after_parse ();
 }
@@ -97,40 +83,24 @@  alpha_before_allocation (void)
       && ! RELAXATION_DISABLED_BY_USER)
     ENABLE_RELAXATION;
 }
-
-static void
-alpha_finish (void)
-{
-  if (limit_32bit)
-    elf_elfheader (link_info.output_bfd)->e_flags |= EF_ALPHA_32BIT;
-
-  ldelf_finish ();
-}
 EOF
 
 # Define some shell vars to insert bits of code into the standard elf
 # parse_args and list_options functions.
 #
 PARSE_AND_LIST_LONGOPTS='
-  { "taso", no_argument, NULL, OPTION_TASO },
   { "secureplt", no_argument, NULL, OPTION_SECUREPLT },
   { "no-secureplt", no_argument, NULL, OPTION_NO_SECUREPLT },
 '
 
 PARSE_AND_LIST_OPTIONS='
   fprintf (file, _("\
-  --taso                      Load executable in the lower 31-bit addressable\n\
-                                virtual address range\n"));
-  fprintf (file, _("\
   --secureplt                 Force PLT in text segment\n"));
   fprintf (file, _("\
   --no-secureplt              Force PLT in data segment\n"));
 '
 
 PARSE_AND_LIST_ARGS_CASES='
-    case OPTION_TASO:
-      limit_32bit = 1;
-      break;
     case OPTION_SECUREPLT:
       elf64_alpha_use_secureplt = true;
       break;
@@ -144,4 +114,3 @@  PARSE_AND_LIST_ARGS_CASES='
 LDEMUL_AFTER_OPEN=alpha_after_open
 LDEMUL_AFTER_PARSE=alpha_after_parse
 LDEMUL_BEFORE_ALLOCATION=alpha_before_allocation
-LDEMUL_FINISH=alpha_finish
diff --git a/ld/ldlex.h b/ld/ldlex.h
index b8b7d6b6829..999d0defc61 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
@@ -246,7 +246,6 @@  enum option_values
   OPTION_LIBPATH,
   OPTION_NOLIBPATH,
   /* Used by emultempl/alphaelf.em.  */
-  OPTION_TASO,
   OPTION_SECUREPLT,
   OPTION_NO_SECUREPLT,
   /* Used by emultempl/armelf.em.  */