From 8fe53b44b26c678f71cb6363c2ede330979e62c9 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 15 Apr 2005 11:38:59 +0000 Subject: [PATCH] gas/ 2005-04-15 Jan Beulich * config/obj-elf.c (obj_elf_struct): New. (elf_pseudo_table). Use it for .offset and .struct. gas/testsuite/ 2005-04-15 Jan Beulich * gas/elf/struct.[sd]: New. * gas/elf/elf.exp: Run new test. --- gas/ChangeLog | 5 +++++ gas/config/obj-elf.c | 21 +++++++++++++++++++++ gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/elf/elf.exp | 1 + gas/testsuite/gas/elf/struct.d | 10 ++++++++++ gas/testsuite/gas/elf/struct.s | 9 +++++++++ 6 files changed, 51 insertions(+) create mode 100644 gas/testsuite/gas/elf/struct.d create mode 100644 gas/testsuite/gas/elf/struct.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 5616f33e97..09ddfac14e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2005-04-15 Jan Beulich + + * config/obj-elf.c (obj_elf_struct): New. + (elf_pseudo_table). Use it for .offset and .struct. + 2005-04-14 Bob Wilson Sterling Augustine diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index 37bb27ff6b..d8a93a5259 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -65,6 +65,7 @@ static void obj_elf_subsection (int); static void obj_elf_popsection (int); static void obj_elf_tls_common (int); static void obj_elf_lcomm (int); +static void obj_elf_struct (int); static const pseudo_typeS elf_pseudo_table[] = { @@ -113,6 +114,8 @@ static const pseudo_typeS elf_pseudo_table[] = /* We need to trap the section changing calls to handle .previous. */ {"data", obj_elf_data, 0}, + {"offset", obj_elf_struct, 0}, + {"struct", obj_elf_struct, 0}, {"text", obj_elf_text, 0}, {"tls_common", obj_elf_tls_common, 0}, @@ -1036,6 +1039,24 @@ obj_elf_text (int i) #endif } +/* Change to the *ABS* section. */ + +void +obj_elf_struct (int i) +{ +#ifdef md_flush_pending_output + md_flush_pending_output (); +#endif + + previous_section = now_seg; + previous_subsection = now_subseg; + s_struct (i); + +#ifdef md_elf_section_change_hook + md_elf_section_change_hook (); +#endif +} + static void obj_elf_subsection (int ignore ATTRIBUTE_UNUSED) { diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 559f2d9fef..a41d813552 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-04-15 Jan Beulich + + * gas/elf/struct.[sd]: New. + * gas/elf/elf.exp: Run new test. + 2005-04-15 Alan Modra * gas/all/assign.s: New. diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp index 01e1ccd267..89dffe8ba5 100644 --- a/gas/testsuite/gas/elf/elf.exp +++ b/gas/testsuite/gas/elf/elf.exp @@ -61,6 +61,7 @@ if { ([istarget "*-*-*elf*"] run_dump_test "section3" run_dump_test "section4" run_list_test "section5" "" "-al" "-SW" "| grep \" \\\\.test\\\[0-9\\\]\"" + run_dump_test "struct" run_dump_test "symver" run_list_test "type" "" "" "-s" "| grep \"1 \\\[FONT\\\]\"" } diff --git a/gas/testsuite/gas/elf/struct.d b/gas/testsuite/gas/elf/struct.d new file mode 100644 index 0000000000..a68106859e --- /dev/null +++ b/gas/testsuite/gas/elf/struct.d @@ -0,0 +1,10 @@ +#nm: --extern-only +#name: struct + +# Test the .struct pseudo-op. + +0+0 D l1 +0+4 D l2 +0+1 A w1 +0+3 A w2 +0+5 A w3 diff --git a/gas/testsuite/gas/elf/struct.s b/gas/testsuite/gas/elf/struct.s new file mode 100644 index 0000000000..f84f93e76a --- /dev/null +++ b/gas/testsuite/gas/elf/struct.s @@ -0,0 +1,9 @@ + .globl w1, w2, w3, l1, l2 + .data +l1: .long 0 + .struct 1 +w1: .short 0 +w2: .short 0 +w3: .short 0 + .previous +l2: .long 0 -- 2.34.1