Commit 38e078da by Sandra Loosemore Committed by Sandra Loosemore

Disable --eh-frame-hdr with -pie or -shared on nios2-linux-gnu.

2019-12-05  Sandra Loosemore  <sandra@codesourcery.com>

	Disable --eh-frame-hdr with -pie or -shared on nios2-linux-gnu.

	The nios2 ABI doesn't have appropriate relocations to support
	--eh-frame-hdr with -pie or -shared, so we need to override the
	default specs that add that link option.  Otherwise we get linker
	warnings about invalid FDE encodings.

	gcc/
	* config/nios2/linux.h (LINK_EH_SPEC): Define.

	gcc/testsuite/
	* g++.target/nios2/hello-pie.C: New.
	* g++.target/nios2/nios2.exp: New.

From-SVN: r279023
parent a414fd42
2019-12-05 Sandra Loosemore <sandra@codesourcery.com>
* config/nios2/linux.h (LINK_EH_SPEC): Define.
2019-12-05 Jan Hubicka <hubicka@ucw.cz> 2019-12-05 Jan Hubicka <hubicka@ucw.cz>
* ipa-inline-transform.c (inline_call): Fix maintenatnce of comdat_local * ipa-inline-transform.c (inline_call): Fix maintenatnce of comdat_local
...@@ -40,6 +40,12 @@ ...@@ -40,6 +40,12 @@
-dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \
%{static:-static}}" %{static:-static}}"
/* The nios2 ABI does not have appropriate relocations to support
--eh-frame-hdr with PIE, or in shared libraries. */
#undef LINK_EH_SPEC
#define LINK_EH_SPEC \
"%{!pie: %{!shared: %{!static:--eh-frame-hdr}}} "
/* This toolchain implements the ABI for Linux Systems documented in the /* This toolchain implements the ABI for Linux Systems documented in the
Nios II Processor Reference Handbook. */ Nios II Processor Reference Handbook. */
#define TARGET_LINUX_ABI 1 #define TARGET_LINUX_ABI 1
......
2019-12-05 Sandra Loosemore <sandra@codesourcery.com>
* g++.target/nios2/hello-pie.C: New.
* g++.target/nios2/nios2.exp: New.
2019-12-05 Marek Polacek <polacek@redhat.com> 2019-12-05 Marek Polacek <polacek@redhat.com>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
......
// { dg-do run { target *-*-linux* } }
// { dg-options "-pie -fpie" }
// { dg-output "Hello, pie World" }
// This test used to give an "FDE encoding" error from the linker due to
// the ABI not having appropriate relocations for PIE.
#include <iostream>
int
main ()
{
std::cout << "Hello, pie World" << std::endl;
}
# Copyright (C) 2019 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
# GCC testsuite that uses the `dg.exp' driver.
# Exit immediately if this isn't a nios2 target.
if ![istarget nios2*-*-*] then {
return
}
# Load support procs.
load_lib g++-dg.exp
# Initialize `dg'.
dg-init
# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" ""
# All done.
dg-finish
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment