forked from Imagelibrary/binutils-gdb
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:
committed by
Maciej W. Rozycki
parent
92f102cf64
commit
0813652eef
@@ -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
|
||||||
|
|||||||
3
ld/NEWS
3
ld/NEWS
@@ -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.
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
@@ -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. */
|
||||||
|
|||||||
Reference in New Issue
Block a user