[v2] alpha, ld: remove -taso option
Checks
Commit Message
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
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
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
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. */
@@ -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.
@@ -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
@@ -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.
@@ -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
@@ -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. */