aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/symbols.c3
-rw-r--r--gas/testsuite/ChangeLog7
-rw-r--r--gas/testsuite/gas/elf/elf.exp1
-rw-r--r--gas/testsuite/gas/elf/ifunc-1.d7
-rw-r--r--gas/testsuite/gas/elf/ifunc-1.s9
6 files changed, 30 insertions, 1 deletions
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 <hongjiu.lu@intel.com>
+
+ * symbols.c (COPIED_SYMFLAGS): Add BSF_GNU_INDIRECT_FUNCTION.
+
2009-05-22 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
* 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 <hongjiu.lu@intel.com>
+
+ * gas/elf/ifunc-1.d: New.
+ * gas/elf/ifunc-1.s: Likewise.
+
+ * gas/elf/elf.exp: Run ifunc-1.
+
2009-05-22 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
* 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