gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gas / cond.c
index d99c1e0f149608cfe5c1bd11a1a66079b0728eec..9753369e1882cf4f8a244b7720f0c3e3ca2adacd 100644 (file)
@@ -1,5 +1,5 @@
 /* cond.c - conditional assembly pseudo-ops, and .include
-   Copyright (C) 1990-2016 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
    scanned.  */
 struct obstack cond_obstack;
 
-struct file_line {
-  char *file;
+struct file_line
+{
+  const char *file;
   unsigned int line;
 };
 
 /* We push one of these structures for each .if, and pop it at the
    .endif.  */
 
-struct conditional_frame {
+struct conditional_frame
+{
   /* The source file & line number of the "if".  */
   struct file_line if_file_line;
   /* The source file & line of the "else".  */
@@ -108,9 +110,9 @@ s_ifdef (int test_defined)
       cframe.ignoring = ! (test_defined ^ is_defined);
     }
 
-  current_cframe = ((struct conditional_frame *)
-                   obstack_copy (&cond_obstack, &cframe,
-                                 sizeof (cframe)));
+  current_cframe =
+    (struct conditional_frame *) obstack_alloc (&cond_obstack, sizeof cframe);
+  memcpy (current_cframe, &cframe, sizeof cframe);
 
   if (LISTING_SKIP_COND ()
       && cframe.ignoring
@@ -166,8 +168,9 @@ s_if (int arg)
      using an undefined result.  No big deal.  */
   initialize_cframe (&cframe);
   cframe.ignoring = cframe.dead_tree || ! t;
-  current_cframe = ((struct conditional_frame *)
-                   obstack_copy (&cond_obstack, &cframe, sizeof (cframe)));
+  current_cframe =
+    (struct conditional_frame *) obstack_alloc (&cond_obstack, sizeof cframe);
+  memcpy (current_cframe, & cframe, sizeof cframe);
 
   if (LISTING_SKIP_COND ()
       && cframe.ignoring
@@ -202,9 +205,9 @@ s_ifb (int test_blank)
       cframe.ignoring = (test_blank == !is_eol);
     }
 
-  current_cframe = ((struct conditional_frame *)
-                   obstack_copy (&cond_obstack, &cframe,
-                                 sizeof (cframe)));
+  current_cframe =
+    (struct conditional_frame *) obstack_alloc (&cond_obstack, sizeof cframe);
+  memcpy (current_cframe, &cframe, sizeof cframe);
 
   if (LISTING_SKIP_COND ()
       && cframe.ignoring
@@ -283,10 +286,11 @@ s_ifc (int arg)
 
   initialize_cframe (&cframe);
   cframe.ignoring = cframe.dead_tree || ! (res ^ arg);
-  current_cframe = ((struct conditional_frame *)
-                   obstack_copy (&cond_obstack, &cframe, sizeof (cframe)));
-
-  if (LISTING_SKIP_COND ()
+  current_cframe =
+    (struct conditional_frame *) obstack_alloc (&cond_obstack, sizeof cframe);
+  memcpy (current_cframe, &cframe, sizeof cframe);
+  
+ if (LISTING_SKIP_COND ()
       && cframe.ignoring
       && (cframe.previous_cframe == NULL
          || ! cframe.previous_cframe->ignoring))
@@ -317,8 +321,8 @@ s_elseif (int arg)
     }
   else
     {
-      as_where (&current_cframe->else_file_line.file,
-               &current_cframe->else_file_line.line);
+      current_cframe->else_file_line.file
+               = as_where (&current_cframe->else_file_line.line);
 
       current_cframe->dead_tree |= !current_cframe->ignoring;
       current_cframe->ignoring = current_cframe->dead_tree;
@@ -423,8 +427,8 @@ s_else (int arg ATTRIBUTE_UNUSED)
     }
   else
     {
-      as_where (&current_cframe->else_file_line.file,
-               &current_cframe->else_file_line.line);
+      current_cframe->else_file_line.file
+               = as_where (&current_cframe->else_file_line.line);
 
       current_cframe->ignoring =
        current_cframe->dead_tree | !current_cframe->ignoring;
@@ -477,8 +481,9 @@ s_ifeqs (int arg)
 
   initialize_cframe (&cframe);
   cframe.ignoring = cframe.dead_tree || ! (res ^ arg);
-  current_cframe = ((struct conditional_frame *)
-                   obstack_copy (&cond_obstack, &cframe, sizeof (cframe)));
+  current_cframe =
+    (struct conditional_frame *) obstack_alloc (&cond_obstack, sizeof cframe);
+  memcpy (current_cframe, &cframe, sizeof cframe);
 
   if (LISTING_SKIP_COND ()
       && cframe.ignoring
@@ -527,8 +532,8 @@ static void
 initialize_cframe (struct conditional_frame *cframe)
 {
   memset (cframe, 0, sizeof (*cframe));
-  as_where (&cframe->if_file_line.file,
-           &cframe->if_file_line.line);
+  cframe->if_file_line.file
+           = as_where (&cframe->if_file_line.line);
   cframe->previous_cframe = current_cframe;
   cframe->dead_tree = current_cframe != NULL && current_cframe->ignoring;
   cframe->macro_nest = macro_nest;
@@ -548,6 +553,7 @@ cond_finish_check (int nest)
        as_bad (_("end of macro inside conditional"));
       else
        as_bad (_("end of file inside conditional"));
+
       as_bad_where (current_cframe->if_file_line.file,
                    current_cframe->if_file_line.line,
                    _("here is the start of the unterminated conditional"));
This page took 0.026454 seconds and 4 git commands to generate.