diff --git a/gas/ChangeLog b/gas/ChangeLog index bc7e2a0c60..ddd05fa71b 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 660b2a4f14..3959ee2536 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 0b8b3c5542..59b9502c6a 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 abf2030f2a..a3adb9b788 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 0000000000..efdd59c417 --- /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 0000000000..fc3a2810fc --- /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