gold/
PR ld/15365 * layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN. ld/ PR ld/15365 * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Restrict __ehdr_start's export class to no less than STV_HIDDEN. ld/testsuite/ PR ld/15365 * ld-elf/ehdr_start.d: Expect __ehdr_start to be STB_LOCAL. * ld-mips-elf/ehdr_start-1.nd: New test. * ld-mips-elf/ehdr_start-2.nd: New test. * ld-mips-elf/ehdr_start-1.ld: New test linker script. * ld-mips-elf/ehdr_start-2.ld: New test linker script. * ld-mips-elf/ehdr_start-new.s: New test source. * ld-mips-elf/ehdr_start-o32.s: New test source. * ld-mips-elf/mips-elf.exp: Run the new tests.
This commit is contained in:
parent
a5382c42bb
commit
cde7cb0129
@ -1,3 +1,8 @@
|
||||
2013-05-03 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
PR ld/15365
|
||||
* layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN.
|
||||
|
||||
2013-05-03 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* merge.cc (Output_merge_string::do_add_input_section): Correct
|
||||
|
@ -2713,7 +2713,7 @@ Layout::finalize(const Input_objects* input_objects, Symbol_table* symtab,
|
||||
symtab->define_in_output_segment("__ehdr_start", NULL,
|
||||
Symbol_table::PREDEFINED, load_seg, 0, 0,
|
||||
elfcpp::STT_NOTYPE, elfcpp::STB_GLOBAL,
|
||||
elfcpp::STV_DEFAULT, 0,
|
||||
elfcpp::STV_HIDDEN, 0,
|
||||
Symbol::SEGMENT_START, true);
|
||||
|
||||
// Set the file offsets of all the non-data sections we've seen so
|
||||
|
@ -1,3 +1,9 @@
|
||||
2013-05-03 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR ld/15365
|
||||
* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
|
||||
Restrict __ehdr_start's export class to no less than STV_HIDDEN.
|
||||
|
||||
2013-05-03 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
|
||||
|
@ -1487,6 +1487,13 @@ gld${EMULATION_NAME}_before_allocation (void)
|
||||
{
|
||||
_bfd_elf_tls_setup (link_info.output_bfd, &link_info);
|
||||
|
||||
/* Make __ehdr_start hidden if it has been referenced, to
|
||||
prevent the symbol from being dynamic. */
|
||||
if (!bfd_elf_record_link_assignment (link_info.output_bfd, &link_info,
|
||||
"__ehdr_start", TRUE, TRUE))
|
||||
einfo ("%P%F: failed to record assignment to %s: %E\n",
|
||||
"__ehdr_start");
|
||||
|
||||
/* If we are going to make any variable assignments, we need to
|
||||
let the ELF backend know about them in case the variables are
|
||||
referred to by dynamic objects. */
|
||||
|
@ -1,3 +1,15 @@
|
||||
2013-05-03 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
PR ld/15365
|
||||
* ld-elf/ehdr_start.d: Expect __ehdr_start to be STB_LOCAL.
|
||||
* ld-mips-elf/ehdr_start-1.nd: New test.
|
||||
* ld-mips-elf/ehdr_start-2.nd: New test.
|
||||
* ld-mips-elf/ehdr_start-1.ld: New test linker script.
|
||||
* ld-mips-elf/ehdr_start-2.ld: New test linker script.
|
||||
* ld-mips-elf/ehdr_start-new.s: New test source.
|
||||
* ld-mips-elf/ehdr_start-o32.s: New test source.
|
||||
* ld-mips-elf/mips-elf.exp: Run the new tests.
|
||||
|
||||
2013-05-03 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* ld-elf/provide-hidden-s.nd: New test.
|
||||
|
@ -4,5 +4,5 @@
|
||||
#target: *-*-linux* *-*-gnu* *-*-nacl*
|
||||
|
||||
#...
|
||||
[0-9a-f]*000 [ADRT] __ehdr_start
|
||||
[0-9a-f]*000 [Adrt] __ehdr_start
|
||||
#pass
|
||||
|
9
ld/testsuite/ld-mips-elf/ehdr_start-1.ld
Normal file
9
ld/testsuite/ld-mips-elf/ehdr_start-1.ld
Normal file
@ -0,0 +1,9 @@
|
||||
ENTRY (__start)
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x12300000 + SIZEOF_HEADERS;
|
||||
.text : { *(.text) }
|
||||
. = 0x23400000;
|
||||
HIDDEN (_gp = ALIGN (16) + 0x7ff0);
|
||||
.got : { *(.got) }
|
||||
}
|
4
ld/testsuite/ld-mips-elf/ehdr_start-1.nd
Normal file
4
ld/testsuite/ld-mips-elf/ehdr_start-1.nd
Normal file
@ -0,0 +1,4 @@
|
||||
Symbol table '\.symtab' contains [0-9]+ entries:
|
||||
#...
|
||||
*[0-9]+: 0*12300000 +0 (?:NOTYPE|OBJECT) +LOCAL +DEFAULT +[0-9]+ __ehdr_start
|
||||
#pass
|
10
ld/testsuite/ld-mips-elf/ehdr_start-2.ld
Normal file
10
ld/testsuite/ld-mips-elf/ehdr_start-2.ld
Normal file
@ -0,0 +1,10 @@
|
||||
ENTRY (__start)
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x12300000 + SIZEOF_HEADERS;
|
||||
.text : { *(.text) }
|
||||
. = 0x23400000;
|
||||
__ehdr_start = .;
|
||||
HIDDEN (_gp = ALIGN (16) + 0x7ff0);
|
||||
.got : { *(.got) }
|
||||
}
|
4
ld/testsuite/ld-mips-elf/ehdr_start-2.nd
Normal file
4
ld/testsuite/ld-mips-elf/ehdr_start-2.nd
Normal file
@ -0,0 +1,4 @@
|
||||
Symbol table '\.symtab' contains [0-9]+ entries:
|
||||
#...
|
||||
*[0-9]+: 0*23400000 +0 (?:NOTYPE|OBJECT) +LOCAL +DEFAULT +[0-9]+ __ehdr_start
|
||||
#pass
|
13
ld/testsuite/ld-mips-elf/ehdr_start-new.s
Normal file
13
ld/testsuite/ld-mips-elf/ehdr_start-new.s
Normal file
@ -0,0 +1,13 @@
|
||||
.abicalls
|
||||
.text
|
||||
.weak __ehdr_start
|
||||
.globl __start
|
||||
.ent __start
|
||||
.frame $29, 0, $31
|
||||
.mask 0x00000000, 0
|
||||
__start:
|
||||
.cplocal $2
|
||||
.cpsetup $t9, $zero, __start
|
||||
lw $2, __ehdr_start
|
||||
jr $31
|
||||
.end __start
|
14
ld/testsuite/ld-mips-elf/ehdr_start-o32.s
Normal file
14
ld/testsuite/ld-mips-elf/ehdr_start-o32.s
Normal file
@ -0,0 +1,14 @@
|
||||
.abicalls
|
||||
.text
|
||||
.weak __ehdr_start
|
||||
.globl __start
|
||||
.ent __start
|
||||
.frame $29, 0, $31
|
||||
.mask 0x00000000, 0
|
||||
__start:
|
||||
.set noreorder
|
||||
.cpload $25
|
||||
.set reorder
|
||||
lw $2, __ehdr_start
|
||||
jr $31
|
||||
.end __start
|
@ -709,3 +709,28 @@ foreach { abi } $abis {
|
||||
"readelf -A export-class-call16-${abi}.gd"] \
|
||||
"export-class-call16-${abi}.so"]]
|
||||
}
|
||||
|
||||
# Magic __ehdr_start symbol tests.
|
||||
set abis [concat o32 [expr {$has_newabi ? "n32 n64" : ""}]]
|
||||
foreach { abi } $abis {
|
||||
set suff [string map {o32 o32 n32 new n64 new} $abi]
|
||||
run_ld_link_tests [list \
|
||||
[list \
|
||||
"MIPS magic __ehdr_start symbol test 1 ($abi)" \
|
||||
"$abi_ldflags($abi) -T ehdr_start-1.ld" "" \
|
||||
"$abi_asflags($abi)" \
|
||||
[list ehdr_start-${suff}.s] \
|
||||
[list "readelf -s ehdr_start-1.nd"] \
|
||||
"ehdr_start-1-${abi}"]]
|
||||
if [regexp "(?:n32|n64)" "$abi"] {
|
||||
setup_kfail "mips*-*-*" "ld/15428"
|
||||
}
|
||||
run_ld_link_tests [list \
|
||||
[list \
|
||||
"MIPS magic __ehdr_start symbol test 2 ($abi)" \
|
||||
"$abi_ldflags($abi) -T ehdr_start-2.ld" "" \
|
||||
"$abi_asflags($abi)" \
|
||||
[list ehdr_start-${suff}.s] \
|
||||
[list "readelf -s ehdr_start-2.nd"] \
|
||||
"ehdr_start-2-${abi}"]]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user