ld/
* ldlex.h (enum option_values): Move from.. * lexsup.c: ..here. * emultempl/ppc32elf.em: Include ldlex.h. (PARSE_AND_LIST_ARGS_CASES): Disable optimisations when --traditional-format. * emultempl/ppc64elf.em: Likewise. ld/testsuite/ * ld-srec/srec.exp: Remove powerpc64 flag setting.
This commit is contained in:
parent
e7c7fd1c22
commit
f05eb3b73c
@ -1,3 +1,12 @@
|
||||
2012-05-26 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ldlex.h (enum option_values): Move from..
|
||||
* lexsup.c: ..here.
|
||||
* emultempl/ppc32elf.em: Include ldlex.h.
|
||||
(PARSE_AND_LIST_ARGS_CASES): Disable optimisations when
|
||||
--traditional-format.
|
||||
* emultempl/ppc64elf.em: Likewise.
|
||||
|
||||
2012-05-25 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR ld/13909
|
||||
|
@ -1,5 +1,5 @@
|
||||
# This shell script emits a C file. -*- C -*-
|
||||
# Copyright 2003, 2005, 2007, 2008, 2009, 2010, 2011
|
||||
# Copyright 2003, 2005, 2007, 2008, 2009, 2010, 2011, 2012
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of the GNU Binutils.
|
||||
@ -27,6 +27,7 @@ fragment <<EOF
|
||||
|
||||
#include "libbfd.h"
|
||||
#include "elf32-ppc.h"
|
||||
#include "ldlex.h"
|
||||
|
||||
#define is_ppc_elf(bfd) \
|
||||
(bfd_get_flavour (bfd) == bfd_target_elf_flavour \
|
||||
@ -237,6 +238,11 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
|
||||
case OPTION_OLD_GOT:
|
||||
old_got = 1;
|
||||
break;
|
||||
|
||||
case OPTION_TRADITIONAL_FORMAT:
|
||||
notlsopt = 1;
|
||||
no_tls_get_addr_opt = 1;
|
||||
return FALSE;
|
||||
'
|
||||
|
||||
# Put these extra ppc32elf routines in ld_${EMULATION_NAME}_emulation
|
||||
|
@ -29,6 +29,7 @@ fragment <<EOF
|
||||
#include "libbfd.h"
|
||||
#include "elf-bfd.h"
|
||||
#include "elf64-ppc.h"
|
||||
#include "ldlex.h"
|
||||
|
||||
/* Fake input file for stubs. */
|
||||
static lang_input_statement_type *stub_file;
|
||||
@ -850,6 +851,16 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
|
||||
case OPTION_NON_OVERLAPPING_OPD:
|
||||
non_overlapping_opd = 1;
|
||||
break;
|
||||
|
||||
case OPTION_TRADITIONAL_FORMAT:
|
||||
no_tls_opt = 1;
|
||||
no_tls_get_addr_opt = 1;
|
||||
no_opd_opt = 1;
|
||||
no_toc_opt = 1;
|
||||
no_multi_toc = 1;
|
||||
no_toc_sort = 1;
|
||||
plt_static_chain = 1;
|
||||
return FALSE;
|
||||
'
|
||||
|
||||
# Put these extra ppc64elf routines in ld_${EMULATION_NAME}_emulation
|
||||
|
113
ld/ldlex.h
113
ld/ldlex.h
@ -24,6 +24,119 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* Codes used for the long options with no short synonyms. 150 isn't
|
||||
special; it's just an arbitrary non-ASCII char value. */
|
||||
enum option_values
|
||||
{
|
||||
OPTION_ASSERT = 150,
|
||||
OPTION_CALL_SHARED,
|
||||
OPTION_CREF,
|
||||
OPTION_DEFSYM,
|
||||
OPTION_DEMANGLE,
|
||||
OPTION_DYNAMIC_LINKER,
|
||||
OPTION_SYSROOT,
|
||||
OPTION_EB,
|
||||
OPTION_EL,
|
||||
OPTION_EMBEDDED_RELOCS,
|
||||
OPTION_EXPORT_DYNAMIC,
|
||||
OPTION_NO_EXPORT_DYNAMIC,
|
||||
OPTION_HELP,
|
||||
OPTION_IGNORE,
|
||||
OPTION_MAP,
|
||||
OPTION_NO_DEMANGLE,
|
||||
OPTION_NO_KEEP_MEMORY,
|
||||
OPTION_NO_WARN_MISMATCH,
|
||||
OPTION_NO_WARN_SEARCH_MISMATCH,
|
||||
OPTION_NOINHIBIT_EXEC,
|
||||
OPTION_NON_SHARED,
|
||||
OPTION_NO_WHOLE_ARCHIVE,
|
||||
OPTION_OFORMAT,
|
||||
OPTION_RELAX,
|
||||
OPTION_NO_RELAX,
|
||||
OPTION_RETAIN_SYMBOLS_FILE,
|
||||
OPTION_RPATH,
|
||||
OPTION_RPATH_LINK,
|
||||
OPTION_SHARED,
|
||||
OPTION_SONAME,
|
||||
OPTION_SORT_COMMON,
|
||||
OPTION_SORT_SECTION,
|
||||
OPTION_STATS,
|
||||
OPTION_SYMBOLIC,
|
||||
OPTION_SYMBOLIC_FUNCTIONS,
|
||||
OPTION_TASK_LINK,
|
||||
OPTION_TBSS,
|
||||
OPTION_TDATA,
|
||||
OPTION_TTEXT,
|
||||
OPTION_TTEXT_SEGMENT,
|
||||
OPTION_TRADITIONAL_FORMAT,
|
||||
OPTION_UR,
|
||||
OPTION_VERBOSE,
|
||||
OPTION_VERSION,
|
||||
OPTION_VERSION_SCRIPT,
|
||||
OPTION_VERSION_EXPORTS_SECTION,
|
||||
OPTION_DYNAMIC_LIST,
|
||||
OPTION_DYNAMIC_LIST_CPP_NEW,
|
||||
OPTION_DYNAMIC_LIST_CPP_TYPEINFO,
|
||||
OPTION_DYNAMIC_LIST_DATA,
|
||||
OPTION_WARN_COMMON,
|
||||
OPTION_WARN_CONSTRUCTORS,
|
||||
OPTION_WARN_FATAL,
|
||||
OPTION_NO_WARN_FATAL,
|
||||
OPTION_WARN_MULTIPLE_GP,
|
||||
OPTION_WARN_ONCE,
|
||||
OPTION_WARN_SECTION_ALIGN,
|
||||
OPTION_SPLIT_BY_RELOC,
|
||||
OPTION_SPLIT_BY_FILE ,
|
||||
OPTION_WHOLE_ARCHIVE,
|
||||
OPTION_ADD_DT_NEEDED_FOR_DYNAMIC,
|
||||
OPTION_NO_ADD_DT_NEEDED_FOR_DYNAMIC,
|
||||
OPTION_ADD_DT_NEEDED_FOR_REGULAR,
|
||||
OPTION_NO_ADD_DT_NEEDED_FOR_REGULAR,
|
||||
OPTION_WRAP,
|
||||
OPTION_FORCE_EXE_SUFFIX,
|
||||
OPTION_GC_SECTIONS,
|
||||
OPTION_NO_GC_SECTIONS,
|
||||
OPTION_PRINT_GC_SECTIONS,
|
||||
OPTION_NO_PRINT_GC_SECTIONS,
|
||||
OPTION_HASH_SIZE,
|
||||
OPTION_CHECK_SECTIONS,
|
||||
OPTION_NO_CHECK_SECTIONS,
|
||||
OPTION_NO_UNDEFINED,
|
||||
OPTION_INIT,
|
||||
OPTION_FINI,
|
||||
OPTION_SECTION_START,
|
||||
OPTION_UNIQUE,
|
||||
OPTION_TARGET_HELP,
|
||||
OPTION_ALLOW_SHLIB_UNDEFINED,
|
||||
OPTION_NO_ALLOW_SHLIB_UNDEFINED,
|
||||
OPTION_ALLOW_MULTIPLE_DEFINITION,
|
||||
OPTION_NO_UNDEFINED_VERSION,
|
||||
OPTION_DEFAULT_SYMVER,
|
||||
OPTION_DEFAULT_IMPORTED_SYMVER,
|
||||
OPTION_DISCARD_NONE,
|
||||
OPTION_SPARE_DYNAMIC_TAGS,
|
||||
OPTION_NO_DEFINE_COMMON,
|
||||
OPTION_NOSTDLIB,
|
||||
OPTION_NO_OMAGIC,
|
||||
OPTION_STRIP_DISCARDED,
|
||||
OPTION_NO_STRIP_DISCARDED,
|
||||
OPTION_ACCEPT_UNKNOWN_INPUT_ARCH,
|
||||
OPTION_NO_ACCEPT_UNKNOWN_INPUT_ARCH,
|
||||
OPTION_PIE,
|
||||
OPTION_UNRESOLVED_SYMBOLS,
|
||||
OPTION_WARN_UNRESOLVED_SYMBOLS,
|
||||
OPTION_ERROR_UNRESOLVED_SYMBOLS,
|
||||
OPTION_WARN_SHARED_TEXTREL,
|
||||
OPTION_WARN_ALTERNATE_EM,
|
||||
OPTION_REDUCE_MEMORY_OVERHEADS,
|
||||
#ifdef ENABLE_PLUGINS
|
||||
OPTION_PLUGIN,
|
||||
OPTION_PLUGIN_OPT,
|
||||
#endif /* ENABLE_PLUGINS */
|
||||
OPTION_DEFAULT_SCRIPT,
|
||||
OPTION_PRINT_OUTPUT_FORMAT,
|
||||
};
|
||||
|
||||
/* The initial parser states. */
|
||||
typedef enum input_enum {
|
||||
input_selected, /* We've set the initial state. */
|
||||
|
113
ld/lexsup.c
113
ld/lexsup.c
@ -62,119 +62,6 @@ static void set_section_start (char *, char *);
|
||||
static void set_segment_start (const char *, char *);
|
||||
static void help (void);
|
||||
|
||||
/* Codes used for the long options with no short synonyms. 150 isn't
|
||||
special; it's just an arbitrary non-ASCII char value. */
|
||||
enum option_values
|
||||
{
|
||||
OPTION_ASSERT = 150,
|
||||
OPTION_CALL_SHARED,
|
||||
OPTION_CREF,
|
||||
OPTION_DEFSYM,
|
||||
OPTION_DEMANGLE,
|
||||
OPTION_DYNAMIC_LINKER,
|
||||
OPTION_SYSROOT,
|
||||
OPTION_EB,
|
||||
OPTION_EL,
|
||||
OPTION_EMBEDDED_RELOCS,
|
||||
OPTION_EXPORT_DYNAMIC,
|
||||
OPTION_NO_EXPORT_DYNAMIC,
|
||||
OPTION_HELP,
|
||||
OPTION_IGNORE,
|
||||
OPTION_MAP,
|
||||
OPTION_NO_DEMANGLE,
|
||||
OPTION_NO_KEEP_MEMORY,
|
||||
OPTION_NO_WARN_MISMATCH,
|
||||
OPTION_NO_WARN_SEARCH_MISMATCH,
|
||||
OPTION_NOINHIBIT_EXEC,
|
||||
OPTION_NON_SHARED,
|
||||
OPTION_NO_WHOLE_ARCHIVE,
|
||||
OPTION_OFORMAT,
|
||||
OPTION_RELAX,
|
||||
OPTION_NO_RELAX,
|
||||
OPTION_RETAIN_SYMBOLS_FILE,
|
||||
OPTION_RPATH,
|
||||
OPTION_RPATH_LINK,
|
||||
OPTION_SHARED,
|
||||
OPTION_SONAME,
|
||||
OPTION_SORT_COMMON,
|
||||
OPTION_SORT_SECTION,
|
||||
OPTION_STATS,
|
||||
OPTION_SYMBOLIC,
|
||||
OPTION_SYMBOLIC_FUNCTIONS,
|
||||
OPTION_TASK_LINK,
|
||||
OPTION_TBSS,
|
||||
OPTION_TDATA,
|
||||
OPTION_TTEXT,
|
||||
OPTION_TTEXT_SEGMENT,
|
||||
OPTION_TRADITIONAL_FORMAT,
|
||||
OPTION_UR,
|
||||
OPTION_VERBOSE,
|
||||
OPTION_VERSION,
|
||||
OPTION_VERSION_SCRIPT,
|
||||
OPTION_VERSION_EXPORTS_SECTION,
|
||||
OPTION_DYNAMIC_LIST,
|
||||
OPTION_DYNAMIC_LIST_CPP_NEW,
|
||||
OPTION_DYNAMIC_LIST_CPP_TYPEINFO,
|
||||
OPTION_DYNAMIC_LIST_DATA,
|
||||
OPTION_WARN_COMMON,
|
||||
OPTION_WARN_CONSTRUCTORS,
|
||||
OPTION_WARN_FATAL,
|
||||
OPTION_NO_WARN_FATAL,
|
||||
OPTION_WARN_MULTIPLE_GP,
|
||||
OPTION_WARN_ONCE,
|
||||
OPTION_WARN_SECTION_ALIGN,
|
||||
OPTION_SPLIT_BY_RELOC,
|
||||
OPTION_SPLIT_BY_FILE ,
|
||||
OPTION_WHOLE_ARCHIVE,
|
||||
OPTION_ADD_DT_NEEDED_FOR_DYNAMIC,
|
||||
OPTION_NO_ADD_DT_NEEDED_FOR_DYNAMIC,
|
||||
OPTION_ADD_DT_NEEDED_FOR_REGULAR,
|
||||
OPTION_NO_ADD_DT_NEEDED_FOR_REGULAR,
|
||||
OPTION_WRAP,
|
||||
OPTION_FORCE_EXE_SUFFIX,
|
||||
OPTION_GC_SECTIONS,
|
||||
OPTION_NO_GC_SECTIONS,
|
||||
OPTION_PRINT_GC_SECTIONS,
|
||||
OPTION_NO_PRINT_GC_SECTIONS,
|
||||
OPTION_HASH_SIZE,
|
||||
OPTION_CHECK_SECTIONS,
|
||||
OPTION_NO_CHECK_SECTIONS,
|
||||
OPTION_NO_UNDEFINED,
|
||||
OPTION_INIT,
|
||||
OPTION_FINI,
|
||||
OPTION_SECTION_START,
|
||||
OPTION_UNIQUE,
|
||||
OPTION_TARGET_HELP,
|
||||
OPTION_ALLOW_SHLIB_UNDEFINED,
|
||||
OPTION_NO_ALLOW_SHLIB_UNDEFINED,
|
||||
OPTION_ALLOW_MULTIPLE_DEFINITION,
|
||||
OPTION_NO_UNDEFINED_VERSION,
|
||||
OPTION_DEFAULT_SYMVER,
|
||||
OPTION_DEFAULT_IMPORTED_SYMVER,
|
||||
OPTION_DISCARD_NONE,
|
||||
OPTION_SPARE_DYNAMIC_TAGS,
|
||||
OPTION_NO_DEFINE_COMMON,
|
||||
OPTION_NOSTDLIB,
|
||||
OPTION_NO_OMAGIC,
|
||||
OPTION_STRIP_DISCARDED,
|
||||
OPTION_NO_STRIP_DISCARDED,
|
||||
OPTION_ACCEPT_UNKNOWN_INPUT_ARCH,
|
||||
OPTION_NO_ACCEPT_UNKNOWN_INPUT_ARCH,
|
||||
OPTION_PIE,
|
||||
OPTION_UNRESOLVED_SYMBOLS,
|
||||
OPTION_WARN_UNRESOLVED_SYMBOLS,
|
||||
OPTION_ERROR_UNRESOLVED_SYMBOLS,
|
||||
OPTION_WARN_SHARED_TEXTREL,
|
||||
OPTION_WARN_ALTERNATE_EM,
|
||||
OPTION_REDUCE_MEMORY_OVERHEADS,
|
||||
#ifdef ENABLE_PLUGINS
|
||||
OPTION_PLUGIN,
|
||||
OPTION_PLUGIN_OPT,
|
||||
#endif /* ENABLE_PLUGINS */
|
||||
OPTION_DEFAULT_SCRIPT,
|
||||
OPTION_PRINT_OUTPUT_FORMAT,
|
||||
};
|
||||
|
||||
/* The long options. This structure is used for both the option
|
||||
parsing and the help text. */
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2012-05-26 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ld-srec/srec.exp: Remove powerpc64 flag setting.
|
||||
|
||||
2012-05-22 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* ld-elf/eh1.d: Don't skip x86_64-*-linux-gnux32.
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Test linking directly to S-records.
|
||||
# By Ian Lance Taylor, Cygnus Support.
|
||||
# Copyright 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2009, 2011
|
||||
# Copyright 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2009, 2011, 2012
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of the GNU Binutils.
|
||||
@ -266,10 +266,6 @@ proc run_srec_test { test objs } {
|
||||
set flags "$flags -no-relax"
|
||||
}
|
||||
|
||||
if [istarget powerpc64*-*-*] {
|
||||
set flags "$flags --no-toc-optimize"
|
||||
}
|
||||
|
||||
# Epiphany needs some help too
|
||||
if [istarget epiphany*-*-*] {
|
||||
set flags "$flags --defsym _start=00000060"
|
||||
|
Loading…
x
Reference in New Issue
Block a user