From efa19bfde4d57f33974cac17dfddb18f6f460f43 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 27 Jul 2009 10:04:25 +0000 Subject: [PATCH] gas/ 2009-07-27 Jan Beulich * obj-elf.c (elf_file_symbol): Replace symbol name set up by symbol_new() with the passed in, unmodified one. gas/testsuite/ 2009-07-27 Jan Beulich * gas/elf/file.[ds]: New. * gas/elf/elf.exp: Run new test. --- gas/ChangeLog | 5 +++++ gas/config/obj-elf.c | 11 +++++++++++ gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/elf/elf.exp | 14 ++++++++++++++ gas/testsuite/gas/elf/file.d | 18 ++++++++++++++++++ gas/testsuite/gas/elf/file.s | 29 +++++++++++++++++++++++++++++ 6 files changed, 82 insertions(+) create mode 100644 gas/testsuite/gas/elf/file.d create mode 100644 gas/testsuite/gas/elf/file.s diff --git a/gas/ChangeLog b/gas/ChangeLog index ffeb31c4879..122b42724c9 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2009-07-27 Jan Beulich + + * obj-elf.c (elf_file_symbol): Replace symbol name set up by + symbol_new() with the passed in, unmodified one. + 2009-07-27 M R Swami Reddy * config/tc-cr16.c (md_apply_fix): Put the addend value alone in to diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index f85267bb774..51cd3a9ff1f 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -260,9 +260,20 @@ elf_file_symbol (const char *s, int appfile) || (symbol_rootP->bsym->flags & BSF_FILE) == 0) { symbolS *sym; + unsigned int name_length; sym = symbol_new (s, absolute_section, 0, NULL); symbol_set_frag (sym, &zero_address_frag); + + name_length = strlen (s); + if (name_length > strlen (S_GET_NAME (sym))) + { + obstack_grow (¬es, s, name_length + 1); + S_SET_NAME (sym, obstack_finish (¬es)); + } + else + strcpy ((char *) S_GET_NAME (sym), s); + symbol_get_bfdsym (sym)->flags |= BSF_FILE; if (symbol_rootP != sym) diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 2769e04c403..ebe6b7ee41b 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-07-27 Jan Beulich + + * gas/elf/file.[ds]: New. + * gas/elf/elf.exp: Run new test. + 2009-07-25 H.J. Lu * gas/i386/l1om.d: New. diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp index 454aa60491b..65245f4e8a6 100644 --- a/gas/testsuite/gas/elf/elf.exp +++ b/gas/testsuite/gas/elf/elf.exp @@ -82,6 +82,20 @@ if { ([istarget "*-*-*elf*"] && ![istarget "am3*-*-*"]} then { run_dump_test "ehopt0" } + case $target_triplet in { + { m68k-*-* m68[03]??-*-* } { + run_dump_test "file" { { as "--defsym m68k=1" } } + } + { mmix-*-* } { + run_dump_test "file" { { as "--defsym mmix=1" } } + } + { xtensa*-*-* } { + run_dump_test "file" { { as "--rename-section file.s=file.c" } } + } + default { + run_dump_test "file" + } + } run_dump_test "group0a" run_dump_test "group0b" run_dump_test "group1a" diff --git a/gas/testsuite/gas/elf/file.d b/gas/testsuite/gas/elf/file.d new file mode 100644 index 00000000000..1e981863549 --- /dev/null +++ b/gas/testsuite/gas/elf/file.d @@ -0,0 +1,18 @@ +#objdump: -t +#name: .file file names + +.*: .* + +SYMBOL TABLE: +#... +0+ l[ ]*df \*ABS\*[ ]+0+ file\.s +0+ l[ ]*df \*ABS\*[ ]+0+ slash/data +0+ l[ ]*df \*ABS\*[ ]+0+ \{braces\} +0+ l[ ]*df \*ABS\*[ ]+0+ \[brackets\] +0+ l[ ]*df \*ABS\*[ ]+0+ /dir/file\.s +0+ l[ ]*df \*ABS\*[ ]+0+ :colon +0+ l[ ]*df \*ABS\*[ ]+0+ UPPER +0+ l[ ]*df \*ABS\*[ ]+0+ lower +0+ l[ ]*df \*ABS\*[ ]+0+ hash\# +0+ l[ ]*df \*ABS\*[ ]+0+ ~tilde +#pass diff --git a/gas/testsuite/gas/elf/file.s b/gas/testsuite/gas/elf/file.s new file mode 100644 index 00000000000..7718cc7c785 --- /dev/null +++ b/gas/testsuite/gas/elf/file.s @@ -0,0 +1,29 @@ + # delta (m68k sub-target) + .file "~tilde" + + # ia64 + .file "hash#" + + # m68k + .ifdef m86k + .opt nocase + .endif + .file "lower" + .file "UPPER" + + # mmix + .file ":colon" + .ifdef mmix + .prefix prefix + .endif + .file "/dir/file.s" + + # ppc/xcoff + .file "[brackets]" + .file "{braces}" + + # thumb (arm sub-target) + .file "slash/data" + + # xtensa (through --rename-section file.s=file.c) + .file "file.s" -- 2.30.2