+2016-10-13  Yao Qi  <yao.qi@linaro.org>
+
+       * gdb.base/code_elim.exp (get_var_address): Remove.
+       * gdb.base/relocate.exp: Likewise.
+       * gdb.base/shreloc.exp: Likewise.
+       * lib/gdb.exp (get_var_address): New.
+
 2016-10-13  Yao Qi  <yao.qi@linaro.org>
 
        * gdb.base/structs.exp: Invoke gdb_skip_float_test, and do
 
      return -1
 }
 
-proc get_var_address { var } {
-    global gdb_prompt hex
-
-    # Match output like:
-    # $1 = (int *) 0x0
-    # $5 = (int (*)()) 0
-    # $6 = (int (*)()) 0x24 <function_bar>
-
-    gdb_test_multiple "print &${var}" "get address of ${var}" {
-       -re "\\\$\[0-9\]+ = \\(.*\\) (0|$hex)( <${var}>)?\[\r\n\]+${gdb_prompt} $" {
-           pass "get address of ${var}"
-           if { $expect_out(1,string) == "0" } {
-               return "0x0"
-           } else {
-               return $expect_out(1,string)
-           }
-       }
-    }
-    return ""
-}
-
 proc not_null_var_address { var } {
 
     # Same as get_var_address, expect that it reports a failure if a null
 
      return -1
 }
 
-proc get_var_address { var } {
-    global gdb_prompt hex
-
-    # Match output like:
-    # $1 = (int *) 0x0
-    # $5 = (int (*)()) 0
-    # $6 = (int (*)()) 0x24 <function_bar>
-
-    gdb_test_multiple "print &${var}" "get address of ${var}" {
-       -re "\\\$\[0-9\]+ = \\(.*\\) (0|$hex)( <${var}>)?\[\r\n\]+${gdb_prompt} $" {
-           pass "get address of ${var}"
-           if { $expect_out(1,string) == "0" } {
-               return "0x0"
-           } else {
-               return $expect_out(1,string)
-           }
-       }
-    }
-    return ""
-}
-
-
-
 gdb_exit
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
 
     return 0
 }
 
-proc get_var_address { var } {
-    global gdb_prompt hex
-
-    # Match output like:
-    # $1 = (int *) 0x0
-    # $5 = (int (*)()) 0
-    # $6 = (int (*)()) 0x24 <function_bar>
-
-    gdb_test_multiple "print &${var}" "get address of ${var}" {
-       -re "\\\$\[0-9\]+ = \\(.*\\) (0|$hex)( <${var}>)?\[\r\n\]+${gdb_prompt} $"
-       {
-           pass "get address of ${var}"
-           if { $expect_out(1,string) == "0" } {
-               return "0x0"
-           } else {
-               return $expect_out(1,string)
-           }
-       }
-    }
-    return ""
-}
-
 #
 # Check debugging symbol relocations
 #
 
     return "UTF-8"
 }
 
+# Get the address of VAR.
+
+proc get_var_address { var } {
+    global gdb_prompt hex
+
+    # Match output like:
+    # $1 = (int *) 0x0
+    # $5 = (int (*)()) 0
+    # $6 = (int (*)()) 0x24 <function_bar>
+
+    gdb_test_multiple "print &${var}" "get address of ${var}" {
+       -re "\\\$\[0-9\]+ = \\(.*\\) (0|$hex)( <${var}>)?\[\r\n\]+${gdb_prompt} $"
+       {
+           pass "get address of ${var}"
+           if { $expect_out(1,string) == "0" } {
+               return "0x0"
+           } else {
+               return $expect_out(1,string)
+           }
+       }
+    }
+    return ""
+}
+
 # Get the current value for remotetimeout and return it.
 proc get_remotetimeout { } {
     global gdb_prompt