mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-14 15:50:34 +00:00
gdb
PR exp/11803: * value.c (value_static_field): Use value_of_variable. gdb/testsuite PR exp/11803: * gdb.threads/tls.exp: Use C++. (check_thread_local): Use K::another_thread_local. * gdb.threads/tls.c (class K): New. (another_thread_local): Now a member of K. (spin): Update. No longer K&R C.
This commit is contained in:
parent
7ef07ba077
commit
515ed53230
@ -1,3 +1,8 @@
|
||||
2010-09-14 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR exp/11803:
|
||||
* value.c (value_static_field): Use value_of_variable.
|
||||
|
||||
2010-09-14 Pierre Muller <muller@ics.u-strasbg.fr>
|
||||
|
||||
* m32r-rom.c: Replace winsock.h with winsock2.h header.
|
||||
|
@ -1,3 +1,12 @@
|
||||
2010-09-14 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR exp/11803:
|
||||
* gdb.threads/tls.exp: Use C++.
|
||||
(check_thread_local): Use K::another_thread_local.
|
||||
* gdb.threads/tls.c (class K): New.
|
||||
(another_thread_local): Now a member of K.
|
||||
(spin): Update. No longer K&R C.
|
||||
|
||||
2010-09-13 Sami Wagiaalla <swagiaal@redhat.com>
|
||||
|
||||
* gdb.cp/koenig.cc: created class for testing member lookup.
|
||||
|
@ -18,7 +18,13 @@
|
||||
|
||||
/* Thread-local storage. */
|
||||
__thread int a_thread_local;
|
||||
__thread int another_thread_local;
|
||||
|
||||
class K {
|
||||
public:
|
||||
static __thread int another_thread_local;
|
||||
};
|
||||
|
||||
__thread int K::another_thread_local;
|
||||
|
||||
/* psymtabs->symtabs resolving check. */
|
||||
extern __thread int file2_thread_local;
|
||||
@ -64,8 +70,7 @@ void print_error ()
|
||||
}
|
||||
|
||||
/* Routine for each thread to run, does nothing. */
|
||||
void *spin( vp )
|
||||
void * vp;
|
||||
void *spin( void *vp )
|
||||
{
|
||||
int me = (long) vp;
|
||||
int i;
|
||||
@ -74,19 +79,19 @@ void *spin( vp )
|
||||
a_global++;
|
||||
|
||||
a_thread_local = 0;
|
||||
another_thread_local = me;
|
||||
K::another_thread_local = me;
|
||||
for( i = 0; i <= me; i++ ) {
|
||||
a_thread_local += i;
|
||||
}
|
||||
|
||||
another_thread_local_val[me] = another_thread_local;
|
||||
another_thread_local_val[me] = K::another_thread_local;
|
||||
thread_local_val[ me ] = a_thread_local; /* here we know tls value */
|
||||
|
||||
if (sem_post (&tell_main) == -1)
|
||||
{
|
||||
fprintf (stderr, "th %d post on sem tell_main failed\n", me);
|
||||
print_error ();
|
||||
return;
|
||||
return NULL;
|
||||
}
|
||||
#ifdef START_DEBUG
|
||||
fprintf (stderr, "th %d post on tell main\n", me);
|
||||
@ -111,7 +116,7 @@ void *spin( vp )
|
||||
{
|
||||
fprintf (stderr, "th %d wait on sem tell_thread failed\n", me);
|
||||
print_error ();
|
||||
return;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,6 +124,7 @@ void *spin( vp )
|
||||
fprintf (stderr, "th %d Wait on tell_thread\n", me);
|
||||
#endif
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -27,7 +27,7 @@ if [istarget "*-*-linux"] then {
|
||||
set target_cflags ""
|
||||
}
|
||||
|
||||
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile2}" "${binfile}" executable [list debug "incdir=${objdir}"]] != "" } {
|
||||
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile2}" "${binfile}" executable [list c++ debug "incdir=${objdir}"]] != "" } {
|
||||
return -1
|
||||
}
|
||||
|
||||
@ -75,7 +75,7 @@ proc check_thread_local {number} {
|
||||
"= $expected_value" \
|
||||
"${number} thread local storage"
|
||||
|
||||
gdb_test "p another_thread_local" \
|
||||
gdb_test "p K::another_thread_local" \
|
||||
"= $me_variable" \
|
||||
"${number} another thread local storage"
|
||||
|
||||
@ -83,7 +83,7 @@ proc check_thread_local {number} {
|
||||
".*a_thread_local.*a thread-local variable at offset.*" \
|
||||
"${number} info address a_thread_local"
|
||||
|
||||
gdb_test "info address another_thread_local" \
|
||||
gdb_test "info address K::another_thread_local" \
|
||||
".*another_thread_local.*a thread-local variable at offset.*" \
|
||||
"${number} info address another_thread_local"
|
||||
}
|
||||
|
12
gdb/value.c
12
gdb/value.c
@ -1903,17 +1903,7 @@ value_static_field (struct type *type, int fieldno)
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* SYM should never have a SYMBOL_CLASS which will require
|
||||
read_var_value to use the FRAME parameter. */
|
||||
if (symbol_read_needs_frame (sym))
|
||||
warning (_("static field's value depends on the current "
|
||||
"frame - bad debug info?"));
|
||||
retval = read_var_value (sym, NULL);
|
||||
}
|
||||
if (retval && VALUE_LVAL (retval) == lval_memory)
|
||||
SET_FIELD_PHYSADDR (TYPE_FIELD (type, fieldno),
|
||||
value_address (retval));
|
||||
retval = value_of_variable (sym, NULL);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user