From ad04f5cebf7b3f5ace359ff972bd366ca9a4009a Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 22 May 2009 18:11:59 +0000 Subject: gas/ 2009-05-22 H.J. Lu * symbols.c (COPIED_SYMFLAGS): Add BSF_GNU_INDIRECT_FUNCTION. gas/testsuite/gas/ 2009-05-22 H.J. Lu * gas/elf/ifunc-1.d: New. * gas/elf/ifunc-1.s: Likewise. * gas/elf/elf.exp: Run ifunc-1. --- gas/ChangeLog | 4 ++++ gas/symbols.c | 3 ++- gas/testsuite/ChangeLog | 7 +++++++ gas/testsuite/gas/elf/elf.exp | 1 + gas/testsuite/gas/elf/ifunc-1.d | 7 +++++++ gas/testsuite/gas/elf/ifunc-1.s | 9 +++++++++ 6 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 gas/testsuite/gas/elf/ifunc-1.d create mode 100644 gas/testsuite/gas/elf/ifunc-1.s diff --git a/gas/ChangeLog b/gas/ChangeLog index bc7e2a0..ddd05fa 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2009-05-22 H.J. Lu + + * symbols.c (COPIED_SYMFLAGS): Add BSF_GNU_INDIRECT_FUNCTION. + 2009-05-22 Dwarakanath Rajagopal * config/tc-i386.c (process_drex): Delete. Remove SSE5 support. diff --git a/gas/symbols.c b/gas/symbols.c index 660b2a4..3959ee2 100644 --- a/gas/symbols.c +++ b/gas/symbols.c @@ -1948,7 +1948,8 @@ copy_symbol_attributes (symbolS *dest, symbolS *src) /* In an expression, transfer the settings of these flags. The user can override later, of course. */ -#define COPIED_SYMFLAGS (BSF_FUNCTION | BSF_OBJECT) +#define COPIED_SYMFLAGS (BSF_FUNCTION | BSF_OBJECT \ + | BSF_GNU_INDIRECT_FUNCTION) dest->bsym->flags |= src->bsym->flags & COPIED_SYMFLAGS; #ifdef OBJ_COPY_SYMBOL_ATTRIBUTES diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 0b8b3c5..59b9502 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2009-05-22 H.J. Lu + + * gas/elf/ifunc-1.d: New. + * gas/elf/ifunc-1.s: Likewise. + + * gas/elf/elf.exp: Run ifunc-1. + 2009-05-22 Dwarakanath Rajagopal * gas/i386/i386.exp: Remove SSE5 tests. diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp index abf2030..a3adb9b 100644 --- a/gas/testsuite/gas/elf/elf.exp +++ b/gas/testsuite/gas/elf/elf.exp @@ -125,6 +125,7 @@ if { ([istarget "*-*-*elf*"] || [istarget "xscale*-*-*"]} then { run_elf_list_test "type-noifunc" "" "" "-s" "| grep \"1 \\\[FONTC\\\]\"" } else { + run_dump_test ifunc-1 run_elf_list_test "type" "" "" "-s" "| grep \"1 \\\[FIONTC\\\]\"" } diff --git a/gas/testsuite/gas/elf/ifunc-1.d b/gas/testsuite/gas/elf/ifunc-1.d new file mode 100644 index 0000000..efdd59c --- /dev/null +++ b/gas/testsuite/gas/elf/ifunc-1.d @@ -0,0 +1,7 @@ +#readelf: -s +#name: .set with IFUNC + +#... +[ ]+[0-9]+:[ ]+[0-9a-f]+[ ]+[0-9]+[ ]+IFUNC[ ]+GLOBAL[ ]+DEFAULT[ ]+[1-9] __GI_foo +[ ]+[0-9]+:[ ]+[0-9a-f]+[ ]+[0-9]+[ ]+IFUNC[ ]+GLOBAL[ ]+DEFAULT[ ]+[1-9] foo +#pass diff --git a/gas/testsuite/gas/elf/ifunc-1.s b/gas/testsuite/gas/elf/ifunc-1.s new file mode 100644 index 0000000..fc3a281 --- /dev/null +++ b/gas/testsuite/gas/elf/ifunc-1.s @@ -0,0 +1,9 @@ +.globl __GI_foo + .set __GI_foo, foo + .text +.globl foo + .type foo, %function +foo: + .byte 0x0 + .size foo, .-foo + .type foo, %gnu_indirect_function -- cgit v1.1