===================================================================
@@ -813,16 +813,6 @@ see the files COPYING3 and COPYING.RUNTI
#define TARGET_DEFAULT_PACK_STRUCT 0
#endif
-/* By default, the C++ compiler will use function addresses in the
- vtable entries. Setting this nonzero tells the compiler to use
- function descriptors instead. The value of this macro says how
- many words wide the descriptor is (normally 2). It is assumed
- that the address of a function descriptor may be treated as a
- pointer to a function. */
-#ifndef TARGET_VTABLE_USES_DESCRIPTORS
-#define TARGET_VTABLE_USES_DESCRIPTORS 0
-#endif
-
/* By default, the vtable entries are void pointers, the so the alignment
is the same as pointer alignment. The value of this macro specifies
the alignment of the vtable entry in bits. It should be defined only
@@ -1381,6 +1371,16 @@ see the files COPYING3 and COPYING.RUNTI
#define STACK_CHECK_MAX_VAR_SIZE (STACK_CHECK_MAX_FRAME_SIZE / 100)
#endif
+/* By default, the C++ compiler will use function addresses in the
+ vtable entries. Setting this nonzero tells the compiler to use
+ function descriptors instead. The value of this macro says how
+ many words wide the descriptor is (normally 2). It is assumed
+ that the address of a function descriptor may be treated as a
+ pointer to a function. */
+#ifndef TARGET_VTABLE_USES_DESCRIPTORS
+#define TARGET_VTABLE_USES_DESCRIPTORS 0
+#endif
+
#ifndef SWITCHABLE_TARGET
#define SWITCHABLE_TARGET 0
#endif
===================================================================
@@ -798,6 +798,24 @@ __gcov_one_value_profiler (gcov_type *co
#endif
#ifdef L_gcov_indirect_call_profiler
+
+/* By default, the C++ compiler will use function addresses in the
+ vtable entries. Setting TARGET_VTABLE_USES_DESCRIPTORS to nonzero
+ tells the compiler to use function descriptors instead. The value
+ of this macro says how many words wide the descriptor is (normally 2).
+ but may be dependent on target flags. Since we do not have access to
+ the target flags here we just check to see if it is set and use that
+ to set VTABLE_USES_DESCRIPTORS to 0 or 1.
+
+ It is assumed that the address of a function descriptor may be treated
+ as a pointer to a function. */
+
+#ifdef TARGET_VTABLE_USES_DESCRIPTORS
+#define VTABLE_USES_DESCRIPTORS 1
+#else
+#define VTABLE_USES_DESCRIPTORS 0
+#endif
+
/* Tries to determine the most common value among its inputs. */
void
__gcov_indirect_call_profiler (gcov_type* counter, gcov_type value,
@@ -807,7 +825,7 @@ __gcov_indirect_call_profiler (gcov_type
function may have multiple descriptors and we need to dereference
the descriptors to see if they point to the same function. */
if (cur_func == callee_func
- || (TARGET_VTABLE_USES_DESCRIPTORS && callee_func
+ || (VTABLE_USES_DESCRIPTORS && callee_func
&& *(void **) cur_func == *(void **) callee_func))
__gcov_one_value_profiler_body (counter, value);
}