alpha, ld: remove -taso option

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>
Reviewed-By: Maciej W. Rozycki <macro@orcam.me.uk>
Approved-By: Andrew Burgess <aburgess@redhat.com>
This commit is contained in:
Ivan Kokshaysky
2025-02-15 01:30:58 +00:00
committed by Maciej W. Rozycki
parent 92f102cf64
commit 0813652eef
4 changed files with 3 additions and 38 deletions

View File

@@ -26,12 +26,6 @@ set endian "auto"
set formats {binary ihex srec tekhex verilog} 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 # Runs the command 'print zero_all ()'. Uses the PRINT_ZERO_ALL_COUNT
# global to ensure the test names are unique. # global to ensure the test names are unique.
set print_zero_all_count 0 set print_zero_all_count 0

View File

@@ -1,5 +1,8 @@
-*- text -*- -*- text -*-
* Remove the linker -taso option for Alpha target, as Linux/Alpha kernel
support for 32-bit pointers has been removed.
* On s390, generate ".eh_frame" unwind information for the linker generated * On s390, generate ".eh_frame" unwind information for the linker generated
.plt section. Enabled by default. Can be disabled using linker option .plt section. Enabled by default. Can be disabled using linker option
--no-ld-generated-unwind-info. --no-ld-generated-unwind-info.

View File

@@ -28,14 +28,8 @@ fragment <<EOF
#include "elf/alpha.h" #include "elf/alpha.h"
#include "elf-bfd.h" #include "elf-bfd.h"
static bool limit_32bit;
extern bool elf64_alpha_use_secureplt; extern bool elf64_alpha_use_secureplt;
/* Set the start address as in the Tru64 ld. */
#define ALPHA_TEXT_START_32BIT 0x12000000
static void static void
alpha_after_open (void) alpha_after_open (void)
{ {
@@ -73,14 +67,6 @@ static void
alpha_after_parse (void) alpha_after_parse (void)
{ {
link_info.relax_pass = 2; 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 (); ldelf_after_parse ();
} }
@@ -97,40 +83,24 @@ alpha_before_allocation (void)
&& ! RELAXATION_DISABLED_BY_USER) && ! RELAXATION_DISABLED_BY_USER)
ENABLE_RELAXATION; ENABLE_RELAXATION;
} }
static void
alpha_finish (void)
{
if (limit_32bit)
elf_elfheader (link_info.output_bfd)->e_flags |= EF_ALPHA_32BIT;
ldelf_finish ();
}
EOF EOF
# Define some shell vars to insert bits of code into the standard elf # Define some shell vars to insert bits of code into the standard elf
# parse_args and list_options functions. # parse_args and list_options functions.
# #
PARSE_AND_LIST_LONGOPTS=' PARSE_AND_LIST_LONGOPTS='
{ "taso", no_argument, NULL, OPTION_TASO },
{ "secureplt", no_argument, NULL, OPTION_SECUREPLT }, { "secureplt", no_argument, NULL, OPTION_SECUREPLT },
{ "no-secureplt", no_argument, NULL, OPTION_NO_SECUREPLT }, { "no-secureplt", no_argument, NULL, OPTION_NO_SECUREPLT },
' '
PARSE_AND_LIST_OPTIONS=' PARSE_AND_LIST_OPTIONS='
fprintf (file, _("\ 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")); --secureplt Force PLT in text segment\n"));
fprintf (file, _("\ fprintf (file, _("\
--no-secureplt Force PLT in data segment\n")); --no-secureplt Force PLT in data segment\n"));
' '
PARSE_AND_LIST_ARGS_CASES=' PARSE_AND_LIST_ARGS_CASES='
case OPTION_TASO:
limit_32bit = 1;
break;
case OPTION_SECUREPLT: case OPTION_SECUREPLT:
elf64_alpha_use_secureplt = true; elf64_alpha_use_secureplt = true;
break; break;
@@ -144,4 +114,3 @@ PARSE_AND_LIST_ARGS_CASES='
LDEMUL_AFTER_OPEN=alpha_after_open LDEMUL_AFTER_OPEN=alpha_after_open
LDEMUL_AFTER_PARSE=alpha_after_parse LDEMUL_AFTER_PARSE=alpha_after_parse
LDEMUL_BEFORE_ALLOCATION=alpha_before_allocation LDEMUL_BEFORE_ALLOCATION=alpha_before_allocation
LDEMUL_FINISH=alpha_finish

View File

@@ -246,7 +246,6 @@ enum option_values
OPTION_LIBPATH, OPTION_LIBPATH,
OPTION_NOLIBPATH, OPTION_NOLIBPATH,
/* Used by emultempl/alphaelf.em. */ /* Used by emultempl/alphaelf.em. */
OPTION_TASO,
OPTION_SECUREPLT, OPTION_SECUREPLT,
OPTION_NO_SECUREPLT, OPTION_NO_SECUREPLT,
/* Used by emultempl/armelf.em. */ /* Used by emultempl/armelf.em. */